作为一名iOS工程师,除了对App开发感兴趣,最近比较火的DApp开发也吸引了我。
DApp(Decentralized Application),也即 去中心化应用,一个DApp是按如下的框架运转的:
从开发DApp的角度上出发,我们需要做的流程是:
- 选定DApp所在的区块链,比如:EOS、BSC、ETH等
- 开发智能合约
- 开发DApp的Web界面
- DApp界面和智能合约交互
我们可以发现,上面这些步骤无论开发哪个DApp都是必须的,所以有没有一个工具可以把我们开发DApp的基础框架准备好呢?
有的,就是本篇文章要介绍的 Truffle。
一、Truffle 命令
安装 Truffle 的教程网上有很多,我就不赘述了,安装完 Truffle 后我们可以在终端输入 truffle :
我们可以看到 truffle 提供的很多指令:
1 | Commands: |
二、Truffle 示例Demo和文件结构
我们新建一个空的文件夹:TruffleDevDemo
,使用 unbox 下载 Truffle 官方提供的一个 区块链转账 Demo,执行:
truffle unbox webpack
如果你在执行的时候遇到如下或者其它乱七八糟的错误,我们可以去Truffle官网直接把 Demo 下载下来(本次重点是学习Truffle框架,不是解决Truffle环境问题):
找到 Webpack 项目,然后我们点击打开查看其 github项目网站:Webpack,把代码包里的代码拷贝到我们新建的空目录 TruffleDevDemo
即可。
接着我们可以看到项目目录中有如下的文件:
我们使用 sublime 打开它,执行:
subl .
打开后可以发现如下的目录结构:
其中最重要的几个文件和含义:
- ① web界面 index.html
- ② 智能合约 .sol
- ③ 前后端如何交互 .js脚本
三、执行Demo
(一)创建开发者测试链
执行指令:
truffle develop
如果执行指令报如下的错误:
需要在配置环境,在终端执行如下命令:
1 | export NODE_OPTIONS=--openssl-legacy-provider |
接着重新执行指令:
truffle develop
终端上输出了如下内容:
这实际上是 Truffle 帮我们创建了一条测试链,并提供了10个测试帐号(我们开发的时候肯定不能直接基于以太坊链花真金白银去做这些事情)。
(二)编译 sol 智能合约
在 truffle develop 环境下执行指令:
compile
(三)将编译的 sol 合约部署链上
在 truffle develop 环境下执行指令:
migrate
接下来,我们怎么和链上的合约进行交互呢?
我们启动一个 Web 前端进行交互。
四、启动前端界面
我们新建一个终端,切到 TruffleDevDemo/app
目录下,执行指令:
npm run dev
报错:
Error: Cannot find module 'copy-webpack-plugin'
解决答案,执行:
npm install copy-webpack-plugin -g
(发现报错是找不到哪个 module 就npm install 哪个 module 即可)
安装完成后我们继续执行指令:
npm run dev
接着发现报错:
You need to install 'webpack-dev-server' for running 'webpack serve'.
解决方法是执行指令:
npm install webpack-cli -g
解决完配置问题后,执行指令:
npm run dev
发现执行成功:
我们打开网页:http://localhost:8080/ 发现已经执行成功了: