mirror of
https://github.com/arnaucube/Nova.git
synced 2026-01-09 23:51:29 +01:00
use pasta_msm crate for MSM (#75)
* use pasta_msm crate for MSM * add repr-c to pasta_curves * add +stable * update pasta-msm version
This commit is contained in:
2
.github/workflows/rust.yml
vendored
2
.github/workflows/rust.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cargo build --verbose
|
run: cargo build --verbose
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: cargo test --release --verbose
|
run: cargo +stable test --release --verbose
|
||||||
- name: Check Rustfmt Code Style
|
- name: Check Rustfmt Code Style
|
||||||
run: cargo fmt --all -- --check
|
run: cargo fmt --all -- --check
|
||||||
- name: Check clippy warnings
|
- name: Check clippy warnings
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ rand_core = { version = "0.5", default-features = false }
|
|||||||
rand_chacha = "0.3"
|
rand_chacha = "0.3"
|
||||||
itertools = "0.9.0"
|
itertools = "0.9.0"
|
||||||
subtle = "2.4"
|
subtle = "2.4"
|
||||||
pasta_curves = "0.3.1"
|
pasta_curves = { version = "^0.3.1", features = ["repr-c"] }
|
||||||
|
pasta-msm = "0.1.1"
|
||||||
neptune = { version = "6.1", default-features = false }
|
neptune = { version = "6.1", default-features = false }
|
||||||
generic-array = "0.14.4"
|
generic-array = "0.14.4"
|
||||||
bellperson-nonnative = { version = "0.3.0", default-features = false, features = ["wasm"] }
|
bellperson-nonnative = { version = "0.3.0", default-features = false, features = ["wasm"] }
|
||||||
|
|||||||
17
src/pasta.rs
17
src/pasta.rs
@@ -3,7 +3,6 @@ use crate::{
|
|||||||
poseidon::PoseidonRO,
|
poseidon::PoseidonRO,
|
||||||
traits::{ChallengeTrait, CompressedGroup, Group},
|
traits::{ChallengeTrait, CompressedGroup, Group},
|
||||||
};
|
};
|
||||||
use core::ops::Mul;
|
|
||||||
use digest::{ExtendableOutput, Input};
|
use digest::{ExtendableOutput, Input};
|
||||||
use ff::Field;
|
use ff::Field;
|
||||||
use merlin::Transcript;
|
use merlin::Transcript;
|
||||||
@@ -11,7 +10,7 @@ use num_bigint::BigInt;
|
|||||||
use num_traits::Num;
|
use num_traits::Num;
|
||||||
use pasta_curves::{
|
use pasta_curves::{
|
||||||
self,
|
self,
|
||||||
arithmetic::{CurveAffine, CurveExt, Group as Grp},
|
arithmetic::{CurveAffine, CurveExt},
|
||||||
group::{Curve, GroupEncoding},
|
group::{Curve, GroupEncoding},
|
||||||
pallas, vesta, Ep, Eq,
|
pallas, vesta, Ep, Eq,
|
||||||
};
|
};
|
||||||
@@ -46,12 +45,7 @@ impl Group for pallas::Point {
|
|||||||
scalars: &[Self::Scalar],
|
scalars: &[Self::Scalar],
|
||||||
bases: &[Self::PreprocessedGroupElement],
|
bases: &[Self::PreprocessedGroupElement],
|
||||||
) -> Self {
|
) -> Self {
|
||||||
// Unoptimized.
|
pasta_msm::pallas(bases, scalars)
|
||||||
scalars
|
|
||||||
.iter()
|
|
||||||
.zip(bases)
|
|
||||||
.map(|(scalar, base)| base.mul(scalar))
|
|
||||||
.fold(Ep::group_zero(), |acc, x| acc + x)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compress(&self) -> Self::CompressedGroupElement {
|
fn compress(&self) -> Self::CompressedGroupElement {
|
||||||
@@ -136,12 +130,7 @@ impl Group for vesta::Point {
|
|||||||
scalars: &[Self::Scalar],
|
scalars: &[Self::Scalar],
|
||||||
bases: &[Self::PreprocessedGroupElement],
|
bases: &[Self::PreprocessedGroupElement],
|
||||||
) -> Self {
|
) -> Self {
|
||||||
// Unoptimized.
|
pasta_msm::vesta(bases, scalars)
|
||||||
scalars
|
|
||||||
.iter()
|
|
||||||
.zip(bases)
|
|
||||||
.map(|(scalar, base)| base.mul(scalar))
|
|
||||||
.fold(Eq::group_zero(), |acc, x| acc + x)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compress(&self) -> Self::CompressedGroupElement {
|
fn compress(&self) -> Self::CompressedGroupElement {
|
||||||
|
|||||||
Reference in New Issue
Block a user