From bca3e09bba2d10be92f7f81ac3ec01c9844536bd Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Tue, 1 Aug 2023 16:43:27 -0400 Subject: [PATCH 1/4] Reuse set_public_value_targets --- evm/src/fixed_recursive_verifier.rs | 25 +++++-------------------- evm/src/recursive_verifier.rs | 5 ++++- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/evm/src/fixed_recursive_verifier.rs b/evm/src/fixed_recursive_verifier.rs index 06333b27..4908dfbc 100644 --- a/evm/src/fixed_recursive_verifier.rs +++ b/evm/src/fixed_recursive_verifier.rs @@ -46,8 +46,8 @@ use crate::proof::{PublicValues, PublicValuesTarget, StarkProofWithMetadata}; use crate::prover::prove; use crate::recursive_verifier::{ add_common_recursion_gates, add_virtual_public_values, recursive_stark_circuit, - set_block_metadata_target, set_trie_roots_target, PlonkWrapperCircuit, PublicInputs, - StarkWrapperCircuit, + set_block_metadata_target, set_public_value_targets, set_trie_roots_target, + PlonkWrapperCircuit, PublicInputs, StarkWrapperCircuit, }; use crate::stark::Stark; @@ -813,25 +813,10 @@ where &self.aggregation.circuit.verifier_only, ); - set_block_metadata_target( + set_public_value_targets( &mut root_inputs, - &self.root.public_values.block_metadata, - &all_proof.public_values.block_metadata, - ); - - root_inputs.set_target( - self.root.public_values.cpu_trace_len, - F::from_canonical_usize(all_proof.public_values.cpu_trace_len), - ); - set_trie_roots_target( - &mut root_inputs, - &self.root.public_values.trie_roots_before, - &all_proof.public_values.trie_roots_before, - ); - set_trie_roots_target( - &mut root_inputs, - &self.root.public_values.trie_roots_after, - &all_proof.public_values.trie_roots_after, + &self.root.public_values, + &all_proof.public_values, ); let root_proof = self.root.circuit.prove(root_inputs)?; diff --git a/evm/src/recursive_verifier.rs b/evm/src/recursive_verifier.rs index b9b36dcd..975fa419 100644 --- a/evm/src/recursive_verifier.rs +++ b/evm/src/recursive_verifier.rs @@ -636,7 +636,6 @@ pub(crate) fn set_stark_proof_target, W, const D: set_fri_proof_target(witness, &proof_target.opening_proof, &proof.opening_proof); } -#[allow(unused)] // TODO: used later? pub(crate) fn set_public_value_targets( witness: &mut W, public_values_target: &PublicValuesTarget, @@ -660,6 +659,10 @@ pub(crate) fn set_public_value_targets( &public_values_target.block_metadata, &public_values.block_metadata, ); + witness.set_target( + public_values_target.cpu_trace_len, + F::from_canonical_usize(public_values.cpu_trace_len), + ); } pub(crate) fn set_trie_roots_target( From c93f9d5fd25c3d93716981304b711b41b3586976 Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Tue, 1 Aug 2023 16:44:22 -0400 Subject: [PATCH 2/4] Fix endianness in benefiary limbs --- evm/src/recursive_verifier.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/evm/src/recursive_verifier.rs b/evm/src/recursive_verifier.rs index 975fa419..9d23e4bb 100644 --- a/evm/src/recursive_verifier.rs +++ b/evm/src/recursive_verifier.rs @@ -1,7 +1,7 @@ use std::fmt::Debug; use anyhow::{ensure, Result}; -use ethereum_types::BigEndianHash; +use ethereum_types::{BigEndianHash, U256}; use plonky2::field::extension::Extendable; use plonky2::field::types::Field; use plonky2::fri::witness_util::set_fri_proof_target; @@ -39,7 +39,7 @@ use crate::proof::{ TrieRootsTarget, }; use crate::stark::Stark; -use crate::util::h160_limbs; +use crate::util::u256_limbs; use crate::vanishing_poly::eval_vanishing_poly_circuit; use crate::vars::StarkEvaluationTargets; @@ -727,10 +727,11 @@ pub(crate) fn set_block_metadata_target( F: RichField + Extendable, W: Witness, { - witness.set_target_arr( - &block_metadata_target.block_beneficiary, - &h160_limbs(block_metadata.block_beneficiary), - ); + let beneficiary_limbs: [F; 5] = + u256_limbs::(U256::from_big_endian(&block_metadata.block_beneficiary.0))[..5] + .try_into() + .unwrap(); + witness.set_target_arr(&block_metadata_target.block_beneficiary, &beneficiary_limbs); witness.set_target( block_metadata_target.block_timestamp, F::from_canonical_u64(block_metadata.block_timestamp.as_u64()), From 8365608b856e9105b04bfc1f813ebaef79aae8a9 Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Tue, 1 Aug 2023 16:45:11 -0400 Subject: [PATCH 3/4] Convert to u32 instead of u64 --- evm/src/recursive_verifier.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/evm/src/recursive_verifier.rs b/evm/src/recursive_verifier.rs index 9d23e4bb..4a8da740 100644 --- a/evm/src/recursive_verifier.rs +++ b/evm/src/recursive_verifier.rs @@ -734,26 +734,26 @@ pub(crate) fn set_block_metadata_target( witness.set_target_arr(&block_metadata_target.block_beneficiary, &beneficiary_limbs); witness.set_target( block_metadata_target.block_timestamp, - F::from_canonical_u64(block_metadata.block_timestamp.as_u64()), + F::from_canonical_u32(block_metadata.block_timestamp.as_u32()), ); witness.set_target( block_metadata_target.block_number, - F::from_canonical_u64(block_metadata.block_number.as_u64()), + F::from_canonical_u32(block_metadata.block_number.as_u32()), ); witness.set_target( block_metadata_target.block_difficulty, - F::from_canonical_u64(block_metadata.block_difficulty.as_u64()), + F::from_canonical_u32(block_metadata.block_difficulty.as_u32()), ); witness.set_target( block_metadata_target.block_gaslimit, - F::from_canonical_u64(block_metadata.block_gaslimit.as_u64()), + F::from_canonical_u32(block_metadata.block_gaslimit.as_u32()), ); witness.set_target( block_metadata_target.block_chain_id, - F::from_canonical_u64(block_metadata.block_chain_id.as_u64()), + F::from_canonical_u32(block_metadata.block_chain_id.as_u32()), ); witness.set_target( block_metadata_target.block_base_fee, - F::from_canonical_u64(block_metadata.block_base_fee.as_u64()), + F::from_canonical_u32(block_metadata.block_base_fee.as_u32()), ); } From 5316f8904349d49acd0bef692386046159e98c12 Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Tue, 1 Aug 2023 16:48:15 -0400 Subject: [PATCH 4/4] Clippy --- evm/src/util.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/evm/src/util.rs b/evm/src/util.rs index d39ea83d..7c1ae12e 100644 --- a/evm/src/util.rs +++ b/evm/src/util.rs @@ -73,6 +73,7 @@ pub(crate) fn h256_limbs(h256: H256) -> [F; 8] { .unwrap() } +#[allow(unused)] /// Returns the 32-bit limbs of a `U160`. pub(crate) fn h160_limbs(h160: H160) -> [F; 5] { h160.0