如何编程构建 bitcoin 交易
第一部分介绍了交易构建的基础知识,如从目标地址创建输出和收集所需的输入价值。最复杂的部分是构建输入签名的消息。现在我们已经有了一个,我们将生成一个签名,最终生成交易输入的脚本。最后一步是将所有内容打包在一起。
作为 ex-tx-build.c 的结果,为我们的输入构建了可签名的消息。在 ex-tx-sign.c 中,我们将重复使用该消息作为起点。
与其签署消息本身,我们将签署其 hash256 摘要:
62 44 98 0f a0 75 2e 5b
46 43 ed b3 53 fd a5 23
8a 9a 3d 44 49 16 76 78
8e fd d2 5d d6 48 55 ba
使用我们的 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
这是我得到的一个 DER 签名(你的将会有所不同):
30 44 02 20 11 1a 48 2a
ba 6a fb a1 2a 6f 27 de
76 7d d4 d0 64 17 de f6
65 bd 10 0b c6 8c 42 84
5c 75 2a 8f 02 20 5e 86
f5 e0 54 b2 c6 ca c5 d6
63 66 4e 35 77 9f b0 34
38 7c 07 84 8b c7 72 44
42 ca cf 65 93 24
SIGHASH
标志(现在是 8 位)再次附加到签名上,与压缩的 ECDSA 公钥一起:
02
82 00 6e 93 98 a6 98 6e
da 61 fe 91 67 4c 3a 10
8c 39 94 75 bf 1e 73 8f
19 df c2 db 11 db 1d 28
最终,我们能够构建我们的 P2PKH 输入脚本:
47 30 44 02 20 11 1a 48
2a ba 6a fb a1 2a 6f 27
de 76 7d d4 d0 64 17 de
f6 65 bd 10 0b c6 8c 42
84 5c 75 2a 8f 02 20 5e
86 f5 e0 54 b2 c6 ca c5
d6 63 66 4e 35 77 9f b0
34 38 7c 07 84 8b c7 72
44 42 ca cf 65 93 24 01
21 02 82 00 6e 93 98 a6
98 6e da 61 fe 91 67 4c
3a 10 8c 39 94 75 bf 1e
73 8f 19 df c2 db 11 db
1d 28
是的,签名过程可能是我们工作中最令人讨厌和容易出错的部分。
我们已经准备好从我们的输入和输出中打包交易。让我们看看 ex-tx-pack.c。
就像我为输出所做的那样,我还在 tx.h 中编写了一个用于创建 P2PKH 输入的 C 宏。该宏接受 UTXO 输出点、签名、公钥和SIGHASH
标志:
void bbp_txin_create_p2pkh(bbp_txin_t *txin, const bbp_outpoint_t *outpoint,
const char *sig, const char *pub, b...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!