Deployer的使用 原文地址
此对象在migrations目录中的migrate中使用
Deployer包含了很多使用的方法,可以简化migrate操作
可以把deployer看作是一个特别的contract,
Deploy函数
1.可以部署一个合约A
deployer.deploy(A);
2.在部署合约A的时候可以传给合约一些初始化的参数arg2,arg3,......
deployer.deploy(A,arg1,arg2,arg3,….);
3.如果不想重新部署已经部署的合约,可以在第二个参数使用 key=>value的方式
例如告诉deployer不要重新部署: overwrite = false
deployer.deploy(A, {overwrite: false});
限制从某个address发出的操作消耗的最大gas(比特币)
deployer.deploy(A, {gas: 4612388, from: "0x...."});
4.可以同时部署多个合约,并给每个合约传参数
deployer.deploy([ [A, arg1, arg2, ...], B, [C, arg1] ]);
ABC都是合约 arg是参数
Link函数
把一个已经部署的库链接到一个和多个合约(注意是已经部署的库)
链接之后在相应的合约中就可以使用这个库中的函数
Demo:
//先部署库LibA
deployer.deploy(LibA);
//链接库LibA和合约B
deployer.link(LibA, B);
//部署合约
deployer.deploy(B);
一次将库连接多个合约
deployer.link(LibA, [B, C, D]);
Then函数
就像es5/6的promise一样,then是一个异步操作
var a, b; deployer.then(function() { // Create a new version of A return A.new(); }).then(function(instance) { a = instance; // Get the deployed instance of B return B.deployed(); }).then(function(instance) { b = instance; // Set the new instance of A's address on B via B's setA() function. return b.setA(a.address); });
作者:大都废