Open Source Threshold Signature Libraries

Table of Contents

1. 简介

本文介绍一些开源的门限签名(Threshold Signature Scheme)库,以及它们所支持的特性。

2. Threshold ECDSA

ECDSA 签名在区块链应用非常广泛,比如 Bitcoin 和 Ethereum 都使用它进行签名。表 1 中列出一些开源的 ECDSA 门限签名库,以及这些库所支持的一些特性。

Table 1: Multi-Party Threshold ECDSA Libraries
开发者 实现论文 支持 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  

一些 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 门限签名库,以及这些库所支持的一些特性。

Table 2: Multi-Party Threshold Schnorr Libraries
开发者 实现论文 支持 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  

Author: cig01

Created: <2024-03-03 Sun>

Last updated: <2024-03-10 Sun>

Creator: Emacs 27.1 (Org mode 9.4)