Bech32编码 隔离见证地址
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bech32编码 隔离见证地址相关的知识,希望对你有一定的参考价值。
1. Bech32 编码
- 人类可读的部分“bc” [ 7 ]用于主网,“tb” [ 8 ]用于测试网。
- 数据部分值:
. 1 个字符(代表 5 位数据):见证版本
. 2 到 40 字节的见证程序(由BIP141定义)到 base32 的转换:
■ 从见证程序的位开始,首先是每个字节的最高有效位。
■ 将这些位重新排列为 5 组,并在需要时在末尾填充零。
■ 使用上表将这些位转换为字符。
2. 解码
解释隔离见证地址的软件:
- 必须验证人类可读的部分对于主网是“bc”,对于测试网是“tb”。
- 必须验证第一个解码数据值(见证版本)在 0 和 16 之间,包括 0 和 16。
- 将其余数据转换为字节:
. 将值转换为 5 位,最重要的位在前。
. 将这些位重新排列为 8 位一组。最后的任何不完整组必须是 4 位或更少,必须全为零,并被丢弃。
. 必须有 2 到 40 个组,它们被解释为见证程序的字节。
解码器应该对见证程序执行已知长度限制。
eg. BIP141 指定如果版本字节为 0,但见证 程序既不是 20 字节也不是 32 字节,则脚本必须失败。
由于之前的规则,地址的长度总是在 14 到 74 个字符之间,并且它们的长度模 8 不能是 0、3 或 5。版本 0 见证地址总是 42 或 62 个字符,但实现必须允许使用任何版本。
在将地址转换为 scriptPubkey 时,实现应特别小心,其中见证版本n存储为OP_n。OP_0 编码为 0x00,但 OP_1 到 OP_16 编码为 0x51 到 0x60(十进制为 81 到 96)。如果 bech32 地址被转换为不正确的 scriptPubKey,结果可能是无法使用或不安全。
3. 以P2WPKH地址为例
公钥为0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
step1. 计算HASH160(sha256+ripemd160)值
751e76e8199196d454941c45d1b3a323f1433bd6
step2. bech32编码
易读前缀“bc” + 版本 0 + HASH160值 bech32格式编码结果为
因此主网 P2WPKH为:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
其他格式(使用密钥 OP_CHECKSIG作为脚本)
- 测试网 P2WPKH:tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx
- 主网 P2WSH:bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3
- 测试网 P2WSH:tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7
以上是关于Bech32编码 隔离见证地址的主要内容,如果未能解决你的问题,请参考以下文章