6个版本 (重大更新)
| 0.7.0 | 2024年7月26日 |
|---|---|
| 0.6.1 | 2024年2月8日 |
| 0.6.0 | 2024年1月10日 |
| 0.5.0 | 2023年12月18日 |
| 0.1.0 | 2023年7月4日 |
在密码学类别中排名75
每月下载量10,373
用于9个crate(6个直接使用)
420KB
11K SLoC
为ZkCrypto traits收集的椭圆曲线集合
该库提供了各种halo2友好的椭圆曲线的高效和灵活实现,最初实现了BN256曲线,使用了来自zkcrypto生态系统的特性,
实现最初是从matterlabs/pairing和zkcrypto/bls12-381迁移过来的,但已扩展和优化以覆盖更广泛的曲线和用例。自其初始发布以来,该库已扩展到包括其他曲线,以及以下功能
secp256k1、secp256r1、pluto、eris和grumpkin曲线,增强了其在各种密码协议中的可用性。- 汇编优化,显著提高了性能。
- 与曲线点和字段元素序列化和反序列化相关的各种功能。
- 针对特定曲线的优化和基准测试能力。
控制并行性
halo2curves目前使用rayon进行并行计算。
可以使用环境变量RAYON_NUM_THREADS来设置线程数。
当编译到WASM目标时,请注意,从版本1.7开始,rayon将自动回退(无需处理功能),以要求使用getrandom才能正常工作。有关WASM编译的相关信息。
参见:Rayon: 使用WebAssembly 了解更多信息。
基准测试
基准测试通过Rust内置的测试框架支持。可以在不进行汇编优化的情况下运行基准测试
$ cargo test --profile bench test_field -- --nocapture
或进行汇编优化
$ cargo test --profile bench test_field --features asm -- --nocapture
附加功能
-
序列化/反序列化推导:该库支持Serde的
Serialize和Deserialize特质,以便对字段和组元素进行序列化,从而更容易将曲线操作集成到依赖序列化的工作流程中。 -
散列到曲线:对于
bn256::G1和grumpkin::G1曲线,实现了hash_to_curve,使得更高效的哈希和签名方案成为可能。 -
查找表:为
bn256::Fr提供了一个预计算的查找表,加速从u16到montgomery表示的转换。
结构
库的最高级目录组织如下
benches:包含基准测试。script:包含实用脚本。src:包含库的源代码,进一步细分为支持每个曲线的模块(bn256、grumpkin、secp256k1、secp256r1、secq256k1、pasta、pluto、eris)和附加功能(derive、tests)。
依赖项
~4.5MB
~99K SLoC