搭建以太坊私链, 部署智能合约常用的三个工具:Truffle,Ganache 和 remix-ide。
Truffle 是最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。
Truffle的源代码地址
https://github.com/trufflesuite/truffle
(1)安装 Truffle 4.0
依赖环境:
安装很简单:
npm install -g truffle
#查看安装的版本:
truffle version
(2)初始化一个 Truffle 项目
truffle init #可以初始化一个默认的以太坊代币合约项目
编译合约
truffle compile #仅默认编译自上次编译后被修改过的文件
truffle compile --all #编译全部文件
Truffle需要定义的合约名称和文件名准确匹配,这种匹配是区分大小写的,也就是说大小写也要一致。推荐大写每一个开头字母
(3)部署
默认network [development]
truffle migrate
truffle migrate --reset #重新执行
指定network
truffle migrate --network poa
(4)启动控制台 (需要在工程目录下执行。)
#使用默认网络来调起一个控制台
truffle console
#指定network
truffle console --network poa
#启动带本地私有开发链的控制台
truffle develop
#监听地址为: http://127.0.0.1:9545
测试部署成功的智能合约
#输入以下命令打开truffle控制台,测试刚才我们部署的Hello_mshk_top合约:
truffle(development)> var contract;
undefined
truffle(development)> Hello_mshk_top.deployed().then(function(instance){
contract= instance;}); //将Hello_mshk_top合约主体,传递给contract变量
undefined
truffle(development)> contract.say()
'Hello mshk.top'
truffle(development)> contract.print("https://mshk.top")
'https://mshk.top'
(5)使用zeppelin-solidity库
npm install zeppelin-solidity
#生成package.json文件
npm init
#根据package.json自动下载库
npm install
(6)下载模板
truffle unbox <box-name>
开发时的太坊客户端Ganache
,ganache-cli
将智能合约部署到 TestRPC(内存中的区块链) 中测试 (TestRPC已更名为ganache)
它是一个完整的在内存中的区块链仅仅存在于你开发的设备上。
相对于 Geth,TestRPC 它在执行交易时是实时返回,而不等待默认的出块时间,这样你可以快速验证你新写的代码,当出现错误时,也能即时反馈给你。
它同时还是一个支持自动化测试的功能强大的客户端
(1)Ganache (带ui)
下载
https://truffleframework.org/ganache/
监听地址为: http://127.0.0.1:7545
(1)ganache-cli
#安装
npm install -g ganache-cli
#运行
ganache-cli --gasLimit 0x800000000
#监听地址为 127.0.0.1:8545
(2)TestRPC (TestRPC已更名为ganache)
#安装
npm install -g ethereumjs-testrpc
#启动 TestRPC
testrpc --gasLimit 0x800000000
监听地址为 localhost:8545
安装 remix-ide
windows
#先安装node.js
https://nodejs.org/en/
#再
npm install remix-ide -g --allow-root
#运行 cd到开发合约目录下
remix-ide
linux
npm install remix-ide -g --allow-root
remix-ide
#如果外网访问不了
vim /root/remix-ide/bin/remix-ide
#修改
server.listen(8080, ‘127.0.0.1’, function () {
})
#为
server.listen(8080, ‘0.0.0.0’, function () {
})