> bech32 | segwit | bc1 <
// Bech32 - 具錯誤偵測的 Bitcoin SegWit 位址編碼
比特幣位址
用於以 bc1 開頭的原生比特幣 SegWit 位址格式。
更強的錯誤偵測
相較 Base58Check,更容易發現並找出輸入中的錯誤位置。
適合 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 24 | q g s c |
| 1 9 17 25 | p f 3 e |
| 2 10 18 26 | z 2 j 6 |
| 3 11 19 27 | r t n m |
| 4 12 20 28 | y v 5 u |
| 5 13 21 29 | 9 d 4 a |
| 6 14 22 30 | x w k 7 |
| 7 15 23 31 | 8 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 個字元。