Weierstrass BN254 zero-knowledge trusted setup ceremony.
36ad8b672c
Enforce that Fr of Engine is the scalar for curve points In bellman, I want to write: ```rust pub struct Point<C: CurveProjective>(pub C); impl<C: CurveProjective> Copy for Point<C> { } impl<C: CurveProjective> Clone for Point<C> { fn clone(&self) -> Point<C> { *self } } impl<C: CurveProjective> Group<C::Engine> for Point<C> { fn group_zero() -> Self { Point(C::zero()) } fn group_mul_assign(&mut self, by: &C::Scalar) { self.0.mul_assign(by.into_repr()); } fn group_add_assign(&mut self, other: &Self) { self.0.add_assign(&other.0); } fn group_sub_assign(&mut self, other: &Self) { self.0.sub_assign(&other.0); } } ``` However, this doesn't typecheck because the compiler cannot know that the `Engine`'s `Fr` type (as dictated by the `Group` trait) is the same as the `Scalar` type of the `CurveProjective` point. This can be solved with a where bound over the trait (for now), but it is generally a good idea for this to be constrained in `pairing`. |
||
---|---|---|
benches | ||
src | ||
.gitignore | ||
Cargo.toml | ||
COPYRIGHT | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
pairing
This is a Rust crate for using pairing-friendly elliptic curves. Currently, only the BLS12-381 construction is implemented.
Documentation
Bring the pairing
crate into your project just as you normally would.
If you're using a supported platform and the nightly Rust compiler, you can enable the u128-support
feature for faster arithmetic.
[dependencies.pairing]
version = "0.13"
features = ["u128-support"]
Security Warnings
This library does not make any guarantees about constant-time operations, memory access patterns, or resistance to side-channel attacks.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.