|
1 | | -<h1 align="center">Threshold BLS Signatures and DKG</h1> |
| 1 | +# DKG tooling |
2 | 2 |
|
3 | | -Fork of the Celo [project](https://github.com/celo-org/celo-threshold-bls-rs). |
| 3 | +This is a fork of the Celo's [threshold-bls](https://github.com/celo-org/celo-threshold-bls-rs) project. |
4 | 4 |
|
5 | 5 | ## Overview |
6 | 6 |
|
7 | | -This crate provides libraries and command line interfaces for producing threshold BLS signatures. The signatures can also be [blind](https://en.wikipedia.org/wiki/Blind_signature) in order to preserve the privacy of the user asking for a signature from another set of parties. |
| 7 | +This project provides tooling for running an interactive distributed key generation protocol. |
| 8 | +All participants (administrator and key holders) use a command line app to participate in the protocol, and all the communication is hapenning through a smart contract. |
8 | 9 |
|
9 | | -Distributed Key Generation for generating the threshold public key is based on [Secure Distributed Key Generation for Discrete-Log Based Cryptosystems |
10 | | -](https://link.springer.com/article/10.1007/s00145-006-0347-3) |
11 | | - |
12 | | -## Build Guide |
13 | | - |
14 | | -Build with `cargo build (--release)`. |
| 10 | +In the beginning of the DKG procedure: |
| 11 | +- The list of account addresses belonging to key holders is publicly known |
| 12 | +- There is a designated administrator that deploys and initialized the contract |
15 | 13 |
|
16 | | -Test with `cargo test`. |
17 | | - |
18 | | -All crates require Rust 2021 edition and are tested on the following channels: |
19 | | -- `1.64.0` |
| 14 | +In the result of the DKG procedure: |
| 15 | +- All key holders have their secret key share locally |
| 16 | +- Individual public key shares and master public key are available publicly |
20 | 17 |
|
21 | | -If you do not have Rust installed, run: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` |
| 18 | +This project implements the JF-DKG scheme described in [Secure Distributed Key Generation for Discrete-Log Based Cryptosystems |
| 19 | +](https://link.springer.com/article/10.1007/s00145-006-0347-3) |
22 | 20 |
|
23 | | -## Android and iOS |
| 21 | +## Install |
24 | 22 |
|
25 | | -The library compiles to Android and iOS. This has been tested with Rust v1.64.0. |
| 23 | +Get latest binaries from the [releases](https://github.com/trilitech/dkg-tooling/releases) page. |
26 | 24 |
|
27 | | -To compile to Android: |
| 25 | +Alternatively use Docker images: |
| 26 | +``` |
| 27 | +docker run ghcr.io/trilitech/dkg-cli:$RELEASE_TAG -h |
| 28 | +``` |
28 | 29 |
|
29 | | -1. Download Android NDK r21 and unzip it |
30 | | -2. Set the `NDK_HOME` env var to the extracted directory |
31 | | -3. `cd cross` |
32 | | -4. `./create-ndk-standalone` |
33 | | -5. `make android` |
| 30 | +## Use |
34 | 31 |
|
35 | | -To compile to ios: |
36 | | -3. `cd cross` |
37 | | -4. `make ios` |
| 32 | +Check out the [instructions](crates/dkg-cli). |
38 | 33 |
|
39 | | -## Directory Structure |
| 34 | +## Build from sources |
40 | 35 |
|
41 | | -This repository contains several Rust crates that implement the different building blocks of the MPC. The high-level structure of the repository is as follows: |
| 36 | +Build with `NO_SOLC_BUILD=1 cargo build --release`. |
42 | 37 |
|
43 | | -- [`dkg-cli`](crates/dkg-cli): Rust crate that provides a CLI for the distributed key generation |
44 | | -- [`dkg-core`](crates/dkg-core): Rust crate that provides the implementation utilities for the DKG |
45 | | -- [`threshold-bls`](crates/threshold-bls): (blind) threshold BLS signatures for BLS12-381 and BLS12-377 |
46 | | -- [`threshold-bls-ffi`](crates/threshold-bls-ffi): FFI and WASM bindings to `threshold-bls` for cross platform interoperability |
| 38 | +All crates require Rust 2021 edition and are tested on the following channels: |
| 39 | +- `1.76.0` |
47 | 40 |
|
| 41 | +If you do not have Rust installed, run: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` |
48 | 42 |
|
49 | 43 | ## Disclaimers |
50 | 44 |
|
|
0 commit comments