Browse Source

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
main
Srinath Setty 2 years ago
committed by GitHub
parent
commit
8308c29f94
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 16 deletions
  1. +1
    -1
      .github/workflows/rust.yml
  2. +2
    -1
      Cargo.toml
  3. +3
    -14
      src/pasta.rs

+ 1
- 1
.github/workflows/rust.yml

@ -20,7 +20,7 @@ jobs:
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --release --verbose
run: cargo +stable test --release --verbose
- name: Check Rustfmt Code Style
run: cargo fmt --all -- --check
- name: Check clippy warnings

+ 2
- 1
Cargo.toml

@ -22,7 +22,8 @@ rand_core = { version = "0.5", default-features = false }
rand_chacha = "0.3"
itertools = "0.9.0"
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 }
generic-array = "0.14.4"
bellperson-nonnative = { version = "0.3.0", default-features = false, features = ["wasm"] }

+ 3
- 14
src/pasta.rs

@ -3,7 +3,6 @@ use crate::{
poseidon::PoseidonRO,
traits::{ChallengeTrait, CompressedGroup, Group},
};
use core::ops::Mul;
use digest::{ExtendableOutput, Input};
use ff::Field;
use merlin::Transcript;
@ -11,7 +10,7 @@ use num_bigint::BigInt;
use num_traits::Num;
use pasta_curves::{
self,
arithmetic::{CurveAffine, CurveExt, Group as Grp},
arithmetic::{CurveAffine, CurveExt},
group::{Curve, GroupEncoding},
pallas, vesta, Ep, Eq,
};
@ -46,12 +45,7 @@ impl Group for pallas::Point {
scalars: &[Self::Scalar],
bases: &[Self::PreprocessedGroupElement],
) -> Self {
// Unoptimized.
scalars
.iter()
.zip(bases)
.map(|(scalar, base)| base.mul(scalar))
.fold(Ep::group_zero(), |acc, x| acc + x)
pasta_msm::pallas(bases, scalars)
}
fn compress(&self) -> Self::CompressedGroupElement {
@ -136,12 +130,7 @@ impl Group for vesta::Point {
scalars: &[Self::Scalar],
bases: &[Self::PreprocessedGroupElement],
) -> Self {
// Unoptimized.
scalars
.iter()
.zip(bases)
.map(|(scalar, base)| base.mul(scalar))
.fold(Eq::group_zero(), |acc, x| acc + x)
pasta_msm::vesta(bases, scalars)
}
fn compress(&self) -> Self::CompressedGroupElement {

Loading…
Cancel
Save