Solidity

使用 truffle 在 privavte 區塊鏈上部署合約

  • May 16, 2018

我使用 geth 在本地設置了一個私有區塊鏈。我做了什麼:

  1. 創建 genesis.json
  2. 初始化
  3. 附上
  4. 創建賬號,解鎖賬號,開始挖礦
  5. truffle init、寫合約、遷移和更新 truffle.js

module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*", } } };

當我嘗試遷移契約時,出現以下錯誤:

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 --port 3000 --networkid 58342 --nodiscover --datadir="privchain" --maxpeers=0 autodag --rpc --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"

這是我的 genesis.json 文件:

{
 "config": {
   "chainId": 58342,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
 },
 "nonce": "0x0000000000000033",
 "timestamp": "0x0",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "gasLimit": "0x8000000",
 "difficulty": "0x100",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "coinbase": "0x3333333333333333333333333333333333333333",
 "alloc": {}
}

首先,看看 Geth 的輸出。它應該這樣說:

HTTP port opened on localhost:8545

如果它這麼說並且您無法連接,您可以嘗試所有這些:

  1. 嘗試使用您的網路瀏覽器訪問(我嘗試使用 Chrome)。如果它有效,您將看到您的頁面為白色。有時它會拋出諸如“無效主機”之類的消息。在這種情況下,您應該添加 –rpcvhosts="*" 以讓任何主機連接到您的主機。
  2. 嘗試使用連接:

遠端登錄

$$ ipaddress $$ $$ port $$

除了前面提到的,試著先走一個簡單的方法。如果我是你,我會先嘗試:

geth --rpc --rpcport 8545 --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"

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