Используйте контракт по определенному адресу - PullRequest
0 голосов
/ 01 октября 2019

В файле миграции я развертываю один контракт, и для этого контракта я передаю адрес другого контракта в качестве параметра конструктора

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 каждый раз. Как это сделать?

1 Ответ

0 голосов
/ 01 октября 2019

Я вижу 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"});
...