Preloader Close

比特币地址生成原理:从私钥到收款地址

1. 生成私钥

随机生成:

私钥通常是一个256位的随机数。私钥的随机性和保密性是安全的基础。

2. 生成公钥

椭圆曲线算法(ECDSA):

利用比特币采用的 secp256k1 椭圆曲线,将私钥与基点(G)进行椭圆曲线乘法,生成对应的公钥。

公钥格式:

公钥可以采用未压缩(65字节,前缀为 0x04)或压缩格式(33字节,前缀为 0x02 或 0x03,取决于 y 坐标的奇偶性)。

3. 生成公钥哈希

SHA-256 哈希:

对生成的公钥进行 SHA-256 运算,得到一个256位的哈希值。

RIPEMD-160 哈希:

再对 SHA-256 的结果使用 RIPEMD-160 算法,生成一个160位(20字节)的公钥哈希(也称为 Hash160)。

4. 添加版本前缀

版本字节:

对于传统的比特币地址(P2PKH地址),在公钥哈希前加上版本字节(主网为 0x00),以便区分不同网络和地址类型。

image.png

5. 计算校验和

双重 SHA-256:

将版本字节与公钥哈希组合后的数据,先进行一次 SHA-256 运算,再对结果进行第二次 SHA-256 运算。

截取前4字节:

取双重 SHA-256 的前4个字节作为校验和,确保地址在传输过程中未被篡改。

6. Base58Check 编码

组合数据:

将版本字节 + 公钥哈希 + 校验和组合成一个完整的数据串。

Base58Check 编码:

对该数据串进行 Base58Check 编码,生成一个以数字和字母组成的地址字符串。

地址特征:

对于主网 P2PKH 地址,通常以“1”开头;其他类型地址如 P2SH 或 Bech32 则有不同的前缀。


总结

从私钥到比特币地址的整个流程可以概括为:

随机生成私钥;

利用椭圆曲线算法生成公钥;

对公钥先后进行 SHA-256 和 RIPEMD-160 哈希,得到公钥哈希;

在公钥哈希前添加版本字节,并计算校验和;

最后用 Base58Check 编码得到最终地址。


TAG: 比特币钱包地址 比特币钱包app下载地址 Bitcoin钱包私钥存储