update README, move dev info to book (#554)
This commit is contained in:
parent
b37bde0d2a
commit
5cd7964a54
44
README.md
44
README.md
|
@ -1,5 +1,17 @@
|
||||||
# ZF FROST (Flexible Round-Optimised Schnorr Threshold signatures)
|
# ZF FROST (Flexible Round-Optimised Schnorr Threshold signatures)
|
||||||
|
|
||||||
|
[![CI](https://github.com/ZcashFoundation/frost/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/ZcashFoundation/frost/actions/workflows/main.yml)
|
||||||
|
|
||||||
|
| Crate | | Crates.io | Documentation |
|
||||||
|
| ---------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||||||
|
| Generic FROST implementation | [`frost-core`] | [![crates.io](https://img.shields.io/crates/v/frost-core.svg)](https://crates.io/crates/frost-core) | [![Documentation](https://docs.rs/frost-core/badge.svg)](https://docs.rs/frost-core) |
|
||||||
|
| Ristretto255 ciphersuite | [`frost-ristretto255`] | [![crates.io](https://img.shields.io/crates/v/frost-ristretto255.svg)](https://crates.io/crates/frost-ristretto255) | [![Documentation](https://docs.rs/frost-ristretto255/badge.svg)](https://docs.rs/frost-ristretto255) |
|
||||||
|
| Ed25519 ciphersuite | [`frost-ed25519`] | [![crates.io](https://img.shields.io/crates/v/frost-ed25519.svg)](https://crates.io/crates/frost-ed25519) | [![Documentation](https://docs.rs/frost-ed25519/badge.svg)](https://docs.rs/frost-ed25519) |
|
||||||
|
| Ed448 ciphersuite | [`frost-ed448`] | [![crates.io](https://img.shields.io/crates/v/frost-ed448.svg)](https://crates.io/crates/frost-ed448) | [![Documentation](https://docs.rs/frost-ed448/badge.svg)](https://docs.rs/frost-ed448) |
|
||||||
|
| P-256 ciphersuite | [`frost-p256`] | [![crates.io](https://img.shields.io/crates/v/frost-p256.svg)](https://crates.io/crates/frost-p256) | [![Documentation](https://docs.rs/frost-p256/badge.svg)](https://docs.rs/frost-p256) |
|
||||||
|
| secp256k1 ciphersuite | [`frost-secp256k1`] | [![crates.io](https://img.shields.io/crates/v/frost-secp256k1.svg)](https://crates.io/crates/frost-secp256k1) | [![Documentation](https://docs.rs/frost-secp256k1/badge.svg)](https://docs.rs/frost-secp256k1) |
|
||||||
|
| Generic Re-randomized FROST | [`frost-rerandomized`] | [![crates.io](https://img.shields.io/crates/v/frost-rerandomized.svg)](https://crates.io/crates/frost-rerandomized) | [![Documentation](https://docs.rs/frost-rerandomized/badge.svg)](https://docs.rs/frost-rerandomized) |
|
||||||
|
|
||||||
Rust implementations of ['Two-Round Threshold Schnorr Signatures with FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/).
|
Rust implementations of ['Two-Round Threshold Schnorr Signatures with FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/).
|
||||||
|
|
||||||
Unlike signatures in a single-party setting, threshold signatures require cooperation among a
|
Unlike signatures in a single-party setting, threshold signatures require cooperation among a
|
||||||
|
@ -12,10 +24,14 @@ FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/) presents a vari
|
||||||
Round-Optimized Schnorr Threshold (FROST) signature scheme originally defined in
|
Round-Optimized Schnorr Threshold (FROST) signature scheme originally defined in
|
||||||
[FROST20](https://eprint.iacr.org/2020/852.pdf). FROST reduces network overhead during threshold
|
[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
|
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 prior Schnorr-based threshold signature constructions.
|
||||||
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
|
Besides FROST itself, this repository also provides:
|
||||||
implemented here.
|
|
||||||
|
- Trusted dealer key generation as specified in the appendix of ['Two-Round Threshold Schnorr Signatures with FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/);
|
||||||
|
- Distributed key generation as specified in the original paper [FROST20](https://eprint.iacr.org/2020/852.pdf);
|
||||||
|
- Repairable Theshold Scheme (RTS) from ['A Survey and Refinement of Repairable Threshold Schemes'](https://eprint.iacr.org/2017/1155) which allows a participant to recover a lost share with the help of a threshold of other participants;
|
||||||
|
- Rerandomized FROST (paper under review).
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
@ -23,8 +39,10 @@ Refer to the [ZF FROST book](https://frost.zfnd.org/).
|
||||||
|
|
||||||
## Status ⚠
|
## Status ⚠
|
||||||
|
|
||||||
The FROST specification is not yet finalized, and this codebase has not yet been audited or
|
The FROST specification is not yet finalized, though no significant changes are
|
||||||
released. The APIs and types in `frost-core` are subject to change.
|
expected at this point. This code base has been audited by NCC. The APIs and
|
||||||
|
types in `frost-core` are subject to change during the release candidate phase,
|
||||||
|
and will follow SemVer guarantees after 1.0.0.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -34,17 +52,3 @@ scratch. End-users should not use `frost-core` if they want to sign and verify s
|
||||||
should use the crate specific to their ciphersuite/curve parameters that uses `frost-core` as a
|
should use the crate specific to their ciphersuite/curve parameters that uses `frost-core` as a
|
||||||
dependency.
|
dependency.
|
||||||
|
|
||||||
## Developer Information
|
|
||||||
|
|
||||||
### Pre-commit checks
|
|
||||||
|
|
||||||
1. Run tests `cargo test`
|
|
||||||
2. Run formatter `cargo fmt`
|
|
||||||
3. Check linter `cargo clippy --all-features --all-targets -- -D warnings` and if you want to automatically fix then run `cargo clippy --fix`
|
|
||||||
|
|
||||||
### Coverage
|
|
||||||
|
|
||||||
Test coverage checks are performed in the pipeline. This is cofigured here: `.github/workflows/coverage.yaml`
|
|
||||||
To run these locally:
|
|
||||||
1. Install coverage tool by running `cargo install cargo-llvm-cov`
|
|
||||||
2. Run `cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs` (you may be asked if you want to install `llvm-tools-preview`, if so type `Y`)
|
|
||||||
|
|
|
@ -16,3 +16,4 @@
|
||||||
- [Developer Documentation](dev.md)
|
- [Developer Documentation](dev.md)
|
||||||
- [List of Dependencies for Audit](dev/frost-dependencies-for-audit.md)
|
- [List of Dependencies for Audit](dev/frost-dependencies-for-audit.md)
|
||||||
- [Release Checklist](dev/release-checklist.md)
|
- [Release Checklist](dev/release-checklist.md)
|
||||||
|
- [Developer Guide](dev/developer-guide.md)
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Developer Guide
|
||||||
|
|
||||||
|
# Pre-commit checks
|
||||||
|
|
||||||
|
1. Run tests `cargo test`
|
||||||
|
2. Run formatter `cargo fmt`
|
||||||
|
3. Check linter `cargo clippy --all-features --all-targets -- -D warnings` and if you want to automatically fix then run `cargo clippy --fix`
|
||||||
|
|
||||||
|
# Coverage
|
||||||
|
|
||||||
|
Test coverage checks are performed in the pipeline. This is cofigured here: `.github/workflows/coverage.yaml`
|
||||||
|
To run these locally:
|
||||||
|
1. Install coverage tool by running `cargo install cargo-llvm-cov`
|
||||||
|
2. Run `cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs` (you may be asked if you want to install `llvm-tools-preview`, if so type `Y`)
|
Loading…
Reference in New Issue