編碼 | 解碼 | 壓縮

> bech32 | segwit | bc1 <

// Bech32 - 具錯誤偵測的 Bitcoin SegWit 位址編碼

[SEGWIT]

比特幣位址

用於以 bc1 開頭的原生比特幣 SegWit 位址格式。

[ERROR-DETECTION]

更強的錯誤偵測

相較 Base58Check,更容易發現並找出輸入中的錯誤位置。

[CASE-INSENSITIVE]

適合 QR Code

全小寫設計讓 QR Code 更緊湊,也更容易掃描。

>> 技術細節

Bech32 的運作方式:

Bech32 使用 32 個字元的字母表(排除容易混淆的字元),並搭配 BCH 碼進行錯誤偵測。位址由人類可讀部分(HRP)、分隔符 1、資料區段以及 6 位驗證碼組成。

結構範例:

bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 bc = HRP(比特幣主網) 1 = 分隔符 qw508d = 資料(5 位分組) kv8f3t4 = 驗證碼(最後 6 個字元)

為什麼使用 Bech32:

  • >比特幣 SegWit 位址
  • >閃電網路帳單
  • >其他加密貨幣位址
  • >較不易出錯的編碼格式
  • >針對 QR Code 最佳化

>> 常見問題

什麼是 Bech32?

Bech32 是一種帶驗證碼的 base32 編碼格式,主要用於比特幣的 SegWit 位址。相較舊有的位址格式,它提供更好的錯誤偵測能力。

Bech32 和 Bech32m 有何不同?

Bech32m 是在原始 Bech32 驗證演算法上的改進版本,用來修補一個弱點。Taproot 位址(以 bc1p 開頭)使用 Bech32m,而較早的 SegWit 位址使用 Bech32。

為什麼 Bech32 位址都使用小寫?

只使用小寫字元可以產生更小的 QR Code,也比較方便輸入。格式本身不區分大小寫,但規範上建議使用小寫以保持一致性。

什麼是 HRP?

HRP(Human Readable Part,可讀部分)用來標示位址類型與網路。例如 bc 代表比特幣主網,tb 代表測試網,ltc 代表萊特幣。

// 速查表

value字元
0 8 16 24q g s c
1 9 17 25p f 3 e
2 10 18 26z 2 j 6
3 11 19 27r t n m
4 12 20 28y v 5 u
5 13 21 299 d 4 a
6 14 22 30x w k 7
7 15 23 318 0 h l

// 程式碼範例

Charset    qpzry9x8gf2tvdw0s3jn54khce6mua7l   (32 symbols, no 1 b i o)
Format     <hrp> + "1" + <data> + <6-char checksum>   (max 90 chars)
HRP        bc (Bitcoin) | tb (testnet) | ltc (Litecoin) | lnbc (Lightning)
Checksum   Bech32 constant 1  (BIP-173)  |  Bech32m constant 0x2bc830a3  (BIP-350)
Example    bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

>> 更多問題

問:Bech32 和 Bech32m 有什麼區別?

答:格式和字元集相同,但校驗和常數不同:Bech32(BIP-173)使用 1,Bech32m(BIP-350)使用 0x2bc830a3。Bech32m 用於 SegWit v1 及以上,即 Taproot(bc1p…);Bech32 用於 v0(bc1q…)。

問:Bech32 字母表為什麼沒有 1、b、i、o?

答:32 個字元 qpzry9x8gf2tvdw0s3jn54khce6mua7l 去掉了易混淆的符號:1 用作分隔符,b、i、o 與 6、1、0 相似。編碼只能全小寫或全大寫,不能混用。

問:Bech32 校驗和檢錯能力如何?

答:6 個校驗字元基於 BCH 碼,能確保檢出不超過 4 個字元的任何錯誤,查找輸入錯誤的能力遠好於 Base58Check。長度限制為 90 個字元。

其他語言