前言
部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果。
虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。
如果团队管理的区块节点多、合约多,那得哭晕在厕所。
Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。
安装
安装truffle
sudo cnpm install -g truffle
查看版本
truffle version
搭建项目
创建项目目录
mkdir dapp cd dapp/
初始化空项目
truffle init
你也可以不创建空项目 而是创建一个带有模板的项目 如下
初始化模板项目
truffle unbox webpack
官方模板列表:https://www.trufflesuite.com/boxes
配置区块节点
truffle-config.js文件中networks代码段 用来配置区块链节点
示例中有这么一段
development: { host: "127.0.0.1", // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) }
你可以根据你的实际情况修改,或者如我一样直接注释掉这段,我直接加了下面这段
line: { host: "47.97.26.107", network_id: 100, port: 8888, from:'0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A' },
不管是development还是line都是随意取的Key,如果你有多个区块链节点,你也可以多配几段即可。
代码段中的from为部署合约的账户,如果不配,则默认为以太坊客户端的第一个账户。
部署合约
编译
truffle compile
部署前
编译后要做的事情是确保部署合约的那个地址里有ETH,因为部署是要花钱的,并且地址必须解锁, 然后才能部署。
部署
truffle migrate --network line
(我自己配置的网络段是line,所以我的--network值是line,如果你只是 truffle migrate 不加任何参数 那么默认会部署development网络)
部署后
必须要设置挖矿地址,进行挖矿,否则交易不会广播。
查看合约
truffle networks
操作合约
进入控制台
truffle console --network line
获取合约实例
let instance = await MetaCoin.deployed()
调用合约方法
这里举例获取地址余额
let balance = await instance.getBalance('0x30f8c37E265FbfC8941c38f861a8d2FC994e4772') balance.toNumber()