繁体   English   中英

在特定地址使用合约

[英]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 每次。如何做到这一点?

我在这里看到 2 个问题。

1. 0xB525F2F0046fA37f21EaF1F0619B3de7c1094324不是具有有效checksum的地址。 具有有效checksum的地址是0xB525f2f0046Fa37F21Eaf1F0619b3DE7C1094324 不过,这在Truffle中可能不是问题。

2.在这一行的第一块代码中

await deployer.deploy(payBContract, ins, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});

您将contract instance作为参数而不是contract address传递。 正确的代码可能是

await deployer.deploy(payBContract, ins.address, {"from":"0x69A9CAEc73e4378801266dFc796d92aFC98013f6"});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM