UXTO解锁脚本的组成
、
比特币 UXTO输入中,解锁脚本的组成,并举例说明¶
在比特币的UTXO(未花费交易输出)模型中,解锁脚本(也称为“脚本签名”或scriptSig)是交易输入的一部分,用于证明该输入的所有者有权花费对应的UTXO。解锁脚本与UTXO中的锁定脚本(scriptPubKey)一起工作,通过满足锁定脚本的条件来解锁资金。
解锁脚本的组成¶
解锁脚本通常由以下部分组成,具体取决于交易类型和锁定脚本的要求: 1. 签名(Signature):由私钥生成的数字签名,用于证明交易发起者拥有对应的公钥和私钥。 2. 公钥(Public Key):与签名配对的公钥,用于验证签名的有效性。 3. 其他数据(可选):在某些复杂脚本(如多重签名或自定义脚本)中,可能包含额外的数据或多个签名。
在最常见的标准交易类型(如P2PKH,Pay-to-Public-Key-Hash)中,解锁脚本通常只包含签名和公钥。
P2PKH解锁脚本示例¶
假设有一个UTXO,其锁定脚本(scriptPubKey)为:
对应的解锁脚本(scriptSig)可能是:
<签名>:用私钥对交易数据签名的结果(通常是DER编码的ECDSA签名,后面附加一个字节的SIGHASH标志,例如01表示SIGHASH_ALL)。 - <公钥>:与私钥对应的椭圆曲线公钥(通常是压缩格式,33字节,以02或03开头;或未压缩格式,65字节,以04开头)。 具体例子¶
假设某个UTXO的锁定脚本是:
对应的解锁脚本可能是:Bash
- 3044022047ac8e878352d3ebbde1c94ce3a10d057c24175747116f8288e5d794d12d482f02207f8e8e5d794d12d482f47ac8e878352d3ebbde1c94ce3a10d057c24175747101 02f8e8e5d794d12d482f47ac8e878352d3ebbde1c94ce3a10d057c24175747116f
30440220...01:签名(70字节,DER编码,末尾01表示SIGHASH_ALL)。 - 02f8e8e...16f:压缩格式的公钥(33字节)。 执行过程¶
- 解锁脚本和锁定脚本拼接在一起执行。
- 比特币脚本引擎运行以下步骤:
<公钥>被复制(OP_DUP)。- 计算公钥的哈希(
OP_HASH160)。 - 与锁定脚本中的哈希值比较(
OP_EQUALVERIFY)。 - 用公钥验证签名(
OP_CHECKSIG)。 - 如果所有条件满足,UTXO被成功解锁。
其他类型¶
- P2PK(Pay-to-Public-Key):解锁脚本只包含
<签名>,因为锁定脚本直接验证公钥。 - P2SH(Pay-to-Script-Hash):解锁脚本包含签名和其他数据(如赎回脚本),具体取决于P2SH的内部逻辑。
希望这个解释和例子清楚地说明了比特币解锁脚本的组成!如果有进一步问题,欢迎提问。