理解比特币的网络及地址生成
终于,我们准备好将 ECDSA 密钥带入真实的区块链世界。本文将描述我们用来发送和接收比特币的区块链对象,即密钥和地址。最终,你将能够生成最基本的比特币钱包。
到目前为止,你已经阅读了大量的加密代码来生成 ECDSA 密钥对和签名。在系列结束时,你将看到私钥在交易签名中的作用。与此同时,你只需要知道如何将私钥序列化为钱包软件能够理解的格式。
到目前为止,你应该熟悉我们的示例私钥 :
16 26 07 83 e4 0b 16 73
16 73 62 2a c8 a5 b0 45
fc 3e a4 af 70 f7 27 f3
f9 e9 2b dd 3a 1d dc 42
我们的下一个目标是将此私钥转换为 WIF。
Wallet Import Format(WIF)是 Base58Check 编码的第一个示例。给定以下表格:
版本 | ||
---|---|---|
主网 | 80 |
|
测试网3(Testnet3) | ef |
我们按照以下方式生成私钥的 WIF 表示:
80
或为 测试网3添加 ef
。01
。查看我们示例密钥编码为 WIF:
/* 1(测试网3版本) */
ef
16 26 07 83 e4 0b 16 73
16 73 62 2a c8 a5 b0 45
fc 3e a4 af 70 f7 27 f3
f9 e9 2b dd 3a 1d dc 42
/* 2(是,对于压缩的公钥) */
ef
16 26 07 83 e4 0b 16 73
16 73 62 2a c8 a5 b0 45
fc 3e a4 af 70 f7 27 f3
f9 e9 2b dd 3a 1d dc 42
01
/* 3.1(步骤 2 的 hash256) */
35 06 7f 25 1e 07 d0 2b
59 ca f4 cc 77 36 20 7d
73 0d 21 88 f9 62 8f 47
a9 2a 1a 92 7d 33 7b 2a
/* 3.2(4 字节校验和) */
35 06 7f 25
/* 3.3(将校验和附加到步骤 2) */
ef
16 26 07 83 e4 0b 16 73
16 73 62 2a c8 a5 b0 45
fc 3e a4 af 70 f7 27 f3
f9 e9 2b dd 3a 1d dc 42
01
35 06 7f 25
/* 3.4(编码为 Base58) */
cNKkmrwHuShs2mvkVEKfXULxXhxRo3yy1cK6sq62uBp2Pc8Lsa76
查看 ex-wif.c 以查看代码中的转换。
最终输出是 测试网3网络的有效 WIF 密钥。相反,通过解码 Base58 并取版本字节之后的 32 字节,可以从 WIF 中解析出 ECDSA 密钥。请注意步骤 2,我们必须事先知道是否打算使用压缩的公钥,因为转换形式会影响我们将从私钥生成的地址(请阅读下一段)。
WIF 私钥包括:
01
。因此,最多占用 38 字节。
如果你曾经发送或接收比特币,你至少应该认识交易参数中...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!