Solidity
使用 truffle 在 privavte 區塊鏈上部署合約
我使用 geth 在本地設置了一個私有區塊鏈。我做了什麼:
- 創建 genesis.json
- 初始化
- 附上
- 創建賬號,解鎖賬號,開始挖礦
- 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
如果它這麼說並且您無法連接,您可以嘗試所有這些:
- 嘗試使用您的網路瀏覽器訪問(我嘗試使用 Chrome)。如果它有效,您將看到您的頁面為白色。有時它會拋出諸如“無效主機”之類的消息。在這種情況下,您應該添加 –rpcvhosts="*" 以讓任何主機連接到您的主機。
- 嘗試使用連接:
遠端登錄
$$ ipaddress $$ $$ port $$
除了前面提到的,試著先走一個簡單的方法。如果我是你,我會先嘗試:
geth --rpc --rpcport 8545 --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"