# Zcash Foundation FROST Demos TODO 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: 1. identify gaps in our documentation 2. provide usage examples for developer facing documentation 3. 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](https://crates.io/crates/frost-ed25519). ## 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](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/) presents a variant of a Flexible Round-Optimized Schnorr Threshold (FROST) signature scheme originally defined in [FROST20](https://eprint.iacr.org/2020/852.pdf). 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](https://eprint.iacr.org/2021/1375.pdf). Single-round signing with FROST is not implemented here. ## Status ⚠ TODO ## Usage NOTE: This is for demo purposes only and should not be used in production. You will need to have [Rust and Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) installed. To run: 1. Clone the repo. Run `git clone https://github.com/ZcashFoundation/frost-zcash-demo.git` 2. Run `cargo install` 3. Run `cargo run` ## Developer information TODO ### Pre-commit checks 1. 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: 1. Install coverage tool by running `cargo install cargo-llvm-cov` 2. Run `cargo make cov` (you may be asked if you want to install `llvm-tools-preview`, if so type `Y`)