该文章介绍了开源的门限签名(Threshold Signature Scheme)库,包括 ECDSA 和 Schnorr 两种签名算法的门限签名库,并列出了各个库所支持的特性,例如 HD 钱包、Resharing、审计情况、实现语言和 License 等,可以帮助开发者选择合适的密码学库。
Created: <2024-03-03 Sun>
Last updated: <2025-04-28 Mon>
本文介绍一些开源的门限签名(Threshold Signature Scheme)库,以及它们所支持的特性。由于很多库一直在演进过程中,调查结论可能过时,请注意甄别。
ECDSA 签名在区块链应用非常广泛,比如 Bitcoin 和 Ethereum 都使用它进行签名。表 1 中列出一些开源的 ECDSA 门限签名库,以及这些库所支持的一些特性。
开发者 | 库 | 实现论文 | 支持 HD Wallets (BIP32) | 支持 Resharing | 是否审计 | 实现语言 | License | 说明 |
---|---|---|---|---|---|---|---|---|
ZenGo | multi-party-ecdsa | GG18/GG20 | 有 fork 库支持 | ❌ | ✅ | Rust | GPL-3.0 | 官方明确说已不再维护,没有 Range Proof |
Coinbase | kryptology | GG20/DKLS | ❌ | ❌ | ✅ | Golang | Apache-2.0 | 官方明确说已不再维护 |
Coinbase | cb-mpc | https://eprint.iacr.org/2018/987 | ✅(支持 HD,但和 BIP32 不兼容) | ❌ | ✅ | C++ | MIT License | |
Binance | tss-lib | GG18 | ✅(仅 Unhardened Derivation) | ✅ | ✅ | Golang | MIT License | |
THORChain | tss-lib | GG20 | ❌ | ✅ | ❌ | Golang | MIT License | fork 自 Binance 库 |
ING Bank | threshold-signatures | GG18 | ❌ | ✅ | ✅ | Rust | MIT License | 官方明确说已不再维护,实现了 Range Proof |
Taurus | multi-party-sig | CGGMP | ✅(仅 Unhardened Derivation) | ✅(但不支持 Dynamic Group) | ✅ | Golang | Apache-2.0 | 它自己没审计,但它的 fork 库提交了审计 |
SwingBy Protocol | tss-lib | GG20 | ✅(仅 Unhardened Derivation) | ✅ | ❌ | Golang | MIT License | fork 自 Binance 库 |
Axelar NetworkZcash | tofn | GG20 | ❌ | ❌ | ❌ | Rust | MIT or Apache-2.0 | 官方明确说已不再维护,其 GG20 代码已从 main 分支删除 |
LatticeX-Foundation | opentss | DMZ+21 | ❌ | ❌ | ❌ | Rust | GPL-3.0 | |
neucrypt (Jack Doerner) | mpecdsa | DKLS19 | ❌ | ❌ | ❌ | Rust | BSD 3-Clause License | |
Safeheron | multi-party-sig-cpp | GG18/GG20/CMP | ❌ | ✅(但不支持 Dynamic Group) | ✅ | C++ | 不能商用 | |
AMIS | alice | GG18/GG20/CCLST/CGGMP | ✅(仅 2-party Hardened Derivation) | ✅(但不支持 Dynamic Group) | ✅ | Golang | Apache-2.0 | 属于 Hierarchical TSS |
Fireblocks | mpc-lib | CMP/CGGMP | ❌ | ✅(但不支持 Dynamic Group) | ✅ | C++ | GPL-3.0 | |
Dfns | cggmp21 | CGGMP | ✅(仅 Unhardened Derivation) | ✅(但不支持 Dynamic Group) | ✅ | Rust | MIT or Apache-2.0 |
Table 1: Multi-Party Threshold ECDSA Libraries
一些 Two Parties ECDSA 库并没有在表格中列出,比如:
https://github.com/unboundsecurity/blockchain-crypto-mpc
https://github.com/okx/threshold-lib
Schnorr 签名在区块链中也有广泛应用,Bitcoin 的 Taproot 就是一种 Schnorr 签名。此外,Schnorr 签名的变种 EdDSA(Ed25519)被 Solana/Cardano/Stellar/Near/Algorand/Tezos/Sui/Aptos 等采用。表 2 中列出一些开源的 Schnorr 门限签名库,以及这些库所支持的一些特性。
开发者 | 库 | 实现论文 | 支持 Ed25519 | 支持 Taproot (BIP340) | 支持 HD Wallets (BIP32) | 支持 Resharing | 是否审计 | 实现语言 | License | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
ZenGo | multi-party-eddsa | Stinson and Strobl 2001 | ✅ | ❌ | ❌ | ❌ | ❌ | Rust | GPL-3.0 | |
Coinbase | kryptology | FROST | ✅ | ❌ | ❌ | ❌ | ✅ | Golang | Apache-2.0 | 官方明确说已不再维护 |
Coinbase | cb-mpc | https://ia.cr/2022/374 | ✅ | ❌ | ❌ | ❌ | ✅ | C++ | MIT License | |
Binance | tss-lib | 内部文档 | ✅ | ❌ | ❌ | ✅ | ✅ | Golang | MIT License | 仅 ECDSA 门限模块支持 BIP32 |
Taurus | frost-ed25519 | FROST | ✅ | ❌ | ❌ | ❌ | ❌ | Golang | Apache-2.0 | |
Taurus | multi-party-sig | FROST | ❌ | ✅ | ✅(仅 Unhardened Derivation) | ✅(但不支持 Dynamic Group) | ✅ | Golang | Apache-2.0 | 它自己没审计,但它的 fork 库提交了审计 |
Serai DEX | frost | FROST | ✅ | ✅ | ❌ | ❌ | ✅ | Rust | MIT or AGPL-3.0 | |
Zcash | frost | FROST | ✅ | ✅(在 PR 中支持的) | ❌ | ❌ | ✅ | Rust | MIT or Apache 2.0 | |
AMIS | alice | FROST | ✅ | ✅ | ✅(仅 2-party Hardened Derivation) | ✅(但不支持 Dynamic Group) | ✅ | Golang | Apache-2.0 | |
bancaditalia | secp256k1-frost | FROST | ❌ | ✅ | ❌ | ❌ | ❌ | C | MIT License |
Table 2: Multi-Party Threshold Schnorr Libraries
- 本文转载自: aandds.com/blog/open-sou... , 如有侵权请联系管理员删除。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!