我如何(有效地)以程式方式查看我是在 ETH 還是 ETC 鏈上?
如果我有 2 個節點,一個 ETH 和一個 ETC,並且我正在編寫一個程序來使用這些節點,我如何確定在任何給定時間我正在使用哪個節點?
我能想出的最好辦法是檢查分叉後的已知塊並簡單地比較# of tx。我知道兩條鏈上的那個塊中有多少 tx,所以我可以區分這種方式。
這看起來很笨重。有一個更好的方法嗎?
編輯:這不是“ETH 和 ETC 使用相同的網路 ID 嗎?”的重複。因為我不是在詢問網路 ID。我問的是整個網路。eth/etc 共享
1
主網路的網路 ID。
您可以使用 web3 拉取塊 1920000 的塊數據。這是 dao 分叉塊,因此塊雜湊會有所不同。
ETC 是0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f
ETH 是0x4985f5ca3d2afbec36529aa96f74de3cc10a2a4a6c44f2157a57d2c6059a11bb
就像評論中的其他人所說的那樣,看起來沒有任何 RPC 命令可以完成這項工作,但是如果您的腳本/程序可以訪問執行 Geth 的機器(也許結束
ssh
),您可以嘗試 grepping 日誌或殺死並重新啟動 Geth 以獲取日誌輸出。(話雖如此,如果您可以訪問機器,則
datadir
無論如何該名稱都會放棄遊戲:.ethereum-classic
vs..ethereum
,除非在節點啟動時手動指定了非預設名稱。)ETC:
$ cat /home/richard/.ethereum-classic/mainnet/log/geth.INFO | grep chainID I1201 18:56:27.326033 cmd/geth/flag.go:767] chainID: 61
乙太坊:
沒有與上述類似的文件,但在重新啟動 Geth 時:
INFO [12-01|19:09:25.456] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
(我假設 - 可能是錯誤的 - 在 ETH 的情況下
chainID
確實等同於鏈 ID 而不是網路 ID。無論哪種方式,如果沒有可以 grep 的日誌文件,您就可以推斷出它是 ETH 而不是 ETC。)