Today, I’ve released 0.13
of pairing
, a Rust-language library for zkSNARK-friendly pairing cryptography.
Here are some features of the new library:
- It contains an implementation of BLS12-381, a new elliptic curve construction designed to target higher security than the curve currently used by Zcash, but with similar performance. BLS12-381 is also the subject of several announced and unannounced research breakthroughs.
- It is written in Rust, with no
unsafe{}
code. It works on the stable compiler (0.21 and above), but can leverage optimizations currently available in the nightly compiler. - It is tested on Linux and Windows, each 64-bit and 32-bit.
- It contains a fully specified, compact and efficient serialization.
- It is automatically performance tested. Performance of BLS12-381 is better in many respects than the existing curve implementation we use in Zcash.
- The API is designed to deter misuse.
Zcash has decided to adopt BLS12-381, so this library is being stabilized and should not see any backwards-incompatible changes unless they are necessary. Feedback is welcome!