Standards Track Final
BIP-11: M-of-N 標準交易
定義多重簽名交易的標準腳本格式。
Gavin Andresen 2011年10月18日
BIP 編號
11
類型
Standards Track
狀態
Final
創建日期
2011-10-18
摘要
BIP-11 定義了 M-of-N 多重簽名交易的標準腳本格式。這種交易需要 N 個公鑰中的 M 個 對應私鑰簽名才能花費,為資金管理提供了更高的安全性和靈活性。
動機
多重簽名交易解決了單一密鑰控制的多個問題:
安全性提升
單一密鑰遺失或被盜不會導致資金損失。例如 2-of-3 設置中, 即使一個密鑰被攻擊者獲取,資金仍然安全。
備份冗餘
2-of-3 設置允許遺失一個備份而不影響資金存取。 這對於長期儲存非常重要。
共同控制
多方必須同意才能移動資金,適用於公司財務、託管服務等場景。
技術規範
裸多簽腳本
BIP-11 定義的「裸」多簽腳本直接放在 scriptPubKey 中:
scriptPubKey 格式
OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG
M 和 N 是 OP_1 到 OP_16 之間的操作碼
scriptSig 格式(花費時)
OP_0 <sig1> <sig2> ... <sigM>
OP_0 是由於 OP_CHECKMULTISIG 的一個 bug,會消耗一個額外的堆疊元素
範例:2-of-3 多簽
scriptPubKey: OP_2 <pubkey_A> <pubkey_B> <pubkey_C> OP_3 OP_CHECKMULTISIG scriptSig(使用 A 和 B 簽名): OP_0 <signature_A> <signature_B> 驗證過程: 1. 推入 OP_0(dummy) 2. 推入 sig_A 和 sig_B 3. 推入 OP_2(需要 2 個簽名) 4. 推入三個公鑰 5. 推入 OP_3(共 3 個公鑰) 6. OP_CHECKMULTISIG 驗證
限制
| 限制 | 值 | 說明 |
|---|---|---|
| 最大公鑰數 | 3 | 標準交易限制,非共識規則 |
| 共識最大值 | 20 | OP_CHECKMULTISIG 的硬限制 |
| 腳本大小 | 520 bytes | 標準交易的最大腳本大小 |
與 P2SH 的關係
BIP-11 定義的裸多簽有幾個缺點:
- • 地址長:所有公鑰都在輸出中,無法用傳統地址表示
- • 費用高:輸出較大,發送方支付更多費用
- • 隱私差:多簽結構在鏈上公開可見
BIP-16(P2SH)解決了這些問題,允許將多簽腳本哈希為簡短地址。 現代多簽通常使用 P2SH 或 P2WSH 而非裸多簽。
裸多簽(BIP-11)
公鑰直接放在輸出中,無法使用地址,較少使用。
P2SH 多簽(推薦)
多簽腳本哈希為 3 開頭的地址,更短、更便宜、更私密。
常見配置
2-of-3 — 最常見,適合個人安全儲存和小型團隊
3-of-5 — 適合企業和機構,提供更多冗餘
2-of-2 — 用於託管和原子交換
1-of-N — 任一密鑰可花費,用於備份場景
總結
BIP-11 建立了多重簽名交易的基礎標準。雖然現代應用更多使用 P2SH 或 P2WSH 包裝的多簽, 但 BIP-11 定義的 OP_CHECKMULTISIG 操作碼仍然是所有多簽實現的核心。
延伸閱讀: 查看 GitHub 上的完整 BIP-11 文件
已複製連結