Client

如何將 peers.dat 文件轉儲到純文字文件?

  • May 20, 2018

是否有將 [整個] 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 儲存庫上打開一個問題。

引用自:https://bitcoin.stackexchange.com/questions/75324