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>
驗證流程
- 計算 serialized-script 的 HASH160
- 驗證哈希值與 scriptPubKey 中的哈希匹配
- 將 serialized-script 反序列化並執行
- 驗證簽名是否有效
應用場景
- ✓ 多簽名錢包:2-of-3、3-of-5 等多簽配置
- ✓ 時間鎖合約:結合 CLTV/CSV 的複雜條件
- ✓ SegWit 嵌套:P2SH-P2WPKH 和 P2SH-P2WSH
- ✓ 原子交換:跨鏈交易的基礎
地址格式
P2SH 地址使用 Base58Check 編碼,版本前綴為 0x05:
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
安全考量
注意: P2SH 的安全性取決於 HASH160(RIPEMD160(SHA256))的抗碰撞性。 目前這被認為是安全的,但較新的標準(如 P2WSH)使用更長的哈希以提供更強的安全性。
相關 BIP
延伸閱讀: 查看 GitHub 上的完整 BIP-16 文件
已複製連結