跳至主要內容
Standards Track Final

BIP-16: P2SH 腳本哈希支付

定義了 P2SH 輸出類型,允許將複雜腳本的哈希作為地址使用。

Gavin Andresen 2012年1月3日
BIP 編號

16

類型

Standards Track

狀態

Final

創建日期

2012-01-03

摘要

Pay to Script Hash (P2SH) 是一種腳本模式,允許將任意複雜的贖回條件壓縮為一個 20 字節的哈希值。 發送者只需要知道這個哈希值,而不需要了解完整的贖回腳本。P2SH 地址以數字 3 開頭。

動機

在 P2SH 之前,如果要使用多簽名錢包,發送者需要在交易中包含完整的多簽名腳本。 這意味著:

  • 發送者需要知道接收者的完整贖回腳本
  • 交易大小增加,手續費由發送者承擔
  • 無法使用簡單的地址格式

運作方式

鎖定腳本 (scriptPubKey)

OP_HASH160 <20-byte-hash> OP_EQUAL

解鎖腳本 (scriptSig)

<signatures...> <serialized-script>

驗證流程

  1. 計算 serialized-script 的 HASH160
  2. 驗證哈希值與 scriptPubKey 中的哈希匹配
  3. 將 serialized-script 反序列化並執行
  4. 驗證簽名是否有效

應用場景

  • 多簽名錢包:2-of-3、3-of-5 等多簽配置
  • 時間鎖合約:結合 CLTV/CSV 的複雜條件
  • SegWit 嵌套:P2SH-P2WPKH 和 P2SH-P2WSH
  • 原子交換:跨鏈交易的基礎

地址格式

P2SH 地址使用 Base58Check 編碼,版本前綴為 0x05

3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

安全考量

注意: P2SH 的安全性取決於 HASH160(RIPEMD160(SHA256))的抗碰撞性。 目前這被認為是安全的,但較新的標準(如 P2WSH)使用更長的哈希以提供更強的安全性。

相關 BIP

  • BIP-13:P2SH 地址格式
  • BIP-141:SegWit(引入 P2WSH)
  • BIP-65:OP_CHECKLOCKTIMEVERIFY
已複製連結
已複製到剪貼簿