/frost-federation

Federation of nodes providing FROST threshold signatures to clients

Primary LanguageRustGNU Affero General Public License v3.0AGPL-3.0

FROST Federation

A federation of nodes running FROST to generate threshold signatures for itself and on the request of clients.

The federation also saves and synchronises data and commands sent by clients. The federation then runs a priori known validation scheme on the data before generating a threshold signature.

System Model

Network Connectivity

  1. A federation of nodes with point to point network connectivity.

  2. All point to point connections are authenticated and confidential using the Noise framework.

  3. All point to point connections are reliable with no ordering guarantees.

  4. Provide an echo-broadcast implementation between all nodes to satisfy the FROST broadcast channel requirements.

  5. Clocks are synchronised using ntp to satisfy partial synchrony requirements.

Round Time

  1. Round time of 5 seconds [TODO: Determine this if this is enough for a network of size 100 nodes, and then adjust this as required]

Federation Clients

  1. Clients connect to any node in the federation and then send data/commands to that node.

  2. The federation members synchronise data and commands received from clients.

Threshold Signatures

  1. The federation runs preprocessing DKG rounds every fixed interval.

  2. Threshold signatures are generated Whenever a client requests a one or the federation needs one.

Validate Before Signing

  1. The federation is provided a validation protocol it runs on the synchronised data, before it generates a threshold signature.

  2. This allows clients to use the federation as a BFT validation and signature generation service.

Build Status

Rust CI

Coverage

Codecov
Codecov