Ubuntu Truffle V3.2.1环境配置及合约部署基础

最近在安装Truffle环境方面遇到很多问题,找了很多技术博客,里面的方法都是一样的,不能解决问题,后来发现了一篇非常好的博客完美的解决了我遇到的所有问题,在这里贴出原帖的地址致敬
Ubuntu Truffle V3.2.1环境配置及合约部署基础
如有侵权请联系删除

Truffle简介

Truffle是针对基于以太坊的Solidity语言的一套开发框架,本身基于JavaScript。是一种本地的用来编译、部署智能合约的工具。

安装Truffle

依赖环境安装

Node.js:

Node是必不可少的,安装版本:6.14.1,因为不知道最新的7.X是否会出别的问题,因此依旧选用了6.X的版本。

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -  
sudo apt-get install -y nodejs  

安装成功验证:在终端输入以下命令查看安装的版本信息

node -v

我系统的返回结果是:v6.14.1

testrpc:

testrpc是创建测试网络的方法,是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷。testrpc可以在启动时帮我们创建10个存有资金的测试账户。(testrpc 现在已经并入到Truffle 开发框架中,现在名字是Ganache CLI。)
Geth又名Go Ethereum,是典型的开发以太坊时使用的客户端,由Go语言开发。 Geth提供了一个交互式命令控制台,在命令控制台中包含了以太坊的各种功能(API)。Geth是真正的以太坊环境。
在进行合约开发时,可以在testrpc中测试通过后,再部署到Geth节点中去

npm install -g ethereumjs-testrpc  

安装成功验证:在终端输入以下命令

testrpc

返回结果:
testrpc返回结果

Truffle:

npm install -g truffle

安装成功验证:在终端输入以下命令

truffle -version

返回结果:
truffle返回结果
备注:其中-g参数指定将包安装到全局环境中。

新建第一个项目

与2.X版本的 truffle init 不同,这里需要使用到webpack,若继续沿用 truffle init,并不是不可行,就是会少一个叫“app”的文件夹,也就是少了前端界面的展示。(这个也是我之前看到的教程里面没有提到的,所以按照之前教程安装运行实例的时候都没有达到教程里面的效果)

mkdir myproject  
cd myproject  
truffle init webpack  

truffle init webpack
myproject文件夹里面的内容如下
myproject
其中各文件夹的解释如下:
app:前端界面的展示,也就是localhost:8080时所展示的界面。
contracts:合约文件储存地,.sol文件。
migrations:执行truffle migrate时的一些配置。
node-modules:运行时的核心代码。
test:用于测试合约,执行命令truffle test。
build:当执行truffle migrate时,会自动将contracts里面的.sol合约文件编译成.json文件。该文件夹刚开始时是没有的,在执行truffle migrate之后才有。

编译合约

contracts 就是合约存储的目录,默认情况下已经帮你创建好了几个文件。
contracts

truffle compile

compile
该指令可以编译特定sol文件,只需在后面加上文件名即可

项目部署

testrpc

会默认创建10个账号以供测试:
testrpc

此时重新开一个终端窗口进入myproject文件夹执行下面的指令

1.X版本:truffle deploy  
2.X及以上版本:truffle migrate 

migrate

启动服务

2.X版本:truffle serve  
3.X版本:npm run dev 

(这个指令的变化在别的博客里面也没有看到,用的还是2.X版本的指令)
这里写图片描述
启动服务后,可以在浏览器访问项目,http://localhost:8080/ 或者 http://localhost:8080/index.html 可行的。
locolhost
可以看到正常执行下来在网页界面会报错,原因是因为testrpc默认监听的是8545端口,而Chrome浏览器js代码请求的是testrpc的9545端口
f12
解决办法就是将两个端口改成一致的就可以:
一是修改合约调用代码。myproject\app\javascripts\app.js,
把window.web3 = new Web3(new Web3.providers.HttpProvider(“http://127.0.0.1:9545“));的端口号9545改为8545,该行代码在app.js文件的最下面。
8545
二是testrpc监听端口改为9545
启动testrpc时用命令行 testrpc –p 9545。
truffle部署合约的端口也改为9545,在truffle-config.js把port参数改为9545。
执行truffle compile、truffle migrate、npm run dev重新编译、部署、启动。
个人认为第一种方式更方便一些。

常见问题

  • truffle init webpack 报错,没有webpack:
npm install --save-dev webpack  
  • 浏览器提示 “Can‘t Get /” 什么的。检查下项目下是否有 app 这个文件夹。
  • 有的步骤可能会让在root用户下安装,若没有创建root用户则创建一个,如已经创建就直接转到root下面在安装就好(具体创建root用户的方法在这里就不赘述了,请自行百度)
  • 上面提到的“There was an error fetching your accounts.”问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值