У меня есть еще один вопрос 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",
}
}
}
Может ли кто-нибудь сказать мне, почему я получаю эту ошибку и что я могу сделать, чтобы исправить это?
Огромное спасибо заранее!!! :)
Когда я развертывал свой контракт через трюфель в сети rinkeby, я тоже получил ту же ошибку после добавления адреса и газа, который был развернут. Попробуй это
networks: {
ropsten: {
network_id: 3,
host: '127.0.0.1',
port: 8545,
gas: 4000000,
from: <your unlocked ropsten account address>
},
Разблокировать учетную запись 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. Надеюсь это поможет.
Дипак Сурья
Ричард Хоррокс