比特币脚本与 UTXO 签名验证
跟踪支付到公钥哈希(P2PKH)脚本和 ECDSA 签名
比特币脚本与 UTXO 签名验证 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
UTXO 模型
比特币使用未花费交易输出(UTXO)。每个 UTXO 都是一枚带有锁定脚本(scriptPubKey)的币。要花费它,花费方必须提供满足该锁定脚本的解锁脚本(scriptSig)。UTXO 具有原子性——要么已花费,要么未花费,绝不会只花费一部分。
比特币脚本
比特币脚本是一种基于栈且非图灵完备的语言。脚本通过压入数据并执行操作码来运行。没有循环,也没有递归——脚本始终会终止。这种有意的限制可以防止拒绝服务攻击,并使脚本验证的复杂度相对于脚本长度为 O(n)。
P2PKH:支付到公钥哈希
最常见的输出类型。scriptPubKey:OP_DUP OP_HASH160
P2PKH 执行跟踪
P2PKH 的栈跟踪:压入
比特币中的 ECDSA
比特币在 secp256k1 上使用 ECDSA(科布利兹曲线,y^2 = x^3 + 7 mod p)。私钥 d ∈ [1, n-1]。公钥 Q = d*G。Sign(m):k 为随机数;r = (k*G).x mod n;s = k^{-1}(H(m)+r*d) mod n。签名 = (r, s),并在 scriptSig 中使用 DER 编码。
SIGHASH 类型
比特币签名会对交易的特定部分作出承诺:SIGHASH_ALL(默认):签署所有输入和输出。SIGHASH_SINGLE:仅签署对应的输出。SIGHASH_NONE:不签署任何输出(有风险)。SIGHASH_ANYONECANPAY:仅签署自己的输入,从而支持协作交易。
P2SH:支付到脚本哈希
P2SH 允许将复杂的花费条件隐藏在哈希之后。scriptPubKey:OP_HASH160
多重签名(2-of-3)
redeemScript:OP_2
SegWit 与 P2WPKH
隔离见证(SegWit,BIP-141)将签名从 scriptSig 移到单独的见证字段中。它修复了交易延展性问题(如果 scriptSig 改变,ID 也会改变)。P2WPKH 的 scriptPubKey:OP_0 <20-byte pubKeyHash>。见证字段:[
Taproot(P2TR)
Taproot(BIP-340/341/342)使用 Schnorr 签名和默克尔化抽象语法树(MAST)。默认花费方式是单个 Schnorr 签名(与密钥路径花费无法区分)。复杂条件隐藏在默克尔树中,仅在使用时公开。这样兼顾了隐私性和效率。
代码中的脚本验证
Bitcoin Core 在栈解释器中验证脚本。CheckSig 调用 VerifyScript,后者运行合并后的 scriptSig+scriptPubKey。对于每个 CHECKSIG 操作码,它都会调用 CheckECDSASignature,使用 secp256k1 根据交易哈希验证 DER 编码的 (r,s)。
快速检查
OP_CHECKSIG 在 P2PKH 脚本中验证什么?
回顾
UTXO 使用基于栈的比特币脚本。P2PKH 是最常见的花费模式:先对公钥进行哈希验证,再检查 ECDSA 签名。SegWit 修复了延展性问题;Taproot 增加了 Schnorr 和 MAST。下一节:差分密码分析。
用 AI 导师学习 Cryptology Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 67
- 课程
- 261
常见问题解答
「比特币脚本与 UTXO 签名验证」课时是免费的吗?
是的 — 「比特币脚本与 UTXO 签名验证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「比特币脚本与 UTXO 签名验证」这节课中我会学到什么?
跟踪支付到公钥哈希(P2PKH)脚本和 ECDSA 签名 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「比特币脚本与 UTXO 签名验证」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 哈希链与区块链接
- Merkle 树:大规模交易完整性
- 工作量证明:挖矿与难度调整
- 比特币脚本与 UTXO 签名验证