BLS(Boneh-Lynn-Shacham)是ETH 2.0中采用的私钥生成和签名方案,本文将介绍 常用的BLS开源开发库,可用于C/C++、Rust、JavaScript、Golang、Python等各种密码学 应用的开发。
1、Herum BLS
Herum BLS是BLS阈值签名的一个C++实现,支持以太坊2.0阶段0规定的 新的BLS签名方案。
Herum BLS支持如下架构:
- Windows Visual Studio / MSYS2(MinGW-w64)
- Linux
- macOS
- Android
- iOS
- WebAssembly
Herum BLS提供如下开发语言的绑定:Go、WebAssembly(Node.JS)、Rust。
Herum BLS代码仓库: https://github.com/herumi/bls
2、Chia BLS
Chia BLS是Chia官方提供的支持聚合的BLS签名的C++实现,利用了relic toolkit 提供的密码学原语(配对、椭圆曲线、哈希等)。
Chia BLS的主要特性如下:
- 遵循IETF规范的非交互式签名聚合
- 支持Windows, Mac, Linux, BSD
- 基于Proof of Posssesion的有效验证
- 支持公钥和私钥的聚合
- 支持EIP-2333密钥派生(包括非硬化的类BIP-32私钥)
- 支持密钥和签名序列化
- 支持批量验证
- 提供Python绑定
- 包含纯Python版本的bls12-381和签名
- 提供JavaScript绑定
Chia BLS代码仓库:https://github.com/Chia-Network/bls-signatures
3、w3f BLS
w3f BLS是一个rust版本的BLS签名实现,支持BLS12-381。
w3f BLS代码仓库:https://github.com/w3f/bls
4、ChainSafe BLS
ChainSafe BLS是一个用于BLS签名以及签名聚合的JavaScript库,支持 Node.js和浏览器环境。
ChainSafe BLS提供了三种后台:
- blst:仅支持node.js,通过node-gyp绑定到c语言实现
- herumi:支持node.js和浏览器,wasm实现
- noble:纯JavaScript实现,支持node.js和浏览器
ChainSafe BLS代码仓库:https://github.com/ChainSafe/bls
5、asonnino BLS
asonnino BLS是一个简单的Python版本的BLS阈值签名实现,论文参见这里。
asonnino BLS基于petlib和bplib实现,因此使用时首先需要安装这些依赖。
asonnino BLS代码仓库:https://github.com/asonnino/bls
6、nevermind BLS
NeverMind BLS是一个.net core版本的BLS签名实现,支持ETH2.0。
NeverMind BLS作为一个System.Security.Cryptography.AsymmetricAlgorithm插件实现, 遵循.Net Core的密码学方案规范;支持私钥转公钥、ETH2.0消息的签名和验证、公钥/签名聚合、 聚合签名的验证等;提供跨平台支持,例如windows、linux和osx。
NeverMind BLS基于Herumi库实现,目前不支持ETH2.0之外的方案。
NeverMind BLS代码仓库: https://github.com/NethermindEth/cortex-cryptography-bls
7、Algorand BLS
Algorand BLS包含Python和Rust版本的BLS签名实现。
Algorand BLS代码仓库:https://github.com/algorand/bls_sigs_ref
8、Witnet BLS
Witnet BLS是一个Rust版本的BLS签名实现,目前仅支持BN256配对。
Witnet BLS代码仓库:https://github.com/witnet/bls-signatures-rs
9、enzoh BLS
Enzoh BLS是一个Go版本的BLS签名实现练习代码,可以帮助理解BLS签名算法。
enzoh BLS代码仓库:https://github.com/enzoh/go-bls
汇智网编辑整理,转载请标明出处