Open Source Threshold Signature Libraries
Table of Contents
1. 简介
本文介绍一些开源的门限签名(Threshold Signature Scheme)库,以及它们所支持的特性。
2. Threshold ECDSA
ECDSA 签名在区块链应用非常广泛,比如 Bitcoin 和 Ethereum 都使用它进行签名。表 1 中列出一些开源的 ECDSA 门限签名库,以及这些库所支持的一些特性。
开发者 | 库 | 实现论文 | 支持 BIP32 | 支持 Resharing | 是否审计 | 实现语言 | License | 说明 |
---|---|---|---|---|---|---|---|---|
ZenGo | multi-party-ecdsa | GG18/GG20 | 有 fork 库支持 | ❌ | ✅ | Rust | GPL-3.0 | 官方明确说已不再维护,没有 Range Proof |
Coinbase | kryptology | GG20/DKLS | ❌ | ❌ | ✅ | Golang | Apache-2.0 | 官方明确说已不再维护 |
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) | 支持 BIP32 | 支持 Resharing | 是否审计 | 实现语言 | License | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
ZenGo | multi-party-eddsa | Stinson and Strobl 2001 | ✅ | ❌ | ❌ | ❌ | ❌ | Rust | GPL-3.0 | |
Coinbase | kryptology | FROST | ✅ | ❌ | ❌ | ❌ | ✅ | Golang | Apache-2.0 | 官方明确说已不再维护 |
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,但目前未 Merge) | ❌ | ❌ | ✅ | 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 |