Развертывание контрактов в Ropsten с Truffle

У меня есть еще один вопрос n00b... извините за это :(

Я пытаюсь развернуть смарт-контракт в Ropsten. Я синхронизировал сеть Ropsten с geth --testnet --fast --rpc --rpcapi eth,net,web3,personal, и она выглядит совершенно обновленной.

Затем я пытаюсь развернуть этот смарт-контракт (который я уже развернул в своей частной сети testrpc, и он отлично работает) в Ropsten. Для этого я выполняю truffle migrate --network ropstenи получаю эту надоедливую ошибку:

Could not connect to your Ethereum client. Please check that your Ethereum client:
    - is running
    - is accepting RPC connections (i.e., "--rpc" option is used in geth)
    - is accessible over the network
    - is properly configured in your Truffle configuration file (truffle.js)

Экземпляр geth на самом деле запущен и работает, так как я могу подключиться к нему, geth attach http://127.0.0.1:8545и он работает нормально. Он принимает соединения, так как я использовал параметр --rpc. Он доступен по сети, потому что я уже получил к нему доступ... и я думаю, что мой файл конфигурации Truffle в порядке, вот как он выглядит:

require('babel-register')

module.exports = {
  networks: {
    development: {
      host: 'localhost',
      port: 8545,
      network_id: '*' // Match any network id
    },
    ropsten: {
      host: "localhost",
      port: 8545,
      network_id: "3",
    }
  }
}

Может ли кто-нибудь сказать мне, почему я получаю эту ошибку и что я могу сделать, чтобы исправить это?

Огромное спасибо заранее!!! :)

если я добавляю из поля, он возвращает неверный адрес, но если я удаляю из поля, он застревает
Это не дает ответа на вопрос. Когда у вас будет достаточно репутации , вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют разъяснений от спрашивающего . - Из обзора

Ответы (2)

Когда я развертывал свой контракт через трюфель в сети rinkeby, я тоже получил ту же ошибку после добавления адреса и газа, который был развернут. Попробуй это

networks: {
  ropsten: {
    network_id: 3,
    host: '127.0.0.1',
    port: 8545,
    gas: 4000000,
    from: <your unlocked ropsten account address>
  },
Большое спасибо, Джаз! Ну, выглядит немного лучше, теперь я получаю эти 2 новые строки, но все равно не получается :( --->Использование сети 'ropsten'. --->Выполняется миграция: 1_initial_migration.js Не удалось подключиться к вашему клиенту Ethereum (и т. д. ...)
Хорошо, похоже, проблема может заключаться в том, что моя база данных блокчейна была повреждена, поэтому мне нужно снова синхронизировать... Ааааааааа!!
Наконец-то заработало, большое спасибо!! :) Важно отметить, что единственным содержимым truffle.js должно быть то, что вы написали... Мне пришлось удалить другую сеть, которую я настроил в этом файле, чтобы все это могло работать.
Вы также можете использовать следующую команду, чтобы специально использовать сеть, если у вас настроено несколько сетей. трюфельная миграция --network ropsten

Разблокировать учетную запись ropsten сложно. Вы можете выбрать развертывание закрытого ключа. Я построил lib для чего-то подобного.

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 и запустите с помощью node. Надеюсь это поможет.