Schnorr 簽名與 Taproot 資源
Schnorr Signature & Taproot Resources
最後更新:2025年
目錄
Taproot 升級概述
Taproot 是比特幣自 SegWit 以來最重大的升級,於 2021 年 11 月(區塊高度 709,632)正式啟用。此升級包含三個 BIP,引入 Schnorr 簽名、MAST(Merklized Alternative Script Trees)和 Tapscript。
主要改進
| 特性 | 描述 |
|---|---|
| Schnorr 簽名 | 取代 ECDSA,更高效的簽名方案 |
| 簽名聚合 | 多個簽名可聚合為單一簽名 |
| 隱私提升 | 複雜腳本看起來像普通支付 |
| 腳本彈性 | Tapscript 支援未來升級 |
採用狀態
- Taproot 採用追蹤 - 即時採用統計
- Bitcoin Optech: Taproot - 技術追蹤
BIP 規範
核心 BIP
- BIP 340: Schnorr Signatures for secp256k1
- 定義比特幣使用的 Schnorr 簽名格式
- 64 字節簽名(比 ECDSA 的 71-72 字節更短)
- 批量驗證支援
- BIP 341: Taproot
- 定義 Taproot 輸出格式(P2TR)
- MAST 結構允許隱藏未執行的腳本分支
- Key path 和 Script path 兩種花費方式
- BIP 342: Tapscript
- 更新的腳本驗證規則
- 新增 OP_CHECKSIGADD
- 為未來升級預留空間
延伸閱讀
Schnorr 簽名
基本概念
Schnorr 簽名是由 Claus Schnorr 於 1989 年發明的數位簽名方案。其專利於 2008 年到期,使得比特幣得以採用。
優點:
- 線性性:支援簽名聚合
- 更短的簽名(64 字節)
- 批量驗證更高效
- 數學上可證明安全
技術資源
- Schnorr Signatures: An Overview - 概述
- Bitcoin Q&A: Schnorr signatures and the privacy roadmap - Andreas Antonopoulos 講解
- Schnorr Signatures & The Inevitability of Privacy in Bitcoin
論文
- Schnorr Non-interactive Zero-Knowledge Proof (RFC 8235) - NIZK 標準
- Efficient Identification and Signatures for Smart Cards - 原始論文
- On the Exact Security of Schnorr-Type Signatures - 安全性分析
MuSig 多重簽名
MuSig 協議演進
| 版本 | 特點 | 狀態 |
|---|---|---|
| MuSig | 三輪互動式簽名 | 已棄用 |
| MuSig2 | 兩輪互動式簽名 | 推薦使用 |
| MuSig-DN | 確定性 nonce | 研究中 |
資源
- BIP 327: MuSig2 - MuSig2 規範
- Bitcoin Optech: MuSig - 技術追蹤
- MuSig2 Paper - 學術論文
- Blockstream MuSig Demo
應用場景
- 多重簽名錢包(n-of-n 看起來像單簽名)
- 閃電網路通道(2-of-2 多簽)
- 冷錢包共同託管
相關技術
FROST(閾值簽名)
- FROST Paper - Flexible Round-Optimized Schnorr Threshold Signatures
- Bitcoin Optech: FROST - 技術追蹤
- 支援 t-of-n 閾值簽名(任意 t 個參與者可簽名)
Adaptor Signatures
- Bitcoin Optech: Adaptor Signatures - 技術概述
- 無腳本腳本(Scriptless Scripts)
- 跨鏈原子交換
- 閃電網路 PTLCs
Cross-Input Signature Aggregation (CISA)
- CISA 提案 - 跨輸入簽名聚合
- 進一步減少交易大小
- 需要軟分叉啟用
開發資源
函式庫
- libsecp256k1 - Bitcoin Core 使用的橢圓曲線庫
- 包含 Schnorr 模組
- C 語言實現
- secp256k1-zkp - Blockstream 擴展版
- MuSig2 實現
- Adaptor Signatures
- rust-secp256k1 - Rust 封裝
錢包支援
支援 Taproot (P2TR) 的錢包:
| 錢包 | 類型 | Taproot 支援 |
|---|---|---|
| Bitcoin Core | 全節點 | 完整支援 |
| Sparrow | 桌面 | 完整支援 |
| BlueWallet | 行動 | 接收支援 |
| Ledger | 硬體 | 完整支援 |
| Trezor | 硬體 | 完整支援 |
測試資源
- Signet - 測試網路
- Taproot 測試地址生成器
學習資源
技術文章
- Pieter Wuille’s Taproot Workshop - 官方工作坊
- Bitcoin Optech Taproot 準備指南 - 系列文章
- Taproot Is Coming: What It Is, And How It Will Benefit Bitcoin
影片
- Bitcoin Q&A: Schnorr signatures - Andreas Antonopoulos
- Taproot Explained - Stephan Livera Podcast
中文資源
未來展望
正在討論的提案
- OP_CAT - 重新啟用字串連接
- OP_CTV (BIP 119) - CHECKTEMPLATEVERIFY
- SIGHASH_ANYPREVOUT - 新的簽名哈希類型
潛在應用
- 更高效的 Vaults(金庫)
- 改進的 Covenants(限制條款)
- 更好的閃電網路通道
- 去中心化身份驗證