Go-Ethereum

即使設置了 coinbase addr 和 miner.start(),Geth 礦工在私有鏈上的雜湊率也為 0

  • March 24, 2018

我有一個多節點私有鏈,最近不得不在創世區塊中切換 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 配置,它就無法密封。

礦工需要一個未鎖定的帳戶才能進行密封。您似乎忘記解鎖帳戶了。

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