Crates.io | synedrion |
lib.rs | synedrion |
version | |
source | src |
created_at | 2023-12-08 01:28:57.234628+00 |
updated_at | 2025-04-07 15:23:54.08134+00 |
description | Threshold signing library based on Canetti-Gennaro-Goldfeder-Makriyannis-Peled '24 scheme |
homepage | |
repository | https://github.com/entropyxyz/synedrion |
max_upload_size | |
id | 1061448 |
Cargo.toml error: | TOML parse error at line 19, column 1 | 19 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
WARNING: the library is a work in progress (see Issues), and has not been audited. Use at your own risk.
This library is an implementation of a scheme described in "UC Non-Interactive, Proactive, Threshold ECDSA with Identifiable Aborts" by R. Canetti, R. Gennaro, S. Goldfeder, N. Makriyannis, and U. Peled. Specifically, we are using the scheme as specified in the preprint at https://eprint.iacr.org/2021/060, revision 2024-10-21.
The library implements the following protocols from the paper:
All the protocols support identifiable aborts where specified by the paper, and where possible, a self-contained malicious behavior evidence will be returned, so that it can be published.
The following components are work in progress:
Multiple shares per party - see https://github.com/entropyxyz/synedrion/issues/31;
Generic support for arbitrary curves - currently SECP256k1 is hardcoded, see https://github.com/entropyxyz/synedrion/issues/27 for more details.
The library uses manul
as a framework for running the protocols.
All the protocols expose a type implementing EntryPoint
and can be executed via Session
.
See manul
docs for general information on how to execute protocols in production or development environment, and how to handle errors.