Protocol

比特幣資訊數據協議

  • July 31, 2015

顯然,要讓比特幣系統發揮作用,我們需要一個全球範圍內的資訊網路,例如網際網路。

如果這是一個愚蠢的問題,我很抱歉。

正在使用什麼確切的資訊協議?顯然,它位於 TCP/IP 之上,但究竟是什麼?

我感興趣的正是這些基於 TCP/IP 的第一級軟體……

比特幣使用自己的基於 TCP 的有線協議。這很簡單,每種數據包類型都有嚴格的一致性規則和校驗和。新對象(事務和塊)通過網路泛洪到所有對等點,並帶有一個表明他們想要該資訊的標誌,以及對等點地址和 ping 等輔助消息。任何連接都不使用加密。

<https://bitcoin.org/en/developer-reference#p2p-network>

這是一個相當簡單的自定義協議。您可以在https://en.bitcoin.it/wiki/Protocol_documentation找到詳細資訊,但消息使用以下通用形式:

  • magic, 4 bytes, uint32_t: 表示消息來源網路的magic值,當流狀態未知時用於尋找下一條消息
  • 命令,12 字節,char[12]:標識數據包內容的 ASCII 字元串,填充 NULL(非 NULL 填充導致數據包被拒絕)
  • length, 4 bytes, uint32_t: 有效載荷的長度,以字節數為單位
  • 校驗和,4 個字節,uint32_t:sha256(sha256(payload)) 的前 4 個字節
  • payload,變長,uchar[]:實際數據

“inv”命令用於在網路上發送新交易和區塊的通知,“getdata”命令用於檢索有關這些交易和區塊的資訊。

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