Pairing crate for Rust

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!