3d9b8e30b3 | ||
---|---|---|
.github | ||
coordinator | ||
dkg | ||
participant | ||
trusted-dealer | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
Makefile.toml | ||
README.md | ||
codecov.yml |
README.md
Zcash Foundation FROST Demos
This will be part of a set of demos and a proof of concept application that uses the FROST libraries and reference implementation. The purpose of these demos is to:
- identify gaps in our documentation
- provide usage examples for developer facing documentation
- provide reference implementations for developers wanting to use FROST in a “real world” scenario.
This demo uses the (Ed25519, SHA-512) ciphersuite. The crate can be found here.
About FROST (Flexible Round-Optimised Schnorr Threshold signatures)
Unlike signatures in a single-party setting, threshold signatures require cooperation among a threshold number of signers, each holding a share of a common private key. The security of threshold schemes in general assume that an adversary can corrupt strictly fewer than a threshold number of participants.
Two-Round Threshold Schnorr Signatures with FROST presents a variant of a Flexible Round-Optimized Schnorr Threshold (FROST) signature scheme originally defined in FROST20. FROST reduces network overhead during threshold signing operations while employing a novel technique to protect against forgery attacks applicable to prior Schnorr-based threshold signature constructions. This variant of FROST requires two rounds to compute a signature, and implements signing efficiency improvements described by Schnorr21. Single-round signing with FROST is not implemented here.
Projects
This repo contains 4 projects:
Status ⚠
Trusted Dealer demo - WIP DKG demo - WIP Coordinator demo - WIP Participant demo - WIP
Usage
NOTE: This is for demo purposes only and should not be used in production.
You will need to have Rust and Cargo installed.
To run:
- Clone the repo. Run
git clone https://github.com/ZcashFoundation/frost-zcash-demo.git
- Run
cargo install
and in separate terminals:
3. Run cargo run --bin trusted-dealer
or cargo run --bin dkg
4. Run cargo run --bin coordinator
5. Run cargo run --bin participants
. Do this in separate terminals for separate participants.
Developer Information
Pre-commit checks
- Run
cargo make all
Coverage
Test coverage checks are performed in the pipeline. This is configured here: .github/workflows/coverage.yaml
To run these locally:
- Install coverage tool by running
cargo install cargo-llvm-cov
- Run
cargo make cov
(you may be asked if you want to installllvm-tools-preview
, if so typeY
)