仅学习记录之用
首先新建文件夹 test2
mkdir test2
cd test2
用truffle初始化,由于时3.0版本,可以用以下命令
truffle init webpack
初始化完成后,打开contracts 文件夹,建立新的合约,我这里用到的是官方的例子。投票合约
把它复制为新的合约文件Ballot.sol。
然后在migrations 文件夹里修改1_initial_migration.js文件,如图
这里由于Ballot构造方法参数为数字,我随便写了个8作为测试。
建立账户,挖矿。
personal.newAccount('123456')
miner.start()
等挖一段时间矿,在停止
miner.stop()
这里要修改test2中的truffle.js文件
要与私有链启动命令的端口保持一致,由于我的节点在8081启动所以这里port也设置为8081
然后输入
truffle compile
成功,再输入
truffle migrate
出错,说 network up to date .这个错误我刚开始不知道怎么解决,在网上有没有人提起。后来看到有人在部署时用
truffle migrate --reset
接近成功!!!
后来查明原因。由于合约移植是懒编译的,如果发现已经发布过,且发布的版本号没有变化就不会再发布,所以使用–reset。使用truffle migrate –reset来强制重编译并发布所有合约。
但是账户没有解锁,所以在节点解锁账户,默认第一个账户。
personal.unlockAccount('这里是账户地址')
账户地址可以用
personal.listAccounts
查看。
接下来再次部署
可以看到有一个节点这边已经有了提示
输入
txpool.status
查看未打包合约,显示有一个
然后再次启动挖矿,进行打包。
这里看到合约部署成功,并显示在哪个块上。
接下来尝试调用合约,将官方投票例子右边的合约接口interface复制,治理的合约接口是我们调用合约可以用到的方法,
赋值建立一个实例
尝试调用合约方法
以上就我对私有链部署合约的相关实践。