Go-Ethereum

使用 geth 控制台和松露部署時出現不同的錯誤

  • June 25, 2018

我正在嘗試通過兩種不同的方式部署契約,但我無法成功。

第一種方式:

1.geth console —rinkeby —rpc —rpcapi db,eth,net,web3,personal —unlock="0x..." 2>>geth.log

我的賬戶上有乙太幣,我輸入了正確的密碼,我確定該賬戶在 eth.accounts 列表中

  1. 我用 編譯我的合約solc,它給了我二進制程式碼和 abi,​​我把它放進去變數binabi. 我放在0x二進制程式碼之前。

  2. var contract = web3.eth.contract(abi)

4.var token = myContract.new( {from: eth.coinbase, data: bin, gas: 1000000}, function(e, myContract) { if (e) { console.log(e); } else { if (myContract.address) { console.log ("mined " +myCcontract.address); } } })

它說

錯誤:無法儲存合約程式碼,請檢查您的gas量。

第二種方法是使用松露。我已經成功地將契約部署到 rinkeby 很多次了,但現在我陷入了這個錯誤。

  1. 我執行geth並解鎖帳戶

  2. 有我的truffle.js

module.exports = {

網路:{

開發:{

主機:“localhost”,

埠:8545,

network_id:“*”,gas:900000},

rinkeby:{

主機:‘127.0.0.1’,

埠:8545,

network_id:4 ,

gas: 4612388, // 用於部署的 Gas 限制

來自:“0xeb1eb48fc3c2756cde3dce8a53472e437062f976” } } };

3.truffle migrate --reset --network rinkeby

它說

遇到錯誤,放棄。網路狀態未知。手動查看成功的交易。類型錯誤:contract.detectNetwork 不是 /usr/local/lib/node_modules/truffle/build/cli.bundled.js:201861:21 在 /usr/local/lib/node_modules/truffle/build/cli.bundled 的函式。 js:326484:15 在

我的目的是學習如何通過 geth 或 truffle 控制台與合約的功能進行互動。但是……出了問題。請幫我修一下。

如果你完成了這個問題,已經謝謝了

首先嘗試使用 testrpc - https://github.com/ethereumjs/testrpc

而此錯誤消息“遇到錯誤,保釋。網路狀態未知”表示 geth 無法正常工作或未使用埠 8545 或由於 ip 127.0.0.1 而無法正常工作。

嘗試使用 testrpc。你將有一個很棒的經歷。為了測試目的與合約互動更快

或者,我編寫了一個小庫用於部署,可能對某人有用。它使用 ethers.js(web3.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()

將它放在一個文件中並使用 node.js 執行它。

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