在特定地址使用合约
Use a contract at a specific address
在迁移文件中,我正在部署一个合约,对于该合约,我正在传递另一个合约的地址作为构造函数参数
var jbkContract = artifacts.require("./JBK.sol");
var payBContract = artifacts.require("./payback.sol");
var contract_address = '0xB525F2F0046fA37f21EaF1F0619B3de7c1094324';
module.exports = async function(deployer) {
let ins = await jbkContract.at(contract_address);
await deployer.deploy(payBContract,ins,{"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});
};
为此我收到了这个错误
"payback" -- invalid address (arg="_jbkContract", coderType="address", value="[object Object]").
早些时候我部署了 JBKContract,然后使用该地址部署了回报合同,并且工作正常。
var jbkContract = artifacts.require("./JBK.sol");
var payBContract = artifacts.require("./payback.sol");
module.exports = async function(deployer) {
deployer.deploy(jbkContract,1000000,"JBK","JBK",{"from":"0x69A9CAEc73e4374401266dFc796d92aFC98013f6"}).then(
function() {
return deployer.deploy(payBContract,jbkContract.address,{"from":"0x69A9CAEc73e4374401266dFc796d92aFC98013f6"});
}
)
};
但我不想只部署一次 JBK 合约并使用该合约的地址来部署 Payback everytime.How 来做到这一点?
我在这里看到 2 个问题。
1.0xB525F2F0046fA37f21EaF1F0619B3de7c1094324
不是具有有效 checksum
的地址。有效 checksum
的地址是 0xB525f2f0046Fa37F21Eaf1F0619b3DE7C1094324
。不过这在 Truffle
中可能不是问题。
2.In 这一行的第一段代码
await deployer.deploy(payBContract, ins, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});
您将 contract instance
作为参数传递,而不是 contract address
。正确的代码可能是
await deployer.deploy(payBContract, ins.address, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});
在迁移文件中,我正在部署一个合约,对于该合约,我正在传递另一个合约的地址作为构造函数参数
var jbkContract = artifacts.require("./JBK.sol");
var payBContract = artifacts.require("./payback.sol");
var contract_address = '0xB525F2F0046fA37f21EaF1F0619B3de7c1094324';
module.exports = async function(deployer) {
let ins = await jbkContract.at(contract_address);
await deployer.deploy(payBContract,ins,{"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});
};
为此我收到了这个错误
"payback" -- invalid address (arg="_jbkContract", coderType="address", value="[object Object]").
早些时候我部署了 JBKContract,然后使用该地址部署了回报合同,并且工作正常。
var jbkContract = artifacts.require("./JBK.sol");
var payBContract = artifacts.require("./payback.sol");
module.exports = async function(deployer) {
deployer.deploy(jbkContract,1000000,"JBK","JBK",{"from":"0x69A9CAEc73e4374401266dFc796d92aFC98013f6"}).then(
function() {
return deployer.deploy(payBContract,jbkContract.address,{"from":"0x69A9CAEc73e4374401266dFc796d92aFC98013f6"});
}
)
};
但我不想只部署一次 JBK 合约并使用该合约的地址来部署 Payback everytime.How 来做到这一点?
我在这里看到 2 个问题。
1.0xB525F2F0046fA37f21EaF1F0619B3de7c1094324
不是具有有效 checksum
的地址。有效 checksum
的地址是 0xB525f2f0046Fa37F21Eaf1F0619b3DE7C1094324
。不过这在 Truffle
中可能不是问题。
2.In 这一行的第一段代码
await deployer.deploy(payBContract, ins, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});
您将 contract instance
作为参数传递,而不是 contract address
。正确的代码可能是
await deployer.deploy(payBContract, ins.address, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});