Go-Ethereum
即使設置了 coinbase addr 和 miner.start(),Geth 礦工在私有鏈上的雜湊率也為 0
我有一個多節點私有鏈,最近不得不在創世區塊中切換 networkId 和 ChainID 以匹配以符合 Metamask 的要求。
現在我已經進行了這些更改並重新部署,它在本地對我來說工作得很好,但是我的 Dockerized Geth 節點無法“成功密封一個新塊”,但能夠“送出新的探勘工作”。以下是以下 Dockerfile:
FROM ethereum/client-go:v1.7.2 RUN mkdir -p /root/myChain/ WORKDIR /root/myChain COPY Genesis.json /root/myChain/ RUN geth \ --identity "myChainNode" \ init \ --datadir "/root/.ethereum/myChain/" \ "/root/myChain/Genesis.json" \ --ipcdisable \ --mine --autodag --networkid 777 --nat "any" --gasprice "3000000" EXPOSE 30303 EXPOSE 8545 ENTRYPOINT geth \ --identity "myChainNode" \ --datadir "/root/.ethereum/myChain/" \ --ipcdisable \ --networkid 777 \ --rpcapi eth,web3,net,personal \ --rpc --rpcaddr "0.0.0.0" --rpcport "8545" \ --rpccorsdomain "*" \ --nat "any" \ --port "30303" \ --etherbase "<myPublicAddress>" \ --ws --wsport "8546" --wsaddr="0.0.0.0" --wsorigins "*" \ --mine \ console
當我
miner.start()
或miner.start(8)
響應是null
我連接到我的私有鏈中的對等點時,我的雜湊率仍然為 0。AWS 為執行它的 EC2 打開了適當的 30303 和 8545 埠。
我的本地節點探勘得很漂亮,它的執行腳本如下所示:
sudo geth \ --identity "myChainNode" \ --datadir "~/Library/Ethereum/myChain" \ --ipcdisable \ --etherbase "<myPublicAddress>" \ --networkid 777 \ --rpcapi eth,web3,net,personal \ --rpc --rpccorsdomain "*" \ -rpcport "8545" \ --verbosity 3 \ --ws --wsport "8547" --wsorigins "*" \ --mine \ console
有什麼想法嗎?
我發現發生這種情況的原因如下:
當我第一次創建私有鏈時,我使用不同的 networkId 執行了初始化。正如我在評論中所說,我最終更改了它,因為 CustomRPC 的元遮罩要求具有 networkID 和 chainID 匹配。
如果您決定在啟動鏈後更改 NetworkID,則需要確保 Geth Init 使用您的原始 NetworkID,然後在執行/打開 Geth 節點時輸入新的 NetworkID。該鏈已在您的所有其他節點上初始化,它不會正確探勘,因為如果沒有相同的 init 配置,它就無法密封。
礦工需要一個未鎖定的帳戶才能進行密封。您似乎忘記解鎖帳戶了。