Truffle

使用 Truffle 在 Ropsten 中部署合約

  • June 25, 2018

我還有另一個 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 網路中的 truffle 部署我的合約時,在從地址和 gas 添加後,我也遇到了同樣的錯誤。試試這個

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.js 執行它。希望這可以幫助。

引用自:https://ethereum.stackexchange.com/questions/26365