> bech32 | segwit | bc1 <
// Bech32 - 带错误检测的 Bitcoin SegWit 地址编码
比特币地址
用于以 bc1 开头的原生比特币 SegWit 地址格式。
更强的错误检测
相比 Base58Check,更容易发现并定位输入中的错误。
适合二维码
全小写设计让二维码更紧凑,也更易于扫描。
>> 技术详情
Bech32 的工作原理:
Bech32 使用 32 个字符的字母表(去掉容易混淆的字符),并结合 BCH 码进行错误检测。地址由人类可读部分(HRP)、分隔符 1、数据部分以及 6 位校验和组成。
结构示例:
bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 bc = HRP(比特币主网) 1 = 分隔符 qw508d = 数据(5 位分组) kv8f3t4 = 校验和(最后 6 个字符)
为什么使用 Bech32:
- >比特币 SegWit 地址
- >闪电网络发票
- >加密货币地址
- >更抗错误的编码
- >二维码显示优化
>> 常见问题
什么是 Bech32?
Bech32 是一种带校验和的 base32 编码格式,主要用于比特币的 SegWit 地址。它相比早期的地址格式拥有更好的错误检测能力,更不容易输错。
Bech32 和 Bech32m 有什么区别?
Bech32m 是在原始 Bech32 校验和算法上的改进版本,用来修复一个弱点。Taproot 地址(以 bc1p 开头)使用 Bech32m,而早期的 SegWit 地址使用 Bech32。
为什么 Bech32 地址都是小写?
只使用小写字符可以生成更小的二维码,也更方便人工输入。格式本身不区分大小写,但规范上推荐使用小写以保持一致。
什么是 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 个字符。