P2SH 地址格式
P2SH,支付至腳本雜湊,是比特幣中用於複雜條件鎖定的一種交易輸出格式,屬於傳統地址格式之一,以 Base58Check 編碼表示,地址以 3 為開頭。

P2SH,Pay-to-Script-Hash,支付至腳本雜湊,是比特幣中用於複雜條件鎖定的一種交易輸出格式,屬於傳統地址格式之一,以 Base58Check 編碼表示,地址以 3 為開頭。
P2SH 的核心概念是不直接在鎖定輸出中寫入完整腳本內容,而是將一段花費條件 Script 的雜湊值寫入鏈上,實際執行條件則在未來花費時才揭露。
其目標是讓多重簽名、複雜腳本等條件可以隱藏細節、簡化輸出、降低使用成本,同時維持比特幣腳本系統的靈活性。
P2SH 基本概念
-
ScriptPubKey 交易輸出 在比特幣系統中,每一筆 UTXO 都包含一段 ScriptPubKey。 在 P2SH 中,ScriptPubKey 不再直接描述複雜的花費條件,而是只包含一個腳本雜湊值 ScriptHash。當未來有人花費這筆 UTXO 時,必須提供一段腳本 Redeem Script,其雜湊值需與 ScriptHash 相同,才能通過驗證。
-
基於 Script Hash 腳本雜湊 P2SH 的核心不是公鑰,而是整段腳本。這使得多重簽名腳本可以被壓縮成單一輸出,鏈上只顯示雜湊,不暴露實際條件提升腳本使用彈性與隱私性。
P2SH 運作方式
-
建立 Redeem Script 使用者先建立一段,如多重簽名、時間鎖定、複合邏輯腳本的完整花費條件,被稱為 Redeem Script。
-
進行 Hash160 計算 將 Redeem Script,依序放入 SHA-256 以及 RIPEMD-160 的雜湊函數中進行計算,此方式稱之為 Hash160,可得到一 20 位元組的 ScriptHash
RIPEMD-160(SHA-256(Redeem Script)) = ScriptHash
-
建立 ScriptPubKey 將 ScriptHash 放入標準鎖定腳本,該結構成為 UTXO 的鎖定條件。 OP_HASH160 <ScriptHash> OP_EQUAL = ScriptPubKey
-
加入版本號 在 ScriptHash 前加入版本號 Byte,在比特幣主網中 P2SH 版本號為 0x05。
-
計算 Base58Check 校驗碼 將版本號與 ScriptHash 組成 Data,用於防止地址輸入錯誤。 First4Bytes(SHA-256(SHA-256(Data))) = Checksum
-
產生 P2SH 地址 將原始資料與校驗碼拼接後進行 Base58 編碼,生成生成 P2SH 地址,通常以 3 開頭。
P2SH 應用
-
多重簽名錢包 P2SH 典型用途是多重簽名 Multisig 錢包,如 2-of-3 簽名結構。
-
複雜腳本封裝 用於時間鎖、條件支付、分層授權等進階腳本設計,使鏈上輸出保持簡潔。
-
SegWit 過渡封裝 P2SH 也可用於包裹 SegWit,如 P2SH-P2WPKH,作為向新地址格式過渡的兼容方案。
P2SH 相關 BIP
- BIP13:Address Format for Pay-to-Script-Hash
- BIP16:Pay to Script Hash
- BIP11:M-of-N Standard Transactions
- BIP65:OP_CHECKLOCKTIMEVERIFY
- BIP141:Segregated Witness (SegWit)

更多文章