以太坊与truffle开发平台环境搭建

作者 徐云凯 日期 2020-07-19
以太坊与truffle开发平台环境搭建

以太坊与truffle开发平台环境搭建

以太坊是什么

以太坊(Ethereum),一个集成的区块链环境,支持通过solidity语言编写智能合约并编译部署到区块链上,理论上可以实现所有高级语言能够实现的功能。

以太坊基于一个区块链上的虚拟机运作(EVM)。这为其提供了足够高的灵活性,但是这个虚拟机的性能损耗较高。此外,由于这个虚拟机的许多机制并不完善,使得solidity语言也存在着许多缺陷(如局部变量不能超过16个,public型函数不能返回结构体等)。

总的来说,以太坊已经是目前最好用的区块链平台之一,适合于实现一些对区块链的扩展功能。

truffle是什么

truffle是一个以太坊的开发框架,里面集成了以太坊本体,solidity编译器与以太坊控制台等等常用功能。同时提供了一键初始化以太坊应用的功能。类似于anaconda之于python。

truffle官方文档

solidity中文文档

solidity英文原版文档

本文后续内容均基于truffle框架


以太坊环境搭建

1. 安装nodejs

nodejs官网下载对应系统的安装包。然后傻瓜式安装。

ps: 以太坊官方推荐的node版本是 8.10.0LTS。但是经过实际测试,更高的版本并不会导致显著问题。本文后续均基于Node 12.14.0

安装完成后在命令行使用以下命令验证安装

1
$ node -v

2. 安装truffle

安装完成nodejs之后,使用以下命令安装truffle

1
$ npm install –g truffle

注意truffle的版本,这会影响到solidity版本,不同版本的solidity语法与库函数上有较大差别。如果需要指定版本(以4.1.8为例,这个版本也是公认的最稳定,bug最少的版本),使用npm install –g truffle@4.1.8即可。

这一过程国内可能有网络问题,可以使用 科学上网 或者 npm换源 解决,关于npm换源请自行百度

安装完成后使用

1
$ truffle version

验证安装,这里会输出truffle与其附带的solidity编译器的版本。

3. 安装节点仿真器ganache

这个工具是一个专用于开发过程的区块链客户端,可以一键新建区块链账户,同时为区块链的运行过程提供了详细的log显示。

1
$ npm install –g ganache-cli

安装完成使用以下命令验证安装

1
$ ganache-cli

这一命令会启动一个区块链网络,默认是本地8545端口,如果没有报错,并显示了10个区块链账户的地址与密钥等信息,最后一行显示Listening on 127.0.0.1:8545表明安装正确,使用 Ctrl + C 退出。

ganache-cli项目与相关文档

4. 安装web3.js (可选)

如果你需要使用JavaScript开发区块链应用的话,才需要进行此项目安装。

1
$ npm install –g web3@0.20.2

!!! 如果此前安装的truffle是4.1.8版本,此处指定web3版本非常重要,新版本的web3与truffle 4.1.8存在兼容性问题

5. 安装web3.py (可选)

如果你需要使用python开发区块链应用的话,才需要进行此项目安装。

1
$ pip install web3

web3.py官方文档


建立一个简单的helloworld区块链项目

使用truffle init命令下载新项目模板

自2019年底,该途径疑似被墙,如果显示下载失败,可以使用git clone https://github.com/truffle-box/bare-box直接clone该模板项目,后续操作不变

该模板已经包含一个DApp应用,使用

1
$ cd bare-box

命令进入该目录后

1
$ truffle complie

编译智能合约,编译好的合约位于 ./build/contracts 目录下

!!! 后续操作将与区块链进行交互,现在使用ganache-cli命令启动客户端,这一过程可以加上很多参数调整区块链,详情关注ganache-cli的github页面

接下来部署智能合约,该过程实质上是运行了truffle complie然后执行了./migrate目录中的.js脚本

1
$ truffle migrate

现在应当可以在ganache-cli中看到输出的区块信息。合约部署完成。随后启动DApp应用

1
$ npm run dev

接下来可以在localhost:8080访问js应用