Skip to content

Commit

Permalink
simplify verify_sinsemilla_hash
Browse files Browse the repository at this point in the history
  • Loading branch information
YaoGalteland committed Apr 15, 2024
1 parent 08c554b commit 330a70a
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 59 deletions.
133 changes: 76 additions & 57 deletions halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use super::super::{CommitDomains, HashDomains, SinsemillaInstructions};
use super::{NonIdentityEccPoint, SinsemillaChip};
use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps};

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `SinsemillaConfigProps`

warning: unused import: `SinsemillaConfigProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:71 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^^^

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `SinsemillaChipProps`

warning: unused import: `SinsemillaChipProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:50 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `SinsemillaConfigProps`

warning: unused import: `SinsemillaConfigProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:71 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^^^

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `SinsemillaChipProps`

warning: unused import: `SinsemillaChipProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:50 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `SinsemillaConfigProps`

Check failure on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `SinsemillaConfigProps`

error: unused import: `SinsemillaConfigProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:71 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^^^

Check failure on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `SinsemillaChipProps`

error: unused import: `SinsemillaChipProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:50 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^ | = note: `-D unused-imports` implied by `-D warnings`

Check failure on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `SinsemillaConfigProps`

error: unused import: `SinsemillaConfigProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:71 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^^^

Check failure on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `SinsemillaChipProps`

error: unused import: `SinsemillaChipProps` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:2:50 | 2 | use super::{NonIdentityEccPoint, SinsemillaChip, SinsemillaChipProps, SinsemillaConfigProps}; | ^^^^^^^^^^^^^^^^^^^

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `SinsemillaConfigProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `SinsemillaChipProps`

