NuBLS Threshold Signature Library
We're excited to announce the release of NuBLS, a BLS signature library that implements threshold protocols like threshold signatures (TSS) and a Proxy Re-Signature (PRS) algorithm designed by NuCypher called Penumbral (paper in-progress). The Python wrapper is installable with pip as
pynubls and the core Rust library is accessible from crates.io as
The core of NuBLS is written in Rust and offers Python bindings. The library is a work-in-progress. Though we've taken care to use only high-quality libraries (such as ZCash's excellent BLS12-381 library), this library is pre-audit and, as always, care should be taken before applying NuBLS to production.
BLS signatures are a signature scheme popular for their elegance and simplicity that's rapidly gaining traction in the blockchain space and that are leveraged by many new platforms (ETH 2.0, Cosmos/Tendermint, Filecoin, and others).
What are threshold signatures (TSS)?
Threshold signatures provide a way for a distributed set of signers to construct a single cryptographic signature via a protocol to reach quorum. In other words, a set of
N signers with a threshold of
t-of-N scheme), can construct a valid signature as long as
t signers participate.
What is a threshold proxy re-signature (PRS)?
Proxy re-signature schemes enable a signer, Alice, to delegate signing rights to another signer, Bob, who can sign arbitrary messages and re-sign the resulting signature to a signature valid under Alice's key without requiring Alice to reveal their private key to Bob.
This re-signing process is performed by a set of
N untrusted proxies. When at least
t (out of
N) of these proxies perform the re-signing process, Bob is able to combine these independent re-signatures into a valid signature under Alice's key.
What's next for the network?
Currently, NuBLS is a standalone library, but both TSS and PRS are very compelling candidates for addition to the NuCypher network. Combined with complementary primitives like distributed key generation (DKG) they can enable a huge range of applications and use cases from DeFi (asset bridges between ETH and BLS-based chains, liquid staking functionality, etc.) to DAOs (think an autonomous Staking DAO) to secure distributed oracles.
We're excited to see how the community leverages these new primitives to create and deploy those applications (or even ones we haven't even thought of yet!).
- Github repo: https://github.com/nucypher/nubls
- Rust package: https://crates.io/crates/nubls
- Python package: https://pypi.org/project/pynubls/
- BLS signatures: https://en.wikipedia.org/wiki/Boneh–Lynn–Shacham