案例2. Truffle开发以太坊DAPP

step 1.创建一个项目

1.项目初始化

$ mkdir dapp
$ cd dapp
$ truffle unbox webpack

执行如图:

执行以上命令之后,文件夹内会自动生成开发所需要的目录结构:

contracts/:Solidity职能合约目录

migrations/:部署用到的脚本

test/:用于测试应用程序和合约的测试文件目录

truffle.js:配置文件

app:前端代码目录

step 2.选择以太坊客户端

安装Ethereum客户端来支持JSON RPC API的调用。

thereum客户端的选择有很多,本地开发可以使用:Ganache、Ethereumjs-testrpc、以及truffle自带的Truffle Develop,只需要用其中一种就可以。

主网部署时推荐使用:Geth.

step 3.编译和部署合约

1.更改truffle.js 文件配置

这里要注意的是:

Ganache默认运行在7545端口;

Ethereumjs-testrpc 默认运行在8545端口;

Truffle Develop 默认运行在9545端口;

根据你选择的不同客户端,修改端口,其他代码不要动。

2.编译合约

truffle框架里提供demo代码,我们暂时不用写新的合约,可以直接用demo进行编译和部署。

输入命令:

 $ truffle compile

编译成功的话,项目文件夹里会多一个build文件夹。

3.部署合约
部署合约之前,请开启之前下载的以太坊客户端:

Ganache:在终端执行 ganache-cli 命令,以出现测试账号为成功,不要关闭,打开新的终端窗口进行下一步;

Ethereumjs-testrpc:在终端执行 testrpc 命令,以出现测试账号为成功,不要关闭,打开新的终端窗口进行下一步;

Truffle Develop:在终端执行 truffle develop 命令,以出现测试账号为成功,可直接在此窗口进行下一步。

开启客户端之后再输入命令:

 $ truffle migrate

执行成功,会出现以下界面:

step 4.测试网页与合约交互

上面的合约部署成功后,我们就可以在服务器中查看效果了。执行:

  $ npm run dev

浏览器打开http://localhost:8080/ 可以看到一个demo 页面。

这个是truffle unbox webpack后默认产生的MetaCoin合约,并生成了一个简单的界面。在这里你可以向其他地址发送MetaCoin。

发送MetaCoin会调用metamask ,所以先将metamask切换到localhost网络环境

默认端口环境只有 localhost:8545

如果你用的以太坊客户端是Ganache 或 Truffle Develop的话,就需要Custom RPC 添加 http://localhost:7545http://localhost:9545 根据你用的客户端来设置。