Check warning on line 2 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `SinsemillaConfigProps`
use crate::{
ecc::FixedPoints,
sinsemilla::primitives::{self as sinsemilla, lebs2ip_k, INV_TWO_POW_K, SINSEMILLA_S},
Expand All @@ -14,15 +14,88 @@ use halo2_proofs::{
use group::ff::{PrimeField, PrimeFieldBits};
use pasta_curves::{arithmetic::CurveAffine, pallas};

use crate::sinsemilla::primitives::{K, S_PERSONALIZATION};

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused imports: `K`, `S_PERSONALIZATION`

warning: unused imports: `K`, `S_PERSONALIZATION` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:17:37 | 17 | use crate::sinsemilla::primitives::{K, S_PERSONALIZATION}; | ^ ^^^^^^^^^^^^^^^^^

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused imports: `K`, `S_PERSONALIZATION`

Check failure on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused imports: `K`, `S_PERSONALIZATION`

error: unused imports: `K`, `S_PERSONALIZATION` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:17:37 | 17 | use crate::sinsemilla::primitives::{K, S_PERSONALIZATION}; | ^ ^^^^^^^^^^^^^^^^^ | = note: `-D unused-imports` implied by `-D warnings`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused imports: `K`, `S_PERSONALIZATION`

Check warning on line 17 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused imports: `K`, `S_PERSONALIZATION`
use crate::utilities::lookup_range_check::LookupRangeCheck;

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

warning: unused import: `crate::utilities::lookup_range_check::LookupRangeCheck` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:18:5 | 18 | use crate::utilities::lookup_range_check::LookupRangeCheck; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

warning: unused import: `crate::utilities::lookup_range_check::LookupRangeCheck` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:18:5 | 18 | use crate::utilities::lookup_range_check::LookupRangeCheck; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check failure on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

error: unused import: `crate::utilities::lookup_range_check::LookupRangeCheck` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:18:5 | 18 | use crate::utilities::lookup_range_check::LookupRangeCheck; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check failure on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

error: unused import: `crate::utilities::lookup_range_check::LookupRangeCheck` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:18:5 | 18 | use crate::utilities::lookup_range_check::LookupRangeCheck; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`

Check warning on line 18 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `crate::utilities::lookup_range_check::LookupRangeCheck`
use group::prime::PrimeCurveAffine;

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `group::prime::PrimeCurveAffine`

warning: unused import: `group::prime::PrimeCurveAffine` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:19:5 | 19 | use group::prime::PrimeCurveAffine; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `group::prime::PrimeCurveAffine`

Check failure on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `group::prime::PrimeCurveAffine`

error: unused import: `group::prime::PrimeCurveAffine` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:19:5 | 19 | use group::prime::PrimeCurveAffine; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `group::prime::PrimeCurveAffine`

Check warning on line 19 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `group::prime::PrimeCurveAffine`
use group::Curve;

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `group::Curve`

warning: unused import: `group::Curve` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:20:5 | 20 | use group::Curve; | ^^^^^^^^^^^^

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `group::Curve`

Check failure on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `group::Curve`

error: unused import: `group::Curve` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:20:5 | 20 | use group::Curve; | ^^^^^^^^^^^^

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `group::Curve`

Check warning on line 20 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `group::Curve`
use pasta_curves::arithmetic::CurveExt;

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

unused import: `pasta_curves::arithmetic::CurveExt`

warning: unused import: `pasta_curves::arithmetic::CurveExt` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:21:5 | 21 | use pasta_curves::arithmetic::CurveExt; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

unused import: `pasta_curves::arithmetic::CurveExt`

Check failure on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

unused import: `pasta_curves::arithmetic::CurveExt`

error: unused import: `pasta_curves::arithmetic::CurveExt` --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:21:5 | 21 | use pasta_curves::arithmetic::CurveExt; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

unused import: `pasta_curves::arithmetic::CurveExt`

Check warning on line 21 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

unused import: `pasta_curves::arithmetic::CurveExt`
use std::ops::Deref;
// TODO: SinsemillaChip to SinsemillaChipTraits

// Define an enum that can hold either type
#[derive(Debug, Clone)]
pub enum EccPointQ<'a> {
PublicPoint(pallas::Affine),
PrivatePoint(&'a NonIdentityEccPoint),
}

impl<Hash, Commit, Fixed> SinsemillaChip<Hash, Commit, Fixed>
where
Hash: HashDomains<pallas::Affine>,
Fixed: FixedPoints<pallas::Affine>,
Commit: CommitDomains<pallas::Affine, Fixed, Hash>,
{
#[cfg(test)]
#[allow(non_snake_case)]
pub(crate) fn verify_sinsemilla_hash(
&self,
message: &<Self as SinsemillaInstructions<
pallas::Affine,
{ sinsemilla::K },
{ sinsemilla::C },
>>::Message,
Q: EccPointQ,
x_a: X<pallas::Base>,
y_a: AssignedCell<Assigned<pallas::Base>, pallas::Base>,
zs_sum: Vec<Vec<AssignedCell<pallas::Base, pallas::Base>>>,
) -> Result<
(
NonIdentityEccPoint,
Vec<Vec<AssignedCell<pallas::Base, pallas::Base>>>,
),
Error,
> {

Check warning on line 57 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

very complex type used. Consider factoring parts into `type` definitions

warning: very complex type used. Consider factoring parts into `type` definitions --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:51:10 | 51 | ) -> Result< | __________^ 52 | | ( 53 | | NonIdentityEccPoint, 54 | | Vec<Vec<AssignedCell<pallas::Base, pallas::Base>>>, 55 | | ), 56 | | Error, 57 | | > { | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity = note: `-W clippy::type-complexity` implied by `-W clippy::all` = help: to override `-W clippy::all` add `#[allow(clippy::type_complexity)]`

Check failure on line 57 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

very complex type used. Consider factoring parts into `type` definitions

error: very complex type used. Consider factoring parts into `type` definitions --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:51:10 | 51 | ) -> Result< | __________^ 52 | | ( 53 | | NonIdentityEccPoint, 54 | | Vec<Vec<AssignedCell<pallas::Base, pallas::Base>>>, 55 | | ), 56 | | Error, 57 | | > { | |_____^ | = note: `-D clippy::type-complexity` implied by `-D warnings` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
let field_elems: Value<Vec<_>> = message
.iter()
.map(|piece| piece.field_elem().map(|elem| (elem, piece.num_words())))
.collect();

let value_Q = match Q {
EccPointQ::PublicPoint(p) => Value::known(p),
EccPointQ::PrivatePoint(p) => p.point(),
};

field_elems
.zip(x_a.value().zip(y_a.value()))
.zip(value_Q)
.assert_if_known(|((field_elems, (x_a, y_a)), value_Q)| {
// Get message as a bitstring.
let bitstring: Vec<bool> = field_elems
.iter()
.flat_map(|(elem, num_words)| elem.to_le_bits().into_iter().take(K * num_words))
.collect();

let hasher_S = pallas::Point::hash_to_curve(S_PERSONALIZATION);
let S = |chunk: &[bool]| hasher_S(&lebs2ip_k(chunk).to_le_bytes());

// We can use complete addition here because it differs from
// incomplete addition with negligible probability.
let expected_point = bitstring
.chunks(K)
.fold(value_Q.to_curve(), |acc, chunk| (acc + S(chunk)) + acc);
let actual_point = pallas::Affine::from_xy(x_a.evaluate(), y_a.evaluate()).unwrap();
expected_point.to_affine() == actual_point
});

x_a.value()
.zip(y_a.value())
.error_if_known_and(|(x_a, y_a)| x_a.is_zero_vartime() || y_a.is_zero_vartime())?;
Ok((
NonIdentityEccPoint::from_coordinates_unchecked(x_a.0, y_a),
zs_sum,
))
}

// TODO: simplify three hash_message functions
/// [Specification](https://p.z.cash/halo2-0.1:sinsemilla-constraints?partial).
#[allow(non_snake_case)]
Expand All @@ -47,15 +120,7 @@ where

let (x_a, y_a, zs_sum) = self.hash_all_pieces(region, offset, message, x_a, y_a)?;

// todo: add test

x_a.value()
.zip(y_a.value())
.error_if_known_and(|(x_a, y_a)| x_a.is_zero_vartime() || y_a.is_zero_vartime())?;
Ok((
NonIdentityEccPoint::from_coordinates_unchecked(x_a.0, y_a),
zs_sum,
))
self.verify_sinsemilla_hash(message, EccPointQ::PublicPoint(Q), x_a, y_a, zs_sum)

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope

error[E0599]: no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:123:14 | 123 | self.verify_sinsemilla_hash(message, EccPointQ::PublicPoint(Q), x_a, y_a, zs_sum) | ^^^^^^^^^^^^^^^^^^^^^^ method not found in `&SinsemillaChip<Hash, Commit, Fixed>`

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope

error[E0599]: no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:123:14 | 123 | self.verify_sinsemilla_hash(message, EccPointQ::PublicPoint(Q), x_a, y_a, zs_sum) | ^^^^^^^^^^^^^^^^^^^^^^ method not found in `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>`

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 123 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope
}

