Open Source Threshold Signature Libraries
Table of Contents
1. 简介
本文介绍一些开源的门限签名(Threshold Signature Scheme)库,以及它们所支持的特性。由于很多库一直在演进过程中,调查结论可能过时,请注意甄别。
2. Threshold ECDSA
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 |
一些 Two Parties ECDSA 库并没有在表格中列出,比如:
https://github.com/unboundsecurity/blockchain-crypto-mpc
https://github.com/okx/threshold-lib
3. Threshold Schnorr (Ed25519, Taproot)
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 |