当前位置:首页 > 交易所 > 正文内容

解锁比特币交易,理解P2PKH与P2SH脚本的奥秘

eeo2026-05-28 13:35:29交易所10
摘要:

比特币作为第一个去中心化的数字货币,其核心创新之一在于通过密码学和脚本系统实现了无需可信第三方的价值转移,在比特币交易中,“脚本”(Script)扮演着至关重要的角色,它定义了花费UTXO(未花费交易...

比特币作为第一个去中心化的数字货币,其核心创新之一在于通过密码学和脚本系统实现了无需可信第三方的价值转移,在比特币交易中,“脚本”(Script)扮演着至关重要的角色,它定义了花费UTXO(未花费交易输出)的条件,即证明交易发起人对该输出拥有所有权并有权支配其中的资金,比特币交易中最常见的两种脚本类型是P2PKH(Pay-to-Public-Key-Hash)P2SH(Pay-to-Script-Hash),它们共同构成了比特币交易安全与灵活性的基石。

什么是比特币脚本?

在深入探讨具体类型之前,我们先简单理解什么是比特币脚本,脚本是一小段指令集,嵌入在比特币交易中,用于验证交易的有效性,当一笔交易试图花费一个UTXO时,它必须提供满足该UTXO锁定脚本(ScriptPubKey)条件的解锁脚本(ScriptSig),脚本引擎会执行这些指令,如果所有条件都满足,交易则有效,资金得以转移。

比特币脚本的设计遵循“非图灵完备”原则,这意味着它没有循环、递归等复杂结构,从而有效防止了脚本执行时间过长导致的拒绝服务攻击,保证了网络的稳定性和安全性。

P2PKH(Pay-to-Public-Key-Hash):比特币的“标准”脚本

P2PKH是比特币网络中最基础、最广泛使用的脚本类型,几乎占据了早期所有交易的绝大部分,它的设计简洁明了,实现了“谁拥有私钥,谁就能花费资金”的核心逻辑。

结构组成:

  • 锁定脚本(ScriptPubKey - 锁定资金):

    • OP_DUP:复制栈顶元素。
    • OP_HASH160:对栈顶元素(公钥)进行SHA-256哈希,再进行RIPEMD-160哈希。
    • <PubKeyHash>:接收方的公钥哈希(20字节)。
    • OP_EQUALVERIFY:验证栈顶两个元素是否相等,并验证签名是否有效。
    • OP_CHECKSIG:验证签名是否有效,并验证公钥是否与签名匹配。
    • 简化表示:OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • 解锁脚本(ScriptSig - 解锁资金):

    • <Signature>:签名者(花费者)对交易数据的签名。
    • <PubKey>:签名者对应的公钥。
    • 简化表示:<Signature> <PubKey>

执行过程:

当一笔交易试图花费P2PKH的UTXO时:

  1. 解锁脚本(<Signature> <PubKey>)被压入执行栈。
  2. 锁定脚本(OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG)依次执行:
    • OP_DUP复制公钥。
    • OP_HASH160对复制的公钥进行哈希,得到PubKeyHash
    • 将栈中的PubKeyHash与锁定脚本中的<PubKeyHash>进行OP_EQUALVERIFY比较,若一致则继续,否则失败。
    • 最后OP_CHECKSIG使用解锁脚本中的<Signature><PubKey>验证签名的有效性。
  3. 如果所有验证通过,交易有效,资金成功转移。

优点:

  • 简单高效:脚本逻辑清晰,验证速度快,网络负担小。
  • 安全性高:基于非对称加密,安全性依赖于私钥的保密性。
  • 兼容性好:是比特币最早和最广泛支持的脚本类型。

P2SH(Pay-to-Script-Hash):提升灵活性与隐私性

随着比特币生态系统的发展,人们需要更复杂的交易逻辑,例如多重签名、时间锁定等,如果直接将这些复杂逻辑写入锁定脚本,会导致交易体积增大,验证效率降低,并可能暴露用户的交易策略,P2SH应运而生,它将复杂脚本的验证责任从发送方转移到了接收方,并引入了“赎回脚本”(Redeem Script)的概念。

结构组成:

  • 锁定脚本(ScriptPubKey - 锁定资金):

    • OP_HASH160:对赎回脚本进行哈希。
    • <ScriptHash>:赎回脚本的RIPEMD-160哈希(20字节)。
    • OP_EQUAL:验证栈顶两个元素是否相等。
    • 简化表示:OP_HASH160 <ScriptHash> OP_EQUAL
  • 解锁脚本(ScriptSig - 解锁资金):

    • <RedeemScript>:满足赎回脚本条件的所有数据,包括签名、公钥等,以及赎回脚本本身。
    • 简化表示:<RedeemScript>

执行过程:

当一笔交易试图花费P2SH的UTXO时:

  1. 解锁脚本(<RedeemScript>)被压入执行栈。
  2. 锁定脚本(OP_HASH160 <ScriptHash> OP_EQUAL)执行:
    • OP_HASH160对栈中的<RedeemScript>进行哈希,得到ScriptHash
    • 将该ScriptHash与锁定脚本中的<ScriptHash>进行OP_EQUAL比较,若一致则继续,否则失败。
  3. 如果OP_EQUAL验证通过,脚本引擎会进一步执行<RedeemScript>,验证其内部条件是否满足(例如多重签名的签名数量是否足够)。
  4. 如果所有条件(包括ScriptHash匹配和RedeemScript内部逻辑)都满足,交易有效。

优点:

  • 降低交易体积:发送方只需知道赎回脚本的哈希,无需关心其复杂内容,从而减少了交易大小。
  • 提升隐私性:接收方的复杂赎回逻辑(如多重签名方案)对发送方部分隐藏。
  • 支持复杂逻辑:使得多重签名、时间锁定等更复杂的合约得以实现,拓展了比特币的应用场景。

缺点:

  • 安全性风险:早期P2SH实现存在“重放攻击”风险,后来通过“CHECKSIGADD”等操作码和“标准交易规则”得以缓解。
  • 验证复杂性:虽然发送方简化,但接收方需要提供完整的赎回脚本并进行验证,对钱包节点的要求更高。

P2PKH与P2SH的对比与演进

特性 P2PKH (Pay-to-Public-Key-Hash) P2SH (Pay-to-Script-Hash)
锁定脚本 OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG OP_HASH160 <ScriptHash> OP_EQUAL
解锁脚本 <Signature> <PubKey> <RedeemScript>
核心逻辑 验证公钥与签名的匹配 验证解锁脚本是否与预设脚本哈希匹配,并执行解锁脚本内部逻辑
主要用途 标准单签名交易 多重签名、复杂合约、自定义脚本
交易体积 较小 通常比P2PKH小(因复杂逻辑被哈希)
隐私性 较低(公钥在交易中可见) 较高(复杂逻辑对发送方隐藏)
安全性 高(基础非对称加密) 较高,但需正确实现赎回脚本

随着比特币的发展,为了进一步支持更复杂和高效的脚本,如隔离见证(SegWit)中的P2WPKH(Pay-to-Witness-Public-Key-Hash)和P2WSH(Pay-to-Witness-Script-Hash),以及更灵活的Taproot(SIGHASH_ANYPREVOUTREHASH等),脚本系统仍在不断演进,P2PKH和P2SH作为比特币脚本系统的基石,其设计思想和实现方式至今仍深刻影响着比特币的交易生态。

P2PKH和P2SH是比特币交易中两种至关重要的脚本类型,P2PKH以其简洁高效的特点,成为比特币最基础的单签名交易方式;而P2SH则通过引入赎回脚本哈希,巧妙地解决了复杂脚本带来的交易体积和隐私问题,为比特币支持更丰富的应用场景(如多重签名)铺平了道路,理解这两种脚本的原理、结构和执行过程,对于深入理解比特币的交易机制、安全模型以及未来发展具有重要意义,它们共同体现了比特币在设计上对安全性、效率和灵活性的不懈追求。

    币安交易所

    币安交易所是国际领先的数字货币交易平台,低手续费与BNB空投福利不断!

扫描二维码推送至手机访问。

版权声明:本文由e-eo发布,如需转载请注明出处。

本文链接:http://www.e-eo.com/post/28981.html

分享给朋友: