Browse by type
This crate provides libraries and command line interfaces for producing threshold BLS signatures. The signatures can also be blind in order to preserve the privacy of the user asking for a signature from another set of parties.
Note: The DKG (Distributed Key Generation) crates have been removed from this repository as they were unstable and not necessary for the BLS crates to work. They were removed in commit a911f40f0fd31fabae197016b87640f2fdcf1c9f.
The project includes a justfile that supports building for multiple platforms using Docker. All built libraries are placed in the output directory, organized by platform. Run just to list the available recipes.
Install just with your package manager (brew install just, cargo install just) or with the
install script:
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/bin
To clean the output directory before building:
just clean
just all
This builds the libraries for all supported platforms.
The tests run natively, including on Apple Silicon:
cargo test --workspace --all-features
To run them in the linux/amd64 build image instead, which is what CI builds against:
just test
just wasm
This builds WebAssembly bindings that can be used with Node.js and places them in output/wasm.
just jvm
This builds JVM-compatible libraries and places them in output/jvm.
The mobile builds target:
android_api in the justfileios_deployment_target in the same filejust ios
This builds a universal static library for iOS (combining aarch64 and x86_64 architectures) and places it in output/ios. Note that iOS builds must be run on a macOS host as they cannot be built in Docker.
just android
This builds dynamic libraries for Android architectures (x86, x86_64, arm64-v8a, and armeabi-v7a) and places them in output/android.
The docker image used for building the libraries can be built separately if needed:
just build-docker-image
Rust 1.97.1 is used by default and tested for all builds. If desired, you can build with a different Rust version by setting the RUST_VERSION env var:
just RUST_VERSION=1.97.1 all
This repository contains Rust crates that implement threshold BLS signatures. The high-level structure of the repository is as follows:
threshold-bls: (blind) threshold BLS signatures for
BLS12-377. The API documentation, with worked examples for plain, blind and
threshold signing, is the crate-level rustdoc in
src/lib.rs; cargo doc --open renders it.threshold-bls-ffi: FFI and WASM bindings to
threshold-bls for cross platform interoperability. Its
README covers building and consuming each
binding surface.Every value the bindings exchange crosses as bytes, and those layouts are public
API: docs/wire-format.md documents each one, what pins
it, and what changes it.
This software has not been audited. Use at your own risk.
browse all types & interfaces →
$ claude mcp add celo-threshold-bls-rs \
-- python -m otcore.mcp_server <graph>