/// [Specification](https://p.z.cash/halo2-0.1:sinsemilla-constraints?partial).
Expand All @@ -81,53 +146,7 @@ where

let (x_a, y_a, zs_sum) = self.hash_all_pieces(region, offset, message, x_a, y_a)?;

#[cfg(test)]
#[allow(non_snake_case)]
// Check equivalence to result from primitives::sinsemilla::hash_to_point
{
use crate::sinsemilla::primitives::{K, S_PERSONALIZATION};

use group::{prime::PrimeCurveAffine, Curve};
use pasta_curves::arithmetic::CurveExt;

let field_elems: Value<Vec<_>> = message
.iter()
.map(|piece| piece.field_elem().map(|elem| (elem, piece.num_words())))
.collect();

field_elems
.zip(x_a.value().zip(y_a.value()))
.zip(Q.point())
.assert_if_known(|((field_elems, (x_a, y_a)), Q)| {
// Get message as a bitstring.
let bitstring: Vec<bool> = field_elems
.iter()
.flat_map(|(elem, num_words)| {
elem.to_le_bits().into_iter().take(K * num_words)
})
.collect();

let hasher_S = pallas::Point::hash_to_curve(S_PERSONALIZATION);
let S = |chunk: &[bool]| hasher_S(&lebs2ip_k(chunk).to_le_bytes());

// We can use complete addition here because it differs from
// incomplete addition with negligible probability.
let expected_point = bitstring
.chunks(K)
.fold(Q.to_curve(), |acc, chunk| (acc + S(chunk)) + acc);
let actual_point =
pallas::Affine::from_xy(x_a.evaluate(), y_a.evaluate()).unwrap();
expected_point.to_affine() == actual_point
});
}

x_a.value()
.zip(y_a.value())
.error_if_known_and(|(x_a, y_a)| x_a.is_zero_vartime() || y_a.is_zero_vartime())?;
Ok((
NonIdentityEccPoint::from_coordinates_unchecked(x_a.0, y_a),
zs_sum,
))
self.verify_sinsemilla_hash(message, EccPointQ::PrivatePoint(Q), x_a, y_a, zs_sum)

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (beta)

no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope

error[E0599]: no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:149:14 | 149 | self.verify_sinsemilla_hash(message, EccPointQ::PrivatePoint(Q), x_a, y_a, zs_sum) | ^^^^^^^^^^^^^^^^^^^^^^ method not found in `&SinsemillaChip<Hash, Commit, Fixed>`

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Bitrot check

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Book tests

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Build target wasm32-wasi

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Clippy (MSRV)

no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope

error[E0599]: no method named `verify_sinsemilla_hash` found for reference `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>` in the current scope --> halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs:149:14 | 149 | self.verify_sinsemilla_hash(message, EccPointQ::PrivatePoint(Q), x_a, y_a, zs_sum) | ^^^^^^^^^^^^^^^^^^^^^^ method not found in `&sinsemilla::chip::SinsemillaChip<Hash, Commit, Fixed>`

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with beta features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope

Check failure on line 149 in halo2_gadgets/src/sinsemilla/chip/hash_to_point.rs

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest with nightly features

no method named `verify_sinsemilla_hash` found for reference `&SinsemillaChip<Hash, Commit, Fixed>` in the current scope
}

#[allow(non_snake_case)]
Expand Down
3 changes: 1 addition & 2 deletions halo2_gadgets/src/sinsemilla_opt/chip/hash_to_point.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ where

let (x_a, y_a, zs_sum) = self.hash_all_pieces(region, offset, message, x_a, y_a)?;

// todo: add test

// TODO: how to call verify_sinsemilla_hash
x_a.value()
.zip(y_a.value())
.error_if_known_and(|(x_a, y_a)| x_a.is_zero_vartime() || y_a.is_zero_vartime())?;
Expand Down

0 comments on commit 330a70a

Please sign in to comment.