Introduction
This repo is inspired by alice, tss-lib, cggmp21 and multi-party-sig.
This repo is a Go implementation of multi-party {t,n}-threshold ECDSA (Elliptic Curve Digital Signature Algorithm) based on CGGMP21 and EdDSA (Edwards-curve Digital Signature Algorithm) based on FROST.
CGGMP21 is a state-of-art ECDSA TSS protocol that supports 1-round signing (requires preprocessing), identifiable abort, provides two signing protocols (3+1 and 5+1 rounds with different complexity of abort identification) and key refresh protocol out of the box.
For CGGMP21, this repo implements:
- Threshold (i.e., t-out-of-n) and non-threshold (i.e., n-out-of-n) key generation
- (3+1)-round general threshold and non-threshold signing
- Auxiliary info generation protocol
- HD-wallets support based on slip10 standard (compatible with bip32)
This repo does not (currently) support:
- Key refresh
- Identifiable abort
- The (5+1)-round signing protocol
FROST is a state-of-art EdDSA TSS protocol that can be used as either a two-round protocol, or optimized to a single-round signing protocol with a pre-processing stage.
For FROST, this repo implements:
- (1+1)-round general threshold and non-threshold signing
- HD-wallets support based on slip10 standard (compatible with bip32)