部署器Deployer提供了很多有用的API。
deployer.deploy(contract, args…, options)
这个函数部署指定合约,可以传入合约构造函数的参数。
- contract 要部署的合约
- args… 合约构造函数参数
- options 部署选项
部署后将覆盖以前的合约地址(即Contract.address
将等于新部署的地址)。
示例
// 部署单个合约,不传入构造函数参数
deployer.deploy(A);
// 使用构造函数参数部署单个合约
deployer.deploy(A, arg1, arg2, ...);
// 如果已经部署了此合约,则不要部署它
deployer.deploy(A, {overwrite: false});
// 设置部署的gas量上限,及“from”地址
deployer.deploy(A, {gas: 4612388, from: "0x...."});
deployer.link(library, destinations)
这个函数将已部署的库链接到一个或多个合约。目标可以是单个合约,也可以是合约数组。如果目标中有合约不依赖于被链接的库,则该合约将被忽略。
示例
// 部署库LibA,然后将LibA链接到contract B,然后部署B。
deployer.deploy(LibA);
deployer.link(LibA, B);
deployer.deploy(B);
// 将LibA 链接到多个合同
deployer.link(LibA, [B, C, D]);
deployer.then(function() {…})
类似promise
一样,这是deployer
的同步机制。
示例
var a, b;
deployer.then(function() {
// 创建a的新版本
return A.new();
}).then(function(instance) {
a = instance;
// 获取B的已部署实例
return B.deployed();
}).then(function(instance) {
b = instance;
// 通过B的setA()函数在B上设置A的address新实例。
return b.setA(a.address);
});