Go-Ethereum

無法將 MetaMask 連接到本地 geth 節點

  • March 4, 2022

我已經設置了一個本地 geth 節點,並像這樣啟動它:

/usr/bin/geth --http --http.port 8545 --http.addr 0.0.0.0 --http.corsdomain '*' $ARGS

從我嘗試連接的機器上,我可以像這樣到達本地節點:

curl --data '{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST http://192.168.178.42:8545

然而,當我使用 rpc URL:http://192.168.178.42:8545/和 chainId進入新的 MetaMask 網路時1,MetaMask 以“無法獲取鏈 ID。您的 RPC URL 正確嗎?”作為響應。

可能出了什麼問題?

剛剛檢查了 Chrome 控制台,發現了一些有趣的東西:

initSentry.js:8 Failed to fetch the chainId from the endpoint. Error: chain not synced beyond EIP-155 replay-protection fork block
 at r.jsonRpcRequest (ui.js:152)
 at async v.validateChainIdOnSubmit (ui.js:152)
 at async chrome-extension:/nkbihfbeogaeaoehlefnkodbefgpgknn/ui.js:152

蓋特版:1.10.2-stable-97d11b01

去檢查同步狀態:

{
 currentBlock: 12315274,
 highestBlock: 12315377,
 knownStates: 662281856,
 pulledStates: 662253791,
 startingBlock: 12313270
}

這是目前區塊 12,315,274。EIP-155 的分叉塊為 2,675,000。為什麼打電話時會說它不同步eth_chainId

雖然我有分叉後的塊,但我的狀態樹似乎仍然不同步,並且在它趕上之前,這個節點不同步並且不可用。

在這一點上,我不知道同步 state trie 的進度。

你可以在這裡閱讀更多內容:https ://github.com/ethereum/go-ethereum/issues/15001#issuecomment-370732526

由於這個問題,我一天中大部分時間都在拔掉我的最後一根頭髮,我想我會告訴你如何解決它,以防其他人遇到這個問題。

執行 geth 時必須添加以下內容:

--http.vhosts "*"

文件將其描述為:“接受請求的虛擬主機名的逗號分隔列表(伺服器強制)。接受’*‘萬用字元。(預設值:“localhost”)”

我正在使用我自己的創世文件執行一個私有 Geth 網路,因此它永遠不會看到網際網路….請注意 * 允許一切連接(但我不確定您是否可以看到任何東西作為它的私有創世文件和私有 clientID )

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