OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Multi Party Bls

Multi Party Bls is a Rust library implementing threshold BLS over BLS12-381. It provides an aggregated BLS protocol and a threshold BLS protocol designed for a dishonest-majority setting, with a demo CLI for distributed key generation, signing and signature verification.

Independent OpenViST project profile, based on linked sources.

Multi Party Bls — OpenViST project profile in Developer Tools.
OpenViST project illustration. See the linked sources for product details.
Understand the project

Practical overview

When it fits

Use it when a Rust application needs the implemented BLS12-381 aggregated or threshold-signing protocols and can provide the message-delivery layer those protocols require.

Who it is for

  • Rust developers building multi-party cryptographic key-generation and signing workflows.
  • Teams prototyping threshold or aggregated BLS signatures over BLS12-381.

Documented uses

  • Generate a shared public key and separate local key shares through a multi-party protocol.
  • Coordinate parties to create a threshold BLS signature over data.
  • Verify a signature using the resulting public key.
  • Integrate protocol execution into a Tokio async application by supplying incoming and outgoing message handling.
Before you choose

Requirements & limits

The public GitHub repository reports a GPL-3.0 license.

  • The library implements two protocol approaches: aggregated BLS based on MSP and threshold BLS based on Threshold GLOW signatures.
  • The asynchronous integration pattern requires application-provided streams for incoming messages and sinks for outgoing messages.
  • The repository specifies encryption for peer-to-peer messages and signed broadcast messages as message-delivery security assumptions.

Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.

Source-based practical guide

Use the demo CLI for key generation, signing and verification

Run the documented example workflow to generate distributed key shares, sign data with parties and verify the resulting signature.

Before you start

  • Rust and Cargo to run the repository's example CLI.
  • A mediator server through which parties can exchange protocol messages.
  • Encrypted peer-to-peer messages and signed broadcast messages, as required by the stated security assumptions.

Steps

  1. Start the mediator server with the command below; the documented default listener is 127.0.0.1:8333.

    Documented command
    cargo run --example cli -- mediator-server run
  2. Launch the required party processes with the command below, changing the output path for each party as in the example.

    Documented command
    cargo run --example cli -- keygen -t 1 -n 3 --output target/keys/key1
  3. Run signing for the participating parties with the command below, using each party's key share.

    Documented command
    cargo run --example cli -- sign -n 2 --key target/keys/key1 --digits some-data
  4. Verify the signature with the command below, substituting the produced signature and public key.

    Documented command
    cargo run --example cli -- verify --digits some-data --signature SIG --public-key PK

Expected outcome

The example workflow produces local key shares and a shared public key, outputs a signature from participating parties, and checks whether that signature is valid.

Guide limitations

  • The example uses a mediator server; applications using the protocols must provide their own message-delivery logic.
  • The CLI example's sample parameters are t=1, n=3 for key generation and two parties for signing; they are not a general deployment recommendation.
  • Assign a unique --room-id when running multiple protocols concurrently.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
18 October 2026
Original website title
ZenGo-X/multi-party-bls · Official homepage title · retained in its source language