Go-Ethereum
無法將 MetaMask 連接到本地 geth 節點
我已經設置了一個本地 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 )