Не удалось развернуть контракт в тестовой сети rinkeby с использованием трюфеля.

Вот шаги, которые я предпринял, чтобы развернуть свои контракты в сети rinkeby:

  1. Создал папку .rinkeby.
  2. Скачал genesis json для rinkeby отсюда
  3. Запустил эту команду:

    geth --datadir=$HOME/.rinkeby --light init rinkeby.json

  4. Запустил эту команду:

    geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304 --rpc --rpcapi db,eth,net ,web3,personal --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*"

  5. После того, как я подключился к сети, я использовал truffle со следующим кодом и командой для развертывания контракта:

Код:

module.exports = {
  networks: {
    rinkeby: {
      network_id: 4,
      host: '127.0.0.1',
      port: 8545,
      gas: 4000000
    },
  },
  rpc: {
    // Use the default host and port when not using rinkeby
    host: 'localhost',
    port: 8080,
  },
};

Команда:

truffle compile; truffle migrate --network rinkeby

Это ошибка, которую я получаю:

Using network 'rinkeby'.

/usr/lib/node_modules/truffle/build/cli.bundled.js:23538
        throw new Error("Expected parameter '" + key + "' not passed to function.");
        ^

Error: Expected parameter 'from' not passed to function.
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:23538:15
    at Array.forEach (native)
    at Object.options (/usr/lib/node_modules/truffle/build/cli.bundled.js:23536:19)
    at Object.run (/usr/lib/node_modules/truffle/build/cli.bundled.js:66868:12)
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:88946:23
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:67033:9
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:66861:7
    at done (/usr/lib/node_modules/truffle/build/cli.bundled.js:155469:5)
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:155526:11
    at FSReqWrap.oncomplete (fs.js:153:5)

Что неверно в процессе, которому я следовал? Я не могу понять, почему появляется эта ошибка и как ее убрать.

вы договор с ним составляли truffle compile?
Да, я обновил шаг, который пропустил в своем вопросе.
Достаточно ли средств на вашем счету?

Ответы (2)

Проблема была в файле truffle.js.

module.exports = {
  networks: {
    rinkeby: {
      network_id: 4,
      host: '127.0.0.1',
      port: 8545,
      gas: 4000000,
      from: <your account address>
    },
  },
  rpc: {
    // Use the default host and port when not using rinkeby
    host: 'localhost',
    port: 8080,
  },
};

Просто нужно добавить from: <account address>в информацию о конфигурации rinkeby.

У меня была своя доля трудностей с конфигурацией трюфеля. Я сделал свою маленькую библиотеку для развертывания с помощью ethers.js. Надеюсь, это может помочь кому-то в будущем:

const etherlime = require('etherlime');

const ICOTokenContract = require('./build/contracts/ICOToken.json');

const randomAddress = '0xda8a06f1c910cab18ad187be1faa2b8606c2ec86';

const defaultConfigs = {
    gasPrice: 20000000000,
    gasLimit: 4700000
}

const deployer = new etherlime.InfuraPrivateKeyDeployer('Your Privste KEY', 'ropsten', 'Your infura API key', defaultConfigs);

const runICODeployment = async () => {
    const contractWrapper = await deployer.deploy(ICOTokenContract);
    const transferTransaction = await contractWrapper.contract.transferOwnership(randomAddress);
    const result = await contractWrapper.verboseWaitForTransaction(transferTransaction.hash, 'Transfer Ownership');
}
runICODeployment()

Поместите это в файл js и запустите его через узел