Bech32编码 (3)隔离见证地址
1. Bech32 編碼
- 人類可讀的部分“bc” [ 7 ]用于主網(wǎng),“tb” [ 8 ]用于測(cè)試網(wǎng)。
- 數(shù)據(jù)部分值:
. 1 個(gè)字符(代表 5 位數(shù)據(jù)):見證版本
. 2 到 40 字節(jié)的見證程序(由BIP141定義)到 base32 的轉(zhuǎn)換:
■ 從見證程序的位開始,首先是每個(gè)字節(jié)的最高有效位。
■ 將這些位重新排列為 5 組,并在需要時(shí)在末尾填充零。
■ 使用上表將這些位轉(zhuǎn)換為字符。
2. 解碼
解釋隔離見證地址的軟件:
- 必須驗(yàn)證人類可讀的部分對(duì)于主網(wǎng)是“bc”,對(duì)于測(cè)試網(wǎng)是“tb”。
- 必須驗(yàn)證第一個(gè)解碼數(shù)據(jù)值(見證版本)在 0 和 16 之間,包括 0 和 16。
- 將其余數(shù)據(jù)轉(zhuǎn)換為字節(jié):
. 將值轉(zhuǎn)換為 5 位,最重要的位在前。
. 將這些位重新排列為 8 位一組。最后的任何不完整組必須是 4 位或更少,必須全為零,并被丟棄。
. 必須有 2 到 40 個(gè)組,它們被解釋為見證程序的字節(jié)。
解碼器應(yīng)該對(duì)見證程序執(zhí)行已知長度限制。
eg. BIP141 指定如果版本字節(jié)為 0,但見證 程序既不是 20 字節(jié)也不是 32 字節(jié),則腳本必須失敗。
由于之前的規(guī)則,地址的長度總是在 14 到 74 個(gè)字符之間,并且它們的長度模 8 不能是 0、3 或 5。版本 0 見證地址總是 42 或 62 個(gè)字符,但實(shí)現(xiàn)必須允許使用任何版本。
在將地址轉(zhuǎn)換為 scriptPubkey 時(shí),實(shí)現(xiàn)應(yīng)特別小心,其中見證版本n存儲(chǔ)為OP_n。OP_0 編碼為 0x00,但 OP_1 到 OP_16 編碼為 0x51 到 0x60(十進(jìn)制為 81 到 96)。如果 bech32 地址被轉(zhuǎn)換為不正確的 scriptPubKey,結(jié)果可能是無法使用或不安全。
3. 以P2WPKH地址為例
公鑰為0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
step1. 計(jì)算HASH160(sha256+ripemd160)值
751e76e8199196d454941c45d1b3a323f1433bd6
step2. bech32編碼
易讀前綴“bc” + 版本 0 + HASH160值 ,主網(wǎng) P2WPKH為:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
其他格式(使用密鑰 OP_CHECKSIG作為腳本)
- 測(cè)試網(wǎng) P2WPKH:tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx
- 主網(wǎng) P2WSH:bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3
- 測(cè)試網(wǎng) P2WSH:tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7
總結(jié)
以上是生活随笔為你收集整理的Bech32编码 (3)隔离见证地址的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bech32编码 (2)原理
- 下一篇: Bech32编码 (4)地址验证示例