如何將 peers.dat 文件轉儲到純文字文件?
是否有將 [整個] peers.dat 文件轉儲到文本文件的簡單解決方案?
有類似的問題,例如How do I read peers.dat file to get a list of all peers seen or that bitcoind has connected to?但我想將此程式碼插入比特幣核心客戶端(實際上是:分叉客戶端)並在客戶端啟動時轉儲此數據庫的內容。
bitnodes.earn.com 不是我的答案。
據我所知,目前沒有辦法做到這一點,所以我寫了一個。
解碼 peers.dat 的細節在我的部落格文章Demystifying Bitcoin’s peers.dat中有描述。
結果是一個用 go 編寫的開源工具,可以從 peers.dat 讀取所有對等資訊。與往常一樣,在任何持有錢包的機器上執行之前,都應該檢查程式碼。該工具也應該能夠與任何基於比特幣的山寨幣一起使用。我已經針對比特幣、萊特幣和狗狗幣進行了測試
peers.dat
。安裝
bitpeers
非常簡單,前提是您已經安裝好並進行了GOPATH
設置。如果沒有,Go 有一個方便的入門指南,您可以使用它來解決這個問題。一旦設置好,只需執行
go get -u github.com/RaghavSood/bitpeers/cmd/bitpeers
如果你的 go 環境設置正確,你現在應該有一個
bitpeers
可用的命令。如果沒有,請嘗試找到您的GOBIN
(GOPATH/bin
) 並將其添加到您的PATH
.
bitpeers
輕鬆地將peers.dat
地址轉儲為人類可讀的明文或 JSON。它接受三個標誌:Usage of bitpeers: --addressonly outputs only addresses if specified --filepath string the path to peers.dat --format string the output format {json|text} (default "json")
執行
bitpeers --filepath /mnt/doge/.dogecoin/peers.dat --addressonly
將生成一個包含所有 IP 和埠的 JSON 數組peers.dat
。您還可以傳遞--format text
選項以生成所有 IP 和埠的列表,每行一個 IP:port。不使用該
--addressonly
選項執行將產生完整的 JSON/文本輸出,其中包含以下內容:$ bitpeers --filepath ./peers.dat --format text SerializationVersion: 34fc0100 Time: 1526192792 ServiceFlags: 0x000000000000000d IP: 42.5.143.180:8333 Source: 8.8.8.8 LastSuccess: 1526746622 Attempts: 0
如果您碰巧發現解析器或輸出有任何不一致或問題,請在GitHub 儲存庫上打開一個問題。