Bitcoin-Core

用於 Bech32 地址的版本前綴

  • October 17, 2020

我正在為不同類型的比特幣地址編譯版本前綴(十六進制)Base-58 結果前綴的表。

我在這裡遇到了內容:<https://en.bitcoin.it/wiki/List_of_address_prefixes>,其中不包含有關Decimal的資訊, Bech32 地址的前綴 Hex(我猜他們也稱為 SegWit 地址,對吧?)

所以,我在這裡查看了這張圖表: https ://en.bitcoin.it/w/images/en/4/48/Address_map.jpg但是,我不明白“ x03x03x00x02x03 ”的含義。

  1. 如果 x00 等於十六進制的 0x00,x80 等於十六進制的 0x80,我應該如何解釋 x03x03x00x02x03?
  2. Bech32 地址(bc1 地址)的版本前綴是什麼?

這些字節(x03x03x00x02x03 或更好地顯示為0x0303000203)是擴展的人類可讀部分。您可以在BIP-173上找到程式碼。

def bech32_hrp_expand(s):
 return [ord(x) &gt;&gt; 5 for x in s] + [0] + [ord(x) & 31 for x in s]

然而問題在於,與 Base58 編碼不同,這些字節僅用於計算校驗和,而不是作為起始字節。在我看來,這使圖片具有誤導性。

Bech32 編碼與 Base58 編碼非常不同,因為沒有“版本前綴”。有一個 Hrp、一個見證版本、一個數據(雜湊)和一個校驗和。Witness version | hash是被編碼的數據並expanded_hrp | data用於校驗和計算(|是連接)。

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