P2PK
: Pay To Public Key, 意为支付到公钥。锁定脚本中包含交易接收者的原始公钥。
锁定脚本
P2PK
锁定脚本的操作码模板:
<OP_PUSHBYTES_33 | OP_PUSHBYTES_65> <原始公钥> OP_CHECKSIG
- 当交易接收者的原始公钥是压缩公钥时, 大小是 33 字节, 使用
OP_PUSHBYTES_33
操作码 - 当交易接收者的原始公钥是未压缩公钥时, 大小是 65 字节, 使用
OP_PUSHBYTES_65
操作码
以下是一个 P2PK
锁定脚本的示例:
0412135fcb9afbfefff40fb2e5d1f730b7b6ca871f1376b8571211285fec4682c994da12effec22d725d591c8f8c92c742c2e4951c5dafc307ff08dbadcff17be4OP_CHECKSIG
交易ID: 5ef5c50300a067545a647d48b194fa8f18e8d268636055a3c14fc0975940411e(Output 0)
解锁脚本
要解锁 P2PK 锁定脚本, 只需提供交易的签名:
3045022100c7d8d9a8bda958cad2b2dff50bde4685233cbad0b53c9f41d31a165118d4540202206981e98bb7e2cf86691d7d5e7406e822b4ead9dc817d80fe5f7563448815e91d01
脚本执行
脚本运行时, ScriptSig
和 ScriptPubKey
依次被执行。
OP_CHECKSIG
会从执行栈中弹出两个元素, 依次为公钥和签名数据, 然后验证签名是否有效, 有效则将 OP_1
入栈, 否则将 OP_0
入栈。
脚本执行模拟
模拟脚本在栈中的执行过程
原始交易数据
交易输入
解锁脚本
锁定脚本
Stack
P2PK 是最初的比特币交易脚本, 但由于公钥的泄露风险, 目前已经不再推荐使用。