GitHub
深入技术
P2PK

P2PK

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

解锁脚本

要解锁 P2PK 锁定脚本, 只需提供交易的签名:

3045022100c7d8d9a8bda958cad2b2dff50bde4685233cbad0b53c9f41d31a165118d4540202206981e98bb7e2cf86691d7d5e7406e822b4ead9dc817d80fe5f7563448815e91d01

脚本执行

脚本运行时, ScriptSigScriptPubKey 依次被执行。

OP_CHECKSIG 会从执行栈中弹出两个元素, 依次为公钥和签名数据, 然后验证签名是否有效, 有效则将 OP_1 入栈, 否则将 OP_0 入栈。

脚本执行模拟

模拟脚本在栈中的执行过程
原始交易数据
交易输入
解锁脚本
锁定脚本
Stack

P2PK 是最初的比特币交易脚本, 但由于公钥的泄露风险, 目前已经不再推荐使用。

Copyright © 2024 HeapUp