-
Notifications
You must be signed in to change notification settings - Fork 67
Open
Labels
cleanupImprove readability, design patterns, and simplificationImprove readability, design patterns, and simplificationhelp wantedExtra attention is neededExtra attention is neededneeds investigation
Description
The current BLS12 implementation that we depend on is
There hasn't been any releases since 2021; we are using v0.1.1-0.20210208205449-6045b0235e36
The repository was archived Dec 27, 2023. There is no suggested alternatives on their GitHub page. ChatGPT suggested these:
🧮 Better-maintained Go implementations of BLS12-381
Your current dependency github.com/kilic/bls12-381 has been archived.
Below are well-maintained alternatives depending on your requirements:
🔹 supranational/blst
- Language: C/assembly core with Go bindings
- Pros: Extremely fast, widely used (Ethereum 2.0 clients), actively maintained, audited
- Cons: Requires cgo
- Go bindings:
github.com/supranational/blst/bindings/go - Best for: Production use where performance matters (e.g., HotStuff aggregate signatures)
🔹 ConsenSys/gnark-crypto
- Language: Pure Go
- Pros: Maintained, audited, full algebra support (pairings, G1/G2 ops, hash-to-curve)
- Cons: Slower than
blstbut avoids cgo - Best for: Pure-Go builds needing complete BLS12-381 primitives
🔹 Cloudflare/CIRCL
- Language: Pure Go
- Pros: Clean API, maintained by Cloudflare, implements IETF BLS draft
- Cons: Narrower scope (focused on BLS signatures only, not general pairings)
- Best for: Simpler signature use cases and easy integration
🔹 herumi/bls
- Language: C++ with Go wrapper
- Pros: Mature, widely used historically (e.g., Chia, earlier BLS users)
- Cons: Requires cgo; older design; previous audit concerns
- Best for: Legacy compatibility when already using Herumi’s MCL
⚠️ Avoid
videocoin/go-bls12-381— outdated, unmaintained fork of Kilic’s code.
✅ Recommendation for HotStuff
- High performance (aggregate verification): use blst
- Pure Go implementation: use gnark-crypto
- Simple BLS signatures: use CIRCL
If you tell me which specific BLS features your HotStuff implementation relies on
(e.g., coreVerify, Aggregate, BatchVerify, hash-to-curve mode),
I can show you a 1:1 API migration example for the most suitable library.
Metadata
Metadata
Assignees
Labels
cleanupImprove readability, design patterns, and simplificationImprove readability, design patterns, and simplificationhelp wantedExtra attention is neededExtra attention is neededneeds investigation