Go to file
dependabot[bot] 7c4c7ad052
Bump clap from 4.4.9 to 4.4.11 (#96)
Bumps [clap](https://github.com/clap-rs/clap) from 4.4.9 to 4.4.11.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.4.9...v4.4.11)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-08 11:35:53 -03:00
.github Bump actions/checkout from 4.1.0 to 4.1.1 (#93) 2023-11-22 11:00:57 -03:00
coordinator Bump clap from 4.4.9 to 4.4.11 (#96) 2023-12-08 11:35:53 -03:00
dkg Add initial implementation of socket communications to the demo (phase 1) - Coordinator (#89) 2023-11-21 14:56:29 +00:00
participant Add initial implementation of socket communications to the demo (phase 1) - Coordinator (#89) 2023-11-21 14:56:29 +00:00
tests Add initial implementation of socket communications to the demo (phase 1) - Coordinator (#89) 2023-11-21 14:56:29 +00:00
trusted-dealer Add initial implementation of socket communications to the demo (phase 1) - Coordinator (#89) 2023-11-21 14:56:29 +00:00
.gitignore Add Participant project (#15) 2023-06-15 13:23:37 -03:00
Cargo.lock Bump clap from 4.4.9 to 4.4.11 (#96) 2023-12-08 11:35:53 -03:00
Cargo.toml point to main reddsa 2023-10-06 11:57:25 -03:00
LICENSE-APACHE Print group public key (#283) 2023-04-17 11:01:27 +01:00
LICENSE-MIT Validate inputs (#283) 2023-04-11 13:56:23 +01:00
Makefile.toml Improve consistency of testing across projects (#76) 2023-09-27 13:27:01 -03:00
README.md Update READMEs (#54) (#71) 2023-08-21 19:01:16 -03:00
codecov.yml Add config for CI pipeline and code coverage 2023-04-25 13:30:31 +01:00

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:

  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.

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:

  1. Trusted Dealer
  2. DKG
  3. Coordinator
  4. Participant

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:

  1. Clone the repo. Run git clone https://github.com/ZcashFoundation/frost-zcash-demo.git
  2. 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

  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)