diff --git a/lightclient-circuits/src/committee_update_circuit.rs b/lightclient-circuits/src/committee_update_circuit.rs index 956cd59..08d720d 100644 --- a/lightclient-circuits/src/committee_update_circuit.rs +++ b/lightclient-circuits/src/committee_update_circuit.rs @@ -90,7 +90,7 @@ impl CommitteeUpdateCircuit { .hash_tree_root() .unwrap() .as_ref() - .into_iter() + .iter() .map(|v| builder.main().load_witness(F::from(*v as u64))) .collect_vec(); verify_merkle_multiproof( diff --git a/lightclient-circuits/src/sync_step_circuit.rs b/lightclient-circuits/src/sync_step_circuit.rs index 45880b3..c230358 100644 --- a/lightclient-circuits/src/sync_step_circuit.rs +++ b/lightclient-circuits/src/sync_step_circuit.rs @@ -121,7 +121,7 @@ impl StepCircuit { .hash_tree_root() .unwrap() .as_ref() - .into_iter() + .iter() .map(|v| builder.main().load_witness(F::from(*v as u64))) .collect_vec(); @@ -156,7 +156,7 @@ impl StepCircuit { .hash_tree_root() .unwrap() .as_ref() - .into_iter() + .iter() .map(|v| builder.main().load_witness(F::from(*v as u64))) .collect_vec(); diff --git a/lightclient-circuits/src/witness/multiproof.rs b/lightclient-circuits/src/witness/multiproof.rs index 7d41a6c..968b2ca 100644 --- a/lightclient-circuits/src/witness/multiproof.rs +++ b/lightclient-circuits/src/witness/multiproof.rs @@ -198,3 +198,19 @@ pub fn block_header_to_leaves( header.body_root.hash_tree_root()?, ]) } + +pub fn beacon_header_multiproof_and_helper_indices( + header: &mut BeaconBlockHeader, + gindices: &[usize], +) -> (Vec, Vec) { + let header_leaves = block_header_to_leaves(header).unwrap(); + let merkle_tree = merkle_tree(&header_leaves); + let helper_indices = get_helper_indices(gindices); + let proof = helper_indices + .iter() + .copied() + .map(|i| merkle_tree[i]) + .collect::>(); + assert_eq!(proof.len(), helper_indices.len()); + (proof, helper_indices) +} diff --git a/preprocessor/src/rotation.rs b/preprocessor/src/rotation.rs index 6684b9d..6bb543f 100644 --- a/preprocessor/src/rotation.rs +++ b/preprocessor/src/rotation.rs @@ -6,10 +6,10 @@ use std::marker::PhantomData; use beacon_api_client::{BlockId, Client, ClientTypes}; use eth_types::Spec; -use ethereum_consensus_types::{BeaconBlockHeader, LightClientUpdateCapella}; +use ethereum_consensus_types::LightClientUpdateCapella; use itertools::Itertools; use lightclient_circuits::witness::{ - block_header_to_leaves, get_helper_indices, merkle_tree, CommitteeUpdateArgs, + beacon_header_multiproof_and_helper_indices, CommitteeUpdateArgs, }; use log::debug; use ssz_rs::Merkleized; @@ -95,20 +95,6 @@ where "Execution payload merkle proof verification failed" ); - let beacon_header_multiproof_and_helper_indices = - |header: &mut BeaconBlockHeader, gindices: &[usize]| { - let header_leaves = block_header_to_leaves(header).unwrap(); - let merkle_tree = merkle_tree(&header_leaves); - let helper_indices = get_helper_indices(gindices); - let proof = helper_indices - .iter() - .copied() - .map(|i| merkle_tree[i]) - .collect_vec(); - assert_eq!(proof.len(), helper_indices.len()); - (proof, helper_indices) - }; - let (finalized_header_multiproof, finalized_header_helper_indices) = beacon_header_multiproof_and_helper_indices( &mut update.finalized_header.beacon.clone(), diff --git a/preprocessor/src/step.rs b/preprocessor/src/step.rs index 3c1b98f..ca2cd75 100644 --- a/preprocessor/src/step.rs +++ b/preprocessor/src/step.rs @@ -9,13 +9,9 @@ use beacon_api_client::{BlockId, ClientTypes, StateId}; use eth_types::Spec; use ethereum_consensus_types::bls::BlsPublicKey; use ethereum_consensus_types::signing::{compute_domain, DomainType}; -use ethereum_consensus_types::{ - BeaconBlockHeader, ForkData, LightClientBootstrap, LightClientFinalityUpdate, -}; +use ethereum_consensus_types::{ForkData, LightClientBootstrap, LightClientFinalityUpdate}; use itertools::Itertools; -use lightclient_circuits::witness::{ - block_header_to_leaves, get_helper_indices, merkle_tree, SyncStepArgs, -}; +use lightclient_circuits::witness::{beacon_header_multiproof_and_helper_indices, SyncStepArgs}; use ssz_rs::Vector; use ssz_rs::{Merkleized, Node}; @@ -123,21 +119,6 @@ pub async fn step_args_from_finality_update( "Finality merkle proof verification failed" ); - let beacon_header_multiproof_and_helper_indices = - |header: &mut BeaconBlockHeader, gindices: &[usize]| { - let header_leaves = block_header_to_leaves(header).unwrap(); - let merkle_tree = merkle_tree(&header_leaves); - let helper_indices = get_helper_indices(gindices); - let proof = helper_indices - .iter() - .copied() - .map(|i| merkle_tree[i]) - .collect_vec(); - // println!("Proof length: {}", proof.len()); - assert_eq!(proof.len(), helper_indices.len()); - (proof, helper_indices) - }; - // Proof length is 3 let (attested_header_multiproof, attested_header_helper_indices) = beacon_header_multiproof_and_helper_indices( diff --git a/preprocessor/src/unit_test_gen.rs b/preprocessor/src/unit_test_gen.rs index 15d56a5..42d88e4 100644 --- a/preprocessor/src/unit_test_gen.rs +++ b/preprocessor/src/unit_test_gen.rs @@ -9,8 +9,8 @@ use ethereum_consensus::signing::compute_signing_root; use ethereum_consensus::state_transition::Context; use itertools::Itertools as _; use lightclient_circuits::witness::{ - block_header_to_leaves, get_helper_indices, merkle_tree, parent, CommitteeUpdateArgs, - SyncStepArgs, + beacon_header_multiproof_and_helper_indices, get_helper_indices, merkle_tree, parent, + CommitteeUpdateArgs, SyncStepArgs, }; use ssz_rs::{MerkleizationError, Merkleized, Node}; use std::fs::File; @@ -156,20 +156,6 @@ fn main() { body_root: finalized_block.body_root, }; - let beacon_header_multiproof_and_helper_indices = - |header: &mut ethereum_consensus_types::BeaconBlockHeader, gindices: &[usize]| { - let header_leaves = block_header_to_leaves(header).unwrap(); - let merkle_tree = merkle_tree(&header_leaves); - let helper_indices = get_helper_indices(gindices); - let proof = helper_indices - .iter() - .copied() - .map(|i| merkle_tree[i]) - .collect_vec(); - assert_eq!(proof.len(), helper_indices.len()); - (proof, helper_indices) - }; - // Proof length is 3 let (attested_header_multiproof, attested_header_helper_indices) = beacon_header_multiproof_and_helper_indices( diff --git a/test-utils/src/lib.rs b/test-utils/src/lib.rs index 8d45ec2..1252a45 100644 --- a/test-utils/src/lib.rs +++ b/test-utils/src/lib.rs @@ -20,7 +20,7 @@ use ethereum_consensus_types::{ForkData, Root}; use itertools::Itertools; use lightclient_circuits::poseidon::poseidon_committee_commitment_from_uncompressed; use lightclient_circuits::witness::{ - block_header_to_leaves, get_helper_indices, merkle_tree, CommitteeUpdateArgs, SyncStepArgs, + beacon_header_multiproof_and_helper_indices, CommitteeUpdateArgs, SyncStepArgs, }; use ssz_rs::prelude::*; use ssz_rs::Merkleized; @@ -114,21 +114,6 @@ pub fn read_test_files_and_gen_witness( let mut agg_pk: ByteVector<48> = ByteVector(Vector::try_from(agg_pubkeys_compressed).unwrap()); sync_committee_branch.insert(0, agg_pk.hash_tree_root().unwrap().deref().to_vec()); - - let beacon_header_multiproof_and_helper_indices = - |header: &mut BeaconBlockHeader, gindices: &[usize]| { - let header_leaves = block_header_to_leaves(header).unwrap(); - let merkle_tree = merkle_tree(&header_leaves); - let helper_indices = get_helper_indices(gindices); - let proof = helper_indices - .iter() - .copied() - .map(|i| merkle_tree[i]) - .collect_vec(); - assert_eq!(proof.len(), helper_indices.len()); - (proof, helper_indices) - }; - let (finalized_header_multiproof, finalized_header_helper_indices) = beacon_header_multiproof_and_helper_indices( &mut sync_wit.attested_header.clone(), @@ -271,20 +256,6 @@ fn to_sync_ciruit_witness( .map(|b| b.deref().to_vec()) .collect(); - let beacon_header_multiproof_and_helper_indices = - |header: &mut BeaconBlockHeader, gindices: &[usize]| { - let header_leaves = block_header_to_leaves(header).unwrap(); - let merkle_tree = merkle_tree(&header_leaves); - let helper_indices = get_helper_indices(gindices); - let proof = helper_indices - .iter() - .copied() - .map(|i| merkle_tree[i]) - .collect_vec(); - assert_eq!(proof.len(), helper_indices.len()); - (proof, helper_indices) - }; - // Proof length is 3 let (attested_header_multiproof, attested_header_helper_indices) = beacon_header_multiproof_and_helper_indices(