From f239d421358e4633b3e7a4aced4ce3a58fc74f77 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Fri, 21 Jul 2023 17:55:34 +0800 Subject: [PATCH 01/86] one_hot columns hashmap to btreemap --- src/gadgets/one_hot.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gadgets/one_hot.rs b/src/gadgets/one_hot.rs index 1059359a..0537608c 100644 --- a/src/gadgets/one_hot.rs +++ b/src/gadgets/one_hot.rs @@ -1,6 +1,6 @@ use crate::constraint_builder::{BinaryColumn, BinaryQuery, ConstraintBuilder, Query}; use halo2_proofs::{arithmetic::FieldExt, circuit::Region, plonk::ConstraintSystem}; -use std::{cmp::Eq, collections::HashMap, hash::Hash}; +use std::{cmp::Eq, collections::BTreeMap, hash::Hash}; use strum::IntoEnumIterator; // One hot encoding for an enum with T::COUNT variants with COUNT - 1 binary columns. @@ -8,7 +8,7 @@ use strum::IntoEnumIterator; // is valid (it will represent the first variant). #[derive(Clone)] pub struct OneHot { - columns: HashMap, + columns: BTreeMap, } impl OneHot { @@ -16,7 +16,7 @@ impl OneHot { cs: &mut ConstraintSystem, cb: &mut ConstraintBuilder, ) -> Self { - let mut columns = HashMap::new(); + let mut columns = BTreeMap::new(); for variant in Self::nonfirst_variants() { columns.insert(variant, cb.binary_columns::<1>(cs)[0]); } From 892726037d18d122b6ee30843eb12ef80c18ce10 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 21 Jul 2023 19:28:26 +0800 Subject: [PATCH 02/86] Add derive `Ord` to `OneHot`. (#57) --- src/gadgets/mpt_update/path.rs | 2 +- src/gadgets/mpt_update/segment.rs | 2 +- src/gadgets/one_hot.rs | 4 ++-- src/mpt_table.rs | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/gadgets/mpt_update/path.rs b/src/gadgets/mpt_update/path.rs index e6b97fc6..06dc6c71 100644 --- a/src/gadgets/mpt_update/path.rs +++ b/src/gadgets/mpt_update/path.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use strum_macros::EnumIter; -#[derive(Clone, Copy, Debug, PartialEq, Eq, EnumIter, Hash)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, EnumIter, Hash)] pub enum PathType { Start, // Used as boundary marker between updates Common, // Hashes for both the old and new path are being updated. diff --git a/src/gadgets/mpt_update/segment.rs b/src/gadgets/mpt_update/segment.rs index 8d13c29e..02d9f6e6 100644 --- a/src/gadgets/mpt_update/segment.rs +++ b/src/gadgets/mpt_update/segment.rs @@ -2,7 +2,7 @@ use crate::MPTProofType; use std::collections::HashMap; use strum_macros::EnumIter; -#[derive(Clone, Copy, Debug, PartialEq, Eq, EnumIter, Hash)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, EnumIter, Hash)] pub enum SegmentType { Start, // Boundary marker between updates AccountTrie, diff --git a/src/gadgets/one_hot.rs b/src/gadgets/one_hot.rs index 0537608c..14418ed7 100644 --- a/src/gadgets/one_hot.rs +++ b/src/gadgets/one_hot.rs @@ -7,11 +7,11 @@ use strum::IntoEnumIterator; // It's useful to have 1 less column so that the default assigment for the gadget // is valid (it will represent the first variant). #[derive(Clone)] -pub struct OneHot { +pub struct OneHot { columns: BTreeMap, } -impl OneHot { +impl OneHot { pub fn configure( cs: &mut ConstraintSystem, cb: &mut ConstraintBuilder, diff --git a/src/mpt_table.rs b/src/mpt_table.rs index 2d9feabe..a89d867d 100644 --- a/src/mpt_table.rs +++ b/src/mpt_table.rs @@ -3,7 +3,9 @@ use serde::{Deserialize, Serialize}; use strum_macros::EnumIter; /// The defination is greped from state-circuit -#[derive(Clone, Copy, Debug, PartialEq, Eq, EnumIter, Hash, Serialize, Deserialize)] +#[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, EnumIter, Hash, Serialize, Deserialize, +)] pub enum MPTProofType { /// nonce NonceChanged, From 042b8c8711a7ce9f10ef5652437f1ff403982665 Mon Sep 17 00:00:00 2001 From: Ho Vei Date: Sat, 22 Jul 2023 13:58:04 +0800 Subject: [PATCH 03/86] update dep --- Cargo.toml | 4 ++-- src/types.rs | 2 +- src/util.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fa1c4bcf..2bd2bfa8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] ethers-core = "0.17.0" itertools = "0.10.5" -hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git", branch = "scroll-dev-0619", features=['short']} +hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git"} halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_09_10" } rand = "0.8" lazy_static = "1.4.0" @@ -23,7 +23,7 @@ thiserror = "1.0" log = "0.4" [patch."https://github.com/privacy-scaling-explorations/halo2.git"] -halo2_proofs = { git = "https://github.com/scroll-tech/halo2.git", branch = "scroll-dev-0220" } +halo2_proofs = { git = "https://github.com/scroll-tech/halo2.git", branch = "develop" } [features] # printout the layout of circuits for demo and some unittests diff --git a/src/types.rs b/src/types.rs index 0077b6d0..11f46e21 100644 --- a/src/types.rs +++ b/src/types.rs @@ -908,7 +908,7 @@ fn fr(x: HexBytes<32>) -> Fr { } pub fn hash(x: Fr, y: Fr) -> Fr { - Hashable::hash([x, y]) + Hashable::hash_with_domain([x, y], Fr::zero()) } fn storage_key_hash(key: U256) -> Fr { diff --git a/src/util.rs b/src/util.rs index fe82b12d..c148199b 100644 --- a/src/util.rs +++ b/src/util.rs @@ -12,7 +12,7 @@ pub(crate) fn fr(x: HexBytes<32>) -> Fr { } pub(crate) fn hash(x: Fr, y: Fr) -> Fr { - Hashable::hash([x, y]) + Hashable::hash_with_domain([x, y], Fr::zero()) } pub(crate) trait Bit { From 47fbcad1fe4dad8d8aa8e58fb08f435e2bee0ec1 Mon Sep 17 00:00:00 2001 From: Ho Vei Date: Sat, 22 Jul 2023 20:47:58 +0800 Subject: [PATCH 04/86] extend hash_traces and some other part with domain spec --- src/gadgets/mpt_update.rs | 48 ++++++++++++++++++++++++++------------- src/gadgets/poseidon.rs | 27 ++++++++++++++-------- src/serde.rs | 3 +++ 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 54a4a0bf..adff7717 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1924,9 +1924,9 @@ fn address_low(a: Address) -> u128 { u128::from(u32::from_be_bytes(low_bytes)) << 96 } -// ... -pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { - let mut hash_traces = vec![(Fr::zero(), Fr::zero(), *HASH_ZERO_ZERO)]; +// ... the return traces: ([inp;2], domain, hash) +pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { + let mut hash_traces = vec![([Fr::zero(), Fr::zero()], Fr::zero(), *HASH_ZERO_ZERO)]; for proof in proofs.iter() { let address_hash_traces = &proof.address_hash_traces; for (direction, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in @@ -1938,7 +1938,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { } else { (old_hash, sibling) }; - hash_traces.push((*left, *right, hash(*left, *right))); + hash_traces.push(([*left, *right], Fr::zero(), hash(*left, *right))); } if !*is_padding_close { let (left, right) = if *direction { @@ -1946,7 +1946,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { } else { (new_hash, sibling) }; - hash_traces.push((*left, *right, hash(*left, *right))); + hash_traces.push(([*left, *right], Fr::zero(), hash(*left, *right))); } } assert_eq!( @@ -1959,19 +1959,31 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { ); let (storage_key_high, storage_key_low) = u256_hi_lo(&proof.claim.storage_key()); hash_traces.push(( - Fr::from_u128(storage_key_high), - Fr::from_u128(storage_key_low), + [ + Fr::from_u128(storage_key_high), + Fr::from_u128(storage_key_low), + ], + Fr::from(0u64), hash( Fr::from_u128(storage_key_high), Fr::from_u128(storage_key_low), ), )); - hash_traces.extend(proof.storage.poseidon_lookups()); + hash_traces.extend( + proof + .storage + .poseidon_lookups() + .into_iter() + .map(|(a, b, h)| ([a, b], Fr::zero(), h)), + ); let key = account_key(proof.claim.address); hash_traces.push(( - Fr::from_u128(address_high(proof.claim.address)), - Fr::from_u128(address_low(proof.claim.address)), + [ + Fr::from_u128(address_high(proof.claim.address)), + Fr::from_u128(address_low(proof.claim.address)), + ], + Fr::from(0u64), key, )); @@ -1981,20 +1993,24 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { proof.new.key }; if key != other_key { - hash_traces.push((Fr::one(), other_key, hash(Fr::one(), other_key))); + hash_traces.push(( + [Fr::one(), other_key], + Fr::zero(), + hash(Fr::one(), other_key), + )); } if let Some(data_hash) = proof.old.leaf_data_hash { hash_traces.push(( - proof.old.key_hash, - data_hash, + [proof.old.key_hash, data_hash], + Fr::zero(), hash(proof.old.key_hash, data_hash), )); } if let Some(data_hash) = proof.new.leaf_data_hash { hash_traces.push(( - proof.new.key_hash, - data_hash, + [proof.new.key_hash, data_hash], + Fr::zero(), hash(proof.new.key_hash, data_hash), )); } @@ -2004,7 +2020,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<(Fr, Fr, Fr)> { { for [left, right, digest] in account_leaf_hash_traces { if hash(left, right) == digest { - hash_traces.push((left, right, digest)) + hash_traces.push(([left, right], Fr::zero(), digest)) } } } diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index 0fb79eb8..d1a6064c 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -10,11 +10,11 @@ use halo2_proofs::{circuit::Region, halo2curves::bn256::Fr, plonk::ConstraintSys /// Lookup represent the poseidon table in zkevm circuit pub trait PoseidonLookup { - fn lookup_columns(&self) -> (FixedColumn, [AdviceColumn; 5]) { + fn lookup_columns(&self) -> (FixedColumn, [AdviceColumn; 6]) { let (fixed, adv) = self.lookup_columns_generic(); (FixedColumn(fixed), adv.map(AdviceColumn)) } - fn lookup_columns_generic(&self) -> (Column, [Column; 5]) { + fn lookup_columns_generic(&self) -> (Column, [Column; 6]) { let (fixed, adv) = self.lookup_columns(); (fixed.0, adv.map(|col| col.0)) } @@ -33,10 +33,12 @@ impl ConstraintBuilder { queries[0].clone(), queries[1].clone(), Query::zero(), + Query::zero(), Query::one(), ]; - let (q_enable, [hash, left, right, control, head_mark]) = poseidon.lookup_columns(); + let (q_enable, [hash, left, right, control, domain_spec, head_mark]) = + poseidon.lookup_columns(); self.add_lookup( name, @@ -47,6 +49,7 @@ impl ConstraintBuilder { left.current(), right.current(), control.current(), + domain_spec.current(), head_mark.current(), ], ) @@ -61,36 +64,39 @@ pub struct PoseidonTable { right: AdviceColumn, hash: AdviceColumn, control: AdviceColumn, + domain_spec: AdviceColumn, head_mark: AdviceColumn, } #[cfg(test)] impl PoseidonTable { pub fn configure(cs: &mut ConstraintSystem) -> Self { - let [hash, left, right, control, head_mark] = - [0; 5].map(|_| AdviceColumn(cs.advice_column())); + let [hash, left, right, control, domain_spec, head_mark] = + [0; 6].map(|_| AdviceColumn(cs.advice_column())); Self { left, right, hash, control, head_mark, + domain_spec, q_enable: FixedColumn(cs.fixed_column()), } } - pub fn load(&self, region: &mut Region<'_, Fr>, hash_traces: &[(Fr, Fr, Fr)]) { + pub fn load(&self, region: &mut Region<'_, Fr>, hash_traces: &[([Fr; 2], Fr, Fr)]) { for (offset, hash_trace) in hash_traces.iter().enumerate() { assert!( - poseidon_hash(hash_trace.0, hash_trace.1) == hash_trace.2, + poseidon_hash(hash_trace.0[0], hash_trace.0[1]) == hash_trace.2, "{:?}", (hash_trace.0, hash_trace.1, hash_trace.2) ); for (column, value) in [ - (self.left, hash_trace.0), - (self.right, hash_trace.1), + (self.left, hash_trace.0[0]), + (self.right, hash_trace.0[1]), (self.hash, hash_trace.2), (self.control, Fr::zero()), + (self.domain_spec, hash_trace.1), (self.head_mark, Fr::one()), ] { column.assign(region, offset, value); @@ -102,7 +108,7 @@ impl PoseidonTable { #[cfg(test)] impl PoseidonLookup for PoseidonTable { - fn lookup_columns(&self) -> (FixedColumn, [AdviceColumn; 5]) { + fn lookup_columns(&self) -> (FixedColumn, [AdviceColumn; 6]) { ( self.q_enable, [ @@ -110,6 +116,7 @@ impl PoseidonLookup for PoseidonTable { self.left, self.right, self.control, + self.domain_spec, self.head_mark, ], ) diff --git a/src/serde.rs b/src/serde.rs index 8fb2acbe..042d108f 100644 --- a/src/serde.rs +++ b/src/serde.rs @@ -264,6 +264,9 @@ pub struct SMTNode { pub value: Hash, /// sibling pub sibling: Hash, + /// node type + #[serde(default)] + pub node_type: u64, } /// struct in SMTTrace From f6f17c60fac79e2a69bd179649c945658a6a3c50 Mon Sep 17 00:00:00 2001 From: Ho Vei Date: Sun, 23 Jul 2023 08:04:14 +0800 Subject: [PATCH 05/86] update hash circuit to new dev branch --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 2bd2bfa8..6500ae36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] ethers-core = "0.17.0" itertools = "0.10.5" -hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git"} +hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git", branch = "scroll-dev-0723"} halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_09_10" } rand = "0.8" lazy_static = "1.4.0" From 0eec241187272f7afefa3803602dd54b52260ecc Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Tue, 25 Jul 2023 00:42:17 +0800 Subject: [PATCH 06/86] Add HashDomain type --- src/types.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/types.rs b/src/types.rs index 11f46e21..da2c46a7 100644 --- a/src/types.rs +++ b/src/types.rs @@ -21,6 +21,44 @@ pub mod trie; pub use constants::HASH_ZERO_ZERO; use storage::StorageProof; +#[derive(Clone, Copy, Debug)] +pub enum HashDomain { + NodeTypeEmpty = 4, + NodeTypeLeaf = 5, + NodeTypeBranch0 = 6, + NodeTypeBranch1 = 7, + NodeTypeBranch2 = 8, + NodeTypeBranch3 = 9, +} + +impl TryFrom for HashDomain { + type Error = &'static str; + fn try_from(x: u64) -> Result { + match x { + 4 => Ok(Self::NodeTypeEmpty), + 5 => Ok(Self::NodeTypeLeaf), + 6 => Ok(Self::NodeTypeBranch0), + 7 => Ok(Self::NodeTypeBranch1), + 8 => Ok(Self::NodeTypeBranch2), + 9 => Ok(Self::NodeTypeBranch3), + _ => Err("input out of range for HashDomain"), + } + } +} + +impl Into for HashDomain { + fn into(self) -> u64 { + match self { + Self::NodeTypeEmpty => 4, + Self::NodeTypeLeaf => 5, + Self::NodeTypeBranch0 => 6, + Self::NodeTypeBranch1 => 7, + Self::NodeTypeBranch2 => 8, + Self::NodeTypeBranch3 => 9, + } + } +} + #[derive(Clone, Copy, Debug)] pub struct Claim { pub old_root: Fr, From a01acb808ff9a3791e4a167b5c706fd40ac4763e Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Tue, 25 Jul 2023 01:12:37 +0800 Subject: [PATCH 07/86] Add hash domain to hash trace list --- Cargo.toml | 2 ++ src/gadgets/mpt_update.rs | 10 +++++----- src/lib.rs | 2 ++ src/types.rs | 24 ++++++++++++++---------- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6500ae36..d9b1c75e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,8 @@ halo2_proofs = { git = "https://github.com/scroll-tech/halo2.git", branch = "dev print_layout = ["halo2_proofs/dev-graph"] [dev-dependencies] +mpt-zktrie = { git = "https://github.com/scroll-tech/zkevm-circuits.git", branch = "feat/mpt_new_hash_scheme" } +# mpt-zktrie = { path = "../scroll-circuits/zktrie" } rand_chacha = "0.3.0" plotters = "0.3" bencher = "0.1" diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index adff7717..2a0fc3a2 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -395,7 +395,7 @@ impl MptUpdateConfig { let mut previous_new_hash = proof.claim.new_root; for ( depth, - (direction, old_hash, new_hash, sibling, is_padding_open, is_padding_close), + (direction, _, old_hash, new_hash, sibling, is_padding_open, is_padding_close), ) in proof.address_hash_traces.iter().rev().enumerate() { self.depth @@ -462,7 +462,7 @@ impl MptUpdateConfig { let final_path_type = proof .address_hash_traces .first() - .map(|(_, _, _, _, is_padding_open, is_padding_close)| { + .map(|(_, _, _, _, _, is_padding_open, is_padding_close)| { match (*is_padding_open, *is_padding_close) { (false, false) => PathType::Common, (false, true) => PathType::ExtensionOld, @@ -473,7 +473,7 @@ impl MptUpdateConfig { .unwrap_or(PathType::Common); let (final_old_hash, final_new_hash) = match proof.address_hash_traces.first() { None => (proof.old.hash(), proof.new.hash()), - Some((_, old_hash, new_hash, _, _, _)) => (*old_hash, *new_hash), + Some((_, _, old_hash, new_hash, _, _, _)) => (*old_hash, *new_hash), }; if proof.old_account.is_none() && proof.new_account.is_none() { @@ -1929,7 +1929,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { let mut hash_traces = vec![([Fr::zero(), Fr::zero()], Fr::zero(), *HASH_ZERO_ZERO)]; for proof in proofs.iter() { let address_hash_traces = &proof.address_hash_traces; - for (direction, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in + for (direction, _, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in address_hash_traces.iter().rev() { if !*is_padding_open { @@ -2032,7 +2032,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { pub fn key_bit_lookups(proofs: &[Proof]) -> Vec<(Fr, usize, bool)> { let mut lookups = vec![(Fr::zero(), 0, false), (Fr::one(), 0, true)]; for proof in proofs.iter() { - for (i, (direction, _, _, _, is_padding_open, is_padding_close)) in + for (i, (direction, _, _, _, _, is_padding_open, is_padding_close)) in proof.address_hash_traces.iter().rev().enumerate() { match (is_padding_open, is_padding_close) { diff --git a/src/lib.rs b/src/lib.rs index 7866ce0a..92e88a0b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,6 +5,8 @@ pub mod constraint_builder; pub mod gadgets; mod mpt_table; +#[cfg(test)] +mod test; pub mod types; mod util; diff --git a/src/types.rs b/src/types.rs index da2c46a7..635593db 100644 --- a/src/types.rs +++ b/src/types.rs @@ -157,7 +157,7 @@ impl LeafNode { pub struct Proof { pub claim: Claim, // direction, open value, close value, sibling, is_padding_open, is_padding_close - pub address_hash_traces: Vec<(bool, Fr, Fr, Fr, bool, bool)>, + pub address_hash_traces: Vec<(bool, HashDomain, Fr, Fr, Fr, bool, bool)>, // TODO: make this optional leafs: [Option; 2], @@ -500,7 +500,7 @@ fn get_internal_hash_traces( leaf_hashes: [Fr; 2], open_hash_traces: &[SMTNode], close_hash_traces: &[SMTNode], -) -> Vec<(bool, Fr, Fr, Fr, bool, bool)> { +) -> Vec<(bool, HashDomain, Fr, Fr, Fr, bool, bool)> { let mut address_hash_traces = vec![]; for (i, e) in open_hash_traces .iter() @@ -510,8 +510,10 @@ fn get_internal_hash_traces( address_hash_traces.push(match e { EitherOrBoth::Both(open, close) => { assert_eq!(open.sibling, close.sibling); + assert_eq!(open.node_type, close.node_type); ( key.bit(i), + HashDomain::try_from(open.node_type).unwrap(), fr(open.value), fr(close.value), fr(open.sibling), @@ -521,6 +523,7 @@ fn get_internal_hash_traces( } EitherOrBoth::Left(open) => ( key.bit(i), + HashDomain::try_from(open.node_type).unwrap(), fr(open.value), leaf_hashes[1], fr(open.sibling), @@ -529,6 +532,7 @@ fn get_internal_hash_traces( ), EitherOrBoth::Right(close) => ( key.bit(i), + HashDomain::try_from(close.node_type).unwrap(), leaf_hashes[0], fr(close.value), fr(close.sibling), @@ -761,7 +765,7 @@ impl Proof { // directions match account key. let account_key = account_key(self.claim.address); - for (i, (direction, _, _, _, _, _)) in self.address_hash_traces.iter().enumerate() { + for (i, (direction, _, _, _, _, _, _)) in self.address_hash_traces.iter().enumerate() { assert_eq!( *direction, account_key.bit(self.address_hash_traces.len() - i - 1) @@ -769,7 +773,7 @@ impl Proof { } // old and new roots are correct - if let Some((direction, open, close, sibling, _is_padding_open, _is_padding_close)) = + if let Some((direction, _, open, close, sibling, _is_padding_open, _is_padding_close)) = self.address_hash_traces.last() { if *direction { @@ -787,12 +791,12 @@ impl Proof { // going to have to add an is padding row or something? assert_eq!( self.old_account_hash_traces[5][2], - self.address_hash_traces.get(0).unwrap().1 + self.address_hash_traces.get(0).unwrap().2 ); assert_eq!( self.new_account_hash_traces[5][2], - self.address_hash_traces.get(0).unwrap().2 + self.address_hash_traces.get(0).unwrap().3 ); // if this still the case???? @@ -804,7 +808,7 @@ impl Proof { hash(Fr::one(), self.leafs[0].unwrap().key), self.leafs[0].unwrap().value_hash ), - self.old_account_hash_traces[5][2], + self.old_account_hash_traces[5][3], ); assert_eq!( hash( @@ -861,13 +865,13 @@ fn check_hash_traces(traces: &[(bool, Fr, Fr, Fr)]) { } } -fn check_hash_traces_new(traces: &[(bool, Fr, Fr, Fr, bool, bool)]) { +fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) { let current_hash_traces = traces.iter(); let mut next_hash_traces = traces.iter(); next_hash_traces.next(); for ( - (direction, open, close, sibling, is_padding_open, is_padding_close), - (_, next_open, next_close, _, is_padding_open_next, is_padding_close_next), + (direction, _, open, close, sibling, is_padding_open, is_padding_close), + (_, _, next_open, next_close, _, is_padding_open_next, is_padding_close_next), ) in current_hash_traces.zip(next_hash_traces) { if *direction { From 919eafd9052fdc7cec06dcd75f0e7d411b5a8387 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 26 Jul 2023 15:25:35 +0800 Subject: [PATCH 08/86] Sanity checks for empty_account_type_1 pass --- src/lib.rs | 2 +- src/tests.rs | 76 +++++++++++ src/traces/empty_account_type_1.json | 67 ++++++++++ src/types.rs | 181 ++++++++++++++++++++------- src/util.rs | 17 ++- 5 files changed, 296 insertions(+), 47 deletions(-) create mode 100644 src/tests.rs create mode 100644 src/traces/empty_account_type_1.json diff --git a/src/lib.rs b/src/lib.rs index 92e88a0b..aa76d409 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,7 @@ pub mod constraint_builder; pub mod gadgets; mod mpt_table; #[cfg(test)] -mod test; +mod tests; pub mod types; mod util; diff --git a/src/tests.rs b/src/tests.rs new file mode 100644 index 00000000..0de70961 --- /dev/null +++ b/src/tests.rs @@ -0,0 +1,76 @@ +use crate::{serde::SMTTrace, types::Proof, MPTProofType}; +use ethers_core::types::{Address, U256}; +use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; + +fn intital_generator() -> WitnessGenerator { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + for i in 1..10 { + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(i), + U256::one(), + U256::zero(), + None, + ); + } + generator +} + +#[test] +fn empty_account_type_1() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::zero(), + U256::zero(), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_1.json"), + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + for path in &trace.account_path { + assert!(path.leaf.is_some(), "account is not type 1"); + } + + let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); + proof.check(); +} + +#[ignore = "type 2 empty account proofs are incomplete"] +#[test] +fn empty_account_type_2() { + for i in 104..255 { + dbg!(i); + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(i), + U256::one(), + U256::zero(), + None, + ); + // 0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621 + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + dbg!(trace.clone()); + + // for path in &trace.account_path { + // assert!(path.leaf.is_some() || path.path.is_empty()) + // } + panic!(); + } + + // dbg!(trace.clone()); + + // let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); + panic!(); +} diff --git a/src/traces/empty_account_type_1.json b/src/traces/empty_account_type_1.json new file mode 100644 index 00000000..b63352ba --- /dev/null +++ b/src/traces/empty_account_type_1.json @@ -0,0 +1,67 @@ +{ + "address": "0x0000000000000000000000000000000000000000", + "accountKey": "0x228442949e7ba388bf9c08ec9374c72a579a39d2a1bf453d87dae5368c5f3c1d", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "sibling": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "node_type": 9 + }, + { + "value": "0x936f5938a27c18791e4ed02b0a1ac88b3e09f4f8c3a84f1a9a75fa8f516ef902", + "sibling": "0xd9c820802763f8140cd3557566054ddbddacb4433830a7bb0e30c1db08dfa914", + "node_type": 6 + } + ], + "pathPart": "0x2" + }, + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "sibling": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "node_type": 9 + }, + { + "value": "0x936f5938a27c18791e4ed02b0a1ac88b3e09f4f8c3a84f1a9a75fa8f516ef902", + "sibling": "0xd9c820802763f8140cd3557566054ddbddacb4433830a7bb0e30c1db08dfa914", + "node_type": 6 + } + ], + "pathPart": "0x2" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 635593db..9f26c379 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,18 +1,16 @@ -use ethers_core::types::{Address, U256}; -use halo2_proofs::{arithmetic::FieldExt, halo2curves::bn256::Fr}; -use hash_circuit::hash::Hashable; -use itertools::{EitherOrBoth, Itertools}; -use num_bigint::BigUint; -use num_traits::identities::Zero; - use crate::{ - // operation::{Account, SMTPathParse}, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ - account_key, fr_from_biguint, rlc, u256_from_biguint, u256_from_hex, u256_to_big_endian, + account_key, domain_hash, fr_from_biguint, hash, rlc, temp_hash, u256_from_biguint, + u256_from_hex, u256_to_big_endian, }, MPTProofType, }; +use ethers_core::types::{Address, U256}; +use halo2_proofs::{arithmetic::FieldExt, halo2curves::bn256::Fr}; +use itertools::{EitherOrBoth, Itertools}; +use num_bigint::BigUint; +use num_traits::identities::Zero; mod account; mod constants; @@ -23,12 +21,17 @@ use storage::StorageProof; #[derive(Clone, Copy, Debug)] pub enum HashDomain { - NodeTypeEmpty = 4, - NodeTypeLeaf = 5, + NodeTypeEmpty = 4, // this is not needed? // it is somehow used for leaf domain hashes? + NodeTypeLeaf = 5, // Rename to Leaf... NodeTypeBranch0 = 6, NodeTypeBranch1 = 7, NodeTypeBranch2 = 8, NodeTypeBranch3 = 9, + Pair = 512, + AccountFields = 2048, + // Test = 1 + // TwoElements for keys, storage value, and keccak code hash, = 512 + // Five(Six?)Elements for account fields.... } impl TryFrom for HashDomain { @@ -41,6 +44,7 @@ impl TryFrom for HashDomain { 7 => Ok(Self::NodeTypeBranch1), 8 => Ok(Self::NodeTypeBranch2), 9 => Ok(Self::NodeTypeBranch3), + // 512 => Ok(Self::) _ => Err("input out of range for HashDomain"), } } @@ -55,6 +59,8 @@ impl Into for HashDomain { Self::NodeTypeBranch1 => 7, Self::NodeTypeBranch2 => 8, Self::NodeTypeBranch3 => 9, + Self::Pair => 2 * 256, + AccountFields => 4 * 256, } } } @@ -366,26 +372,45 @@ impl From<(&MPTProofType, &SMTTrace)> for ClaimKind { impl From<(MPTProofType, SMTTrace)> for Proof { fn from((proof, trace): (MPTProofType, SMTTrace)) -> Self { let claim = Claim::from((&proof, &trace)); + dbg!("from 1"); let storage = StorageProof::from(&trace); + dbg!("from 2"); let key = account_key(claim.address); + assert_eq!(key, fr(trace.account_key)); + dbg!("from 2.5"); let leafs = trace.account_path.clone().map(get_leaf); + dbg!("from 2.6"); let [open_hash_traces, close_hash_traces] = trace.account_path.clone().map(|path| path.path); let leaf_hashes = trace.account_path.clone().map(leaf_hash); + dbg!(leaf_hashes); + dbg!("from 3"); let address_hash_traces = get_internal_hash_traces(key, leaf_hashes, &open_hash_traces, &close_hash_traces); + dbg!("check hash_traces"); + check_hash_traces_new(&address_hash_traces); + dbg!("4"); + dbg!(address_hash_traces.clone()); let [old_account, new_account] = trace.account_update; let old_account_hash_traces = match old_account.clone() { None => empty_account_hash_traces(leafs[0]), Some(account) => account_hash_traces(claim.address, account, storage.old_root()), }; + dbg!("5"); let new_account_hash_traces = match new_account.clone() { None => empty_account_hash_traces(leafs[1]), Some(account) => account_hash_traces(claim.address, account, storage.new_root()), }; + dbg!("6"); + + dbg!(leaf_hashes); + assert_eq!(old_account_hash_traces[5][2], leaf_hashes[0]); + assert_eq!(new_account_hash_traces[5][2], leaf_hashes[1]); + + dbg!("7"); let [old, new] = trace.account_path.map(|path| { // The account_key(address) if the account exists @@ -394,11 +419,11 @@ impl From<(MPTProofType, SMTTrace)> for Proof { let (key, key_hash) = path.leaf.map_or_else( || { let k = account_key(claim.address); - (k, hash(Fr::one(), k)) + (k, domain_hash(Fr::one(), k, HashDomain::NodeTypeLeaf)) }, |l| { let k = fr(l.sibling); - (k, hash(Fr::one(), k)) + (k, domain_hash(Fr::one(), k, HashDomain::NodeTypeLeaf)) }, ); @@ -411,6 +436,8 @@ impl From<(MPTProofType, SMTTrace)> for Proof { } }); + dbg!("8"); + let old_account = match old_account { Some(account_data) => { let mut account = EthAccount::from(account_data); @@ -427,6 +454,8 @@ impl From<(MPTProofType, SMTTrace)> for Proof { } None => None, }; + + dbg!("9"); Self { claim, address_hash_traces, @@ -452,7 +481,7 @@ fn get_leaf(path: SMTPath) -> Option { fn leaf_hash(path: SMTPath) -> Fr { if let Some(leaf) = path.leaf { - hash(hash(Fr::one(), fr(leaf.sibling)), fr(leaf.value)) + domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::NodeTypeEmpty) } else { // assert_eq!(path, SMTPath::default()); Fr::zero() @@ -460,6 +489,7 @@ fn leaf_hash(path: SMTPath) -> Fr { } fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) -> [[Fr; 3]; 7] { + dbg!("account_hash_traces 0"); // h5 is sibling of node? // let real_account: Account = (&account, storage_root).try_into().unwrap(); @@ -467,6 +497,7 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) let h1 = hash(codehash_hi, codehash_lo); let h2 = hash(storage_root, h1); + dbg!("account_hash_traces 1"); let nonce_and_codesize = Fr::from(account.nonce) + Fr::from(account.code_size) * Fr::from(1 << 32).square(); let balance = big_uint_to_fr(&account.balance); @@ -547,11 +578,40 @@ fn get_internal_hash_traces( fn empty_account_hash_traces(leaf: Option) -> [[Fr; 3]; 7] { let mut account_hash_traces = [[Fr::zero(); 3]; 7]; + dbg!("empty_account_hash_traces 0"); + + // 0x29830d19fd895697907ec7976a217848b690dc5942d38337d69cc42f583ac617 + // 0x02f96e518ffa759a1a4fa8c3f8f4093e8bc81a0a2bd04e1e79187ca238596f93 if let Some(l) = leaf { - let h5 = hash(Fr::one(), l.key); - account_hash_traces[5] = [Fr::one(), l.key, h5]; - account_hash_traces[6] = [h5, l.value_hash, hash(h5, l.value_hash)]; + // let h5 = domain_hash(Fr::one(), l.key, HashDomain::NodeTypeLeaf); + + // let a = domain_hash(Fr::one(), l.key, HashDomain::NodeTypeLeaf); + // let b = domain_hash(Fr::one(), l.key, HashDomain::Pair); + + // let c = domain_hash(a, l.value_hash, HashDomain::NodeTypeLeaf); + // let d = domain_hash(b, l.value_hash, HashDomain::NodeTypeLeaf); + // let e = temp_hash(l.key, l.value_hash, Fr::from(5)); // this one is correct? + // let f = temp_hash(l.value_hash, l.key, Fr::from(5)); + // dbg!(l); + // dbg!(a, b, c, d, e, f); + + // for i in 0..1024 { + // dbg!(temp_hash(l.key, l.value_hash, Fr::from(i))); + // } + // panic!(); + + // TODO: domain should not be EmptyNode!!!!! + account_hash_traces[5] = [ + l.key, + l.value_hash, + domain_hash(l.key, l.value_hash, HashDomain::NodeTypeEmpty), + ]; + // account_hash_traces[6] = [ + // h5, + // l.value_hash, + // domain_hash(h5, l.value_hash, HashDomain::NodeTypeLeaf), + // ]; } account_hash_traces @@ -759,9 +819,10 @@ impl Proof { // fn new_account_leaf_hashes(&self) -> Vec {} // fn account_leaf_siblings(&self) -> Vec {} - fn check(&self) { + pub fn check(&self) { // poseidon hashes are correct check_hash_traces_new(&self.address_hash_traces); + dbg!("check 1"); // directions match account key. let account_key = account_key(self.claim.address); @@ -772,23 +833,36 @@ impl Proof { ); } + dbg!("check 2"); + // old and new roots are correct - if let Some((direction, _, open, close, sibling, _is_padding_open, _is_padding_close)) = - self.address_hash_traces.last() + if let Some(( + direction, + domain, + open, + close, + sibling, + _is_padding_open, + _is_padding_close, + )) = self.address_hash_traces.last() { if *direction { - assert_eq!(hash(*sibling, *open), self.claim.old_root); - assert_eq!(hash(*sibling, *close), self.claim.new_root); + assert_eq!(domain_hash(*sibling, *open, *domain), self.claim.old_root); + assert_eq!(domain_hash(*sibling, *close, *domain), self.claim.new_root); } else { - assert_eq!(hash(*open, *sibling), self.claim.old_root); - assert_eq!(hash(*close, *sibling), self.claim.new_root); + assert_eq!(domain_hash(*open, *sibling, *domain), self.claim.old_root); + assert_eq!(domain_hash(*close, *sibling, *domain), self.claim.new_root); } } else { panic!("no hash traces!!!!"); } + dbg!("check 3"); // this suggests we want something that keeps 1/2 unchanged if something.... // going to have to add an is padding row or something? + + dbg!(self.old_account_hash_traces); + dbg!(self.address_hash_traces.clone()); assert_eq!( self.old_account_hash_traces[5][2], self.address_hash_traces.get(0).unwrap().2 @@ -804,18 +878,20 @@ impl Proof { // TODO: handle none here. assert_eq!( - hash( - hash(Fr::one(), self.leafs[0].unwrap().key), - self.leafs[0].unwrap().value_hash + domain_hash( + self.leafs[0].unwrap().key, + self.leafs[0].unwrap().value_hash, + HashDomain::NodeTypeEmpty, ), - self.old_account_hash_traces[5][3], + self.old_account_hash_traces[5][2], // is this right??? ); assert_eq!( - hash( - hash(Fr::one(), self.leafs[1].unwrap().key), - self.leafs[1].unwrap().value_hash + domain_hash( + self.leafs[0].unwrap().key, + self.leafs[0].unwrap().value_hash, + HashDomain::NodeTypeEmpty, ), - self.new_account_hash_traces[5][2], + self.new_account_hash_traces[5][2], // is this right??? ); // // storage poseidon hashes are correct @@ -870,38 +946,61 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) let mut next_hash_traces = traces.iter(); next_hash_traces.next(); for ( - (direction, _, open, close, sibling, is_padding_open, is_padding_close), - (_, _, next_open, next_close, _, is_padding_open_next, is_padding_close_next), + (direction, domain, open, close, sibling, is_padding_open, is_padding_close), + (_, next_domain, next_open, next_close, _, is_padding_open_next, is_padding_close_next), ) in current_hash_traces.zip(next_hash_traces) { + dbg!(domain, next_domain); + let x: u64 = (*domain).into(); + dbg!(x); if *direction { if *is_padding_open { // TODOOOOOO } else { assert!(!*is_padding_open_next); - assert_eq!(hash(*sibling, *open), *next_open); + assert_eq!(domain_hash(*sibling, *open, *domain), *next_open); } if *is_padding_close { // TODOOOOOO } else { assert!(!*is_padding_close_next); - assert_eq!(hash(*sibling, *close), *next_close); + assert_eq!( + domain_hash(*sibling, *close, *domain), + *next_close, + "noooooo" + ); } } else { if *is_padding_open { // TODOOOOOO } else { assert!(!*is_padding_open_next); - assert_eq!(hash(*open, *sibling), *next_open); + // assert_eq!(domain_hash(*open, *sibling, *next_domain), *next_open); + + // for i in 0..1024 { + // dbg!(i, domain); + // if temp_hash(*open, *sibling, Fr::from(i)) == *next_close { + // assert_eq!(domain_hash(*open, *sibling, *domain), *next_close, "???"); + // panic!("{}", i); + // } + + // } + // panic!("noooooo"); + + assert_eq!( + domain_hash(*open, *sibling, *domain), + *next_close, + "noooooo" + ); } if *is_padding_close { // TODOOOOOO } else { assert!(!*is_padding_close_next); - assert_eq!(hash(*close, *sibling), *next_close); + assert_eq!(domain_hash(*close, *sibling, *domain), *next_close); } } } @@ -949,13 +1048,9 @@ fn fr(x: HexBytes<32>) -> Fr { Fr::from_bytes(&x.0).unwrap() } -pub fn hash(x: Fr, y: Fr) -> Fr { - Hashable::hash_with_domain([x, y], Fr::zero()) -} - fn storage_key_hash(key: U256) -> Fr { let (high, low) = split_word(key); - hash(high, low) + domain_hash(high, low, HashDomain::NodeTypeLeaf) } fn split_word(x: U256) -> (Fr, Fr) { diff --git a/src/util.rs b/src/util.rs index c148199b..1f0bc3f1 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,4 +1,5 @@ use crate::serde::HexBytes; +use crate::types::HashDomain; use ethers_core::{ k256::elliptic_curve::PrimeField, types::{Address, U256}, @@ -12,7 +13,16 @@ pub(crate) fn fr(x: HexBytes<32>) -> Fr { } pub(crate) fn hash(x: Fr, y: Fr) -> Fr { - Hashable::hash_with_domain([x, y], Fr::zero()) + panic!("migrating away from thisssss") +} + +pub fn domain_hash(x: Fr, y: Fr, domain: HashDomain) -> Fr { + Hashable::hash_with_domain([x, y], Fr::from(Into::::into(domain))) + // Hashable::hash_with_domain([x, y], domain) +} + +pub fn temp_hash(x: Fr, y: Fr, domain: Fr) -> Fr { + Hashable::hash_with_domain([x, y], domain) } pub(crate) trait Bit { @@ -101,7 +111,7 @@ pub fn u256_to_big_endian(x: &U256) -> Vec { pub fn storage_key_hash(key: U256) -> Fr { let (high, low) = split_word(key); - hash(high, low) + domain_hash(high, low, HashDomain::NodeTypeLeaf) } pub fn account_key(address: Address) -> Fr { @@ -110,7 +120,8 @@ pub fn account_key(address: Address) -> Fr { let address_high = Fr::from_u128(u128::from_be_bytes(high_bytes)); let address_low = Fr::from_u128(u128::from(u32::from_be_bytes(low_bytes)) << 96); - hash(address_high, address_low) + // dbg!(domain_hash(address_high, address_low, HashDomain::Pair)); + domain_hash(address_high, address_low, HashDomain::Pair) } #[cfg(test)] From 753d2f9112f82828180d49d4974495ce4cab7c33 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 26 Jul 2023 15:48:13 +0800 Subject: [PATCH 09/86] Sanity check for existing account trace passes --- src/tests.rs | 25 ++++++ .../existing_account_balance_update.json | 79 +++++++++++++++++++ src/types.rs | 36 +++++---- 3 files changed, 126 insertions(+), 14 deletions(-) create mode 100644 src/traces/existing_account_balance_update.json diff --git a/src/tests.rs b/src/tests.rs index 0de70961..a9b79dc4 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -32,6 +32,8 @@ fn empty_account_type_1() { assert_eq!( format!("{}\n", json), include_str!("traces/empty_account_type_1.json"), + "{}", + json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); @@ -43,6 +45,29 @@ fn empty_account_type_1() { proof.check(); } +#[test] +fn existing_account_balance_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(2), + U256::from(1231412), + U256::one(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_account_balance_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + proof.check(); +} + #[ignore = "type 2 empty account proofs are incomplete"] #[test] fn empty_account_type_2() { diff --git a/src/traces/existing_account_balance_update.json b/src/traces/existing_account_balance_update.json new file mode 100644 index 00000000..870afe88 --- /dev/null +++ b/src/traces/existing_account_balance_update.json @@ -0,0 +1,79 @@ +{ + "address": "0x0202020202020202020202020202020202020202", + "accountKey": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", + "node_type": 5 + }, + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "sibling": "0x0f83a2e43aa2c5994001f58a94b99b65f39449455e291766d20feca59209cd08", + "node_type": 6 + } + ], + "pathPart": "0x7" + }, + { + "root": "0xc5249c83fd415dfaefc8a571baf809928ee9cf3a83db725e67b5efab2c849e2a", + "leaf": { + "value": "0x7aaaf309a30602bd2cada44848a5345527cddb78d8ebcbf95bd03e56a9cec528", + "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", + "node_type": 5 + }, + "path": [ + { + "value": "0x3deb29f5a72c623e0562111611ded2c719fadb6710fe5aa8405f9b9c3c201b0c", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x8da46c9ad5d617b5758c054ac32064f074016de279fe6dc676c1216c5ebd792f", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xc194e5ef0982a25bbcd4932093d59d9f775b68f5fc904c8120096edc877b4628", + "sibling": "0x0f83a2e43aa2c5994001f58a94b99b65f39449455e291766d20feca59209cd08", + "node_type": 6 + } + ], + "pathPart": "0x7" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x12ca34", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 9f26c379..67598ffa 100644 --- a/src/types.rs +++ b/src/types.rs @@ -28,7 +28,7 @@ pub enum HashDomain { NodeTypeBranch2 = 8, NodeTypeBranch3 = 9, Pair = 512, - AccountFields = 2048, + AccountFields = 5 * 256, // Test = 1 // TwoElements for keys, storage value, and keccak code hash, = 512 // Five(Six?)Elements for account fields.... @@ -60,7 +60,7 @@ impl Into for HashDomain { Self::NodeTypeBranch2 => 8, Self::NodeTypeBranch3 => 9, Self::Pair => 2 * 256, - AccountFields => 4 * 256, + AccountFields => 5 * 256, } } } @@ -406,7 +406,9 @@ impl From<(MPTProofType, SMTTrace)> for Proof { }; dbg!("6"); + dbg!(leafs); dbg!(leaf_hashes); + dbg!(key); assert_eq!(old_account_hash_traces[5][2], leaf_hashes[0]); assert_eq!(new_account_hash_traces[5][2], leaf_hashes[1]); @@ -494,22 +496,22 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) // let real_account: Account = (&account, storage_root).try_into().unwrap(); let (codehash_hi, codehash_lo) = hi_lo(account.code_hash); - let h1 = hash(codehash_hi, codehash_lo); - let h2 = hash(storage_root, h1); + let h1 = domain_hash(codehash_hi, codehash_lo, HashDomain::Pair); + let h2 = domain_hash(storage_root, h1, HashDomain::AccountFields); dbg!("account_hash_traces 1"); let nonce_and_codesize = Fr::from(account.nonce) + Fr::from(account.code_size) * Fr::from(1 << 32).square(); let balance = big_uint_to_fr(&account.balance); - let h3 = hash(nonce_and_codesize, balance); + let h3 = domain_hash(nonce_and_codesize, balance, HashDomain::AccountFields); - let h4 = hash(h3, h2); + let h4 = domain_hash(h3, h2, HashDomain::AccountFields); let account_key = account_key(address); - let h5 = hash(Fr::one(), account_key); + // let h5 = hash(Fr::one(), account_key); let poseidon_codehash = big_uint_to_fr(&account.poseidon_code_hash); - let account_hash = hash(h4, poseidon_codehash); + let account_hash = domain_hash(h4, poseidon_codehash, HashDomain::AccountFields); let mut account_hash_traces = [[Fr::zero(); 3]; 7]; account_hash_traces[0] = [codehash_hi, codehash_lo, h1]; @@ -517,12 +519,18 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) account_hash_traces[2] = [nonce_and_codesize, balance, h3]; account_hash_traces[3] = [h3, h2, h4]; // account_hash_traces[4] = [h4, poseidon_codehash, account_hash]; - account_hash_traces[5] = [Fr::one(), account_key, h5]; // this should be the sibling? - account_hash_traces[6] = [h5, account_hash, hash(h5, account_hash)]; + account_hash_traces[5] = [ + account_key, + account_hash, + domain_hash(account_key, account_hash, HashDomain::NodeTypeEmpty), + ]; // this should be the sibling? + // account_hash_traces[6] = [h5, account_hash, hash(h5, account_hash)]; // h4 is value of node? // assert_eq!(real_account.account_hash(), account_hash); + dbg!(account_key, account_hash); + account_hash_traces } @@ -883,15 +891,15 @@ impl Proof { self.leafs[0].unwrap().value_hash, HashDomain::NodeTypeEmpty, ), - self.old_account_hash_traces[5][2], // is this right??? + self.old_account_hash_traces[5][2], ); assert_eq!( domain_hash( - self.leafs[0].unwrap().key, - self.leafs[0].unwrap().value_hash, + self.leafs[1].unwrap().key, + self.leafs[1].unwrap().value_hash, HashDomain::NodeTypeEmpty, ), - self.new_account_hash_traces[5][2], // is this right??? + self.new_account_hash_traces[5][2], ); // // storage poseidon hashes are correct From 5ce3895eccae9b1fef5664ac9ac2ea0d16212b6b Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 26 Jul 2023 19:35:28 +0800 Subject: [PATCH 10/86] Handle type 1 extensions --- src/tests.rs | 29 ++++ .../empty_account_type_1_balance_update.json | 83 +++++++++ src/types.rs | 159 ++++++++++++------ 3 files changed, 218 insertions(+), 53 deletions(-) create mode 100644 src/traces/empty_account_type_1_balance_update.json diff --git a/src/tests.rs b/src/tests.rs index a9b79dc4..f3a9fcc1 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -68,6 +68,35 @@ fn existing_account_balance_update() { proof.check(); } +#[test] +fn empty_account_type_1_balance_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::zero(), + U256::from(200), + U256::zero(), + None, + ); + + assert!( + trace.account_update[0].is_none() && trace.account_path[0].leaf.is_some(), + "old account is not type 1" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_1_balance_update.json"), + "{}", + json + ); + + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + proof.check(); +} + #[ignore = "type 2 empty account proofs are incomplete"] #[test] fn empty_account_type_2() { diff --git a/src/traces/empty_account_type_1_balance_update.json b/src/traces/empty_account_type_1_balance_update.json new file mode 100644 index 00000000..1bd3b06d --- /dev/null +++ b/src/traces/empty_account_type_1_balance_update.json @@ -0,0 +1,83 @@ +{ + "address": "0x0000000000000000000000000000000000000000", + "accountKey": "0x228442949e7ba388bf9c08ec9374c72a579a39d2a1bf453d87dae5368c5f3c1d", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "sibling": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "node_type": 9 + }, + { + "value": "0x936f5938a27c18791e4ed02b0a1ac88b3e09f4f8c3a84f1a9a75fa8f516ef902", + "sibling": "0xd9c820802763f8140cd3557566054ddbddacb4433830a7bb0e30c1db08dfa914", + "node_type": 6 + } + ], + "pathPart": "0x2" + }, + { + "root": "0x2d38fa2f00a562151220ff34ed775c691317d7d5fec1c6be447faa300ecd4004", + "leaf": { + "value": "0xd40db0ee83e5d59382ab7774bf76b2c0a2ed10883acebdb44e0b05d1d0f57e11", + "sibling": "0x228442949e7ba388bf9c08ec9374c72a579a39d2a1bf453d87dae5368c5f3c1d", + "node_type": 5 + }, + "path": [ + { + "value": "0x29a4a36016f84ad2e2084cebee65859144e77b6f2bb08f568433dcd46801a727", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0xd734c75c45b9fbe3aab7b3bcbe20967dd6568d33e611a6aaf0817cfa49646d19", + "sibling": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "node_type": 9 + }, + { + "value": "0xf5a63132857ec8fe95ccd1f08b1a8a6f3089088e529925cbc3f4448ba6aea225", + "sibling": "0xd9c820802763f8140cd3557566054ddbddacb4433830a7bb0e30c1db08dfa914", + "node_type": 8 + }, + { + "value": "0x8af58c490690e30fae9c999638473b5e2a0e72a892e2a5603670663b419fd90c", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0xbd652a8fd7bfe57630c2504e1b9fbe15da66f033274ee8f49b0dee77d447c504", + "sibling": "0x936f5938a27c18791e4ed02b0a1ac88b3e09f4f8c3a84f1a9a75fa8f516ef902", + "node_type": 6 + } + ], + "pathPart": "0x2" + } + ], + "accountUpdate": [ + null, + { + "nonce": 0, + "balance": "0xc8", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 67598ffa..2cb83744 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,4 +1,5 @@ use crate::{ + gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ account_key, domain_hash, fr_from_biguint, hash, rlc, temp_hash, u256_from_biguint, @@ -19,7 +20,7 @@ pub mod trie; pub use constants::HASH_ZERO_ZERO; use storage::StorageProof; -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum HashDomain { NodeTypeEmpty = 4, // this is not needed? // it is somehow used for leaf domain hashes? NodeTypeLeaf = 5, // Rename to Leaf... @@ -162,7 +163,7 @@ impl LeafNode { #[derive(Clone, Debug)] pub struct Proof { pub claim: Claim, - // direction, open value, close value, sibling, is_padding_open, is_padding_close + // direction, open_hash_domain, close_hash_domain, open value, close value, sibling, is_padding_open, is_padding_close pub address_hash_traces: Vec<(bool, HashDomain, Fr, Fr, Fr, bool, bool)>, // TODO: make this optional @@ -534,6 +535,20 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) account_hash_traces } +fn check_domain_consistency(before: HashDomain, after: HashDomain, direction: bool) { + if direction { + assert!( + before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch1 + || before == HashDomain::NodeTypeBranch2 && after == HashDomain::NodeTypeBranch3 + ); + } else { + assert!( + before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch2 + || before == HashDomain::NodeTypeBranch1 && after == HashDomain::NodeTypeBranch3 + ); + } +} + fn get_internal_hash_traces( key: Fr, leaf_hashes: [Fr; 2], @@ -546,13 +561,37 @@ fn get_internal_hash_traces( .zip_longest(close_hash_traces.iter()) .enumerate() { + let direction = key.bit(i); address_hash_traces.push(match e { EitherOrBoth::Both(open, close) => { assert_eq!(open.sibling, close.sibling); - assert_eq!(open.node_type, close.node_type); + let open_domain = HashDomain::try_from(open.node_type).unwrap(); + let close_domain = HashDomain::try_from(close.node_type).unwrap(); + dbg!(open_domain, close_domain); + + let domain = if open_domain != close_domain { + // This can only happen when inserting or deleting a node. + assert!(open_hash_traces.len() != close_hash_traces.len()); + assert!( + i == std::cmp::min(open_hash_traces.len(), close_hash_traces.len()) - 1 + ); + + if i == open_hash_traces.len() - 1 { + // Inserting a leaf, so open is before insertion, close is after insertion. + check_domain_consistency(open_domain, close_domain, direction); + open_domain + } else { + // Deleting a leaf, so open is after insertion, close is before insertion. + check_domain_consistency(close_domain, open_domain, direction); + close_domain + } + } else { + open_domain + }; + ( - key.bit(i), - HashDomain::try_from(open.node_type).unwrap(), + direction, + domain, fr(open.value), fr(close.value), fr(open.sibling), @@ -561,7 +600,7 @@ fn get_internal_hash_traces( ) } EitherOrBoth::Left(open) => ( - key.bit(i), + direction, HashDomain::try_from(open.node_type).unwrap(), fr(open.value), leaf_hashes[1], @@ -570,7 +609,7 @@ fn get_internal_hash_traces( true, ), EitherOrBoth::Right(close) => ( - key.bit(i), + direction, HashDomain::try_from(close.node_type).unwrap(), leaf_hashes[0], fr(close.value), @@ -950,6 +989,8 @@ fn check_hash_traces(traces: &[(bool, Fr, Fr, Fr)]) { } fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) { + let mut previous_path_type: Option = None; + let current_hash_traces = traces.iter(); let mut next_hash_traces = traces.iter(); next_hash_traces.next(); @@ -958,59 +999,71 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) (_, next_domain, next_open, next_close, _, is_padding_open_next, is_padding_close_next), ) in current_hash_traces.zip(next_hash_traces) { - dbg!(domain, next_domain); - let x: u64 = (*domain).into(); - dbg!(x); - if *direction { - if *is_padding_open { + let path_type = match (is_padding_open, is_padding_close) { + (false, false) => PathType::Common, + (false, true) => PathType::ExtensionOld, + (true, false) => PathType::ExtensionNew, + (true, true) => unreachable!(), + }; - // TODOOOOOO - } else { - assert!(!*is_padding_open_next); - assert_eq!(domain_hash(*sibling, *open, *domain), *next_open); - } + match path_type { + PathType::Start => unreachable!(), + PathType::Common => { + let [open_domain, close_domain] = + if previous_path_type == Some(PathType::ExtensionOld) { + unimplemented!("account leaf deletion"); + } else if previous_path_type == Some(PathType::ExtensionNew) { + match *domain { + HashDomain::NodeTypeBranch0 => [ + HashDomain::NodeTypeBranch0, + if *direction { + HashDomain::NodeTypeBranch1 + } else { + HashDomain::NodeTypeBranch2 + }, + ], + HashDomain::NodeTypeBranch1 => unimplemented!("type 2 extension"), + HashDomain::NodeTypeBranch2 => unimplemented!("type 2 extension"), + HashDomain::NodeTypeBranch3 => unreachable!("both siblings already present"), + _ => unreachable!(), + } + } else { + [*domain, *domain] + }; - if *is_padding_close { - // TODOOOOOO - } else { - assert!(!*is_padding_close_next); - assert_eq!( - domain_hash(*sibling, *close, *domain), - *next_close, - "noooooo" - ); + if *direction { + assert_eq!(domain_hash(*sibling, *open, *domain), *next_open); + assert_eq!(domain_hash(*sibling, *close, *domain), *next_close); + } else { + assert_eq!(domain_hash(*open, *sibling, open_domain), *next_open); + assert_eq!(domain_hash(*close, *sibling, close_domain), *next_close); + } } - } else { - if *is_padding_open { - // TODOOOOOO - } else { - assert!(!*is_padding_open_next); - // assert_eq!(domain_hash(*open, *sibling, *next_domain), *next_open); - - // for i in 0..1024 { - // dbg!(i, domain); - // if temp_hash(*open, *sibling, Fr::from(i)) == *next_close { - // assert_eq!(domain_hash(*open, *sibling, *domain), *next_close, "???"); - // panic!("{}", i); - // } - - // } - // panic!("noooooo"); - - assert_eq!( - domain_hash(*open, *sibling, *domain), - *next_close, - "noooooo" + PathType::ExtensionOld => { + assert!( + previous_path_type.is_none() + || previous_path_type == Some(PathType::ExtensionOld) ); + if *direction { + assert_eq!(domain_hash(*sibling, *open, *domain), *next_open); + } else { + assert_eq!(domain_hash(*open, *sibling, *domain), *next_open); + } } - - if *is_padding_close { - // TODOOOOOO - } else { - assert!(!*is_padding_close_next); - assert_eq!(domain_hash(*close, *sibling, *domain), *next_close); + PathType::ExtensionNew => { + assert!( + previous_path_type.is_none() + || previous_path_type == Some(PathType::ExtensionNew) + ); + if *direction { + assert_eq!(domain_hash(*sibling, *close, *domain), *next_close); + } else { + assert_eq!(domain_hash(*close, *sibling, *domain), *next_close); + } } } + + previous_path_type = Some(path_type); } } From a49ac72e494ce8dc072523100305eafa15317f70 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 26 Jul 2023 20:36:43 +0800 Subject: [PATCH 11/86] Add nonce traces --- src/tests.rs | 53 ++++++++++ .../empty_account_type_1_nonce_update.json | 78 +++++++++++++++ src/traces/existing_account_nonce_update.json | 99 +++++++++++++++++++ src/types.rs | 4 +- 4 files changed, 232 insertions(+), 2 deletions(-) create mode 100644 src/traces/empty_account_type_1_nonce_update.json create mode 100644 src/traces/existing_account_nonce_update.json diff --git a/src/tests.rs b/src/tests.rs index f3a9fcc1..2b8e8761 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -97,9 +97,62 @@ fn empty_account_type_1_balance_update() { proof.check(); } +#[test] +fn existing_account_nonce_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::NonceChanged, + Address::repeat_byte(4), + U256::one(), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_account_nonce_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::NonceChanged, trace)); + proof.check(); +} + +#[test] +fn empty_account_type_1_nonce_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(11), + U256::from(200), + U256::zero(), + None, + ); + + assert!( + trace.account_update[0].is_none() && trace.account_path[0].leaf.is_some(), + "old account is not type 1" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_1_nonce_update.json"), + "{}", + json + ); + + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + proof.check(); +} + #[ignore = "type 2 empty account proofs are incomplete"] #[test] fn empty_account_type_2() { + // i = 20 should be type 2? for i in 104..255 { dbg!(i); let mut generator = intital_generator(); diff --git a/src/traces/empty_account_type_1_nonce_update.json b/src/traces/empty_account_type_1_nonce_update.json new file mode 100644 index 00000000..d289da9a --- /dev/null +++ b/src/traces/empty_account_type_1_nonce_update.json @@ -0,0 +1,78 @@ +{ + "address": "0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b", + "accountKey": "0xf732e39dd1c1d610d1e5ba97c55c156bf2e9b3c9f13d26f655ea18796bdda90f", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", + "node_type": 5 + }, + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "sibling": "0x0f83a2e43aa2c5994001f58a94b99b65f39449455e291766d20feca59209cd08", + "node_type": 6 + } + ], + "pathPart": "0x7" + }, + { + "root": "0xbe2dc996b66629f00795ce14250c14b42b09d7038b71a0f58ef34a281022bb0f", + "leaf": { + "value": "0xd40db0ee83e5d59382ab7774bf76b2c0a2ed10883acebdb44e0b05d1d0f57e11", + "sibling": "0xf732e39dd1c1d610d1e5ba97c55c156bf2e9b3c9f13d26f655ea18796bdda90f", + "node_type": 5 + }, + "path": [ + { + "value": "0xda3dba5ee4b4b8e50f93c30a980754663229b7e06caf80e45693a3e9145d110b", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xa363a8082319100b8986fcc2dfbf53cd29f59c52dfec9434708fcd9a52cc222c", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1b329f2eba6c8ffe0c05bc85f9f6f667806ed7726bb957380849ab28ffd03f02", + "sibling": "0x0f83a2e43aa2c5994001f58a94b99b65f39449455e291766d20feca59209cd08", + "node_type": 7 + }, + { + "value": "0x20f858bbc21a6ccf250eddcc29fe8618e35b6ffedc167a8e73dc8a58fe30d40f", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x7" + } + ], + "accountUpdate": [ + null, + { + "nonce": 0, + "balance": "0xc8", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/traces/existing_account_nonce_update.json b/src/traces/existing_account_nonce_update.json new file mode 100644 index 00000000..29b1baea --- /dev/null +++ b/src/traces/existing_account_nonce_update.json @@ -0,0 +1,99 @@ +{ + "address": "0x0404040404040404040404040404040404040404", + "accountKey": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x390dad90d28a127e8aba1a8a2872e68ac9acadfbf28476766e5fed56c347630f", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0xa06587340be88ba91a07068e100cf3ac1c383de6f9e6cc023e1a550bc307830d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x0dbed2de655bdf31c59616230ccbdacf461df536443ebadaf86f8a63674eab0a", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + }, + { + "root": "0xd853b927733f79dff7da6cd8a8ca01438816ec82d4946a8dcb5e35381ff58e0f", + "leaf": { + "value": "0x02d35c0011d4d648ad35580cdc6cc18beb8b4a6997cda5a113973270c5786703", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0x5e4316d009eee2ba1658d79287e4d488f5a2c10bc4305baeb84a80f6ebbfed26", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0xb19bdb62174b1da0ea350e2f16a1dbe2e565f20773a3bf627d1963e2a4ac3b0b", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x412ef57db973ff43688939fcc76a85a8d48b03e660f87e983073f1055ea1d62b", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0xa7441f0351f136dd9081d1692652bd06f2e754f658ecb21c58b5113101fd9105", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0xfee2f1b4ab0139a1443e94ea71e260146a7a09e3f003a6cbe2f7197b1ecf430f", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 1, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 2cb83744..37574da8 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1032,8 +1032,8 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) }; if *direction { - assert_eq!(domain_hash(*sibling, *open, *domain), *next_open); - assert_eq!(domain_hash(*sibling, *close, *domain), *next_close); + assert_eq!(domain_hash(*sibling, *open, open_domain), *next_open); + assert_eq!(domain_hash(*sibling, *close, close_domain), *next_close); } else { assert_eq!(domain_hash(*open, *sibling, open_domain), *next_open); assert_eq!(domain_hash(*close, *sibling, close_domain), *next_close); From 21ba195d0bc2dd07ec8e54c084cb4933c1c12877 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 26 Jul 2023 20:58:43 +0800 Subject: [PATCH 12/86] Add code size, keccak code hash, and poseidon code hash traces --- src/tests.rs | 74 ++++++++++++++ .../existing_account_code_size_update.json | 99 +++++++++++++++++++ ...isting_account_keccak_codehash_update.json | 99 +++++++++++++++++++ ...ting_account_poseidon_codehash_update.json | 99 +++++++++++++++++++ src/types.rs | 82 ++++++++++----- 5 files changed, 430 insertions(+), 23 deletions(-) create mode 100644 src/traces/existing_account_code_size_update.json create mode 100644 src/traces/existing_account_keccak_codehash_update.json create mode 100644 src/traces/existing_account_poseidon_codehash_update.json diff --git a/src/tests.rs b/src/tests.rs index 2b8e8761..01ad9d8d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -149,6 +149,80 @@ fn empty_account_type_1_nonce_update() { proof.check(); } +#[test] +fn existing_account_code_size_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::CodeSizeExists, + Address::repeat_byte(4), + U256::from(2342114), + U256::zero(), + None, + ); + + assert!( + trace.account_update[0].is_some(), + "old account does not exist" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_account_code_size_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::CodeSizeExists, trace)); + proof.check(); +} + +#[test] +fn existing_account_keccak_codehash_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::CodeHashExists, + Address::repeat_byte(8), + U256([1111, u64::MAX, 444, 555]), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_account_keccak_codehash_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::CodeHashExists, trace)); + proof.check(); +} + +#[test] +fn existing_account_poseidon_codehash_update() { + let mut generator = intital_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::PoseidonCodeHashExists, + Address::repeat_byte(4), + U256([u64::MAX, u64::MAX, u64::MAX, 2342]), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_account_poseidon_codehash_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::PoseidonCodeHashExists, trace)); + proof.check(); +} + #[ignore = "type 2 empty account proofs are incomplete"] #[test] fn empty_account_type_2() { diff --git a/src/traces/existing_account_code_size_update.json b/src/traces/existing_account_code_size_update.json new file mode 100644 index 00000000..044106e0 --- /dev/null +++ b/src/traces/existing_account_code_size_update.json @@ -0,0 +1,99 @@ +{ + "address": "0x0404040404040404040404040404040404040404", + "accountKey": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x390dad90d28a127e8aba1a8a2872e68ac9acadfbf28476766e5fed56c347630f", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0xa06587340be88ba91a07068e100cf3ac1c383de6f9e6cc023e1a550bc307830d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x0dbed2de655bdf31c59616230ccbdacf461df536443ebadaf86f8a63674eab0a", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + }, + { + "root": "0x59970f087910aad2307a0cceff2c361e1f428d51b5858feb07c79925e3359309", + "leaf": { + "value": "0xec307bc289a81964a2f2d79a685ba399033aa5f82961d56193495ef23328d304", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0xb6d1d64697db79093624bbc8f8f45b87b1fe4184384da5abefea6565336c442a", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0xd3aecf7a427b062cf302a546baa9931fe2397ba1cf5ca11428731fd07342c42c", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x28692d96e940426fe7915ee2361288e6d9b07d773aa481b9f109fbf869279828", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0x52c04e22a6f7e8dac86166c6e2cb9177e5b0f45961ff441cde732bf1bf63f022", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x57475c61be34bcba6a5a4e68674b5394dd679c9f398b7706b0bb9ee42e39bf10", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 2342114 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/traces/existing_account_keccak_codehash_update.json b/src/traces/existing_account_keccak_codehash_update.json new file mode 100644 index 00000000..d71b3c16 --- /dev/null +++ b/src/traces/existing_account_keccak_codehash_update.json @@ -0,0 +1,99 @@ +{ + "address": "0x0808080808080808080808080808080808080808", + "accountKey": "0x2cb1dd51e4f0830f4eb3e0af2736d327ccc7e7b9ddf6e5846edaf7b2c3fc562b", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0x2cb1dd51e4f0830f4eb3e0af2736d327ccc7e7b9ddf6e5846edaf7b2c3fc562b", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x390dad90d28a127e8aba1a8a2872e68ac9acadfbf28476766e5fed56c347630f", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0xa06587340be88ba91a07068e100cf3ac1c383de6f9e6cc023e1a550bc307830d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "sibling": "0x0dbed2de655bdf31c59616230ccbdacf461df536443ebadaf86f8a63674eab0a", + "node_type": 6 + } + ], + "pathPart": "0xc" + }, + { + "root": "0x29e91efebc15b63fa13956706543e5cc443a7a54eb3b489d9845657006afcc25", + "leaf": { + "value": "0x48eb1308ad440c0f152d9c303487acee533938575d0bfaad7f19665710945524", + "sibling": "0x2cb1dd51e4f0830f4eb3e0af2736d327ccc7e7b9ddf6e5846edaf7b2c3fc562b", + "node_type": 5 + }, + "path": [ + { + "value": "0x69b44562239ca7306beb63b85f11b12deff1c7e088036549060fbf71bc53f103", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x3a95af4f7bcce738f70687b9151ac7c65e6d3a41de3a5d93c5213147006d7617", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x8835cfdc1a294c6920b01f2dc221ee51108826720ef974783af3002c352d7a08", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0x33ba3a0d40f242c9d2a6886f291338ef264780b18a4cbf4901ac92e703489f2a", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0xd65eeb1d659d450396ecc402bbd099d3b43b6d294a4e390d5edd0cf874029517", + "sibling": "0x0dbed2de655bdf31c59616230ccbdacf461df536443ebadaf86f8a63674eab0a", + "node_type": 6 + } + ], + "pathPart": "0xc" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x000000000000022b00000000000001bcffffffffffffffff0000000000000457", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/traces/existing_account_poseidon_codehash_update.json b/src/traces/existing_account_poseidon_codehash_update.json new file mode 100644 index 00000000..4ac04aa4 --- /dev/null +++ b/src/traces/existing_account_poseidon_codehash_update.json @@ -0,0 +1,99 @@ +{ + "address": "0x0404040404040404040404040404040404040404", + "accountKey": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "leaf": { + "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0x0893ab6eb7dfbe3908cf199964e5a8eaa42673fee2dc4cdfdff46a037e100a08", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0x390dad90d28a127e8aba1a8a2872e68ac9acadfbf28476766e5fed56c347630f", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0xa06587340be88ba91a07068e100cf3ac1c383de6f9e6cc023e1a550bc307830d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x0dbed2de655bdf31c59616230ccbdacf461df536443ebadaf86f8a63674eab0a", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + }, + { + "root": "0x9837669f15bfc8788c34b17f6dae98b06cd6c66c9c461972a2a7d23ff174a32d", + "leaf": { + "value": "0x5b49cbbb725f686b759f6308ee12d00f79a9ed37ecdb98583993e078b6ace81f", + "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", + "node_type": 5 + }, + "path": [ + { + "value": "0xa2ccb54215fa910bb941a125e5d46572d673a70fb7527c2b025a4c28625db20d", + "sibling": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "node_type": 9 + }, + { + "value": "0xb5607215723498d84c61ab2c2d96c2f36964d4b9c8024e06ead9c1224c830c13", + "sibling": "0x03703ecd3a382e78f6dd10259d232f45e22b592e2c91c091f3333ba8fc8ddb0a", + "node_type": 9 + }, + { + "value": "0xd9d2a893b4f46b0c585d5aac5922e5d39f0280cd38906c117204aeda12fc3500", + "sibling": "0xd93a8533b78805da6242290964713fcf98fe162788121fb006d6e32154a0ac03", + "node_type": 7 + }, + { + "value": "0x2c26a037cd5bfe48555e868cb30c380e4e1ac61a92789c9e1623f6d1b798571e", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0xc7f3df61b5713c3de0e278bdc412da2b9b34f6da9f182ff8694305178ae30b2b", + "sibling": "0x093476b5531dce3519bf3ebdb7c1762bda68f633fcb2e00a6cd194d46089ac10", + "node_type": 6 + } + ], + "pathPart": "0x1c" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000926ffffffffffffffffffffffffffffffffffffffffffffffff", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 37574da8..d67bab0d 100644 --- a/src/types.rs +++ b/src/types.rs @@ -246,7 +246,10 @@ impl From<(&MPTProofType, &SMTTrace)> for Claim { let [old_root, new_root] = trace.account_path.clone().map(|path| fr(path.root)); let address = trace.address.0.into(); let kind = ClaimKind::from((proof_type, trace)); + dbg!(kind); assert_eq!(MPTProofType::from(kind), *proof_type); + dbg!(MPTProofType::from(kind), *proof_type); + // panic!(); Self { new_root, old_root, @@ -341,28 +344,59 @@ impl From<(&MPTProofType, &SMTTrace)> for ClaimKind { } } [Some(old), Some(new)] => match *proof_type { - MPTProofType::NonceChanged => ClaimKind::Nonce { - old: Some(old.nonce), - new: Some(new.nonce), - }, - MPTProofType::BalanceChanged => ClaimKind::Balance { - old: Some(u256_from_biguint(&old.balance)), - new: Some(u256_from_biguint(&new.balance)), - }, - MPTProofType::AccountDoesNotExist => ClaimKind::IsEmpty(None), - MPTProofType::CodeHashExists => ClaimKind::CodeHash { - old: Some(u256_from_biguint(&old.code_hash)), - new: Some(u256_from_biguint(&new.code_hash)), - }, - MPTProofType::CodeSizeExists => ClaimKind::CodeSize { - old: Some(old.code_size), - new: Some(new.code_size), - }, - MPTProofType::PoseidonCodeHashExists => ClaimKind::PoseidonCodeHash { - old: Some(big_uint_to_fr(&old.poseidon_code_hash)), - new: Some(big_uint_to_fr(&new.poseidon_code_hash)), - }, - MPTProofType::StorageChanged | MPTProofType::StorageDoesNotExist => unreachable!(), + MPTProofType::NonceChanged => { + assert_eq!(old.balance, new.balance); + assert_eq!(old.code_size, new.code_size); + assert_eq!(old.code_hash, new.code_hash); + assert_eq!(old.poseidon_code_hash, new.poseidon_code_hash); + ClaimKind::Nonce { + old: Some(old.nonce), + new: Some(new.nonce), + } + } + MPTProofType::BalanceChanged => { + assert_eq!(old.nonce, new.nonce); + assert_eq!(old.code_size, new.code_size); + assert_eq!(old.code_hash, new.code_hash); + assert_eq!(old.poseidon_code_hash, new.poseidon_code_hash); + ClaimKind::Balance { + old: Some(u256_from_biguint(&old.balance)), + new: Some(u256_from_biguint(&new.balance)), + } + } + MPTProofType::CodeHashExists => { + assert_eq!(old.nonce, new.nonce); + assert_eq!(old.balance, new.balance); + assert_eq!(old.code_size, new.code_size); + assert_eq!(old.poseidon_code_hash, new.poseidon_code_hash); + ClaimKind::CodeHash { + old: Some(u256_from_biguint(&old.code_hash)), + new: Some(u256_from_biguint(&new.code_hash)), + } + } + MPTProofType::CodeSizeExists => { + assert_eq!(old.nonce, new.nonce); + assert_eq!(old.balance, new.balance); + assert_eq!(old.code_hash, new.code_hash); + assert_eq!(old.poseidon_code_hash, new.poseidon_code_hash); + ClaimKind::CodeSize { + old: Some(old.code_size), + new: Some(new.code_size), + } + } + MPTProofType::PoseidonCodeHashExists => { + assert_eq!(old.nonce, new.nonce); + assert_eq!(old.balance, new.balance); + assert_eq!(old.code_size, new.code_size); + assert_eq!(old.code_hash, new.code_hash); + ClaimKind::PoseidonCodeHash { + old: Some(big_uint_to_fr(&old.poseidon_code_hash)), + new: Some(big_uint_to_fr(&new.poseidon_code_hash)), + } + } + MPTProofType::AccountDoesNotExist + | MPTProofType::StorageChanged + | MPTProofType::StorageDoesNotExist => unreachable!(), MPTProofType::AccountDestructed => unimplemented!(), }, [Some(_old), None] => unimplemented!("SELFDESTRUCT"), @@ -1024,7 +1058,9 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) ], HashDomain::NodeTypeBranch1 => unimplemented!("type 2 extension"), HashDomain::NodeTypeBranch2 => unimplemented!("type 2 extension"), - HashDomain::NodeTypeBranch3 => unreachable!("both siblings already present"), + HashDomain::NodeTypeBranch3 => { + unreachable!("both siblings already present") + } _ => unreachable!(), } } else { From e978646c67392afbc2e3ce439ff24075a60cd999 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 00:15:29 +0800 Subject: [PATCH 13/86] Update hashes for storage traces --- src/gadgets/mpt_update.rs | 10 +- src/tests.rs | 105 +++++++++ src/traces/empty_storage_type_1_update.json | 159 +++++++++++++ src/traces/existing_storage_update.json | 219 ++++++++++++++++++ .../insert_into_singleton_storage_trie.json | 112 +++++++++ src/types.rs | 21 +- src/types/storage.rs | 64 +++-- src/types/trie.rs | 118 +++++++++- src/util.rs | 20 +- 9 files changed, 783 insertions(+), 45 deletions(-) create mode 100644 src/traces/empty_storage_type_1_update.json create mode 100644 src/traces/existing_storage_update.json create mode 100644 src/traces/insert_into_singleton_storage_trie.json diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 2a0fc3a2..2aa100b1 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -723,7 +723,7 @@ impl MptUpdateConfig { hash_is_zero.assign_value_and_inverse(region, offset, old.hash()); - other_key_hash.assign(region, offset, old.key_hash()); + // other_key_hash.assign(region, offset, old.key_hash()); other_leaf_data_hash.assign(region, offset, *old_value_hash); } (StorageLeaf::Empty { .. }, StorageLeaf::Empty { .. }) => { @@ -774,8 +774,8 @@ impl MptUpdateConfig { let sibling = match path_type { PathType::Start => unreachable!(), - PathType::Common | PathType::ExtensionOld => old.key_hash(), - PathType::ExtensionNew => new.key_hash(), + PathType::Common | PathType::ExtensionOld => old.key(), + PathType::ExtensionNew => new.key(), }; self.sibling.assign(region, offset, sibling); @@ -840,7 +840,7 @@ impl MptUpdateConfig { if key != other_key { let [.., other_key_hash, other_leaf_data_hash] = self.intermediate_values; - other_key_hash.assign(region, offset, new.key_hash()); + // other_key_hash.assign(region, offset, new.key_hash()); other_leaf_data_hash.assign(region, offset, new.value_hash()); } } @@ -854,7 +854,7 @@ impl MptUpdateConfig { if key != other_key { let [.., other_key_hash, other_leaf_data_hash] = self.intermediate_values; - other_key_hash.assign(region, offset, old.key_hash()); + // other_key_hash.assign(region, offset, old.key_hash()); other_leaf_data_hash.assign(region, offset, old.value_hash()); } } diff --git a/src/tests.rs b/src/tests.rs index 01ad9d8d..e68f6880 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -223,6 +223,111 @@ fn existing_account_poseidon_codehash_update() { proof.check(); } +#[test] +fn existing_storage_update() { + let mut generator = intital_generator(); + + for i in 40..60 { + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::one(), + U256::zero(), + Some(U256::from(i)), + ); + } + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(20), + U256::one(), + Some(U256::from(40)), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/existing_storage_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::StorageChanged, trace)); + proof.check(); +} + +#[test] +fn empty_storage_type_1_update() { + let mut generator = intital_generator(); + + for i in 40..60 { + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::one(), + U256::zero(), + Some(U256::from(i)), + ); + } + + // 0 is type 1 + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(307), + U256::zero(), + Some(U256::from(23412321)), + ); + dbg!(trace.state_path[0].clone().unwrap()); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_some(), + "old storage entry is not type 1" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_storage_type_1_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::StorageChanged, trace)); + proof.check(); +} + +#[test] +fn insert_into_singleton_storage_trie() { + let mut generator = intital_generator(); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256([1, 2, 3, 4]), + U256::zero(), + Some(U256([10, 20, 30, 40])), + ); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256([5, 6, 7, 8]), + U256::zero(), + Some(U256([50, 60, 70, 80])), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/insert_into_singleton_storage_trie.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + let proof = Proof::from((MPTProofType::StorageChanged, trace)); + proof.check(); +} + #[ignore = "type 2 empty account proofs are incomplete"] #[test] fn empty_account_type_2() { diff --git a/src/traces/empty_storage_type_1_update.json b/src/traces/empty_storage_type_1_update.json new file mode 100644 index 00000000..3ae3d88c --- /dev/null +++ b/src/traces/empty_storage_type_1_update.json @@ -0,0 +1,159 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x1e61b81343b4726a39b25af4fcd4809d2599b7344a26310c2ff3ea538b1bb720", + "leaf": { + "value": "0xf40471ec703f0c374188ffc2658895da71ba12520daa93978d162ff2ca71b900", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xfe041df6af919fb3d132f5257e5dba276fcee9ac9b19513717485f9722645317", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x15dd24c77e607e3b9ab731dc2370c289e8d383edbd407448b824e17857d6e60c", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x97964b77683ae9296232eec09287a5292fdcabad5ad45043b9b281aa8c9ebf05", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "leaf": { + "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "sibling": "0x34d524b5f5f6d93367bf6b6452a1aa7e17d8696555258de41be8002cc6cdd42f", + "node_type": 5 + }, + "path": [ + { + "value": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "sibling": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "node_type": 9 + }, + { + "value": "0x5d1276a69a4026e4fef7bcaf66a6a11282ec2a1607f2b245b8acb8fc9bd08927", + "sibling": "0xf0691fb03392278193e2b56be466d7c6ce4e11e9095cc4a5e5f3bc2dfa96df20", + "node_type": 9 + }, + { + "value": "0xd544f1089502952ca7f9a7c7a36e673ffe940269b1db269cfa325683bc580c28", + "sibling": "0x3e284a214b6cc48e7efb52245561b1341d66871759eff8a4c6651abb9885f005", + "node_type": 9 + }, + { + "value": "0xff54e4d29e6dcde6784ec1cdacbd6a30092719795f45f08a50e7514d0ed09a1e", + "sibling": "0xf20a556d831214034d26d72d4298b438082aeea33d871201a38432b243adc628", + "node_type": 7 + } + ], + "pathPart": "0x4" + }, + { + "root": "0xb63c17f2fe2bd4edc7362246aff9b8d02c0819fec8be095f6b4f0a1916599b1a", + "leaf": { + "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", + "sibling": "0xd4bbd1bcd3b00b743d57005fd62af4e0df6c021c92288e1bf5ede810b09c590a", + "node_type": 5 + }, + "path": [ + { + "value": "0x588ed0bd87bffa44e23f0842666d0884bbfb882c9423b216caf73211ab5cdc03", + "sibling": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "node_type": 9 + }, + { + "value": "0xbd78042c295097e3e5105483f361c663aec5827d3bd66a7e7651ba9453b24414", + "sibling": "0xf0691fb03392278193e2b56be466d7c6ce4e11e9095cc4a5e5f3bc2dfa96df20", + "node_type": 9 + }, + { + "value": "0x992cc9c028bb8b94dd8e81f8457618f9db67d76284cea3cc0989b4afbefe2e1a", + "sibling": "0x3e284a214b6cc48e7efb52245561b1341d66871759eff8a4c6651abb9885f005", + "node_type": 9 + }, + { + "value": "0xbfac6f01d0f8f2f32bd5c7a6c9c74a44f6a48df0bb8d2fde126feac487209f23", + "sibling": "0xf20a556d831214034d26d72d4298b438082aeea33d871201a38432b243adc628", + "node_type": 9 + }, + { + "value": "0xc6f68f9dcb9ede21466846e4fd907298de88431525a39c8d35a9f15d49e81f1f", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x70063bdea0ed4a911f714843e09cbb626727deae7cebbd78a5d693f5249a8407", + "sibling": "0xff54e4d29e6dcde6784ec1cdacbd6a30092719795f45f08a50e7514d0ed09a1e", + "node_type": 6 + } + ], + "pathPart": "0x14" + } + ], + "stateKey": "0xd4bbd1bcd3b00b743d57005fd62af4e0df6c021c92288e1bf5ede810b09c590a", + "stateUpdate": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000001653e61", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x0000000000000000000000000000000000000000000000000000000001653e61", + "value": "0x0000000000000000000000000000000000000000000000000000000000000133" + } + ] +} diff --git a/src/traces/existing_storage_update.json b/src/traces/existing_storage_update.json new file mode 100644 index 00000000..b1cd5a5f --- /dev/null +++ b/src/traces/existing_storage_update.json @@ -0,0 +1,219 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0xda976f8a96f934ef95039a0af321cae53b2c03d073da9938d5d6365e0a21b82e", + "leaf": { + "value": "0x955cc7b55a09e9141ad794466730f604e1eb4eb10a2e305d21cf4f790f44081d", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0x0b34118237386ca118c49ab4d298e36567cddf52abcc2d20807db0b4e15a8b01", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x547b44a81aa9399d7eda944530333aa26280421fd1561a28892038d9f0d92729", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x4c8b0a27fa1c9be0857281dc06c45625551270bc835feb9614d834c4aaae2818", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "leaf": { + "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "sibling": "0xf905bf0e3f6390d89aa4bfd38ebec0cd834a15c509be9796b05c44c34405b111", + "node_type": 5 + }, + "path": [ + { + "value": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x9594a5a6bf52685e0fbfbc9b10d02baa4525837fe7774cbe86ab5b96dd15ee0d", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0xf5ddf83d9e16d65c3bacd2e8093581d7c5da48dd8cf2ea7b3d07b15adbe2d525", + "sibling": "0x1159be0b5a22d4285fa446314948200958a5752517fbd165e9151c1ca978e601", + "node_type": 9 + }, + { + "value": "0xb708b9dd7dd910bd3aff840e6b5c57b3a539aa8177c0403d56a252bfced52a2a", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0xf652ffaa792e9ec458883972eb84eafd5dfd1e2c0c032605f13861bf8589991b", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x0fbb07b28f3fcb0b1927a527c1e851e84f682fa13afd4fa4962982e45e6a6929", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x7133ef86743d5e356ffec6fe0a58f525c6f1020f50da6a7e9219fb89dd295e0f", + "sibling": "0x4bc93095238464e0c132200f0ae157e2c5d3a238a0820815ebc600b415aeec0e", + "node_type": 7 + }, + { + "value": "0xafcd598e4d350231487a54da34cd5772aa222cd10465a9f481999526ffd8bc21", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x41a74d55b4d6bb5d49bff0d8d2453c41ea5e84e19f61c1a40df0165ad5573d1b", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x3571e57644a8d65fd0edf4109d4b3382f901d4c35b3083cd3e25e51b5a41ed1d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0x92f695d8435132c874a2db57bf1fae04f291d1ef1e551caff5a0ca27d29bea0b", + "sibling": "0x95c9a2c30288e0542ba69389bf846a5cbbd2fafe08ec225dff1d7e795561fc2f", + "node_type": 6 + } + ], + "pathPart": "0x5f9" + }, + { + "root": "0x8a84aca5b322747318b728b19ef62de090557bc0266deb1ca595b952096a7529", + "leaf": { + "value": "0x2c5d0be0aa5628aa1d5e7886757e225bb17312ac3db0e32ce442a2ff9ce6d511", + "sibling": "0xf905bf0e3f6390d89aa4bfd38ebec0cd834a15c509be9796b05c44c34405b111", + "node_type": 5 + }, + "path": [ + { + "value": "0xeef45d62d450a373a79e8346c621523779eff37836a674d7fbb20e886b995d0c", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x8331db301f440968f0130600b90d215e721dd40e4a2bcd29bab4446391ce002c", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0x17a3fd05ea42fdc83104bd2bed18444cf13336a9c4bed283ef9743ea12aaa113", + "sibling": "0x1159be0b5a22d4285fa446314948200958a5752517fbd165e9151c1ca978e601", + "node_type": 9 + }, + { + "value": "0xa5ffb7158393c1ac82909a4c82aa22caeb8f39aa777e28ebc7b49846a706a30d", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x2a1a9be599581240e9712da9d557d437f66efa9ae07f6392be9f54fd0115fc08", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x62aba3d23d1e11c3407c2d3a04af70e7aac2a5c0a356909e9c8faa2c686fa913", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x5e29eee17941093e287e545e4b01e192a4c38c3c8e9193d3d8826baf1f7e1d0b", + "sibling": "0x4bc93095238464e0c132200f0ae157e2c5d3a238a0820815ebc600b415aeec0e", + "node_type": 7 + }, + { + "value": "0x0244b7f852a9fc7c1e603020ccc818e3996f07404559d944421234bc85f1d509", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x461a403d60e2ad6e9d84672fecb931dbc07ef462e59d49c930834f1fd369802a", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x6c953a769610a414e1a279be76c757198249f0e8cb6e2957415b65085c2af403", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0x5790d950a6186fcf3513251370d06241571e78eea1279b276e17906c61816c05", + "sibling": "0x95c9a2c30288e0542ba69389bf846a5cbbd2fafe08ec225dff1d7e795561fc2f", + "node_type": 6 + } + ], + "pathPart": "0x5f9" + } + ], + "stateKey": "0xf905bf0e3f6390d89aa4bfd38ebec0cd834a15c509be9796b05c44c34405b111", + "stateUpdate": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000028", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000028", + "value": "0x0000000000000000000000000000000000000000000000000000000000000014" + } + ] +} diff --git a/src/traces/insert_into_singleton_storage_trie.json b/src/traces/insert_into_singleton_storage_trie.json new file mode 100644 index 00000000..03ea30b4 --- /dev/null +++ b/src/traces/insert_into_singleton_storage_trie.json @@ -0,0 +1,112 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0x83b9340c6a33165701daa415c32625ff2cf62956a23fa3229182d801b4aaaf17", + "leaf": { + "value": "0xf4d0c4b8b5e226544d147596eb560ce0e34f0397d126a4b3f0f34a3ef9f74103", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xe9d253e605a354db69343ff5f4184719df70a413ca8fe399d9a701f21f641a16", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x41bdefdca0b4003f8528065c189004814835b182f42a6d4df873f5cd0b42ea24", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xfa899826153ef28c7baf78e37799a8d9b4b59e612bc29e44d8519de254349b0b", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x5bd928092961b8afe05adf64c42fcaf762698ac9fa7a8e210b77c53c958bdd0d", + "leaf": { + "value": "0xecb1e80fe56518f7715d59f4127704ec8df5c63c4e0d7d69737ea4c4703ea917", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0x9883bd3c95e670456325da92f066458fe3b086084d53b17d20d99b4a2dd64918", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xa4d6b9ea2ee4a2c857c98f1d6a88dcd1a750d1b1d0c12f0c2eb07bdb008bb701", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x5b3ed283b85cf3b486d003219054470d79fc2a4d76c9e640ed858405de9dd62f", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0xf98272a84a0b269ca8570319baf2c68ebacb038a0e1076787aa85d547ff2cb07", + "leaf": { + "value": "0x7934cd98d51fd603e653f6b03b13edc269299a100867174016312db42eff3a2c", + "sibling": "0x55dbbd501fc21ad03be98003051b7bd08cdae7e153eefada883227167d198002", + "node_type": 5 + }, + "pathPart": "0x0" + }, + { + "root": "0x33aebe70c4315501e6367ceca3feb4cc404ffb710e393b1d4cfff3f553233c09", + "leaf": { + "value": "0x8564322fa664ff339902ab3e0a20582a4c65ca1bb8dfc1be45bfa48f0e43b20e", + "sibling": "0x84d212cc2c8afac2fe17b77867a38d5b9e1308b0b8b723df2ea83728579b5a0a", + "node_type": 5 + }, + "path": [ + { + "value": "0xe24a038e861c1be4dc33eda4c42c49e47d90532fe2e129bfc8b93504c8d0d32a", + "sibling": "0xf98272a84a0b269ca8570319baf2c68ebacb038a0e1076787aa85d547ff2cb07", + "node_type": 6 + } + ], + "pathPart": "0x0" + } + ], + "stateKey": "0x84d212cc2c8afac2fe17b77867a38d5b9e1308b0b8b723df2ea83728579b5a0a", + "stateUpdate": [ + { + "key": "0x00000000000000500000000000000046000000000000003c0000000000000032", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x00000000000000500000000000000046000000000000003c0000000000000032", + "value": "0x0000000000000008000000000000000700000000000000060000000000000005" + } + ] +} diff --git a/src/types.rs b/src/types.rs index d67bab0d..b5f55433 100644 --- a/src/types.rs +++ b/src/types.rs @@ -2,8 +2,8 @@ use crate::{ gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ - account_key, domain_hash, fr_from_biguint, hash, rlc, temp_hash, u256_from_biguint, - u256_from_hex, u256_to_big_endian, + account_key, check_domain_consistency, domain_hash, fr_from_biguint, hash, rlc, temp_hash, + u256_from_biguint, u256_from_hex, u256_to_big_endian, }, MPTProofType, }; @@ -569,20 +569,6 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) account_hash_traces } -fn check_domain_consistency(before: HashDomain, after: HashDomain, direction: bool) { - if direction { - assert!( - before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch1 - || before == HashDomain::NodeTypeBranch2 && after == HashDomain::NodeTypeBranch3 - ); - } else { - assert!( - before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch2 - || before == HashDomain::NodeTypeBranch1 && after == HashDomain::NodeTypeBranch3 - ); - } -} - fn get_internal_hash_traces( key: Fr, leaf_hashes: [Fr; 2], @@ -900,7 +886,10 @@ impl Proof { // fn new_account_leaf_hashes(&self) -> Vec {} // fn account_leaf_siblings(&self) -> Vec {} + #[cfg(test)] pub fn check(&self) { + self.storage.check(); + // poseidon hashes are correct check_hash_traces_new(&self.address_hash_traces); dbg!("check 1"); diff --git a/src/types/storage.rs b/src/types/storage.rs index 0ab3fb4b..f01df209 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -1,7 +1,7 @@ use crate::{ serde::{SMTNode, SMTTrace, StateData}, - types::trie::TrieRows, - util::{fr, hash, storage_key_hash, u256_from_hex, u256_hi_lo}, + types::{trie::TrieRows, Bit, HashDomain, PathType}, + util::{domain_hash, fr, storage_key_hash, u256_from_hex, u256_hi_lo}, }; use ethers_core::types::U256; use halo2_proofs::{arithmetic::FieldExt, halo2curves::bn256::Fr}; @@ -121,6 +121,45 @@ impl StorageProof { } } } + + #[cfg(test)] + pub fn check(&self) { + if let Self::Update { + key, + trie_rows, + old_leaf, + new_leaf, + } = self + { + // Check that trie rows are consistent and produce claimed roots. + trie_rows.check(self.old_root(), self.new_root()); + + // Check that directions match old and new keys. + for (i, row) in trie_rows.0.iter().enumerate() { + let old_key = old_leaf.key(); + let new_key = new_leaf.key(); + match row.path_type { + PathType::Start => unreachable!(), + PathType::Common => { + assert_eq!(row.direction, old_key.bit(i)); + assert_eq!(row.direction, new_key.bit(i)); + } + PathType::ExtensionOld => { + assert_eq!(row.direction, old_key.bit(i)); + } + PathType::ExtensionNew => { + assert_eq!(row.direction, new_key.bit(i)); + } + } + } + + // Check that final trie_row values match leaf hashes + if let Some(row) = trie_rows.0.last() { + assert_eq!(old_leaf.hash(), row.old); + assert_eq!(new_leaf.hash(), row.new); + } + } + } } impl StorageLeaf { @@ -166,10 +205,6 @@ impl StorageLeaf { } } - pub fn key_hash(&self) -> Fr { - hash(Fr::one(), self.key()) - } - // maybe make this an option? pub fn value(&self) -> U256 { match self { @@ -192,7 +227,7 @@ impl StorageLeaf { Self::Leaf { value_hash, .. } => *value_hash, Self::Entry { .. } => { let (high, low) = u256_hi_lo(&self.value()); - hash(Fr::from_u128(high), Fr::from_u128(low)) + domain_hash(Fr::from_u128(high), Fr::from_u128(low), HashDomain::Pair) } } } @@ -201,23 +236,21 @@ impl StorageLeaf { if let Self::Empty { .. } = self { Fr::zero() } else { - hash(self.key_hash(), self.value_hash()) + domain_hash(self.key(), self.value_hash(), HashDomain::NodeTypeEmpty) } } fn poseidon_lookups(&self) -> Vec<(Fr, Fr, Fr)> { - let mut lookups = vec![(Fr::one(), self.key(), self.key_hash())]; + let mut lookups = vec![]; match self { Self::Empty { .. } => (), - Self::Leaf { value_hash, .. } => { - lookups.push((self.key_hash(), *value_hash, self.hash())) - } + Self::Leaf { value_hash, .. } => lookups.push((self.key(), *value_hash, self.hash())), Self::Entry { storage_key, .. } => { let (key_high, key_low) = u256_hi_lo(storage_key); lookups.extend(vec![ (Fr::from_u128(key_high), Fr::from_u128(key_low), self.key()), (self.value_high(), self.value_low(), self.value_hash()), - (self.key_hash(), self.value_hash(), self.hash()), + (self.key(), self.value_hash(), self.hash()), ]); } } @@ -227,6 +260,7 @@ impl StorageLeaf { impl From<&SMTTrace> for StorageProof { fn from(trace: &SMTTrace) -> Self { + dbg!("StorageProof 1"); if let Some(root) = trace.common_state_root { return Self::Root(fr(root)); } @@ -234,6 +268,7 @@ impl From<&SMTTrace> for StorageProof { let [old_path, new_path] = &trace.state_path; let old_leaf = old_path.as_ref().unwrap().leaf; let new_leaf = new_path.as_ref().unwrap().leaf; + dbg!("StorageProof 1.5"); let trie_rows = TrieRows::new( key, &old_path.as_ref().unwrap().path, @@ -241,6 +276,7 @@ impl From<&SMTTrace> for StorageProof { old_leaf, new_leaf, ); + dbg!("StorageProof 2"); let [old_entry, new_entry] = trace.state_update.unwrap().map(Option::unwrap); let old_leaf = StorageLeaf::new(key, &old_leaf, &old_entry); @@ -252,6 +288,7 @@ impl From<&SMTTrace> for StorageProof { old_leaf, new_leaf, }; + dbg!("StorageProof 3"); assert_eq!( storage_proof.old_root(), fr(old_path.as_ref().unwrap().root) @@ -260,6 +297,7 @@ impl From<&SMTTrace> for StorageProof { storage_proof.new_root(), fr(new_path.as_ref().unwrap().root) ); + dbg!("StorageProof 4"); storage_proof } } diff --git a/src/types/trie.rs b/src/types/trie.rs index 642b304b..239b559b 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -1,13 +1,15 @@ use crate::{ gadgets::mpt_update::PathType, serde::SMTNode, - util::{fr, hash, Bit}, + types::HashDomain, + util::{check_domain_consistency, domain_hash, fr, Bit}, }; use halo2_proofs::halo2curves::bn256::Fr; use itertools::{EitherOrBoth, Itertools}; #[derive(Clone, Debug)] pub struct TrieRow { + domain: HashDomain, pub old: Fr, pub new: Fr, pub sibling: Fr, @@ -24,18 +26,18 @@ impl TrieRow { if let PathType::ExtensionNew = self.path_type { self.old } else if self.direction { - hash(self.sibling, self.old) + domain_hash(self.sibling, self.old, self.domain) } else { - hash(self.old, self.sibling) + domain_hash(self.old, self.sibling, self.domain) } } pub fn new_hash(&self) -> Fr { if let PathType::ExtensionOld = self.path_type { self.new } else if self.direction { - hash(self.sibling, self.new) + domain_hash(self.sibling, self.new, self.domain) } else { - hash(self.new, self.sibling) + domain_hash(self.new, self.sibling, self.domain) } } } @@ -66,7 +68,29 @@ impl TrieRows { match pair { EitherOrBoth::Both(old, new) => { assert_eq!(old.sibling, new.sibling); + + let old_domain = HashDomain::try_from(old.node_type).unwrap(); + let new_domain = HashDomain::try_from(new.node_type).unwrap(); + let domain = if old_domain != new_domain { + // This can only happen when inserting or deleting a node. + assert!(old_nodes.len() != new_nodes.len()); + assert!(i == std::cmp::min(old_nodes.len(), new_nodes.len()) - 1); + + if i == old_nodes.len() - 1 { + // Inserting a leaf, so old is before insertion, new is after insertion. + check_domain_consistency(old_domain, new_domain, direction); + old_domain + } else { + // Deleting a leaf, so new is after insertion, old is before insertion. + check_domain_consistency(new_domain, old_domain, direction); + new_domain + } + } else { + old_domain + }; + TrieRow { + domain, direction, old: fr(old.value), new: fr(new.value), @@ -75,6 +99,7 @@ impl TrieRows { } } EitherOrBoth::Left(old) => TrieRow { + domain: HashDomain::try_from(old.node_type).unwrap(), direction, old: fr(old.value), new: new_leaf_hash, @@ -82,6 +107,7 @@ impl TrieRows { path_type: PathType::ExtensionOld, }, EitherOrBoth::Right(new) => TrieRow { + domain: HashDomain::try_from(new.node_type).unwrap(), direction, old: old_leaf_hash, new: fr(new.value), @@ -112,8 +138,16 @@ impl TrieRows { } else { (row.new, row.sibling) }; - let old = (old_left, old_right, hash(old_left, old_right)); - let new = (new_left, new_right, hash(new_left, new_right)); + let old = ( + old_left, + old_right, + domain_hash(old_left, old_right, row.domain), + ); + let new = ( + new_left, + new_right, + domain_hash(new_left, new_right, row.domain), + ); match row.path_type { PathType::Start => vec![], PathType::Common => vec![old, new], @@ -148,8 +182,76 @@ impl TrieRows { pub fn new_root(&self, leaf_hash: impl FnOnce() -> Fr) -> Fr { self.0.first().map_or_else(leaf_hash, TrieRow::new_hash) } + + #[cfg(test)] + pub fn check(&self, old_root: Fr, new_root: Fr) { + for (i, row) in self.0.iter().enumerate() { + let [[old_left, old_right], [new_left, new_right]] = if row.direction { + [[row.sibling, row.old], [row.sibling, row.new]] + } else { + [[row.old, row.sibling], [row.new, row.sibling]] + }; + + let [expected_old_hash, expected_new_hash] = if i == 0 { + [old_root, new_root] + } else { + let previous_row = self.0.get(i - 1).unwrap(); + [previous_row.old, previous_row.new] + }; + + match row.path_type { + PathType::Start => unreachable!(), + PathType::Common => { + let [old_domain, new_domain] = if let Some(next_row) = self.0.get(i + 1) { + match next_row.path_type { + PathType::Start => unreachable!(), + PathType::Common => [row.domain, row.domain], + PathType::ExtensionOld => unreachable!(), + PathType::ExtensionNew => { + match row.domain { + HashDomain::NodeTypeBranch0 => unreachable!(), + HashDomain::NodeTypeBranch1 => [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3], + HashDomain::NodeTypeBranch2 => unreachable!(), + HashDomain::NodeTypeBranch3 => unreachable!(), + _ => unreachable!(), + } + }, + } + } else { + [row.domain, row.domain] + }; + assert_eq!( + domain_hash(old_left, old_right, old_domain), + expected_old_hash + ); + assert_eq!( + domain_hash(new_left, new_right, new_domain), + expected_new_hash + ); + } + PathType::ExtensionOld => { + self.0 + .get(i + 1) + .map(|row| assert_eq!(row.path_type, PathType::ExtensionOld)); + assert_eq!( + domain_hash(old_left, old_right, row.domain), + expected_old_hash + ); + } + PathType::ExtensionNew => { + self.0 + .get(i + 1) + .map(|row| assert_eq!(row.path_type, PathType::ExtensionNew)); + assert_eq!( + domain_hash(new_left, new_right, row.domain), + expected_new_hash + ); + } + } + } + } } fn leaf_hash(leaf: SMTNode) -> Fr { - hash(hash(Fr::one(), fr(leaf.sibling)), fr(leaf.value)) + domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::NodeTypeEmpty) } diff --git a/src/util.rs b/src/util.rs index 1f0bc3f1..71167916 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,5 +1,4 @@ -use crate::serde::HexBytes; -use crate::types::HashDomain; +use crate::{serde::HexBytes, types::HashDomain}; use ethers_core::{ k256::elliptic_curve::PrimeField, types::{Address, U256}, @@ -111,7 +110,7 @@ pub fn u256_to_big_endian(x: &U256) -> Vec { pub fn storage_key_hash(key: U256) -> Fr { let (high, low) = split_word(key); - domain_hash(high, low, HashDomain::NodeTypeLeaf) + domain_hash(high, low, HashDomain::Pair) } pub fn account_key(address: Address) -> Fr { @@ -124,6 +123,21 @@ pub fn account_key(address: Address) -> Fr { domain_hash(address_high, address_low, HashDomain::Pair) } +// Sanity check that before and after branch types match the direction +pub fn check_domain_consistency(before: HashDomain, after: HashDomain, direction: bool) { + if direction { + assert!( + before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch1 + || before == HashDomain::NodeTypeBranch2 && after == HashDomain::NodeTypeBranch3 + ); + } else { + assert!( + before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch2 + || before == HashDomain::NodeTypeBranch1 && after == HashDomain::NodeTypeBranch3 + ); + } +} + #[cfg(test)] mod test { use super::*; From 2a07bffbfcb2f9164fdefd5d6ccddd7e1b9d41df Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 00:39:54 +0800 Subject: [PATCH 14/86] Add additional empty_storage_type_1 traces --- src/tests.rs | 118 ++++++++++-- ...son => empty_storage_type_1_update_a.json} | 0 src/traces/empty_storage_type_1_update_b.json | 169 ++++++++++++++++++ src/traces/empty_storage_type_1_update_c.json | 144 +++++++++++++++ src/types/trie.rs | 23 ++- 5 files changed, 432 insertions(+), 22 deletions(-) rename src/traces/{empty_storage_type_1_update.json => empty_storage_type_1_update_a.json} (100%) create mode 100644 src/traces/empty_storage_type_1_update_b.json create mode 100644 src/traces/empty_storage_type_1_update_c.json diff --git a/src/tests.rs b/src/tests.rs index e68f6880..33555e0c 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -17,6 +17,20 @@ fn intital_generator() -> WitnessGenerator { generator } +fn initial_storage_generator() -> WitnessGenerator { + let mut generator = intital_generator(); + for i in 40..60 { + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::one(), + U256::zero(), + Some(U256::from(i)), + ); + } + generator +} + #[test] fn empty_account_type_1() { let mut generator = intital_generator(); @@ -258,28 +272,53 @@ fn existing_storage_update() { } #[test] -fn empty_storage_type_1_update() { - let mut generator = intital_generator(); +fn empty_storage_type_1_update_a() { + let mut generator = initial_storage_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(307), + U256::zero(), + Some(U256::from(23412321)), + ); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_some(), + "old storage entry is not type 1" + ); - for i in 40..60 { - generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), - U256::one(), - U256::zero(), - Some(U256::from(i)), - ); - } + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_storage_type_1_update_a.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!( + trace.state_path[0] + .clone() + .unwrap() + .path + .last() + .unwrap() + .node_type, + 7 + ); + + let proof = Proof::from((MPTProofType::StorageChanged, trace)); + proof.check(); +} - // 0 is type 1 +#[test] +fn empty_storage_type_1_update_b() { + let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, Address::repeat_byte(1), U256::from(307), U256::zero(), - Some(U256::from(23412321)), + Some(U256::from(1)), ); - dbg!(trace.state_path[0].clone().unwrap()); assert!( trace.state_path[0].clone().unwrap().leaf.is_some(), "old storage entry is not type 1" @@ -288,11 +327,60 @@ fn empty_storage_type_1_update() { let json = serde_json::to_string_pretty(&trace).unwrap(); assert_eq!( format!("{}\n", json), - include_str!("traces/empty_storage_type_1_update.json"), + include_str!("traces/empty_storage_type_1_update_b.json"), "{}", json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!( + trace.state_path[0] + .clone() + .unwrap() + .path + .last() + .unwrap() + .node_type, + 8 + ); + + let proof = Proof::from((MPTProofType::StorageChanged, trace)); + proof.check(); +} + +#[test] +fn empty_storage_type_1_update_c() { + let mut generator = initial_storage_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(307), + U256::zero(), + Some(U256::from(3)), + ); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_some(), + "old storage entry is not type 1" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_storage_type_1_update_c.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!( + trace.state_path[0] + .clone() + .unwrap() + .path + .last() + .unwrap() + .node_type, + 6 + ); + let proof = Proof::from((MPTProofType::StorageChanged, trace)); proof.check(); } diff --git a/src/traces/empty_storage_type_1_update.json b/src/traces/empty_storage_type_1_update_a.json similarity index 100% rename from src/traces/empty_storage_type_1_update.json rename to src/traces/empty_storage_type_1_update_a.json diff --git a/src/traces/empty_storage_type_1_update_b.json b/src/traces/empty_storage_type_1_update_b.json new file mode 100644 index 00000000..8c4b044d --- /dev/null +++ b/src/traces/empty_storage_type_1_update_b.json @@ -0,0 +1,169 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x6c38c8de8bea480ef70ec2857ec2b02d756dcdfc0e253583e418a39b6e41cb08", + "leaf": { + "value": "0x006a1519d7385d14cd2ee1fbb9244538d87881fc21f4aa0bcaaa9727573acd21", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0x54642d6c934cf174fd3a9a31ddd9cd362cda12dfb8672326ca64f397a4021321", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x0436b0eb300b841ff31899d3b7bbddfe5c8ca6c4bca9107492ebd2191b5c5828", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xaa892597b4515a5f8561996f9cc44546d549234717b4216c5c64baa60b3b9f11", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "leaf": { + "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "sibling": "0x9044c8b6fcf025b005c278f6f154d7cba8c4603e9e597062c7b271a3c4496817", + "node_type": 5 + }, + "path": [ + { + "value": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "sibling": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "node_type": 9 + }, + { + "value": "0x5d1276a69a4026e4fef7bcaf66a6a11282ec2a1607f2b245b8acb8fc9bd08927", + "sibling": "0xf0691fb03392278193e2b56be466d7c6ce4e11e9095cc4a5e5f3bc2dfa96df20", + "node_type": 9 + }, + { + "value": "0x3e284a214b6cc48e7efb52245561b1341d66871759eff8a4c6651abb9885f005", + "sibling": "0xd544f1089502952ca7f9a7c7a36e673ffe940269b1db269cfa325683bc580c28", + "node_type": 9 + }, + { + "value": "0x732b296b79456bb32d998aa557d9335f3a847412aad9b2cd4af86a103c333603", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0x0d68bfd900eefa2da50c92edbadb07b55d8b47377b79fe0c4e81c0ad432e7517", + "sibling": "0x390c14944e6a7e0b36d897675cd4ecec16ebd5629b2f9c4979262f32dcae6915", + "node_type": 8 + } + ], + "pathPart": "0x10" + }, + { + "root": "0x07417bd293ebf64ba5aef2c9935f515af0f04cef28976dbf74e37a017c2f6a2d", + "leaf": { + "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", + "sibling": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "node_type": 5 + }, + "path": [ + { + "value": "0x67b79477297dfba8ab91ed5db6e9c410be0ca3a5995359fcc4e4f499a3246300", + "sibling": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "node_type": 9 + }, + { + "value": "0x9982dc7769358bd94d2fbf8835bb7f39d681ac3aea293d9ff359d8dd5f238e1e", + "sibling": "0xf0691fb03392278193e2b56be466d7c6ce4e11e9095cc4a5e5f3bc2dfa96df20", + "node_type": 9 + }, + { + "value": "0xb58bdec478b90d340305a2b03e6c45960ddff6ce3a4e25eb6fb2d25bf20ace12", + "sibling": "0xd544f1089502952ca7f9a7c7a36e673ffe940269b1db269cfa325683bc580c28", + "node_type": 9 + }, + { + "value": "0xb5d0c825b78df3062a1bbe96527074610286568e2b0e4661dfd752a220420b03", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0xe175e7ee923b9ce62cd3c2e462a2f67e43ab9ebbaf9d42030e67e9d133fe512f", + "sibling": "0x390c14944e6a7e0b36d897675cd4ecec16ebd5629b2f9c4979262f32dcae6915", + "node_type": 9 + }, + { + "value": "0xaf7efe4bdfcdb6dc0d89fdf6ffe58028167ea9104c51e3814c613d5dc108b50e", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 8 + }, + { + "value": "0x880915c46ba6c99ad943046fea16ea056c3d3112150a07c88b6640e5299a6805", + "sibling": "0x0d68bfd900eefa2da50c92edbadb07b55d8b47377b79fe0c4e81c0ad432e7517", + "node_type": 6 + } + ], + "pathPart": "0x50" + } + ], + "stateKey": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "stateUpdate": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000001", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000001", + "value": "0x0000000000000000000000000000000000000000000000000000000000000133" + } + ] +} diff --git a/src/traces/empty_storage_type_1_update_c.json b/src/traces/empty_storage_type_1_update_c.json new file mode 100644 index 00000000..8de5d82a --- /dev/null +++ b/src/traces/empty_storage_type_1_update_c.json @@ -0,0 +1,144 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0xce4173f31ef0012e08c88e1b6c5ca0bfa2fa4fbb83c6321050ec23629eeab710", + "leaf": { + "value": "0xd2d01beada4773f453ea5c55274eb25b5bb6d392c3140a0daa63065b2d601d01", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 5 + }, + "path": [ + { + "value": "0x34c4cf2a144557fc872c5789e62836fc1c99080a09a5757d0355cba44cdf7914", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x401a87991073a13293e8add521220ba66fda87152d2e010d4bd03d3be6f3af1f", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xdc15ac9869d9fbff4002a4a2f7b78d6fb349736fa5c5838998fab0b0a9833e21", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "leaf": { + "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", + "sibling": "0x630fe719918f65244b259027991431bc0fde4bd0aad4bf82b7f4e022b20cff12", + "node_type": 5 + }, + "path": [ + { + "value": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "sibling": "0x9594a5a6bf52685e0fbfbc9b10d02baa4525837fe7774cbe86ab5b96dd15ee0d", + "node_type": 9 + }, + { + "value": "0x59a07d6de141c8de3c5ac71197eba1b9a6de322e3b0f9762351108fa121a5917", + "sibling": "0x363041ad41f0ee8819046ee2bf2af41bc94cd17bc7ba6ca712cc562d90460d19", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x18e44caa78a914087fb81e8b2f92a312f29b10a94e857b3382ba000aac3b050f", + "leaf": { + "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", + "sibling": "0xebbde6853f0d7fd5c795a751c763ee866f603ddd45a59a14ad1189f04105c506", + "node_type": 5 + }, + "path": [ + { + "value": "0xf43f6817ec5d6bb0e0b42c4ba5264bb99096cfe99ece2ea7b15acc4e564d322d", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0xa75741eac4c581fb3eec3358254af17c0014077e86cb926f448f3607a48ee40d", + "sibling": "0x9594a5a6bf52685e0fbfbc9b10d02baa4525837fe7774cbe86ab5b96dd15ee0d", + "node_type": 9 + }, + { + "value": "0x1a2d6c63254ba1b0e860c99dedf9a3a1038e7dc589fd9a92b5d2eff7cd609c2a", + "sibling": "0x363041ad41f0ee8819046ee2bf2af41bc94cd17bc7ba6ca712cc562d90460d19", + "node_type": 8 + }, + { + "value": "0x345706989a0657a16b5c14414657b429c857f9cc0ce0be40174c12c214a9061e", + "sibling": "0x59a07d6de141c8de3c5ac71197eba1b9a6de322e3b0f9762351108fa121a5917", + "node_type": 6 + } + ], + "pathPart": "0xb" + } + ], + "stateKey": "0xebbde6853f0d7fd5c795a751c763ee866f603ddd45a59a14ad1189f04105c506", + "stateUpdate": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "value": "0x0000000000000000000000000000000000000000000000000000000000000133" + } + ] +} diff --git a/src/types/trie.rs b/src/types/trie.rs index 239b559b..9ad92b16 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -207,14 +207,23 @@ impl TrieRows { PathType::Start => unreachable!(), PathType::Common => [row.domain, row.domain], PathType::ExtensionOld => unreachable!(), - PathType::ExtensionNew => { - match row.domain { - HashDomain::NodeTypeBranch0 => unreachable!(), - HashDomain::NodeTypeBranch1 => [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3], - HashDomain::NodeTypeBranch2 => unreachable!(), - HashDomain::NodeTypeBranch3 => unreachable!(), - _ => unreachable!(), + PathType::ExtensionNew => match row.domain { + HashDomain::NodeTypeBranch0 => [ + HashDomain::NodeTypeBranch0, + if row.direction { + HashDomain::NodeTypeBranch1 + } else { + HashDomain::NodeTypeBranch2 + }, + ], + HashDomain::NodeTypeBranch1 => { + [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3] } + HashDomain::NodeTypeBranch2 => { + [HashDomain::NodeTypeBranch2, HashDomain::NodeTypeBranch3] + } + HashDomain::NodeTypeBranch3 => unreachable!(), + _ => unreachable!(), }, } } else { From 189baf721d974a73336b6f30aaa7b33aa1620141 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 01:01:33 +0800 Subject: [PATCH 15/86] Check reversed storage traces --- src/tests.rs | 33 +++++++++++++++++++++++++++------ src/types/trie.rs | 19 ++++++++++++++++++- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index 33555e0c..bbc8131f 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -31,6 +31,18 @@ fn initial_storage_generator() -> WitnessGenerator { generator } +// Produce a trace where old and new have been swapped. +fn reverse(trace: SMTTrace) -> SMTTrace { + let mut reversed = trace; + reversed.account_path.reverse(); + reversed.account_update.reverse(); + reversed.state_path.reverse(); + if let Some(update) = reversed.state_update.as_mut() { + update.reverse() + } + reversed +} + #[test] fn empty_account_type_1() { let mut generator = intital_generator(); @@ -305,8 +317,11 @@ fn empty_storage_type_1_update_a() { 7 ); - let proof = Proof::from((MPTProofType::StorageChanged, trace)); - proof.check(); + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + deletion_proof.check(); } #[test] @@ -343,8 +358,11 @@ fn empty_storage_type_1_update_b() { 8 ); - let proof = Proof::from((MPTProofType::StorageChanged, trace)); - proof.check(); + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + deletion_proof.check(); } #[test] @@ -381,8 +399,11 @@ fn empty_storage_type_1_update_c() { 6 ); - let proof = Proof::from((MPTProofType::StorageChanged, trace)); - proof.check(); + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + deletion_proof.check(); } #[test] diff --git a/src/types/trie.rs b/src/types/trie.rs index 9ad92b16..33688a08 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -206,7 +206,24 @@ impl TrieRows { match next_row.path_type { PathType::Start => unreachable!(), PathType::Common => [row.domain, row.domain], - PathType::ExtensionOld => unreachable!(), + PathType::ExtensionOld => match row.domain { + HashDomain::NodeTypeBranch0 => [ + if row.direction { + HashDomain::NodeTypeBranch1 + } else { + HashDomain::NodeTypeBranch2 + }, + HashDomain::NodeTypeBranch0, + ], + HashDomain::NodeTypeBranch1 => { + [HashDomain::NodeTypeBranch3, HashDomain::NodeTypeBranch1] + } + HashDomain::NodeTypeBranch2 => { + [HashDomain::NodeTypeBranch3, HashDomain::NodeTypeBranch2] + } + HashDomain::NodeTypeBranch3 => unreachable!(), + _ => unreachable!(), + }, PathType::ExtensionNew => match row.domain { HashDomain::NodeTypeBranch0 => [ HashDomain::NodeTypeBranch0, From dfe596aaa078634d6f0edc29b4d30e7686688f42 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 01:03:11 +0800 Subject: [PATCH 16/86] fix typo --- src/tests.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index bbc8131f..75814fdc 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -2,7 +2,7 @@ use crate::{serde::SMTTrace, types::Proof, MPTProofType}; use ethers_core::types::{Address, U256}; use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; -fn intital_generator() -> WitnessGenerator { +fn initial_generator() -> WitnessGenerator { assert!(*HASH_SCHEME_DONE); let mut generator = WitnessGenerator::from(&ZktrieState::default()); for i in 1..10 { @@ -18,7 +18,7 @@ fn intital_generator() -> WitnessGenerator { } fn initial_storage_generator() -> WitnessGenerator { - let mut generator = intital_generator(); + let mut generator = initial_generator(); for i in 40..60 { generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, @@ -45,7 +45,7 @@ fn reverse(trace: SMTTrace) -> SMTTrace { #[test] fn empty_account_type_1() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, Address::zero(), @@ -73,7 +73,7 @@ fn empty_account_type_1() { #[test] fn existing_account_balance_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, Address::repeat_byte(2), @@ -96,7 +96,7 @@ fn existing_account_balance_update() { #[test] fn empty_account_type_1_balance_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, Address::zero(), @@ -125,7 +125,7 @@ fn empty_account_type_1_balance_update() { #[test] fn existing_account_nonce_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::NonceChanged, Address::repeat_byte(4), @@ -148,7 +148,7 @@ fn existing_account_nonce_update() { #[test] fn empty_account_type_1_nonce_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, Address::repeat_byte(11), @@ -177,7 +177,7 @@ fn empty_account_type_1_nonce_update() { #[test] fn existing_account_code_size_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::CodeSizeExists, Address::repeat_byte(4), @@ -205,7 +205,7 @@ fn existing_account_code_size_update() { #[test] fn existing_account_keccak_codehash_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::CodeHashExists, Address::repeat_byte(8), @@ -228,7 +228,7 @@ fn existing_account_keccak_codehash_update() { #[test] fn existing_account_poseidon_codehash_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::PoseidonCodeHashExists, Address::repeat_byte(4), @@ -251,7 +251,7 @@ fn existing_account_poseidon_codehash_update() { #[test] fn existing_storage_update() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); for i in 40..60 { generator.handle_new_state( @@ -408,7 +408,7 @@ fn empty_storage_type_1_update_c() { #[test] fn insert_into_singleton_storage_trie() { - let mut generator = intital_generator(); + let mut generator = initial_generator(); generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, Address::repeat_byte(1), @@ -443,7 +443,7 @@ fn empty_account_type_2() { // i = 20 should be type 2? for i in 104..255 { dbg!(i); - let mut generator = intital_generator(); + let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, Address::repeat_byte(i), From 5bbbed455bc90790ef3c2adf7c5f73743c287c3c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 01:13:33 +0800 Subject: [PATCH 17/86] Use get_domains functions --- src/types/trie.rs | 74 ++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/src/types/trie.rs b/src/types/trie.rs index 33688a08..0ac37b52 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -203,46 +203,7 @@ impl TrieRows { PathType::Start => unreachable!(), PathType::Common => { let [old_domain, new_domain] = if let Some(next_row) = self.0.get(i + 1) { - match next_row.path_type { - PathType::Start => unreachable!(), - PathType::Common => [row.domain, row.domain], - PathType::ExtensionOld => match row.domain { - HashDomain::NodeTypeBranch0 => [ - if row.direction { - HashDomain::NodeTypeBranch1 - } else { - HashDomain::NodeTypeBranch2 - }, - HashDomain::NodeTypeBranch0, - ], - HashDomain::NodeTypeBranch1 => { - [HashDomain::NodeTypeBranch3, HashDomain::NodeTypeBranch1] - } - HashDomain::NodeTypeBranch2 => { - [HashDomain::NodeTypeBranch3, HashDomain::NodeTypeBranch2] - } - HashDomain::NodeTypeBranch3 => unreachable!(), - _ => unreachable!(), - }, - PathType::ExtensionNew => match row.domain { - HashDomain::NodeTypeBranch0 => [ - HashDomain::NodeTypeBranch0, - if row.direction { - HashDomain::NodeTypeBranch1 - } else { - HashDomain::NodeTypeBranch2 - }, - ], - HashDomain::NodeTypeBranch1 => { - [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3] - } - HashDomain::NodeTypeBranch2 => { - [HashDomain::NodeTypeBranch2, HashDomain::NodeTypeBranch3] - } - HashDomain::NodeTypeBranch3 => unreachable!(), - _ => unreachable!(), - }, - } + get_domains(next_row.path_type, row.domain, row.direction) } else { [row.domain, row.domain] }; @@ -278,6 +239,39 @@ impl TrieRows { } } +fn get_domains( + next_path_type: PathType, + before_insertion_domain: HashDomain, + insertion_direction: bool, +) -> [HashDomain; 2] { + let mut domains = match next_path_type { + PathType::Start => unreachable!(), + PathType::Common => [before_insertion_domain, before_insertion_domain], + PathType::ExtensionOld | PathType::ExtensionNew => match before_insertion_domain { + HashDomain::NodeTypeBranch0 => [ + HashDomain::NodeTypeBranch0, + if insertion_direction { + HashDomain::NodeTypeBranch1 + } else { + HashDomain::NodeTypeBranch2 + }, + ], + HashDomain::NodeTypeBranch1 => { + [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3] + } + HashDomain::NodeTypeBranch2 => { + [HashDomain::NodeTypeBranch2, HashDomain::NodeTypeBranch3] + } + HashDomain::NodeTypeBranch3 => unreachable!(), + _ => unreachable!(), + }, + }; + if next_path_type == PathType::ExtensionOld { + domains.reverse(); + } + domains +} + fn leaf_hash(leaf: SMTNode) -> Fr { domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::NodeTypeEmpty) } From 6ecef3a3e29c08f76e28de1cb16c516e0fa506b8 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 02:17:39 +0800 Subject: [PATCH 18/86] Remove domainless hash function --- src/gadgets/mpt_update.rs | 122 ++++++++++++++++---------------------- src/gadgets/poseidon.rs | 4 +- src/tests.rs | 82 ++++++++++++++++++++++++- src/types.rs | 93 ++++------------------------- src/types/constants.rs | 7 --- src/util.rs | 4 -- 6 files changed, 144 insertions(+), 168 deletions(-) delete mode 100644 src/types/constants.rs diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 2aa100b1..8c66ec71 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -19,9 +19,9 @@ use crate::{ types::{ storage::{StorageLeaf, StorageProof}, trie::TrieRows, - ClaimKind, Proof, HASH_ZERO_ZERO, + ClaimKind, HashDomain, Proof, }, - util::{account_key, hash, rlc, u256_hi_lo, u256_to_big_endian}, + util::{account_key, domain_hash, rlc, u256_hi_lo, u256_to_big_endian}, MPTProofType, }; use ethers_core::{k256::elliptic_curve::PrimeField, types::Address}; @@ -36,7 +36,8 @@ use lazy_static::lazy_static; use strum::IntoEnumIterator; lazy_static! { - static ref ZERO_STORAGE_HASH: Fr = hash(Fr::zero(), Fr::zero()); + // TODO + static ref ZERO_STORAGE_HASH: Fr = domain_hash(Fr::zero(), Fr::zero(), HashDomain::Pair); } pub trait MptUpdateLookup { @@ -315,8 +316,8 @@ impl MptUpdateConfig { pub fn assign_padding_row(&self, region: &mut Region<'_, Fr>, offset: usize) { self.proof_type .assign(region, offset, MPTProofType::AccountDoesNotExist); - self.key.assign(region, offset, *HASH_ZERO_ZERO); - self.other_key.assign(region, offset, *HASH_ZERO_ZERO); + self.key.assign(region, offset, *ZERO_STORAGE_HASH); + self.other_key.assign(region, offset, *ZERO_STORAGE_HASH); } /// .. @@ -427,32 +428,13 @@ impl MptUpdateConfig { match path_type { PathType::Start => {} PathType::Common => { - if *direction { - assert_eq!(hash(*sibling, *old_hash), previous_old_hash); - assert_eq!(hash(*sibling, *new_hash), previous_new_hash); - } else { - assert_eq!(hash(*old_hash, *sibling), previous_old_hash); - assert_eq!(hash(*new_hash, *sibling), previous_new_hash); - } previous_old_hash = *old_hash; previous_new_hash = *new_hash; } PathType::ExtensionOld => { - assert_eq!(*new_hash, previous_new_hash); - if *direction { - assert_eq!(hash(*sibling, *old_hash), previous_old_hash); - } else { - assert_eq!(hash(*old_hash, *sibling), previous_old_hash); - } previous_old_hash = *old_hash; } PathType::ExtensionNew => { - assert_eq!(*old_hash, previous_old_hash); - if *direction { - assert_eq!(hash(*sibling, *new_hash), previous_new_hash); - } else { - assert_eq!(hash(*new_hash, *sibling), previous_new_hash); - } previous_new_hash = *new_hash; } } @@ -1201,7 +1183,8 @@ fn configure_nonce( cb.assert_equal( "sibling is hash(0, hash(0, 0)) for nonce extension new at AccountLeaf2", config.sibling.current(), - hash(Fr::zero(), hash(Fr::zero(), Fr::zero())).into(), + domain_hash(Fr::zero(), domain_hash(Fr::zero(), + Fr::zero(), HashDomain::AccountFields), HashDomain::AccountFields).into(), ); }, ); @@ -1472,7 +1455,7 @@ fn configure_balance( cb.assert_equal( "sibling is hash(0, hash(0, 0)) for balance extension new at AccountLeaf2", config.sibling.current(), - hash(Fr::zero(), hash(Fr::zero(), Fr::zero())).into(), + domain_hash(Fr::zero(), domain_hash(Fr::zero(), Fr::zero(), HashDomain::AccountFields), HashDomain::AccountFields).into(), ); }, ); @@ -1926,10 +1909,14 @@ fn address_low(a: Address) -> u128 { // ... the return traces: ([inp;2], domain, hash) pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { - let mut hash_traces = vec![([Fr::zero(), Fr::zero()], Fr::zero(), *HASH_ZERO_ZERO)]; + let mut hash_traces = vec![( + [Fr::zero(), Fr::zero()], + HashDomain::Pair.into(), + *ZERO_STORAGE_HASH, + )]; for proof in proofs.iter() { let address_hash_traces = &proof.address_hash_traces; - for (direction, _, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in + for (direction, domain, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in address_hash_traces.iter().rev() { if !*is_padding_open { @@ -1938,7 +1925,11 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { } else { (old_hash, sibling) }; - hash_traces.push(([*left, *right], Fr::zero(), hash(*left, *right))); + hash_traces.push(( + [*left, *right], + (*domain).into(), + domain_hash(*left, *right, *domain), + )); } if !*is_padding_close { let (left, right) = if *direction { @@ -1946,29 +1937,33 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { } else { (new_hash, sibling) }; - hash_traces.push(([*left, *right], Fr::zero(), hash(*left, *right))); + hash_traces.push(( + [*left, *right], + (*domain).into(), + domain_hash(*left, *right, *domain), + )); } } - assert_eq!( - proof.storage.old_root(), - proof.old_account_hash_traces[1][0] - ); - assert_eq!( - proof.storage.new_root(), - proof.new_account_hash_traces[1][0] - ); - let (storage_key_high, storage_key_low) = u256_hi_lo(&proof.claim.storage_key()); - hash_traces.push(( - [ - Fr::from_u128(storage_key_high), - Fr::from_u128(storage_key_low), - ], - Fr::from(0u64), - hash( - Fr::from_u128(storage_key_high), - Fr::from_u128(storage_key_low), - ), - )); + // assert_eq!( + // proof.storage.old_root(), + // proof.old_account_hash_traces[1][0] + // ); + // assert_eq!( + // proof.storage.new_root(), + // proof.new_account_hash_traces[1][0] + // ); + // let (storage_key_high, storage_key_low) = u256_hi_lo(&proof.claim.storage_key()); + // hash_traces.push(( + // [ + // Fr::from_u128(storage_key_high), + // Fr::from_u128(storage_key_low), + // ], + // Fr::from(0u64), + // hash( + // Fr::from_u128(storage_key_high), + // Fr::from_u128(storage_key_low), + // ), + // )); hash_traces.extend( proof .storage @@ -1983,35 +1978,22 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { Fr::from_u128(address_high(proof.claim.address)), Fr::from_u128(address_low(proof.claim.address)), ], - Fr::from(0u64), + HashDomain::Pair.into(), key, )); - let other_key = if key != proof.old.key { - proof.old.key - } else { - proof.new.key - }; - if key != other_key { - hash_traces.push(( - [Fr::one(), other_key], - Fr::zero(), - hash(Fr::one(), other_key), - )); - } - if let Some(data_hash) = proof.old.leaf_data_hash { hash_traces.push(( [proof.old.key_hash, data_hash], - Fr::zero(), - hash(proof.old.key_hash, data_hash), + HashDomain::NodeTypeLeaf.into(), + domain_hash(proof.old.key_hash, data_hash, HashDomain::NodeTypeLeaf), )); } if let Some(data_hash) = proof.new.leaf_data_hash { hash_traces.push(( [proof.new.key_hash, data_hash], - Fr::zero(), - hash(proof.new.key_hash, data_hash), + HashDomain::NodeTypeLeaf.into(), + domain_hash(proof.new.key_hash, data_hash, HashDomain::NodeTypeLeaf), )); } @@ -2019,8 +2001,8 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { [proof.old_account_hash_traces, proof.new_account_hash_traces] { for [left, right, digest] in account_leaf_hash_traces { - if hash(left, right) == digest { - hash_traces.push(([left, right], Fr::zero(), digest)) + if domain_hash(left, right, HashDomain::AccountFields) == digest { + hash_traces.push(([left, right], HashDomain::AccountFields.into(), digest)) } } } diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index d1a6064c..bd75cc4e 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -1,6 +1,6 @@ use crate::constraint_builder::{AdviceColumn, ConstraintBuilder, FixedColumn, Query}; #[cfg(test)] -use crate::util::hash as poseidon_hash; +use crate::util::temp_hash; use halo2_proofs::{ arithmetic::FieldExt, plonk::{Advice, Column, Fixed}, @@ -87,7 +87,7 @@ impl PoseidonTable { pub fn load(&self, region: &mut Region<'_, Fr>, hash_traces: &[([Fr; 2], Fr, Fr)]) { for (offset, hash_trace) in hash_traces.iter().enumerate() { assert!( - poseidon_hash(hash_trace.0[0], hash_trace.0[1]) == hash_trace.2, + temp_hash(hash_trace.0[0], hash_trace.0[1], hash_trace.1) == hash_trace.2, "{:?}", (hash_trace.0, hash_trace.1, hash_trace.2) ); diff --git a/src/tests.rs b/src/tests.rs index 75814fdc..ea8b228d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,7 +1,18 @@ -use crate::{serde::SMTTrace, types::Proof, MPTProofType}; +use crate::{ + gadgets::poseidon::PoseidonTable, hash_traces, serde::SMTTrace, types::Proof, MPTProofType, + MptCircuitConfig, +}; use ethers_core::types::{Address, U256}; +use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + dev::MockProver, + halo2curves::bn256::Fr, + plonk::{Circuit, ConstraintSystem, Error, FirstPhase}, +}; use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; +const N_ROWS: usize = 1024; + fn initial_generator() -> WitnessGenerator { assert!(*HASH_SCHEME_DONE); let mut generator = WitnessGenerator::from(&ZktrieState::default()); @@ -43,6 +54,68 @@ fn reverse(trace: SMTTrace) -> SMTTrace { reversed } +#[derive(Clone, Debug, Default)] +struct TestCircuit { + n_rows: usize, + proofs: Vec, +} + +impl TestCircuit { + fn new(n_rows: usize, traces: Vec<(MPTProofType, SMTTrace)>) -> Self { + Self { + n_rows, + proofs: traces.into_iter().map(Proof::from).collect(), + } + } +} + +impl Circuit for TestCircuit { + type Config = (PoseidonTable, MptCircuitConfig); + type FloorPlanner = SimpleFloorPlanner; + + fn without_witnesses(&self) -> Self { + Self::default() + } + + fn configure(cs: &mut ConstraintSystem) -> Self::Config { + let poseidon = PoseidonTable::configure(cs); + let challenge = cs.challenge_usable_after(FirstPhase); + let mpt_circuit_config = MptCircuitConfig::configure(cs, challenge, &poseidon); + (poseidon, mpt_circuit_config) + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter, + ) -> Result<(), Error> { + let (poseidon, mpt_circuit_config) = config; + mpt_circuit_config.assign(&mut layouter, &self.proofs, self.n_rows)?; + layouter.assign_region( + || "load poseidon table", + |mut region| { + poseidon.load(&mut region, &hash_traces(&self.proofs)); + Ok(()) + }, + ) + } +} + +fn mock_prove(proof_type: MPTProofType, trace: &str) { + let circuit = TestCircuit::new( + N_ROWS, + vec![(proof_type, serde_json::from_str(trace).unwrap())], + ); + let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); + assert_eq!( + prover.verify(), + Ok(()), + "proof_type = {:?}, trace = {}", + proof_type, + trace + ); +} + #[test] fn empty_account_type_1() { let mut generator = initial_generator(); @@ -67,8 +140,13 @@ fn empty_account_type_1() { assert!(path.leaf.is_some(), "account is not type 1"); } - let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); + let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace.clone())); proof.check(); + + mock_prove( + MPTProofType::AccountDoesNotExist, + &include_str!("traces/empty_account_type_1.json"), + ); } #[test] diff --git a/src/types.rs b/src/types.rs index b5f55433..9db5dde6 100644 --- a/src/types.rs +++ b/src/types.rs @@ -2,7 +2,7 @@ use crate::{ gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ - account_key, check_domain_consistency, domain_hash, fr_from_biguint, hash, rlc, temp_hash, + account_key, check_domain_consistency, domain_hash, fr_from_biguint, rlc, temp_hash, u256_from_biguint, u256_from_hex, u256_to_big_endian, }, MPTProofType, @@ -13,11 +13,9 @@ use itertools::{EitherOrBoth, Itertools}; use num_bigint::BigUint; use num_traits::identities::Zero; -mod account; -mod constants; +// mod account; pub mod storage; pub mod trie; -pub use constants::HASH_ZERO_ZERO; use storage::StorageProof; #[derive(Clone, Copy, Debug, PartialEq, Eq)] @@ -51,6 +49,13 @@ impl TryFrom for HashDomain { } } +impl Into for HashDomain { + fn into(self) -> Fr { + let x: u64 = self.into(); + x.into() + } +} + impl Into for HashDomain { fn into(self) -> u64 { match self { @@ -154,12 +159,6 @@ struct LeafNode { value_hash: Fr, } -impl LeafNode { - fn hash(&self) -> Fr { - hash(hash(Fr::one(), self.key), self.value_hash) - } -} - #[derive(Clone, Debug)] pub struct Proof { pub claim: Claim, @@ -234,7 +233,7 @@ pub struct Path { impl Path { pub fn hash(&self) -> Fr { if let Some(data_hash) = self.leaf_data_hash { - hash(self.key_hash, data_hash) + domain_hash(self.key_hash, data_hash, HashDomain::NodeTypeLeaf) } else { Fr::zero() } @@ -684,27 +683,6 @@ fn empty_account_hash_traces(leaf: Option) -> [[Fr; 3]; 7] { account_hash_traces } -fn storage_key_value_hash_traces(key: U256, value: U256) -> [[Fr; 3]; 3] { - let (key_high, key_low) = split_word(key); - let (value_high, value_low) = split_word(value); - let h0 = hash(key_high, key_low); - let h1 = hash(value_high, value_low); - dbg!( - hash(key_high, key_low), - hash(value_high, value_low), - hash(Fr::one(), hash(key_high, key_low)), - hash(Fr::one(), hash(value_high, value_low)), - hash(h0, h1), - hash(h1, h0), - ); - - let mut hash_traces = [[Fr::zero(); 3]; 3]; - hash_traces[0] = [key_high, key_low, h0]; - hash_traces[1] = [value_high, value_low, h1]; - hash_traces[2] = [h0, h1, hash(h0, h1)]; - hash_traces -} - impl Proof { pub fn old_account_leaf_hashes(&self) -> Option> { // TODO: make old_account_hash_traces optional @@ -994,23 +972,6 @@ impl Proof { } } -fn check_hash_traces(traces: &[(bool, Fr, Fr, Fr)]) { - let current_hash_traces = traces.iter(); - let mut next_hash_traces = traces.iter(); - next_hash_traces.next(); - for ((direction, open, close, sibling), (_, next_open, next_close, _)) in - current_hash_traces.zip(next_hash_traces) - { - if *direction { - assert_eq!(hash(*sibling, *open), *next_open); - assert_eq!(hash(*sibling, *close), *next_close); - } else { - assert_eq!(hash(*open, *sibling), *next_open); - assert_eq!(hash(*close, *sibling), *next_close); - } - } -} - fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) { let mut previous_path_type: Option = None; @@ -1092,32 +1053,6 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) } } -fn path_root(path: SMTPath) -> Fr { - // let parse: SMTPathParse = SMTPathParse::try_from(&path).unwrap(); - // for (a, b, c) in parse.0.hash_traces { - // assert_eq!(hash(a, b), c) - // } - - let account_hash = if let Some(node) = path.leaf { - hash(hash(Fr::one(), fr(node.sibling)), fr(node.value)) - } else { - Fr::zero() - }; - - let directions = bits(path.path_part.clone().try_into().unwrap(), path.path.len()); - let mut digest = account_hash; - for (&bit, node) in directions.iter().zip(path.path.iter().rev()) { - assert_eq!(digest, fr(node.value)); - digest = if bit { - hash(fr(node.sibling), digest) - } else { - hash(digest, fr(node.sibling)) - }; - } - assert_eq!(digest, fr(path.root)); - fr(path.root) -} - fn bits(x: usize, len: usize) -> Vec { let mut bits = vec![]; let mut x = x; @@ -1239,14 +1174,6 @@ mod test { } } - fn storage_roots(trace: &SMTTrace) -> [Fr; 2] { - if let Some(root) = trace.common_state_root { - [root, root].map(fr) - } else { - trace.state_path.clone().map(|p| path_root(p.unwrap())) - } - } - #[test] fn sanity_check_paths() { for s in [READ_TRACES, TRACES, DEPLOY_TRACES, TOKEN_TRACES] { diff --git a/src/types/constants.rs b/src/types/constants.rs deleted file mode 100644 index 50dd3e79..00000000 --- a/src/types/constants.rs +++ /dev/null @@ -1,7 +0,0 @@ -use crate::util::hash; -use halo2_proofs::halo2curves::bn256::Fr; -use lazy_static::lazy_static; - -lazy_static! { - pub static ref HASH_ZERO_ZERO: Fr = hash(Fr::zero(), Fr::zero()); -} diff --git a/src/util.rs b/src/util.rs index 71167916..abd4e599 100644 --- a/src/util.rs +++ b/src/util.rs @@ -11,10 +11,6 @@ pub(crate) fn fr(x: HexBytes<32>) -> Fr { Fr::from_bytes(&x.0).unwrap() } -pub(crate) fn hash(x: Fr, y: Fr) -> Fr { - panic!("migrating away from thisssss") -} - pub fn domain_hash(x: Fr, y: Fr, domain: HashDomain) -> Fr { Hashable::hash_with_domain([x, y], Fr::from(Into::::into(domain))) // Hashable::hash_with_domain([x, y], domain) From b0cb9a4ebb96f0ad4a5f2a61d0b31c9a709d561c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 02:37:36 +0800 Subject: [PATCH 19/86] Implement into query for HashDomain --- src/types.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/types.rs b/src/types.rs index 9db5dde6..8197a44b 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,4 +1,5 @@ use crate::{ + constraint_builder::Query, gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ @@ -71,6 +72,13 @@ impl Into for HashDomain { } } +impl Into> for HashDomain { + fn into(self) -> Query { + let x: u64 = self.into(); + Query::from(x) + } +} + #[derive(Clone, Copy, Debug)] pub struct Claim { pub old_root: Fr, From ce1fb6d656208d8a50f0ad10f9cc8f27bfebbb45 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 02:38:11 +0800 Subject: [PATCH 20/86] Start using domain separator in poseidon lookup --- src/gadgets/mpt_update.rs | 22 +++++++++----------- src/gadgets/mpt_update/nonexistence_proof.rs | 7 ++----- src/gadgets/mpt_update/word_rlc.rs | 8 ++++++- src/gadgets/poseidon.rs | 10 ++++----- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 8c66ec71..f3cd9ca5 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -131,7 +131,12 @@ impl MptUpdateConfig { * (1 << 32); cb.poseidon_lookup( "account mpt key = h(address_high, address_low)", - [address_high.current(), address_low, key.current()], + [ + address_high.current(), + address_low, + HashDomain::Pair.into(), + key.current(), + ], poseidon, ); cb.add_lookup( @@ -214,17 +219,6 @@ impl MptUpdateConfig { cb.assert_zero("depth is 0 in non-trie segments", depth.current()); }); - cb.condition( - segment_type.current_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]), - |cb| { - cb.poseidon_lookup( - "sibling = h(1, key)", - [Query::one(), key.current(), sibling.current()], - poseidon, - ); - }, - ); - let config = Self { key, old_hash, @@ -903,6 +897,7 @@ fn configure_common_path( [ old_left(config), old_right(config), + Query::one(), config.old_hash.previous(), ], poseidon, @@ -912,6 +907,7 @@ fn configure_common_path( [ new_left(config), new_right(config), + Query::one(), config.new_hash.previous(), ], poseidon, @@ -976,6 +972,7 @@ fn configure_extension_old( [ old_left(config), old_right(config), + Query::one(), config.old_hash.previous(), ], poseidon, @@ -1060,6 +1057,7 @@ fn configure_extension_new( [ new_left(config), new_right(config), + Query::one(), config.new_hash.previous(), ], poseidon, diff --git a/src/gadgets/mpt_update/nonexistence_proof.rs b/src/gadgets/mpt_update/nonexistence_proof.rs index 0b739e88..e9270e12 100644 --- a/src/gadgets/mpt_update/nonexistence_proof.rs +++ b/src/gadgets/mpt_update/nonexistence_proof.rs @@ -1,6 +1,7 @@ use crate::{ constraint_builder::{AdviceColumn, ConstraintBuilder, Query, SecondPhaseAdviceColumn}, gadgets::{is_zero::IsZeroGadget, poseidon::PoseidonLookup}, + types::HashDomain, }; use halo2_proofs::{arithmetic::FieldExt, circuit::Region, halo2curves::bn256::Fr}; @@ -37,16 +38,12 @@ pub fn configure( ); cb.condition(is_type_1, |cb| { - cb.poseidon_lookup( - "other_key_hash == h(1, other_key)", - [Query::one(), other_key.current(), other_key_hash.current()], - poseidon, - ); cb.poseidon_lookup( "hash == h(key_hash, other_leaf_data_hash)", [ other_key_hash.current(), other_leaf_data_hash.current(), + HashDomain::NodeTypeLeaf.into(), hash.current(), ], poseidon, diff --git a/src/gadgets/mpt_update/word_rlc.rs b/src/gadgets/mpt_update/word_rlc.rs index 9c2ea68f..b10b6252 100644 --- a/src/gadgets/mpt_update/word_rlc.rs +++ b/src/gadgets/mpt_update/word_rlc.rs @@ -4,6 +4,7 @@ use crate::{ byte_representation::{BytesLookup, RlcLookup}, poseidon::PoseidonLookup, }, + types::HashDomain, util::{rlc, u256_hi_lo}, }; use ethers_core::types::U256; @@ -34,7 +35,12 @@ pub fn configure( ); cb.poseidon_lookup( "word_hash = poseidon(high, low)", - [high.current(), low.current(), word_hash.current()], + [ + high.current(), + low.current(), + HashDomain::Pair.into(), + word_hash.current(), + ], poseidon, ); diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index bd75cc4e..cc6933e7 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -24,16 +24,16 @@ impl ConstraintBuilder { pub fn poseidon_lookup( &mut self, name: &'static str, - queries: [Query; 3], + [left, right, domain, hash]: [Query; 4], poseidon: &impl PoseidonLookup, ) { let extended_queries = [ Query::one(), - queries[2].clone(), - queries[0].clone(), - queries[1].clone(), - Query::zero(), + hash, + left, + right, Query::zero(), + domain, Query::one(), ]; From f5f18506648649f3d36ecf9329edb65ad1e875e0 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 03:15:41 +0800 Subject: [PATCH 21/86] type 1 nonexisting account proof passes --- src/gadgets/mpt_update.rs | 73 +++++++++----------- src/gadgets/mpt_update/nonexistence_proof.rs | 21 +----- src/types.rs | 25 +++---- 3 files changed, 47 insertions(+), 72 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index f3cd9ca5..89d1f2be 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -46,6 +46,8 @@ pub trait MptUpdateLookup { #[derive(Clone)] pub struct MptUpdateConfig { + domain: AdviceColumn, + old_hash: AdviceColumn, new_hash: AdviceColumn, old_value: SecondPhaseAdviceColumn, @@ -104,7 +106,8 @@ impl MptUpdateConfig { ) -> Self { let proof_type: OneHot = OneHot::configure(cs, cb); let [storage_key_rlc, old_value, new_value] = cb.second_phase_advice_columns(cs); - let [old_hash, new_hash, depth, key, other_key, direction, sibling] = cb.advice_columns(cs); + let [domain, old_hash, new_hash, depth, key, other_key, direction, sibling] = + cb.advice_columns(cs); let intermediate_values: [AdviceColumn; 10] = cb.advice_columns(cs); let second_phase_intermediate_values: [SecondPhaseAdviceColumn; 10] = @@ -221,6 +224,7 @@ impl MptUpdateConfig { let config = Self { key, + domain, old_hash, new_hash, proof_type, @@ -338,18 +342,18 @@ impl MptUpdateConfig { } let key = account_key(proof.claim.address); - let (other_key, other_key_hash, other_leaf_data_hash) = + let (other_key, other_leaf_data_hash) = // checking if type 1 or type 2 if proof.old.key != key { assert!(proof.new.key == key || proof.new.key == proof.old.key); - (proof.old.key, proof.old.key_hash, proof.old.leaf_data_hash.unwrap()) + (proof.old.key, proof.old.leaf_data_hash.unwrap()) } else if proof.new.key != key { assert!(proof.old.key == key); - (proof.new.key, proof.new.key_hash, proof.new.leaf_data_hash.unwrap()) + (proof.new.key, proof.new.leaf_data_hash.unwrap()) } else { // neither is a type 1 path // handle type 0 and type 2 paths here: - (proof.old.key, proof.old.key_hash, proof.new.leaf_data_hash.unwrap_or_default()) + (proof.old.key, proof.new.leaf_data_hash.unwrap_or_default()) }; // Assign start row self.segment_type.assign(region, offset, SegmentType::Start); @@ -390,7 +394,7 @@ impl MptUpdateConfig { let mut previous_new_hash = proof.claim.new_root; for ( depth, - (direction, _, old_hash, new_hash, sibling, is_padding_open, is_padding_close), + (direction, domain, old_hash, new_hash, sibling, is_padding_open, is_padding_close), ) in proof.address_hash_traces.iter().rev().enumerate() { self.depth @@ -415,6 +419,7 @@ impl MptUpdateConfig { self.old_hash.assign(region, offset, *old_hash); self.new_hash.assign(region, offset, *new_hash); self.direction.assign(region, offset, *direction); + self.domain.assign(region, offset, domain.into_u64()); self.key.assign(region, offset, key); self.other_key.assign(region, offset, other_key); @@ -457,7 +462,7 @@ impl MptUpdateConfig { self.is_zero_gadgets[2].assign_value_and_inverse(region, offset, key - other_key); self.is_zero_gadgets[3].assign_value_and_inverse(region, offset, final_old_hash); - self.intermediate_values[2].assign(region, offset, other_key_hash); + // self.intermediate_values[2].assign(region, offset, other_key); self.intermediate_values[3].assign(region, offset, other_leaf_data_hash); n_rows += proof.n_rows(); @@ -528,9 +533,9 @@ impl MptUpdateConfig { match segment_type { SegmentType::AccountLeaf0 => { - let [.., other_key_hash_column, other_leaf_data_hash_column] = + let [.., other_key_column, other_leaf_data_hash_column] = self.intermediate_values; - other_key_hash_column.assign(region, offset, other_key_hash); + other_key_column.assign(region, offset, other_key); other_leaf_data_hash_column.assign(region, offset, other_leaf_data_hash); } SegmentType::AccountLeaf3 => { @@ -816,7 +821,7 @@ impl MptUpdateConfig { if key != other_key { let [.., other_key_hash, other_leaf_data_hash] = self.intermediate_values; - // other_key_hash.assign(region, offset, new.key_hash()); + // other_key_hash.assign(region, offset, new.key_hash());// think this is still needed? other_leaf_data_hash.assign(region, offset, new.value_hash()); } } @@ -897,7 +902,7 @@ fn configure_common_path( [ old_left(config), old_right(config), - Query::one(), + config.domain.current(), config.old_hash.previous(), ], poseidon, @@ -907,7 +912,7 @@ fn configure_common_path( [ new_left(config), new_right(config), - Query::one(), + config.domain.current(), config.new_hash.previous(), ], poseidon, @@ -972,7 +977,7 @@ fn configure_extension_old( [ old_left(config), old_right(config), - Query::one(), + config.domain.current(), config.old_hash.previous(), ], poseidon, @@ -1013,7 +1018,7 @@ fn configure_extension_old( .current_matches(&[SegmentType::StorageLeaf0]), |cb| { let [.., key_equals_other_key, new_hash_is_zero] = config.is_zero_gadgets; - let [.., other_key_hash, other_leaf_data_hash] = config.intermediate_values; + let [.., other_leaf_data_hash] = config.intermediate_values; nonexistence_proof::configure( cb, config.new_value, @@ -1022,7 +1027,6 @@ fn configure_extension_old( key_equals_other_key, config.new_hash, new_hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1057,7 +1061,7 @@ fn configure_extension_new( [ new_left(config), new_right(config), - Query::one(), + config.domain.current(), config.new_hash.previous(), ], poseidon, @@ -1101,7 +1105,7 @@ fn configure_extension_new( .current_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]), |cb| { let [.., key_equals_other_key, old_hash_is_zero] = config.is_zero_gadgets; - let [.., other_key_hash, other_leaf_data_hash] = config.intermediate_values; + let [.., other_leaf_data_hash] = config.intermediate_values; nonexistence_proof::configure( cb, config.old_value, @@ -1110,7 +1114,6 @@ fn configure_extension_new( key_equals_other_key, config.old_hash, old_hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1131,8 +1134,7 @@ fn configure_nonce( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, other_key_hash, other_leaf_data_hash, ..] = - config.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", config.old_hash.current(), @@ -1151,7 +1153,6 @@ fn configure_nonce( key_equals_other_key, config.old_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1280,8 +1281,7 @@ fn configure_code_size( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, other_key_hash, other_leaf_data_hash, ..] = - config.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", config.old_hash.current(), @@ -1300,7 +1300,6 @@ fn configure_code_size( key_equals_other_key, config.old_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1403,8 +1402,7 @@ fn configure_balance( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, other_key_hash, other_leaf_data_hash, ..] = - config.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", config.old_hash.current(), @@ -1423,7 +1421,6 @@ fn configure_balance( key_equals_other_key, config.old_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1574,7 +1571,7 @@ fn configure_keccak_code_hash( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, other_key_hash, other_leaf_data_hash, ..] = + let [_, _, _, other_key_hash, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", @@ -1594,7 +1591,6 @@ fn configure_keccak_code_hash( key_equals_other_key, config.old_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1759,7 +1755,7 @@ fn configure_empty_storage( rlc: &impl RlcLookup, randomness: Query, ) { - let [key_high, key_low, other_key_hash, other_leaf_data_hash, ..] = config.intermediate_values; + let [key_high, key_low, _, other_leaf_data_hash, ..] = config.intermediate_values; let [rlc_key_high, rlc_key_low, ..] = config.second_phase_intermediate_values; let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; @@ -1798,7 +1794,6 @@ fn configure_empty_storage( key_equals_other_key, config.old_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1860,8 +1855,7 @@ fn configure_empty_account( let is_final_segment = config.segment_type.next_matches(&[SegmentType::Start]); cb.condition(is_final_segment, |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, other_key_hash, other_leaf_data_hash, ..] = - config.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "new_hash = old_hash", config.old_hash.current(), @@ -1880,7 +1874,6 @@ fn configure_empty_account( key_equals_other_key, config.new_hash, hash_is_zero, - other_key_hash, other_leaf_data_hash, poseidon, ); @@ -1982,16 +1975,16 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { if let Some(data_hash) = proof.old.leaf_data_hash { hash_traces.push(( - [proof.old.key_hash, data_hash], - HashDomain::NodeTypeLeaf.into(), - domain_hash(proof.old.key_hash, data_hash, HashDomain::NodeTypeLeaf), + [proof.old.key, data_hash], + HashDomain::NodeTypeEmpty.into(), + domain_hash(proof.old.key, data_hash, HashDomain::NodeTypeEmpty), )); } if let Some(data_hash) = proof.new.leaf_data_hash { hash_traces.push(( - [proof.new.key_hash, data_hash], - HashDomain::NodeTypeLeaf.into(), - domain_hash(proof.new.key_hash, data_hash, HashDomain::NodeTypeLeaf), + [proof.new.key, data_hash], + HashDomain::NodeTypeEmpty.into(), + domain_hash(proof.new.key, data_hash, HashDomain::NodeTypeEmpty), )); } diff --git a/src/gadgets/mpt_update/nonexistence_proof.rs b/src/gadgets/mpt_update/nonexistence_proof.rs index e9270e12..2c09f971 100644 --- a/src/gadgets/mpt_update/nonexistence_proof.rs +++ b/src/gadgets/mpt_update/nonexistence_proof.rs @@ -13,7 +13,6 @@ pub fn configure( key_equals_other_key: IsZeroGadget, hash: AdviceColumn, hash_is_zero: IsZeroGadget, - other_key_hash: AdviceColumn, other_leaf_data_hash: AdviceColumn, poseidon: &impl PoseidonLookup, ) { @@ -39,28 +38,14 @@ pub fn configure( cb.condition(is_type_1, |cb| { cb.poseidon_lookup( - "hash == h(key_hash, other_leaf_data_hash)", + "hash == h(other_key, other_leaf_data_hash)", [ - other_key_hash.current(), + other_key.current(), other_leaf_data_hash.current(), - HashDomain::NodeTypeLeaf.into(), + HashDomain::NodeTypeEmpty.into(), hash.current(), ], poseidon, ); }); } - -pub fn assign( - region: &mut Region<'_, Fr>, - offset: usize, - (key_equals_other_key, key_minus_other_key): (IsZeroGadget, Fr), - (final_hash_is_zero, final_hash): (IsZeroGadget, Fr), - (other_key_hash_row, other_key_hash): (AdviceColumn, Fr), - (other_leaf_data_hash_row, other_leaf_data_hash): (AdviceColumn, Fr), -) { - key_equals_other_key.assign(region, offset, key_minus_other_key); - final_hash_is_zero.assign(region, offset, final_hash); - other_key_hash_row.assign(region, offset, other_key_hash); - other_leaf_data_hash_row.assign(region, offset, other_leaf_data_hash); -} diff --git a/src/types.rs b/src/types.rs index 8197a44b..beb8a7b4 100644 --- a/src/types.rs +++ b/src/types.rs @@ -79,6 +79,12 @@ impl Into> for HashDomain { } } +impl HashDomain { + pub fn into_u64(&self) -> u64 { + (*self).into() + } +} + #[derive(Clone, Copy, Debug)] pub struct Claim { pub old_root: Fr, @@ -233,15 +239,14 @@ impl Proof { #[derive(Clone, Debug)] pub struct Path { - pub key: Fr, - pub key_hash: Fr, // Hash(1, key) for type 0 and type 1, 0 for type 2. + pub key: Fr, // pair hash of address or storage key pub leaf_data_hash: Option, // leaf data hash for type 0 and type 1, None for type 2. } impl Path { pub fn hash(&self) -> Fr { if let Some(data_hash) = self.leaf_data_hash { - domain_hash(self.key_hash, data_hash, HashDomain::NodeTypeLeaf) + domain_hash(self.key, data_hash, HashDomain::NodeTypeLeaf) } else { Fr::zero() } @@ -460,22 +465,14 @@ impl From<(MPTProofType, SMTTrace)> for Proof { // The account_key(address) if the account exists // else: path.leaf.sibling if it's a type 1 non-existence proof // otherwise account_key(address) if it's a type 2 non-existence proof - let (key, key_hash) = path.leaf.map_or_else( - || { - let k = account_key(claim.address); - (k, domain_hash(Fr::one(), k, HashDomain::NodeTypeLeaf)) - }, - |l| { - let k = fr(l.sibling); - (k, domain_hash(Fr::one(), k, HashDomain::NodeTypeLeaf)) - }, - ); + let key = path + .leaf + .map_or_else(|| account_key(claim.address), |l| fr(l.sibling)); let leaf_data_hash = path.leaf.map(|leaf| fr(leaf.value)); Path { key, - key_hash, leaf_data_hash, } }); From eee8965bb003dc67b80ff1410a265e6779054e48 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 03:18:13 +0800 Subject: [PATCH 22/86] Change mock_prove signature --- src/tests.rs | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index ea8b228d..afca4e25 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -101,19 +101,10 @@ impl Circuit for TestCircuit { } } -fn mock_prove(proof_type: MPTProofType, trace: &str) { - let circuit = TestCircuit::new( - N_ROWS, - vec![(proof_type, serde_json::from_str(trace).unwrap())], - ); +fn mock_prove(witness: Vec<(MPTProofType, SMTTrace)>) { + let circuit = TestCircuit::new(N_ROWS, witness); let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - assert_eq!( - prover.verify(), - Ok(()), - "proof_type = {:?}, trace = {}", - proof_type, - trace - ); + assert_eq!(prover.verify(), Ok(()),); } #[test] @@ -143,10 +134,7 @@ fn empty_account_type_1() { let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace.clone())); proof.check(); - mock_prove( - MPTProofType::AccountDoesNotExist, - &include_str!("traces/empty_account_type_1.json"), - ); + mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); } #[test] From 9d9e75db251ae9860cba732cca05d53a7552dd02 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 04:11:12 +0800 Subject: [PATCH 23/86] mock prove updates to existing accounts --- src/gadgets/mpt_update.rs | 40 +++++++------- src/tests.rs | 20 +++++-- src/types.rs | 110 +++++++++----------------------------- 3 files changed, 61 insertions(+), 109 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 89d1f2be..931c1191 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -519,8 +519,14 @@ impl MptUpdateConfig { for (i, (segment_type, sibling, old_hash, new_hash, direction)) in izip!(segment_types, siblings, old_hashes, new_hashes, directions).enumerate() { + // leaf0 and leaf1 have problems.... if i == 0 { self.is_zero_gadgets[3].assign_value_and_inverse(region, offset, old_hash); + self.domain + .assign(region, offset + i, HashDomain::NodeTypeEmpty.into_u64()); + } else { + self.domain + .assign(region, offset + i, HashDomain::AccountFields.into_u64()); } self.segment_type.assign(region, offset + i, segment_type); self.path_type.assign(region, offset + i, leaf_path_type); @@ -1428,9 +1434,19 @@ fn configure_balance( ); } SegmentType::AccountLeaf0 => { + cb.assert_equal( + "balance AccountLeaf0 domain is NodeTypeLeaf", + config.domain.current(), + HashDomain::NodeTypeEmpty.into(), + ); cb.assert_equal("direction is 1", config.direction.current(), Query::one()); } SegmentType::AccountLeaf1 => { + cb.assert_equal( + "balance AccountLeaf1 domain is AccountFields", + config.domain.current(), + HashDomain::AccountFields.into(), + ); cb.assert_zero("direction is 0", config.direction.current()); cb.condition( config.path_type.current_matches(&[PathType::ExtensionNew]), @@ -1935,26 +1951,6 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { )); } } - // assert_eq!( - // proof.storage.old_root(), - // proof.old_account_hash_traces[1][0] - // ); - // assert_eq!( - // proof.storage.new_root(), - // proof.new_account_hash_traces[1][0] - // ); - // let (storage_key_high, storage_key_low) = u256_hi_lo(&proof.claim.storage_key()); - // hash_traces.push(( - // [ - // Fr::from_u128(storage_key_high), - // Fr::from_u128(storage_key_low), - // ], - // Fr::from(0u64), - // hash( - // Fr::from_u128(storage_key_high), - // Fr::from_u128(storage_key_low), - // ), - // )); hash_traces.extend( proof .storage @@ -1994,6 +1990,10 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { for [left, right, digest] in account_leaf_hash_traces { if domain_hash(left, right, HashDomain::AccountFields) == digest { hash_traces.push(([left, right], HashDomain::AccountFields.into(), digest)) + } else if domain_hash(left, right, HashDomain::NodeTypeEmpty) == digest { + hash_traces.push(([left, right], HashDomain::NodeTypeEmpty.into(), digest)) + } else if domain_hash(left, right, HashDomain::Pair) == digest { + hash_traces.push(([left, right], HashDomain::Pair.into(), digest)) } } } diff --git a/src/tests.rs b/src/tests.rs index afca4e25..c2924aaa 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -156,8 +156,10 @@ fn existing_account_balance_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + let proof = Proof::from((MPTProofType::BalanceChanged, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); } #[test] @@ -208,8 +210,10 @@ fn existing_account_nonce_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::NonceChanged, trace)); + let proof = Proof::from((MPTProofType::NonceChanged, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::NonceChanged, trace)]); } #[test] @@ -265,8 +269,10 @@ fn existing_account_code_size_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::CodeSizeExists, trace)); + let proof = Proof::from((MPTProofType::CodeSizeExists, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::CodeSizeExists, trace)]); } #[test] @@ -288,8 +294,10 @@ fn existing_account_keccak_codehash_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::CodeHashExists, trace)); + let proof = Proof::from((MPTProofType::CodeHashExists, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::CodeHashExists, trace)]); } #[test] @@ -311,8 +319,10 @@ fn existing_account_poseidon_codehash_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::PoseidonCodeHashExists, trace)); + let proof = Proof::from((MPTProofType::PoseidonCodeHashExists, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::PoseidonCodeHashExists, trace)]); } #[test] diff --git a/src/types.rs b/src/types.rs index beb8a7b4..c35016a0 100644 --- a/src/types.rs +++ b/src/types.rs @@ -182,8 +182,8 @@ pub struct Proof { // TODO: make this optional leafs: [Option; 2], - pub old_account_hash_traces: [[Fr; 3]; 7], - pub new_account_hash_traces: [[Fr; 3]; 7], + pub old_account_hash_traces: [[Fr; 3]; 6], + pub new_account_hash_traces: [[Fr; 3]; 6], pub storage: StorageProof, @@ -529,16 +529,11 @@ fn leaf_hash(path: SMTPath) -> Fr { } } -fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) -> [[Fr; 3]; 7] { - dbg!("account_hash_traces 0"); - // h5 is sibling of node? - // let real_account: Account = (&account, storage_root).try_into().unwrap(); - +fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) -> [[Fr; 3]; 6] { let (codehash_hi, codehash_lo) = hi_lo(account.code_hash); let h1 = domain_hash(codehash_hi, codehash_lo, HashDomain::Pair); let h2 = domain_hash(storage_root, h1, HashDomain::AccountFields); - dbg!("account_hash_traces 1"); let nonce_and_codesize = Fr::from(account.nonce) + Fr::from(account.code_size) * Fr::from(1 << 32).square(); let balance = big_uint_to_fr(&account.balance); @@ -547,12 +542,11 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) let h4 = domain_hash(h3, h2, HashDomain::AccountFields); let account_key = account_key(address); - // let h5 = hash(Fr::one(), account_key); let poseidon_codehash = big_uint_to_fr(&account.poseidon_code_hash); let account_hash = domain_hash(h4, poseidon_codehash, HashDomain::AccountFields); - let mut account_hash_traces = [[Fr::zero(); 3]; 7]; + let mut account_hash_traces = [[Fr::zero(); 3]; 6]; account_hash_traces[0] = [codehash_hi, codehash_lo, h1]; account_hash_traces[1] = [storage_root, h1, h2]; account_hash_traces[2] = [nonce_and_codesize, balance, h3]; @@ -562,14 +556,7 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) account_key, account_hash, domain_hash(account_key, account_hash, HashDomain::NodeTypeEmpty), - ]; // this should be the sibling? - // account_hash_traces[6] = [h5, account_hash, hash(h5, account_hash)]; - - // h4 is value of node? - // assert_eq!(real_account.account_hash(), account_hash); - - dbg!(account_key, account_hash); - + ]; account_hash_traces } @@ -647,44 +634,15 @@ fn get_internal_hash_traces( address_hash_traces } -fn empty_account_hash_traces(leaf: Option) -> [[Fr; 3]; 7] { - let mut account_hash_traces = [[Fr::zero(); 3]; 7]; - dbg!("empty_account_hash_traces 0"); - - // 0x29830d19fd895697907ec7976a217848b690dc5942d38337d69cc42f583ac617 - // 0x02f96e518ffa759a1a4fa8c3f8f4093e8bc81a0a2bd04e1e79187ca238596f93 - +fn empty_account_hash_traces(leaf: Option) -> [[Fr; 3]; 6] { + let mut account_hash_traces = [[Fr::zero(); 3]; 6]; if let Some(l) = leaf { - // let h5 = domain_hash(Fr::one(), l.key, HashDomain::NodeTypeLeaf); - - // let a = domain_hash(Fr::one(), l.key, HashDomain::NodeTypeLeaf); - // let b = domain_hash(Fr::one(), l.key, HashDomain::Pair); - - // let c = domain_hash(a, l.value_hash, HashDomain::NodeTypeLeaf); - // let d = domain_hash(b, l.value_hash, HashDomain::NodeTypeLeaf); - // let e = temp_hash(l.key, l.value_hash, Fr::from(5)); // this one is correct? - // let f = temp_hash(l.value_hash, l.key, Fr::from(5)); - // dbg!(l); - // dbg!(a, b, c, d, e, f); - - // for i in 0..1024 { - // dbg!(temp_hash(l.key, l.value_hash, Fr::from(i))); - // } - // panic!(); - - // TODO: domain should not be EmptyNode!!!!! account_hash_traces[5] = [ l.key, l.value_hash, domain_hash(l.key, l.value_hash, HashDomain::NodeTypeEmpty), ]; - // account_hash_traces[6] = [ - // h5, - // l.value_hash, - // domain_hash(h5, l.value_hash, HashDomain::NodeTypeLeaf), - // ]; } - account_hash_traces } @@ -694,40 +652,40 @@ impl Proof { let old_account_hash_traces = self.old_account_hash_traces; match self.claim.kind { ClaimKind::Nonce { old, .. } | ClaimKind::CodeSize { old, .. } => old.map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; let old_h4 = old_account_hash_traces[4][0]; let old_h3 = old_account_hash_traces[3][0]; let old_nonce_and_codesize = old_account_hash_traces[2][0]; vec![old_account_hash, old_h4, old_h3, old_nonce_and_codesize] }), ClaimKind::Balance { old, .. } => old.map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; let old_h4 = old_account_hash_traces[4][0]; let old_h3 = old_account_hash_traces[3][0]; let old_balance = old_account_hash_traces[2][1]; vec![old_account_hash, old_h4, old_h3, old_balance] }), ClaimKind::PoseidonCodeHash { old, .. } => old.map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; let old_poseidon_code_hash = old_account_hash_traces[4][1]; vec![old_account_hash, old_poseidon_code_hash] }), ClaimKind::CodeHash { old, .. } => old.map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; let old_h4 = old_account_hash_traces[4][0]; let old_h2 = old_account_hash_traces[1][2]; let old_h1 = old_account_hash_traces[0][2]; vec![old_account_hash, old_h4, old_h2, old_h1] }), ClaimKind::Storage { .. } | ClaimKind::IsEmpty(Some(_)) => self.old_account.map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; let old_h4 = old_account_hash_traces[4][0]; let old_h2 = old_account_hash_traces[1][2]; let old_storage_root = old_account_hash_traces[1][0]; vec![old_account_hash, old_h4, old_h2, old_storage_root] }), ClaimKind::IsEmpty(None) => self.leafs[0].map(|_| { - let old_account_hash = old_account_hash_traces[6][1]; + let old_account_hash = old_account_hash_traces[5][1]; vec![old_account_hash] }), } @@ -737,46 +695,47 @@ impl Proof { let new_account_hash_traces = self.new_account_hash_traces; match self.claim.kind { ClaimKind::Nonce { new, .. } | ClaimKind::CodeSize { new, .. } => new.map(|_| { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; let new_h4 = new_account_hash_traces[4][0]; let new_h3 = new_account_hash_traces[3][0]; let new_nonce_and_codesize = new_account_hash_traces[2][0]; vec![new_account_hash, new_h4, new_h3, new_nonce_and_codesize] }), ClaimKind::Balance { new, .. } => new.map(|_| { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; let new_h4 = new_account_hash_traces[4][0]; let new_h3 = new_account_hash_traces[3][0]; let new_balance = new_account_hash_traces[2][1]; vec![new_account_hash, new_h4, new_h3, new_balance] }), ClaimKind::PoseidonCodeHash { new, .. } => new.map(|_| { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; let new_poseidon_code_hash = new_account_hash_traces[4][1]; vec![new_account_hash, new_poseidon_code_hash] }), ClaimKind::CodeHash { new, .. } => new.map(|_| { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; let new_h4 = new_account_hash_traces[4][0]; let new_h2 = new_account_hash_traces[1][2]; let new_h1 = new_account_hash_traces[0][2]; vec![new_account_hash, new_h4, new_h2, new_h1] }), ClaimKind::Storage { .. } | ClaimKind::IsEmpty(Some(_)) => { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; let new_h4 = new_account_hash_traces[4][0]; let new_h2 = new_account_hash_traces[1][2]; let new_storage_root = new_account_hash_traces[1][0]; Some(vec![new_account_hash, new_h4, new_h2, new_storage_root]) } ClaimKind::IsEmpty(None) => self.leafs[1].map(|_| { - let new_account_hash = new_account_hash_traces[6][1]; + let new_account_hash = new_account_hash_traces[5][1]; vec![new_account_hash] }), } } pub fn account_leaf_siblings(&self) -> Vec { + let account_key = account_key(self.claim.address); match self.claim.kind { ClaimKind::Nonce { old, new } | ClaimKind::CodeSize { old, new } => { let account_hash_traces = match (old, new) { @@ -787,9 +746,8 @@ impl Proof { let balance = account_hash_traces[2][1]; let h2 = account_hash_traces[3][1]; let poseidon_codehash = account_hash_traces[4][1]; - let account_key_hash = account_hash_traces[5][2]; - vec![account_key_hash, poseidon_codehash, h2, balance] + vec![account_key, poseidon_codehash, h2, balance] } ClaimKind::Balance { old, new } => { let account_hash_traces = match (old, new) { @@ -800,9 +758,8 @@ impl Proof { let nonce_and_codesize = account_hash_traces[2][0]; let h2 = account_hash_traces[3][1]; let poseidon_codehash = account_hash_traces[4][1]; - let account_key_hash = account_hash_traces[5][2]; - vec![account_key_hash, poseidon_codehash, h2, nonce_and_codesize] + vec![account_key, poseidon_codehash, h2, nonce_and_codesize] } ClaimKind::PoseidonCodeHash { old, new } => { let account_hash_traces = match (old, new) { @@ -811,9 +768,8 @@ impl Proof { (None, None) => unimplemented!("reading 0 value from empty account"), }; let h4 = account_hash_traces[4][0]; - let account_key_hash = account_hash_traces[5][2]; - vec![account_key_hash, h4] + vec![account_key, h4] } ClaimKind::CodeHash { old, new } => { let account_hash_traces = match (old, new) { @@ -821,11 +777,10 @@ impl Proof { (None, Some(_)) => self.new_account_hash_traces, (None, None) => unimplemented!("reading 0 value from empty account"), }; - let account_key_hash = account_hash_traces[5][2]; let poseidon_codehash = account_hash_traces[4][1]; let h3 = account_hash_traces[3][0]; let storage_root = account_hash_traces[1][0]; - vec![account_key_hash, poseidon_codehash, h3, storage_root] + vec![account_key, poseidon_codehash, h3, storage_root] } ClaimKind::Storage { .. } | ClaimKind::IsEmpty(Some(_)) => { assert_eq!( @@ -845,25 +800,12 @@ impl Proof { self.new_account_hash_traces[1][1] ); - let account_key_hash = self.old_account_hash_traces[5][2]; let poseidon_codehash = self.old_account_hash_traces[4][1]; let h3 = self.old_account_hash_traces[3][0]; let keccak_codehash_hash = self.old_account_hash_traces[1][1]; - vec![ - account_key_hash, - poseidon_codehash, - h3, - keccak_codehash_hash, - ] + vec![account_key, poseidon_codehash, h3, keccak_codehash_hash] } - ClaimKind::IsEmpty(None) => match self.leafs { - [Some(_), _] => vec![self.old_account_hash_traces[6][1]], - [None, Some(_)] => { - // Wrong proof - vec![self.new_account_hash_traces[6][1]] - } - [None, None] => vec![], - }, + ClaimKind::IsEmpty(None) => vec![], } } From 0d30b9451359edf3ed4aa9844d7e8935cfffe23a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 04:18:45 +0800 Subject: [PATCH 24/86] cleanup warnings --- src/gadgets/mpt_update.rs | 13 ++++--------- src/gadgets/mpt_update/nonexistence_proof.rs | 2 +- src/types.rs | 6 +++--- src/types/storage.rs | 6 ++++-- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 931c1191..40234149 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -687,8 +687,7 @@ impl MptUpdateConfig { old: &StorageLeaf, new: &StorageLeaf, ) -> usize { - let [_key_high, _key_low, other_key_hash, other_leaf_data_hash, ..] = - self.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = self.intermediate_values; let [.., key_equals_other_key, hash_is_zero] = self.is_zero_gadgets; match (old, new) { ( @@ -710,7 +709,6 @@ impl MptUpdateConfig { hash_is_zero.assign_value_and_inverse(region, offset, old.hash()); - // other_key_hash.assign(region, offset, old.key_hash()); other_leaf_data_hash.assign(region, offset, *old_value_hash); } (StorageLeaf::Empty { .. }, StorageLeaf::Empty { .. }) => { @@ -826,8 +824,7 @@ impl MptUpdateConfig { new_hash_is_zero.assign_value_and_inverse(region, offset, new_hash); if key != other_key { - let [.., other_key_hash, other_leaf_data_hash] = self.intermediate_values; - // other_key_hash.assign(region, offset, new.key_hash());// think this is still needed? + let [.., other_leaf_data_hash] = self.intermediate_values; other_leaf_data_hash.assign(region, offset, new.value_hash()); } } @@ -840,8 +837,7 @@ impl MptUpdateConfig { old_hash_is_zero.assign_value_and_inverse(region, offset, old_hash); if key != other_key { - let [.., other_key_hash, other_leaf_data_hash] = self.intermediate_values; - // other_key_hash.assign(region, offset, old.key_hash()); + let [.., other_leaf_data_hash] = self.intermediate_values; other_leaf_data_hash.assign(region, offset, old.value_hash()); } } @@ -1587,8 +1583,7 @@ fn configure_keccak_code_hash( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, _, other_key_hash, other_leaf_data_hash, ..] = - config.intermediate_values; + let [_, _, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", config.old_hash.current(), diff --git a/src/gadgets/mpt_update/nonexistence_proof.rs b/src/gadgets/mpt_update/nonexistence_proof.rs index 2c09f971..75f22a18 100644 --- a/src/gadgets/mpt_update/nonexistence_proof.rs +++ b/src/gadgets/mpt_update/nonexistence_proof.rs @@ -3,7 +3,7 @@ use crate::{ gadgets::{is_zero::IsZeroGadget, poseidon::PoseidonLookup}, types::HashDomain, }; -use halo2_proofs::{arithmetic::FieldExt, circuit::Region, halo2curves::bn256::Fr}; +use halo2_proofs::arithmetic::FieldExt; pub fn configure( cb: &mut ConstraintBuilder, diff --git a/src/types.rs b/src/types.rs index c35016a0..ed982f63 100644 --- a/src/types.rs +++ b/src/types.rs @@ -3,7 +3,7 @@ use crate::{ gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ - account_key, check_domain_consistency, domain_hash, fr_from_biguint, rlc, temp_hash, + account_key, check_domain_consistency, domain_hash, fr_from_biguint, rlc, u256_from_biguint, u256_from_hex, u256_to_big_endian, }, MPTProofType, @@ -67,7 +67,7 @@ impl Into for HashDomain { Self::NodeTypeBranch2 => 8, Self::NodeTypeBranch3 => 9, Self::Pair => 2 * 256, - AccountFields => 5 * 256, + Self::AccountFields => 5 * 256, } } } @@ -927,7 +927,7 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) next_hash_traces.next(); for ( (direction, domain, open, close, sibling, is_padding_open, is_padding_close), - (_, next_domain, next_open, next_close, _, is_padding_open_next, is_padding_close_next), + (_, _, next_open, next_close, _, _, _), ) in current_hash_traces.zip(next_hash_traces) { let path_type = match (is_padding_open, is_padding_close) { diff --git a/src/types/storage.rs b/src/types/storage.rs index f01df209..f52d4966 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -1,6 +1,8 @@ +#[cfg(test)] +use crate::types::{Bit, PathType}; use crate::{ serde::{SMTNode, SMTTrace, StateData}, - types::{trie::TrieRows, Bit, HashDomain, PathType}, + types::{trie::TrieRows, HashDomain}, util::{domain_hash, fr, storage_key_hash, u256_from_hex, u256_hi_lo}, }; use ethers_core::types::U256; @@ -125,7 +127,7 @@ impl StorageProof { #[cfg(test)] pub fn check(&self) { if let Self::Update { - key, + key: _, trie_rows, old_leaf, new_leaf, From ffbe1b899b97956bf43635dcb17ff98fe437e74c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 04:23:35 +0800 Subject: [PATCH 25/86] cleanup dbg's --- src/tests.rs | 3 --- src/types.rs | 32 -------------------------------- src/types/storage.rs | 5 ----- src/util.rs | 2 -- 4 files changed, 42 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index c2924aaa..32e48f47 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -518,7 +518,6 @@ fn insert_into_singleton_storage_trie() { fn empty_account_type_2() { // i = 20 should be type 2? for i in 104..255 { - dbg!(i); let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, @@ -532,7 +531,6 @@ fn empty_account_type_2() { let json = serde_json::to_string_pretty(&trace).unwrap(); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - dbg!(trace.clone()); // for path in &trace.account_path { // assert!(path.leaf.is_some() || path.path.is_empty()) @@ -540,7 +538,6 @@ fn empty_account_type_2() { panic!(); } - // dbg!(trace.clone()); // let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); panic!(); diff --git a/src/types.rs b/src/types.rs index ed982f63..f8298769 100644 --- a/src/types.rs +++ b/src/types.rs @@ -258,10 +258,7 @@ impl From<(&MPTProofType, &SMTTrace)> for Claim { let [old_root, new_root] = trace.account_path.clone().map(|path| fr(path.root)); let address = trace.address.0.into(); let kind = ClaimKind::from((proof_type, trace)); - dbg!(kind); assert_eq!(MPTProofType::from(kind), *proof_type); - dbg!(MPTProofType::from(kind), *proof_type); - // panic!(); Self { new_root, old_root, @@ -419,48 +416,31 @@ impl From<(&MPTProofType, &SMTTrace)> for ClaimKind { impl From<(MPTProofType, SMTTrace)> for Proof { fn from((proof, trace): (MPTProofType, SMTTrace)) -> Self { let claim = Claim::from((&proof, &trace)); - dbg!("from 1"); let storage = StorageProof::from(&trace); - dbg!("from 2"); let key = account_key(claim.address); assert_eq!(key, fr(trace.account_key)); - dbg!("from 2.5"); let leafs = trace.account_path.clone().map(get_leaf); - dbg!("from 2.6"); let [open_hash_traces, close_hash_traces] = trace.account_path.clone().map(|path| path.path); let leaf_hashes = trace.account_path.clone().map(leaf_hash); - dbg!(leaf_hashes); - dbg!("from 3"); let address_hash_traces = get_internal_hash_traces(key, leaf_hashes, &open_hash_traces, &close_hash_traces); - dbg!("check hash_traces"); check_hash_traces_new(&address_hash_traces); - dbg!("4"); - dbg!(address_hash_traces.clone()); let [old_account, new_account] = trace.account_update; let old_account_hash_traces = match old_account.clone() { None => empty_account_hash_traces(leafs[0]), Some(account) => account_hash_traces(claim.address, account, storage.old_root()), }; - dbg!("5"); let new_account_hash_traces = match new_account.clone() { None => empty_account_hash_traces(leafs[1]), Some(account) => account_hash_traces(claim.address, account, storage.new_root()), }; - dbg!("6"); - - dbg!(leafs); - dbg!(leaf_hashes); - dbg!(key); assert_eq!(old_account_hash_traces[5][2], leaf_hashes[0]); assert_eq!(new_account_hash_traces[5][2], leaf_hashes[1]); - dbg!("7"); - let [old, new] = trace.account_path.map(|path| { // The account_key(address) if the account exists // else: path.leaf.sibling if it's a type 1 non-existence proof @@ -477,8 +457,6 @@ impl From<(MPTProofType, SMTTrace)> for Proof { } }); - dbg!("8"); - let old_account = match old_account { Some(account_data) => { let mut account = EthAccount::from(account_data); @@ -496,7 +474,6 @@ impl From<(MPTProofType, SMTTrace)> for Proof { None => None, }; - dbg!("9"); Self { claim, address_hash_traces, @@ -578,7 +555,6 @@ fn get_internal_hash_traces( assert_eq!(open.sibling, close.sibling); let open_domain = HashDomain::try_from(open.node_type).unwrap(); let close_domain = HashDomain::try_from(close.node_type).unwrap(); - dbg!(open_domain, close_domain); let domain = if open_domain != close_domain { // This can only happen when inserting or deleting a node. @@ -817,7 +793,6 @@ impl Proof { // poseidon hashes are correct check_hash_traces_new(&self.address_hash_traces); - dbg!("check 1"); // directions match account key. let account_key = account_key(self.claim.address); @@ -828,8 +803,6 @@ impl Proof { ); } - dbg!("check 2"); - // old and new roots are correct if let Some(( direction, @@ -851,13 +824,10 @@ impl Proof { } else { panic!("no hash traces!!!!"); } - dbg!("check 3"); // this suggests we want something that keeps 1/2 unchanged if something.... // going to have to add an is padding row or something? - dbg!(self.old_account_hash_traces); - dbg!(self.address_hash_traces.clone()); assert_eq!( self.old_account_hash_traces[5][2], self.address_hash_traces.get(0).unwrap().2 @@ -869,8 +839,6 @@ impl Proof { ); // if this still the case???? - dbg!(self.old_account_hash_traces, self.leafs); - // TODO: handle none here. assert_eq!( domain_hash( diff --git a/src/types/storage.rs b/src/types/storage.rs index f52d4966..4e09b70d 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -262,7 +262,6 @@ impl StorageLeaf { impl From<&SMTTrace> for StorageProof { fn from(trace: &SMTTrace) -> Self { - dbg!("StorageProof 1"); if let Some(root) = trace.common_state_root { return Self::Root(fr(root)); } @@ -270,7 +269,6 @@ impl From<&SMTTrace> for StorageProof { let [old_path, new_path] = &trace.state_path; let old_leaf = old_path.as_ref().unwrap().leaf; let new_leaf = new_path.as_ref().unwrap().leaf; - dbg!("StorageProof 1.5"); let trie_rows = TrieRows::new( key, &old_path.as_ref().unwrap().path, @@ -278,7 +276,6 @@ impl From<&SMTTrace> for StorageProof { old_leaf, new_leaf, ); - dbg!("StorageProof 2"); let [old_entry, new_entry] = trace.state_update.unwrap().map(Option::unwrap); let old_leaf = StorageLeaf::new(key, &old_leaf, &old_entry); @@ -290,7 +287,6 @@ impl From<&SMTTrace> for StorageProof { old_leaf, new_leaf, }; - dbg!("StorageProof 3"); assert_eq!( storage_proof.old_root(), fr(old_path.as_ref().unwrap().root) @@ -299,7 +295,6 @@ impl From<&SMTTrace> for StorageProof { storage_proof.new_root(), fr(new_path.as_ref().unwrap().root) ); - dbg!("StorageProof 4"); storage_proof } } diff --git a/src/util.rs b/src/util.rs index abd4e599..242d4e03 100644 --- a/src/util.rs +++ b/src/util.rs @@ -84,7 +84,6 @@ pub fn rlc(be_bytes: &[u8], randomness: Fr) -> Fr { let x = be_bytes.iter().fold(Fr::zero(), |acc, byte| { randomness * acc + Fr::from(u64::from(*byte)) }); - // dbg!(x); x } @@ -115,7 +114,6 @@ pub fn account_key(address: Address) -> Fr { let address_high = Fr::from_u128(u128::from_be_bytes(high_bytes)); let address_low = Fr::from_u128(u128::from(u32::from_be_bytes(low_bytes)) << 96); - // dbg!(domain_hash(address_high, address_low, HashDomain::Pair)); domain_hash(address_high, address_low, HashDomain::Pair) } From 5aafbacf9f285743e1e9028eb4f3df18dbb79f81 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 04:46:09 +0800 Subject: [PATCH 26/86] clippy --- src/gadgets/mpt_update.rs | 6 ++-- src/gadgets/mpt_update/nonexistence_proof.rs | 2 +- src/gadgets/mpt_update/word_rlc.rs | 2 +- src/tests.rs | 4 +-- src/types.rs | 37 ++++++++------------ 5 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 40234149..5d6b741c 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -137,7 +137,7 @@ impl MptUpdateConfig { [ address_high.current(), address_low, - HashDomain::Pair.into(), + Query::from(u64::from(HashDomain::Pair)), key.current(), ], poseidon, @@ -1433,7 +1433,7 @@ fn configure_balance( cb.assert_equal( "balance AccountLeaf0 domain is NodeTypeLeaf", config.domain.current(), - HashDomain::NodeTypeEmpty.into(), + Query::from(u64::from(HashDomain::NodeTypeEmpty)), ); cb.assert_equal("direction is 1", config.direction.current(), Query::one()); } @@ -1441,7 +1441,7 @@ fn configure_balance( cb.assert_equal( "balance AccountLeaf1 domain is AccountFields", config.domain.current(), - HashDomain::AccountFields.into(), + Query::from(u64::from(HashDomain::AccountFields)), ); cb.assert_zero("direction is 0", config.direction.current()); cb.condition( diff --git a/src/gadgets/mpt_update/nonexistence_proof.rs b/src/gadgets/mpt_update/nonexistence_proof.rs index 75f22a18..6e20ee84 100644 --- a/src/gadgets/mpt_update/nonexistence_proof.rs +++ b/src/gadgets/mpt_update/nonexistence_proof.rs @@ -42,7 +42,7 @@ pub fn configure( [ other_key.current(), other_leaf_data_hash.current(), - HashDomain::NodeTypeEmpty.into(), + Query::from(u64::from(HashDomain::NodeTypeEmpty)), hash.current(), ], poseidon, diff --git a/src/gadgets/mpt_update/word_rlc.rs b/src/gadgets/mpt_update/word_rlc.rs index b10b6252..ec7f1153 100644 --- a/src/gadgets/mpt_update/word_rlc.rs +++ b/src/gadgets/mpt_update/word_rlc.rs @@ -38,7 +38,7 @@ pub fn configure( [ high.current(), low.current(), - HashDomain::Pair.into(), + Query::from(u64::from(HashDomain::Pair)), word_hash.current(), ], poseidon, diff --git a/src/tests.rs b/src/tests.rs index 32e48f47..7856550d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -529,8 +529,7 @@ fn empty_account_type_2() { // 0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621 let json = serde_json::to_string_pretty(&trace).unwrap(); - let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - + let _trace: SMTTrace = serde_json::from_str(&json).unwrap(); // for path in &trace.account_path { // assert!(path.leaf.is_some() || path.path.is_empty()) @@ -538,7 +537,6 @@ fn empty_account_type_2() { panic!(); } - // let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); panic!(); } diff --git a/src/types.rs b/src/types.rs index f8298769..1fbf679a 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,5 +1,4 @@ use crate::{ - constraint_builder::Query, gadgets::mpt_update::PathType, serde::{AccountData, HexBytes, SMTNode, SMTPath, SMTTrace}, util::{ @@ -50,35 +49,27 @@ impl TryFrom for HashDomain { } } -impl Into for HashDomain { - fn into(self) -> Fr { - let x: u64 = self.into(); - x.into() +impl From for Fr { + fn from(h: HashDomain) -> Self { + Self::from(u64::from(h)) } } -impl Into for HashDomain { - fn into(self) -> u64 { - match self { - Self::NodeTypeEmpty => 4, - Self::NodeTypeLeaf => 5, - Self::NodeTypeBranch0 => 6, - Self::NodeTypeBranch1 => 7, - Self::NodeTypeBranch2 => 8, - Self::NodeTypeBranch3 => 9, - Self::Pair => 2 * 256, - Self::AccountFields => 5 * 256, +impl From for u64 { + fn from(h: HashDomain) -> Self { + match h { + HashDomain::NodeTypeEmpty => 4, + HashDomain::NodeTypeLeaf => 5, + HashDomain::NodeTypeBranch0 => 6, + HashDomain::NodeTypeBranch1 => 7, + HashDomain::NodeTypeBranch2 => 8, + HashDomain::NodeTypeBranch3 => 9, + HashDomain::Pair => 2 * 256, + HashDomain::AccountFields => 5 * 256, } } } -impl Into> for HashDomain { - fn into(self) -> Query { - let x: u64 = self.into(); - Query::from(x) - } -} - impl HashDomain { pub fn into_u64(&self) -> u64 { (*self).into() From 640bdede68118d42136a9dce2886a9c3c59c736d Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 11:58:01 +0800 Subject: [PATCH 27/86] Update node type in traces --- src/traces/empty_account_type_1.json | 4 ++-- src/traces/empty_account_type_1_balance_update.json | 4 ++-- src/traces/empty_account_type_1_nonce_update.json | 4 ++-- src/traces/empty_storage_type_1_update_a.json | 8 ++++---- src/traces/empty_storage_type_1_update_b.json | 8 ++++---- src/traces/empty_storage_type_1_update_c.json | 8 ++++---- src/traces/existing_account_balance_update.json | 4 ++-- src/traces/existing_account_code_size_update.json | 4 ++-- src/traces/existing_account_keccak_codehash_update.json | 4 ++-- src/traces/existing_account_nonce_update.json | 4 ++-- src/traces/existing_account_poseidon_codehash_update.json | 4 ++-- src/traces/existing_storage_update.json | 8 ++++---- src/traces/insert_into_singleton_storage_trie.json | 8 ++++---- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/traces/empty_account_type_1.json b/src/traces/empty_account_type_1.json index b63352ba..a2b2d413 100644 --- a/src/traces/empty_account_type_1.json +++ b/src/traces/empty_account_type_1.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/empty_account_type_1_balance_update.json b/src/traces/empty_account_type_1_balance_update.json index 1bd3b06d..b3fa8c05 100644 --- a/src/traces/empty_account_type_1_balance_update.json +++ b/src/traces/empty_account_type_1_balance_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0x12c81213be899bb64430611a4aa90214650855786bbec94bc0aea8780cf7fb1f", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xd40db0ee83e5d59382ab7774bf76b2c0a2ed10883acebdb44e0b05d1d0f57e11", "sibling": "0x228442949e7ba388bf9c08ec9374c72a579a39d2a1bf453d87dae5368c5f3c1d", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/empty_account_type_1_nonce_update.json b/src/traces/empty_account_type_1_nonce_update.json index d289da9a..efeda8ba 100644 --- a/src/traces/empty_account_type_1_nonce_update.json +++ b/src/traces/empty_account_type_1_nonce_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xd40db0ee83e5d59382ab7774bf76b2c0a2ed10883acebdb44e0b05d1d0f57e11", "sibling": "0xf732e39dd1c1d610d1e5ba97c55c156bf2e9b3c9f13d26f655ea18796bdda90f", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/empty_storage_type_1_update_a.json b/src/traces/empty_storage_type_1_update_a.json index 3ae3d88c..94859e27 100644 --- a/src/traces/empty_storage_type_1_update_a.json +++ b/src/traces/empty_storage_type_1_update_a.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xf40471ec703f0c374188ffc2658895da71ba12520daa93978d162ff2ca71b900", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -77,7 +77,7 @@ "leaf": { "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", "sibling": "0x34d524b5f5f6d93367bf6b6452a1aa7e17d8696555258de41be8002cc6cdd42f", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -108,7 +108,7 @@ "leaf": { "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", "sibling": "0xd4bbd1bcd3b00b743d57005fd62af4e0df6c021c92288e1bf5ede810b09c590a", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/empty_storage_type_1_update_b.json b/src/traces/empty_storage_type_1_update_b.json index 8c4b044d..2c4db827 100644 --- a/src/traces/empty_storage_type_1_update_b.json +++ b/src/traces/empty_storage_type_1_update_b.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0x006a1519d7385d14cd2ee1fbb9244538d87881fc21f4aa0bcaaa9727573acd21", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -77,7 +77,7 @@ "leaf": { "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", "sibling": "0x9044c8b6fcf025b005c278f6f154d7cba8c4603e9e597062c7b271a3c4496817", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -113,7 +113,7 @@ "leaf": { "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", "sibling": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/empty_storage_type_1_update_c.json b/src/traces/empty_storage_type_1_update_c.json index 8de5d82a..b8477d62 100644 --- a/src/traces/empty_storage_type_1_update_c.json +++ b/src/traces/empty_storage_type_1_update_c.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xd2d01beada4773f453ea5c55274eb25b5bb6d392c3140a0daa63065b2d601d01", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -77,7 +77,7 @@ "leaf": { "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", "sibling": "0x630fe719918f65244b259027991431bc0fde4bd0aad4bf82b7f4e022b20cff12", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -103,7 +103,7 @@ "leaf": { "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", "sibling": "0xebbde6853f0d7fd5c795a751c763ee866f603ddd45a59a14ad1189f04105c506", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_account_balance_update.json b/src/traces/existing_account_balance_update.json index 870afe88..6e78ea3e 100644 --- a/src/traces/existing_account_balance_update.json +++ b/src/traces/existing_account_balance_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0x7aaaf309a30602bd2cada44848a5345527cddb78d8ebcbf95bd03e56a9cec528", "sibling": "0xff2cc690b31f32da9f69ee898d38396be2b418bcd781e2f504c823a9e3b5990c", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_account_code_size_update.json b/src/traces/existing_account_code_size_update.json index 044106e0..2b650249 100644 --- a/src/traces/existing_account_code_size_update.json +++ b/src/traces/existing_account_code_size_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -43,7 +43,7 @@ "leaf": { "value": "0xec307bc289a81964a2f2d79a685ba399033aa5f82961d56193495ef23328d304", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_account_keccak_codehash_update.json b/src/traces/existing_account_keccak_codehash_update.json index d71b3c16..aef5e88c 100644 --- a/src/traces/existing_account_keccak_codehash_update.json +++ b/src/traces/existing_account_keccak_codehash_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0x2cb1dd51e4f0830f4eb3e0af2736d327ccc7e7b9ddf6e5846edaf7b2c3fc562b", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -43,7 +43,7 @@ "leaf": { "value": "0x48eb1308ad440c0f152d9c303487acee533938575d0bfaad7f19665710945524", "sibling": "0x2cb1dd51e4f0830f4eb3e0af2736d327ccc7e7b9ddf6e5846edaf7b2c3fc562b", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_account_nonce_update.json b/src/traces/existing_account_nonce_update.json index 29b1baea..e7a645d2 100644 --- a/src/traces/existing_account_nonce_update.json +++ b/src/traces/existing_account_nonce_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -43,7 +43,7 @@ "leaf": { "value": "0x02d35c0011d4d648ad35580cdc6cc18beb8b4a6997cda5a113973270c5786703", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_account_poseidon_codehash_update.json b/src/traces/existing_account_poseidon_codehash_update.json index 4ac04aa4..7bf6e00f 100644 --- a/src/traces/existing_account_poseidon_codehash_update.json +++ b/src/traces/existing_account_poseidon_codehash_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd5183cce27ff45da94689d72d862770b5d6ff7315de77ef74d4e4318ac14ea11", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -43,7 +43,7 @@ "leaf": { "value": "0x5b49cbbb725f686b759f6308ee12d00f79a9ed37ecdb98583993e078b6ace81f", "sibling": "0xbc47183529351c0a1de1339bd11c9fcbe706bebe4cfeb512b5eca9b808773c22", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/existing_storage_update.json b/src/traces/existing_storage_update.json index b1cd5a5f..d45a9714 100644 --- a/src/traces/existing_storage_update.json +++ b/src/traces/existing_storage_update.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0x955cc7b55a09e9141ad794466730f604e1eb4eb10a2e305d21cf4f790f44081d", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -77,7 +77,7 @@ "leaf": { "value": "0x50ea2e5d1d10a9ebc255098ff2670e4a4faaa8018a07eb92340063dea69b0426", "sibling": "0xf905bf0e3f6390d89aa4bfd38ebec0cd834a15c509be9796b05c44c34405b111", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -143,7 +143,7 @@ "leaf": { "value": "0x2c5d0be0aa5628aa1d5e7886757e225bb17312ac3db0e32ce442a2ff9ce6d511", "sibling": "0xf905bf0e3f6390d89aa4bfd38ebec0cd834a15c509be9796b05c44c34405b111", - "node_type": 5 + "node_type": 4 }, "path": [ { diff --git a/src/traces/insert_into_singleton_storage_trie.json b/src/traces/insert_into_singleton_storage_trie.json index 03ea30b4..ebc337f8 100644 --- a/src/traces/insert_into_singleton_storage_trie.json +++ b/src/traces/insert_into_singleton_storage_trie.json @@ -7,7 +7,7 @@ "leaf": { "value": "0xf4d0c4b8b5e226544d147596eb560ce0e34f0397d126a4b3f0f34a3ef9f74103", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -33,7 +33,7 @@ "leaf": { "value": "0xecb1e80fe56518f7715d59f4127704ec8df5c63c4e0d7d69737ea4c4703ea917", "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", - "node_type": 5 + "node_type": 4 }, "path": [ { @@ -77,7 +77,7 @@ "leaf": { "value": "0x7934cd98d51fd603e653f6b03b13edc269299a100867174016312db42eff3a2c", "sibling": "0x55dbbd501fc21ad03be98003051b7bd08cdae7e153eefada883227167d198002", - "node_type": 5 + "node_type": 4 }, "pathPart": "0x0" }, @@ -86,7 +86,7 @@ "leaf": { "value": "0x8564322fa664ff339902ab3e0a20582a4c65ca1bb8dfc1be45bfa48f0e43b20e", "sibling": "0x84d212cc2c8afac2fe17b77867a38d5b9e1308b0b8b723df2ea83728579b5a0a", - "node_type": 5 + "node_type": 4 }, "path": [ { From da5ced02ca068f2295fb6b12dc947e91762097bc Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 12:39:54 +0800 Subject: [PATCH 28/86] Add type 2 non existing account proof --- src/tests.rs | 58 ++++++++++++++-------------- src/traces/empty_account_type_2.json | 57 +++++++++++++++++++++++++++ src/types.rs | 33 ++++++++-------- 3 files changed, 103 insertions(+), 45 deletions(-) create mode 100644 src/traces/empty_account_type_2.json diff --git a/src/tests.rs b/src/tests.rs index 7856550d..c3003f01 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -137,6 +137,36 @@ fn empty_account_type_1() { mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); } +#[test] +fn empty_account_type_2() { + let mut generator = initial_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(20), + U256::zero(), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_2.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + for path in &trace.account_path { + assert!(path.leaf.is_none(), "account is not type 2"); + } + + let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace.clone())); + proof.check(); + + mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); +} + #[test] fn existing_account_balance_update() { let mut generator = initial_generator(); @@ -512,31 +542,3 @@ fn insert_into_singleton_storage_trie() { let proof = Proof::from((MPTProofType::StorageChanged, trace)); proof.check(); } - -#[ignore = "type 2 empty account proofs are incomplete"] -#[test] -fn empty_account_type_2() { - // i = 20 should be type 2? - for i in 104..255 { - let mut generator = initial_generator(); - let trace = generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, - Address::repeat_byte(i), - U256::one(), - U256::zero(), - None, - ); - // 0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621 - - let json = serde_json::to_string_pretty(&trace).unwrap(); - let _trace: SMTTrace = serde_json::from_str(&json).unwrap(); - - // for path in &trace.account_path { - // assert!(path.leaf.is_some() || path.path.is_empty()) - // } - panic!(); - } - - // let proof = Proof::from((MPTProofType::AccountDoesNotExist, trace)); - panic!(); -} diff --git a/src/traces/empty_account_type_2.json b/src/traces/empty_account_type_2.json new file mode 100644 index 00000000..368cef7e --- /dev/null +++ b/src/traces/empty_account_type_2.json @@ -0,0 +1,57 @@ +{ + "address": "0x1414141414141414141414141414141414141414", + "accountKey": "0x0528ff2808cf785c378aaf2765ac1000c537dbd43cb0022b2387f200ba160324", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + }, + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/src/types.rs b/src/types.rs index 1fbf679a..4b5436b5 100644 --- a/src/types.rs +++ b/src/types.rs @@ -830,23 +830,22 @@ impl Proof { ); // if this still the case???? - // TODO: handle none here. - assert_eq!( - domain_hash( - self.leafs[0].unwrap().key, - self.leafs[0].unwrap().value_hash, - HashDomain::NodeTypeEmpty, - ), - self.old_account_hash_traces[5][2], - ); - assert_eq!( - domain_hash( - self.leafs[1].unwrap().key, - self.leafs[1].unwrap().value_hash, - HashDomain::NodeTypeEmpty, - ), - self.new_account_hash_traces[5][2], - ); + if let Some(old_leaf) = self.leafs[0] { + assert_eq!( + domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty,), + self.old_account_hash_traces[5][2], + ); + } else { + assert_eq!(self.address_hash_traces.first().unwrap().2, Fr::zero()) + } + if let Some(old_leaf) = self.leafs[0] { + assert_eq!( + domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty,), + self.new_account_hash_traces[5][2], + ); + } else { + assert_eq!(self.address_hash_traces.first().unwrap().3, Fr::zero()) + } // // storage poseidon hashes are correct // self.storage_hash_traces From e2b25be68f013b2a7a6342c6104030d928cb6d6f Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 12:47:34 +0800 Subject: [PATCH 29/86] Fix check --- src/tests.rs | 2 ++ src/types.rs | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index c3003f01..3bd487ee 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -127,6 +127,7 @@ fn empty_account_type_1() { ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!(trace.account_update, [None, None], "account is not empty"); for path in &trace.account_path { assert!(path.leaf.is_some(), "account is not type 1"); } @@ -157,6 +158,7 @@ fn empty_account_type_2() { ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!(trace.account_update, [None, None], "account is not empty"); for path in &trace.account_path { assert!(path.leaf.is_none(), "account is not type 2"); } diff --git a/src/types.rs b/src/types.rs index 4b5436b5..05da15ff 100644 --- a/src/types.rs +++ b/src/types.rs @@ -832,15 +832,15 @@ impl Proof { if let Some(old_leaf) = self.leafs[0] { assert_eq!( - domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty,), + domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty), self.old_account_hash_traces[5][2], ); } else { assert_eq!(self.address_hash_traces.first().unwrap().2, Fr::zero()) } - if let Some(old_leaf) = self.leafs[0] { + if let Some(new_leaf) = self.leafs[1] { assert_eq!( - domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty,), + domain_hash(new_leaf.key, new_leaf.value_hash, HashDomain::NodeTypeEmpty), self.new_account_hash_traces[5][2], ); } else { From 5fceda83c2b318967304490954e487346333ee6c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 13:21:52 +0800 Subject: [PATCH 30/86] Add balance update for type 2 empty account --- src/gadgets/mpt_update.rs | 30 ++++---- src/tests.rs | 31 +++++++++ .../empty_account_type_2_balance_update.json | 68 +++++++++++++++++++ 3 files changed, 114 insertions(+), 15 deletions(-) create mode 100644 src/traces/empty_account_type_2_balance_update.json diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 5d6b741c..3d3c80b0 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -36,8 +36,9 @@ use lazy_static::lazy_static; use strum::IntoEnumIterator; lazy_static! { - // TODO - static ref ZERO_STORAGE_HASH: Fr = domain_hash(Fr::zero(), Fr::zero(), HashDomain::Pair); + static ref ZERO_PAIR_HASH: Fr = domain_hash(Fr::zero(), Fr::zero(), HashDomain::Pair); + static ref ZERO_STORAGE_ROOT_KECCAK_CODEHASH_HASH: Fr = + domain_hash(Fr::zero(), *ZERO_PAIR_HASH, HashDomain::AccountFields); } pub trait MptUpdateLookup { @@ -314,8 +315,8 @@ impl MptUpdateConfig { pub fn assign_padding_row(&self, region: &mut Region<'_, Fr>, offset: usize) { self.proof_type .assign(region, offset, MPTProofType::AccountDoesNotExist); - self.key.assign(region, offset, *ZERO_STORAGE_HASH); - self.other_key.assign(region, offset, *ZERO_STORAGE_HASH); + self.key.assign(region, offset, *ZERO_PAIR_HASH); + self.other_key.assign(region, offset, *ZERO_PAIR_HASH); } /// .. @@ -804,12 +805,12 @@ impl MptUpdateConfig { old_hash_is_zero_storage_hash.assign_value_and_inverse( region, offset, - old_hash - *ZERO_STORAGE_HASH, + old_hash - *ZERO_PAIR_HASH, ); new_hash_is_zero_storage_hash.assign_value_and_inverse( region, offset, - new_hash - *ZERO_STORAGE_HASH, + new_hash - *ZERO_PAIR_HASH, ); match path_type { @@ -1184,8 +1185,7 @@ fn configure_nonce( cb.assert_equal( "sibling is hash(0, hash(0, 0)) for nonce extension new at AccountLeaf2", config.sibling.current(), - domain_hash(Fr::zero(), domain_hash(Fr::zero(), - Fr::zero(), HashDomain::AccountFields), HashDomain::AccountFields).into(), + Query::from(*ZERO_STORAGE_ROOT_KECCAK_CODEHASH_HASH), ); }, ); @@ -1460,10 +1460,10 @@ fn configure_balance( config.path_type.current_matches(&[PathType::ExtensionNew]), |cb| { cb.assert_equal( - "sibling is hash(0, hash(0, 0)) for balance extension new at AccountLeaf2", - config.sibling.current(), - domain_hash(Fr::zero(), domain_hash(Fr::zero(), Fr::zero(), HashDomain::AccountFields), HashDomain::AccountFields).into(), - ); + "sibling is hash(0, hash(0, 0)) for balance extension new at AccountLeaf2", + config.sibling.current(), + Query::from(*ZERO_STORAGE_ROOT_KECCAK_CODEHASH_HASH), + ); }, ); } @@ -1733,12 +1733,12 @@ fn configure_storage( cb.assert_equal( "old_hash_minus_zero_storage_hash = old_hash - hash(0, 0)", old_hash_is_zero_storage_hash.value.current(), - config.old_hash.current() - *ZERO_STORAGE_HASH, + config.old_hash.current() - *ZERO_PAIR_HASH, ); cb.assert_equal( "new_hash_minus_zero_storage_hash = new_hash - hash(0, 0)", new_hash_is_zero_storage_hash.value.current(), - config.new_hash.current() - *ZERO_STORAGE_HASH, + config.new_hash.current() - *ZERO_PAIR_HASH, ); cb.assert( "old hash != hash(0, 0)", @@ -1914,7 +1914,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { let mut hash_traces = vec![( [Fr::zero(), Fr::zero()], HashDomain::Pair.into(), - *ZERO_STORAGE_HASH, + *ZERO_PAIR_HASH, )]; for proof in proofs.iter() { let address_hash_traces = &proof.address_hash_traces; diff --git a/src/tests.rs b/src/tests.rs index 3bd487ee..629c6218 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -223,6 +223,37 @@ fn empty_account_type_1_balance_update() { proof.check(); } +#[test] +fn empty_account_type_2_balance_update() { + let mut generator = initial_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(20), + U256::from(123124128387u64), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_2_balance_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + assert!( + trace.account_update[0].is_none() && trace.account_path[0].leaf.is_none(), + "old account is not type 2" + ); + + let proof = Proof::from((MPTProofType::BalanceChanged, trace.clone())); + proof.check(); + + mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); +} + #[test] fn existing_account_nonce_update() { let mut generator = initial_generator(); diff --git a/src/traces/empty_account_type_2_balance_update.json b/src/traces/empty_account_type_2_balance_update.json new file mode 100644 index 00000000..dd299b04 --- /dev/null +++ b/src/traces/empty_account_type_2_balance_update.json @@ -0,0 +1,68 @@ +{ + "address": "0x1414141414141414141414141414141414141414", + "accountKey": "0x0528ff2808cf785c378aaf2765ac1000c537dbd43cb0022b2387f200ba160324", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + }, + { + "root": "0x5a2414efcc32e8be0e1d26a4a3f46ee4ff8211c44220dbdd64960bb0fce5b722", + "leaf": { + "value": "0x0d4de0a5d4665c3881fec254a7f1cb43ab19f029249081648edc6bfe3f16a610", + "sibling": "0x0528ff2808cf785c378aaf2765ac1000c537dbd43cb0022b2387f200ba160324", + "node_type": 4 + }, + "path": [ + { + "value": "0x95a80bcaea9bb560c48f62956dd193398bd4cbad882e8068cf422894fee6c92a", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x66f056352b83824dcfa7b41df3d23aa80b36014068572a2e57273357a0f0c22d", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x8e80d651ba2bec43ee4c9d929740149affbe4327f21d8c7c7944bc88430b271c", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + } + ], + "accountUpdate": [ + null, + { + "nonce": 0, + "balance": "0x1caac51a83", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} From 7fcb10ded9afd1dcb03a41ae0f0a9088aa00f1ab Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 13:30:36 +0800 Subject: [PATCH 31/86] Add type_2 nonce update test --- src/tests.rs | 31 +++++++++ .../empty_account_type_2_nonce_update.json | 68 +++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/traces/empty_account_type_2_nonce_update.json diff --git a/src/tests.rs b/src/tests.rs index 629c6218..bae7dafe 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -308,6 +308,37 @@ fn empty_account_type_1_nonce_update() { proof.check(); } +#[test] +fn empty_account_type_2_nonce_update() { + let mut generator = initial_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::NonceChanged, + Address::repeat_byte(20), + U256::from(123124128387u64), + U256::zero(), + None, + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_account_type_2_nonce_update.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + assert!( + trace.account_update[0].is_none() && trace.account_path[0].leaf.is_none(), + "old account is not type 2" + ); + + let proof = Proof::from((MPTProofType::NonceChanged, trace.clone())); + proof.check(); + + mock_prove(vec![(MPTProofType::NonceChanged, trace)]); +} + #[test] fn existing_account_code_size_update() { let mut generator = initial_generator(); diff --git a/src/traces/empty_account_type_2_nonce_update.json b/src/traces/empty_account_type_2_nonce_update.json new file mode 100644 index 00000000..2d683cd7 --- /dev/null +++ b/src/traces/empty_account_type_2_nonce_update.json @@ -0,0 +1,68 @@ +{ + "address": "0x1414141414141414141414141414141414141414", + "accountKey": "0x0528ff2808cf785c378aaf2765ac1000c537dbd43cb0022b2387f200ba160324", + "accountPath": [ + { + "root": "0xb3e9ff02c109b1d6aefa774523aaf5bef1207226e85a3726ecb505227ad1e621", + "path": [ + { + "value": "0x4c132495916e6529f791ad1d6977c5b9cf8720a58a7f196ea6fae35dffd80c15", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + }, + { + "root": "0xd9f27a88ad2093314ec125c48ddd1178da1db83142335ecf4958f3f5a3678b23", + "leaf": { + "value": "0x65c44a49797f54ab3bf14e751b8c59c65fee50513b60467decd2defc3e424319", + "sibling": "0x0528ff2808cf785c378aaf2765ac1000c537dbd43cb0022b2387f200ba160324", + "node_type": 4 + }, + "path": [ + { + "value": "0x184f988ad75b2e5bb8cfb6e3c2c157a2621d11a892db5a0a909370f4eaf42d16", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0xbcead335ea114e6112030c0c12e1a59495163e8f20e72231f069d4b76921ec12", + "sibling": "0xea63c2cf7aaed65918936ba7b61df455d10abed099b690d5b14825ed27aa7e1a", + "node_type": 9 + }, + { + "value": "0x17a80fbb505406ea3d7d84b86c84e09d13986e58799111b50ac5d1cfb438fa1b", + "sibling": "0xa6a9b79363aac191b917d19aadd68390479fb9b83a481186e30beecf2c338812", + "node_type": 8 + } + ], + "pathPart": "0x5" + } + ], + "accountUpdate": [ + null, + { + "nonce": 123124128387, + "balance": "0x0", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" +} From d0b1bbe79349cd5d7821587362e2220f6648e7dd Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 14:12:50 +0800 Subject: [PATCH 32/86] Add empty storage type 2 update tests --- src/tests.rs | 89 +++++++++++ src/traces/empty_storage_type_2_update_a.json | 144 ++++++++++++++++++ src/traces/empty_storage_type_2_update_b.json | 144 ++++++++++++++++++ 3 files changed, 377 insertions(+) create mode 100644 src/traces/empty_storage_type_2_update_a.json create mode 100644 src/traces/empty_storage_type_2_update_b.json diff --git a/src/tests.rs b/src/tests.rs index bae7dafe..9c7904f9 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -494,6 +494,95 @@ fn empty_storage_type_1_update_a() { deletion_proof.check(); } +#[test] +fn empty_storage_type_2_update_a() { + let mut generator = initial_storage_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(307), + U256::zero(), + Some(U256::from(502)), + ); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_none(), + "old storage entry is not type 2" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_storage_type_2_update_a.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!( + trace.state_path[0] + .clone() + .unwrap() + .path + .last() + .unwrap() + .node_type, + 7 + ); + + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + deletion_proof.check(); +} + +#[test] +fn empty_storage_type_2_update_b() { + let mut generator = initial_storage_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(1), + U256::from(307), + U256::zero(), + Some(U256::from(500)), + ); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_none(), + "old storage entry is not type 2" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + assert_eq!( + format!("{}\n", json), + include_str!("traces/empty_storage_type_2_update_b.json"), + "{}", + json + ); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + assert_eq!( + trace.state_path[0] + .clone() + .unwrap() + .path + .last() + .unwrap() + .node_type, + 8 + ); + + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + deletion_proof.check(); +} + +// Note: it's not possible to have a final node type == 6 for a type 2 empty leaf +// proof. This would be inconsistent because node type == 6 requires that neither +// child node the branch node is itself a branch node, while the leaf node being +// type 2 empty would require that one of the child nodes of the branch node is empty. +// The zktrie construction rules forbid the existence of a subtrie containing only +// one leaf. + #[test] fn empty_storage_type_1_update_b() { let mut generator = initial_storage_generator(); diff --git a/src/traces/empty_storage_type_2_update_a.json b/src/traces/empty_storage_type_2_update_a.json new file mode 100644 index 00000000..6f1b2e29 --- /dev/null +++ b/src/traces/empty_storage_type_2_update_a.json @@ -0,0 +1,144 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 4 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x3630c1fc10b0712ce42a7ea80aab96f959c0ee18f1357a68c04f244f3f45a224", + "leaf": { + "value": "0xc68c138b7bf413375e49b21e3d86eec221d4ad5261d15298889d29cab28d6814", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 4 + }, + "path": [ + { + "value": "0x570ae52fb01033d690c7265832c37c1177c68deec178ed9d1b33fc2379a42b08", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x0c6f6cc1ebc4a74e6c249d6c84de7f775f2f6ddc429dffd7c4d972bf81f6d310", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0xd87b24034564326cbaaf90ed5b2a85cf6db067aeb538a6ead52e91ee238db129", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "path": [ + { + "value": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x9594a5a6bf52685e0fbfbc9b10d02baa4525837fe7774cbe86ab5b96dd15ee0d", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0xf5ddf83d9e16d65c3bacd2e8093581d7c5da48dd8cf2ea7b3d07b15adbe2d525", + "sibling": "0x1159be0b5a22d4285fa446314948200958a5752517fbd165e9151c1ca978e601", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xb708b9dd7dd910bd3aff840e6b5c57b3a539aa8177c0403d56a252bfced52a2a", + "node_type": 7 + } + ], + "pathPart": "0x1" + }, + { + "root": "0x39c51c95828f752fff0a45a4aad485e8ce3a67bb690d4813d55f5d586b943d28", + "leaf": { + "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", + "sibling": "0xd15631dde47d33a3a51eba7eae19cd91bcfa31af04f9f862dc086ab1f757761c", + "node_type": 4 + }, + "path": [ + { + "value": "0x3107aa2b137a3ecee6225245b59c4efbaea3c269a69b50a89d18ac96636a081a", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x4d6e294449fadb158d2cfa7c6409412bc0f82123f9115eb4044a2c3b83d8f513", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0xafe665ce22fd76a2a0fd4e190d1f7081128e23eced889a7214c87b536c790501", + "sibling": "0x1159be0b5a22d4285fa446314948200958a5752517fbd165e9151c1ca978e601", + "node_type": 9 + }, + { + "value": "0xf8eee5c40ebcb807d2820ca1b70b44a83fe1c0afd5fcd56c8a589aa248d75203", + "sibling": "0xb708b9dd7dd910bd3aff840e6b5c57b3a539aa8177c0403d56a252bfced52a2a", + "node_type": 7 + } + ], + "pathPart": "0x1" + } + ], + "stateKey": "0xd15631dde47d33a3a51eba7eae19cd91bcfa31af04f9f862dc086ab1f757761c", + "stateUpdate": [ + { + "key": "0x00000000000000000000000000000000000000000000000000000000000001f6", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x00000000000000000000000000000000000000000000000000000000000001f6", + "value": "0x0000000000000000000000000000000000000000000000000000000000000133" + } + ] +} diff --git a/src/traces/empty_storage_type_2_update_b.json b/src/traces/empty_storage_type_2_update_b.json new file mode 100644 index 00000000..b25caef2 --- /dev/null +++ b/src/traces/empty_storage_type_2_update_b.json @@ -0,0 +1,144 @@ +{ + "address": "0x0101010101010101010101010101010101010101", + "accountKey": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "accountPath": [ + { + "root": "0xb696019bc06c70a975c602aa0d7a1fa25c04e18cf48d7b4ead1ad980481d6616", + "leaf": { + "value": "0xd472374b1135b67ffc1d5414460fe3b4efaf31ce9ae4c83d1364ba87a9472a2c", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 4 + }, + "path": [ + { + "value": "0xa8ba04fc659bc821c6dbc1f6775dcb9e83dd215a1943c6a6c5375bdb65498b24", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x339130a89388cf0ced2bb4f9b4e5073930e4121e16ee46e301acfcce18a3220d", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x1488ae111aac349974efc97e73fc7415540a43249af5155997dbb0c2f22fc201", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + }, + { + "root": "0x1c8ed14e3acc3c48ac2ff30de56516f9f779c04b09baa957e2b3bf474e5c6811", + "leaf": { + "value": "0xb4b44f01c466db3685bd0e5e016bcb45be5da612c252362aee0ea129716b6114", + "sibling": "0x2368fc91ec42cf498e51d1796cfcacf1efb26920e114962fb9c4763b1080341d", + "node_type": 4 + }, + "path": [ + { + "value": "0x68b506f7859b358437662e04b491a9dcf0beeb3c64a795ac5348fa6e04a7fb0e", + "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", + "node_type": 9 + }, + { + "value": "0x9bbd3ec8ba0ee44923298615dc1355313b99ece5cf10354856af33ab4fc69c1b", + "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", + "node_type": 9 + }, + { + "value": "0x65e0c483d7a3f4c7e2d92cc2fb95538712cf5ae8d71973e40b5449f93f8ef308", + "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", + "node_type": 6 + } + ], + "pathPart": "0x3" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + }, + { + "nonce": 0, + "balance": "0x1", + "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "codeSize": 0 + } + ], + "statePath": [ + { + "root": "0x9f8447ba78ad7e1c7566d9242c8c6d77f02dfe081717cb0a1fe024485735290e", + "path": [ + { + "value": "0x233ebad9cd643db2577e9a70c76a24705fc5e4f3b450c3bdcab4b7162a1e7012", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x9594a5a6bf52685e0fbfbc9b10d02baa4525837fe7774cbe86ab5b96dd15ee0d", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0x1159be0b5a22d4285fa446314948200958a5752517fbd165e9151c1ca978e601", + "sibling": "0xf5ddf83d9e16d65c3bacd2e8093581d7c5da48dd8cf2ea7b3d07b15adbe2d525", + "node_type": 9 + }, + { + "value": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sibling": "0xa1e945602598269f8a2a639969f2abda2ad190337d489adda7ebb16c5693d021", + "node_type": 8 + } + ], + "pathPart": "0xd" + }, + { + "root": "0x5bd19d96b0c37ac7ef57c429eb02bc447ddecd013b6005c41878b5c9e8a7f90a", + "leaf": { + "value": "0xbf4245864783af356463b2c5af200bb87bc64171dd99a8ac0acc67bfa408f600", + "sibling": "0xdd5604412ca6840ca95fa06554b3d78df7b5ce751c48259a50e1d781a6b53613", + "node_type": 4 + }, + "path": [ + { + "value": "0xe927005f5f8a8edf6f9b5ccff22a0cb9ddcf1841ec28f26baa1179296d4e1218", + "sibling": "0xf4d5d6e3ae2e36f7a099a2a7ed72432b173f3211c0c2b4d4e10e023030428829", + "node_type": 9 + }, + { + "value": "0x05f4fe08f426f5cd4cd9ecc8d1ff49efdd504b4df47b5f91e27166781a63270b", + "sibling": "0x720c52d0a1382db2c1c8d60502578d5497139182e5b52988ca96a2e2cb5ed81b", + "node_type": 9 + }, + { + "value": "0xb1ed8e1e50666bf29208dc9570e01759ee24b9b02db70bd842ed687c0dfe0800", + "sibling": "0xf5ddf83d9e16d65c3bacd2e8093581d7c5da48dd8cf2ea7b3d07b15adbe2d525", + "node_type": 9 + }, + { + "value": "0x6bc2da984016a256af4256511fa2ff0a47b2c96f45ddebe33689270212c5c218", + "sibling": "0xa1e945602598269f8a2a639969f2abda2ad190337d489adda7ebb16c5693d021", + "node_type": 8 + } + ], + "pathPart": "0xd" + } + ], + "stateKey": "0xdd5604412ca6840ca95fa06554b3d78df7b5ce751c48259a50e1d781a6b53613", + "stateUpdate": [ + { + "key": "0x00000000000000000000000000000000000000000000000000000000000001f4", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x00000000000000000000000000000000000000000000000000000000000001f4", + "value": "0x0000000000000000000000000000000000000000000000000000000000000133" + } + ] +} From 32629ed21baf929e9823ec0317647c16d89d133d Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 14:44:31 +0800 Subject: [PATCH 33/86] Mock prove storage update --- src/gadgets/mpt_update.rs | 5 ++++- src/tests.rs | 17 ++++------------- src/types.rs | 4 ---- src/types/storage.rs | 33 ++++++++++++++++++++++++++------- src/types/trie.rs | 6 ++++-- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 3d3c80b0..9a4e6aeb 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -634,6 +634,7 @@ impl MptUpdateConfig { (row.old, self.old_hash), (row.new, self.new_hash), (row.direction.into(), self.direction), + (row.domain.into(), self.domain), ] { column.assign(region, offset, value); } @@ -757,6 +758,8 @@ impl MptUpdateConfig { self.segment_type .assign(region, offset, SegmentType::StorageLeaf0); self.direction.assign(region, offset, true); + self.domain + .assign(region, offset, HashDomain::NodeTypeEmpty); let sibling = match path_type { PathType::Start => unreachable!(), @@ -1951,7 +1954,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { .storage .poseidon_lookups() .into_iter() - .map(|(a, b, h)| ([a, b], Fr::zero(), h)), + .map(|(left, right, domain, h)| ([left, right], Fr::from(domain), h)), ); let key = account_key(proof.claim.address); diff --git a/src/tests.rs b/src/tests.rs index 9c7904f9..931cde1d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -421,18 +421,7 @@ fn existing_account_poseidon_codehash_update() { #[test] fn existing_storage_update() { - let mut generator = initial_generator(); - - for i in 40..60 { - generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), - U256::one(), - U256::zero(), - Some(U256::from(i)), - ); - } - + let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, Address::repeat_byte(1), @@ -449,8 +438,10 @@ fn existing_storage_update() { json ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::StorageChanged, trace)); + let proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::StorageChanged, trace)]); } #[test] diff --git a/src/types.rs b/src/types.rs index 05da15ff..8e07373c 100644 --- a/src/types.rs +++ b/src/types.rs @@ -750,10 +750,6 @@ impl Proof { vec![account_key, poseidon_codehash, h3, storage_root] } ClaimKind::Storage { .. } | ClaimKind::IsEmpty(Some(_)) => { - assert_eq!( - self.old_account_hash_traces[5][2], - self.new_account_hash_traces[5][2] - ); assert_eq!( self.old_account_hash_traces[4][1], self.new_account_hash_traces[4][1] diff --git a/src/types/storage.rs b/src/types/storage.rs index 4e09b70d..f0842a69 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -61,8 +61,7 @@ impl StorageProof { } } - pub fn poseidon_lookups(&self) -> Vec<(Fr, Fr, Fr)> { - // TODO: missing the hash of the storage key for empty storage proofs. + pub fn poseidon_lookups(&self) -> Vec<(Fr, Fr, HashDomain, Fr)> { match self { Self::Root(_) => vec![], Self::Update { @@ -242,17 +241,37 @@ impl StorageLeaf { } } - fn poseidon_lookups(&self) -> Vec<(Fr, Fr, Fr)> { + fn poseidon_lookups(&self) -> Vec<(Fr, Fr, HashDomain, Fr)> { let mut lookups = vec![]; match self { Self::Empty { .. } => (), - Self::Leaf { value_hash, .. } => lookups.push((self.key(), *value_hash, self.hash())), + Self::Leaf { value_hash, .. } => lookups.push(( + self.key(), + *value_hash, + HashDomain::NodeTypeEmpty, + self.hash(), + )), Self::Entry { storage_key, .. } => { let (key_high, key_low) = u256_hi_lo(storage_key); lookups.extend(vec![ - (Fr::from_u128(key_high), Fr::from_u128(key_low), self.key()), - (self.value_high(), self.value_low(), self.value_hash()), - (self.key(), self.value_hash(), self.hash()), + ( + Fr::from_u128(key_high), + Fr::from_u128(key_low), + HashDomain::Pair, + self.key(), + ), + ( + self.value_high(), + self.value_low(), + HashDomain::Pair, + self.value_hash(), + ), + ( + self.key(), + self.value_hash(), + HashDomain::NodeTypeEmpty, + self.hash(), + ), ]); } } diff --git a/src/types/trie.rs b/src/types/trie.rs index 0ac37b52..2d26c538 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -9,7 +9,7 @@ use itertools::{EitherOrBoth, Itertools}; #[derive(Clone, Debug)] pub struct TrieRow { - domain: HashDomain, + pub domain: HashDomain, pub old: Fr, pub new: Fr, pub sibling: Fr, @@ -124,7 +124,7 @@ impl TrieRows { self.0.len() } - pub fn poseidon_lookups(&self) -> Vec<(Fr, Fr, Fr)> { + pub fn poseidon_lookups(&self) -> Vec<(Fr, Fr, HashDomain, Fr)> { self.0 .iter() .flat_map(|row| { @@ -141,11 +141,13 @@ impl TrieRows { let old = ( old_left, old_right, + row.domain, domain_hash(old_left, old_right, row.domain), ); let new = ( new_left, new_right, + row.domain, domain_hash(new_left, new_right, row.domain), ); match row.path_type { From 700ae12bdfea2fa0aa968ed3cff856c3357dd720 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 14:48:16 +0800 Subject: [PATCH 34/86] Mock prove type 2 storage update --- src/tests.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index 931cde1d..d47819df 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -521,9 +521,11 @@ fn empty_storage_type_2_update_a() { let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); - let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } #[test] @@ -562,9 +564,11 @@ fn empty_storage_type_2_update_b() { let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); - let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } // Note: it's not possible to have a final node type == 6 for a type 2 empty leaf From f10b3852168063d8c20a4ea13a2c15a15ec4c917 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 15:18:04 +0800 Subject: [PATCH 35/86] Handle empty_account_proofs_for_zero_value_updates --- src/gadgets/mpt_update.rs | 3 +-- src/tests.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 9a4e6aeb..3fcb452f 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -463,7 +463,6 @@ impl MptUpdateConfig { self.is_zero_gadgets[2].assign_value_and_inverse(region, offset, key - other_key); self.is_zero_gadgets[3].assign_value_and_inverse(region, offset, final_old_hash); - // self.intermediate_values[2].assign(region, offset, other_key); self.intermediate_values[3].assign(region, offset, other_leaf_data_hash); n_rows += proof.n_rows(); @@ -1586,7 +1585,7 @@ fn configure_keccak_code_hash( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { let [.., key_equals_other_key, hash_is_zero] = config.is_zero_gadgets; - let [_, _, _, _, other_leaf_data_hash, ..] = config.intermediate_values; + let [_, _, _, other_leaf_data_hash, ..] = config.intermediate_values; cb.assert_equal( "old hash = new hash for empty account proof", config.old_hash.current(), diff --git a/src/tests.rs b/src/tests.rs index d47819df..e111059c 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -169,6 +169,25 @@ fn empty_account_type_2() { mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); } +#[test] +fn empty_account_proofs_for_zero_value_updates() { + let traces: [SMTTrace; 2] = [ + serde_json::from_str(&include_str!("traces/empty_account_type_1.json")).unwrap(), + serde_json::from_str(&include_str!("traces/empty_account_type_2.json")).unwrap(), + ]; + for trace in traces { + for proof_type in [ + MPTProofType::BalanceChanged, + MPTProofType::NonceChanged, + MPTProofType::CodeSizeExists, + MPTProofType::CodeHashExists, + ] { + dbg!(proof_type); + mock_prove(vec![(proof_type, trace.clone())]); + } + } +} + #[test] fn existing_account_balance_update() { let mut generator = initial_generator(); From f03cab98c55f4233b6b08fde7d457fd892a7096a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 15:47:03 +0800 Subject: [PATCH 36/86] mock prove empty_account_proofs_for_empty_storage_updates --- src/tests.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/tests.rs b/src/tests.rs index e111059c..554597f0 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -188,6 +188,42 @@ fn empty_account_proofs_for_zero_value_updates() { } } +#[test] +fn empty_account_proofs_for_empty_storage_updates() { + let type_1_address = Address::zero(); + let type_2_address = Address::repeat_byte(20); + + for address in [type_1_address, type_2_address] { + let mut generator = initial_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageDoesNotExist, + address, + U256::zero(), + U256::zero(), + Some(U256::MAX), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + assert_eq!(trace.account_update, [None, None], "account is not empty"); + for path in &trace.account_path { + assert!( + if address == type_1_address { + path.leaf.is_some() + } else { + path.leaf.is_none() + }, + "account type incorrect" + ); + } + + let proof = Proof::from((MPTProofType::StorageDoesNotExist, trace.clone())); + proof.check(); + mock_prove(vec![(MPTProofType::StorageDoesNotExist, trace)]); + } +} + #[test] fn existing_account_balance_update() { let mut generator = initial_generator(); From 8f2c03a8a322c77fa90ecc919894d6d01de7b00b Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 16:58:56 +0800 Subject: [PATCH 37/86] constrain domain --- src/gadgets/mpt_update.rs | 103 +++++++++++------- src/gadgets/mpt_update/segment.rs | 18 +++ src/tests.rs | 83 +++++++------- .../empty_account_type_1_nonce_update.json | 16 +-- 4 files changed, 136 insertions(+), 84 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 3fcb452f..a4e6b6a0 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -265,6 +265,23 @@ impl MptUpdateConfig { ); } + for variant in SegmentType::iter() { + let conditional_constraints = |cb: &mut ConstraintBuilder| { + cb.assert_zero( + "domain in allowed set for segment type", + segment::domains(variant) + .iter() + .fold(Query::one(), |product, domain| { + product * (config.domain.current() - u64::from(*domain)) + }), + ); + }; + cb.condition( + config.segment_type.current_matches(&[variant]), + conditional_constraints, + ); + } + for proof_type in MPTProofType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| { configure_segment_transitions(cb, &config.segment_type, proof_type); @@ -317,6 +334,7 @@ impl MptUpdateConfig { .assign(region, offset, MPTProofType::AccountDoesNotExist); self.key.assign(region, offset, *ZERO_PAIR_HASH); self.other_key.assign(region, offset, *ZERO_PAIR_HASH); + self.domain.assign(region, offset, HashDomain::Pair); } /// .. @@ -364,6 +382,7 @@ impl MptUpdateConfig { self.key.assign(region, offset, key); self.other_key.assign(region, offset, other_key); + self.domain.assign(region, offset, HashDomain::Pair); self.intermediate_values[0].assign(region, offset, address_to_fr(proof.claim.address)); self.intermediate_values[1].assign( @@ -902,57 +921,63 @@ fn configure_common_path( config: &MptUpdateConfig, poseidon: &impl PoseidonLookup, ) { - cb.poseidon_lookup( - "poseidon hash correct for old common path", - [ - old_left(config), - old_right(config), - config.domain.current(), - config.old_hash.previous(), - ], - poseidon, - ); - cb.poseidon_lookup( - "poseidon hash correct for new common path", - [ - new_left(config), - new_right(config), - config.domain.current(), - config.new_hash.previous(), - ], - poseidon, - ); - cb.condition( config .path_type - .next_matches(&[PathType::ExtensionNew]) - .and( + .next_matches(&[PathType::Common, PathType::Start]), + |cb| { + cb.poseidon_lookup( + "poseidon hash correct for old common path", + [ + old_left(config), + old_right(config), + config.domain.current(), + config.old_hash.previous(), + ], + poseidon, + ); + cb.poseidon_lookup( + "poseidon hash correct for new common path", + [ + new_left(config), + new_right(config), + config.domain.current(), + config.new_hash.previous(), + ], + poseidon, + ); + }, + ); + cb.condition( + config.path_type.next_matches(&[PathType::ExtensionNew]), + |cb| { + cb.condition( config .segment_type .next_matches(&[SegmentType::AccountLeaf0]), - ), - |cb| { - cb.assert_zero( - "old hash is zero for type 2 empty account", - config.old_hash.current(), - ) + |cb| { + cb.assert_zero( + "old hash is zero for type 2 empty account", + config.old_hash.current(), + ) + }, + ); }, ); cb.condition( - config - .path_type - .next_matches(&[PathType::ExtensionOld]) - .and( + config.path_type.next_matches(&[PathType::ExtensionOld]), + |cb| { + cb.condition( config .segment_type .next_matches(&[SegmentType::AccountLeaf0]), - ), - |cb| { - cb.assert_zero( - "new hash is zero for type 2 empty account", - config.new_hash.current(), - ) + |cb| { + cb.assert_zero( + "new hash is zero for type 2 empty account", + config.new_hash.current(), + ) + }, + ); }, ); } diff --git a/src/gadgets/mpt_update/segment.rs b/src/gadgets/mpt_update/segment.rs index 02d9f6e6..58e66d64 100644 --- a/src/gadgets/mpt_update/segment.rs +++ b/src/gadgets/mpt_update/segment.rs @@ -1,3 +1,4 @@ +use crate::types::HashDomain; use crate::MPTProofType; use std::collections::HashMap; use strum_macros::EnumIter; @@ -136,3 +137,20 @@ pub fn transitions(proof: MPTProofType) -> HashMap MPTProofType::AccountDestructed => [].into(), } } + +pub fn domains(segment_type: SegmentType) -> Vec { + match segment_type { + SegmentType::Start => vec![HashDomain::Pair], + + SegmentType::AccountTrie | SegmentType::StorageTrie => vec![ + HashDomain::NodeTypeBranch0, + HashDomain::NodeTypeBranch1, + HashDomain::NodeTypeBranch2, + HashDomain::NodeTypeBranch3, + ], + SegmentType::AccountLeaf0 | SegmentType::StorageLeaf0 => vec![HashDomain::NodeTypeEmpty], + SegmentType::AccountLeaf1 | SegmentType::AccountLeaf2 | SegmentType::AccountLeaf3 => { + vec![HashDomain::AccountFields] + } + } +} diff --git a/src/tests.rs b/src/tests.rs index 554597f0..344a2352 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -182,7 +182,6 @@ fn empty_account_proofs_for_zero_value_updates() { MPTProofType::CodeSizeExists, MPTProofType::CodeHashExists, ] { - dbg!(proof_type); mock_prove(vec![(proof_type, trace.clone())]); } } @@ -274,8 +273,10 @@ fn empty_account_type_1_balance_update() { ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + let proof = Proof::from((MPTProofType::BalanceChanged, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); } #[test] @@ -338,7 +339,7 @@ fn existing_account_nonce_update() { fn empty_account_type_1_nonce_update() { let mut generator = initial_generator(); let trace = generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + mpt_zktrie::mpt_circuits::MPTProofType::NonceChanged, Address::repeat_byte(11), U256::from(200), U256::zero(), @@ -359,8 +360,10 @@ fn empty_account_type_1_nonce_update() { ); let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::BalanceChanged, trace)); + let proof = Proof::from((MPTProofType::NonceChanged, trace.clone())); proof.check(); + + mock_prove(vec![(MPTProofType::NonceChanged, trace)]); } #[test] @@ -535,9 +538,11 @@ fn empty_storage_type_1_update_a() { let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); - let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } #[test] @@ -669,9 +674,11 @@ fn empty_storage_type_1_update_b() { let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); - let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } #[test] @@ -710,38 +717,40 @@ fn empty_storage_type_1_update_c() { let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); - let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace))); + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } -#[test] -fn insert_into_singleton_storage_trie() { - let mut generator = initial_generator(); - generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), - U256([1, 2, 3, 4]), - U256::zero(), - Some(U256([10, 20, 30, 40])), - ); - - let trace = generator.handle_new_state( - mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), - U256([5, 6, 7, 8]), - U256::zero(), - Some(U256([50, 60, 70, 80])), - ); - - let json = serde_json::to_string_pretty(&trace).unwrap(); - assert_eq!( - format!("{}\n", json), - include_str!("traces/insert_into_singleton_storage_trie.json"), - "{}", - json - ); - let trace: SMTTrace = serde_json::from_str(&json).unwrap(); - let proof = Proof::from((MPTProofType::StorageChanged, trace)); - proof.check(); -} +// #[test] +// fn insert_into_singleton_storage_trie() { +// let mut generator = initial_generator(); +// generator.handle_new_state( +// mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, +// Address::repeat_byte(1), +// U256([1, 2, 3, 4]), +// U256::zero(), +// Some(U256([10, 20, 30, 40])), +// ); + +// let trace = generator.handle_new_state( +// mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, +// Address::repeat_byte(1), +// U256([5, 6, 7, 8]), +// U256::zero(), +// Some(U256([50, 60, 70, 80])), +// ); + +// let json = serde_json::to_string_pretty(&trace).unwrap(); +// assert_eq!( +// format!("{}\n", json), +// include_str!("traces/insert_into_singleton_storage_trie.json"), +// "{}", +// json +// ); +// let trace: SMTTrace = serde_json::from_str(&json).unwrap(); +// let proof = Proof::from((MPTProofType::StorageChanged, trace)); +// proof.check(); +// } diff --git a/src/traces/empty_account_type_1_nonce_update.json b/src/traces/empty_account_type_1_nonce_update.json index efeda8ba..69c778a9 100644 --- a/src/traces/empty_account_type_1_nonce_update.json +++ b/src/traces/empty_account_type_1_nonce_update.json @@ -29,30 +29,30 @@ "pathPart": "0x7" }, { - "root": "0xbe2dc996b66629f00795ce14250c14b42b09d7038b71a0f58ef34a281022bb0f", + "root": "0x995ccb91b8d6c660027d0c7e2db4442d5942f13c43dfb51251e2f3e113b53503", "leaf": { - "value": "0xd40db0ee83e5d59382ab7774bf76b2c0a2ed10883acebdb44e0b05d1d0f57e11", + "value": "0xf42020e24a87c5f7f00d7bf90ae137bb7cb8d23611627ce0f46e74470af77207", "sibling": "0xf732e39dd1c1d610d1e5ba97c55c156bf2e9b3c9f13d26f655ea18796bdda90f", "node_type": 4 }, "path": [ { - "value": "0xda3dba5ee4b4b8e50f93c30a980754663229b7e06caf80e45693a3e9145d110b", + "value": "0x5b6939dabed655dee192be83c56f2633365766e642610f155488e2549c0b5303", "sibling": "0xa66d39d51412f50d7df0c6388c765c74b023a3e5d9eba9cbc80b6ef17f76ab1e", "node_type": 9 }, { - "value": "0xa363a8082319100b8986fcc2dfbf53cd29f59c52dfec9434708fcd9a52cc222c", + "value": "0x00f167b0fc5c5af2b84e520ccdbe33952ab69e266356c114bba458c067d3b21e", "sibling": "0xf485d05d32be22082faed55e8c38826fec4a8250f41ce4639d51fb249c322127", "node_type": 9 }, { - "value": "0x1b329f2eba6c8ffe0c05bc85f9f6f667806ed7726bb957380849ab28ffd03f02", + "value": "0x50b84b89e48fa46c8b95265c085c7b828feb3b68c19a1de01548f1089e00da01", "sibling": "0x0f83a2e43aa2c5994001f58a94b99b65f39449455e291766d20feca59209cd08", "node_type": 7 }, { - "value": "0x20f858bbc21a6ccf250eddcc29fe8618e35b6ffedc167a8e73dc8a58fe30d40f", + "value": "0x24ea2477f449b36f9059936a59394e3bc7df2724cf6934ee35aaa791722b4b30", "sibling": "0xebb8b01466f6764df4b8b2a3d180b849b9616c536c0a4b6f107e3b10a739761e", "node_type": 6 } @@ -63,8 +63,8 @@ "accountUpdate": [ null, { - "nonce": 0, - "balance": "0xc8", + "nonce": 200, + "balance": "0x0", "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "codeSize": 0 From 230ed879eed7a3092c7925cf57e4e3353b7b77e0 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 19:14:20 +0800 Subject: [PATCH 38/86] Add lagrange_polynomial helper --- src/gadgets/mpt_update.rs | 82 ++++++++++++++++++++++++++++++++++++++- src/util.rs | 36 ++++++++++++++++- 2 files changed, 114 insertions(+), 4 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index a4e6b6a0..f9f20647 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -15,13 +15,15 @@ use super::{ rlc_randomness::RlcRandomness, }; use crate::{ - constraint_builder::{AdviceColumn, ConstraintBuilder, Query, SecondPhaseAdviceColumn}, + constraint_builder::{ + AdviceColumn, BinaryQuery, ConstraintBuilder, Query, SecondPhaseAdviceColumn, + }, types::{ storage::{StorageLeaf, StorageProof}, trie::TrieRows, ClaimKind, HashDomain, Proof, }, - util::{account_key, domain_hash, rlc, u256_hi_lo, u256_to_big_endian}, + util::{account_key, domain_hash, lagrange_polynomial, rlc, u256_hi_lo, u256_to_big_endian}, MPTProofType, }; use ethers_core::{k256::elliptic_curve::PrimeField, types::Address}; @@ -63,6 +65,8 @@ pub struct MptUpdateConfig { key: AdviceColumn, other_key: AdviceColumn, + // TODO: make this a BinaryColumn for readability, even though this actually must already + // binary because of the key bit lookup. direction: AdviceColumn, sibling: AdviceColumn, @@ -951,6 +955,54 @@ fn configure_common_path( cb.condition( config.path_type.next_matches(&[PathType::ExtensionNew]), |cb| { + cb.assert_zero( + "old domain is not HashDomain::NodeTypeBranch3", + (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)), + ); + cb.poseidon_lookup( + "poseidon hash correct for old common path", + [ + old_left(config), + old_right(config), + config.domain.current(), + config.old_hash.previous(), + ], + poseidon, + ); + + let new_domain = lagrange_polynomial( + config.domain.current(), + &[ + ( + HashDomain::NodeTypeBranch0.into(), + BinaryQuery(config.direction.current()).select( + Query::from(HashDomain::NodeTypeBranch1.into_u64()), + Query::from(HashDomain::NodeTypeBranch2.into_u64()), + ), + ), + ( + HashDomain::NodeTypeBranch1.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::NodeTypeBranch2.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ], + ); + cb.poseidon_lookup( + "poseidon hash correct for new common path", + [ + new_left(config), + new_right(config), + new_domain, + config.new_hash.previous(), + ], + poseidon, + ); + cb.condition( config .segment_type @@ -967,6 +1019,32 @@ fn configure_common_path( cb.condition( config.path_type.next_matches(&[PathType::ExtensionOld]), |cb| { + cb.assert_zero( + "new domain is not HashDomain::NodeTypeBranch3", + (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)), + ); + // cb.poseidon_lookup( + // "poseidon hash correct for old common path", + // [ + // old_left(config), + // old_right(config), + // config.domain.current(), + // config.old_hash.previous(), + // ], + // poseidon, + // ); + cb.poseidon_lookup( + "poseidon hash correct for new common path", + [ + new_left(config), + new_right(config), + config.domain.current(), + config.new_hash.previous(), + ], + poseidon, + ); cb.condition( config .segment_type diff --git a/src/util.rs b/src/util.rs index 242d4e03..8aef7903 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,9 +1,12 @@ -use crate::{serde::HexBytes, types::HashDomain}; +use crate::{constraint_builder::Query, serde::HexBytes, types::HashDomain}; use ethers_core::{ k256::elliptic_curve::PrimeField, types::{Address, U256}, }; -use halo2_proofs::{arithmetic::FieldExt, halo2curves::bn256::Fr}; +use halo2_proofs::{ + arithmetic::{Field, FieldExt}, + halo2curves::bn256::Fr, +}; use hash_circuit::hash::Hashable; use num_bigint::BigUint; @@ -132,6 +135,35 @@ pub fn check_domain_consistency(before: HashDomain, after: HashDomain, direction } } +pub fn lagrange_polynomial(argument: Query, points: &[(Fr, Query)]) -> Query { + let x_coordinates = points.iter().map(|p| p.0); + let mut basis_polynomials = vec![]; + for (i, xi) in x_coordinates.clone().enumerate() { + let (numerator, denominator) = x_coordinates + .clone() + .enumerate() + .filter_map(|(j, xj)| { + if i != j { + assert_ne!(xi, xj, "cannot interpolate through duplicate x coordinates"); + Some((argument.clone() - xi, xj - xi)) + } else { + None + } + }) + .reduce(|(p1, f1), (p2, f2)| (p1 * p2, f1 * f2)) + .expect("points.len() > 1"); + basis_polynomials.push(numerator * denominator.invert().unwrap()); + } + + let y_coordinates = points.into_iter().map(|p| p.1.clone()); + basis_polynomials + .into_iter() + .zip(y_coordinates) + .map(|(basis_polynomial, y)| basis_polynomial * y) + .reduce(|a, b| a + b) + .expect("points.len() > 0") +} + #[cfg(test)] mod test { use super::*; From f69b5d32a28918ea8252aa82b62cd6381e5d0961 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 19:24:06 +0800 Subject: [PATCH 39/86] Add poseidon lookups for final common path types for type 2 proofs --- src/gadgets/mpt_update.rs | 165 +++++++++++++++++++++++--------------- 1 file changed, 102 insertions(+), 63 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index f9f20647..66798f12 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -972,48 +972,57 @@ fn configure_common_path( poseidon, ); - let new_domain = lagrange_polynomial( - config.domain.current(), - &[ - ( - HashDomain::NodeTypeBranch0.into(), - BinaryQuery(config.direction.current()).select( - Query::from(HashDomain::NodeTypeBranch1.into_u64()), - Query::from(HashDomain::NodeTypeBranch2.into_u64()), - ), - ), - ( - HashDomain::NodeTypeBranch1.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ( - HashDomain::NodeTypeBranch2.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ], - ); - cb.poseidon_lookup( - "poseidon hash correct for new common path", - [ - new_left(config), - new_right(config), - new_domain, - config.new_hash.previous(), - ], - poseidon, - ); - - cb.condition( - config - .segment_type - .next_matches(&[SegmentType::AccountLeaf0]), - |cb| { - cb.assert_zero( - "old hash is zero for type 2 empty account", - config.old_hash.current(), - ) - }, - ); + let is_type_2 = config + .segment_type + .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); + cb.condition(!is_type_2.clone(), |cb| { + // let new_domain = lagrange_polynomial( + // config.domain.current(), + // &[ + // ( + // HashDomain::NodeTypeBranch0.into(), + // BinaryQuery(config.direction.current()).select( + // Query::from(HashDomain::NodeTypeBranch1.into_u64()), + // Query::from(HashDomain::NodeTypeBranch2.into_u64()), + // ), + // ), + // ( + // HashDomain::NodeTypeBranch1.into(), + // Query::from(HashDomain::NodeTypeBranch3.into_u64()), + // ), + // ( + // HashDomain::NodeTypeBranch2.into(), + // Query::from(HashDomain::NodeTypeBranch3.into_u64()), + // ), + // ], + // ); + // cb.poseidon_lookup( + // "poseidon hash correct for new common path", + // [ + // new_left(config), + // new_right(config), + // new_domain, + // config.new_hash.previous(), + // ], + // poseidon, + // ); + }); + cb.condition(is_type_2.clone(), |cb| { + cb.assert_zero( + "old hash is zero for type 2 empty account", + config.old_hash.current(), + ); + cb.poseidon_lookup( + "poseidon hash correct for new common path", + [ + new_left(config), + new_right(config), + config.domain.current(), + config.new_hash.previous(), + ], + poseidon, + ); + }); }, ); cb.condition( @@ -1025,16 +1034,6 @@ fn configure_common_path( * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)), ); - // cb.poseidon_lookup( - // "poseidon hash correct for old common path", - // [ - // old_left(config), - // old_right(config), - // config.domain.current(), - // config.old_hash.previous(), - // ], - // poseidon, - // ); cb.poseidon_lookup( "poseidon hash correct for new common path", [ @@ -1045,17 +1044,57 @@ fn configure_common_path( ], poseidon, ); - cb.condition( - config - .segment_type - .next_matches(&[SegmentType::AccountLeaf0]), - |cb| { - cb.assert_zero( - "new hash is zero for type 2 empty account", - config.new_hash.current(), - ) - }, - ); + let is_type_2 = config + .segment_type + .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); + cb.condition(!is_type_2.clone(), |cb| { + // let new_domain = lagrange_polynomial( + // config.domain.current(), + // &[ + // ( + // HashDomain::NodeTypeBranch0.into(), + // BinaryQuery(config.direction.current()).select( + // Query::from(HashDomain::NodeTypeBranch1.into_u64()), + // Query::from(HashDomain::NodeTypeBranch2.into_u64()), + // ), + // ), + // ( + // HashDomain::NodeTypeBranch1.into(), + // Query::from(HashDomain::NodeTypeBranch3.into_u64()), + // ), + // ( + // HashDomain::NodeTypeBranch2.into(), + // Query::from(HashDomain::NodeTypeBranch3.into_u64()), + // ), + // ], + // ); + // cb.poseidon_lookup( + // "poseidon hash correct for old common path", + // [ + // old_left(config), + // old_right(config), + // config.domain.current(), + // config.old_hash.previous(), + // ], + // poseidon, + // ); + }); + cb.condition(is_type_2, |cb| { + cb.assert_zero( + "new hash is zero for type 2 empty account", + config.new_hash.current(), + ); + cb.poseidon_lookup( + "poseidon hash correct for old common path", + [ + old_left(config), + old_right(config), + config.domain.current(), + config.old_hash.previous(), + ], + poseidon, + ); + }); }, ); } From 9b7e4a06a91020830a44e6ee3c0d1d77bf5c6d68 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 20:09:28 +0800 Subject: [PATCH 40/86] Fix lagrange interpolation helper and use correct hash traces --- src/gadgets/mpt_update.rs | 121 +++++++++++++++++++------------------- src/types/trie.rs | 79 +++++++++++++++---------- src/util.rs | 4 +- 3 files changed, 110 insertions(+), 94 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 66798f12..f38f297a 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -976,36 +976,36 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - // let new_domain = lagrange_polynomial( - // config.domain.current(), - // &[ - // ( - // HashDomain::NodeTypeBranch0.into(), - // BinaryQuery(config.direction.current()).select( - // Query::from(HashDomain::NodeTypeBranch1.into_u64()), - // Query::from(HashDomain::NodeTypeBranch2.into_u64()), - // ), - // ), - // ( - // HashDomain::NodeTypeBranch1.into(), - // Query::from(HashDomain::NodeTypeBranch3.into_u64()), - // ), - // ( - // HashDomain::NodeTypeBranch2.into(), - // Query::from(HashDomain::NodeTypeBranch3.into_u64()), - // ), - // ], - // ); - // cb.poseidon_lookup( - // "poseidon hash correct for new common path", - // [ - // new_left(config), - // new_right(config), - // new_domain, - // config.new_hash.previous(), - // ], - // poseidon, - // ); + let new_domain = lagrange_polynomial( + config.domain.current(), + &[ + ( + HashDomain::NodeTypeBranch0.into(), + BinaryQuery(config.direction.current()).select( + Query::from(HashDomain::NodeTypeBranch1.into_u64()), + Query::from(HashDomain::NodeTypeBranch2.into_u64()), + ), + ), + ( + HashDomain::NodeTypeBranch1.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::NodeTypeBranch2.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ], + ); + cb.poseidon_lookup( + "poseidon hash correct for new common path", + [ + new_left(config), + new_right(config), + new_domain, + config.new_hash.previous(), + ], + poseidon, + ); }); cb.condition(is_type_2.clone(), |cb| { cb.assert_zero( @@ -1048,36 +1048,36 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - // let new_domain = lagrange_polynomial( - // config.domain.current(), - // &[ - // ( - // HashDomain::NodeTypeBranch0.into(), - // BinaryQuery(config.direction.current()).select( - // Query::from(HashDomain::NodeTypeBranch1.into_u64()), - // Query::from(HashDomain::NodeTypeBranch2.into_u64()), - // ), - // ), - // ( - // HashDomain::NodeTypeBranch1.into(), - // Query::from(HashDomain::NodeTypeBranch3.into_u64()), - // ), - // ( - // HashDomain::NodeTypeBranch2.into(), - // Query::from(HashDomain::NodeTypeBranch3.into_u64()), - // ), - // ], - // ); - // cb.poseidon_lookup( - // "poseidon hash correct for old common path", - // [ - // old_left(config), - // old_right(config), - // config.domain.current(), - // config.old_hash.previous(), - // ], - // poseidon, - // ); + let new_domain = lagrange_polynomial( + config.domain.current(), + &[ + ( + HashDomain::NodeTypeBranch0.into(), + BinaryQuery(config.direction.current()).select( + Query::from(HashDomain::NodeTypeBranch1.into_u64()), + Query::from(HashDomain::NodeTypeBranch2.into_u64()), + ), + ), + ( + HashDomain::NodeTypeBranch1.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::NodeTypeBranch2.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ], + ); + cb.poseidon_lookup( + "poseidon hash correct for old common path", + [ + old_left(config), + old_right(config), + new_domain, + config.old_hash.previous(), + ], + poseidon, + ); }); cb.condition(is_type_2, |cb| { cb.assert_zero( @@ -2090,6 +2090,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { )); } } + // you don't even push it hereeeeee lol hash_traces.extend( proof .storage diff --git a/src/types/trie.rs b/src/types/trie.rs index 2d26c538..16fd89bd 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -125,39 +125,54 @@ impl TrieRows { } pub fn poseidon_lookups(&self) -> Vec<(Fr, Fr, HashDomain, Fr)> { - self.0 - .iter() - .flat_map(|row| { - let (old_left, old_right) = if row.direction { - (row.sibling, row.old) - } else { - (row.old, row.sibling) - }; - let (new_left, new_right) = if row.direction { - (row.sibling, row.new) - } else { - (row.new, row.sibling) - }; - let old = ( - old_left, - old_right, - row.domain, - domain_hash(old_left, old_right, row.domain), - ); - let new = ( - new_left, - new_right, - row.domain, - domain_hash(new_left, new_right, row.domain), - ); - match row.path_type { - PathType::Start => vec![], - PathType::Common => vec![old, new], - PathType::ExtensionOld => vec![old], - PathType::ExtensionNew => vec![new], + let mut lookups = vec![]; + for (i, row) in self.0.iter().enumerate() { + let [[old_left, old_right], [new_left, new_right]] = if row.direction { + [[row.sibling, row.old], [row.sibling, row.new]] + } else { + [[row.old, row.sibling], [row.new, row.sibling]] + }; + + match row.path_type { + PathType::Start => unreachable!(), + PathType::Common => { + let [old_domain, new_domain] = if let Some(next_row) = self.0.get(i + 1) { + get_domains(next_row.path_type, row.domain, row.direction) + } else { + [row.domain, row.domain] + }; + lookups.push(( + old_left, + old_right, + old_domain, + domain_hash(old_left, old_right, old_domain), + )); + lookups.push(( + new_left, + new_right, + new_domain, + domain_hash(new_left, new_right, new_domain), + )); + } + PathType::ExtensionOld => { + lookups.push(( + old_left, + old_right, + row.domain, + domain_hash(old_left, old_right, row.domain), + )); + } + PathType::ExtensionNew => { + lookups.push(( + new_left, + new_right, + row.domain, + domain_hash(new_left, new_right, row.domain), + )); } - }) - .collect() + } + } + lookups } pub fn key_bit_lookups(&self, key: Fr, other_key: Fr) -> Vec<(Fr, usize, bool)> { diff --git a/src/util.rs b/src/util.rs index 8aef7903..7bfa6807 100644 --- a/src/util.rs +++ b/src/util.rs @@ -145,13 +145,13 @@ pub fn lagrange_polynomial(argument: Query, points: &[(Fr, Query .filter_map(|(j, xj)| { if i != j { assert_ne!(xi, xj, "cannot interpolate through duplicate x coordinates"); - Some((argument.clone() - xi, xj - xi)) + Some((argument.clone() - xj, xi - xj)) } else { None } }) .reduce(|(p1, f1), (p2, f2)| (p1 * p2, f1 * f2)) - .expect("points.len() > 1"); + .expect("points.len() < 2"); basis_polynomials.push(numerator * denominator.invert().unwrap()); } From a3949825b34f74ac74ed29b89a60e4b82290633a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 20:23:21 +0800 Subject: [PATCH 41/86] Calculate account trie hash traces correctly --- src/gadgets/mpt_update.rs | 32 +++----------------------------- src/types.rs | 13 +++++++++++++ 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index f38f297a..5301489b 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -2061,36 +2061,10 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { *ZERO_PAIR_HASH, )]; for proof in proofs.iter() { - let address_hash_traces = &proof.address_hash_traces; - for (direction, domain, old_hash, new_hash, sibling, is_padding_open, is_padding_close) in - address_hash_traces.iter().rev() - { - if !*is_padding_open { - let (left, right) = if *direction { - (sibling, old_hash) - } else { - (old_hash, sibling) - }; - hash_traces.push(( - [*left, *right], - (*domain).into(), - domain_hash(*left, *right, *domain), - )); - } - if !*is_padding_close { - let (left, right) = if *direction { - (sibling, new_hash) - } else { - (new_hash, sibling) - }; - hash_traces.push(( - [*left, *right], - (*domain).into(), - domain_hash(*left, *right, *domain), - )); - } + for (left, right, domain, hash) in proof.account_trie_rows.poseidon_lookups() { + hash_traces.push(([left, right], Fr::from(domain), hash)); } - // you don't even push it hereeeeee lol + hash_traces.extend( proof .storage diff --git a/src/types.rs b/src/types.rs index 8e07373c..ce66d1cc 100644 --- a/src/types.rs +++ b/src/types.rs @@ -17,6 +17,7 @@ use num_traits::identities::Zero; pub mod storage; pub mod trie; use storage::StorageProof; +use trie::TrieRows; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum HashDomain { @@ -183,6 +184,8 @@ pub struct Proof { pub old_account: Option, pub new_account: Option, + + pub account_trie_rows: TrieRows, } // TODO: rename to Account @@ -412,6 +415,15 @@ impl From<(MPTProofType, SMTTrace)> for Proof { let key = account_key(claim.address); assert_eq!(key, fr(trace.account_key)); + + let account_trie_rows = TrieRows::new( + fr(trace.account_key), + &trace.account_path[0].path, + &trace.account_path[1].path, + trace.account_path[0].leaf, + trace.account_path[1].leaf, + ); + let leafs = trace.account_path.clone().map(get_leaf); let [open_hash_traces, close_hash_traces] = trace.account_path.clone().map(|path| path.path); @@ -476,6 +488,7 @@ impl From<(MPTProofType, SMTTrace)> for Proof { new, old_account, new_account, + account_trie_rows, } } } From 8bea2aefecb681f4391ff17262e5042246b8bf63 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 20:26:37 +0800 Subject: [PATCH 42/86] Remove outdated traces and tests --- src/mpt.rs | 487 +- src/types.rs | 122 +- tests/code_hash_revert.json | 62 - tests/create_revert.json | 1789 ---- tests/deploy_traces.json | 339 - tests/deploy_traces_multiple_fields.json | 112 - tests/dual_code_hash/empty_storage_write.json | 104 - .../nonce_write_existing_account.json | 81 - .../nonce_write_type_1_empty_account.json | 96 - .../nonce_write_type_2_empty_account.json | 64 - tests/dual_code_hash/trace_1.json | 120 - tests/dual_code_hash/trace_2.json | 114 - tests/dual_code_hash/trace_3.json | 56 - tests/dual_code_hash/traces_1.json | 1131 -- .../dual_code_hash/type_1_empty_account.json | 47 - .../dual_code_hash/type_2_empty_account.json | 55 - tests/empty_account.json | 100 - tests/empty_storage.json | 125 - tests/generated/balance_update_existing.json | 87 - tests/generated/balance_update_type_1.json | 93 - tests/generated/balance_update_type_2.json | 53 - .../generated/code_hash_update_existing.json | 87 - .../generated/code_size_update_existing.json | 87 - .../keccak_code_hash_read_existing.json | 87 - .../keccak_code_hash_update_existing.json | 87 - tests/generated/nonce_update_existing.json | 87 - tests/generated/nonce_update_type_1.json | 93 - tests/generated/nonce_update_type_2.json | 53 - .../empty_account_empty_storage_proof.json | 76 - .../storage/empty_account_storage_write.json | 109 - .../empty_storage_proof_empty_trie.json | 59 - .../empty_storage_proof_singleton_trie.json | 67 - .../storage/empty_storage_proof_type_1.json | 119 - .../storage/empty_storage_proof_type_2.json | 111 - .../storage/read_empty_storage_trie.json | 59 - .../storage/read_singleton_storage_trie.json | 67 - .../update_storage_existing_to_existing.json | 203 - .../storage/write_empty_storage_trie.json | 63 - .../storage/write_singleton_storage_trie.json | 73 - .../write_zero_doubleton_storage_trie.json | 73 - .../write_zero_singleton_storage_trie.json | 63 - .../storage/write_zero_storage_trie.json | 147 - .../uniswapv2_factory-createPair.json | 9137 ----------------- tests/nonce.json | 179 - tests/read_traces.json | 129 - tests/token_traces.json | 826 -- tests/trace_parsing.rs | 53 - tests/trace_proving.rs | 241 - tests/traces.json | 1353 --- 49 files changed, 167 insertions(+), 18858 deletions(-) delete mode 100644 tests/code_hash_revert.json delete mode 100644 tests/create_revert.json delete mode 100644 tests/deploy_traces.json delete mode 100644 tests/deploy_traces_multiple_fields.json delete mode 100644 tests/dual_code_hash/empty_storage_write.json delete mode 100644 tests/dual_code_hash/nonce_write_existing_account.json delete mode 100644 tests/dual_code_hash/nonce_write_type_1_empty_account.json delete mode 100644 tests/dual_code_hash/nonce_write_type_2_empty_account.json delete mode 100644 tests/dual_code_hash/trace_1.json delete mode 100644 tests/dual_code_hash/trace_2.json delete mode 100644 tests/dual_code_hash/trace_3.json delete mode 100644 tests/dual_code_hash/traces_1.json delete mode 100644 tests/dual_code_hash/type_1_empty_account.json delete mode 100644 tests/dual_code_hash/type_2_empty_account.json delete mode 100644 tests/empty_account.json delete mode 100644 tests/empty_storage.json delete mode 100644 tests/generated/balance_update_existing.json delete mode 100644 tests/generated/balance_update_type_1.json delete mode 100644 tests/generated/balance_update_type_2.json delete mode 100644 tests/generated/code_hash_update_existing.json delete mode 100644 tests/generated/code_size_update_existing.json delete mode 100644 tests/generated/keccak_code_hash_read_existing.json delete mode 100644 tests/generated/keccak_code_hash_update_existing.json delete mode 100644 tests/generated/nonce_update_existing.json delete mode 100644 tests/generated/nonce_update_type_1.json delete mode 100644 tests/generated/nonce_update_type_2.json delete mode 100644 tests/generated/storage/empty_account_empty_storage_proof.json delete mode 100644 tests/generated/storage/empty_account_storage_write.json delete mode 100644 tests/generated/storage/empty_storage_proof_empty_trie.json delete mode 100644 tests/generated/storage/empty_storage_proof_singleton_trie.json delete mode 100644 tests/generated/storage/empty_storage_proof_type_1.json delete mode 100644 tests/generated/storage/empty_storage_proof_type_2.json delete mode 100644 tests/generated/storage/read_empty_storage_trie.json delete mode 100644 tests/generated/storage/read_singleton_storage_trie.json delete mode 100644 tests/generated/storage/update_storage_existing_to_existing.json delete mode 100644 tests/generated/storage/write_empty_storage_trie.json delete mode 100644 tests/generated/storage/write_singleton_storage_trie.json delete mode 100644 tests/generated/storage/write_zero_doubleton_storage_trie.json delete mode 100644 tests/generated/storage/write_zero_singleton_storage_trie.json delete mode 100644 tests/generated/storage/write_zero_storage_trie.json delete mode 100644 tests/mock_test_traces/uniswapv2_factory-createPair.json delete mode 100644 tests/nonce.json delete mode 100644 tests/read_traces.json delete mode 100644 tests/token_traces.json delete mode 100644 tests/trace_parsing.rs delete mode 100644 tests/trace_proving.rs delete mode 100644 tests/traces.json diff --git a/src/mpt.rs b/src/mpt.rs index af034281..1a88798a 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -143,384 +143,109 @@ impl MptCircuitConfig { } } -#[cfg(test)] -mod test { - use super::*; - use crate::{gadgets::poseidon::PoseidonTable, hash_traces, serde::SMTTrace, MPTProofType}; - use halo2_proofs::{ - circuit::{Layouter, SimpleFloorPlanner}, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, Error, FirstPhase}, - }; - use lazy_static::lazy_static; - - const N_ROWS: usize = 1024; - - lazy_static! { - static ref EMPTY_STORAGE_PROOF_TYPE_2: (MPTProofType, SMTTrace) = ( - MPTProofType::StorageDoesNotExist, - serde_json::from_str(include_str!( - "../tests/generated/storage/empty_storage_proof_type_2.json" - )) - .unwrap(), - ); - static ref NONCE_WRITE_TYPE_2_EMPTY_ACCOUNT: (MPTProofType, SMTTrace) = ( - MPTProofType::NonceChanged, - serde_json::from_str(include_str!( - "../tests/dual_code_hash/nonce_write_type_2_empty_account.json" - )) - .unwrap(), - ); - static ref EMPTY_ACCOUNT_PROOF_TYPE_2: (MPTProofType, SMTTrace) = ( - MPTProofType::AccountDoesNotExist, - serde_json::from_str(include_str!( - "../tests/dual_code_hash/type_2_empty_account.json" - )) - .unwrap(), - ); - static ref EMPTY_STORAGE_PROOF_SINGLETON_TRIE: (MPTProofType, SMTTrace) = ( - MPTProofType::StorageDoesNotExist, - serde_json::from_str(include_str!( - "../tests/generated/storage/empty_storage_proof_singleton_trie.json" - )) - .unwrap(), - ); - } - - #[derive(Clone, Debug, Default)] - struct TestCircuit { - n_rows: usize, - proofs: Vec, - } - - impl TestCircuit { - fn new(n_rows: usize, traces: Vec<(MPTProofType, SMTTrace)>) -> Self { - Self { - n_rows, - proofs: traces.into_iter().map(Proof::from).collect(), - } - } - } - - impl Circuit for TestCircuit { - type Config = (PoseidonTable, MptCircuitConfig); - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - Self::default() - } - - fn configure(cs: &mut ConstraintSystem) -> Self::Config { - let poseidon = PoseidonTable::configure(cs); - let challenge = cs.challenge_usable_after(FirstPhase); - let mpt_circuit_config = MptCircuitConfig::configure(cs, challenge, &poseidon); - (poseidon, mpt_circuit_config) - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - let (poseidon, mpt_circuit_config) = config; - mpt_circuit_config.assign(&mut layouter, &self.proofs, self.n_rows)?; - layouter.assign_region( - || "load poseidon table", - |mut region| { - poseidon.load(&mut region, &hash_traces(&self.proofs)); - Ok(()) - }, - ) - } - } - - fn mock_prove(proof_type: MPTProofType, trace: &str) { - let circuit = TestCircuit::new( - N_ROWS, - vec![(proof_type, serde_json::from_str(trace).unwrap())], - ); - let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - assert_eq!( - prover.verify(), - Ok(()), - "proof_type = {:?}, trace = {}", - proof_type, - trace - ); - } - - #[test] - fn test_empty() { - let circuit = TestCircuit { - n_rows: N_ROWS, - proofs: vec![], - }; - let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - assert_eq!(prover.verify(), Ok(())); - } - - #[test] - fn nonce_write_existing_account() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/dual_code_hash/nonce_write_existing_account.json"), - ); - } - - #[test] - fn nonce_write_type_1_empty_account() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/dual_code_hash/nonce_write_type_1_empty_account.json"), - ); - } - - #[test] - fn nonce_write_type_2_empty_account() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/dual_code_hash/nonce_write_type_2_empty_account.json"), - ); - } - - #[test] - fn nonce_update_existing() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/generated/nonce_update_existing.json"), - ); - } - - #[test] - fn nonce_update_type_1() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/generated/nonce_update_type_1.json"), - ); - } - - #[test] - fn nonce_update_type_2() { - mock_prove( - MPTProofType::NonceChanged, - include_str!("../tests/generated/nonce_update_type_2.json"), - ); - } - - #[test] - fn balance_update_existing() { - mock_prove( - MPTProofType::BalanceChanged, - include_str!("../tests/generated/balance_update_existing.json"), - ); - } - - #[test] - fn balance_update_type_1() { - mock_prove( - MPTProofType::BalanceChanged, - include_str!("../tests/generated/balance_update_type_1.json"), - ); - } - - #[test] - fn balance_update_type_2() { - mock_prove( - MPTProofType::BalanceChanged, - include_str!("../tests/generated/balance_update_type_2.json"), - ); - } - - #[test] - fn code_size_update_existing() { - mock_prove( - MPTProofType::CodeSizeExists, - include_str!("../tests/generated/code_size_update_existing.json"), - ); - } - - #[test] - fn code_hash_update_existing() { - mock_prove( - MPTProofType::PoseidonCodeHashExists, - include_str!("../tests/generated/code_hash_update_existing.json"), - ); - } - - #[test] - fn keccak_code_hash_update_existing() { - mock_prove( - MPTProofType::CodeHashExists, // yes, the naming is very confusing :/ - include_str!("../tests/generated/keccak_code_hash_update_existing.json"), - ); - } - - #[test] - fn keccak_code_hash_read_existing() { - mock_prove( - MPTProofType::CodeHashExists, // yes, the naming is very confusing :/ - include_str!("../tests/generated/keccak_code_hash_read_existing.json"), - ); - } - - #[test] - fn update_storage_existing_to_existing() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/update_storage_existing_to_existing.json"), - ); - } - - #[test] - fn nonexisting_type_1() { - mock_prove( - MPTProofType::AccountDoesNotExist, - include_str!("../tests/dual_code_hash/type_1_empty_account.json"), - ); - } - - #[test] - fn write_empty_storage_trie() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/write_empty_storage_trie.json"), - ); - } - - #[test] - fn nonexisting_type_2() { - mock_prove( - MPTProofType::AccountDoesNotExist, - include_str!("../tests/dual_code_hash/type_2_empty_account.json"), - ); - } - - #[test] - fn write_singleton_storage_trie() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/write_singleton_storage_trie.json"), - ); - } - - #[test] - fn write_zero_singleton_storage_trie() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/write_zero_singleton_storage_trie.json"), - ); - } - - #[test] - fn write_zero_doubleton_storage_trie() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/write_zero_doubleton_storage_trie.json"), - ); - } - - #[test] - fn write_zero_storage_trie() { - mock_prove( - MPTProofType::StorageChanged, - include_str!("../tests/generated/storage/write_zero_storage_trie.json"), - ); - } - - #[test] - fn empty_storage_proof_empty_trie() { - mock_prove( - MPTProofType::StorageDoesNotExist, - include_str!("../tests/generated/storage/empty_storage_proof_empty_trie.json"), - ); - } - - #[test] - fn empty_storage_proof_singleton_trie() { - mock_prove( - MPTProofType::StorageDoesNotExist, - include_str!("../tests/generated/storage/empty_storage_proof_singleton_trie.json"), - ); - } - - #[test] - fn empty_storage_proof_type_1() { - mock_prove( - MPTProofType::StorageDoesNotExist, - include_str!("../tests/generated/storage/empty_storage_proof_type_1.json"), - ); - } - - #[test] - fn empty_storage_proof_type_2() { - mock_prove( - MPTProofType::StorageDoesNotExist, - include_str!("../tests/generated/storage/empty_storage_proof_type_2.json"), - ); - } - - #[test] - fn prove_updates() { - let updates = vec![ - EMPTY_STORAGE_PROOF_TYPE_2.clone(), - EMPTY_STORAGE_PROOF_SINGLETON_TRIE.clone(), - EMPTY_ACCOUNT_PROOF_TYPE_2.clone(), - NONCE_WRITE_TYPE_2_EMPTY_ACCOUNT.clone(), - ]; - - let circuit = TestCircuit::new(N_ROWS, updates); - let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - assert_eq!(prover.verify(), Ok(())); - } - - #[test] - fn empty_account_empty_storage() { - mock_prove( - MPTProofType::StorageDoesNotExist, - include_str!("../tests/generated/storage/empty_account_empty_storage_proof.json"), - ); - } - - #[test] - fn degree() { - let mut meta = ConstraintSystem::::default(); - TestCircuit::configure(&mut meta); - assert_eq!(meta.degree(), 9); - } - - #[test] - fn create_revert() { - let updates = serde_json::from_str(include_str!("../tests/create_revert.json")).unwrap(); - let circuit = TestCircuit::new(1 << 16, updates); - let prover = MockProver::::run(18, &circuit, vec![]).unwrap(); - assert_eq!(prover.verify(), Ok(())); - } - - #[test] - fn keccak_code_hash_revert() { - let update = serde_json::from_str(include_str!("../tests/code_hash_revert.json")).unwrap(); - let circuit = TestCircuit::new(1024, vec![update]); - let prover = MockProver::::run(12, &circuit, vec![]).unwrap(); - assert_eq!(prover.verify(), Ok(())); - } - - #[test] - fn zero_value_empty_account_proofs() { - for proof_type in [ - MPTProofType::BalanceChanged, - MPTProofType::NonceChanged, - MPTProofType::CodeSizeExists, - MPTProofType::CodeHashExists, - ] { - mock_prove( - proof_type, - include_str!("../tests/dual_code_hash/type_1_empty_account.json"), - ); - mock_prove( - proof_type, - include_str!("../tests/dual_code_hash/type_2_empty_account.json"), - ); - } - } -} +// #[cfg(test)] +// mod test { +// use super::*; +// use crate::{gadgets::poseidon::PoseidonTable, hash_traces, serde::SMTTrace, MPTProofType}; +// use halo2_proofs::{ +// circuit::{Layouter, SimpleFloorPlanner}, +// dev::MockProver, +// halo2curves::bn256::Fr, +// plonk::{Circuit, Error, FirstPhase}, +// }; +// use lazy_static::lazy_static; + +// #[derive(Clone, Debug, Default)] +// struct TestCircuit { +// n_rows: usize, +// proofs: Vec, +// } + +// impl TestCircuit { +// fn new(n_rows: usize, traces: Vec<(MPTProofType, SMTTrace)>) -> Self { +// Self { +// n_rows, +// proofs: traces.into_iter().map(Proof::from).collect(), +// } +// } +// } + +// impl Circuit for TestCircuit { +// type Config = (PoseidonTable, MptCircuitConfig); +// type FloorPlanner = SimpleFloorPlanner; + +// fn without_witnesses(&self) -> Self { +// Self::default() +// } + +// fn configure(cs: &mut ConstraintSystem) -> Self::Config { +// let poseidon = PoseidonTable::configure(cs); +// let challenge = cs.challenge_usable_after(FirstPhase); +// let mpt_circuit_config = MptCircuitConfig::configure(cs, challenge, &poseidon); +// (poseidon, mpt_circuit_config) +// } + +// fn synthesize( +// &self, +// config: Self::Config, +// mut layouter: impl Layouter, +// ) -> Result<(), Error> { +// let (poseidon, mpt_circuit_config) = config; +// mpt_circuit_config.assign(&mut layouter, &self.proofs, self.n_rows)?; +// layouter.assign_region( +// || "load poseidon table", +// |mut region| { +// poseidon.load(&mut region, &hash_traces(&self.proofs)); +// Ok(()) +// }, +// ) +// } +// } + +// fn mock_prove(proof_type: MPTProofType, trace: &str) { +// let circuit = TestCircuit::new( +// N_ROWS, +// vec![(proof_type, serde_json::from_str(trace).unwrap())], +// ); +// let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); +// assert_eq!( +// prover.verify(), +// Ok(()), +// "proof_type = {:?}, trace = {}", +// proof_type, +// trace +// ); +// } + + // #[test] + // fn test_empty() { + // let circuit = TestCircuit { + // n_rows: N_ROWS, + // proofs: vec![], + // }; + // let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); + // assert_eq!(prover.verify(), Ok(())); + // } + + // TODO: used this in new testsss + // #[test] + // fn prove_updates() { + // let updates = vec![ + // EMPTY_STORAGE_PROOF_TYPE_2.clone(), + // EMPTY_STORAGE_PROOF_SINGLETON_TRIE.clone(), + // EMPTY_ACCOUNT_PROOF_TYPE_2.clone(), + // NONCE_WRITE_TYPE_2_EMPTY_ACCOUNT.clone(), + // ]; + + // let circuit = TestCircuit::new(N_ROWS, updates); + // let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); + // assert_eq!(prover.verify(), Ok(())); + // } + +// #[test] +// fn degree() { +// let mut meta = ConstraintSystem::::default(); +// TestCircuit::configure(&mut meta); +// assert_eq!(meta.degree(), 9); +// } +// } diff --git a/src/types.rs b/src/types.rs index ce66d1cc..33253773 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1042,12 +1042,12 @@ impl Bit for Fr { mod test { use super::*; - const EMPTY_ACCOUNT_TRACE: &str = include_str!("../tests/empty_account.json"); - const EMPTY_STORAGE_TRACE: &str = include_str!("../tests/empty_storage.json"); - const TRACES: &str = include_str!("../tests/traces.json"); - const READ_TRACES: &str = include_str!("../tests/read_traces.json"); - const DEPLOY_TRACES: &str = include_str!("../tests/deploy_traces.json"); - const TOKEN_TRACES: &str = include_str!("../tests/token_traces.json"); + // const EMPTY_ACCOUNT_TRACE: &str = include_str!("../tests/empty_account.json"); + // const EMPTY_STORAGE_TRACE: &str = include_str!("../tests/empty_storage.json"); + // const TRACES: &str = include_str!("../tests/traces.json"); + // const READ_TRACES: &str = include_str!("../tests/read_traces.json"); + // const DEPLOY_TRACES: &str = include_str!("../tests/deploy_traces.json"); + // const TOKEN_TRACES: &str = include_str!("../tests/token_traces.json"); #[test] fn bit_trait() { @@ -1055,61 +1055,61 @@ mod test { assert!(!Fr::one().bit(1)); } - #[test] - fn check_path_part() { - // DEPLOY_TRACES(!?!?) has a trace where account nonce and balance change in one trace.... - for s in [TRACES, READ_TRACES, TOKEN_TRACES] { - let traces: Vec = serde_json::from_str::>(s).unwrap(); - for trace in traces { - let _address = Address::from(trace.address.0); - let [open, close] = trace.account_path; - - // not always true for deploy traces because account comes into existence. - assert_eq!(open.path.len(), close.path.len()); - assert_eq!(open.path_part, close.path_part); - - let directions_1 = bits(open.path_part.try_into().unwrap(), open.path.len()); - let directions_2: Vec<_> = (0..open.path.len()) - .map(|i| fr(trace.account_key).bit(open.path.len() - 1 - i)) - .collect(); - assert_eq!(directions_1, directions_2); - } - } - } - - #[test] - fn check_account_key() { - for s in [TRACES, READ_TRACES, TOKEN_TRACES] { - let traces: Vec = serde_json::from_str::>(s).unwrap(); - for trace in traces { - let address = Address::from(trace.address.0); - assert_eq!(fr(trace.account_key), account_key(address)); - } - } - } - - #[test] - fn sanity_check_paths() { - for s in [READ_TRACES, TRACES, DEPLOY_TRACES, TOKEN_TRACES] { - let traces: Vec = serde_json::from_str::>(s).unwrap(); - for trace in traces { - let address = trace.address.0.into(); - for (path, _account) in trace.account_path.iter().zip_eq(trace.account_update) { - assert!( - contains( - &bits( - path.clone().path_part.try_into().unwrap(), - path.clone().path.len() - ), - account_key(address) - ), - "{:?}", - (address, path.path_part.clone(), account_key(address)) - ); - } - } - } - } + // #[test] + // fn check_path_part() { + // // DEPLOY_TRACES(!?!?) has a trace where account nonce and balance change in one trace.... + // for s in [TRACES, READ_TRACES, TOKEN_TRACES] { + // let traces: Vec = serde_json::from_str::>(s).unwrap(); + // for trace in traces { + // let _address = Address::from(trace.address.0); + // let [open, close] = trace.account_path; + + // // not always true for deploy traces because account comes into existence. + // assert_eq!(open.path.len(), close.path.len()); + // assert_eq!(open.path_part, close.path_part); + + // let directions_1 = bits(open.path_part.try_into().unwrap(), open.path.len()); + // let directions_2: Vec<_> = (0..open.path.len()) + // .map(|i| fr(trace.account_key).bit(open.path.len() - 1 - i)) + // .collect(); + // assert_eq!(directions_1, directions_2); + // } + // } + // } + + // #[test] + // fn check_account_key() { + // for s in [TRACES, READ_TRACES, TOKEN_TRACES] { + // let traces: Vec = serde_json::from_str::>(s).unwrap(); + // for trace in traces { + // let address = Address::from(trace.address.0); + // assert_eq!(fr(trace.account_key), account_key(address)); + // } + // } + // } + + // #[test] + // fn sanity_check_paths() { + // for s in [READ_TRACES, TRACES, DEPLOY_TRACES, TOKEN_TRACES] { + // let traces: Vec = serde_json::from_str::>(s).unwrap(); + // for trace in traces { + // let address = trace.address.0.into(); + // for (path, _account) in trace.account_path.iter().zip_eq(trace.account_update) { + // assert!( + // contains( + // &bits( + // path.clone().path_part.try_into().unwrap(), + // path.clone().path.len() + // ), + // account_key(address) + // ), + // "{:?}", + // (address, path.path_part.clone(), account_key(address)) + // ); + // } + // } + // } + // } fn contains(path: &[bool], key: Fr) -> bool { for (i, direction) in path.iter().rev().enumerate() { diff --git a/tests/code_hash_revert.json b/tests/code_hash_revert.json deleted file mode 100644 index 519d3ce4..00000000 --- a/tests/code_hash_revert.json +++ /dev/null @@ -1,62 +0,0 @@ -[ - "CodeHashExists", - { - "address": "0x32071e173277530311c30133145e18f8da8ceff2", - "accountKey": "0x894ae59add2111878223c04ba4a8246b012048452ea33d14e5914b1966221515", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } -] diff --git a/tests/create_revert.json b/tests/create_revert.json deleted file mode 100644 index e6a897bd..00000000 --- a/tests/create_revert.json +++ /dev/null @@ -1,1789 +0,0 @@ -[ - [ - "NonceChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x54db9d608ab4bf279b1a94dbf4d72434d29e8c683b30399efa0ce668e9f11a01", - "leaf": { - "value": "0xb9a7cc3a94a867fbc6795fe5f1d4a1ca655108608fe15660a6ae4e84aebf3026", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xd16623bdd3ea298a645e78e9af53a1964ceab34c9af7fa8ddacd872b3cd6d913", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0x16feb5a0efedfa000e2436c241e083b64838ed16432c54278b6d33a2cf9ec211", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f2ebe2fcca3e51f0246b3476230a2e304a14ff47b9a6217218b1fde42faaf0a", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x00d6fedee08d6f950425f95742d1a86e19132c350b3c01055a6ec987946c6c27", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0x4d23595356021e8296d45e34c0b0f98a672b1a5762e11514d9c203f36c4aa70b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - }, - { - "nonce": 2, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0x4d23595356021e8296d45e34c0b0f98a672b1a5762e11514d9c203f36c4aa70b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0x4d23595356021e8296d45e34c0b0f98a672b1a5762e11514d9c203f36c4aa70b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 2, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - }, - { - "nonce": 2, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "PoseidonCodeHashExists", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0x4d23595356021e8296d45e34c0b0f98a672b1a5762e11514d9c203f36c4aa70b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0x4d23595356021e8296d45e34c0b0f98a672b1a5762e11514d9c203f36c4aa70b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 2, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - }, - { - "nonce": 2, - "balance": "0x0", - "codeHash": "0x9d94d1365722b0d1c73554e92431eadc4f7f0e2be3b1dde88d76df63c1e90ca8", - "poseidonCodeHash": "0x2b5d883986f2e983b22a6bf9eaeb97f080b897039d58affe5ab5334c267c1ce8", - "codeSize": 1244 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "NonceChanged", - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "root": "0xa6d01752ec0e29785a9582f0c84da712a9f55efc15fa149b07e2d01d3dad7a10", - "leaf": { - "value": "0xfecb77d745aa8909c9fe33d6c7ee10c7679dbdbbb552ec985420db0ba6a7f21a", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x53c23217dd8e96d748379ae7a17af435d45e1ac762db8b375ee4d5c42cbaf507", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0xd59465e36af67024d3990fb05dd9144f60ae4d19e460ca73f3e5844b435bbf21", - "sibling": "0x7ce0945088f8fa28a3601f6f08d57e0c0e39ceffdf300a35502b9cba8cd4d320" - }, - { - "value": "0x65731a1c210f9640b904a56e46df2d87c9f1076dd2eb2b44c2bbe5b1bc45c704", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x5cefb9daffa951580e0a7e3cc2f6b924a9de11cb947d800f4881af9cd48efa08", - "leaf": { - "value": "0x5725eb8f25027a68acd02d4c5681458856c2e78ff4059cfe57a952deb212840e", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x09956b8d5c12f5b4eee395a50982a517c8a19beaed7d2b50d90db103e1ced128", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0xabd4737c62d68c0a0f7ce5fb6608baec15c91808aa55cd10ed2060f1bdd5530f", - "sibling": "0x7ce0945088f8fa28a3601f6f08d57e0c0e39ceffdf300a35502b9cba8cd4d320" - }, - { - "value": "0xb1d48a109915f93a465c09120aec87156f9adc829c7515031059f716520b5912", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - { - "nonce": 3, - "balance": "0x7fffffffffffffffffffffffffffffffffffffffffd5a5fa6ef3b0d1cc2410", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 4, - "balance": "0x7fffffffffffffffffffffffffffffffffffffffffd5a5fa6ef3b0d1cc2410", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "root": "0x5cefb9daffa951580e0a7e3cc2f6b924a9de11cb947d800f4881af9cd48efa08", - "leaf": { - "value": "0x5725eb8f25027a68acd02d4c5681458856c2e78ff4059cfe57a952deb212840e", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x09956b8d5c12f5b4eee395a50982a517c8a19beaed7d2b50d90db103e1ced128", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0xabd4737c62d68c0a0f7ce5fb6608baec15c91808aa55cd10ed2060f1bdd5530f", - "sibling": "0x7ce0945088f8fa28a3601f6f08d57e0c0e39ceffdf300a35502b9cba8cd4d320" - }, - { - "value": "0xb1d48a109915f93a465c09120aec87156f9adc829c7515031059f716520b5912", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "leaf": { - "value": "0x1de5be815f911325644c52164ee29a650870730b98a1961214b87f199f32b00d", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a", - "sibling": "0x7ce0945088f8fa28a3601f6f08d57e0c0e39ceffdf300a35502b9cba8cd4d320" - }, - { - "value": "0x96f7646c9a2a24fb61bb632deaccc4856d47d754f73e62d666dba4328842501b", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - { - "nonce": 4, - "balance": "0x7fffffffffffffffffffffffffffffffffffffffffd5a5fa6ef3b0d1cc2410", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 4, - "balance": "0x7fffffffffffffffffffffffffffffffffffffffffd5a5fa6e2fecf46d9810", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "NonceChanged", - { - "address": "0x32071e173277530311c30133145e18f8da8ceff2", - "accountKey": "0x894ae59add2111878223c04ba4a8246b012048452ea33d14e5914b1966221515", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "CodeHashExists", - { - "address": "0x32071e173277530311c30133145e18f8da8ceff2", - "accountKey": "0x894ae59add2111878223c04ba4a8246b012048452ea33d14e5914b1966221515", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "AccountDoesNotExist", - { - "address": "0x32071e173277530311c30133145e18f8da8ceff2", - "accountKey": "0x894ae59add2111878223c04ba4a8246b012048452ea33d14e5914b1966221515", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "CodeSizeExists", - { - "address": "0x32071e173277530311c30133145e18f8da8ceff2", - "accountKey": "0x894ae59add2111878223c04ba4a8246b012048452ea33d14e5914b1966221515", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - }, - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00", - "sibling": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x81e07940294655fc09802fd3702eb9341d72688174f3c09f1c15a9f9f7747022" - } - ], - "pathPart": "0x9" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0x5300000000000000000000000000000000000005", - "accountKey": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f", - "accountPath": [ - { - "root": "0x68225e6e7298fe85db2621c21168aedc6db1cca1527244396865d014ecb47b2d", - "leaf": { - "value": "0x97d090869cc3b3228287c10df3234b06d2f34f7289709ad0309eb1a73255f425", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0x17b981c42e2dad6f6fc6237fcd6353ab5f36295f81f61f249b898e23534de807", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0x7ce0945088f8fa28a3601f6f08d57e0c0e39ceffdf300a35502b9cba8cd4d320", - "sibling": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a" - }, - { - "value": "0x30a11bbc349c6aa3b5a0c430aa50ffba3eae56726f019197e5a28fdf6659c405", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xea6dddf0cdc78943129c8902dfc7657c0b46941c88e1a1d63b54a96e2ab8e804", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x62bc27600070391573dd8a4eada29f9fd39f6177e2244ec4ff10b6c640b3c11c", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - }, - { - "root": "0xab772126ac57763d7d8477de86487ab51954a82d4b591b1d04e2b1d3eba8f52e", - "leaf": { - "value": "0xa08f74548e44a310c9c36b4c13073dfe7d0bb6f007aadb55daa6bcbe9e725913", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0x65abbb3cea589664ce7408040d9c826d858be14c81baf80bfbcfd2555b9d350c", - "sibling": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a" - }, - { - "value": "0x05b9591fd40622abc4b894b1ead7b2683610bd4faf48f72e62eab42b6ad4e109", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd016ca2722256fe6f1d7581da03de64730c111c15f94b967253a13960117b311", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc126b1d6acc5fd4edeee8395d2341b56efefc4483cf0effa9197e77497456313", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x149b94233dbf0", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 0, - "balance": "0x20d7d1f9267f0", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "PoseidonCodeHashExists", - { - "address": "0x5300000000000000000000000000000000000005", - "accountKey": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f", - "accountPath": [ - { - "root": "0xab772126ac57763d7d8477de86487ab51954a82d4b591b1d04e2b1d3eba8f52e", - "leaf": { - "value": "0xa08f74548e44a310c9c36b4c13073dfe7d0bb6f007aadb55daa6bcbe9e725913", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0x65abbb3cea589664ce7408040d9c826d858be14c81baf80bfbcfd2555b9d350c", - "sibling": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a" - }, - { - "value": "0x05b9591fd40622abc4b894b1ead7b2683610bd4faf48f72e62eab42b6ad4e109", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd016ca2722256fe6f1d7581da03de64730c111c15f94b967253a13960117b311", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc126b1d6acc5fd4edeee8395d2341b56efefc4483cf0effa9197e77497456313", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - }, - { - "root": "0xab772126ac57763d7d8477de86487ab51954a82d4b591b1d04e2b1d3eba8f52e", - "leaf": { - "value": "0xa08f74548e44a310c9c36b4c13073dfe7d0bb6f007aadb55daa6bcbe9e725913", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a", - "sibling": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13" - }, - { - "value": "0x65abbb3cea589664ce7408040d9c826d858be14c81baf80bfbcfd2555b9d350c", - "sibling": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a" - }, - { - "value": "0x05b9591fd40622abc4b894b1ead7b2683610bd4faf48f72e62eab42b6ad4e109", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd016ca2722256fe6f1d7581da03de64730c111c15f94b967253a13960117b311", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc126b1d6acc5fd4edeee8395d2341b56efefc4483cf0effa9197e77497456313", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x20d7d1f9267f0", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 0, - "balance": "0x20d7d1f9267f0", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "NonceChanged", - { - "address": "0xaa5e8a9852ed1c278cfab41135f2a7d123f54106", - "accountKey": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d", - "accountPath": [ - { - "root": "0xab772126ac57763d7d8477de86487ab51954a82d4b591b1d04e2b1d3eba8f52e", - "leaf": { - "value": "0xe64d82f7346e6566cfce80e9bda31297ff46fe63e09e6b7b8b1348d9ca4e782d", - "sibling": "0x9b38091c0e341793f0e755a1ea7b64bfb06455aced31334598fcfd02d1d94616" - }, - "path": [ - { - "value": "0x01216d94984e13ff36205e985d72bb4ff0177d2d445203154c68866688f8de13", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - } - ], - "pathPart": "0x3" - }, - { - "root": "0x8ccf759d03930d9cbb2ec80b08ccd81bea741b56356c5af283a1eab82ff1c70e", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x74cf717c0773aa68e605391f7980659712020bc072cd8325021acd1fafebda02", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x774bfb79801f79ef56d09fd4d03d52e1be20067f3f5f38f89c69807b3ed5e422", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xebd5ab99b353f6c24659e1d77df8163bca7714fdb81980b8047d1f1d71b8580e", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0x9959582e4e85f5313966eeb3fd81198306d00c7919390e08daa07de97568492d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8347b4dab3c0203f9d57d62205f2c7999275fcf3df3b2c030e07f4b835e5aa22", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0xaa5e8a9852ed1c278cfab41135f2a7d123f54106", - "accountKey": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d", - "accountPath": [ - { - "root": "0x8ccf759d03930d9cbb2ec80b08ccd81bea741b56356c5af283a1eab82ff1c70e", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x74cf717c0773aa68e605391f7980659712020bc072cd8325021acd1fafebda02", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x774bfb79801f79ef56d09fd4d03d52e1be20067f3f5f38f89c69807b3ed5e422", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xebd5ab99b353f6c24659e1d77df8163bca7714fdb81980b8047d1f1d71b8580e", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0x9959582e4e85f5313966eeb3fd81198306d00c7919390e08daa07de97568492d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8347b4dab3c0203f9d57d62205f2c7999275fcf3df3b2c030e07f4b835e5aa22", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - }, - { - "root": "0x8ccf759d03930d9cbb2ec80b08ccd81bea741b56356c5af283a1eab82ff1c70e", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x74cf717c0773aa68e605391f7980659712020bc072cd8325021acd1fafebda02", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x774bfb79801f79ef56d09fd4d03d52e1be20067f3f5f38f89c69807b3ed5e422", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xebd5ab99b353f6c24659e1d77df8163bca7714fdb81980b8047d1f1d71b8580e", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0x9959582e4e85f5313966eeb3fd81198306d00c7919390e08daa07de97568492d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8347b4dab3c0203f9d57d62205f2c7999275fcf3df3b2c030e07f4b835e5aa22", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "CodeHashExists", - { - "address": "0xaa5e8a9852ed1c278cfab41135f2a7d123f54106", - "accountKey": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d", - "accountPath": [ - { - "root": "0x8ccf759d03930d9cbb2ec80b08ccd81bea741b56356c5af283a1eab82ff1c70e", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x74cf717c0773aa68e605391f7980659712020bc072cd8325021acd1fafebda02", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x774bfb79801f79ef56d09fd4d03d52e1be20067f3f5f38f89c69807b3ed5e422", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xebd5ab99b353f6c24659e1d77df8163bca7714fdb81980b8047d1f1d71b8580e", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0x9959582e4e85f5313966eeb3fd81198306d00c7919390e08daa07de97568492d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8347b4dab3c0203f9d57d62205f2c7999275fcf3df3b2c030e07f4b835e5aa22", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - }, - { - "root": "0x56244e2fbbebaa8eb7abc064bc22607684ccbd7f3fa6794b2100ac898866ce2b", - "leaf": { - "value": "0xacb4cd58651bf160bb78e41ee821ea3087ea0671736ec6c807e98d5a906a9915", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0xb8ca4c8281c6f43a8f920bfb777bda98de08d4c807958fb7790ddb0639770525", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x53a3e05a0caa1fcaeb604e91eae16751943c15484a0d6a5409df171c7da52628", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0x6c5452a9f71076216dbcaa000245612ef439bc615178a21f445e79073e2d6505", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0xe6fce25a4b17eb998b627706cb3b5bc163362c25e43e1872fdc11f45c0808f28", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb60343dad023fe40b6b8145d2936d0ca414c51a0f0bbf1a772310d3721cd8f02", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xce6f93f68c69cc9e5371cd00b198d5579d4135a3ddec5c1cd302e47eebabee5b", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "PoseidonCodeHashExists", - { - "address": "0xaa5e8a9852ed1c278cfab41135f2a7d123f54106", - "accountKey": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d", - "accountPath": [ - { - "root": "0x56244e2fbbebaa8eb7abc064bc22607684ccbd7f3fa6794b2100ac898866ce2b", - "leaf": { - "value": "0xacb4cd58651bf160bb78e41ee821ea3087ea0671736ec6c807e98d5a906a9915", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0xb8ca4c8281c6f43a8f920bfb777bda98de08d4c807958fb7790ddb0639770525", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x53a3e05a0caa1fcaeb604e91eae16751943c15484a0d6a5409df171c7da52628", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0x6c5452a9f71076216dbcaa000245612ef439bc615178a21f445e79073e2d6505", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0xe6fce25a4b17eb998b627706cb3b5bc163362c25e43e1872fdc11f45c0808f28", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb60343dad023fe40b6b8145d2936d0ca414c51a0f0bbf1a772310d3721cd8f02", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - }, - { - "root": "0x341f9f1743c7c7675a6e6d5c5e79a8becf9726fb98e6b00858607e802f10f528", - "leaf": { - "value": "0xc590cc3ba13b1ec2caf8545f7c024733a0773160f9bee1cc9361d2bd5c28a823", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x1a1711746046acd4df66914db48d9a554b6f86aac5e5623b0cfa6ee34a3aaa0e", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xca449b133a5ea0bfd70c312eeb28f79ca132a9bd727009ca21dff1387105ae2e", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xb2f1a8a03a4d39a0eb887dbf2843afa55840e23950e0fdfb8d9542afe7b9042b", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0xa3c1e733259b9180c59fe17e09e04580ef928cde800bdae331ce47de6ff91f2e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3d6de3ede8b5dc29100df87301e20919da18e8654fdce90573144d7660350023", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xce6f93f68c69cc9e5371cd00b198d5579d4135a3ddec5c1cd302e47eebabee5b", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xce6f93f68c69cc9e5371cd00b198d5579d4135a3ddec5c1cd302e47eebabee5b", - "poseidonCodeHash": "0x1102d098d48975b58afa80379db4b207c725a4b4ed473b65b4c454329eb5b1f9", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "CodeSizeExists", - { - "address": "0xaa5e8a9852ed1c278cfab41135f2a7d123f54106", - "accountKey": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d", - "accountPath": [ - { - "root": "0x341f9f1743c7c7675a6e6d5c5e79a8becf9726fb98e6b00858607e802f10f528", - "leaf": { - "value": "0xc590cc3ba13b1ec2caf8545f7c024733a0773160f9bee1cc9361d2bd5c28a823", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0x1a1711746046acd4df66914db48d9a554b6f86aac5e5623b0cfa6ee34a3aaa0e", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xca449b133a5ea0bfd70c312eeb28f79ca132a9bd727009ca21dff1387105ae2e", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0xb2f1a8a03a4d39a0eb887dbf2843afa55840e23950e0fdfb8d9542afe7b9042b", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0xa3c1e733259b9180c59fe17e09e04580ef928cde800bdae331ce47de6ff91f2e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3d6de3ede8b5dc29100df87301e20919da18e8654fdce90573144d7660350023", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - }, - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xba06a3321f7768f3e180a76fd3012f5d6df8e80aabfc22323662456452b7992b", - "sibling": "0xcbbd22a45f8e58baa657ecdb1633dafffc4bac8b89bab0c9a1145b917315201d" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619", - "sibling": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415" - }, - { - "value": "0x5c76d7225f714ade10c440424cee975f91e8f0bf8778943646ef31dabebd562e", - "sibling": "0x810b6291530b4dbf933940d6cbf918ecc9293490af3b8485f323a4228803a31b" - }, - { - "value": "0x1e00299d71b70def7495aca5a314fe6640de065229a43be001daec11ea8f1324", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x40b53c28fa1812d63b193564b339e5585e34e80186b42dcdc1c2799a33df182f", - "sibling": "0xf250f19a66779c87c93c8ed19a16c13ef5d5e2abb797b97b6d7e8fd45a56d308" - } - ], - "pathPart": "0xb" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xce6f93f68c69cc9e5371cd00b198d5579d4135a3ddec5c1cd302e47eebabee5b", - "poseidonCodeHash": "0x1102d098d48975b58afa80379db4b207c725a4b4ed473b65b4c454329eb5b1f9", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xce6f93f68c69cc9e5371cd00b198d5579d4135a3ddec5c1cd302e47eebabee5b", - "poseidonCodeHash": "0x1102d098d48975b58afa80379db4b207c725a4b4ed473b65b4c454329eb5b1f9", - "codeSize": 575 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "StorageDoesNotExist", - { - "address": "0x5300000000000000000000000000000000000000", - "accountKey": "0x5c77631539be00e5d939af0821b404937bcdaf0fb7767acca4d9e31fcf4fd015", - "accountPath": [ - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0x1de5be815f911325644c52164ee29a650870730b98a1961214b87f199f32b00d", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a", - "sibling": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b" - }, - { - "value": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a", - "sibling": "0x65abbb3cea589664ce7408040d9c826d858be14c81baf80bfbcfd2555b9d350c" - }, - { - "value": "0x96f7646c9a2a24fb61bb632deaccc4856d47d754f73e62d666dba4328842501b", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0x1de5be815f911325644c52164ee29a650870730b98a1961214b87f199f32b00d", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a", - "sibling": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b" - }, - { - "value": "0x0be30c8d222fbccc2a45347e68740b8173bf3a6ac150aa84d091c59f369eaf1a", - "sibling": "0x65abbb3cea589664ce7408040d9c826d858be14c81baf80bfbcfd2555b9d350c" - }, - { - "value": "0x96f7646c9a2a24fb61bb632deaccc4856d47d754f73e62d666dba4328842501b", - "sibling": "0x08b316b96021a2ca130b969eb6b0ab9c3c43b056545daae1188e01d12f7d0c14" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x358d4d2cee63095008b077e6b5cf10f77cbe63c56a54ad6defaca8cde6f0cf0f", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xda013f3c5101b8483189f5b67ca8a3825dc4f0b5ecf49b2ceaa941c80830a30b", - "sibling": "0x9f6f4da0f6c69653ba84eae5269c4bfdde5b57641c9ef2238498eefba3b48e1a" - }, - { - "value": "0xcd1d62e83cf0eb1a76e7825ec9343198c5121f9437574b933e9ef886fa42e415", - "sibling": "0x3d3b6f898eaaaea96d713169d141cd2a78a6990724008d10262623bff85df619" - }, - { - "value": "0x1c7969070147d68ff5acdcd2cd6c5e1a64f493dafe198d1d0cbdaa6958284803", - "sibling": "0x4c2ae5b7bf3971afe941adcd4e15a439031598207676d37fe5291653222d4a00" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe31e03d6b463ad0fb72d8e0f9af62933afc7b0b2a1736c9594ea163f954b9626" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ] -] diff --git a/tests/deploy_traces.json b/tests/deploy_traces.json deleted file mode 100644 index bb4d5eb4..00000000 --- a/tests/deploy_traces.json +++ /dev/null @@ -1,339 +0,0 @@ -[ - { - "index": -1, - "address": "0xb36feaeaf76c2a33335b73bef9aef7a23d9af1e3", - "accountKey": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900", - "accountPath": [ - { - "pathPart": "0x35", - "root": "0xd0039d314dc6860d4d26de61c88bd0fbd2e525ec6dfb8f17367079a46302482f", - "path": [ - { - "value": "0x2ccb0213f1c231b89e6a77b5ecdf4000384d1696789cb5d6e2225f145e72b12a", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xd9813f65f456ca49f867b0e58e4479e9a47e027ddea7dd223fa949b4da153630", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xbddc56a9ec942424e0ae231a99833edd8966e7bdf54578aa4e7f09076cb3a81c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x59de88bfc172c07b3669ac542cdf3953525ec7dc0b2551b8a573f76f23762311", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x5deee444162302cce9d272e8ae9508508d6a7214da22d3933905d160cb1fcc25", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - } - ], - "leaf": { - "value": "0x8085117d35215a915c1b5b7345950dadff5536c9b33365097859a3790f96091e", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0xf5", - "root": "0xb29de8e07aebe52b20347239bb2423c1e21895df9065843dddef73935f33e628", - "path": [ - { - "value": "0x56f6d0beb5cb5df445249b71e86dd06a837d1feddee8851ac4218a621d777c09", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x8a992699e34a191779fcfc495309be890ad65d30832de5ad9f82fff7c328d90b", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xe647e80c1c39a729e5c2a31a63214a42a83ad8231d4d11c23f360cb8c224120f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1c85c1763544d6e328083b5b81cd809294008419a0b0d2e5a28de4a2cc016e08", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x20f456e322d1102bc861fb3eec171ef0eb61620f62f82349a958f23e50c9d319", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x17f9b4378034e1f0521bfdba975fec821e2454ce4e4251dc384851ff2f62991a", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x19bf403fa00119e44934ed37c1b1277138a60d087bc6ae7ca4adba0c5d78782a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7368c8ebabb8fd55758c492232e6302b66efe9ce03c3eb22e9b7540eb15c8a1c", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x33c5435c783d711eca3cb21179f8afaf6dd0be8ca0f066d0daace28b17fc281d", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "index": 395, - "address": "0xb36feaeaf76c2a33335b73bef9aef7a23d9af1e3", - "accountKey": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900", - "accountPath": [ - { - "pathPart": "0xf5", - "root": "0xb29de8e07aebe52b20347239bb2423c1e21895df9065843dddef73935f33e628", - "path": [ - { - "value": "0x56f6d0beb5cb5df445249b71e86dd06a837d1feddee8851ac4218a621d777c09", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x8a992699e34a191779fcfc495309be890ad65d30832de5ad9f82fff7c328d90b", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xe647e80c1c39a729e5c2a31a63214a42a83ad8231d4d11c23f360cb8c224120f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1c85c1763544d6e328083b5b81cd809294008419a0b0d2e5a28de4a2cc016e08", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x20f456e322d1102bc861fb3eec171ef0eb61620f62f82349a958f23e50c9d319", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x17f9b4378034e1f0521bfdba975fec821e2454ce4e4251dc384851ff2f62991a", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x19bf403fa00119e44934ed37c1b1277138a60d087bc6ae7ca4adba0c5d78782a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7368c8ebabb8fd55758c492232e6302b66efe9ce03c3eb22e9b7540eb15c8a1c", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x33c5435c783d711eca3cb21179f8afaf6dd0be8ca0f066d0daace28b17fc281d", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - }, - { - "pathPart": "0xf5", - "root": "0xf81434193585628402d94a1c8324febc116379a5f823de900971c3d023e3a425", - "path": [ - { - "value": "0x0dbd566835cc5956ad17c4990d5abe65ae7c5bb9e96e2336d75d6aa79ba5b91b", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xae84e740e7117c6f61e700edd4dccdaed428cd2e9fecf9703c3d7d963078592c", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0x632ea689b4f2d253568224fe7683bae1c44d928eb137c445b4ffaa12d6dc950e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf38f2dc235149fb37d735127601140d1a9179cdbb8f89d1c5979ab57b11e0406", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x27940a776a51c945fb298f4d1db8cff31a2faec578a285142cdfb28f5eebfb0d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7cd23dd92673ff99262db645a17f25347481728771ab1fcf3f9762cfdaa2f30d", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x29ff7d5ee837f053fd79cc5da2da02ae51f2e0c60689a841fa2483fc2c029429", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x729b39ce766b7397ce2087aecf1520691b2698bb3020013be6f3d17ca0c38417", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x8a18959fbf133ad717b7af774ae0881ff5272b1e251ca118850968c2336b6909", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "stateKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0xe2787d2518803e182b9f2993cc114930137244fe9086982afa1bd624b1f6b921", - "leaf": { - "value": "0x5f67505ad420c9a06451de0be9e2c5367d7164d875f08ea181c64b2b280b452f", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "value": "0x00000000000000000000000005fdbdfae180345c6cff5316c286727cf1a43327" - } - ] - }, - { - "index": -1, - "address": "0xb36feaeaf76c2a33335b73bef9aef7a23d9af1e3", - "accountKey": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900", - "accountPath": [ - { - "pathPart": "0xf5", - "root": "0xb7fed9f5495f86ab3f067e4db460141a8530a41abcdecb6ebd77517b8e649008", - "path": [ - { - "value": "0xedf282cba2043368a788883116b11be2592e334afeb40989eebced2a9c8f6a24", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x89279dd473fc14b0f1352eb569271e922746e8d25e9e78e5f71db2623a2bfb16", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xf5afdc08c112b9a68bf2319d157ca4f5c9d3e25360c13b84ced46f7ee6f4f809", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1ef352fefc2950b805079fc80b996b3213d7dcd3e088904519172f010c3cdf0f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xdd9a78e7ca1f7446e7a33a8f7e21a5cb2d945895e70ec2a4511cfc893061c514", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc25f53c7e8db3ae782a80532335d59bcf7e9961a9fe49377ef816f0f5ce6c72c", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x8fd20b2cf5a2e2521b26528fb5e02be28699ac0eccccc67f92b368379a360726", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x729b39ce766b7397ce2087aecf1520691b2698bb3020013be6f3d17ca0c38417", - "sibling": "0x33cfff19e0b658a4021589467ede5983afd54efd962b629037624f71bf3d9c06" - } - ], - "leaf": { - "value": "0x8a18959fbf133ad717b7af774ae0881ff5272b1e251ca118850968c2336b6909", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - }, - { - "pathPart": "0xf5", - "root": "0xd5cba51852248915b4265454f4ceef34a34b10ad3a819a4b568104fd96d2280e", - "path": [ - { - "value": "0x4ea9d4a290473ecc2d3f25123515c1cd24f9317187837cbf798b9ec3f7c9ec0f", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xe2ed604a484416597397aba756822f61b2766fe43c487b34b0fe19ab864f8607", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0x980c7b7ebd0ac4d8356c1cec4ee1e2d39b1390242f9c5deb1873c5df1e25a616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x127cff94f5c8c0f91246cf3b02d4b2c48a7f56f960448a3b7aed76d5fd92ed0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3daf950342fcef104a9c7e526bf4e4d902d0fff86a59a8e61eb6f93679fd540c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc8958a428335d5a01ed5455294071015e7773289a1d0fe4b6dba99e68cbd1b21", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0xc414e34df49bd221983ece165dc6442886c98297548c0f587654ed09f4213924", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d", - "sibling": "0x33cfff19e0b658a4021589467ede5983afd54efd962b629037624f71bf3d9c06" - } - ], - "leaf": { - "value": "0x09ec95e42a6ea91b03286db617e4d81d5ebdc6151b646286a7498341d2282b25", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xcf73ee5d93a98045cd55efe938790c20effb831ac0646f6875213fb4aca66319" - } - ], - "commonStateRoot": "0xe2787d2518803e182b9f2993cc114930137244fe9086982afa1bd624b1f6b921", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - } -] diff --git a/tests/deploy_traces_multiple_fields.json b/tests/deploy_traces_multiple_fields.json deleted file mode 100644 index c351d10f..00000000 --- a/tests/deploy_traces_multiple_fields.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "index": -1, - "address": "0x4cb1ab63af5d8931ce09673ebd8ae2ce16fd6571", - "accountKey": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29", - "accountPath": [ - { - "pathPart": "0x75", - "root": "0xf81434193585628402d94a1c8324febc116379a5f823de900971c3d023e3a425", - "path": [ - { - "value": "0x0dbd566835cc5956ad17c4990d5abe65ae7c5bb9e96e2336d75d6aa79ba5b91b", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xae84e740e7117c6f61e700edd4dccdaed428cd2e9fecf9703c3d7d963078592c", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0x632ea689b4f2d253568224fe7683bae1c44d928eb137c445b4ffaa12d6dc950e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf38f2dc235149fb37d735127601140d1a9179cdbb8f89d1c5979ab57b11e0406", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x27940a776a51c945fb298f4d1db8cff31a2faec578a285142cdfb28f5eebfb0d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7cd23dd92673ff99262db645a17f25347481728771ab1fcf3f9762cfdaa2f30d", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x29ff7d5ee837f053fd79cc5da2da02ae51f2e0c60689a841fa2483fc2c029429", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728", - "sibling": "0x729b39ce766b7397ce2087aecf1520691b2698bb3020013be6f3d17ca0c38417" - } - ], - "leaf": { - "value": "0x8085117d35215a915c1b5b7345950dadff5536c9b33365097859a3790f96091e", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0x75", - "root": "0xb7fed9f5495f86ab3f067e4db460141a8530a41abcdecb6ebd77517b8e649008", - "path": [ - { - "value": "0xedf282cba2043368a788883116b11be2592e334afeb40989eebced2a9c8f6a24", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x89279dd473fc14b0f1352eb569271e922746e8d25e9e78e5f71db2623a2bfb16", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xf5afdc08c112b9a68bf2319d157ca4f5c9d3e25360c13b84ced46f7ee6f4f809", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1ef352fefc2950b805079fc80b996b3213d7dcd3e088904519172f010c3cdf0f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xdd9a78e7ca1f7446e7a33a8f7e21a5cb2d945895e70ec2a4511cfc893061c514", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc25f53c7e8db3ae782a80532335d59bcf7e9961a9fe49377ef816f0f5ce6c72c", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x8fd20b2cf5a2e2521b26528fb5e02be28699ac0eccccc67f92b368379a360726", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x33cfff19e0b658a4021589467ede5983afd54efd962b629037624f71bf3d9c06", - "sibling": "0x729b39ce766b7397ce2087aecf1520691b2698bb3020013be6f3d17ca0c38417" - } - ], - "leaf": { - "value": "0xe224c4d85c4a1dac4080758e4a7507e91af946e0f90c79a666e16beae8d0b927", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - } - ], - "accountUpdate": [ - { - "nonce": 3, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffffb1c8ab9daa3a8", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 4, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffffa56174f7ad9cc", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/empty_storage_write.json b/tests/dual_code_hash/empty_storage_write.json deleted file mode 100644 index 498a1514..00000000 --- a/tests/dual_code_hash/empty_storage_write.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "address": "0x03144cee638a4ec6ecc33938c189d2fdc8ea138d", - "accountKey": "0xa2043f8414c90c874f8070a98fc7825e1a2cf83b1e2d82d7d9dd52bae62c830b", - "accountPath": [ - { - "pathPart": "0x2", - "root": "0xeaf96f97437422df4957b6fdb904cedb4a2953b30b4ee7fe0d771723bb6c030e", - "path": [ - { - "value": "0x7c656ca013765449746f554d654e233aaf03af4e7c288b95917a7abde5203813", - "sibling": "0xf94605e69db76a52a7f4cf740cf087ed638f9604fea21ea2278f581ca2c5f406" - }, - { - "value": "0xd3dc9dbd5cee07a7323211faa970a1d25ddd1154ddfe7a6bc517020d4ea9ad1c", - "sibling": "0x350b0e007b5e5305212edf9483861c65c2537b825fc10c3f4a2a03aca8d64913" - }, - { - "value": "0xc03742aa72e18a009c16335b97ea1cd3b8433217eb58515a06ffe0694f68b521", - "sibling": "0x99f5b46aa9c5f6f2afddfa94d47d7a3e511b571be0849c5dfa842671c502b01f" - }, - { - "value": "0x7501a3d6ef0647449047c9683bcbb07a4d66eab457f0d691a79db14337832411", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x2d52948ec8a1cb333095d92f2a4ebefd0aeb54298f2459807f947b68f6a45630", - "sibling": "0xee82fc746955f85049b686ba161324c2802e3fd2a71e6183d9dcdbf221c6b40b" - } - ], - "leaf": { - "value": "0x0ba92aa7e1f1beb2c33917cf040e04643e05e60b5fe116d8cfca1daeefd6c62a", - "sibling": "0xa2043f8414c90c874f8070a98fc7825e1a2cf83b1e2d82d7d9dd52bae62c830b" - } - }, - { - "pathPart": "0x2", - "root": "0x2036c079f1837cc26bf88d5ae2ac40f51b50b6f28a8cd17c4a00dde46e1d7210", - "path": [ - { - "value": "0x2ee103a101d12e17367b87c9debdd58a69dc7e0f3b600aa449f027dee19be212", - "sibling": "0xf94605e69db76a52a7f4cf740cf087ed638f9604fea21ea2278f581ca2c5f406" - }, - { - "value": "0x205b244de8b3d181cc7a375bccb5a01a3e4b4e5df1a14aa6288550af363c5529", - "sibling": "0x350b0e007b5e5305212edf9483861c65c2537b825fc10c3f4a2a03aca8d64913" - }, - { - "value": "0xc63b93a2a69f18a06fdb94b432ede7490a12636f17dd72d2e452b33791b93309", - "sibling": "0x99f5b46aa9c5f6f2afddfa94d47d7a3e511b571be0849c5dfa842671c502b01f" - }, - { - "value": "0xf28b3e45e3d6141fcd6e89bd98fdbfa46d953c5683e69e40e137988dbed5ce1b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xff3f51ef38abd73f721adba00c0579bc00a1e0dee076fb8e85b9d6df45d18608", - "sibling": "0xee82fc746955f85049b686ba161324c2802e3fd2a71e6183d9dcdbf221c6b40b" - } - ], - "leaf": { - "value": "0x5eeed1cbf97b2364067826493c29443b9ea69adcd69b7d1cf02b8018326ae02e", - "sibling": "0xa2043f8414c90c874f8070a98fc7825e1a2cf83b1e2d82d7d9dd52bae62c830b" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x05448670d66102da98fd533aca4f5bcf22291563e4202eda2f8e5cd7a64b12db", - "poseidonCodeHash": "0x265cb05a6ac109411feb8683661828e7e721c18530b8acaafe66d55eeef10a0c", - "codeSize": 1276 - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x05448670d66102da98fd533aca4f5bcf22291563e4202eda2f8e5cd7a64b12db", - "poseidonCodeHash": "0x265cb05a6ac109411feb8683661828e7e721c18530b8acaafe66d55eeef10a0c", - "codeSize": 1276 - } - ], - "stateKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0x44c0a30cbe98ccf9855e69b003e1949a7b458b9731df0b2dc56e6d7c3ddc172f", - "leaf": { - "value": "0x55276c83d8d4e65f29d6dc6b793796b204aa008547cda5e62f4a53ccd92d4200", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "value": "0x0000000000000000000000002222bc0df723f134a40abb28e43ff8e95ee9d811" - } - ] -} diff --git a/tests/dual_code_hash/nonce_write_existing_account.json b/tests/dual_code_hash/nonce_write_existing_account.json deleted file mode 100644 index 1d5c4499..00000000 --- a/tests/dual_code_hash/nonce_write_existing_account.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "address": "0x2222bc0df723f134a40abb28e43ff8e95ee9d811", - "accountKey": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x976d9b8f8dd409f6cd85085a27acf6a2167a1559a54b4cd03dcdb5982b638103", - "path": [ - { - "value": "0xf3997572170e697043e253e6b93b8a5b6751fdf6ebaf9c1ce0a841890e8b7e26", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x3122087872184b57dbba2da52e60ab8542e83ecf12af6e46e1ce1385ca801a08", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x1712cf69caae5e2736ce08d6566c14ef97ad7b2dc1d6622d27cf2dc8f8e92c2a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x03f909e60063941f66bea837d2a282e44ccb96e30bdc0fa3a0bfdd84eae66b2a", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0xb60859aba8271d2449388a9573216a5a1a9cffc4ecf68b28a4d26b0f46b8dc20", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - }, - { - "pathPart": "0x3", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x7b454dc902bac42ac469f5a81104019dc355ba145be02dbf1292a317a8ce5814", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x9f4878ebd2093b589972730a3a64a1f0c6af264a2e4e5d75955bf240f507f32d", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x075c067070b46e8ccd6a4527e1afdc70af4f48002ba6285806421c89b46e0d19", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - } - ], - "accountUpdate": [ - { - "nonce": 23, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 24, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/nonce_write_type_1_empty_account.json b/tests/dual_code_hash/nonce_write_type_1_empty_account.json deleted file mode 100644 index 1dbcffcc..00000000 --- a/tests/dual_code_hash/nonce_write_type_1_empty_account.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x9", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xd0848ab2fa6542c4a7710b9c329b6fbe565dff1d2f84a2031e52064be941af02", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0xb8fb8f6715a371aa46fe067bc54b38c7faa4a32bf3b7f49424fba785bba72c2f", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x3072d32d6ebec783d7343e40c1368d27b6987c9be8ad9ac6eea9ec606f921529", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - } - ], - "leaf": { - "value": "0xec75e8f8f70c305d7aa61fd24d1ab2eeac2796d0db4ff90a178a4c946ee2a427", - "sibling": "0x097e027aff9f2997c1e434709b73b04615ad3de2ae1e8488ddc670d7078d8b0c" - } - }, - { - "pathPart": "0x49", - "root": "0xdfb0534fada550b2cfd0bafc70341b4affd7672b6053396cd880adb234f2c625", - "path": [ - { - "value": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/nonce_write_type_2_empty_account.json b/tests/dual_code_hash/nonce_write_type_2_empty_account.json deleted file mode 100644 index e881553b..00000000 --- a/tests/dual_code_hash/nonce_write_type_2_empty_account.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "address": "0x4dc7d71e240e1a5aa71e612caf5d097274f8237b", - "accountKey": "0xee005ff59199cf501f06c351ddf1c5662f20667c15f90719611729ca500cc919", - "accountPath": [ - { - "pathPart": "0x6", - "root": "0x5b10977c63adb88eb3a95d9e285e22ad9d63603cb715a6499f337e5d724d8200", - "path": [ - { - "value": "0xd7f436aa4c5dd1c005f1557a31e9848ab002ed68304bb7c9ad5ccdf4e19ef318", - "sibling": "0x6bc8538a07e6363f1f785950db27c590b1f4b01fc9b9a3b45cff46ec9036f10d" - }, - { - "value": "0xb24b73cc4fc38ba9a3f1bd2e0729cb2578c58143103e1d52bf94f53b694fc208", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0xf4f230d35710863f943333327fe14fbe3ceaa6f523b016eeb4aab06c41c92528" - } - ] - }, - { - "pathPart": "0x6", - "root": "0xb1a1dff36ff855199423f87acf7994fc92dd6679bbc861cef4613b6c777ff817", - "path": [ - { - "value": "0xc67ba56a8ea62c9c6ea69c345f0284ce91916da0a7ced95bddc1763be1fd4202", - "sibling": "0x6bc8538a07e6363f1f785950db27c590b1f4b01fc9b9a3b45cff46ec9036f10d" - }, - { - "value": "0xd7fca3c3cb204e72f2400e07f022d80b192458187d96216d490fa79abf1a0e10", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x30cb719c1972ed5589b4abcb0e152049a101eb4e53e9adfdaf6b01fcd364fc0f", - "sibling": "0xf4f230d35710863f943333327fe14fbe3ceaa6f523b016eeb4aab06c41c92528" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xee005ff59199cf501f06c351ddf1c5662f20667c15f90719611729ca500cc919" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/trace_1.json b/tests/dual_code_hash/trace_1.json deleted file mode 100644 index 9d681342..00000000 --- a/tests/dual_code_hash/trace_1.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "address": "0xa4871db5152adcfae2fc849afa40a6ee6f59eb54", - "accountKey": "0x2d9e4ea1cb75cc8f213f7eb7862ac3a9425ec855e812f495a36ac173c7d9682a", - "accountPath": [ - { - "pathPart": "0x2d", - "root": "0xbcb182badb89a847319d5ee72537bf261aa68a72d720a9e62458ab6a9e21ae05", - "path": [ - { - "value": "0x0532e1b50d41522e91a1de10e2e56ca75422e2a2f60c2b610d379404b184262b", - "sibling": "0xb2cecfb18a2f94707cb5f0e5c7869110261c5adae313629708e75a50e3f12d20" - }, - { - "value": "0x96db44962ca8e761438fc3c233ab793bd5f4d4e6eb25400b3699fa0b0150ec21", - "sibling": "0xe452c3d0f4686271499e277728df4437481e2619f454135d5911e2e14fc2df07" - }, - { - "value": "0xe4517002f28312ff316734f6de58619e5fa91fb454c7079e8fc0849791b75813", - "sibling": "0xcf830dfc41e1532d5f8a3d80646b75d9ce8c1721176c34897d7ec210e26ee810" - }, - { - "value": "0x153965a21e320aea0da1cc8295fae1932e4f7842e9d46a9185abe1e074c01b21", - "sibling": "0x60746298532e0d7c80cecb87fed07f0ea47040a72e729d4d81c2f567f6d96b05" - }, - { - "value": "0x30d4787ca653a7a6bd49275c99aa25e94ccc160a3084c556ef85f9cd112ef22d", - "sibling": "0xeda2c02bb922ab113ee7af75aee2ea598d0f305156d3c1d1448dcbb8d7324624" - }, - { - "value": "0x85db7e54edbd89a3b2117db34deec8b711fc04402c16cb29aa5d736c2d413a2d", - "sibling": "0x35bb517c8278d1f851b446878a34ec7bdc0c65f4259d089c05d581a20ff0bd2f" - }, - { - "value": "0x6b09646d33ea929b390fe0450e219b71e68a2a678b354cecde056b8d2734e029", - "sibling": "0xf76190c62e433afde89093899c10792a39422e4299e170928d52292a1569aa2d" - } - ], - "leaf": { - "value": "0x27a886c3f6bbe5feda2eb1a5a2e2a0c74254c63437d3ffd6ba8b6e225a8cc41c", - "sibling": "0x2d9e4ea1cb75cc8f213f7eb7862ac3a9425ec855e812f495a36ac173c7d9682a" - } - }, - { - "pathPart": "0x2d", - "root": "0x4e377b42ade1deffa70bebe9f010003c2ab4885dddadf9d26a259560677d921a", - "path": [ - { - "value": "0xe1be603d0980e658abc9b1f9aaf785492cde86c786ac5080857d7fd503c1da27", - "sibling": "0xb2cecfb18a2f94707cb5f0e5c7869110261c5adae313629708e75a50e3f12d20" - }, - { - "value": "0x60c093c22073daecc6449af9b006d321b3ebb5310ed57106a0ea057b82301e00", - "sibling": "0xe452c3d0f4686271499e277728df4437481e2619f454135d5911e2e14fc2df07" - }, - { - "value": "0x384ceaecbc6f1dfb7c39509a8a1c76629a368f06ed1d91ef0f4b331efa2cda2f", - "sibling": "0xcf830dfc41e1532d5f8a3d80646b75d9ce8c1721176c34897d7ec210e26ee810" - }, - { - "value": "0xc8fe05f1b985e6cff6d931157b5116d1d3409a286985409d39821ccb3b87201a", - "sibling": "0x60746298532e0d7c80cecb87fed07f0ea47040a72e729d4d81c2f567f6d96b05" - }, - { - "value": "0x57bbc0092fa73eb7eb31ced97aac8dae2204cff7ce15bc4015837bc0c00cc829", - "sibling": "0xeda2c02bb922ab113ee7af75aee2ea598d0f305156d3c1d1448dcbb8d7324624" - }, - { - "value": "0x54e5c3b3a28a7eab0d06d46d9e00a532cf788369e10cb137907b917f93d87610", - "sibling": "0x35bb517c8278d1f851b446878a34ec7bdc0c65f4259d089c05d581a20ff0bd2f" - }, - { - "value": "0xdba36cc28c9986556a46456646af133523b0d32ad43990212480f9e6996d5201", - "sibling": "0xf76190c62e433afde89093899c10792a39422e4299e170928d52292a1569aa2d" - } - ], - "leaf": { - "value": "0xe77e83746b7c30bb5b5547b5bfc2f3deaee47935cb7bfe9d9d6c1395bf2fae0a", - "sibling": "0x2d9e4ea1cb75cc8f213f7eb7862ac3a9425ec855e812f495a36ac173c7d9682a" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0xae41290cb5ff621ddad2c09331609c7fe3bd832e059bc2eb2b23cc5f833d7eb1", - "poseidonCodeHash": "0x11079b9c5064ee66f3e98eb95603347708eed0ac7822dee6e4857304e82e4c1e", - "codeSize": 1827 - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0xae41290cb5ff621ddad2c09331609c7fe3bd832e059bc2eb2b23cc5f833d7eb1", - "poseidonCodeHash": "0x11079b9c5064ee66f3e98eb95603347708eed0ac7822dee6e4857304e82e4c1e", - "codeSize": 1827 - } - ], - "stateKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0x44c0a30cbe98ccf9855e69b003e1949a7b458b9731df0b2dc56e6d7c3ddc172f", - "leaf": { - "value": "0x55276c83d8d4e65f29d6dc6b793796b204aa008547cda5e62f4a53ccd92d4200", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "value": "0x0000000000000000000000002222bc0df723f134a40abb28e43ff8e95ee9d811" - } - ] -} diff --git a/tests/dual_code_hash/trace_2.json b/tests/dual_code_hash/trace_2.json deleted file mode 100644 index b890406b..00000000 --- a/tests/dual_code_hash/trace_2.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "address": "0xd8d96fb523bc7c926e6b33295d8d31d6af84c920", - "accountKey": "0x7e39fabc0b83861f7bfd91792d3f7d3befb712370f34bb9d479907324238d21c", - "accountPath": [ - { - "pathPart": "0x1e", - "root": "0xe93ca7362155bd9aabd568de0f04c6c3ff03732c7cfa9e2a2368d8cfcbd9fc0d", - "path": [ - { - "value": "0xb5d2a193eaac29ef162b55c09f614ac1458bef3d187b5c9ad70115a446b92f24", - "sibling": "0x0532e1b50d41522e91a1de10e2e56ca75422e2a2f60c2b610d379404b184262b" - }, - { - "value": "0x33f739c7dbf2131d1de4c6a7679342af34775f5a47d2eed9a47124d4fbc6901e", - "sibling": "0xa3e89ccf2b812a05d0c3682ae2456dbf4bb424e425c059415346345c879a271a" - }, - { - "value": "0x31124437c20fe4cb1a89b25f1d58be2fc723b580eb6999ddff211473131e8808", - "sibling": "0xf9ba8629f802054617b80ba40092e0d4855fc4a335e5b67847820bac37f81806" - }, - { - "value": "0x01e3c4a71f3b7e3249711aebf3280d2267d9db635c0820c5e6af282b83d88b2f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8f786397007d8cacc135b65fc64d20a910a0014e46ed5c2645c784d6a6875a10", - "sibling": "0x1691821e085a09a5c5451588a31441e35165ab6f6219c45e80aca6fe2509c810" - } - ], - "leaf": { - "value": "0xba83c26882ca79a7a6567debc8c9c9e51cc3e81c8cb84011188fe8816a460f23", - "sibling": "0x7e39fabc0b83861f7bfd91792d3f7d3befb712370f34bb9d479907324238d21c" - } - }, - { - "pathPart": "0x1e", - "root": "0xbcb182badb89a847319d5ee72537bf261aa68a72d720a9e62458ab6a9e21ae05", - "path": [ - { - "value": "0xb2cecfb18a2f94707cb5f0e5c7869110261c5adae313629708e75a50e3f12d20", - "sibling": "0x0532e1b50d41522e91a1de10e2e56ca75422e2a2f60c2b610d379404b184262b" - }, - { - "value": "0x125a5918d08a67603be2687f00d89ba9dfb4154f0e010b38da4d1c6325f44b10", - "sibling": "0xa3e89ccf2b812a05d0c3682ae2456dbf4bb424e425c059415346345c879a271a" - }, - { - "value": "0x0eb9f26c26c7a6712f7f159b40ab9c9f7d212c596faf9ac543817646a232102e", - "sibling": "0xf9ba8629f802054617b80ba40092e0d4855fc4a335e5b67847820bac37f81806" - }, - { - "value": "0x7542e84ec281502d4d3fe55b435c68659fe9ab2335dfa0a21e0e8257e48ab20a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa88afc2025857a4988f7c3571381bf59ce978f8e97ccbf84a806f1366d7cf000", - "sibling": "0x1691821e085a09a5c5451588a31441e35165ab6f6219c45e80aca6fe2509c810" - } - ], - "leaf": { - "value": "0x2876e7a2824e1e402b79ebe60f043e0e395815ba8019fe051ad9583b66c98e1c", - "sibling": "0x7e39fabc0b83861f7bfd91792d3f7d3befb712370f34bb9d479907324238d21c" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x31f2125c021fb94759cb1993a2f07eae01792311e13f209441ff8969cf1eb835", - "poseidonCodeHash": "0x1cafbbe8f01ed4c292d9a27be523919a274441a076b20c7d713d192dbe6485c2", - "codeSize": 2151 - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x31f2125c021fb94759cb1993a2f07eae01792311e13f209441ff8969cf1eb835", - "poseidonCodeHash": "0x1cafbbe8f01ed4c292d9a27be523919a274441a076b20c7d713d192dbe6485c2", - "codeSize": 2151 - } - ], - "stateKey": "0x02743efb8eb9d512d331c64c8d2ffe6db01d0fae2c1e8ebe30f439f7397b9c24", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x7258f0903478c9042eff85a0e865232ad7230221143941a8a63c6d03e169a91f", - "leaf": { - "value": "0xc1d3ace32cc2d848232f35835a3283c591f2901c32530f0611e7f6cd8d350619", - "sibling": "0xc30f166d01b3d43cc9a5e56a2cf59cb00052486f2eb6103eba3ef47d456d3c0a" - } - }, - { - "pathPart": "0x0", - "root": "0x399224d90ce8e906c5210eec5e825b9403d69907498f038172b84d9200f6dc00", - "path": [ - { - "value": "0xfcce149fe14a0a13869937aec64382107ced9dad8ff035a0496c408669d65e10", - "sibling": "0x7258f0903478c9042eff85a0e865232ad7230221143941a8a63c6d03e169a91f" - } - ], - "leaf": { - "value": "0x2270f75cea39606730ddee845b6df5ee0c1d4a03c2b2ac320eb75d5a5991a41a", - "sibling": "0x02743efb8eb9d512d331c64c8d2ffe6db01d0fae2c1e8ebe30f439f7397b9c24" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", - "value": "0x000000000000000000000000a4871db5152adcfae2fc849afa40a6ee6f59eb54" - } - ] -} diff --git a/tests/dual_code_hash/trace_3.json b/tests/dual_code_hash/trace_3.json deleted file mode 100644 index 344d8586..00000000 --- a/tests/dual_code_hash/trace_3.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "address": "0x03144cee638a4ec6ecc33938c189d2fdc8ea138d", - "accountKey": "0xa2043f8414c90c874f8070a98fc7825e1a2cf83b1e2d82d7d9dd52bae62c830b", - "accountPath": [ - { - "pathPart": "0x0", - "root": "0x66d44100da774c7ca0d4f911aca6a341304cb0f05cf8ce503d8aa2fa53e92f0a", - "path": [ - { - "value": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930", - "sibling": "0x3e60b00a8efbac7e3b2fccaea906db1c1833ac28f6a68bc186116c82bb231e14" - } - ], - "leaf": { - "value": "0x42f1a2763b9d0d92764b7762c254c0384fe686cb8cf6972dfe01b0cda688a613", - "sibling": "0x1c6a7c2d09d7f187cbe689521ae1ee4aff9e86d93ec86f88e8c90180679aaf0c" - } - }, - { - "pathPart": "0x2", - "root": "0x28f0d9f43c567a3ca8a109fe80352efa98f5f5f39ee43fa78a4d2afdb9e2be1a", - "path": [ - { - "value": "0x2f0c75bda96f3819aa88fe596a93a5ae91309d6fe9823b1e0486cc5345930925", - "sibling": "0x3e60b00a8efbac7e3b2fccaea906db1c1833ac28f6a68bc186116c82bb231e14" - }, - { - "value": "0xcc6dbfae415a4f9bc3db89bb2da22dea91482a9533ef8d7c522098e77ffdc914", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xa2043f8414c90c874f8070a98fc7825e1a2cf83b1e2d82d7d9dd52bae62c830b" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/traces_1.json b/tests/dual_code_hash/traces_1.json deleted file mode 100644 index c68400d5..00000000 --- a/tests/dual_code_hash/traces_1.json +++ /dev/null @@ -1,1131 +0,0 @@ -[ - { - "address": "0x0000000000000000000000000000000000000003", - "accountKey": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27", - "accountPath": [ - { - "pathPart": "0x100c", - "root": "0x976d9b8f8dd409f6cd85085a27acf6a2167a1559a54b4cd03dcdb5982b638103", - "path": [ - { - "value": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b", - "sibling": "0xf3997572170e697043e253e6b93b8a5b6751fdf6ebaf9c1ce0a841890e8b7e26" - }, - { - "value": "0xab42a16b09949b69b3853bc4b4f20bd6540e55740f67a5682df9d82dcbd60102", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0xabff58f09a971dfda653d9d72ab168f3cf46acf4d035838864c9bf50680faa01", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x352106590be53c36a656986131e846d43f21dd927d98176de2a0d2dbc3391116", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa0cec652993568f2e2ac61d3a9b618ef2997d003a7832645572d5a707c69e81b", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x21fc453e6d06aaa4019660d273c227e3eb824c0676c8c71dcc5f2bbb04dd4b1c", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xcf2727dc80c3bce857403b51a799bf1d5510223754ef14b1e084a302eb39e727", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xee1b587a38317d3c9acdf2897d23c9afe251c5a53259b21210a30dc7dfa9ac00", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xef75e29ebe1192668cd6cfde92badb22075ce50b1d8339b181774309bc087622", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x25e9cf319d55493aed194fc99c3497b04ba84ac15581eae1aa763057be450f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7f60672209b4bc79386cd46e00a791263d6e4483a2aec413fdfaf6a0e3b3a200", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x35953c2f85df5291d424bed9eade92f6189194bd5c6e9f00d8f062130fd2eb11", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa01429a864fef063a153fcdb1d32599bd31af1cb7915c21eae4359eb2adc110d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0x6a16f04a62ec3b24db57779883d414ffee9bec024cbadee4c330a812db14f71f", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - }, - { - "pathPart": "0x100c", - "root": "0x976d9b8f8dd409f6cd85085a27acf6a2167a1559a54b4cd03dcdb5982b638103", - "path": [ - { - "value": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b", - "sibling": "0xf3997572170e697043e253e6b93b8a5b6751fdf6ebaf9c1ce0a841890e8b7e26" - }, - { - "value": "0xab42a16b09949b69b3853bc4b4f20bd6540e55740f67a5682df9d82dcbd60102", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0xabff58f09a971dfda653d9d72ab168f3cf46acf4d035838864c9bf50680faa01", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x352106590be53c36a656986131e846d43f21dd927d98176de2a0d2dbc3391116", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa0cec652993568f2e2ac61d3a9b618ef2997d003a7832645572d5a707c69e81b", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x21fc453e6d06aaa4019660d273c227e3eb824c0676c8c71dcc5f2bbb04dd4b1c", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xcf2727dc80c3bce857403b51a799bf1d5510223754ef14b1e084a302eb39e727", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xee1b587a38317d3c9acdf2897d23c9afe251c5a53259b21210a30dc7dfa9ac00", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xef75e29ebe1192668cd6cfde92badb22075ce50b1d8339b181774309bc087622", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x25e9cf319d55493aed194fc99c3497b04ba84ac15581eae1aa763057be450f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7f60672209b4bc79386cd46e00a791263d6e4483a2aec413fdfaf6a0e3b3a200", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x35953c2f85df5291d424bed9eade92f6189194bd5c6e9f00d8f062130fd2eb11", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa01429a864fef063a153fcdb1d32599bd31af1cb7915c21eae4359eb2adc110d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0x6a16f04a62ec3b24db57779883d414ffee9bec024cbadee4c330a812db14f71f", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x24d4184df897fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 0, - "balance": "0x24d4184df897fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x2222bc0df723f134a40abb28e43ff8e95ee9d811", - "accountKey": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x976d9b8f8dd409f6cd85085a27acf6a2167a1559a54b4cd03dcdb5982b638103", - "path": [ - { - "value": "0xf3997572170e697043e253e6b93b8a5b6751fdf6ebaf9c1ce0a841890e8b7e26", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x3122087872184b57dbba2da52e60ab8542e83ecf12af6e46e1ce1385ca801a08", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x1712cf69caae5e2736ce08d6566c14ef97ad7b2dc1d6622d27cf2dc8f8e92c2a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x03f909e60063941f66bea837d2a282e44ccb96e30bdc0fa3a0bfdd84eae66b2a", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0xb60859aba8271d2449388a9573216a5a1a9cffc4ecf68b28a4d26b0f46b8dc20", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - }, - { - "pathPart": "0x3", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x7b454dc902bac42ac469f5a81104019dc355ba145be02dbf1292a317a8ce5814", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x9f4878ebd2093b589972730a3a64a1f0c6af264a2e4e5d75955bf240f507f32d", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x075c067070b46e8ccd6a4527e1afdc70af4f48002ba6285806421c89b46e0d19", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - } - ], - "accountUpdate": [ - { - "nonce": 23, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 24, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x9", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xd0848ab2fa6542c4a7710b9c329b6fbe565dff1d2f84a2031e52064be941af02", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0xb8fb8f6715a371aa46fe067bc54b38c7faa4a32bf3b7f49424fba785bba72c2f", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x3072d32d6ebec783d7343e40c1368d27b6987c9be8ad9ac6eea9ec606f921529", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - } - ], - "leaf": { - "value": "0xec75e8f8f70c305d7aa61fd24d1ab2eeac2796d0db4ff90a178a4c946ee2a427", - "sibling": "0x097e027aff9f2997c1e434709b73b04615ad3de2ae1e8488ddc670d7078d8b0c" - } - }, - { - "pathPart": "0x49", - "root": "0xdfb0534fada550b2cfd0bafc70341b4affd7672b6053396cd880adb234f2c625", - "path": [ - { - "value": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x0000000000000000000000000000000000000003", - "accountKey": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27", - "accountPath": [ - { - "pathPart": "0x100c", - "root": "0xdfb0534fada550b2cfd0bafc70341b4affd7672b6053396cd880adb234f2c625", - "path": [ - { - "value": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b", - "sibling": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c" - }, - { - "value": "0xab42a16b09949b69b3853bc4b4f20bd6540e55740f67a5682df9d82dcbd60102", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0xabff58f09a971dfda653d9d72ab168f3cf46acf4d035838864c9bf50680faa01", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x352106590be53c36a656986131e846d43f21dd927d98176de2a0d2dbc3391116", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa0cec652993568f2e2ac61d3a9b618ef2997d003a7832645572d5a707c69e81b", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x21fc453e6d06aaa4019660d273c227e3eb824c0676c8c71dcc5f2bbb04dd4b1c", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xcf2727dc80c3bce857403b51a799bf1d5510223754ef14b1e084a302eb39e727", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xee1b587a38317d3c9acdf2897d23c9afe251c5a53259b21210a30dc7dfa9ac00", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xef75e29ebe1192668cd6cfde92badb22075ce50b1d8339b181774309bc087622", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x25e9cf319d55493aed194fc99c3497b04ba84ac15581eae1aa763057be450f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7f60672209b4bc79386cd46e00a791263d6e4483a2aec413fdfaf6a0e3b3a200", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x35953c2f85df5291d424bed9eade92f6189194bd5c6e9f00d8f062130fd2eb11", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa01429a864fef063a153fcdb1d32599bd31af1cb7915c21eae4359eb2adc110d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0x6a16f04a62ec3b24db57779883d414ffee9bec024cbadee4c330a812db14f71f", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - }, - { - "pathPart": "0x100c", - "root": "0xd0e6008a657cf85e49a4fd1a4092d96670dc59a1f0292208b683b6bdbb3fe901", - "path": [ - { - "value": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d", - "sibling": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c" - }, - { - "value": "0x73e827974ed1b53d8c2ba912073a6861835345e59f3a025d2742bfed9a1a9a2e", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0x0ddff570d09e6113b133188f2f1df92bc3388b862bce3d6445d81a52ae720b0b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x6c8bc28bd117e48e5365d5ce1265792adce9325cba6c6dca556dd83654db7909", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa6c33eea686439363d893449b9bf906668a3e675652093539b5fce8736d8a115", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x5d5ba91a916b6252990a66678200556352dbf56c27a63a28c243cad6d7867c01", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xb6f6bac80455ca5c0249603995cf69d542d3a26ef506439685da11c71d204b27", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x62e795e15b181bbc0e5aa5ebd69b4363ddebd0d38f0d0c7e8f50a5dd710e570c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb7d0805227834003ad20cd7a7b26ae8c4000a5637ecacf08b0f327297571ac0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7147a38238ba290a30f16ea66e6b375b817fb7d0b7069459f7a07113598d9428", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xfbb6d9285fae364b19fb0f419fab7578a8e1e37a60e57052d54de3f51b95f510", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0e66dbaf90f096cbad57bac540e5bb1f011340c36de4eac86da1227a995d191d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x58631793e6ddf46b3cbae330fe9e5fbdda21df473a5c7c9099293dd701d6931d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0xa1c1890cab795f78539e8c24bf8dcdcc99c16bf2b845da605bd1509ea4fb8b12", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x24d4184df897fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 0, - "balance": "0x14aec1a4ca9e7fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x2222bc0df723f134a40abb28e43ff8e95ee9d811", - "accountKey": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0xd0e6008a657cf85e49a4fd1a4092d96670dc59a1f0292208b683b6bdbb3fe901", - "path": [ - { - "value": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911", - "sibling": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730" - }, - { - "value": "0x7b454dc902bac42ac469f5a81104019dc355ba145be02dbf1292a317a8ce5814", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x9f4878ebd2093b589972730a3a64a1f0c6af264a2e4e5d75955bf240f507f32d", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x075c067070b46e8ccd6a4527e1afdc70af4f48002ba6285806421c89b46e0d19", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - }, - { - "pathPart": "0x3", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20", - "sibling": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730" - }, - { - "value": "0x76b56bc7cd58dd56f6efbb8e731f828f959b02cc092a281b2599197a58870513", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x68e12ec762b95b8e5c889bb4ab352fa6c89d00d60619007c38d794aabc06c422", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x64b6dfac230a48536215c6a3154de0d89d9753bdaf5af20a9580dedf45c44f2c", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - } - ], - "accountUpdate": [ - { - "nonce": 24, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 24, - "balance": "0x36347ec1ab91f61805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x49", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - }, - { - "pathPart": "0x49", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x0000000000000000000000000000000000000003", - "accountKey": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27", - "accountPath": [ - { - "pathPart": "0x100c", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d", - "sibling": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d" - }, - { - "value": "0x73e827974ed1b53d8c2ba912073a6861835345e59f3a025d2742bfed9a1a9a2e", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0x0ddff570d09e6113b133188f2f1df92bc3388b862bce3d6445d81a52ae720b0b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x6c8bc28bd117e48e5365d5ce1265792adce9325cba6c6dca556dd83654db7909", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa6c33eea686439363d893449b9bf906668a3e675652093539b5fce8736d8a115", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x5d5ba91a916b6252990a66678200556352dbf56c27a63a28c243cad6d7867c01", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xb6f6bac80455ca5c0249603995cf69d542d3a26ef506439685da11c71d204b27", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x62e795e15b181bbc0e5aa5ebd69b4363ddebd0d38f0d0c7e8f50a5dd710e570c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb7d0805227834003ad20cd7a7b26ae8c4000a5637ecacf08b0f327297571ac0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7147a38238ba290a30f16ea66e6b375b817fb7d0b7069459f7a07113598d9428", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xfbb6d9285fae364b19fb0f419fab7578a8e1e37a60e57052d54de3f51b95f510", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0e66dbaf90f096cbad57bac540e5bb1f011340c36de4eac86da1227a995d191d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x58631793e6ddf46b3cbae330fe9e5fbdda21df473a5c7c9099293dd701d6931d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0xa1c1890cab795f78539e8c24bf8dcdcc99c16bf2b845da605bd1509ea4fb8b12", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - }, - { - "pathPart": "0x100c", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d", - "sibling": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d" - }, - { - "value": "0x73e827974ed1b53d8c2ba912073a6861835345e59f3a025d2742bfed9a1a9a2e", - "sibling": "0x14ab1b91cc93e65e9254f3e45f7bc6cb440f33af8d83adb798d9098955e70c08" - }, - { - "value": "0x0ddff570d09e6113b133188f2f1df92bc3388b862bce3d6445d81a52ae720b0b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x6c8bc28bd117e48e5365d5ce1265792adce9325cba6c6dca556dd83654db7909", - "sibling": "0xaa0b87f6a9fd55679b814499350912a4973f3475a9853e25c3b220651003ab02" - }, - { - "value": "0xa6c33eea686439363d893449b9bf906668a3e675652093539b5fce8736d8a115", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x5d5ba91a916b6252990a66678200556352dbf56c27a63a28c243cad6d7867c01", - "sibling": "0x158d149ed4efa40a96cedb52849f4ede9067c1e166a441db42b24b962ced3008" - }, - { - "value": "0xb6f6bac80455ca5c0249603995cf69d542d3a26ef506439685da11c71d204b27", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x62e795e15b181bbc0e5aa5ebd69b4363ddebd0d38f0d0c7e8f50a5dd710e570c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb7d0805227834003ad20cd7a7b26ae8c4000a5637ecacf08b0f327297571ac0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7147a38238ba290a30f16ea66e6b375b817fb7d0b7069459f7a07113598d9428", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xfbb6d9285fae364b19fb0f419fab7578a8e1e37a60e57052d54de3f51b95f510", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0e66dbaf90f096cbad57bac540e5bb1f011340c36de4eac86da1227a995d191d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x58631793e6ddf46b3cbae330fe9e5fbdda21df473a5c7c9099293dd701d6931d", - "sibling": "0x3fe7728369703d1ed838a500416a751ca581c2f03072fc6bb6a070c3d8b24508" - } - ], - "leaf": { - "value": "0xa1c1890cab795f78539e8c24bf8dcdcc99c16bf2b845da605bd1509ea4fb8b12", - "sibling": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27" - } - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x14aec1a4ca9e7fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 0, - "balance": "0x14aec1a4ca9e7fb", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x2222bc0df723f134a40abb28e43ff8e95ee9d811", - "accountKey": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20", - "sibling": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730" - }, - { - "value": "0x76b56bc7cd58dd56f6efbb8e731f828f959b02cc092a281b2599197a58870513", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x68e12ec762b95b8e5c889bb4ab352fa6c89d00d60619007c38d794aabc06c422", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x64b6dfac230a48536215c6a3154de0d89d9753bdaf5af20a9580dedf45c44f2c", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - }, - { - "pathPart": "0x3", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20", - "sibling": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730" - }, - { - "value": "0x76b56bc7cd58dd56f6efbb8e731f828f959b02cc092a281b2599197a58870513", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x68e12ec762b95b8e5c889bb4ab352fa6c89d00d60619007c38d794aabc06c422", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x64b6dfac230a48536215c6a3154de0d89d9753bdaf5af20a9580dedf45c44f2c", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - } - ], - "accountUpdate": [ - { - "nonce": 24, - "balance": "0x36347ec1ab91f61805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 24, - "balance": "0x36347ec1ab91f61805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x49", - "root": "0x6713c01e4a9034d9482f7457750e94a5df32c725094f520785a4a70385054618", - "path": [ - { - "value": "0x8e4cb1766777def34e67ff64ad4d3db0c8bba35b5da32ac48a288bae2a6a5d1d", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - }, - { - "pathPart": "0x49", - "root": "0xfd2335e2f888e8c5dfdbb530922d1e60f7f1f8d05fcfd1be70d6105ed997d10b", - "path": [ - { - "value": "0xf731aa01b7c51a2b58d5c711e5a25e267d6aa7fbadbfcd49605b221524ef491b", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0xf07dc7ecbace3481783bb88f20c6483440a9883fa2be109a442c7fe04e922e1e", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0x11fb959cc4fb320ab7da0ee9d542a1e10354bbe693de9379989c15d326f80613", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x12b21565599cdc057f179e1da2230a3931767ed7dad1178c615e894441e4101b", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0xbdb92197f4a47801f449efd361b2b623f0342526fa26bd2bda273f54fc06bb0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1abb133842ac2733876cf58f5940ec3ac5eebb37b130bad27fe530ac8aca2823", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x92622166ffdc83a97c007c017c4ee9d85891533600bf3637eafd1df8257a5421", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x09a26a9c3a9c8831a9757f2af4debf75a939ab669fc0f29fac7da0fb6654e210", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0xf19e77dd0e9aa323679e040825936aac304c9b954c951071b45bcfe0bb5cb48c", - "poseidonCodeHash": "0x200bf85ccc76d9fc7e58db1a8c051a93189ceb9f358534c9e6d618c52cd10f7e", - "codeSize": 18864 - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x49", - "root": "0xfd2335e2f888e8c5dfdbb530922d1e60f7f1f8d05fcfd1be70d6105ed997d10b", - "path": [ - { - "value": "0xf731aa01b7c51a2b58d5c711e5a25e267d6aa7fbadbfcd49605b221524ef491b", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0xf07dc7ecbace3481783bb88f20c6483440a9883fa2be109a442c7fe04e922e1e", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0x11fb959cc4fb320ab7da0ee9d542a1e10354bbe693de9379989c15d326f80613", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x12b21565599cdc057f179e1da2230a3931767ed7dad1178c615e894441e4101b", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0xbdb92197f4a47801f449efd361b2b623f0342526fa26bd2bda273f54fc06bb0e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1abb133842ac2733876cf58f5940ec3ac5eebb37b130bad27fe530ac8aca2823", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x92622166ffdc83a97c007c017c4ee9d85891533600bf3637eafd1df8257a5421", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x09a26a9c3a9c8831a9757f2af4debf75a939ab669fc0f29fac7da0fb6654e210", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - }, - { - "pathPart": "0x49", - "root": "0x999f069712a4e886c212576431d485dd7addf36f2c1a94b2c71e0c86b9fd2c10", - "path": [ - { - "value": "0x33e32ce57dbb18450d7280f08a5467721850a7710ed18fb1ca2d61be14cd6316", - "sibling": "0xd56b17d1258d8675cd64fa2540cb3275b00c92823c5d3a69e6d207f955c38c2d" - }, - { - "value": "0x3c6cfae92237dbed41d0e5c3038cd47ca8a3215e926f0280b76bd5130435060b", - "sibling": "0xa404f7a083e9b6f4a3ca1c9b9cdae1eac37fedd278771b5eef55f22c533c0b20" - }, - { - "value": "0x6c347cefdf87b2ccc682c88ecce0261b2a62ddacf0cf418a2e011b2cdf1a0e2d", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0xb3dcd2f5d3587162cb3530e72e97de42b84655b6cf3c511f65e265e3070dac0a", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x62d647b695ca267c2feabf0d0aea533cd53b1a8e87d2b645856c3df7f33c3202", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x5dacdaaa271b4ee41214c068c280d32b209d2f3fefadb153ef33a1e3db99e127", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x3e94e2df101258d7810833bd4292f1a341c7a5fcde1da42a338c5af90a35152d", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x3cc3b2cae1772c3bc3c1d0a2e5890ec59a9a988be6a2a05a2a972554aaf3191b", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0xf19e77dd0e9aa323679e040825936aac304c9b954c951071b45bcfe0bb5cb48c", - "poseidonCodeHash": "0x200bf85ccc76d9fc7e58db1a8c051a93189ceb9f358534c9e6d618c52cd10f7e", - "codeSize": 18864 - }, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0xf19e77dd0e9aa323679e040825936aac304c9b954c951071b45bcfe0bb5cb48c", - "poseidonCodeHash": "0x200bf85ccc76d9fc7e58db1a8c051a93189ceb9f358534c9e6d618c52cd10f7e", - "codeSize": 18864 - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0x29cfd6a3669739ad50f0cbc14b52055932d7a124b30e8cf71092e14c86d0331f", - "leaf": { - "value": "0x55276c83d8d4e65f29d6dc6b793796b204aa008547cda5e62f4a53ccd92d4200", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000002222bc0df723f134a40abb28e43ff8e95ee9d811" - } - ] - } -] diff --git a/tests/dual_code_hash/type_1_empty_account.json b/tests/dual_code_hash/type_1_empty_account.json deleted file mode 100644 index 3ff36059..00000000 --- a/tests/dual_code_hash/type_1_empty_account.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000003", - "accountKey": "0x0c102f95ca61f758d124b42f5f0cfc4fb56d0869c173e0fefd0fcea0c113ce27", - "accountPath": [ - { - "pathPart": "0x0", - "root": "0x66d44100da774c7ca0d4f911aca6a341304cb0f05cf8ce503d8aa2fa53e92f0a", - "path": [ - { - "value": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930", - "sibling": "0x3e60b00a8efbac7e3b2fccaea906db1c1833ac28f6a68bc186116c82bb231e14" - } - ], - "leaf": { - "value": "0x42f1a2763b9d0d92764b7762c254c0384fe686cb8cf6972dfe01b0cda688a613", - "sibling": "0x1c6a7c2d09d7f187cbe689521ae1ee4aff9e86d93ec86f88e8c90180679aaf0c" - } - }, - { - "pathPart": "0x0", - "root": "0x66d44100da774c7ca0d4f911aca6a341304cb0f05cf8ce503d8aa2fa53e92f0a", - "path": [ - { - "value": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930", - "sibling": "0x3e60b00a8efbac7e3b2fccaea906db1c1833ac28f6a68bc186116c82bb231e14" - } - ], - "leaf": { - "value": "0x42f1a2763b9d0d92764b7762c254c0384fe686cb8cf6972dfe01b0cda688a613", - "sibling": "0x1c6a7c2d09d7f187cbe689521ae1ee4aff9e86d93ec86f88e8c90180679aaf0c" - } - } - ], - "accountUpdate": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/dual_code_hash/type_2_empty_account.json b/tests/dual_code_hash/type_2_empty_account.json deleted file mode 100644 index 901b9916..00000000 --- a/tests/dual_code_hash/type_2_empty_account.json +++ /dev/null @@ -1,55 +0,0 @@ - { - "address": "0x4dc7d71e240e1a5aa71e612caf5d097274f8237b", - "accountKey": "0xee005ff59199cf501f06c351ddf1c5662f20667c15f90719611729ca500cc919", - "accountPath": [ - { - "pathPart": "0x6", - "root": "0x5b10977c63adb88eb3a95d9e285e22ad9d63603cb715a6499f337e5d724d8200", - "path": [ - { - "value": "0xd7f436aa4c5dd1c005f1557a31e9848ab002ed68304bb7c9ad5ccdf4e19ef318", - "sibling": "0x6bc8538a07e6363f1f785950db27c590b1f4b01fc9b9a3b45cff46ec9036f10d" - }, - { - "value": "0xb24b73cc4fc38ba9a3f1bd2e0729cb2578c58143103e1d52bf94f53b694fc208", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0xf4f230d35710863f943333327fe14fbe3ceaa6f523b016eeb4aab06c41c92528" - } - ] - }, - { - "pathPart": "0x6", - "root": "0x5b10977c63adb88eb3a95d9e285e22ad9d63603cb715a6499f337e5d724d8200", - "path": [ - { - "value": "0xd7f436aa4c5dd1c005f1557a31e9848ab002ed68304bb7c9ad5ccdf4e19ef318", - "sibling": "0x6bc8538a07e6363f1f785950db27c590b1f4b01fc9b9a3b45cff46ec9036f10d" - }, - { - "value": "0xb24b73cc4fc38ba9a3f1bd2e0729cb2578c58143103e1d52bf94f53b694fc208", - "sibling": "0x39ba81825de52c95e83a28704e621db08c23a93ee082b845eabc1d41ee1b2930" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0xf4f230d35710863f943333327fe14fbe3ceaa6f523b016eeb4aab06c41c92528" - } - ] - } - ], - "accountUpdate": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/empty_account.json b/tests/empty_account.json deleted file mode 100644 index b38804cb..00000000 --- a/tests/empty_account.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "index": -1, - "address": "0xb36feaeaf76c2a33335b73bef9aef7a23d9af1e3", - "accountKey": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900", - "accountPath": [ - { - "pathPart": "0x35", - "root": "0xd0039d314dc6860d4d26de61c88bd0fbd2e525ec6dfb8f17367079a46302482f", - "path": [ - { - "value": "0x2ccb0213f1c231b89e6a77b5ecdf4000384d1696789cb5d6e2225f145e72b12a", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xd9813f65f456ca49f867b0e58e4479e9a47e027ddea7dd223fa949b4da153630", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xbddc56a9ec942424e0ae231a99833edd8966e7bdf54578aa4e7f09076cb3a81c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x59de88bfc172c07b3669ac542cdf3953525ec7dc0b2551b8a573f76f23762311", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x5deee444162302cce9d272e8ae9508508d6a7214da22d3933905d160cb1fcc25", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - } - ], - "leaf": { - "value": "0x8085117d35215a915c1b5b7345950dadff5536c9b33365097859a3790f96091e", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0xf5", - "root": "0xb29de8e07aebe52b20347239bb2423c1e21895df9065843dddef73935f33e628", - "path": [ - { - "value": "0x56f6d0beb5cb5df445249b71e86dd06a837d1feddee8851ac4218a621d777c09", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x8a992699e34a191779fcfc495309be890ad65d30832de5ad9f82fff7c328d90b", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xe647e80c1c39a729e5c2a31a63214a42a83ad8231d4d11c23f360cb8c224120f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1c85c1763544d6e328083b5b81cd809294008419a0b0d2e5a28de4a2cc016e08", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x20f456e322d1102bc861fb3eec171ef0eb61620f62f82349a958f23e50c9d319", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x17f9b4378034e1f0521bfdba975fec821e2454ce4e4251dc384851ff2f62991a", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x19bf403fa00119e44934ed37c1b1277138a60d087bc6ae7ca4adba0c5d78782a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7368c8ebabb8fd55758c492232e6302b66efe9ce03c3eb22e9b7540eb15c8a1c", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x33c5435c783d711eca3cb21179f8afaf6dd0be8ca0f066d0daace28b17fc281d", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] -} diff --git a/tests/empty_storage.json b/tests/empty_storage.json deleted file mode 100644 index b7ea2650..00000000 --- a/tests/empty_storage.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "index": 395, - "address": "0xb36feaeaf76c2a33335b73bef9aef7a23d9af1e3", - "accountKey": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900", - "accountPath": [ - { - "pathPart": "0xf5", - "root": "0xb29de8e07aebe52b20347239bb2423c1e21895df9065843dddef73935f33e628", - "path": [ - { - "value": "0x56f6d0beb5cb5df445249b71e86dd06a837d1feddee8851ac4218a621d777c09", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0x8a992699e34a191779fcfc495309be890ad65d30832de5ad9f82fff7c328d90b", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0xe647e80c1c39a729e5c2a31a63214a42a83ad8231d4d11c23f360cb8c224120f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1c85c1763544d6e328083b5b81cd809294008419a0b0d2e5a28de4a2cc016e08", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x20f456e322d1102bc861fb3eec171ef0eb61620f62f82349a958f23e50c9d319", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x17f9b4378034e1f0521bfdba975fec821e2454ce4e4251dc384851ff2f62991a", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x19bf403fa00119e44934ed37c1b1277138a60d087bc6ae7ca4adba0c5d78782a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7368c8ebabb8fd55758c492232e6302b66efe9ce03c3eb22e9b7540eb15c8a1c", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x33c5435c783d711eca3cb21179f8afaf6dd0be8ca0f066d0daace28b17fc281d", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - }, - { - "pathPart": "0xf5", - "root": "0xf81434193585628402d94a1c8324febc116379a5f823de900971c3d023e3a425", - "path": [ - { - "value": "0x0dbd566835cc5956ad17c4990d5abe65ae7c5bb9e96e2336d75d6aa79ba5b91b", - "sibling": "0x923ad76a4f3e4c63049db2818456f9037e49b5b467292e893b8fc3afe1cdd019" - }, - { - "value": "0xae84e740e7117c6f61e700edd4dccdaed428cd2e9fecf9703c3d7d963078592c", - "sibling": "0xb0dc4e59b50d8c8752055382e97d68b87442e6f890f91c6679044cb8c40cbf0a" - }, - { - "value": "0x632ea689b4f2d253568224fe7683bae1c44d928eb137c445b4ffaa12d6dc950e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf38f2dc235149fb37d735127601140d1a9179cdbb8f89d1c5979ab57b11e0406", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x27940a776a51c945fb298f4d1db8cff31a2faec578a285142cdfb28f5eebfb0d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7cd23dd92673ff99262db645a17f25347481728771ab1fcf3f9762cfdaa2f30d", - "sibling": "0x1b300e21fc3c84d681ba0ad494c5b04a4c7ff1c8e876742710490a7270dfac23" - }, - { - "value": "0x29ff7d5ee837f053fd79cc5da2da02ae51f2e0c60689a841fa2483fc2c029429", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x729b39ce766b7397ce2087aecf1520691b2698bb3020013be6f3d17ca0c38417", - "sibling": "0x46aa07e37397ccd777b8120f61db750760d59343fe918669371fa15a869f1728" - } - ], - "leaf": { - "value": "0x8a18959fbf133ad717b7af774ae0881ff5272b1e251ca118850968c2336b6909", - "sibling": "0xf59112e5670628682b1ec72767b1a6153096d47742e1d9455c175a955211e900" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "stateKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0xe2787d2518803e182b9f2993cc114930137244fe9086982afa1bd624b1f6b921", - "leaf": { - "value": "0x5f67505ad420c9a06451de0be9e2c5367d7164d875f08ea181c64b2b280b452f", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "value": "0x00000000000000000000000005fdbdfae180345c6cff5316c286727cf1a43327" - } - ] -} diff --git a/tests/generated/balance_update_existing.json b/tests/generated/balance_update_existing.json deleted file mode 100644 index 35fea37b..00000000 --- a/tests/generated/balance_update_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0xde7c1a6bd50c72a38380ba48b1f0b5f4f09569bc6c7ba92b797ed13e42039005", - "leaf": { - "value": "0x3b857f1d74e745ed68b98c1fa528f60a86acbd7b0485bdef8846d97a214e8217", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0x78c8b2c45518052aa33fda8a233d810bfb324247620ef21950b50bfbef4e3107", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x56423216898a631cd839064806626e26cadec1a5f1fc054b39cf36f48893b42d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0f88d9b447053acefdad6d389912c102411f50a36e6ed39311e90c32eb10390e", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xf43935955a38be73e5507f885822483339cd3a3e3f74d7a9b198842ec79d842e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x537b2b01db958f5479f7e4d656cd0d11a39173246f0400ccfa903a0988046c11", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0x61698e7b22ab359691df18a6eee4526a9c2bd17882108152c9537955f36db226", - "leaf": { - "value": "0x4a5fa37d0cb8dbef45d5b39d67d5a3d81c37365696d65ee7effdb5ea62019921", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0x06f30094bb962155fbc2a7529fa247c56865a75d985f3ee01189a6f17ae7c723", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc02aa2a0a71d4fd465a8347f53f9385591609651915f09e220c8d19652475915", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd5e1b7b1063460eb11e6b8b6c4e6cc5c7c3e60e3dbe4ca859411701b763b9016", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x7c3c7502f4ea29f3e1cb7f972403e6541d4506b3bae0d4dc92765531f5ab6113", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x45ef29c5b35f94102734a6a7d213cd432f38a20bfa1fa25e9e5a05c691278f06", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0xffffffffffffffff", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 0, - "balance": "0xfffbffffffffffff", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/balance_update_type_1.json b/tests/generated/balance_update_type_1.json deleted file mode 100644 index e41fa9ce..00000000 --- a/tests/generated/balance_update_type_1.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "address": "0x00ca000000000000000000000000000000000000", - "accountKey": "0x640be58fdcdafa2cf0c6c2d7105559b8e7743cfe38f4797cdb5536c36866a70d", - "accountPath": [ - { - "root": "0x61e21e0ea0566c3d5d9024390dc6dbe4399442c36295c300ae12f664e862d10a", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "path": [ - { - "value": "0x757d185b1cbe705394982e4d5fa55f5c5c755d8ac236aa82b6b04669c6b0b505", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe08fcbe695e58279c5c10fd1878f009b47b5ed76f20ca0831705d0e6f50b1715", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe1fd9c68c5b0ebec2cb11a0957326a058a6219545f7eee96bb60f9d2f0db9911", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - }, - { - "value": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x016defaced819fc481f8dbc47ce09514e2cf836dbda15d67d16cfd26ba077c0c", - "leaf": { - "value": "0x3b857f1d74e745ed68b98c1fa528f60a86acbd7b0485bdef8846d97a214e8217", - "sibling": "0x640be58fdcdafa2cf0c6c2d7105559b8e7743cfe38f4797cdb5536c36866a70d" - }, - "path": [ - { - "value": "0xb13fbf1d75988f555b67f137b5f59f4c1fb5978f6c2b4d6711d0e41b73c44405", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0357dcafb87f241bc8ac47b395f008ba89a9328ec9f5a7c9c0538adf0e64de03", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x057ee537319d723546eb4ab40226228570bf313e44e77b233fb96ead5a8f6519", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - }, - { - "value": "0x0f5d7ad9c0603c59c4191269d0b6fea738d44961e304a1136d6e31040df66109", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x84ca445cbb713c13b156d9ba46e6e4745055ed3ee0ced4749fde39c92036b518", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xbaa271001a9dab6408f94aeb3bfc278d454a11d6dc89f93b9b619c0534f4af22", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x86ff9b84b31f2632e8d4cade2f1e4257fc8b9d03439236d2b2590ea75c489228", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x5e62f8196783017365d68a5355692fc695ae48e626d0c809357870708581fb07", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7ddcc7564e84bb29ff019bc12cc852f6e6f02ad11b08d9507f731bf8729a7d03", - "sibling": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b" - } - ], - "pathPart": "0x164" - } - ], - "accountUpdate": [ - null, - { - "nonce": 0, - "balance": "0xffffffffffffffff", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/balance_update_type_2.json b/tests/generated/balance_update_type_2.json deleted file mode 100644 index 45d02b41..00000000 --- a/tests/generated/balance_update_type_2.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "address": "0x4545454545454545454545454545454545454545", - "accountKey": "0xca236804a59838839b82c427f57361178009a0b40457d30d1a8a2045f19a9021", - "accountPath": [ - { - "root": "0xe31bf661f1d633c219628c04861676967fc56031c70bca0e5c5eb31e75ed431a", - "path": [ - { - "value": "0xebd2651e7fd2b47e32c4709e90c3beba43391c0e8a895ff135fdb86a5043991b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x9f0e03219b59896c819401c3cf0ba882d6767f07c6ac98f6e9e8f2c7ec3b072b" - } - ], - "pathPart": "0x2" - }, - { - "root": "0xbb6f41011ebf1e4e339ef914862f1b7ba68381338fa3982e92df85461640b607", - "leaf": { - "value": "0x3b857f1d74e745ed68b98c1fa528f60a86acbd7b0485bdef8846d97a214e8217", - "sibling": "0xca236804a59838839b82c427f57361178009a0b40457d30d1a8a2045f19a9021" - }, - "path": [ - { - "value": "0xce906508a008697c1f0e105d48645b46c3ec0bca6b43c949b0df0168b5204a02", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa7883207192a87978b835e954456a973c40590c92e7f9f214a314311084f5826", - "sibling": "0x9f0e03219b59896c819401c3cf0ba882d6767f07c6ac98f6e9e8f2c7ec3b072b" - } - ], - "pathPart": "0x2" - } - ], - "accountUpdate": [ - null, - { - "nonce": 0, - "balance": "0xffffffffffffffff", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/code_hash_update_existing.json b/tests/generated/code_hash_update_existing.json deleted file mode 100644 index fd7aff23..00000000 --- a/tests/generated/code_hash_update_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0x4f62b41fa1de6797b7431f4a9b241a8fc36d1f88fbef446924102860ba231127", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xf5ee641592936dd724a5ad6bcd14f9a14e82c061446889c8164916c34d4f992f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x73421c0da1ea0088c36102eb88a4575844c303a344e1d7b53dec69de00258e23", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb318f7308509116d435029cdb69c5d748cb7e09ad7580137f65aa593af0d080e", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xe36472370797d4e2a34b7510aa6eacdbf55fd67d7973c5e68e93f2075ca0ae18", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe2b57c9a66839da17fbd53dc23a440a6e84c7cfa6282610ed0afdc0421b9c129", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0x03f7d9d859bc9d6d66a2bc611f4de1bf547f7d529d3eab9a9f56ad973123ab03", - "leaf": { - "value": "0x4db6496ebc0f169d5a5bbff12b498ff4e5d902b82f6a4c3159570a04940a8604", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xd6dcac390df1c707d049128e545d40e01c656b296f45cfabf8a8a87eb33c0b10", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8032993aafa1ab2a5dc56152858fa5d86cbd84f1c353530b9f2293f725a4031c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xde8bb4890dc6c2cf093708975703a1ba743f4da90d08b7e91fc51ff28c6a1328", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x84a1c2feb598658e34bb558cf56f2b8c3a31c944daaebeef0716ad74748a830e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc81f89ec97a64486d8f2528b14a9946a46210a8266f8b1bc742fbc485676f715", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000d4ef09a74c3f", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/code_size_update_existing.json b/tests/generated/code_size_update_existing.json deleted file mode 100644 index a146115f..00000000 --- a/tests/generated/code_size_update_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0x4f62b41fa1de6797b7431f4a9b241a8fc36d1f88fbef446924102860ba231127", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xf5ee641592936dd724a5ad6bcd14f9a14e82c061446889c8164916c34d4f992f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x73421c0da1ea0088c36102eb88a4575844c303a344e1d7b53dec69de00258e23", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb318f7308509116d435029cdb69c5d748cb7e09ad7580137f65aa593af0d080e", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xe36472370797d4e2a34b7510aa6eacdbf55fd67d7973c5e68e93f2075ca0ae18", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe2b57c9a66839da17fbd53dc23a440a6e84c7cfa6282610ed0afdc0421b9c129", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0x5834a108336be319c17f4a7845f256d5bdcff26d1240f695965c77a3fb64c809", - "leaf": { - "value": "0x55c6fd789e0f0b6cb88abea229f46e0a4708975678bb49f18ba925dc73efc728", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0x8abb3a16a7c383125db36616210979c069fbbd27c40f7bcddc790855ac96352e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x4800fe161cbdd404563876db76285fdeca797b1d95a048387b06d006b39aca2f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaa48e3c0257fb0b318a13e311203575ff6d570e2ada315ca8b22b26eb1d74424", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xf8cad049d915a564fff970815b6e538be180160b3375249288d738ecb44fe407", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x6d1df547be932af10a9caed0bd318c35758a0afe4a5c10e56f9d2a4330311102", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 23412341231 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/keccak_code_hash_read_existing.json b/tests/generated/keccak_code_hash_read_existing.json deleted file mode 100644 index eeddec6f..00000000 --- a/tests/generated/keccak_code_hash_read_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0xcae360d722b28382e2f20e2f22bfc97d935842754377295859d30c5450fc1d24", - "leaf": { - "value": "0x7b879d30033234488b13a335e12dd5428ea476a27301d28c8a671cc9fe1bb319", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xcab66cbe55c05b79d0cf95a15ceca5de571c5b9a2cf578cc264fbbd605854227", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf8c0e48db7f1506b34e48d45b1f849f8ad25dccf52ed38ca8bf3f7f3518c0f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb68eed7bc14603db67c0bdea56ddfdd370571e68397de07f8da1c2b787fe830b", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x55f4551bb6d205bbae51fb409d31115e59ac8f4d1503f2472bc256e35c510125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa488dcc454ed846ff6d0fd01ece6d996220ad65048ac1d6c311aee9de0e9e922", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0xcae360d722b28382e2f20e2f22bfc97d935842754377295859d30c5450fc1d24", - "leaf": { - "value": "0x7b879d30033234488b13a335e12dd5428ea476a27301d28c8a671cc9fe1bb319", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xcab66cbe55c05b79d0cf95a15ceca5de571c5b9a2cf578cc264fbbd605854227", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf8c0e48db7f1506b34e48d45b1f849f8ad25dccf52ed38ca8bf3f7f3518c0f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb68eed7bc14603db67c0bdea56ddfdd370571e68397de07f8da1c2b787fe830b", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x55f4551bb6d205bbae51fb409d31115e59ac8f4d1503f2472bc256e35c510125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa488dcc454ed846ff6d0fd01ece6d996220ad65048ac1d6c311aee9de0e9e922", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/keccak_code_hash_update_existing.json b/tests/generated/keccak_code_hash_update_existing.json deleted file mode 100644 index b5b36406..00000000 --- a/tests/generated/keccak_code_hash_update_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0x4f62b41fa1de6797b7431f4a9b241a8fc36d1f88fbef446924102860ba231127", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xf5ee641592936dd724a5ad6bcd14f9a14e82c061446889c8164916c34d4f992f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x73421c0da1ea0088c36102eb88a4575844c303a344e1d7b53dec69de00258e23", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb318f7308509116d435029cdb69c5d748cb7e09ad7580137f65aa593af0d080e", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xe36472370797d4e2a34b7510aa6eacdbf55fd67d7973c5e68e93f2075ca0ae18", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe2b57c9a66839da17fbd53dc23a440a6e84c7cfa6282610ed0afdc0421b9c129", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0xcae360d722b28382e2f20e2f22bfc97d935842754377295859d30c5450fc1d24", - "leaf": { - "value": "0x7b879d30033234488b13a335e12dd5428ea476a27301d28c8a671cc9fe1bb319", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xcab66cbe55c05b79d0cf95a15ceca5de571c5b9a2cf578cc264fbbd605854227", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf8c0e48db7f1506b34e48d45b1f849f8ad25dccf52ed38ca8bf3f7f3518c0f0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb68eed7bc14603db67c0bdea56ddfdd370571e68397de07f8da1c2b787fe830b", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x55f4551bb6d205bbae51fb409d31115e59ac8f4d1503f2472bc256e35c510125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xa488dcc454ed846ff6d0fd01ece6d996220ad65048ac1d6c311aee9de0e9e922", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/nonce_update_existing.json b/tests/generated/nonce_update_existing.json deleted file mode 100644 index 61bc1ca2..00000000 --- a/tests/generated/nonce_update_existing.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": "0x2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "accountKey": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708", - "accountPath": [ - { - "root": "0x4f62b41fa1de6797b7431f4a9b241a8fc36d1f88fbef446924102860ba231127", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0xf5ee641592936dd724a5ad6bcd14f9a14e82c061446889c8164916c34d4f992f", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x73421c0da1ea0088c36102eb88a4575844c303a344e1d7b53dec69de00258e23", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb318f7308509116d435029cdb69c5d748cb7e09ad7580137f65aa593af0d080e", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xe36472370797d4e2a34b7510aa6eacdbf55fd67d7973c5e68e93f2075ca0ae18", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe2b57c9a66839da17fbd53dc23a440a6e84c7cfa6282610ed0afdc0421b9c129", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - }, - { - "root": "0x5a3ed518ba3857ccac40fe213eca8895d23fb7f584e4fe34d758986e38f59f2c", - "leaf": { - "value": "0xe4abe3d0e022c344ab392b46c956d3ce4c23f0d1fb7252d9bf5f3fda84838c05", - "sibling": "0x7888131573444f4c71462edba7496ef473ba878418a310b4f4eb87c09185f708" - }, - "path": [ - { - "value": "0x3ee511a7765578affe41609d83cea78e0ed78fcf9ce36069dfc02c520c616d12", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x34b5dbf80aad267a65e503b30dba98a0b170846b1396bccc386a3a4c1a415422", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xca1369ae7da4a0dff4f733028a3872f7cd9d12b8596e86d48033f6a6505b6927", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0x06a3cd5ecd30261d07b75daf813bcfa0af21609c2f76d0ea9288e3272ce40917", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x234f45d323e92906e8eb41f23755caf73cb9035c728e0ebbf406e30d59ded724", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - } - ], - "pathPart": "0x18" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 213, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/nonce_update_type_1.json b/tests/generated/nonce_update_type_1.json deleted file mode 100644 index aa385cdc..00000000 --- a/tests/generated/nonce_update_type_1.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "address": "0x00ca000000000000000000000000000000000000", - "accountKey": "0x640be58fdcdafa2cf0c6c2d7105559b8e7743cfe38f4797cdb5536c36866a70d", - "accountPath": [ - { - "root": "0x61e21e0ea0566c3d5d9024390dc6dbe4399442c36295c300ae12f664e862d10a", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "path": [ - { - "value": "0x757d185b1cbe705394982e4d5fa55f5c5c755d8ac236aa82b6b04669c6b0b505", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe08fcbe695e58279c5c10fd1878f009b47b5ed76f20ca0831705d0e6f50b1715", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe1fd9c68c5b0ebec2cb11a0957326a058a6219545f7eee96bb60f9d2f0db9911", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - }, - { - "value": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x8e430fb20fd9f129111fedb7ce26d792ed5994cb4a2f86cdc38f5231edc4101b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x640be58fdcdafa2cf0c6c2d7105559b8e7743cfe38f4797cdb5536c36866a70d" - }, - "path": [ - { - "value": "0xfc9c6e82dd2f1de012abd834a4ef11076da63cf1dccae435a54ffb8b3fbdb62e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x255540b8c9781dbd5243c35b2daa69774aac8dc3f1809f8d58c46f3a0afb3905", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x170e1702c8e7282adb91aad4e4735584b41cf9580b12cf18e7458fe128f59227", - "sibling": "0x3a38f3c3a90865873c80ca022b406b81d9feb3bf59707f0b9bcfe7e4024d3417" - }, - { - "value": "0xd9922d88bb5bef9bbf1163cff134d895fea3af50a439e1b88f9dc567a32b3d00", - "sibling": "0xea615108b4731ffafe5db875fb11ff8cbf703ca0e79d845740f2c2e989917a19" - }, - { - "value": "0xea154749730484f057059e41d13b206e0aa22e8fce3cff31e5c13220d1768305", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xdb9bcef0ed40d745386a30a2692ee982d26e6b84860060f1d4d0cdc1edd0321b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3fcba18bbb2261926f382fc23da670dc5dbdc20655a5d75100ff417e466eff15", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb384341f5e4145efe718ab356a732f306a061282a8145169d78176531785560d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x99ba7c59ac7625b7076616df54002e40bfe37101d8f0db36c8c654484ea5c500", - "sibling": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b" - } - ], - "pathPart": "0x164" - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/nonce_update_type_2.json b/tests/generated/nonce_update_type_2.json deleted file mode 100644 index 6f11b524..00000000 --- a/tests/generated/nonce_update_type_2.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "address": "0x4545454545454545454545454545454545454545", - "accountKey": "0xca236804a59838839b82c427f57361178009a0b40457d30d1a8a2045f19a9021", - "accountPath": [ - { - "root": "0xe31bf661f1d633c219628c04861676967fc56031c70bca0e5c5eb31e75ed431a", - "path": [ - { - "value": "0xebd2651e7fd2b47e32c4709e90c3beba43391c0e8a895ff135fdb86a5043991b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x9f0e03219b59896c819401c3cf0ba882d6767f07c6ac98f6e9e8f2c7ec3b072b" - } - ], - "pathPart": "0x2" - }, - { - "root": "0x2c9eeb9a15447d7e3bbb2846dc9dda5d8af54ff8086518b51a963838fac91e16", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xca236804a59838839b82c427f57361178009a0b40457d30d1a8a2045f19a9021" - }, - "path": [ - { - "value": "0x447f53f3e1aee09816902111e00577fb38ff0a9ec09c51397a1dabd977ff7c2e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x6ad5f679d1751a952baa7c3cb18caf5d8eb28023a6cd7ce011d9fcdc8283c125", - "sibling": "0x9f0e03219b59896c819401c3cf0ba882d6767f07c6ac98f6e9e8f2c7ec3b072b" - } - ], - "pathPart": "0x2" - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" -} diff --git a/tests/generated/storage/empty_account_empty_storage_proof.json b/tests/generated/storage/empty_account_empty_storage_proof.json deleted file mode 100644 index a6ccaa82..00000000 --- a/tests/generated/storage/empty_account_empty_storage_proof.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x13515ea408e681c4df14f4603b890b306dcdb1c80b6dd2d5ccbf7ce7fee86a07", - "leaf": { - "value": "0xfc14fb595bf3607bbed858ce5699c5dc73fe0ad46336cf5e1f0b98d0cd9ca81d", - "sibling": "0xa4185eeca3dd00ff412303e909b3ecea8b5de897e9e19ce805b9a7f12c57e910" - }, - "path": [ - { - "value": "0x3ff502a650cb7c1d68cb34cb6aef41b7b277153cd31496f56684b4e3fa21ee05", - "sibling": "0x13e60938eb6ecdfc3f64990cdc5d6b0a65e4bf8861cf524d36bcdc6ef6df871b" - }, - { - "value": "0xfe02d3d8a4ce60f2b2a5b73254262df18198611e5e95c1b506fe50f811478e1d", - "sibling": "0xef1dfbee8932f0b5655b9de6c6486dfbfab5ee608c1d3f8c52ace9850ca0d123" - }, - { - "value": "0x6fadc1b472299ffcc0aea4e873c0d66a5b06e6f3c8a386f400cd27d795865c2c", - "sibling": "0x6c16162352dfaed7f337c9834a47180f54bc17eeb77cd11aac75e6d335533b14" - }, - { - "value": "0xcbc971885e0a089621c189216c1240347cc3faa8def5edd09c066484740b0306", - "sibling": "0x3f2f90f0451790d998234bb78afd06a8abca91f863627f27429d1580dabed318" - }, - { - "value": "0x80f04926051092103f940e986ba33b95bb1b4ffb749fbba6a045264fede7f31f", - "sibling": "0xa3625610bb03b14bac6111fb88b9bc211bb525fa8e23576686a25fa8c9b0e215" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x13515ea408e681c4df14f4603b890b306dcdb1c80b6dd2d5ccbf7ce7fee86a07", - "leaf": { - "value": "0xfc14fb595bf3607bbed858ce5699c5dc73fe0ad46336cf5e1f0b98d0cd9ca81d", - "sibling": "0xa4185eeca3dd00ff412303e909b3ecea8b5de897e9e19ce805b9a7f12c57e910" - }, - "path": [ - { - "value": "0x3ff502a650cb7c1d68cb34cb6aef41b7b277153cd31496f56684b4e3fa21ee05", - "sibling": "0x13e60938eb6ecdfc3f64990cdc5d6b0a65e4bf8861cf524d36bcdc6ef6df871b" - }, - { - "value": "0xfe02d3d8a4ce60f2b2a5b73254262df18198611e5e95c1b506fe50f811478e1d", - "sibling": "0xef1dfbee8932f0b5655b9de6c6486dfbfab5ee608c1d3f8c52ace9850ca0d123" - }, - { - "value": "0x6fadc1b472299ffcc0aea4e873c0d66a5b06e6f3c8a386f400cd27d795865c2c", - "sibling": "0x6c16162352dfaed7f337c9834a47180f54bc17eeb77cd11aac75e6d335533b14" - }, - { - "value": "0xcbc971885e0a089621c189216c1240347cc3faa8def5edd09c066484740b0306", - "sibling": "0x3f2f90f0451790d998234bb78afd06a8abca91f863627f27429d1580dabed318" - }, - { - "value": "0x80f04926051092103f940e986ba33b95bb1b4ffb749fbba6a045264fede7f31f", - "sibling": "0xa3625610bb03b14bac6111fb88b9bc211bb525fa8e23576686a25fa8c9b0e215" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000003" -} diff --git a/tests/generated/storage/empty_account_storage_write.json b/tests/generated/storage/empty_account_storage_write.json deleted file mode 100644 index 9d442aec..00000000 --- a/tests/generated/storage/empty_account_storage_write.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x13515ea408e681c4df14f4603b890b306dcdb1c80b6dd2d5ccbf7ce7fee86a07", - "leaf": { - "value": "0xfc14fb595bf3607bbed858ce5699c5dc73fe0ad46336cf5e1f0b98d0cd9ca81d", - "sibling": "0xa4185eeca3dd00ff412303e909b3ecea8b5de897e9e19ce805b9a7f12c57e910" - }, - "path": [ - { - "value": "0x3ff502a650cb7c1d68cb34cb6aef41b7b277153cd31496f56684b4e3fa21ee05", - "sibling": "0x13e60938eb6ecdfc3f64990cdc5d6b0a65e4bf8861cf524d36bcdc6ef6df871b" - }, - { - "value": "0xfe02d3d8a4ce60f2b2a5b73254262df18198611e5e95c1b506fe50f811478e1d", - "sibling": "0xef1dfbee8932f0b5655b9de6c6486dfbfab5ee608c1d3f8c52ace9850ca0d123" - }, - { - "value": "0x6fadc1b472299ffcc0aea4e873c0d66a5b06e6f3c8a386f400cd27d795865c2c", - "sibling": "0x6c16162352dfaed7f337c9834a47180f54bc17eeb77cd11aac75e6d335533b14" - }, - { - "value": "0xcbc971885e0a089621c189216c1240347cc3faa8def5edd09c066484740b0306", - "sibling": "0x3f2f90f0451790d998234bb78afd06a8abca91f863627f27429d1580dabed318" - }, - { - "value": "0x80f04926051092103f940e986ba33b95bb1b4ffb749fbba6a045264fede7f31f", - "sibling": "0xa3625610bb03b14bac6111fb88b9bc211bb525fa8e23576686a25fa8c9b0e215" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x20d4013bdb07ebc1f5104627593a54631167601bbaac4fb17e550be84b30ac23", - "leaf": { - "value": "0xfc14fb595bf3607bbed858ce5699c5dc73fe0ad46336cf5e1f0b98d0cd9ca81d", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "path": [ - { - "value": "0x39ec8b233464035418b93d6c2e8cb7bc450f48309cfd9a61b3b04c2a2f8a5d2f", - "sibling": "0x13e60938eb6ecdfc3f64990cdc5d6b0a65e4bf8861cf524d36bcdc6ef6df871b" - }, - { - "value": "0x96129eae2dab05166027e92dd5a97f53442f1ab43fd9f639cba6b95dbac6fd2f", - "sibling": "0xef1dfbee8932f0b5655b9de6c6486dfbfab5ee608c1d3f8c52ace9850ca0d123" - }, - { - "value": "0xbf574f8fa150461553e69f31d32a671355a879d37a0bb17bb16cf3b80f2ea015", - "sibling": "0x6c16162352dfaed7f337c9834a47180f54bc17eeb77cd11aac75e6d335533b14" - }, - { - "value": "0x7037713d404c81df57a357018ce8535f49e9b9f05e014af5681e7299b8854a12", - "sibling": "0x3f2f90f0451790d998234bb78afd06a8abca91f863627f27429d1580dabed318" - }, - { - "value": "0x1c3e798cbd3e9a2641fd13c87e226e08234e727f4ea52792ac749a101ab63f1a", - "sibling": "0xa3625610bb03b14bac6111fb88b9bc211bb525fa8e23576686a25fa8c9b0e215" - }, - { - "value": "0x8c4dfccb4f7bcef56a1b264d30f620f1b46c2ad5200cf052475c5a29c8ba622d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb831a4c58ccc1ec6cac983230310de07aae5373a742bab19e643c1df3ada7521", - "sibling": "0x80f04926051092103f940e986ba33b95bb1b4ffb749fbba6a045264fede7f31f" - } - ], - "pathPart": "0x64" - } - ], - "accountUpdate": [ - null, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - }, - { - "root": "0x031d334170dce0dc6f7fc45d4756f7ba9971cd16bc95da3a93389a3fdbdeb522", - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "pathPart": "0x0" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - ] -} diff --git a/tests/generated/storage/empty_storage_proof_empty_trie.json b/tests/generated/storage/empty_storage_proof_empty_trie.json deleted file mode 100644 index e5414652..00000000 --- a/tests/generated/storage/empty_storage_proof_empty_trie.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - }, - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - } - ], - "stateKey": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "stateUpdate": [ - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/empty_storage_proof_singleton_trie.json b/tests/generated/storage/empty_storage_proof_singleton_trie.json deleted file mode 100644 index 6faed422..00000000 --- a/tests/generated/storage/empty_storage_proof_singleton_trie.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xd9c9aa90e270b62c12d75bb8dad905715af9da6f32f304af038622bfd62fb42f", - "leaf": { - "value": "0x7c1a502475f9034868aae191182df74701eee61654abd1f527dfe91df0e4e228", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xd9c9aa90e270b62c12d75bb8dad905715af9da6f32f304af038622bfd62fb42f", - "leaf": { - "value": "0x7c1a502475f9034868aae191182df74701eee61654abd1f527dfe91df0e4e228", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x875a0cfbaf9d0f2baeb90af8f5af13d9e6fa05691e8a501e58a33bc785149f06", - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c" - }, - "pathPart": "0x0" - }, - { - "root": "0x875a0cfbaf9d0f2baeb90af8f5af13d9e6fa05691e8a501e58a33bc785149f06", - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c" - }, - "pathPart": "0x0" - } - ], - "stateKey": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "stateUpdate": [ - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/empty_storage_proof_type_1.json b/tests/generated/storage/empty_storage_proof_type_1.json deleted file mode 100644 index 590bfe36..00000000 --- a/tests/generated/storage/empty_storage_proof_type_1.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xf0f3676e6bbd69d73a234e1491c12c313d281cd0ec83f59bdc778585b510c203", - "leaf": { - "value": "0xa50ad5dbfdde63e995d4ad6d58def265f097f920efeefa5b0fe6ecd6aaea330e", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xf0f3676e6bbd69d73a234e1491c12c313d281cd0ec83f59bdc778585b510c203", - "leaf": { - "value": "0xa50ad5dbfdde63e995d4ad6d58def265f097f920efeefa5b0fe6ecd6aaea330e", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x373a863ce0d3de8de78a50e22b354e17b6422c2f28735a145f222ffc4f4f742c", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x384f28f968b9aeba6d4bccd5044c48334959a2e9e5ac40af30f4127681a0d00e" - }, - "path": [ - { - "value": "0xa66a02ba024b587da51b2490ebf58eb1445a8916ac3ebb7f3021e4ce1889b425", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x467a4cb66f8a8d66b292e1b394dee382941042a61880a4dc7051101df5204810", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607", - "sibling": "0x7d0f579bbc5305d949ea974cf13824c0bcfca5777efdcf46f6d6b4795753d81b" - }, - { - "value": "0xc8107e8f879868153efc5d3d73eb6d6040e94c8a5dc8e66ac56bea886c467207", - "sibling": "0xa51162b94ead7314cd9870d4bf9af016e1b56e6f5ddb7f0a67b3cd60c0a96d2d" - }, - { - "value": "0xc6c9b41ed4bf3301e83148c7082d457361fea57c519a0075146792cbf3272828", - "sibling": "0x65e81e0f296babad2e1ef5f2d316db3bf912e96994a67ebe28b8035d2f58601a" - }, - { - "value": "0x7ac44d6647334fbd7a369ebb42e1678aa6de25311f55b79559f07f2107c79421", - "sibling": "0x89bc389a74b76500ff35d0cc8f7537077d072e1a55fb1811901256287a854a24" - } - ], - "pathPart": "0x38" - }, - { - "root": "0x373a863ce0d3de8de78a50e22b354e17b6422c2f28735a145f222ffc4f4f742c", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x384f28f968b9aeba6d4bccd5044c48334959a2e9e5ac40af30f4127681a0d00e" - }, - "path": [ - { - "value": "0xa66a02ba024b587da51b2490ebf58eb1445a8916ac3ebb7f3021e4ce1889b425", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x467a4cb66f8a8d66b292e1b394dee382941042a61880a4dc7051101df5204810", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607", - "sibling": "0x7d0f579bbc5305d949ea974cf13824c0bcfca5777efdcf46f6d6b4795753d81b" - }, - { - "value": "0xc8107e8f879868153efc5d3d73eb6d6040e94c8a5dc8e66ac56bea886c467207", - "sibling": "0xa51162b94ead7314cd9870d4bf9af016e1b56e6f5ddb7f0a67b3cd60c0a96d2d" - }, - { - "value": "0xc6c9b41ed4bf3301e83148c7082d457361fea57c519a0075146792cbf3272828", - "sibling": "0x65e81e0f296babad2e1ef5f2d316db3bf912e96994a67ebe28b8035d2f58601a" - }, - { - "value": "0x7ac44d6647334fbd7a369ebb42e1678aa6de25311f55b79559f07f2107c79421", - "sibling": "0x89bc389a74b76500ff35d0cc8f7537077d072e1a55fb1811901256287a854a24" - } - ], - "pathPart": "0x38" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/empty_storage_proof_type_2.json b/tests/generated/storage/empty_storage_proof_type_2.json deleted file mode 100644 index 89cf75c0..00000000 --- a/tests/generated/storage/empty_storage_proof_type_2.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xf0f3676e6bbd69d73a234e1491c12c313d281cd0ec83f59bdc778585b510c203", - "leaf": { - "value": "0xa50ad5dbfdde63e995d4ad6d58def265f097f920efeefa5b0fe6ecd6aaea330e", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xf0f3676e6bbd69d73a234e1491c12c313d281cd0ec83f59bdc778585b510c203", - "leaf": { - "value": "0xa50ad5dbfdde63e995d4ad6d58def265f097f920efeefa5b0fe6ecd6aaea330e", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x373a863ce0d3de8de78a50e22b354e17b6422c2f28735a145f222ffc4f4f742c", - "path": [ - { - "value": "0xa66a02ba024b587da51b2490ebf58eb1445a8916ac3ebb7f3021e4ce1889b425", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x467a4cb66f8a8d66b292e1b394dee382941042a61880a4dc7051101df5204810", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x7d0f579bbc5305d949ea974cf13824c0bcfca5777efdcf46f6d6b4795753d81b", - "sibling": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607" - }, - { - "value": "0x6637d92580d91a2e734b277e28c895ed9616b6ffb3105136a6cdad1d14babb08", - "sibling": "0x2b0595c94f07a30a8e412b36bb94e4a65dd663075c70301f459b577ab7e75b11" - }, - { - "value": "0xf85f31ae2ceddaf043c4554c463d450e6a8b9a7be03bfc267634e5894846a401", - "sibling": "0xbe72f80cd7310a54a82862be6991f08e2b5df6c3c9a57a16f42b7a613c580702" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x66f7e0a18b44c7abe9aeb76bf08a27b89da2d2ff153cc30ca3a05689e1907727" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x373a863ce0d3de8de78a50e22b354e17b6422c2f28735a145f222ffc4f4f742c", - "path": [ - { - "value": "0xa66a02ba024b587da51b2490ebf58eb1445a8916ac3ebb7f3021e4ce1889b425", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x467a4cb66f8a8d66b292e1b394dee382941042a61880a4dc7051101df5204810", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x7d0f579bbc5305d949ea974cf13824c0bcfca5777efdcf46f6d6b4795753d81b", - "sibling": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607" - }, - { - "value": "0x6637d92580d91a2e734b277e28c895ed9616b6ffb3105136a6cdad1d14babb08", - "sibling": "0x2b0595c94f07a30a8e412b36bb94e4a65dd663075c70301f459b577ab7e75b11" - }, - { - "value": "0xf85f31ae2ceddaf043c4554c463d450e6a8b9a7be03bfc267634e5894846a401", - "sibling": "0xbe72f80cd7310a54a82862be6991f08e2b5df6c3c9a57a16f42b7a613c580702" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x66f7e0a18b44c7abe9aeb76bf08a27b89da2d2ff153cc30ca3a05689e1907727" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/read_empty_storage_trie.json b/tests/generated/storage/read_empty_storage_trie.json deleted file mode 100644 index 4bb4b9f3..00000000 --- a/tests/generated/storage/read_empty_storage_trie.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - }, - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - } - ], - "stateKey": "0xad8078ae9985ef25327918af8454ac594fc60c38a4b6862029e289e48de31714", - "stateUpdate": [ - { - "key": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/read_singleton_storage_trie.json b/tests/generated/storage/read_singleton_storage_trie.json deleted file mode 100644 index 5861cb7f..00000000 --- a/tests/generated/storage/read_singleton_storage_trie.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x3e5f9c88275842203d77590d685bac018f755b50e125c2a4006ce73430315119", - "leaf": { - "value": "0x49ef0bdbdf586f8a1f5bb1445b164828a31f8745a5130cc14dfea9880e4a4f08", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0x3e5f9c88275842203d77590d685bac018f755b50e125c2a4006ce73430315119", - "leaf": { - "value": "0x49ef0bdbdf586f8a1f5bb1445b164828a31f8745a5130cc14dfea9880e4a4f08", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x681a1de98f8464e5f8726c11b40f3fe82bf3f705d5bfe7020e7c45e62cbb170b", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215" - }, - "pathPart": "0x0" - }, - { - "root": "0x681a1de98f8464e5f8726c11b40f3fe82bf3f705d5bfe7020e7c45e62cbb170b", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215" - }, - "pathPart": "0x0" - } - ], - "stateKey": "0x3df674c64d327b533095ac349394f1922e4d889bfb9c9657feb289ecbbc87825", - "stateUpdate": [ - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/update_storage_existing_to_existing.json b/tests/generated/storage/update_storage_existing_to_existing.json deleted file mode 100644 index 152d1ae2..00000000 --- a/tests/generated/storage/update_storage_existing_to_existing.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x6b1c76d6d40ec0ad05a68145563b6cbc7af44f2f58642491a48af75ebc0a6330", - "leaf": { - "value": "0x3b42f0742fccc2468427326b123712ab0e1a410f9d2cffb63284cb94e918fc21", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "path": [ - { - "value": "0x0b8bc1e9e2ee1b1d87fb9d5b75d834b0b5e87a8361f4b8d79c020b0316633400", - "sibling": "0x5e53b69cdec845992f1f961aae0e768b3269a749d40672c8242274309b9e210b" - }, - { - "value": "0x0eaace2e8af8d39911533c7babb5d99ee621311e6164a1e36fc5e7aaa88bb703", - "sibling": "0xb3f772b4ce4dd28b4c14232027bd83b5347162a3b644325239012753ec3d932e" - }, - { - "value": "0x5beef8038bd166528ff4b3842459e0c9e0210372f10063cf5060236f2870b41a", - "sibling": "0xf3318ca4af37cf6d2978a65eaa56ccc9f26a2a983e6e3101cc78ae7913483d28" - }, - { - "value": "0x8e80835d8a4e3b52a2109cc3b025943dfec664d4181434a3076a067eecbdbb28", - "sibling": "0x45794642f96fd19bd088488ed91285a87a3aee8a3b3a3b13fbe93fa3774eed05" - }, - { - "value": "0x546aaa77358ba748dba7374f444f85031c290da4be7421e280ff5e8b966eee0c", - "sibling": "0x06793993a82c79ed03dc607f4d441009d28293245c2d6a67b73353c609ac0902" - }, - { - "value": "0x6b380259325f4f719281fab311630de9937ba542e38073308c3ca7693d447508", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7b76f5300038f72c0a41c7007599034d30e6130591c54e1da20d69acb0560400", - "sibling": "0x484f7abbddcd46b3d5cf4d22602f695db37e7373f1474bfcf27a5590e801d513" - } - ], - "pathPart": "0x64" - }, - { - "root": "0x4b7924c7802cf7a12ec41e5264ad91b13a7ad43024309e78e3d2cadcf1fc0f08", - "leaf": { - "value": "0x0cab40048384431d211109f6c1907df6392e74e4b3af962cca4d4334a0b50904", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "path": [ - { - "value": "0x4a44b0d325e6dd33890d4d813b6cd2e7641f42570b28f1a04ba2ebb6fb85a009", - "sibling": "0x5e53b69cdec845992f1f961aae0e768b3269a749d40672c8242274309b9e210b" - }, - { - "value": "0x817192fcaf29981c3e6f50cbec4cc3f1ff2e0775aecb0a00c379d508a530581e", - "sibling": "0xb3f772b4ce4dd28b4c14232027bd83b5347162a3b644325239012753ec3d932e" - }, - { - "value": "0xbcef4b0790241b426772f51e620e44bf95e90b7242fae1efeadab2623ef60913", - "sibling": "0xf3318ca4af37cf6d2978a65eaa56ccc9f26a2a983e6e3101cc78ae7913483d28" - }, - { - "value": "0xa462c2ad001cd0985ef4d2ae0d58cc01b253bebc46193bbd032d9dd020107223", - "sibling": "0x45794642f96fd19bd088488ed91285a87a3aee8a3b3a3b13fbe93fa3774eed05" - }, - { - "value": "0x27398ed4c1de4b8d0c69e357d5e248430c81a79d750b7476bb93319c2908330b", - "sibling": "0x06793993a82c79ed03dc607f4d441009d28293245c2d6a67b73353c609ac0902" - }, - { - "value": "0x6aa4bcead2fde62b1a9079c2cd5fe4003c449bb29a94ebd4631203a50a042827", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1181dfb01644ff9b15ce4d8895c44a997ba32f751de7ba16c9191b042c8af40b", - "sibling": "0x484f7abbddcd46b3d5cf4d22602f695db37e7373f1474bfcf27a5590e801d513" - } - ], - "pathPart": "0x64" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x658e78ddd1ae29486eaa0e2c75edcccd09ee8a28bcf74d8969a6926e621ff517", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x22935ae06368fe5d6afb3a3b7cec95d1b824c1f930471970b843cf7f12871903" - }, - "path": [ - { - "value": "0xce584ca59177feea45edad13306ecb632557038d47872ae4485237798453be02", - "sibling": "0xaeb689838467cf75ecc32c683dabb53f5d4675220a1076fc36fb1e8864b37f22" - }, - { - "value": "0x07ceeb14dd7f4421718c28e85a822120176920f5a327aa3ede7f9a170af45804", - "sibling": "0x21ec97672bade3eea607c328757ca3c7595998a4ef075cb8a01cf232958fc001" - }, - { - "value": "0x9802062ac192e20821083583b269c1e857ac5dcef13772082a86817818c97c24", - "sibling": "0xccb894bd4aebe7e012c00a8d8538b5ec36624beca379fa109918147601634118" - }, - { - "value": "0x6b2d424c35e4eb74902952a9fcf6fc0b701239000e1d6bb66e3c1d65905dc22d", - "sibling": "0x1d3d1511a164454c54aebb32190d73275bc08551aee99c04e386cb5c36316508" - }, - { - "value": "0x925dbdec5829251b5584cb5e49dc42301e1c6ab826807343f7afbc7242b84209", - "sibling": "0xe711d6120de061378096a15a242ca63fe19dbd881ae9a3df985db956e21b5020" - }, - { - "value": "0x6a5d059bc4bd566f62eaea80307bc3613db52c064e66143c1c234232d05b722f", - "sibling": "0xa6046d2c8f7da9ee46f7b65a58801b317285bb81f1c0c5c537d749b0beb29825" - }, - { - "value": "0xf432500acebb261345fd415e55a02045b09881a1a44e1a9f57faaae09bffd115", - "sibling": "0xbda36ddbc63d327ff832598bd6b7cf1d50d01d5052995a6d73e351d3ed077d18" - }, - { - "value": "0x9bbf0e861fe8cdcdb62d80985847ef0e2c8df5cf860eee91f922f66e5cf9221c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0a0b62219c299ab197b6347308ae95f2289f3125d9b9485c91480d4daa12130d", - "sibling": "0x18c31a42ffb1907904cb0ed9c1f085b4cc99a56841a9d3a9a3c6fc6fe9efa908" - } - ], - "pathPart": "0x122" - }, - { - "root": "0x54e5e431e585ff973a8b9281202caaf53f97a9f31212919c624c53c946ecd92d", - "leaf": { - "value": "0x46741ccbdc4954817d684549224e1a98b675a7f500e3e2dcacef9357581ace17", - "sibling": "0x22935ae06368fe5d6afb3a3b7cec95d1b824c1f930471970b843cf7f12871903" - }, - "path": [ - { - "value": "0x273111f6cf0338e9d25475fb011426317e8605c71d5732e72aa87f195b56b01c", - "sibling": "0xaeb689838467cf75ecc32c683dabb53f5d4675220a1076fc36fb1e8864b37f22" - }, - { - "value": "0xd53fa732f032d3ffb00ed5efe6e4c59d028845897948f48f5264daf5e2a9bd23", - "sibling": "0x21ec97672bade3eea607c328757ca3c7595998a4ef075cb8a01cf232958fc001" - }, - { - "value": "0x7408c7e9803f6b48f9fb0b676f485028733f00565aae7637d82cafc75dd4eb01", - "sibling": "0xccb894bd4aebe7e012c00a8d8538b5ec36624beca379fa109918147601634118" - }, - { - "value": "0x5d1bd880bb5fc9cc414fc8e999a03356576ae0db17085f7b674c76e913575e11", - "sibling": "0x1d3d1511a164454c54aebb32190d73275bc08551aee99c04e386cb5c36316508" - }, - { - "value": "0x2b55049324d07527fcdf9e8b9f2e0249ecf6646d2119d1a7534f57a695bf2d25", - "sibling": "0xe711d6120de061378096a15a242ca63fe19dbd881ae9a3df985db956e21b5020" - }, - { - "value": "0xd5e2c033f975467fa1c6c45b08bc49f1dfb933981d788d156e2780b086a6000d", - "sibling": "0xa6046d2c8f7da9ee46f7b65a58801b317285bb81f1c0c5c537d749b0beb29825" - }, - { - "value": "0xa96932869b1b0f6969ce03b939271fbc68e61180c54e2a4db10194286b0f7402", - "sibling": "0xbda36ddbc63d327ff832598bd6b7cf1d50d01d5052995a6d73e351d3ed077d18" - }, - { - "value": "0xf71abcdedf3cc27d13d98134bba36136ae05f4b5adb6a83e9a0166f3231fd81a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x4fd3d99a4ce691a092d8a100cb5140a94b8905124120ddfb4082970a51e7a20c", - "sibling": "0x18c31a42ffb1907904cb0ed9c1f085b4cc99a56841a9d3a9a3c6fc6fe9efa908" - } - ], - "pathPart": "0x122" - } - ], - "stateKey": "0x22935ae06368fe5d6afb3a3b7cec95d1b824c1f930471970b843cf7f12871903", - "stateUpdate": [ - { - "key": "0x00000000000000000000000000000000000000000000000000000000002518fe", - "value": "0x00000000000000000000000000000000000000000000000000000000ffffffff" - }, - { - "key": "0x00000000000000000000000000000000000000000000000000000000002518fe", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000" - } - ] -} diff --git a/tests/generated/storage/write_empty_storage_trie.json b/tests/generated/storage/write_empty_storage_trie.json deleted file mode 100644 index c95765fe..00000000 --- a/tests/generated/storage/write_empty_storage_trie.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0x0691cbee9da0fa08460c99b699b698bf3f051c5e461d319f540859769913270d", - "leaf": { - "value": "0x5a2497521769e02879952508c187b0dd0525c4d73001e346c3d4a8559e74772b", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - }, - { - "root": "0xa214d4b3c2c6464aea2401d06466467123402a1934579ce54bb3bf82a9f37e2d", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x3df674c64d327b533095ac349394f1922e4d889bfb9c9657feb289ecbbc87825" - }, - "pathPart": "0x0" - } - ], - "stateKey": "0x3df674c64d327b533095ac349394f1922e4d889bfb9c9657feb289ecbbc87825", - "stateUpdate": [ - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x00000000000000000000000000000000000000000000000000000000ffffffff" - } - ] -} diff --git a/tests/generated/storage/write_singleton_storage_trie.json b/tests/generated/storage/write_singleton_storage_trie.json deleted file mode 100644 index 36a20524..00000000 --- a/tests/generated/storage/write_singleton_storage_trie.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x3e5f9c88275842203d77590d685bac018f755b50e125c2a4006ce73430315119", - "leaf": { - "value": "0x49ef0bdbdf586f8a1f5bb1445b164828a31f8745a5130cc14dfea9880e4a4f08", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xc548278d3c971f4fef48ddd58d3ca695540c356e1e1c6c7d68f60706440aeb23", - "leaf": { - "value": "0xa92dc7224a94017ea5891d04b7f3d11c0319cc63f19ffaf092d157aa4ae4412a", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x681a1de98f8464e5f8726c11b40f3fe82bf3f705d5bfe7020e7c45e62cbb170b", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215" - }, - "pathPart": "0x0" - }, - { - "root": "0xf27d3a42e2f541d4a5f15ab7f241fb900c070c9746855f639de4847fa2f44e2e", - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x3df674c64d327b533095ac349394f1922e4d889bfb9c9657feb289ecbbc87825" - }, - "path": [ - { - "value": "0x1d753031bb8ca23a02b88c7d8d017348dd76166ded242c92d5dc1b23c529f627", - "sibling": "0x681a1de98f8464e5f8726c11b40f3fe82bf3f705d5bfe7020e7c45e62cbb170b" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0x3df674c64d327b533095ac349394f1922e4d889bfb9c9657feb289ecbbc87825", - "stateUpdate": [ - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - ] -} diff --git a/tests/generated/storage/write_zero_doubleton_storage_trie.json b/tests/generated/storage/write_zero_doubleton_storage_trie.json deleted file mode 100644 index 9d0b518c..00000000 --- a/tests/generated/storage/write_zero_doubleton_storage_trie.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xbaf82a7ffad74f1ef50a9e5831e52cb1b1b63d6ce067934833922548ab9f6e2f", - "leaf": { - "value": "0x9f65329b166560f28158b8b93eac50e364918efb938b28a244b7ef6f2ae76a05", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xaf977cd00caad0e64b79bd3549f91bc7ab329fe6bcb0fb96fe12447e4eb7331b", - "leaf": { - "value": "0x6160c8ac9575800d1e10798dd4be871b11e92e5bb07ba59cfc0af77e2b605d0d", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x580d5121b27a5902282a91ae81e85183da8b63203b38b9da0e80ba72cbef9a11", - "leaf": { - "value": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215", - "sibling": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215" - }, - "path": [ - { - "value": "0xec0091e224b29c981c945553bc2ee208a0a7f333f285521a97afe39acc3d4b15", - "sibling": "0x0b86fcb15d35fc1b349f8025eabe4498430295e3d2bb6d319544080a04a7890e" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x0b86fcb15d35fc1b349f8025eabe4498430295e3d2bb6d319544080a04a7890e", - "leaf": { - "value": "0xad8078ae9985ef25327918af8454ac594fc60c38a4b6862029e289e48de31714", - "sibling": "0x7b7658007d04e12312f5611c12d4fe3567a8eb42c23848d0e55655b47e681f03" - }, - "pathPart": "0x0" - } - ], - "stateKey": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215", - "stateUpdate": [ - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4" - }, - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/write_zero_singleton_storage_trie.json b/tests/generated/storage/write_zero_singleton_storage_trie.json deleted file mode 100644 index dbd1ff04..00000000 --- a/tests/generated/storage/write_zero_singleton_storage_trie.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0x3e5f9c88275842203d77590d685bac018f755b50e125c2a4006ce73430315119", - "leaf": { - "value": "0x49ef0bdbdf586f8a1f5bb1445b164828a31f8745a5130cc14dfea9880e4a4f08", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0xab8d6528f4c952b7ced506de56dcb5b3facef487eb969d3f843d93886b459d1b", - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x681a1de98f8464e5f8726c11b40f3fe82bf3f705d5bfe7020e7c45e62cbb170b", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215" - }, - "pathPart": "0x0" - }, - { - "root": "0x0000000000000000000000000000000000000000000000000000000000000000", - "pathPart": "0x0" - } - ], - "stateKey": "0xf64b26ff1e8fedb5c1d63d23e55970959bcbac71d5db8c5f0bab3fff5041c215", - "stateUpdate": [ - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4", - "value": "0x00000000000000000000000000000000000000000000000000000000ffffffff" - }, - { - "key": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/generated/storage/write_zero_storage_trie.json b/tests/generated/storage/write_zero_storage_trie.json deleted file mode 100644 index 2714e8ca..00000000 --- a/tests/generated/storage/write_zero_storage_trie.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "address": "0x0000000000000000000000000000000000000000", - "accountKey": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820", - "accountPath": [ - { - "root": "0xf0f3676e6bbd69d73a234e1491c12c313d281cd0ec83f59bdc778585b510c203", - "leaf": { - "value": "0xa50ad5dbfdde63e995d4ad6d58def265f097f920efeefa5b0fe6ecd6aaea330e", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - }, - { - "root": "0x4d63adf3a274c7749d538d880f3cd8c94569c2370aef3a66390762dd7594fa1a", - "leaf": { - "value": "0x055363b0806cf9abaa44a78752b33abbb833c3fa9eee4e4fe66112b6ce580a01", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - }, - "pathPart": "0x0" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "codeSize": 0 - } - ], - "statePath": [ - { - "root": "0x373a863ce0d3de8de78a50e22b354e17b6422c2f28735a145f222ffc4f4f742c", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24" - }, - "path": [ - { - "value": "0xa66a02ba024b587da51b2490ebf58eb1445a8916ac3ebb7f3021e4ce1889b425", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x467a4cb66f8a8d66b292e1b394dee382941042a61880a4dc7051101df5204810", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x7d0f579bbc5305d949ea974cf13824c0bcfca5777efdcf46f6d6b4795753d81b", - "sibling": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607" - }, - { - "value": "0x2b0595c94f07a30a8e412b36bb94e4a65dd663075c70301f459b577ab7e75b11", - "sibling": "0x6637d92580d91a2e734b277e28c895ed9616b6ffb3105136a6cdad1d14babb08" - }, - { - "value": "0x9a157a1f63343d79d6d1fbfc313e54a23ae90fa38d40fce7d4a4cf7f966e302f", - "sibling": "0xaed194deb40df036a4e1aa9cfc70bf911976dde281fc488b800800abfa22d711" - }, - { - "value": "0xc82ffa0960fefe854a3f7edf23d1b72321c5e729e04cf73db1ff160e581d4e25", - "sibling": "0x3c626cc1c85030e2a1193249aa1f7b9fdef43a28d810372c07136ead1041c827" - }, - { - "value": "0xe738db7b5ed04da635441e7dda53ffcb89f8c79f174e612a6777e45c1399fc06", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xca9c62aaada508f4ec72b3d53c4381ef1244923f58110339ad9208ae845a200d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x28675fa430ad3bd0a59454405526758447f858b0bf8eef7c6c772e62f4e69b05", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xba4acc25d7d90d201d68351d2281e8840335d20563e7b9b8737207e3aaa58f1b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7105cc97601abe2d93ce7ae501829c68e9c3f34fcef4f6538dc24f5d85a07e2d", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe5fc780c4bb058d0cd9d4b916cd088bd042e2194daa83e203882bf962fa5310e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x24ddf1bb89775bf436710816367a1b0a399f5ba3c1e18729312563c531e3212d", - "sibling": "0x3337e5b09b4c05960656909d6eed436c1dd8725f4eeefe371b1762db76d7a30a" - } - ], - "pathPart": "0xd2c" - }, - { - "root": "0x41f5f8ea06f8200012c923a9199a61ba93cbe834fb383b8f0e7dc2a4bb8fc82d", - "leaf": { - "value": "0x1698b790a54af1dcc4eab7ea7e0ddf58c90b309ffb83e6b1eff8163a8ce9221f", - "sibling": "0x2c5db7810d867c90b778be20a4cd4929fd218628decb4e49832ec5f0c4bec01a" - }, - "path": [ - { - "value": "0x57c72db5939a59f79333c2d61feb3275bd7aa7b003813377d46b2dbdf0c66525", - "sibling": "0x366c9b8702a9c26bd3770bf53ea7beac5bd9c52cd96e027d09c29cd812820110" - }, - { - "value": "0x2912edc2fbdcea4b48cf97e3ba9dc8a2f450e3e1058fb529f7896d10efe3bb19", - "sibling": "0x7b91e8967c1744a0401c56cbbb3aab9f39e54f01693075e90c2f34feb23eec21" - }, - { - "value": "0x510a6f0ded89acbe17e1edc96609a146d44f878b5e9f40ed1359d6baad747a2a", - "sibling": "0x82d0a122ef7a1dd31d4e6eed44572c6a072acdf2e44b6b74b9ae6d1d47ffb607" - }, - { - "value": "0xe32534d275a845854593b4574acee0abec6e73f9d81e410f788721cdee049c23", - "sibling": "0x6637d92580d91a2e734b277e28c895ed9616b6ffb3105136a6cdad1d14babb08" - }, - { - "value": "0x0a6d9b0ca2f33b987a3237da9d588e66f7fa73af25d984fa6938ab1792eba919", - "sibling": "0xaed194deb40df036a4e1aa9cfc70bf911976dde281fc488b800800abfa22d711" - }, - { - "value": "0x3337e5b09b4c05960656909d6eed436c1dd8725f4eeefe371b1762db76d7a30a", - "sibling": "0x3c626cc1c85030e2a1193249aa1f7b9fdef43a28d810372c07136ead1041c827" - } - ], - "pathPart": "0x2c" - } - ], - "stateKey": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "stateUpdate": [ - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x00000000000000000000000000000000000000000000000000000000ffffffff" - }, - { - "key": "0x00000000000000000000000000000000000000000000000000000000000007d0", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] -} diff --git a/tests/mock_test_traces/uniswapv2_factory-createPair.json b/tests/mock_test_traces/uniswapv2_factory-createPair.json deleted file mode 100644 index 116441d1..00000000 --- a/tests/mock_test_traces/uniswapv2_factory-createPair.json +++ /dev/null @@ -1,9137 +0,0 @@ -[ - [ - "PoseidonCodeHashExists", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x4f5954ef0575b1b6283ec66dcf18b043babf9a3839d9879c21f8ee964614d014", - "leaf": { - "value": "0x544831ec51ead0fe03178e9439bf9de7454f4ce8a80eb841810e0a366b213d22", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29", - "sibling": "0xd32a24381afd1c13fa647fb70a59cb54315bfb9ece8c2c5dec59ee4799e5e616" - }, - { - "value": "0x8136359b1238818da89537cdb4c67cdf4c979b06f04b8aad081b6923c8bb3821", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0a2c79fd546c4c1f8329a7eff1fd966f76d2b4488cd4bd6cf31166e58a7a0420", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x758686b3e53b4378966119559055f74bddf82e344dbb07d981acf1c40becda1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x4f5954ef0575b1b6283ec66dcf18b043babf9a3839d9879c21f8ee964614d014", - "leaf": { - "value": "0x544831ec51ead0fe03178e9439bf9de7454f4ce8a80eb841810e0a366b213d22", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29", - "sibling": "0xd32a24381afd1c13fa647fb70a59cb54315bfb9ece8c2c5dec59ee4799e5e616" - }, - { - "value": "0x8136359b1238818da89537cdb4c67cdf4c979b06f04b8aad081b6923c8bb3821", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0a2c79fd546c4c1f8329a7eff1fd966f76d2b4488cd4bd6cf31166e58a7a0420", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x758686b3e53b4378966119559055f74bddf82e344dbb07d981acf1c40becda1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0xa6329fe17c0d8f90f37117dc95c9a742f03c063ab7ae6def69603ba5f95e721b" - } - ], - [ - "NonceChanged", - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "root": "0x4f5954ef0575b1b6283ec66dcf18b043babf9a3839d9879c21f8ee964614d014", - "leaf": { - "value": "0xdbb398eae9c4193276fd2073fb94e34610ec8f4b743e726374d58dd9fdeb7c0a", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0xd32a24381afd1c13fa647fb70a59cb54315bfb9ece8c2c5dec59ee4799e5e616", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0x8943a024fb1022c880c6ee19d53b7827250628be884adb0409d391405d5b1a01", - "sibling": "0xda6383abce8ad588ea01cd9657f6b89d2d1b2a0d7fdb4e16d69bde07765f401c" - }, - { - "value": "0x435e90cf02d438f78f4c38848c8feab8ca5a45bff0a45c361a2c7ba6bf7ff02d", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - }, - { - "root": "0xa4b36b7061667b04bda8ea9171ffdd51356b8f3f1b0532f669bd27972582a10a", - "leaf": { - "value": "0xae72da9fdddf07a889afffc167fbcfc414c3116b611894bc5285329c60d0aa19", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x23231266668f018d485f0b1e000763c49ed3c3c5cd839312839c85bef868c809", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0xd01f0a504748f90e6180df0239d40ce4821516b64af198b6935e91c3e774492b", - "sibling": "0xda6383abce8ad588ea01cd9657f6b89d2d1b2a0d7fdb4e16d69bde07765f401c" - }, - { - "value": "0xa1955c468e0015b87ee533d987ab04bae52682565f6ec9399c18bee3597ae607", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - { - "nonce": 5, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa6b8ef4f1c56690", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 15, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa6b8ef4f1c56690", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "root": "0xa4b36b7061667b04bda8ea9171ffdd51356b8f3f1b0532f669bd27972582a10a", - "leaf": { - "value": "0xae72da9fdddf07a889afffc167fbcfc414c3116b611894bc5285329c60d0aa19", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x23231266668f018d485f0b1e000763c49ed3c3c5cd839312839c85bef868c809", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0xd01f0a504748f90e6180df0239d40ce4821516b64af198b6935e91c3e774492b", - "sibling": "0xda6383abce8ad588ea01cd9657f6b89d2d1b2a0d7fdb4e16d69bde07765f401c" - }, - { - "value": "0xa1955c468e0015b87ee533d987ab04bae52682565f6ec9399c18bee3597ae607", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7ef44f60b2d903e8f495cbb972d2eb16fe1a75c821676a1c4fe5d862abd45628", - "leaf": { - "value": "0x1e55fb31edd7d384eb8161292c4897b8bf9b9d30e9a4fc3179ed45f5f5055501", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0x5dd152d43a7cd36dccebb16ce042bbc6b82d2566f3213c560b5592583db13301", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0x997ef8d1b3f772fe5a479e4a397eb6d411287822cf7e1e819e2b55482d039103", - "sibling": "0xda6383abce8ad588ea01cd9657f6b89d2d1b2a0d7fdb4e16d69bde07765f401c" - }, - { - "value": "0x83154b1250f0646d6c89b2352ec30d8d01372a8b403447f4a16cdcb1bcf74104", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - { - "nonce": 15, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa6b8ef4f1c56690", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 15, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa6a357e8ce1bab0", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "BalanceChanged", - { - "address": "0x5300000000000000000000000000000000000005", - "accountKey": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f", - "accountPath": [ - { - "root": "0x7ef44f60b2d903e8f495cbb972d2eb16fe1a75c821676a1c4fe5d862abd45628", - "leaf": { - "value": "0x6fb3917c0ae11a27be5f969441a831cc8058f59879d083ae6852fb3070d2d31c", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0x5dd152d43a7cd36dccebb16ce042bbc6b82d2566f3213c560b5592583db13301", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0xda6383abce8ad588ea01cd9657f6b89d2d1b2a0d7fdb4e16d69bde07765f401c", - "sibling": "0x997ef8d1b3f772fe5a479e4a397eb6d411287822cf7e1e819e2b55482d039103" - }, - { - "value": "0x1bf153b7ffd67c47a84c8a7dcd35d9b446f21547205cfdc11ab412b24fd42d28", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xdefd00d8365e8f6c0b681ae70d038aa04fbcbf9eb28aee80f581e79878ebc91e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x795f07192d405e33250b1ee65c0e1d77c23251cfe7f8da7ee41801a9f1c2a508", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - }, - { - "root": "0x770931edba73f0154d3fd9563dfeab431993efdda67d83bf8dd4bc6b82e18914", - "leaf": { - "value": "0xce21af8941a0fab52d9b84f34efa57b6e9db9afb7bec8d31fd329418f50dba0f", - "sibling": "0x22ba42d8f4cc57fbeef5d38842f0e73921b14cff4d19c8cc2b9106b102f3ac1f" - }, - "path": [ - { - "value": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226", - "sibling": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29" - }, - { - "value": "0x062274e3c6444d7d94a4c03e74c53a6cff58a26ed69173ff8770aab7430b4c01", - "sibling": "0x997ef8d1b3f772fe5a479e4a397eb6d411287822cf7e1e819e2b55482d039103" - }, - { - "value": "0x38c7c07c7f113789a4297ca284f6a88ab11ff38ae573ead4270b7816d41a5a14", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x391c64837c5de708ee35af0c0dbe465cbf46a013ba863e757b221175884c2f1b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x1e71cb6820dae45c0d1ad56fabcead498ae43d98fc0e63181d7efdb379047519", - "sibling": "0x64adea55495c6b9de8faec2e5e3622adaeff6fa505c9c8acac2f973a183f5916" - } - ], - "pathPart": "0x2" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x4ae75223a9970", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - }, - { - "nonce": 0, - "balance": "0x607eb871e4550", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", - "codeSize": 0 - } - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x770931edba73f0154d3fd9563dfeab431993efdda67d83bf8dd4bc6b82e18914", - "leaf": { - "value": "0x544831ec51ead0fe03178e9439bf9de7454f4ce8a80eb841810e0a366b213d22", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x8136359b1238818da89537cdb4c67cdf4c979b06f04b8aad081b6923c8bb3821", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0a2c79fd546c4c1f8329a7eff1fd966f76d2b4488cd4bd6cf31166e58a7a0420", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x758686b3e53b4378966119559055f74bddf82e344dbb07d981acf1c40becda1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x770931edba73f0154d3fd9563dfeab431993efdda67d83bf8dd4bc6b82e18914", - "leaf": { - "value": "0x544831ec51ead0fe03178e9439bf9de7454f4ce8a80eb841810e0a366b213d22", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x8136359b1238818da89537cdb4c67cdf4c979b06f04b8aad081b6923c8bb3821", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0a2c79fd546c4c1f8329a7eff1fd966f76d2b4488cd4bd6cf31166e58a7a0420", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x758686b3e53b4378966119559055f74bddf82e344dbb07d981acf1c40becda1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xa6329fe17c0d8f90f37117dc95c9a742f03c063ab7ae6def69603ba5f95e721b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x661581364942d86709a42c38bcd085ffb9b8c09378eca554d67b6834faf3e820", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x066f5115664a375189bce3428dc8d1b5b2e8100efd344178757651a2ab2ccf02", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0xbba52dbb07dbee7cf8feb03dd281440c4ae6d3038aa7a8ad08b6416dc4774e0e" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0xa6329fe17c0d8f90f37117dc95c9a742f03c063ab7ae6def69603ba5f95e721b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x661581364942d86709a42c38bcd085ffb9b8c09378eca554d67b6834faf3e820", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x066f5115664a375189bce3428dc8d1b5b2e8100efd344178757651a2ab2ccf02", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0xbba52dbb07dbee7cf8feb03dd281440c4ae6d3038aa7a8ad08b6416dc4774e0e" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x770931edba73f0154d3fd9563dfeab431993efdda67d83bf8dd4bc6b82e18914", - "leaf": { - "value": "0x544831ec51ead0fe03178e9439bf9de7454f4ce8a80eb841810e0a366b213d22", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x11e061004cefd0b9b74715e2fbb626388adf4a37f631004c3e7a3282503f5d29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x8136359b1238818da89537cdb4c67cdf4c979b06f04b8aad081b6923c8bb3821", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0a2c79fd546c4c1f8329a7eff1fd966f76d2b4488cd4bd6cf31166e58a7a0420", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x758686b3e53b4378966119559055f74bddf82e344dbb07d981acf1c40becda1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x371c1f12a694b20649f6a53cd0c055a47c618fbdfe49f1bc75c013c899594429", - "leaf": { - "value": "0x5521075af901f82bcc7963aeeb54dcd7b75d256333d7d59622e1920d9d19042d", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x448c2d7cc3dfe7c709871837a5bd32bcda147505d79cf785af5b3508498e4529", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x868dae27f4796a8f0964f073f6dfd77fdb72ced94f97841aeed7952a0128a407", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x23a2a3be9ae7e7039675ff91c5dcdd067762a6b1276e17a79e00cb777e959812", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x2a76b1edf425696fabe8a451de9e3f23f709d8e6b5c05326a7bdff1c8866641b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xa6329fe17c0d8f90f37117dc95c9a742f03c063ab7ae6def69603ba5f95e721b", - "leaf": { - "value": "0x4389bc470717b5608764055373f28a987a2f6574370e0cd432847d9b7b984400", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x661581364942d86709a42c38bcd085ffb9b8c09378eca554d67b6834faf3e820", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x066f5115664a375189bce3428dc8d1b5b2e8100efd344178757651a2ab2ccf02", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xbba52dbb07dbee7cf8feb03dd281440c4ae6d3038aa7a8ad08b6416dc4774e0e", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x1c748f77090b1e06419dc727b6653337db2b36ec084e31aafa9f3a0e7f38560a", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0x96ef49d249970c3980d1ea28d5f5228eda0b015bc5f11711e07582c8db056717", - "leaf": { - "value": "0xa7fb66d2da89fc03c5bdb4a812ec61226a60d2709230c76ba04ae71142f92a0b", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xee63b3746e444786155d69d82cf4254a0ac4acbbbd3755d7ebf8aee6b94fa105", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2677fd399111f0f0574d0bd3be2168110b94426deaa1ce727f232258b852e100", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x00db64165b15f7c5843e1cb4c1d1b10fb9ff0e6b61069af28251bbd72c147702", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000002710" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000002328" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x371c1f12a694b20649f6a53cd0c055a47c618fbdfe49f1bc75c013c899594429", - "leaf": { - "value": "0x5521075af901f82bcc7963aeeb54dcd7b75d256333d7d59622e1920d9d19042d", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x448c2d7cc3dfe7c709871837a5bd32bcda147505d79cf785af5b3508498e4529", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x868dae27f4796a8f0964f073f6dfd77fdb72ced94f97841aeed7952a0128a407", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x23a2a3be9ae7e7039675ff91c5dcdd067762a6b1276e17a79e00cb777e959812", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x2a76b1edf425696fabe8a451de9e3f23f709d8e6b5c05326a7bdff1c8866641b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xd32ee06493a195fe51e3e913880686087d2c0f5c358104bd76e24ff688e7d303", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x96ef49d249970c3980d1ea28d5f5228eda0b015bc5f11711e07582c8db056717", - "path": [ - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x12b05b884b3090935154095d3371b79af1b5ceb6b4c283dde8b9224971ece218", - "leaf": { - "value": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101", - "sibling": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x00000000000000000000000000000000000000000000000000000000000003e8" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xd32ee06493a195fe51e3e913880686087d2c0f5c358104bd76e24ff688e7d303", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xd32ee06493a195fe51e3e913880686087d2c0f5c358104bd76e24ff688e7d303", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x12b05b884b3090935154095d3371b79af1b5ceb6b4c283dde8b9224971ece218", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c", - "sibling": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101" - }, - { - "value": "0xee63b3746e444786155d69d82cf4254a0ac4acbbbd3755d7ebf8aee6b94fa105", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2677fd399111f0f0574d0bd3be2168110b94426deaa1ce727f232258b852e100" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x12b05b884b3090935154095d3371b79af1b5ceb6b4c283dde8b9224971ece218", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c", - "sibling": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101" - }, - { - "value": "0xee63b3746e444786155d69d82cf4254a0ac4acbbbd3755d7ebf8aee6b94fa105", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2677fd399111f0f0574d0bd3be2168110b94426deaa1ce727f232258b852e100" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xb04b614b1cecbc40f1c830041284872cb667e39076efd73a4dcbff82febdac1c", - "leaf": { - "value": "0xd32ee06493a195fe51e3e913880686087d2c0f5c358104bd76e24ff688e7d303", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x386fc860ae084f368ddeb76676628e00a4fcf1bfb9fb9aa297548957081fbb03", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x6f36982a9becd77f06c2a59f08dbb830c8459f022b9fd63d6c84e59a54e5eb1a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4d54a42587742b82d02710a53f2f9defd4ea6af9a0d4dca6093bfe02e22f8519", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xdeca42b3f1d17ad41f8ddf4b9f9ae63d34b7a1d2ec39dfbdae25e664a7930518", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x7b939e7d76bd268e274c70d280afaaa0a66ac8e38eee5279e1e39bbecb36701e", - "leaf": { - "value": "0x71d467b3a76818fce38122a5b6895b9aed6d216a0d7d39103b9ad5600fac290c", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x8817eb0e43d8c2b83a36a38a3676d649550ecccb166d27a1eaf29529c8e9092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x19598a18dc1e150fb5468abd99e45dbe94f6ea7fb2889fa8bdb75fc0af2ed005", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5649869c127638fea98d3c4d8658b8632266fd2af9a8d762f8f03da9b93cb506", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0b9175ee129776f0bf312d524aa1c9b9e58d03669a6eb4cedcf91ffb4e8ebf1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x12b05b884b3090935154095d3371b79af1b5ceb6b4c283dde8b9224971ece218", - "leaf": { - "value": "0xa7fb66d2da89fc03c5bdb4a812ec61226a60d2709230c76ba04ae71142f92a0b", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x509ee42d3aca9083b7c165e8558d2cc03eab7988ece7afe56295157d86084e0c", - "sibling": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101" - }, - { - "value": "0xee63b3746e444786155d69d82cf4254a0ac4acbbbd3755d7ebf8aee6b94fa105", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2677fd399111f0f0574d0bd3be2168110b94426deaa1ce727f232258b852e100", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x00db64165b15f7c5843e1cb4c1d1b10fb9ff0e6b61069af28251bbd72c147702", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0xec90e4ae9bc99972d4a348a27153adadb69bd4b999b3ff973881c494766ece14", - "leaf": { - "value": "0x662b38b92d10f1191cbe66ba824ebc15a20ccd16bc419c66265c0b8962655f12", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524", - "sibling": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101" - }, - { - "value": "0xa4cf3e7944dda73f5a2a516a4e843c72b183e61762627af9b819a0876e37bb07", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xbe1dc2ab3ad2613abd655101ac6e5e669068d89a01242600ce13ae0029fbae10", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xb25aa461982cd123c9600d8bc3d00723a5b3759a523c33b3559e10ee95e10e11", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000002328" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001f40" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x7b939e7d76bd268e274c70d280afaaa0a66ac8e38eee5279e1e39bbecb36701e", - "leaf": { - "value": "0x71d467b3a76818fce38122a5b6895b9aed6d216a0d7d39103b9ad5600fac290c", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x8817eb0e43d8c2b83a36a38a3676d649550ecccb166d27a1eaf29529c8e9092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x19598a18dc1e150fb5468abd99e45dbe94f6ea7fb2889fa8bdb75fc0af2ed005", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5649869c127638fea98d3c4d8658b8632266fd2af9a8d762f8f03da9b93cb506", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0b9175ee129776f0bf312d524aa1c9b9e58d03669a6eb4cedcf91ffb4e8ebf1a", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0x93095d98d8dff4b8c1961f4ce40487337bfb4309580fe08715b167f667e49e29", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xec90e4ae9bc99972d4a348a27153adadb69bd4b999b3ff973881c494766ece14", - "leaf": { - "value": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x9156d40d7aa530317a05867fdb37b91cd4abfdeee9436bc9c26dd8f39174a101", - "sibling": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x5e294e49895cac401b1cb57843546b40fd3e7bf8803d9aa8ce46f49c11481b14", - "leaf": { - "value": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106", - "sibling": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x00000000000000000000000000000000000000000000000000000000000003e8" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x00000000000000000000000000000000000000000000000000000000000007d0" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0x93095d98d8dff4b8c1961f4ce40487337bfb4309580fe08715b167f667e49e29", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0x93095d98d8dff4b8c1961f4ce40487337bfb4309580fe08715b167f667e49e29", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x5e294e49895cac401b1cb57843546b40fd3e7bf8803d9aa8ce46f49c11481b14", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524", - "sibling": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106" - }, - { - "value": "0xa4cf3e7944dda73f5a2a516a4e843c72b183e61762627af9b819a0876e37bb07", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0xbe1dc2ab3ad2613abd655101ac6e5e669068d89a01242600ce13ae0029fbae10" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x5e294e49895cac401b1cb57843546b40fd3e7bf8803d9aa8ce46f49c11481b14", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524", - "sibling": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106" - }, - { - "value": "0xa4cf3e7944dda73f5a2a516a4e843c72b183e61762627af9b819a0876e37bb07", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0xbe1dc2ab3ad2613abd655101ac6e5e669068d89a01242600ce13ae0029fbae10" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x44699c830bd3d3d64119cc9669f5400e3b4aec3687c2f0389cfef4243acc3722", - "leaf": { - "value": "0x93095d98d8dff4b8c1961f4ce40487337bfb4309580fe08715b167f667e49e29", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x1918f19687b0638ec3273a3925b051db9f9cfad878d16399fccfec9b6343ed00", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0430e3483e72c2b74daf8a54083b29057f6d4f29bfb079e0e6849a4bb2259212", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x0b3d9a77df5b10c953a0194752934c56112888849a975e60d128794080240d24", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x0276d43bdf51bb4306e1836a37c3a48b3c47536d003002377a8f2815ee088c1f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xaa01c64708fa9c50b5c0f9e0f108220fa4de015c49e9e929266afd141962db1c", - "leaf": { - "value": "0x9ffb85ccc362032e1c2bfa93d903713802dacd9819bb32205d529538b5594518", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xe9a18e39acac1211de4ec4c1641cd163f76a2e2b83025ae7b037dcc44d84a422", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xabf30ea85b65c7eeb8ec526b803f9beaaccf3da59ffddd548d519789f6d54623", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x69060d85e0c2831af3a828e8e56f2cb8534e4eb2c8999e3e19ccca2e22580e0b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x3c9a40f551ea7c3b441d23406e47270986024e5069886a9f5eaa5cbec0ec4700", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x5e294e49895cac401b1cb57843546b40fd3e7bf8803d9aa8ce46f49c11481b14", - "leaf": { - "value": "0x662b38b92d10f1191cbe66ba824ebc15a20ccd16bc419c66265c0b8962655f12", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x2e1420d8cdef70ef5c316a4226d556c0c4b6399e6688c7cfe1197f0e61974524", - "sibling": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106" - }, - { - "value": "0xa4cf3e7944dda73f5a2a516a4e843c72b183e61762627af9b819a0876e37bb07", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xbe1dc2ab3ad2613abd655101ac6e5e669068d89a01242600ce13ae0029fbae10", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xb25aa461982cd123c9600d8bc3d00723a5b3759a523c33b3559e10ee95e10e11", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0x5b4bc3e49489d12ec2ef92fe735c6899640c33dce965cfeb8a1fd0f8e2bff628", - "leaf": { - "value": "0x8314304af61cd60f31861c20fe33861689d8c35d054f4c006bd966363c19d411", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711", - "sibling": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106" - }, - { - "value": "0x52ddf9b60b2a9b5f0e126f8f31bdd34f00d77a62b2e9d0e62f0382f816ee5729", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x8157f8fe71342aaf8e3157467c6bfbed1272e1b8259346db419d06e013aff016", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x6256fada16b8a784fdd93474511ac7990de3c39a6cbbfd6f389bb0c9e511d928", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001f40" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001b58" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xaa01c64708fa9c50b5c0f9e0f108220fa4de015c49e9e929266afd141962db1c", - "leaf": { - "value": "0x9ffb85ccc362032e1c2bfa93d903713802dacd9819bb32205d529538b5594518", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xe9a18e39acac1211de4ec4c1641cd163f76a2e2b83025ae7b037dcc44d84a422", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xabf30ea85b65c7eeb8ec526b803f9beaaccf3da59ffddd548d519789f6d54623", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x69060d85e0c2831af3a828e8e56f2cb8534e4eb2c8999e3e19ccca2e22580e0b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x3c9a40f551ea7c3b441d23406e47270986024e5069886a9f5eaa5cbec0ec4700", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0x44fdf2adba92bb61dd475de93fb000a74babf34c364a7ab8c06cb80473453009", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x5b4bc3e49489d12ec2ef92fe735c6899640c33dce965cfeb8a1fd0f8e2bff628", - "leaf": { - "value": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x8b6d931d6ffe3b0ef7f0808c75a52436345fbbf0a4dbdde70f283d55c2382106", - "sibling": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711" - } - ], - "pathPart": "0x1" - }, - { - "root": "0xe1be41467850a7869f6a1815497fec35e2c8c76be8b262bbc99f2a9dedf76819", - "leaf": { - "value": "0xa0302f07208c9c0b547549a0e8a04ceaec3f1d9254b7372455b0ef321b26bc1f", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18", - "sibling": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x00000000000000000000000000000000000000000000000000000000000007d0" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000000bb8" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0x44fdf2adba92bb61dd475de93fb000a74babf34c364a7ab8c06cb80473453009", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0x44fdf2adba92bb61dd475de93fb000a74babf34c364a7ab8c06cb80473453009", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xe1be41467850a7869f6a1815497fec35e2c8c76be8b262bbc99f2a9dedf76819", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711", - "sibling": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18" - }, - { - "value": "0x52ddf9b60b2a9b5f0e126f8f31bdd34f00d77a62b2e9d0e62f0382f816ee5729", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x8157f8fe71342aaf8e3157467c6bfbed1272e1b8259346db419d06e013aff016" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0xe1be41467850a7869f6a1815497fec35e2c8c76be8b262bbc99f2a9dedf76819", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711", - "sibling": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18" - }, - { - "value": "0x52ddf9b60b2a9b5f0e126f8f31bdd34f00d77a62b2e9d0e62f0382f816ee5729", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x8157f8fe71342aaf8e3157467c6bfbed1272e1b8259346db419d06e013aff016" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x7eb5066289a6df3a34fb43816a3d2b3b76398a4ef7f4aa287989b8b70f7e8609", - "leaf": { - "value": "0x44fdf2adba92bb61dd475de93fb000a74babf34c364a7ab8c06cb80473453009", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xea7a062805659edb9ada10541c100f12b8efd44f97bf5fa32ad9a9d9182e092b", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9b150c03510f6e1100ab0c5e91def95f44c73791ad26ce16cc146453b7f13d26", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x87d37f46cee9e7b39201d1ccdd798a3d2d418eb94ef20b383e3a226b64859b13", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9e4f211bfefc8dfb00617433484dc53d3b52acf88dc0b95831eb3475e40f11b", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xc581db64fe6085f50f37478424f20fb0fe9d498e7dd8a0ee4915fa45d79c4824", - "leaf": { - "value": "0xb9d46731892f36cc3382170cc0a5527f45cf8fc0012015b089a07e9547690508", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5dda9b3f3df973cd5fb6b65abb83bd37238a7d58989a3136f63069227fce9323", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9509cdfe7c59a9dcbc566072540961779b1147d9702c9e1ef2341f36491f2913", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x7e52709fd677b09d3834ad6b673cb66e19850b63743d6681df2ae2db849be41b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xb8ea56019fb772dd526acf2bd0fc004dc70adb2d42474d6f7bd6d8774c3f4f28", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xe1be41467850a7869f6a1815497fec35e2c8c76be8b262bbc99f2a9dedf76819", - "leaf": { - "value": "0x8314304af61cd60f31861c20fe33861689d8c35d054f4c006bd966363c19d411", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xc9abfd95b692c7bf00dd30f289b37d85dc0303385cb02fa69655e418b1656711", - "sibling": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18" - }, - { - "value": "0x52ddf9b60b2a9b5f0e126f8f31bdd34f00d77a62b2e9d0e62f0382f816ee5729", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x8157f8fe71342aaf8e3157467c6bfbed1272e1b8259346db419d06e013aff016", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x6256fada16b8a784fdd93474511ac7990de3c39a6cbbfd6f389bb0c9e511d928", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0xbc3bb25aa9c1154d491035e1dfeace20dcd98ae2bfe502cb7331ed44e04c1d10", - "leaf": { - "value": "0x29a0151c182f6570b89cdfdeefdbbdcebe14678bf47c9559772fef7262c1f113", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13", - "sibling": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18" - }, - { - "value": "0x138734a1adfeeb89dee5c2bc438f0bef64111613b8fbac2a3f0357b221d77529", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x10ef3dedf83d10107ef6e39ee42fcab140c817515aba2d65f8a4b42d05f7db16", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xfe2b1e1d58d1005f85f243624ef190304bedf11570cecbe27addfd5f1ee7490f", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001b58" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001770" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xc581db64fe6085f50f37478424f20fb0fe9d498e7dd8a0ee4915fa45d79c4824", - "leaf": { - "value": "0xb9d46731892f36cc3382170cc0a5527f45cf8fc0012015b089a07e9547690508", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5dda9b3f3df973cd5fb6b65abb83bd37238a7d58989a3136f63069227fce9323", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9509cdfe7c59a9dcbc566072540961779b1147d9702c9e1ef2341f36491f2913", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x7e52709fd677b09d3834ad6b673cb66e19850b63743d6681df2ae2db849be41b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xb8ea56019fb772dd526acf2bd0fc004dc70adb2d42474d6f7bd6d8774c3f4f28", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xe17544993b6d1900310a46805770dd28e0f506e3e290cb9ddc7e42655f7a3120", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xbc3bb25aa9c1154d491035e1dfeace20dcd98ae2bfe502cb7331ed44e04c1d10", - "leaf": { - "value": "0xa0302f07208c9c0b547549a0e8a04ceaec3f1d9254b7372455b0ef321b26bc1f", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x3bd1ae9e49f2312d916d0fdf6a303593f7c11d70dfa31c11c8490a851d9dea18", - "sibling": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x2287bda5a88e357dc54f1171dfeef7c6f11e74496520d81601bd1aae42354108", - "leaf": { - "value": "0xf44d6d0ae545d5e0b215e923aeb73540bd1e678d804c51eb007afd7c0c118e07", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a", - "sibling": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000000bb8" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000000fa0" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xe17544993b6d1900310a46805770dd28e0f506e3e290cb9ddc7e42655f7a3120", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xe17544993b6d1900310a46805770dd28e0f506e3e290cb9ddc7e42655f7a3120", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x2287bda5a88e357dc54f1171dfeef7c6f11e74496520d81601bd1aae42354108", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13", - "sibling": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a" - }, - { - "value": "0x138734a1adfeeb89dee5c2bc438f0bef64111613b8fbac2a3f0357b221d77529", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x10ef3dedf83d10107ef6e39ee42fcab140c817515aba2d65f8a4b42d05f7db16" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x2287bda5a88e357dc54f1171dfeef7c6f11e74496520d81601bd1aae42354108", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13", - "sibling": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a" - }, - { - "value": "0x138734a1adfeeb89dee5c2bc438f0bef64111613b8fbac2a3f0357b221d77529", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x10ef3dedf83d10107ef6e39ee42fcab140c817515aba2d65f8a4b42d05f7db16" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xf15428cf0100ebcc6faf19e247a5f47f0d721c39a2199185c20a691d672a8804", - "leaf": { - "value": "0xe17544993b6d1900310a46805770dd28e0f506e3e290cb9ddc7e42655f7a3120", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x6e12cad4795839c49d0027b55ba2aceecb26cf786902bc356126cec14ffa5d2a", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x04969dfc75090565d67a384ce7fab36a9a578039d632e2322f26fe0635726b05", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x5e0d3d1550d74c638368ba2b39ddfe9e77c8495fa5b16a733580807719dbf61c", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4edf253ad4857bd3bdc9b486a049bde46ab517262ca24595e2e962dab86a2f1e", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x4a45b5af47d6b619f4ab3bc80c995ede72f9d66fdd916e8fcdf05cb9f805cb20", - "leaf": { - "value": "0x60044afd85b0e3ec315261b601e369febd4fc42b19ccd5ce35b47f63a2a4f40b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x15d17a5510e18caf57bc2dbfe21f722056c40cd96d54cc7f441c63fb5d00e925", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xdccb83a3f3ea2e12d8025676b4cbe886ede2f421ff6cc806b9e576df4fb7e224", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc48ea6022ebd043eb779489f97fdcf5f13215ceba12d6a660ea60ecdc7d82a1f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe970388daf057bac397f3e33e35c8caa84ed297a7a02d1820895eafab55eec02", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x2287bda5a88e357dc54f1171dfeef7c6f11e74496520d81601bd1aae42354108", - "leaf": { - "value": "0x29a0151c182f6570b89cdfdeefdbbdcebe14678bf47c9559772fef7262c1f113", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xa88a66d3c552d077c6f2b272419ca90c97b92057eff000bfcef70b0c79981d13", - "sibling": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a" - }, - { - "value": "0x138734a1adfeeb89dee5c2bc438f0bef64111613b8fbac2a3f0357b221d77529", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x10ef3dedf83d10107ef6e39ee42fcab140c817515aba2d65f8a4b42d05f7db16", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xfe2b1e1d58d1005f85f243624ef190304bedf11570cecbe27addfd5f1ee7490f", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0xd26d89ff3433a97065b580d8a3cd0466d5bee7a201ad9b311bb6993ed70a2d08", - "leaf": { - "value": "0x5aeb57a62a5902976130e77b45ebb9d074c02c1cbd1f2a5884e0b55bc5b0d925", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b", - "sibling": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a" - }, - { - "value": "0x045e11cd08addd83f280f1ef0c1a7ee2dc36179365e33f981be2a23fde87a300", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x11ace7373316e6a18a47be9411ff1ba1711c19933ba28fde0fcbc4ea04463518", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x75e9e02ae6bb2f113f366b3940244842ddc54bb477b2e22b10bbbd5773fb1520", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001770" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001388" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x4a45b5af47d6b619f4ab3bc80c995ede72f9d66fdd916e8fcdf05cb9f805cb20", - "leaf": { - "value": "0x60044afd85b0e3ec315261b601e369febd4fc42b19ccd5ce35b47f63a2a4f40b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x15d17a5510e18caf57bc2dbfe21f722056c40cd96d54cc7f441c63fb5d00e925", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xdccb83a3f3ea2e12d8025676b4cbe886ede2f421ff6cc806b9e576df4fb7e224", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc48ea6022ebd043eb779489f97fdcf5f13215ceba12d6a660ea60ecdc7d82a1f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe970388daf057bac397f3e33e35c8caa84ed297a7a02d1820895eafab55eec02", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0x498da7aa5bb282814a2c6619111e5563285322aa315c8a4b9364960eff42d12b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xd26d89ff3433a97065b580d8a3cd0466d5bee7a201ad9b311bb6993ed70a2d08", - "leaf": { - "value": "0xf44d6d0ae545d5e0b215e923aeb73540bd1e678d804c51eb007afd7c0c118e07", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x251d3180c85c11ebf503f3cf5934a1dd6ab3bd10b683b25a36f53072f515d82a", - "sibling": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x117c1319dfa03bf8af1866470fe743bc0ec1b3962b1a5985965ca992153fd82c", - "leaf": { - "value": "0x5aeb57a62a5902976130e77b45ebb9d074c02c1cbd1f2a5884e0b55bc5b0d925", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03", - "sibling": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000000fa0" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001388" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0x498da7aa5bb282814a2c6619111e5563285322aa315c8a4b9364960eff42d12b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0x498da7aa5bb282814a2c6619111e5563285322aa315c8a4b9364960eff42d12b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x117c1319dfa03bf8af1866470fe743bc0ec1b3962b1a5985965ca992153fd82c", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b", - "sibling": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03" - }, - { - "value": "0x045e11cd08addd83f280f1ef0c1a7ee2dc36179365e33f981be2a23fde87a300", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x11ace7373316e6a18a47be9411ff1ba1711c19933ba28fde0fcbc4ea04463518" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x117c1319dfa03bf8af1866470fe743bc0ec1b3962b1a5985965ca992153fd82c", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b", - "sibling": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03" - }, - { - "value": "0x045e11cd08addd83f280f1ef0c1a7ee2dc36179365e33f981be2a23fde87a300", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x11ace7373316e6a18a47be9411ff1ba1711c19933ba28fde0fcbc4ea04463518" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x8975f9c6dd014e9d2a63152b28058c57777706159ddc39529839e1ea6cec7f0b", - "leaf": { - "value": "0x498da7aa5bb282814a2c6619111e5563285322aa315c8a4b9364960eff42d12b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xba7505b39eb24c4a32829a08b62b08000399dc6f8d7a9b7ca9180d6b89999b29", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xb7be4ab2a32e9e453af6e626e3f5762be25aae1a543b92f073b589faef1e061a", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xc4039fedb7423b362b89b6ad33efb73342a08be50ac530185ad939eb274eaf2b", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x7adffa0892d316fed2c72b61cdeb7e4ac39d9e746c27a06d46b6a0378143101f", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x5e154866554b904f31b64441175fedace74878db45b84a3921cd47d8aed62313", - "leaf": { - "value": "0xee69863c25e11af2250128a00a827a53a32322fe9eb645c048ecb7542d18b21b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x71a2204c840703ba22662e0d10395513b5fe2495d48adbea633ec894ad029002", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xeea5259264671863631ab4145d1d67fb9842d71a34c68301473758bbaaf4890b", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x43f4be1d3c4914cca8329ed6d1c9797d653352cacd3b1220b669023db9077d15", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4e2cca62b007a191c9023752d78c167d19bd4f326ad911ce475c0c077d8bd525", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x117c1319dfa03bf8af1866470fe743bc0ec1b3962b1a5985965ca992153fd82c", - "leaf": { - "value": "0x5aeb57a62a5902976130e77b45ebb9d074c02c1cbd1f2a5884e0b55bc5b0d925", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x0dd12dcd6178030655945012ab9493b58adfad2c979c56297aea7825d5f9a30b", - "sibling": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03" - }, - { - "value": "0x045e11cd08addd83f280f1ef0c1a7ee2dc36179365e33f981be2a23fde87a300", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x11ace7373316e6a18a47be9411ff1ba1711c19933ba28fde0fcbc4ea04463518", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x75e9e02ae6bb2f113f366b3940244842ddc54bb477b2e22b10bbbd5773fb1520", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0x797bcce57b43e77a61c738471515c5b8cf77a97a71c87700c75608dcd3f93602", - "leaf": { - "value": "0xf44d6d0ae545d5e0b215e923aeb73540bd1e678d804c51eb007afd7c0c118e07", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a", - "sibling": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03" - }, - { - "value": "0x9195e5a8bdd03ef30539450ff757218a16828eff7b2b96c55a2812251c07b617", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x532c2cf562f1d46ac777446262f5414a10bf2c2144a6956c03fd624769d8e810", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xccaa4412892725de85c1607fbd18967da8733396beb67ecdce4051ee230cab2b", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000001388" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000000fa0" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x5e154866554b904f31b64441175fedace74878db45b84a3921cd47d8aed62313", - "leaf": { - "value": "0xee69863c25e11af2250128a00a827a53a32322fe9eb645c048ecb7542d18b21b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x71a2204c840703ba22662e0d10395513b5fe2495d48adbea633ec894ad029002", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xeea5259264671863631ab4145d1d67fb9842d71a34c68301473758bbaaf4890b", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x43f4be1d3c4914cca8329ed6d1c9797d653352cacd3b1220b669023db9077d15", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x4e2cca62b007a191c9023752d78c167d19bd4f326ad911ce475c0c077d8bd525", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0x27d2426cd37216c423f033ebaf3ec3e6a79a844fcd38315c0453df5d36d4a225", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x797bcce57b43e77a61c738471515c5b8cf77a97a71c87700c75608dcd3f93602", - "leaf": { - "value": "0x5aeb57a62a5902976130e77b45ebb9d074c02c1cbd1f2a5884e0b55bc5b0d925", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x8b0d6f3b817c06a5c6ab120b989f9407c6175c9cad19b6b48be8fb74dc2f5c03", - "sibling": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x72f19b45cda299eac61f52f96824214b23c81fcfe86aade1fbc54f66d6ff290e", - "leaf": { - "value": "0x29a0151c182f6570b89cdfdeefdbbdcebe14678bf47c9559772fef7262c1f113", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c", - "sibling": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001388" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001770" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0x27d2426cd37216c423f033ebaf3ec3e6a79a844fcd38315c0453df5d36d4a225", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0x27d2426cd37216c423f033ebaf3ec3e6a79a844fcd38315c0453df5d36d4a225", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x72f19b45cda299eac61f52f96824214b23c81fcfe86aade1fbc54f66d6ff290e", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a", - "sibling": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c" - }, - { - "value": "0x9195e5a8bdd03ef30539450ff757218a16828eff7b2b96c55a2812251c07b617", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x532c2cf562f1d46ac777446262f5414a10bf2c2144a6956c03fd624769d8e810" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x72f19b45cda299eac61f52f96824214b23c81fcfe86aade1fbc54f66d6ff290e", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a", - "sibling": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c" - }, - { - "value": "0x9195e5a8bdd03ef30539450ff757218a16828eff7b2b96c55a2812251c07b617", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x532c2cf562f1d46ac777446262f5414a10bf2c2144a6956c03fd624769d8e810" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x75e2bc102bc491a31d2f56c2e778ae6cdf5bc63d72223b4db8fa4135eb3d2824", - "leaf": { - "value": "0x27d2426cd37216c423f033ebaf3ec3e6a79a844fcd38315c0453df5d36d4a225", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xb0016e9ec6c5284fb393c91ed422081c2d5f7078ea35f2d8116b8f0ba4120e18", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x9d0cc4d9b0353d4c1c216325e639febee2253376fef82fe46c4b46bb560f1323", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x6cf1cbb939f68d5e2aa35204bc0f98fa7965d2820fc1533ce4bb1ea9a7e85605", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x66ad00c664c48faa2a5b5d91d66ae41fe5abc834277ecb6223acd13a9d68fe14", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xb356db3d70cc104e90301026598b47a3ac96ac073e9c6ae54fde1e3cc77b3b01", - "leaf": { - "value": "0x9a0a05fa615491fb7028766fc7d708223da7b1b3004e58cb144e6a4a9a700312", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x9b40116c373bd9775ca3e4572eb407378255f30649b957937e541b040d955a16", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xfee09c5ca38fffe077062dc355fbe1f18e70225955334b396c5eb348d5c5d129", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xadc3c3a0f126a357c6bf46feff586646027617d7dd8f0f77469503d91b5e8927", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xd86f68c47268a4f274a115e9022c6a7088b249dbccc0a04fbe9c532d2120ff24", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x72f19b45cda299eac61f52f96824214b23c81fcfe86aade1fbc54f66d6ff290e", - "leaf": { - "value": "0xf44d6d0ae545d5e0b215e923aeb73540bd1e678d804c51eb007afd7c0c118e07", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0x4382eb3c9e41e309adc678e8becb80a0e58fe90a3257602710367bf5f2fbaf2a", - "sibling": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c" - }, - { - "value": "0x9195e5a8bdd03ef30539450ff757218a16828eff7b2b96c55a2812251c07b617", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x532c2cf562f1d46ac777446262f5414a10bf2c2144a6956c03fd624769d8e810", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0xccaa4412892725de85c1607fbd18967da8733396beb67ecdce4051ee230cab2b", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0xd5a22c780c41c1b5bba6a88dcb82897886cd12bf1e5817dfeed3795a98cbc12c", - "leaf": { - "value": "0xa0302f07208c9c0b547549a0e8a04ceaec3f1d9254b7372455b0ef321b26bc1f", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316", - "sibling": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c" - }, - { - "value": "0xea3f9a7cc817b083672af795c53726a68bf2d41e9714f2b7fa4da01efb82642e", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2d4536d3aced4152953ca567753c568a66aa3a4b06fdb7a2eb00f4f79ac2ae11", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x1fa682273b882ea03126de9f5a82945c89d1dde12a1696283bbc02d3148a8c08", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000000fa0" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000000bb8" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xb356db3d70cc104e90301026598b47a3ac96ac073e9c6ae54fde1e3cc77b3b01", - "leaf": { - "value": "0x9a0a05fa615491fb7028766fc7d708223da7b1b3004e58cb144e6a4a9a700312", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x9b40116c373bd9775ca3e4572eb407378255f30649b957937e541b040d955a16", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xfee09c5ca38fffe077062dc355fbe1f18e70225955334b396c5eb348d5c5d129", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xadc3c3a0f126a357c6bf46feff586646027617d7dd8f0f77469503d91b5e8927", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xd86f68c47268a4f274a115e9022c6a7088b249dbccc0a04fbe9c532d2120ff24", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0x73758eff13dfa7a7d05109855e6fe0a517e2699ff90bb0729cba0d25051a7b13", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xd5a22c780c41c1b5bba6a88dcb82897886cd12bf1e5817dfeed3795a98cbc12c", - "leaf": { - "value": "0x29a0151c182f6570b89cdfdeefdbbdcebe14678bf47c9559772fef7262c1f113", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x3ff110583df75d3791937fd446932aae9d4b998f04a1a13c8786664d237a461c", - "sibling": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x26258853f79ef7c13b515f1f8bc171dd463664ccc61f49d49febf97465d03b0b", - "leaf": { - "value": "0x8314304af61cd60f31861c20fe33861689d8c35d054f4c006bd966363c19d411", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307", - "sibling": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001770" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001b58" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0x73758eff13dfa7a7d05109855e6fe0a517e2699ff90bb0729cba0d25051a7b13", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0x73758eff13dfa7a7d05109855e6fe0a517e2699ff90bb0729cba0d25051a7b13", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x26258853f79ef7c13b515f1f8bc171dd463664ccc61f49d49febf97465d03b0b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316", - "sibling": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307" - }, - { - "value": "0xea3f9a7cc817b083672af795c53726a68bf2d41e9714f2b7fa4da01efb82642e", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2d4536d3aced4152953ca567753c568a66aa3a4b06fdb7a2eb00f4f79ac2ae11" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x26258853f79ef7c13b515f1f8bc171dd463664ccc61f49d49febf97465d03b0b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316", - "sibling": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307" - }, - { - "value": "0xea3f9a7cc817b083672af795c53726a68bf2d41e9714f2b7fa4da01efb82642e", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2d4536d3aced4152953ca567753c568a66aa3a4b06fdb7a2eb00f4f79ac2ae11" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x4247a7caeaa6f16096ef728b3314df44b336751acaee575399961a61e4c45520", - "leaf": { - "value": "0x73758eff13dfa7a7d05109855e6fe0a517e2699ff90bb0729cba0d25051a7b13", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x612682fdf28acfb1d14784c00b9b84c6539c45617ab1f96a28c3fb6207f15619", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x0e98767a8d1d816082d8118520963432aacd8ddf532d75f238f6b949a7af7125", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xf66faa2e610810a5c277a1d61dca77b974c80f0584f702120120f3cf5b810017", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe4be13674a10b6c422c798d91c0b5f340d45c72fffb9208ce842d0347885ab07", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xf132510e0361cdb0eb203cbfd3cfb4aff287ba3d3bd75d2042f049baa8bcab1b", - "leaf": { - "value": "0x82bb2822ea5ed480c8a6050e7d3a93ab1597145f5f24e6a41747014373d70c0f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xbaca6bbe5698d4d18eee59219f38c382074e92478a7517a639a5be56201c3628", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x777facd2e63bcc7bfde12c98f69db7c8ad14f4d0f119ba5353fe8ffa6a16fc23", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xacfd6d4a7cdacc041af372090d3fb329544d814efa7458407a5147cca81f6e16", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x36444d05b6ad5b6d919315da10849534ee8c0e1d6dfcc9be41c52b8079000709", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x26258853f79ef7c13b515f1f8bc171dd463664ccc61f49d49febf97465d03b0b", - "leaf": { - "value": "0xa0302f07208c9c0b547549a0e8a04ceaec3f1d9254b7372455b0ef321b26bc1f", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xd9fda35bd076765b59cffa111fb48b9ceff011a4815fdab41577d6f83b065316", - "sibling": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307" - }, - { - "value": "0xea3f9a7cc817b083672af795c53726a68bf2d41e9714f2b7fa4da01efb82642e", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2d4536d3aced4152953ca567753c568a66aa3a4b06fdb7a2eb00f4f79ac2ae11", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x1fa682273b882ea03126de9f5a82945c89d1dde12a1696283bbc02d3148a8c08", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0x4a96c18b98fff12cf43af1ff2bc1af5c636c7d47216b4937eafb171de71e7710", - "leaf": { - "value": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a", - "sibling": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307" - }, - { - "value": "0x57b0eb121731ede4b8853541acbf05b253b2fa8f09053fa245fc811bbc2f4c1b", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2d556c3c4933f9d4c065805ecfb84164812e0b76e17a3122c0636566cb945110", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x80e89cf3ca326982bd12e91069275ff6674a67a49ffbfb6e2f1850a80850d72f", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000000bb8" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x00000000000000000000000000000000000000000000000000000000000007d0" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xf132510e0361cdb0eb203cbfd3cfb4aff287ba3d3bd75d2042f049baa8bcab1b", - "leaf": { - "value": "0x82bb2822ea5ed480c8a6050e7d3a93ab1597145f5f24e6a41747014373d70c0f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xbaca6bbe5698d4d18eee59219f38c382074e92478a7517a639a5be56201c3628", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x777facd2e63bcc7bfde12c98f69db7c8ad14f4d0f119ba5353fe8ffa6a16fc23", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xacfd6d4a7cdacc041af372090d3fb329544d814efa7458407a5147cca81f6e16", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x36444d05b6ad5b6d919315da10849534ee8c0e1d6dfcc9be41c52b8079000709", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xad011b4b3e7e6bac893e7bcf79afa7c12d5f22c5bef3255a607e4adf842b3414", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x4a96c18b98fff12cf43af1ff2bc1af5c636c7d47216b4937eafb171de71e7710", - "leaf": { - "value": "0x8314304af61cd60f31861c20fe33861689d8c35d054f4c006bd966363c19d411", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0xfff780c0e6063b2ce6f7836f0405bc882859b0fe4c7be104caf37db2d93d4307", - "sibling": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x60bc265508aa528d2c31bb7a966464ea46e762d47b5c49becde6ca8a65bf7f0d", - "leaf": { - "value": "0x662b38b92d10f1191cbe66ba824ebc15a20ccd16bc419c66265c0b8962655f12", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303", - "sibling": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001b58" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001f40" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xad011b4b3e7e6bac893e7bcf79afa7c12d5f22c5bef3255a607e4adf842b3414", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xad011b4b3e7e6bac893e7bcf79afa7c12d5f22c5bef3255a607e4adf842b3414", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x60bc265508aa528d2c31bb7a966464ea46e762d47b5c49becde6ca8a65bf7f0d", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a", - "sibling": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303" - }, - { - "value": "0x57b0eb121731ede4b8853541acbf05b253b2fa8f09053fa245fc811bbc2f4c1b", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2d556c3c4933f9d4c065805ecfb84164812e0b76e17a3122c0636566cb945110" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x60bc265508aa528d2c31bb7a966464ea46e762d47b5c49becde6ca8a65bf7f0d", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a", - "sibling": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303" - }, - { - "value": "0x57b0eb121731ede4b8853541acbf05b253b2fa8f09053fa245fc811bbc2f4c1b", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x2d556c3c4933f9d4c065805ecfb84164812e0b76e17a3122c0636566cb945110" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x412d5fa203d75a55fa837f3254012e99e3329989c2f0aa56f3d8b4602261bc08", - "leaf": { - "value": "0xad011b4b3e7e6bac893e7bcf79afa7c12d5f22c5bef3255a607e4adf842b3414", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xf0fdd5cae7371f7b4c1d19228bf583f973ae37137244f1ef86e1c254c9eae823", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x55fb3d3fff2656e66fde0730219d4e2001a50a42aaf2b9aff7f8219481d7311e", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x4b9f0ba434efcf10e17ec7aef042dae309e8a730510d15d18306e27cc75fbb10", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xf9094b35a4d3bc8f4b2a680807897f3ef6a17c4eeb5a76f3d0e093e4e4701827", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x2fcae0731fb759a630f0db9fda075ead53e8ec4f3bfe9fddcfb4f0057dcb852c", - "leaf": { - "value": "0x5ce544e4771562637b1633abb863d018e16e36faa4496daa5d725380a15ae52b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x2dfa88d8ed81feb965af334b8046c4235cbc8ce443724a3a63cc77e7c599032c", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x999e014f0d15e8512ee13d0bb33c330d7ed600d7eb7488aae023e1a0fbadf907", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xef19af9fc1f99563d0b82b5af73de078fc7eb1ec75f5e8b5120b98a2d2822d18", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe5ceec248dc922f4e9776ad02c14bc496aa52d850c42af507c62c5624606c11c", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x60bc265508aa528d2c31bb7a966464ea46e762d47b5c49becde6ca8a65bf7f0d", - "leaf": { - "value": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xb68d58d08a19fef8cae0f28efc9219fe828e603b1ff530ea77e2c896aab3d61a", - "sibling": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303" - }, - { - "value": "0x57b0eb121731ede4b8853541acbf05b253b2fa8f09053fa245fc811bbc2f4c1b", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x2d556c3c4933f9d4c065805ecfb84164812e0b76e17a3122c0636566cb945110", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x80e89cf3ca326982bd12e91069275ff6674a67a49ffbfb6e2f1850a80850d72f", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0xb4ee32018786e4480fe168fac8db32124a77a55f46c09aa41421612aadc6c216", - "leaf": { - "value": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000", - "sibling": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303" - }, - { - "value": "0x9528266049e1146b6c3222c4e67953785270bfb886398da5aac0c94440c96123", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x99fa83a6d96ed84cf2c92fa75942d412451827315e5908acc6d0bcff27e35e26", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x96e7d61ae3df35d9b5d1216eb4844579835c3b7654eead8fb2088160082a9511", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x00000000000000000000000000000000000000000000000000000000000007d0" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x00000000000000000000000000000000000000000000000000000000000003e8" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x2fcae0731fb759a630f0db9fda075ead53e8ec4f3bfe9fddcfb4f0057dcb852c", - "leaf": { - "value": "0x5ce544e4771562637b1633abb863d018e16e36faa4496daa5d725380a15ae52b", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x2dfa88d8ed81feb965af334b8046c4235cbc8ce443724a3a63cc77e7c599032c", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x999e014f0d15e8512ee13d0bb33c330d7ed600d7eb7488aae023e1a0fbadf907", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xef19af9fc1f99563d0b82b5af73de078fc7eb1ec75f5e8b5120b98a2d2822d18", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xe5ceec248dc922f4e9776ad02c14bc496aa52d850c42af507c62c5624606c11c", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0x502c158437ecbcd2277f5313ef71b2890b783b99661ecea795d7534501e7b11f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0xb4ee32018786e4480fe168fac8db32124a77a55f46c09aa41421612aadc6c216", - "leaf": { - "value": "0x662b38b92d10f1191cbe66ba824ebc15a20ccd16bc419c66265c0b8962655f12", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x4d07055aa4af22117155b556964904d29c5468746da6480f0b7e0f89ca722303", - "sibling": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000" - } - ], - "pathPart": "0x1" - }, - { - "root": "0x9f339c81080c3d9d17c8c05e9bacd16daa091f808f88518fb62fd151ebc0ef2b", - "leaf": { - "value": "0xa7fb66d2da89fc03c5bdb4a812ec61226a60d2709230c76ba04ae71142f92a0b", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210", - "sibling": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000001f40" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000002328" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0x502c158437ecbcd2277f5313ef71b2890b783b99661ecea795d7534501e7b11f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0x502c158437ecbcd2277f5313ef71b2890b783b99661ecea795d7534501e7b11f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x9f339c81080c3d9d17c8c05e9bacd16daa091f808f88518fb62fd151ebc0ef2b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000", - "sibling": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210" - }, - { - "value": "0x9528266049e1146b6c3222c4e67953785270bfb886398da5aac0c94440c96123", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x99fa83a6d96ed84cf2c92fa75942d412451827315e5908acc6d0bcff27e35e26" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - }, - { - "root": "0x9f339c81080c3d9d17c8c05e9bacd16daa091f808f88518fb62fd151ebc0ef2b", - "leaf": { - "value": "0xacce20d02c097a1d31fba5c0b1df801db982fc92bb9414a8587b800f52b6f61c", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - }, - "path": [ - { - "value": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000", - "sibling": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210" - }, - { - "value": "0x9528266049e1146b6c3222c4e67953785270bfb886398da5aac0c94440c96123", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622", - "sibling": "0x99fa83a6d96ed84cf2c92fa75942d412451827315e5908acc6d0bcff27e35e26" - }, - { - "value": "0xddadf4255aad6b1809eceb2e9d3f9b3f1418e0d8539bfbd8334f3fae7d62f125", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x65a94cbfc1b45c9e0abd5e951a14145d5c8d10628e023b788358e5550d4a7824", - "sibling": "0x7b6bc0062f3474b0d05f647d3da3e1553aa833a9eb3c21151df687395ebfc90f" - } - ], - "pathPart": "0x8" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0x5c89f8451c92af1754a63de5d020e1ce46a7dff08f9671b6a24879e94cf74c18", - "leaf": { - "value": "0x502c158437ecbcd2277f5313ef71b2890b783b99661ecea795d7534501e7b11f", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x5856c2acad192a4ffd6826aa8fd1ced5a228dd842ef113f084807e3cea84d316", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x34351fbae36d693086bac46b96557ba6ee6c60a8227aa5d8d12813947b00d729", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x8f00193c8ed67f84e1c0fdbb19960ec4e4cad8c2c44797e1ac9e6ccdc91dfd04", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xc88cd6993cee4319f6ee4c3a6d8734c88200523ef522055558e78d3058e3ac18", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0xe6b707610f8e3e75ce9b19e1854328443e1e8d17cbab3731d350875f646f5e2b", - "leaf": { - "value": "0xe0b0a0ace457748bc12a88df6e3f5f5978debf377d4313a3088f5322b68e0c14", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x937478256d2e4086554f8a2257139984654719e490c328081676d507bc41e80f", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x372368b40af78d136371ebd32e67dd9550bd60f56a62f7210c212129a0c52d13", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xefff4e6beb921a5afe17b8a7efb27d46b7bc46437f5b9ee90f73c25fcb5df913", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xfbcc706e5756803fb53d04eed3d3ec04678cf60b8081c13d07fd4f0845435529", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x9f339c81080c3d9d17c8c05e9bacd16daa091f808f88518fb62fd151ebc0ef2b", - "leaf": { - "value": "0x94928a0aac80ca8759435c5b5cffe3d718abc28a74d1efb5197aa20807cc422c", - "sibling": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110" - }, - "path": [ - { - "value": "0xabe00ba0c771bae1cf2b20d0b17d4275680f0cf50b5128d18931010aba27f000", - "sibling": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210" - }, - { - "value": "0x9528266049e1146b6c3222c4e67953785270bfb886398da5aac0c94440c96123", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x99fa83a6d96ed84cf2c92fa75942d412451827315e5908acc6d0bcff27e35e26", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x96e7d61ae3df35d9b5d1216eb4844579835c3b7654eead8fb2088160082a9511", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - }, - { - "root": "0x3637e66dcffd4aa31be38c39d25be5d0ee55abb29dbdab72e120ca2ac1a53526", - "path": [ - { - "value": "0x57b2573b513c21c1c623ea35e031c2b9849c805f0b3bc10bb5ce75d42a043e19", - "sibling": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210" - }, - { - "value": "0xecee0b141de50993b7cde5b282b8b2a661a3684260e0833766c3d8d688707521", - "sibling": "0x8047642edb3ed776a59784d319750041a9721b507b98941a8c3d723039a52c1a" - }, - { - "value": "0x7d1b789f4a5411516280fd3b0104a3b5fdc5bbd6df8ea767168c373f15d8ff2d", - "sibling": "0xca35a595d9fb7a301cc0ec5c6773d6a0f9e96cf132b0a775bbc422c873cfa622" - }, - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x3bdbeda9aef8d46ff022e68dff577618fe293b56e576f511353dc0345b89222d" - } - ], - "pathPart": "0xc" - } - ], - "stateKey": "0xcc16c2844cb1f2f78db561717db746c06fb6a18c6cc5d3df6245ea77795ef110", - "stateUpdate": [ - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x00000000000000000000000000000000000000000000000000000000000003e8" - }, - { - "key": "0x62a9a27ba8ad7d7d9c6567de722ea497f95a95e67f937096a94d55dbefc0109b", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", - "accountKey": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c", - "accountPath": [ - { - "root": "0xe6b707610f8e3e75ce9b19e1854328443e1e8d17cbab3731d350875f646f5e2b", - "leaf": { - "value": "0xe0b0a0ace457748bc12a88df6e3f5f5978debf377d4313a3088f5322b68e0c14", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0x937478256d2e4086554f8a2257139984654719e490c328081676d507bc41e80f", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0x372368b40af78d136371ebd32e67dd9550bd60f56a62f7210c212129a0c52d13", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0xefff4e6beb921a5afe17b8a7efb27d46b7bc46437f5b9ee90f73c25fcb5df913", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0xfbcc706e5756803fb53d04eed3d3ec04678cf60b8081c13d07fd4f0845435529", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - }, - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0x147935d3e168c4893ff730bfcf4ebbc484779aec5c596ddd65b975adc1b2e014", - "sibling": "0x357d8fb5134f3dc48eb1118c6a16ba14eee5d49fe9adaebd5879932694bf320c" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02", - "sibling": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e" - } - ], - "pathPart": "0x5" - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", - "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", - "codeSize": 4507 - } - ], - "statePath": [ - { - "root": "0x3637e66dcffd4aa31be38c39d25be5d0ee55abb29dbdab72e120ca2ac1a53526", - "leaf": { - "value": "0xa7fb66d2da89fc03c5bdb4a812ec61226a60d2709230c76ba04ae71142f92a0b", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0x0c94a6bc3f44c6736b2d784e8e07fa4a91a1119bb5f31ebf7d0dc2b973432210", - "sibling": "0x57b2573b513c21c1c623ea35e031c2b9849c805f0b3bc10bb5ce75d42a043e19" - } - ], - "pathPart": "0x1" - }, - { - "root": "0xf2f5e86ce59c91a58c3669372bb5ffdcd41fafadb3317f61f9c591fbe3d4f212", - "leaf": { - "value": "0x4389bc470717b5608764055373f28a987a2f6574370e0cd432847d9b7b984400", - "sibling": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00" - }, - "path": [ - { - "value": "0xe53a1163c78f979fd13c81a46b051d3f2b07e9c4b9acb48e74412edb4892462f", - "sibling": "0x57b2573b513c21c1c623ea35e031c2b9849c805f0b3bc10bb5ce75d42a043e19" - } - ], - "pathPart": "0x1" - } - ], - "stateKey": "0xebfd676201647b931737ff64ddcb016c91df3513a9fc597a41d6e0af6abedc00", - "stateUpdate": [ - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000002328" - }, - { - "key": "0x8e6f6b4a2df972647d5f6faeee27242b0d7c847f7ef337e707c46ea1d130c161", - "value": "0x0000000000000000000000000000000000000000000000000000000000002710" - } - ] - } - ], - [ - "StorageDoesNotExist", - { - "address": "0x5300000000000000000000000000000000000000", - "accountKey": "0x5c77631539be00e5d939af0821b404937bcdaf0fb7767acca4d9e31fcf4fd015", - "accountPath": [ - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0x1e55fb31edd7d384eb8161292c4897b8bf9b9d30e9a4fc3179ed45f5f5055501", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226", - "sibling": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d" - }, - { - "value": "0x997ef8d1b3f772fe5a479e4a397eb6d411287822cf7e1e819e2b55482d039103", - "sibling": "0x062274e3c6444d7d94a4c03e74c53a6cff58a26ed69173ff8770aab7430b4c01" - }, - { - "value": "0x83154b1250f0646d6c89b2352ec30d8d01372a8b403447f4a16cdcb1bcf74104", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0x1e55fb31edd7d384eb8161292c4897b8bf9b9d30e9a4fc3179ed45f5f5055501", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - }, - "path": [ - { - "value": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226", - "sibling": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d" - }, - { - "value": "0x997ef8d1b3f772fe5a479e4a397eb6d411287822cf7e1e819e2b55482d039103", - "sibling": "0x062274e3c6444d7d94a4c03e74c53a6cff58a26ed69173ff8770aab7430b4c01" - }, - { - "value": "0x83154b1250f0646d6c89b2352ec30d8d01372a8b403447f4a16cdcb1bcf74104", - "sibling": "0x202c2270218bb17c18d20e115adb8bffa3a6426a6a36dce41dc9d5f6c6fa4f02" - } - ], - "pathPart": "0x4" - } - ], - "accountUpdate": [ - null, - null - ], - "statePath": [ - null, - null - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x69a171662bc7372f5507d10d56fd0e7a21127a64206c76d87bf9bf4ae7ce0400", - "sibling": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d", - "sibling": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21" - }, - { - "value": "0xd2b079a2c64b72efd2f3923e23d9bfaff9d8ded3395f5a769376022c58df7a2b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xb1f648c42f2a7c82a54d74ab3aca002449be4b17547031ecf6acf41531a75616", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd8dbc13794051d23a89da699a2b38b4cc6b4c834afc89d8b01718e67a728f103", - "sibling": "0x371eb0485fdc0450a41f4bbacd4f7785e8a7b0ce61b26cc87273c1461bbf6b2f" - } - ], - "pathPart": "0x1e" - } - ], - "stateKey": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000001", - "value": "0x0000000000000000000000000000000000000000000000000000000000000064" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x0dd634460f43e2516b0a0963113bbc8263da019685a620561813eccb8b176809", - "sibling": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f", - "sibling": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c" - } - ], - "pathPart": "0x0" - } - ], - "stateKey": "0xb8217a93f84e39670f57f7b41e98a15460211cc96b2843a9c4368ac06c2c5e06", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000002", - "value": "0x00000000000000000000000000000000000000000000000000000000000017d4" - } - ] - } - ], - [ - "StorageChanged", - { - "address": "0x5300000000000000000000000000000000000002", - "accountKey": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23", - "accountPath": [ - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - }, - { - "root": "0x2bf525cadd972134265258579e89ddbc7c8977b670221c9d41cc58996ec23206", - "leaf": { - "value": "0xa07c0d8cbe020573787eb109ec4accc9ae4cfc5ba1c03897e2da9fd3f8f18b03", - "sibling": "0x1d8341f7429fa44d06c587465417be0e73cbed9bd99d8652fb191561f40f6b23" - }, - "path": [ - { - "value": "0xd70abfaa068a2c9081f04f8b66bb6bd04bd3edd2f5eac740e1750a92b57f771d", - "sibling": "0xd0896a46756d003130dc996088b7b9d01c52e0ccf1074312d2034a182b3ed226" - }, - { - "value": "0xea7a547eeaea8ebf2a0c1018e7d4dfab72bb7204822435fcf52c2f96d0132d09", - "sibling": "0x79cd7602ee5d93e8ee4e6f7616af55865106e8bade1e07799cf7a4d0a49f5614" - }, - { - "value": "0x9b8565bd3bacf714aa583154ff339126678840b02714f5da97c9d8b2f1cb0c0f", - "sibling": "0xb1c3449ca1f81b52939a606feba4db32219c114e18b26615a16ed56bac08b92f" - }, - { - "value": "0x1f1f105cc069da6822a6877cd199af62627bd743ff93736607aa0fa1a3d9f40e", - "sibling": "0x31987881707033fe7e5194b3d6efa66d8694308f7d527df53e47e43e24ebfd02" - }, - { - "value": "0x401da5814716f1dde47103f51cc705fea9041814f35825e5d58d336ca3ad9104", - "sibling": "0x4b3c73f3e0d7c8a6c3bb61877f83b01b86930a68805abf14b4938d81676a6513" - } - ], - "pathPart": "0x1d" - } - ], - "accountUpdate": [ - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - }, - { - "nonce": 0, - "balance": "0x0", - "codeHash": "0x0fabb5b0f58ec2922e2969f4dadb6d1395b49ecd40feff93e01212ae848355d4", - "poseidonCodeHash": "0x10e77cae1c507f967948c6cd114e74ed65f662e365c7d6993e97f78ce8982528", - "codeSize": 2164 - } - ], - "statePath": [ - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - }, - { - "root": "0x7344023aece6d0187cf28d1a6490a8f8d305f7b7801105ed246c715aa8846425", - "leaf": { - "value": "0x5697cf942ce4daa491554e85bbd7c60e1daf12f0f646f48a77e27c14e4a73900", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - }, - "path": [ - { - "value": "0xaafbbb8f4db6ff4a8bf26830ca7b044f8d3af87373316968ba7565457e83c02e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe05685309d3675d77a34259fcd836e0683f9032da122c9cd88609b855c9bff21", - "sibling": "0xda8e16152e8f31946e2a05c6b873168f5798ef482eda19f418da33a758cb932d" - }, - { - "value": "0xfb184fbdd0c092404f4315a67840bd3f695a79898007f3493c3e9b8ca8004f1c", - "sibling": "0x84fb135914e4a560bae0dd38850152ab969612d35abdea3660f6b314e139150f" - }, - { - "value": "0x02734ada2d8abd73afcda4c05b0a12e0d4a3aec97a65dea3fbb11ba7b9c29c13", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xd077f5700b74f17d72d8a5f16435e881d78d43b494b78688dfaac68800440404", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xaf1c4f0eae6a798b5b5c2d3ae81657e5cf6fc1c1a04b45decf496a70e53b1c02", - "sibling": "0xda9f10b1035e772f3c021c5d8cf807c760a1cd58aa22e59a32a652478055571a" - } - ], - "pathPart": "0x4" - } - ], - "stateKey": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17", - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000003", - "value": "0x000000000000000000000000000000000000000000000000000000004a42fc80" - } - ] - } - ] -] diff --git a/tests/nonce.json b/tests/nonce.json deleted file mode 100644 index db194c4b..00000000 --- a/tests/nonce.json +++ /dev/null @@ -1,179 +0,0 @@ -[ - { - "address": "0x2222bc0df723f134a40abb28e43ff8e95ee9d811", - "accountKey": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x976d9b8f8dd409f6cd85085a27acf6a2167a1559a54b4cd03dcdb5982b638103", - "path": [ - { - "value": "0xf3997572170e697043e253e6b93b8a5b6751fdf6ebaf9c1ce0a841890e8b7e26", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x3122087872184b57dbba2da52e60ab8542e83ecf12af6e46e1ce1385ca801a08", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x1712cf69caae5e2736ce08d6566c14ef97ad7b2dc1d6622d27cf2dc8f8e92c2a", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x03f909e60063941f66bea837d2a282e44ccb96e30bdc0fa3a0bfdd84eae66b2a", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0xb60859aba8271d2449388a9573216a5a1a9cffc4ecf68b28a4d26b0f46b8dc20", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - }, - { - "pathPart": "0x3", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911", - "sibling": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e" - }, - { - "value": "0x7b454dc902bac42ac469f5a81104019dc355ba145be02dbf1292a317a8ce5814", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x9f4878ebd2093b589972730a3a64a1f0c6af264a2e4e5d75955bf240f507f32d", - "sibling": "0x9acbb853f95ae087b278857c24ce81b32d11171d1a12959ced4c7388d0266a0c" - } - ], - "leaf": { - "value": "0x075c067070b46e8ccd6a4527e1afdc70af4f48002ba6285806421c89b46e0d19", - "sibling": "0xa31f9f921de14fb9ce4b032ac816111e53094e04e6e4135c4c09010dc77d2c10" - } - } - ], - "accountUpdate": [ - { - "nonce": 23, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - }, - { - "nonce": 24, - "balance": "0x3635a4d9ad90a76805", - "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x50751a67a4423594260c5d400d0120232608417f", - "accountKey": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517", - "accountPath": [ - { - "pathPart": "0x9", - "root": "0xd7520390832314097ae286ca73cbee6272ae77aab27201062e5ec125565e7e08", - "path": [ - { - "value": "0x5e74117b45e054967dcc1e73c17f78761dba9b76e47d3292d3f008f659d79e0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x9ccff36fa74b7afab13d330c47707ff54179aae60614dce153f818689f4d850e", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xd0848ab2fa6542c4a7710b9c329b6fbe565dff1d2f84a2031e52064be941af02", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0xb8fb8f6715a371aa46fe067bc54b38c7faa4a32bf3b7f49424fba785bba72c2f", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x3072d32d6ebec783d7343e40c1368d27b6987c9be8ad9ac6eea9ec606f921529", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - } - ], - "leaf": { - "value": "0xec75e8f8f70c305d7aa61fd24d1ab2eeac2796d0db4ff90a178a4c946ee2a427", - "sibling": "0x097e027aff9f2997c1e434709b73b04615ad3de2ae1e8488ddc670d7078d8b0c" - } - }, - { - "pathPart": "0x49", - "root": "0xdfb0534fada550b2cfd0bafc70341b4affd7672b6053396cd880adb234f2c625", - "path": [ - { - "value": "0x4b85125555e7d8bcbdaea65af0385caccb8df54f35e265a9402dc33e7742ee0c", - "sibling": "0x57978660ba82d03186f563afc8d2f932ce6ac96ebbfe3fe5a9285d2776946d1b" - }, - { - "value": "0x4dbf693dbfe07151890282e1411902af7573984676aaf6cfda3806e9798a2730", - "sibling": "0x4226fa483744363314d136b913324ce3fe51ef2fc68adff784f71c82861e3911" - }, - { - "value": "0xed8dfe21830d75a0ec64b1706d0bdb9dc7471730d6013f1193197768b3593104", - "sibling": "0x24ad307b04abb894b007f48695e23b658585817a0f11245e01cbce0c66ba8523" - }, - { - "value": "0x00fe430d99cdfad5e5cbf5ef299d3a7c2f3ffe60d45ca192d207fa256b41c20d", - "sibling": "0x8afa2a048a7e4a9f5e1e2bd71cf988fa08e3c9524c7de5ec5199ce4cbfcc5f30" - }, - { - "value": "0x7db2368a256ea7764b014c2d64a4aac8eda3d4bda29d79141455eac516760527", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe7f21d9a014d12129cb566c942ab8738df5a3fb6e9ea7e0c35269ce2ddd8b007", - "sibling": "0x0111bafafb2c6498225c226aef7ddcec5bff76a3d2d0ed89fa6f9f397365c416" - }, - { - "value": "0x7f19fa74bbc91bdf7e2a2ba63a6742ab7a9938a0640d992599d733b3892c7d17", - "sibling": "0x3790a1a75e4720ec71bddfc72277c8aa9735c7d1263ee86fba969811db53c028" - } - ], - "leaf": { - "value": "0x50af9eca03b9fd481e1c4fb74ce92db963162a5e41ef5d52cc3dad1dc227d626", - "sibling": "0xc9fce3e6f29e94d417ffea0558055e83bc5554147a87fa310592a62e34929517" - } - } - ], - "accountUpdate": [ - null, - { - "nonce": 1, - "balance": "0x0", - "keccakCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "poseidonCodeHash": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - } -] diff --git a/tests/read_traces.json b/tests/read_traces.json deleted file mode 100644 index e8092c69..00000000 --- a/tests/read_traces.json +++ /dev/null @@ -1,129 +0,0 @@ -[ - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x7ac10809829d7fec6a1243e6b2ee8298926adcaf3e615eb8d88ae98eadd9451b", - "path": [ - { - "value": "0x966f591a10ee0f8d6e0812bffb1e0372ec01f297b09efa44ccfccde3a2547710", - "sibling": "0x2713cea4abf2d3a79bbadf315c7d41d881525c97722f8eb3f0fbe5068f4d810e" - }, - { - "value": "0xafba7bdcd4d5ab06ec1261b7b64f9580d78846980a4f6d2210de67b42965fd05", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x517f8472f911239556529d897fd992fb5447405474242c4e2343578e17174420", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x030bdceead648f55e9206d0f8b5958d20fe582a96f6014745da8fabb788c9329", - "sibling": "0x2b0f273a4ab08abdad7b7f071b7522c4df9a8bad658bcec4f81f10ae294f6f07" - } - ], - "leaf": { - "value": "0x9086caa2f567a19252baf097b8c93071e4eba5a374a6ea16e2ec4c3d6608e50e", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0x7ac10809829d7fec6a1243e6b2ee8298926adcaf3e615eb8d88ae98eadd9451b", - "path": [ - { - "value": "0x966f591a10ee0f8d6e0812bffb1e0372ec01f297b09efa44ccfccde3a2547710", - "sibling": "0x2713cea4abf2d3a79bbadf315c7d41d881525c97722f8eb3f0fbe5068f4d810e" - }, - { - "value": "0xafba7bdcd4d5ab06ec1261b7b64f9580d78846980a4f6d2210de67b42965fd05", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x517f8472f911239556529d897fd992fb5447405474242c4e2343578e17174420", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x030bdceead648f55e9206d0f8b5958d20fe582a96f6014745da8fabb788c9329", - "sibling": "0x2b0f273a4ab08abdad7b7f071b7522c4df9a8bad658bcec4f81f10ae294f6f07" - } - ], - "leaf": { - "value": "0x9086caa2f567a19252baf097b8c93071e4eba5a374a6ea16e2ec4c3d6608e50e", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "stateKey": "0x34aedb4be7574a842f0fde19fc74dcf1a0369b31b42311b841f80bbc74556d23", - "statePath": [ - { - "pathPart": "0x4", - "root": "0xd602fd89fd1a93548b3a437aba7528c3a661b3999d58f0dbc64bab22f517a406", - "path": [ - { - "value": "0x810f991f851157b7a7b7a676955e46e9f51d3818e6f58077b4d15e1dbe5df806", - "sibling": "0xa30d095d473836681a3a493131e9cb9d7ab65fd09a97487fc7cef2277fd3902a" - }, - { - "value": "0xfd54ec9e08d2ecd90cfc187d8cd5b2c4611c5f1a2abae6e51da2c1344c485230", - "sibling": "0xf855e9ec031301edaf7f84f64a9dc5798916c8678a1f907597da2c3bf8b63a0e" - }, - { - "value": "0x52fb41bda5330046b2f736cfd86106e5b0aadc56e770f870958d7c15334f9609", - "sibling": "0x57a298c09fb1f9609b74ff09c68470bf41a983d24995a2e05a1fb9546ce3050d" - } - ], - "leaf": { - "value": "0x94583cf4fc0b31df9bc554a79c8056f4de5325c66105620315cde5a4161e231a", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - } - }, - { - "pathPart": "0x4", - "root": "0xd602fd89fd1a93548b3a437aba7528c3a661b3999d58f0dbc64bab22f517a406", - "path": [ - { - "value": "0x810f991f851157b7a7b7a676955e46e9f51d3818e6f58077b4d15e1dbe5df806", - "sibling": "0xa30d095d473836681a3a493131e9cb9d7ab65fd09a97487fc7cef2277fd3902a" - }, - { - "value": "0xfd54ec9e08d2ecd90cfc187d8cd5b2c4611c5f1a2abae6e51da2c1344c485230", - "sibling": "0xf855e9ec031301edaf7f84f64a9dc5798916c8678a1f907597da2c3bf8b63a0e" - }, - { - "value": "0x52fb41bda5330046b2f736cfd86106e5b0aadc56e770f870958d7c15334f9609", - "sibling": "0x57a298c09fb1f9609b74ff09c68470bf41a983d24995a2e05a1fb9546ce3050d" - } - ], - "leaf": { - "value": "0x94583cf4fc0b31df9bc554a79c8056f4de5325c66105620315cde5a4161e231a", - "sibling": "0x84d07ce01938a8e3278d5a7b52cf4b853666886e48d30f623413b0a36e2b8e17" - } - } - ], - "stateUpdate": [ - { - "key": "0x977b86d8b2c12cb1b0cf5c34210e07337f1ed424f3f38ee3bddb639468b3095f", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x977b86d8b2c12cb1b0cf5c34210e07337f1ed424f3f38ee3bddb639468b3095f", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] - } -] \ No newline at end of file diff --git a/tests/token_traces.json b/tests/token_traces.json deleted file mode 100644 index 0e60cbf3..00000000 --- a/tests/token_traces.json +++ /dev/null @@ -1,826 +0,0 @@ -[ - { - "address": "0x4cb1ab63af5d8931ce09673ebd8ae2ce16fd6571", - "accountKey": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29", - "accountPath": [ - { - "pathPart": "0x75", - "root": "0x54a5a6a79fedb271b2d12cbcd39121833f2cb8cd1370e0a97d6020a534948e13", - "path": [ - { - "value": "0x444758a273fc0cfb23366a7a377630f0427fe495c9f78efbed9dc47a1e3f9e0e", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x76a4691e1917894350a3b6b4d10c44aa94316e09692a37c678764b415de1021a", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xa3d8fb602901f3cd49e1260c12d40e98607bd279b30164c708d668126345c829", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xfbbed4358df764ff3a263c66df07b445abeaaf4ab50bddc2fd643f3512e02a1b", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0xe2591e8c149131c6df1ac04f9c0f54ff8db991eb80dff52b4b218cac31c1430b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xc63dba5cdc4a7aa1f0e97f4355d9caac51821d67463fa58cb89ffc53c1fe9f27", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0xe6c0fdae5b43dd0b7edfd21803e8816e191138071fd2e1f7e42d92c5c19a592b", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8ebbbd4b7d5ddd66149c1b9feeeaec862e8e489cb8c50409aaaf00de33310721", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0x6d408f21eac0634eb9f9d560338e242f1f93a1a1b33b27e612ff1171fa17c026", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0x75", - "root": "0x6cdd415714569cc0701f1e8c922cca37750bd532841cda3cebc8a2a285d1d928", - "path": [ - { - "value": "0x6d125c2bd8bb711545f563bc7e4633a08047d6f2846bab4fe54b15d0285b9926", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0xe4484c80789c502bd079ac8c84cd7d972f26efd695ded8cd4d86d31e14f5e62b", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x77dd9e0ddb9e87a71dde3445e6535fb1227bf4f8c294a5f50063058d07638224", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x7020e26a3feea1f93399279bc043110186b1b2e58dcbe8c84988ffa0d165d603", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0xa00e8730fb13892ea3903e75db4c3299d0c5f9cace0ec242b5be959cfe363a22", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x4ebdd868970bdc90e1cd6418b30577ebbad93824aac600a622c692790d05ad0b", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0x4124b4102f401839b4e67122fce4ebce28999d120f07858f3e31eff0b9e5211e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xfb319d3d80d11dfe4d0d8a161d6a923a185fc1b0dd30a6c432b70d0a6b588b08", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0xb095a5e4ce497237185dced8276cf297206d59b759bcaa52444cfcea462ffc22", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - } - ], - "accountUpdate": [ - { - "nonce": 27, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a8e726dd7f67", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 28, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a8e726dd7f67", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x6cdd415714569cc0701f1e8c922cca37750bd532841cda3cebc8a2a285d1d928", - "path": [ - { - "value": "0x6d125c2bd8bb711545f563bc7e4633a08047d6f2846bab4fe54b15d0285b9926", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0xe4484c80789c502bd079ac8c84cd7d972f26efd695ded8cd4d86d31e14f5e62b", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x77dd9e0ddb9e87a71dde3445e6535fb1227bf4f8c294a5f50063058d07638224", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0x7020e26a3feea1f93399279bc043110186b1b2e58dcbe8c84988ffa0d165d603" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0x6cdd415714569cc0701f1e8c922cca37750bd532841cda3cebc8a2a285d1d928", - "path": [ - { - "value": "0x6d125c2bd8bb711545f563bc7e4633a08047d6f2846bab4fe54b15d0285b9926", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0xe4484c80789c502bd079ac8c84cd7d972f26efd695ded8cd4d86d31e14f5e62b", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x77dd9e0ddb9e87a71dde3445e6535fb1227bf4f8c294a5f50063058d07638224", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0x7020e26a3feea1f93399279bc043110186b1b2e58dcbe8c84988ffa0d165d603" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "commonStateRoot": "0xcae3274fd26e7db8852820e5c91e81cecc0024a984b47170980cc41394423927", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x4cb1ab63af5d8931ce09673ebd8ae2ce16fd6571", - "accountKey": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29", - "accountPath": [ - { - "pathPart": "0x75", - "root": "0x6cdd415714569cc0701f1e8c922cca37750bd532841cda3cebc8a2a285d1d928", - "path": [ - { - "value": "0x6d125c2bd8bb711545f563bc7e4633a08047d6f2846bab4fe54b15d0285b9926", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0xe4484c80789c502bd079ac8c84cd7d972f26efd695ded8cd4d86d31e14f5e62b", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x77dd9e0ddb9e87a71dde3445e6535fb1227bf4f8c294a5f50063058d07638224", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x7020e26a3feea1f93399279bc043110186b1b2e58dcbe8c84988ffa0d165d603", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0xa00e8730fb13892ea3903e75db4c3299d0c5f9cace0ec242b5be959cfe363a22", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x4ebdd868970bdc90e1cd6418b30577ebbad93824aac600a622c692790d05ad0b", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0x4124b4102f401839b4e67122fce4ebce28999d120f07858f3e31eff0b9e5211e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xfb319d3d80d11dfe4d0d8a161d6a923a185fc1b0dd30a6c432b70d0a6b588b08", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0xb095a5e4ce497237185dced8276cf297206d59b759bcaa52444cfcea462ffc22", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0x75", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0x2b78ea003db39ba023ea7d04f52a2229c9f482710f17ce33c165132fafa39b21", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x50d6117ba64291a6b1b02e7d61136892c6a5c6334bc44cce0ff0959c76aaba13", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0x1bbae950e6218524e78869665a224962bdddf72627a8a526d1cfadb4a47f2c1e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf002476f66a14efcb027f1f512f8f198d06b35a21cb4cd46bedaa4cde0671b0f", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0xde7f496a4cc45ab55bb32f4f9b2adc546ea87eec9cb76bd87f9e441978c73402", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - } - ], - "accountUpdate": [ - { - "nonce": 28, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a8e726dd7f67", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 28, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a7cd4517306a", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "commonStateRoot": "0xcae3274fd26e7db8852820e5c91e81cecc0024a984b47170980cc41394423927", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x4cb1ab63af5d8931ce09673ebd8ae2ce16fd6571", - "accountKey": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29", - "accountPath": [ - { - "pathPart": "0x75", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0x2b78ea003db39ba023ea7d04f52a2229c9f482710f17ce33c165132fafa39b21", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x50d6117ba64291a6b1b02e7d61136892c6a5c6334bc44cce0ff0959c76aaba13", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0x1bbae950e6218524e78869665a224962bdddf72627a8a526d1cfadb4a47f2c1e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf002476f66a14efcb027f1f512f8f198d06b35a21cb4cd46bedaa4cde0671b0f", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0xde7f496a4cc45ab55bb32f4f9b2adc546ea87eec9cb76bd87f9e441978c73402", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - }, - { - "pathPart": "0x75", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d", - "sibling": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f" - }, - { - "value": "0x2b78ea003db39ba023ea7d04f52a2229c9f482710f17ce33c165132fafa39b21", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x50d6117ba64291a6b1b02e7d61136892c6a5c6334bc44cce0ff0959c76aaba13", - "sibling": "0x78c7b59d789c294f21339f0a872b81a418d6b24273fe959dc00126520917970d" - }, - { - "value": "0x1bbae950e6218524e78869665a224962bdddf72627a8a526d1cfadb4a47f2c1e", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xf002476f66a14efcb027f1f512f8f198d06b35a21cb4cd46bedaa4cde0671b0f", - "sibling": "0xa72c67edca1db779b38140aaee9baf382c96315f0884909da4a4a7480f3ab82d" - } - ], - "leaf": { - "value": "0xde7f496a4cc45ab55bb32f4f9b2adc546ea87eec9cb76bd87f9e441978c73402", - "sibling": "0x7581e431a68d0fa641e14a7d29a6c2b150db6da1d13f59dee6f7f492a0bebd29" - } - } - ], - "accountUpdate": [ - { - "nonce": 28, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a7cd4517306a", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 28, - "balance": "0x56bc75e2d630fffffffffffffffffffffffffffffffffffff7a7cd4517306a", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "commonStateRoot": "0xcae3274fd26e7db8852820e5c91e81cecc0024a984b47170980cc41394423927", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x34e7a93bd55ed28ee479c8e4ebed902f953d0663aa1afd0f99420c2d81489215", - "path": [ - { - "value": "0x37b6b342069f82650ab28b2742cb9933dfa4571ffd6fadc24002a2323d61c015", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x7634165615d3a3fc19096036d9a6993d7d4d3e48b82d8f8dfa8c7b4edf1d4b07", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xf75c901c1b784b85a1f56f3d84a74ac8f19b49c2b508c15076f55a7a723c2903", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x6d8a9b9874fbccdb5b7890a8e46e5c5b987819a86cc4b9a642786181f62dda1f", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x61d0ff3e379c998a6021bac8be858331bfd94bfe8579bfa1c6c4f6f42afc7f00", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0x737925bf1e3bbd3bc72eb64fc23979a781c0d8ded7ac8090af049f9f5e8da12a", - "path": [ - { - "value": "0xcfaea917c6e58b618216902a955417f72387d165a6a53234e4cfbb4e59bb9123", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x08a3e7590cdd493668582a9859ba6b8675b09a0b9b1a4344722528b9f0a07c19", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xdcd03e3ffa92c5d40dfecfbda28a3955b26896f437702a03e75daa4164ca6a1f", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xc041d7903a5abb7f9013963a31435acf27ecb9ac3a7dd3f300cbae1fa2919613", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0xed7288ad3a9b399198b242fa00ea87fe89bd53530ab1f5efcbe64abdb1b9140b", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "stateKey": "0x5bcfa567f724b471f0711c5b1b5295f4babeca2d70ed85e33abf5f8086e7721a", - "statePath": [ - { - "pathPart": "0x1", - "root": "0xcae3274fd26e7db8852820e5c91e81cecc0024a984b47170980cc41394423927", - "path": [ - { - "value": "0xfd876ccea893e2a915742ccb261abedf8ccc01079f341586b724c103dd1adb17", - "sibling": "0xbe85171617341aa3277ff987f889ac613465f94f1ce1f88c1cade46090fbd411" - } - ], - "leaf": { - "value": "0xdf418a4d22836e1c69d471e3202ea179af3bbea4d84b64e24ae2071ce696862e", - "sibling": "0x5bcfa567f724b471f0711c5b1b5295f4babeca2d70ed85e33abf5f8086e7721a" - } - }, - { - "pathPart": "0x1", - "root": "0x8f7701f64ca5fafc0f82b118859fa4de4e589b1aa30724a3e3ea27e7733de724", - "path": [ - { - "value": "0x5a4dd8756c26c100628b81b521706e2c78cefb62a092d7775bd3f52642c94f2c", - "sibling": "0xbe85171617341aa3277ff987f889ac613465f94f1ce1f88c1cade46090fbd411" - } - ], - "leaf": { - "value": "0x5a73fba9263c6eaef4a51a60cc5363a8a17e4ac4aace9f987074842f93486f04", - "sibling": "0x5bcfa567f724b471f0711c5b1b5295f4babeca2d70ed85e33abf5f8086e7721a" - } - } - ], - "stateUpdate": [ - { - "key": "0x5a158573daab1c353835da34297290f5f813859e4bb52de641691b875502523f", - "value": "0x00000000000000000000000000000000000000007f228daac38a51833dbbf830" - }, - { - "key": "0x5a158573daab1c353835da34297290f5f813859e4bb52de641691b875502523f", - "value": "0x00000000000000000000000000000000000000007f228daac38a51833dbbf448" - } - ] - }, - { - "address": "0xe8d466681784504a8458d4ef34f141adada678fe", - "accountKey": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00", - "accountPath": [ - { - "pathPart": "0xd", - "root": "0x737925bf1e3bbd3bc72eb64fc23979a781c0d8ded7ac8090af049f9f5e8da12a", - "path": [ - { - "value": "0xcfaea917c6e58b618216902a955417f72387d165a6a53234e4cfbb4e59bb9123", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x08a3e7590cdd493668582a9859ba6b8675b09a0b9b1a4344722528b9f0a07c19", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0xdcd03e3ffa92c5d40dfecfbda28a3955b26896f437702a03e75daa4164ca6a1f", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0xc041d7903a5abb7f9013963a31435acf27ecb9ac3a7dd3f300cbae1fa2919613", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0xed7288ad3a9b399198b242fa00ea87fe89bd53530ab1f5efcbe64abdb1b9140b", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - }, - { - "pathPart": "0xd", - "root": "0xa7617355006f4f2beab54a444175089bef327fdcc2d7808c9b82a7c8f54e2424", - "path": [ - { - "value": "0x42c954cc85174e2869706f7ed1a67dc5f7b78f720dcee7245b519bdaf3f35907", - "sibling": "0xb50fa7ebcfbf879d2c87c30fa8da23205fec4876c05200c0211e27a330e9ca16" - }, - { - "value": "0x8771b331390a1d249b53e24e3d14e38d70ea1ddcea41145cfe02eb20f285c325", - "sibling": "0x537a6fac1254f68629734e6263e4d41e8d6ba08e0eba4e2317bad3b469159907" - }, - { - "value": "0x44257a8c08fcb6bea1bae4c2178c35f255b618738494ab0e2f51164aba540a03", - "sibling": "0xae72888fea2b0ee021bee3ae2e80f0a50b87a5a7966e98b29aa8770b7f485605" - }, - { - "value": "0x70b1ce6312c7c782ff38c8f94f3f053207cb453036e87de233a609ff884b3329", - "sibling": "0xb72f2d7df77455569ce204022fff90d35dd242b6f5e5a68d60c12b8509fcad1d" - } - ], - "leaf": { - "value": "0x0b66e9ad0a8ad3e427a52d289658fa5946d25c647c70240838c3407430f91a26", - "sibling": "0x6d3e389f7dd8c147fe168ec3dfa575f588d5caee7bd4da9fd99c7ecf9cc5df00" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x178763dea206ad5ecfbf211ddeb69d930d18811bc617cb4bbb0c0e7f0d28a3aa" - } - ], - "stateKey": "0x34aedb4be7574a842f0fde19fc74dcf1a0369b31b42311b841f80bbc74556d23", - "statePath": [ - { - "pathPart": "0x14", - "root": "0x8f7701f64ca5fafc0f82b118859fa4de4e589b1aa30724a3e3ea27e7733de724", - "path": [ - { - "value": "0xbe85171617341aa3277ff987f889ac613465f94f1ce1f88c1cade46090fbd411", - "sibling": "0x5a4dd8756c26c100628b81b521706e2c78cefb62a092d7775bd3f52642c94f2c" - }, - { - "value": "0xf7f26bfedc1c3c30c68d11e0cb3f7d434e6235eb8c88637f9dc7ffa68aa9280b", - "sibling": "0xf855e9ec031301edaf7f84f64a9dc5798916c8678a1f907597da2c3bf8b63a0e" - }, - { - "value": "0xf3311fe9cdd331d512ec3a45956f00ff6f2bfde8fffbbadf9b8500c230b7b705", - "sibling": "0x57a298c09fb1f9609b74ff09c68470bf41a983d24995a2e05a1fb9546ce3050d" - }, - { - "value": "0x8f2fa3897bc04514e3935443ef67a70c0ebe0dd85364f0202ebb79bd910c5a25", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x0266f9b3b99373c76aabe6fd12667ea462892cac46ef50e325de902b437a7a20", - "sibling": "0x52fb41bda5330046b2f736cfd86106e5b0aadc56e770f870958d7c15334f9609" - } - ], - "leaf": { - "value": "0x2c8d7d21f6912e6ce79d7c2bb183b145894a758d80a31d88acc6505529e1fb24", - "sibling": "0x34aedb4be7574a842f0fde19fc74dcf1a0369b31b42311b841f80bbc74556d23" - } - }, - { - "pathPart": "0x14", - "root": "0xa7e06b055da07fcb508c59ad78f16c0bc0a7f8cc92ce13a4f5e11709057d2608", - "path": [ - { - "value": "0x76670fea163d9a13e6ae8c4a958b09f74ad006e781f24e75789b5ce396891605", - "sibling": "0x5a4dd8756c26c100628b81b521706e2c78cefb62a092d7775bd3f52642c94f2c" - }, - { - "value": "0x3e68a37d22a8e06b48701825e846bc436aa1c4e2f43edc2a67270c1ebe145b23", - "sibling": "0xf855e9ec031301edaf7f84f64a9dc5798916c8678a1f907597da2c3bf8b63a0e" - }, - { - "value": "0x144a39293eaa44a980cb09f1283effde08e6bebb8c596e973864720f24517c13", - "sibling": "0x57a298c09fb1f9609b74ff09c68470bf41a983d24995a2e05a1fb9546ce3050d" - }, - { - "value": "0x660d10c5a60a0552367022208d220d96b4388ef11e783eb79ae1a08ec4470d18", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x9d474be5611e02bc862ca5ef7af2a8d9c958d61bfffffa986e60f84ae1beba03", - "sibling": "0x52fb41bda5330046b2f736cfd86106e5b0aadc56e770f870958d7c15334f9609" - } - ], - "leaf": { - "value": "0xa0302f07208c9c0b547549a0e8a04ceaec3f1d9254b7372455b0ef321b26bc1f", - "sibling": "0x34aedb4be7574a842f0fde19fc74dcf1a0369b31b42311b841f80bbc74556d23" - } - } - ], - "stateUpdate": [ - { - "key": "0x977b86d8b2c12cb1b0cf5c34210e07337f1ed424f3f38ee3bddb639468b3095f", - "value": "0x00000000000000000000000000000000000000000000000000000000000007d0" - }, - { - "key": "0x977b86d8b2c12cb1b0cf5c34210e07337f1ed424f3f38ee3bddb639468b3095f", - "value": "0x0000000000000000000000000000000000000000000000000000000000000bb8" - } - ] - } -] \ No newline at end of file diff --git a/tests/trace_parsing.rs b/tests/trace_parsing.rs deleted file mode 100644 index 1e1236ff..00000000 --- a/tests/trace_parsing.rs +++ /dev/null @@ -1,53 +0,0 @@ -// use halo2_mpt_circuits::operation::AccountOp; -// use halo2_mpt_circuits::serde::*; -// pub use halo2_proofs::halo2curves::bn256::Fr as Fp; - -// const SMT_TRACE_EXAMPLE: &str = include_str!("./dual_code_hash/trace_1.json"); -// const TEST_TRACE1: &str = include_str!("./dual_code_hash/traces_1.json"); -// const TEST_TRACE2: &str = include_str!("./dual_code_hash/traces_1.json"); - -#[test] -fn trace_parse_object() { - // let trace0: SMTTrace = serde_json::from_str(SMT_TRACE_EXAMPLE).unwrap(); - // assert_eq!( - // trace0.account_path[0].path[0].value, - // Hash::try_from("0x0532e1b50d41522e91a1de10e2e56ca75422e2a2f60c2b610d379404b184262b") - // .unwrap() - // ); - - // let op: AccountOp = (&trace0).try_into().unwrap(); - // assert_eq!( - // op.acc_trie.old.leaf().unwrap(), - // op.account_before.unwrap().account_hash(), - // ); -} - -#[test] -fn trace_parse() { - // let traces: Vec = serde_json::from_str(TEST_TRACE1).unwrap(); - - // for tr in traces { - // let _: AccountOp = (&tr).try_into().unwrap(); - // } - - // let traces: Vec = serde_json::from_str(TEST_TRACE2).unwrap(); - - // for tr in traces { - // let _: AccountOp = (&tr).try_into().unwrap(); - // } -} - -#[test] -fn trace_serialize() { - // let traces: SMTTrace = serde_json::from_str(SMT_TRACE_EXAMPLE).unwrap(); - - // let re_ser_fst = serde_json::to_string(&traces).unwrap(); - - // let traces: SMTTrace = serde_json::from_str(&re_ser_fst).unwrap(); - - // let re_ser_snd = serde_json::to_string(&traces).unwrap(); - - // assert_eq!(re_ser_fst, re_ser_snd); - - // println!("{}", re_ser_snd); -} diff --git a/tests/trace_proving.rs b/tests/trace_proving.rs deleted file mode 100644 index 19c4f1de..00000000 --- a/tests/trace_proving.rs +++ /dev/null @@ -1,241 +0,0 @@ -// use halo2_proofs::dev::MockProver; -// use halo2_proofs::halo2curves::bn256::{Bn256, Fr as Fp, G1Affine}; -// use halo2_proofs::plonk::{create_proof, keygen_pk, keygen_vk, verify_proof}; -// use halo2_proofs::poly::commitment::ParamsProver; -// use halo2_proofs::poly::kzg::commitment::{ -// KZGCommitmentScheme, ParamsKZG as Params, ParamsVerifierKZG as ParamsVerifier, -// }; -// use halo2_proofs::poly::kzg::multiopen::{ProverSHPLONK, VerifierSHPLONK}; -// use halo2_proofs::poly::kzg::strategy::SingleStrategy; -// use halo2_proofs::transcript::{ -// Blake2bRead, Blake2bWrite, Challenge255, PoseidonRead, PoseidonWrite, TranscriptRead, -// TranscriptReadBuffer, TranscriptWriterBuffer, -// }; -// use halo2_proofs::SerdeFormat; -// use rand::SeedableRng; -// use rand_chacha::ChaCha8Rng; - -// const TEST_TRACE: &str = include_str!("./dual_code_hash/traces_1.json"); -// const TEST_TRACE_SMALL: &str = include_str!("./dual_code_hash/traces_1.json"); -// const TEST_TRACE_READONLY: &str = include_str!("./dual_code_hash/traces_1.json"); - -#[test] -fn trace_read_only() { - // let data: Vec = serde_json::from_str(TEST_TRACE_READONLY).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // println!("{:?}", ops[0]); - - // let k = 8; - - // let mut data: EthTrie = Default::default(); - // data.add_ops(ops); - // let (circuit, _) = data.circuits(200); - - // let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); -} - -#[test] -fn trace_to_eth_trie_each() { - // let data: Vec = serde_json::from_str(TEST_TRACE_SMALL).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // for op in ops { - // let k = 6; - // println!("{:?}", op); - - // let mut data: EthTrie = Default::default(); - // data.add_op(op); - // let (circuit, _) = data.circuits(40); - - // let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); - // } -} - -#[test] -fn trace_to_eth_trie() { - // let data: Vec = serde_json::from_str(TEST_TRACE_SMALL).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // let k = 8; - - // let mut data: EthTrie = Default::default(); - // data.add_ops(ops); - // let (circuit, _) = data.circuits(200); - - // let prover = MockProver::::run(k, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); -} - -#[test] -fn vk_validity() { - // let params = Params::::unsafe_setup(10); - // let data: Vec = serde_json::from_str(TEST_TRACE_SMALL).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // let mut data: EthTrie = Default::default(); - // data.add_ops(ops); - // let (circuit, _) = data.to_circuits((200, None), &[]); - - // let vk1 = keygen_vk(¶ms, &circuit).unwrap(); - - // let mut vk1_buf: Vec = Vec::new(); - // vk1.write(&mut vk1_buf, SerdeFormat::RawBytesUnchecked) - // .unwrap(); - - // let data: EthTrie = Default::default(); - // let (circuit, _) = data.to_circuits((200, None), &[]); - // let vk2 = keygen_vk(¶ms, &circuit).unwrap(); - - // let mut vk2_buf: Vec = Vec::new(); - // vk2.write(&mut vk2_buf, SerdeFormat::RawBytesUnchecked) - // .unwrap(); - - // assert_eq!(vk1_buf, vk2_buf); -} - -#[test] -fn proof_and_verify() { - // let data: Vec = serde_json::from_str(TEST_TRACE).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // let k = 10; - - // let params = Params::::unsafe_setup(k); - // let os_rng = ChaCha8Rng::from_seed([101u8; 32]); - // let mut transcript = Blake2bWrite::<_, G1Affine, Challenge255<_>>::init(vec![]); - - // let mut data: EthTrie = Default::default(); - // data.add_ops(ops); - // let (circuit, _) = data.to_circuits((200, None), &[]); - - // let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); - - // let vk = keygen_vk(¶ms, &circuit).unwrap(); - // let pk = keygen_pk(¶ms, vk, &circuit).unwrap(); - - // create_proof::, ProverSHPLONK<'_, Bn256>, _, _, _, _>( - // ¶ms, - // &pk, - // &[circuit], - // &[&[]], - // os_rng, - // &mut transcript, - // ) - // .unwrap(); - - // let proof_script = transcript.finalize(); - // let mut transcript = Blake2bRead::<_, _, Challenge255<_>>::init(&proof_script[..]); - // let verifier_params: ParamsVerifier = params.verifier_params().clone(); - // let strategy = SingleStrategy::new(¶ms); - - // let data: EthTrie = Default::default(); - // let (circuit, _) = data.to_circuits((200, None), &[]); - // let vk = keygen_vk(¶ms, &circuit).unwrap(); - - // verify_proof::, VerifierSHPLONK<'_, Bn256>, _, _, _>( - // &verifier_params, - // &vk, - // strategy, - // &[&[]], - // &mut transcript, - // ) - // .unwrap(); -} - -#[test] -fn circuit_connection() { - // let data: Vec = serde_json::from_str(TEST_TRACE).unwrap(); - // let ops: Vec> = data - // .into_iter() - // .map(|tr| (&tr).try_into().unwrap()) - // .collect(); - - // let k = 13; - - // let params = Params::::unsafe_setup(k); - // let os_rng = ChaCha8Rng::from_seed([101u8; 32]); - - // let mut data: EthTrie = Default::default(); - // data.add_ops(ops); - - // let (mpt_rows, hash_rows) = data.use_rows(); - // println!("mpt {}, hash {}", mpt_rows, hash_rows); - - // let commit_indexs = halo2_mpt_circuits::CommitmentIndexs::new::(); - // let trie_index = commit_indexs.hash_tbl_begin(); - // let hash_index = commit_indexs.hash_tbl_begin_at_accompanied_circuit(); - - // let (trie_circuit, hash_circuit) = data.circuits(200); - // let hash_table_size = [0u8; 5]; - - // let vk = keygen_vk(¶ms, &trie_circuit).unwrap(); - // let pk = keygen_pk(¶ms, vk, &trie_circuit).unwrap(); - - // let mut transcript = PoseidonWrite::<_, G1Affine, Challenge255<_>>::init(vec![]); - // create_proof::, ProverSHPLONK<'_, Bn256>, _, _, _, _>( - // ¶ms, - // &pk, - // &[trie_circuit], - // &[&[]], - // os_rng.clone(), - // &mut transcript, - // ) - // .unwrap(); - // let proof_script = transcript.finalize(); - - // let rw_commitment_state = { - // let mut transcript = PoseidonRead::<_, _, Challenge255>::init(&proof_script[..]); - // (0..trie_index).for_each(|_| { - // transcript.read_point().unwrap(); - // }); - // hash_table_size.map(|_| transcript.read_point().unwrap()) - // }; - // //log::info!("rw_commitment_state {:?}", rw_commitment_state); - - // let vk = keygen_vk(¶ms, &hash_circuit).unwrap(); - // let pk = keygen_pk(¶ms, vk, &hash_circuit).unwrap(); - - // dbg!(""); - // let mut transcript = PoseidonWrite::<_, _, Challenge255<_>>::init(vec![]); - // create_proof::, ProverSHPLONK<'_, Bn256>, _, _, _, _>( - // ¶ms, - // &pk, - // &[hash_circuit], - // &[&[]], - // os_rng, - // &mut transcript, - // ) - // .unwrap(); - // let proof_script = transcript.finalize(); - - // let rw_commitment_evm = { - // let mut transcript = PoseidonRead::<_, _, Challenge255>::init(&proof_script[..]); - // (0..hash_index).for_each(|_| { - // transcript.read_point().unwrap(); - // }); - // hash_table_size.map(|_| transcript.read_point().unwrap()) - // }; - // //log::info!("rw_commitment_evm {:?}", rw_commitment_evm); - - // assert_eq!(rw_commitment_evm, rw_commitment_state); - // //log::info!("Same commitment! Test passes!"); -} diff --git a/tests/traces.json b/tests/traces.json deleted file mode 100644 index 67b86cd0..00000000 --- a/tests/traces.json +++ /dev/null @@ -1,1353 +0,0 @@ -[ - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "pathPart": "0xc", - "root": "0x41527e5c9713e748e4d0d28d270071a7710acffa8a2221605f6162a185de3416", - "path": [ - { - "value": "0xd543c8124bfa646e6ece1ac2e30236bc8e50d0f9ed5a8520b1e6f7f521608b16", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x75afd8502789719a13365b1580d8a8ffa9231a0f82631d7b5a43e0a644599529", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x726d1d64cd9aca14af2f7b9fd761d6ed5aa1749dff11327cd7872479c708d129", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0xe4bd37b6830fdf06c9384aaf09858a402de672b47d2092acd8ec41a22e79bb04", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0x8c36443d4f1a630fecb8b387c9fed0c0b8ec20589f620c82e51f55fd0a4ca51e", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - }, - { - "pathPart": "0xc", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x2e88f724d3c7d095c25d6de7051d2a4209c1731020badfd5438dec7464dc502b", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x55dc071973a994647322cb57f81433466f0c5bb48db9f60d97c0bee193307728", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x44ac612b2ebc8a2cacefbe6671fbe3f2d668601a2991de22f9ac6175d6387f18", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0xd8bd5ee4d4fa0ce241b977a7c640f7efa9a16456ff2773881e2e561ebc305613", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - } - ], - "accountUpdate": [ - { - "nonce": 8, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6131f2c2e5", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 9, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6131f2c2e5", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x839d089867de1a7ca0a5ab6e66fbf95e3ccff7f6", - "accountKey": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823", - "accountPath": [ - { - "pathPart": "0x2", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x2e88f724d3c7d095c25d6de7051d2a4209c1731020badfd5438dec7464dc502b" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - }, - { - "pathPart": "0x2", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x2e88f724d3c7d095c25d6de7051d2a4209c1731020badfd5438dec7464dc502b" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "commonStateRoot": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "pathPart": "0xc", - "root": "0x6b51639f513c40151cf7f1bdda2256277d7274030970b41e1acfb1c00c42af14", - "path": [ - { - "value": "0xc683edace6ccf3d5147c812b0f8a2f345304ed769f886fb11681510a930da70e", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x2e88f724d3c7d095c25d6de7051d2a4209c1731020badfd5438dec7464dc502b", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x55dc071973a994647322cb57f81433466f0c5bb48db9f60d97c0bee193307728", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x44ac612b2ebc8a2cacefbe6671fbe3f2d668601a2991de22f9ac6175d6387f18", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0xd8bd5ee4d4fa0ce241b977a7c640f7efa9a16456ff2773881e2e561ebc305613", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - }, - { - "pathPart": "0xc", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x0bec95b757ec652a91643e70bd41e90b50c3fa35181eb42eb9fa4c720def1203", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x56b985fbe9d95c8035ee750731d85e4bd59f4a48daf57751683a4b706778200f", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0xde8efbc1f9203237744811545e28429fa4b6dc0c940b2cc4aa6d268aa156f113", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - } - ], - "accountUpdate": [ - { - "nonce": 9, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6131f2c2e5", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 9, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6121225a2f", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x839d089867de1a7ca0a5ab6e66fbf95e3ccff7f6", - "accountKey": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823", - "accountPath": [ - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - }, - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "commonStateRoot": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x1c5a77d9fa7ef466951b2f01f724bca3a5820b63", - "accountKey": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920", - "accountPath": [ - { - "pathPart": "0xc", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x0bec95b757ec652a91643e70bd41e90b50c3fa35181eb42eb9fa4c720def1203", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x56b985fbe9d95c8035ee750731d85e4bd59f4a48daf57751683a4b706778200f", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0xde8efbc1f9203237744811545e28429fa4b6dc0c940b2cc4aa6d268aa156f113", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - }, - { - "pathPart": "0xc", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706", - "sibling": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629" - }, - { - "value": "0x0bec95b757ec652a91643e70bd41e90b50c3fa35181eb42eb9fa4c720def1203", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x56b985fbe9d95c8035ee750731d85e4bd59f4a48daf57751683a4b706778200f", - "sibling": "0x50d5e8931f6202c9a9baa22298e28265eb6a5531d4e0326b605787d7d5c37e09" - } - ], - "leaf": { - "value": "0xde8efbc1f9203237744811545e28429fa4b6dc0c940b2cc4aa6d268aa156f113", - "sibling": "0x9c5a1607a0719e201f7325c41c2dc857a16eadd309bab5d1d93c7e1d15204920" - } - } - ], - "accountUpdate": [ - { - "nonce": 9, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6121225a2f", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - }, - { - "nonce": 9, - "balance": "0x1ffffffffffffffffffffffffffffffffffffffffffd5a5fa703d6121225a2f", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x839d089867de1a7ca0a5ab6e66fbf95e3ccff7f6", - "accountKey": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823", - "accountPath": [ - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - }, - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - } - ], - "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "commonStateRoot": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "statePath": [ - null, - null - ], - "stateUpdate": [ - null, - null - ] - }, - { - "address": "0x839d089867de1a7ca0a5ab6e66fbf95e3ccff7f6", - "accountKey": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823", - "accountPath": [ - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - }, - { - "pathPart": "0x2", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c", - "sibling": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115" - }, - { - "value": "0xad0739782d6980580a804fd97917fe4f1304afa0a53fa71d16c8750b7de38629", - "sibling": "0x12e6e1802b8c24c546b884aa7fce85e5c42a2fb0948fbf8f0968eae13220a706" - } - ], - "leaf": { - "value": "0x8ea3f7720c6ab3a4f953081458e1aa2724521d5ecdde469bcd52cf7c0364dd2d", - "sibling": "0xd27f1da9aac5403db2adfa5985eca1de111147ab34965433eae25c0135c8c823" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x1e076fc176ff28341bbf2aefbff58c443a212d85dd71db08bc2278011c0fe518" - } - ], - "stateKey": "0x8e1ee9fe8054b1fa6d3989af4e3ca88a801f67f4a497c85ca0fe469d89272923", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "pathPart": "0x0", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000004", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000004", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "stateKey": "0x8e1ee9fe8054b1fa6d3989af4e3ca88a801f67f4a497c85ca0fe469d89272923", - "statePath": [ - { - "pathPart": "0xe", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a", - "sibling": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d" - }, - { - "value": "0x3e5fc7699ca71484ef87b5d4ca1102e85addf50c90965b478f5f81401e0a1501", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x443792c537f87551544ff7b86ca97380d42b713e42a2e3add2707d7cae83b222", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8be2cfe91bfe15090bcffe6b64bae78d6c970f66d2a9dd6a111600299ad41303", - "sibling": "0x04a388a99a17e66d214369390e71a655d01016fb8c284df9806b2df2519da510" - } - ], - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x8e1ee9fe8054b1fa6d3989af4e3ca88a801f67f4a497c85ca0fe469d89272923" - } - }, - { - "pathPart": "0xe", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a", - "sibling": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d" - }, - { - "value": "0x3e5fc7699ca71484ef87b5d4ca1102e85addf50c90965b478f5f81401e0a1501", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x443792c537f87551544ff7b86ca97380d42b713e42a2e3add2707d7cae83b222", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x8be2cfe91bfe15090bcffe6b64bae78d6c970f66d2a9dd6a111600299ad41303", - "sibling": "0x04a388a99a17e66d214369390e71a655d01016fb8c284df9806b2df2519da510" - } - ], - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x8e1ee9fe8054b1fa6d3989af4e3ca88a801f67f4a497c85ca0fe469d89272923" - } - } - ], - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000004", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000004", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "stateKey": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e", - "statePath": [ - { - "pathPart": "0x0", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d", - "sibling": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a" - }, - { - "value": "0xaae2d1a4318e5407ec2370dd860d2ff0351d0efcd0f246fc27a1952a2ddbc920", - "sibling": "0x509406c6b440d5f1c97990e78523d7b78df696c2118163363d333938124b172f" - } - ], - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - } - }, - { - "pathPart": "0x0", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d", - "sibling": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a" - }, - { - "value": "0xaae2d1a4318e5407ec2370dd860d2ff0351d0efcd0f246fc27a1952a2ddbc920", - "sibling": "0x509406c6b440d5f1c97990e78523d7b78df696c2118163363d333938124b172f" - } - ], - "leaf": { - "value": "0x5ee65399c487bf756dd383c09a8b3c36a1a3882e8a7743c63098def53408d21b", - "sibling": "0x68af6119e1c208c6d4e4a54e37e40c0ae109e97895d0970707e4b8face49940e" - } - } - ], - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000005", - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "stateKey": "0x046b3f7277dd2bb9226a061aa719407156457c66b932f8c7241f7b754470dc20", - "statePath": [ - { - "pathPart": "0x4", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d", - "sibling": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a" - }, - { - "value": "0x509406c6b440d5f1c97990e78523d7b78df696c2118163363d333938124b172f", - "sibling": "0xaae2d1a4318e5407ec2370dd860d2ff0351d0efcd0f246fc27a1952a2ddbc920" - } - ], - "leaf": { - "value": "0x34f1d882027ca708bd094667008e2f2f42ee665d4f870727135726b916a99419", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - }, - { - "pathPart": "0x4", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500", - "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "value": "0x7eb89108bc362b6c8af9cf10eeb5dd6f1fb66d718226f1d293807b35cfabbe0d", - "sibling": "0x417fbdbfd552d3bf91e2bd8fa532855fb7339e66d84c008dc6b0dd1d6a1d081a" - }, - { - "value": "0x509406c6b440d5f1c97990e78523d7b78df696c2118163363d333938124b172f", - "sibling": "0xaae2d1a4318e5407ec2370dd860d2ff0351d0efcd0f246fc27a1952a2ddbc920" - } - ], - "leaf": { - "value": "0x34f1d882027ca708bd094667008e2f2f42ee665d4f870727135726b916a99419", - "sibling": "0x6448b64684ee39a823d5fe5fd52431dc81e4817bf2c3ea3cab9e239efbf59820" - } - } - ], - "stateUpdate": [ - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000006", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "key": "0x0000000000000000000000000000000000000000000000000000000000000006", - "value": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x0db230a96ecffec8d595da95ac0b5a57768c684edd67ede8e34db7872bff5c18", - "path": [ - { - "value": "0xa9b25aa495f6c2ff8968cbb96de0b550426fe0c2c5dcec29c92aab7ca1a72115", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0xfbddaa7e51b2c66f8a503ae32aa0d8912ed1edb4137e1739f0e959905580c01d", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x903ee3fb65394ea9ac04f38457318e2d29b6b5714a2cb11368c968b6414dd024", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0x6e71d714cb2828a73f98de3e9c8904d176bab71df4d9cb17bbcadee4ad3e9d19", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x97772f9a72cb0cdf0dcbd4ad25bff766e25b763f64e651cb67f77809eb343328", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0x218be63ecf1087cbe9f3c46aa3b015302072d03b18dc4c5d2f6a9022f6a82b15", - "path": [ - { - "value": "0xc1afc7d9e8784893993dfc1f50dd8877376bbb51e8177a2f6dac0a515e8fca29", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0x6b49b9d1d2261f099c6663714618ca25b76d28c4f558e9e11d82356c0db21214", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x42a4f9442617ba6a95f7ff7373a56bb8d858458aee8600bfdc34d2c621728a11", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0xc62d4fbc2de2f2c99eacb4aa78e65e4a6ad7cb6867427900e9c41fa879498104", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x21e671fee265d5cc10c8e9e010e0fe3ba985bc81b3e5ae3afa0251c2cc41ce08", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "stateKey": "0x3bcc0b17a4575bc08bbcf0eb37c916785b2399dc881f51d68345b099bda63501", - "statePath": [ - { - "pathPart": "0x1", - "root": "0x5487fb0c0ff10084aaf8a0dd2c58610fd526d383af770e872e1496c5216e492d", - "path": [ - { - "value": "0x0000000000000000000000000000000000000000000000000000000000000000", - "sibling": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500" - } - ] - }, - { - "pathPart": "0x1", - "root": "0x0d41d539b66c5e7efc1af4ea9b9b7d160470d2110b48dec7b2478e0b3dde4426", - "path": [ - { - "value": "0x92bb9577b854167299f74eec47446de44024e19e82b3827c6423ede2f95c0830", - "sibling": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500" - } - ], - "leaf": { - "value": "0x2c8a32e2b5e60ee5997c071417e78b192f06ad37a9c9c86ae5debc9fcd435527", - "sibling": "0x3bcc0b17a4575bc08bbcf0eb37c916785b2399dc881f51d68345b099bda63501" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x7601df750a770017938856ab9e9101ed9b5fcb87af561a80d1e1cbe12f6fd092", - "value": "0x000000000000000000000000000000000000000000000000000000000000000a" - } - ] - }, - { - "address": "0xc2a221468974f17bea791c711fe62a011a07bf48", - "accountKey": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003", - "accountPath": [ - { - "pathPart": "0x3", - "root": "0x218be63ecf1087cbe9f3c46aa3b015302072d03b18dc4c5d2f6a9022f6a82b15", - "path": [ - { - "value": "0xc1afc7d9e8784893993dfc1f50dd8877376bbb51e8177a2f6dac0a515e8fca29", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0x6b49b9d1d2261f099c6663714618ca25b76d28c4f558e9e11d82356c0db21214", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0x42a4f9442617ba6a95f7ff7373a56bb8d858458aee8600bfdc34d2c621728a11", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0xc62d4fbc2de2f2c99eacb4aa78e65e4a6ad7cb6867427900e9c41fa879498104", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0x21e671fee265d5cc10c8e9e010e0fe3ba985bc81b3e5ae3afa0251c2cc41ce08", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - }, - { - "pathPart": "0x3", - "root": "0xf9790fd00bd2781f4a0146d722f1acc4f9132c16788c4e03bf1644bc476d610f", - "path": [ - { - "value": "0xba1a0c59eb83fc5011fb0b671ca98d8026b138090ef6b1f8a5805da21a29000f", - "sibling": "0xf2ecdd324f80e966e09c83f63b4bee485fa9539935ee3d95bef7d6f9ba449e0c" - }, - { - "value": "0x94a2bc65b2afe47d55eb1d23f8380ef810cd0348ab8efff3f20dde831737fd02", - "sibling": "0x73690eef525f7a5b472e5ad24071c21ac80fb86a5bc2620032d6e827579d9920" - }, - { - "value": "0xa4abc7c947f4d92591affd60d5c5bdeb3b3b02656ef36dea3501db814baeca15", - "sibling": "0x1b9da0b70b242af37d53f5bda27315b2dbd178f6b4b1e026be43cab8d46b850b" - }, - { - "value": "0xbef9ab5a4f5b019aa9b78b7bc29ebcf0a362854de82c3875ad7f0cd60dfc1415", - "sibling": "0x794953bb5d8aa00f90383ff435ce2ea58e30e1da1061e69455c38496766ec10f" - } - ], - "leaf": { - "value": "0xcb94d4469d33e206d05e8b2f98964e1a693f54a39ebc6b5e742116c8eb36b921", - "sibling": "0x331dcfec9c5c2bfb26fa293406328f51e12f21a243c7891b44ea039193f22003" - } - } - ], - "accountUpdate": [ - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - }, - { - "nonce": 1, - "balance": "0x0", - "codeHash": "0x29606a9e898096d5d4a8f5653edfe02febd7840520a3d21946fe420bc598861b" - } - ], - "stateKey": "0xede18593e27f804b1a78f3879e3c114c9b119f584f3899eb571600b1b6e2391a", - "statePath": [ - { - "pathPart": "0x1", - "root": "0x0d41d539b66c5e7efc1af4ea9b9b7d160470d2110b48dec7b2478e0b3dde4426", - "path": [ - { - "value": "0x92bb9577b854167299f74eec47446de44024e19e82b3827c6423ede2f95c0830", - "sibling": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500" - } - ], - "leaf": { - "value": "0x2c8a32e2b5e60ee5997c071417e78b192f06ad37a9c9c86ae5debc9fcd435527", - "sibling": "0x3bcc0b17a4575bc08bbcf0eb37c916785b2399dc881f51d68345b099bda63501" - } - }, - { - "pathPart": "0x1", - "root": "0x00c50f547b7eb5de4db0eaf64a46fd1df37d466ca6e418451fd10b8b06a4f10b", - "path": [ - { - "value": "0x1fd181b515d35a0120a103389cc7d7b56e868a3d1db5470c9f2a9349674eb808", - "sibling": "0x0a9448b494649a4dcdd2d05f53963aa4a7c65f8afec0f55c857d68a3eba89500" - }, - { - "value": "0x950d08edf141c8bdac10823a77e8f55163bb2569eaa45cd5d61b4e299ea0c716", - "sibling": "0x92bb9577b854167299f74eec47446de44024e19e82b3827c6423ede2f95c0830" - } - ], - "leaf": { - "value": "0xc3abd70525bd8de658bebf22803e60ab06458cd802b70fdcd0f6a39f37c3a401", - "sibling": "0xede18593e27f804b1a78f3879e3c114c9b119f584f3899eb571600b1b6e2391a" - } - } - ], - "stateUpdate": [ - null, - { - "key": "0x7601df750a770017938856ab9e9101ed9b5fcb87af561a80d1e1cbe12f6fd093", - "value": "0x000000000000000000000000000000000000000000000000000000000000000b" - } - ] - } -] \ No newline at end of file From 529f7208e79a1ba3ea669001741fee2275ca1410 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 27 Jul 2023 21:51:27 +0800 Subject: [PATCH 43/86] Move tests into tests.rs --- src/mpt.rs | 107 --------------------------------------------------- src/tests.rs | 42 ++++++++++++++++++++ src/types.rs | 63 ------------------------------ 3 files changed, 42 insertions(+), 170 deletions(-) diff --git a/src/mpt.rs b/src/mpt.rs index 1a88798a..f0212a7c 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -142,110 +142,3 @@ impl MptCircuitConfig { self.mpt_update.lookup().map(|q| q.run(meta)) } } - -// #[cfg(test)] -// mod test { -// use super::*; -// use crate::{gadgets::poseidon::PoseidonTable, hash_traces, serde::SMTTrace, MPTProofType}; -// use halo2_proofs::{ -// circuit::{Layouter, SimpleFloorPlanner}, -// dev::MockProver, -// halo2curves::bn256::Fr, -// plonk::{Circuit, Error, FirstPhase}, -// }; -// use lazy_static::lazy_static; - -// #[derive(Clone, Debug, Default)] -// struct TestCircuit { -// n_rows: usize, -// proofs: Vec, -// } - -// impl TestCircuit { -// fn new(n_rows: usize, traces: Vec<(MPTProofType, SMTTrace)>) -> Self { -// Self { -// n_rows, -// proofs: traces.into_iter().map(Proof::from).collect(), -// } -// } -// } - -// impl Circuit for TestCircuit { -// type Config = (PoseidonTable, MptCircuitConfig); -// type FloorPlanner = SimpleFloorPlanner; - -// fn without_witnesses(&self) -> Self { -// Self::default() -// } - -// fn configure(cs: &mut ConstraintSystem) -> Self::Config { -// let poseidon = PoseidonTable::configure(cs); -// let challenge = cs.challenge_usable_after(FirstPhase); -// let mpt_circuit_config = MptCircuitConfig::configure(cs, challenge, &poseidon); -// (poseidon, mpt_circuit_config) -// } - -// fn synthesize( -// &self, -// config: Self::Config, -// mut layouter: impl Layouter, -// ) -> Result<(), Error> { -// let (poseidon, mpt_circuit_config) = config; -// mpt_circuit_config.assign(&mut layouter, &self.proofs, self.n_rows)?; -// layouter.assign_region( -// || "load poseidon table", -// |mut region| { -// poseidon.load(&mut region, &hash_traces(&self.proofs)); -// Ok(()) -// }, -// ) -// } -// } - -// fn mock_prove(proof_type: MPTProofType, trace: &str) { -// let circuit = TestCircuit::new( -// N_ROWS, -// vec![(proof_type, serde_json::from_str(trace).unwrap())], -// ); -// let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); -// assert_eq!( -// prover.verify(), -// Ok(()), -// "proof_type = {:?}, trace = {}", -// proof_type, -// trace -// ); -// } - - // #[test] - // fn test_empty() { - // let circuit = TestCircuit { - // n_rows: N_ROWS, - // proofs: vec![], - // }; - // let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); - // } - - // TODO: used this in new testsss - // #[test] - // fn prove_updates() { - // let updates = vec![ - // EMPTY_STORAGE_PROOF_TYPE_2.clone(), - // EMPTY_STORAGE_PROOF_SINGLETON_TRIE.clone(), - // EMPTY_ACCOUNT_PROOF_TYPE_2.clone(), - // NONCE_WRITE_TYPE_2_EMPTY_ACCOUNT.clone(), - // ]; - - // let circuit = TestCircuit::new(N_ROWS, updates); - // let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); - // assert_eq!(prover.verify(), Ok(())); - // } - -// #[test] -// fn degree() { -// let mut meta = ConstraintSystem::::default(); -// TestCircuit::configure(&mut meta); -// assert_eq!(meta.degree(), 9); -// } -// } diff --git a/src/tests.rs b/src/tests.rs index 344a2352..51c7131f 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -107,6 +107,18 @@ fn mock_prove(witness: Vec<(MPTProofType, SMTTrace)>) { assert_eq!(prover.verify(), Ok(()),); } +#[test] +fn degree() { + let mut meta = ConstraintSystem::::default(); + TestCircuit::configure(&mut meta); + assert_eq!(meta.degree(), 9); +} + +#[test] +fn all_padding() { + mock_prove(vec![]); +} + #[test] fn empty_account_type_1() { let mut generator = initial_generator(); @@ -724,6 +736,36 @@ fn empty_storage_type_1_update_c() { mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } +#[test] +fn multiple_updates() { + let witness = vec![ + ( + MPTProofType::StorageChanged, + serde_json::from_str(&include_str!("traces/empty_storage_type_1_update_c.json")) + .unwrap(), + ), + ( + MPTProofType::CodeHashExists, + serde_json::from_str(&include_str!( + "traces/existing_account_keccak_codehash_update.json" + )) + .unwrap(), + ), + ( + MPTProofType::BalanceChanged, + serde_json::from_str(&include_str!( + "traces/empty_account_type_2_balance_update.json" + )) + .unwrap(), + ), + ( + MPTProofType::AccountDoesNotExist, + serde_json::from_str(&include_str!("traces/empty_account_type_1.json")).unwrap(), + ), + ]; + mock_prove(witness); +} + // #[test] // fn insert_into_singleton_storage_trie() { // let mut generator = initial_generator(); diff --git a/src/types.rs b/src/types.rs index 33253773..ef4b7152 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1042,75 +1042,12 @@ impl Bit for Fr { mod test { use super::*; - // const EMPTY_ACCOUNT_TRACE: &str = include_str!("../tests/empty_account.json"); - // const EMPTY_STORAGE_TRACE: &str = include_str!("../tests/empty_storage.json"); - // const TRACES: &str = include_str!("../tests/traces.json"); - // const READ_TRACES: &str = include_str!("../tests/read_traces.json"); - // const DEPLOY_TRACES: &str = include_str!("../tests/deploy_traces.json"); - // const TOKEN_TRACES: &str = include_str!("../tests/token_traces.json"); - #[test] fn bit_trait() { assert!(Fr::one().bit(0)); assert!(!Fr::one().bit(1)); } - // #[test] - // fn check_path_part() { - // // DEPLOY_TRACES(!?!?) has a trace where account nonce and balance change in one trace.... - // for s in [TRACES, READ_TRACES, TOKEN_TRACES] { - // let traces: Vec = serde_json::from_str::>(s).unwrap(); - // for trace in traces { - // let _address = Address::from(trace.address.0); - // let [open, close] = trace.account_path; - - // // not always true for deploy traces because account comes into existence. - // assert_eq!(open.path.len(), close.path.len()); - // assert_eq!(open.path_part, close.path_part); - - // let directions_1 = bits(open.path_part.try_into().unwrap(), open.path.len()); - // let directions_2: Vec<_> = (0..open.path.len()) - // .map(|i| fr(trace.account_key).bit(open.path.len() - 1 - i)) - // .collect(); - // assert_eq!(directions_1, directions_2); - // } - // } - // } - - // #[test] - // fn check_account_key() { - // for s in [TRACES, READ_TRACES, TOKEN_TRACES] { - // let traces: Vec = serde_json::from_str::>(s).unwrap(); - // for trace in traces { - // let address = Address::from(trace.address.0); - // assert_eq!(fr(trace.account_key), account_key(address)); - // } - // } - // } - - // #[test] - // fn sanity_check_paths() { - // for s in [READ_TRACES, TRACES, DEPLOY_TRACES, TOKEN_TRACES] { - // let traces: Vec = serde_json::from_str::>(s).unwrap(); - // for trace in traces { - // let address = trace.address.0.into(); - // for (path, _account) in trace.account_path.iter().zip_eq(trace.account_update) { - // assert!( - // contains( - // &bits( - // path.clone().path_part.try_into().unwrap(), - // path.clone().path.len() - // ), - // account_key(address) - // ), - // "{:?}", - // (address, path.path_part.clone(), account_key(address)) - // ); - // } - // } - // } - // } - fn contains(path: &[bool], key: Fr) -> bool { for (i, direction) in path.iter().rev().enumerate() { if key.bit(i) != *direction { From 81f738077523ad7a9dc06e13c7da015329e1d488 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 01:24:19 +0800 Subject: [PATCH 44/86] Add singleton storage trie test, but now must lower degree --- src/gadgets/mpt_update.rs | 14 ++++++- src/tests.rs | 82 +++++++++++++++++++++++++-------------- 2 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 5301489b..f4c3b494 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -959,7 +959,8 @@ fn configure_common_path( "old domain is not HashDomain::NodeTypeBranch3", (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)), + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)) + * (config.domain.current() - u64::from(HashDomain::AccountFields)), ); cb.poseidon_lookup( "poseidon hash correct for old common path", @@ -994,6 +995,10 @@ fn configure_common_path( HashDomain::NodeTypeBranch2.into(), Query::from(HashDomain::NodeTypeBranch3.into_u64()), ), + ( + HashDomain::AccountFields.into(), + Query::from(HashDomain::AccountFields.into_u64()), + ), ], ); cb.poseidon_lookup( @@ -1032,7 +1037,8 @@ fn configure_common_path( "new domain is not HashDomain::NodeTypeBranch3", (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)), + * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)) + * (config.domain.current() - u64::from(HashDomain::AccountFields)), ); cb.poseidon_lookup( "poseidon hash correct for new common path", @@ -1066,6 +1072,10 @@ fn configure_common_path( HashDomain::NodeTypeBranch2.into(), Query::from(HashDomain::NodeTypeBranch3.into_u64()), ), + ( + HashDomain::AccountFields.into(), + Query::from(HashDomain::AccountFields.into_u64()), + ), ], ); cb.poseidon_lookup( diff --git a/src/tests.rs b/src/tests.rs index 51c7131f..2b4b8247 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -766,33 +766,55 @@ fn multiple_updates() { mock_prove(witness); } -// #[test] -// fn insert_into_singleton_storage_trie() { -// let mut generator = initial_generator(); -// generator.handle_new_state( -// mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, -// Address::repeat_byte(1), -// U256([1, 2, 3, 4]), -// U256::zero(), -// Some(U256([10, 20, 30, 40])), -// ); - -// let trace = generator.handle_new_state( -// mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, -// Address::repeat_byte(1), -// U256([5, 6, 7, 8]), -// U256::zero(), -// Some(U256([50, 60, 70, 80])), -// ); - -// let json = serde_json::to_string_pretty(&trace).unwrap(); -// assert_eq!( -// format!("{}\n", json), -// include_str!("traces/insert_into_singleton_storage_trie.json"), -// "{}", -// json -// ); -// let trace: SMTTrace = serde_json::from_str(&json).unwrap(); -// let proof = Proof::from((MPTProofType::StorageChanged, trace)); -// proof.check(); -// } +#[test] +fn empty_storage_trie() { + let mut generator = initial_generator(); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(2), + U256::from(324123123u64), + U256::zero(), + Some(U256::from(3)), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); + deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); +} + +#[test] +fn singleton_storage_trie() { + let mut generator = initial_generator(); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(2), + U256::from(7), + U256::zero(), + Some(U256::from(2)), + ); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(2), + U256::from(4), + U256::zero(), + Some(U256::from(3)), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + let insertion_proof = Proof::from((MPTProofType::StorageChanged, trace.clone())); + insertion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); + + let deletion_proof = Proof::from((MPTProofType::StorageChanged, reverse(trace.clone()))); + deletion_proof.check(); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); +} From c013f8731cbbacb15970cb0b65eca6087514f2ad Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:12:51 +0800 Subject: [PATCH 45/86] Split next_domain from get_domains --- src/types/trie.rs | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/types/trie.rs b/src/types/trie.rs index 16fd89bd..4619f22f 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -256,6 +256,21 @@ impl TrieRows { } } +pub fn next_domain(before_insertion_domain: HashDomain, insertion_direction: bool) -> HashDomain { + match before_insertion_domain { + HashDomain::NodeTypeBranch0 => { + if insertion_direction { + HashDomain::NodeTypeBranch1 + } else { + HashDomain::NodeTypeBranch2 + } + } + HashDomain::NodeTypeBranch1 | HashDomain::NodeTypeBranch2 => HashDomain::NodeTypeBranch3, + HashDomain::NodeTypeBranch3 => unreachable!(), + _ => unreachable!(), + } +} + fn get_domains( next_path_type: PathType, before_insertion_domain: HashDomain, @@ -264,24 +279,10 @@ fn get_domains( let mut domains = match next_path_type { PathType::Start => unreachable!(), PathType::Common => [before_insertion_domain, before_insertion_domain], - PathType::ExtensionOld | PathType::ExtensionNew => match before_insertion_domain { - HashDomain::NodeTypeBranch0 => [ - HashDomain::NodeTypeBranch0, - if insertion_direction { - HashDomain::NodeTypeBranch1 - } else { - HashDomain::NodeTypeBranch2 - }, - ], - HashDomain::NodeTypeBranch1 => { - [HashDomain::NodeTypeBranch1, HashDomain::NodeTypeBranch3] - } - HashDomain::NodeTypeBranch2 => { - [HashDomain::NodeTypeBranch2, HashDomain::NodeTypeBranch3] - } - HashDomain::NodeTypeBranch3 => unreachable!(), - _ => unreachable!(), - }, + PathType::ExtensionOld | PathType::ExtensionNew => [ + before_insertion_domain, + next_domain(before_insertion_domain, insertion_direction), + ], }; if next_path_type == PathType::ExtensionOld { domains.reverse(); From cbc0739e5ad6e546c5084d6007327be6af2b15b1 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:15:54 +0800 Subject: [PATCH 46/86] Lower degree by 1. Still need to fix singleton trie assigment --- src/gadgets/mpt_update.rs | 185 ++++++++++++++++++-------------------- 1 file changed, 89 insertions(+), 96 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index f4c3b494..87bb75cc 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -20,7 +20,7 @@ use crate::{ }, types::{ storage::{StorageLeaf, StorageProof}, - trie::TrieRows, + trie::{next_domain, TrieRows}, ClaimKind, HashDomain, Proof, }, util::{account_key, domain_hash, lagrange_polynomial, rlc, u256_hi_lo, u256_to_big_endian}, @@ -414,55 +414,13 @@ impl MptUpdateConfig { offset += 1; - let mut previous_old_hash = proof.claim.old_root; - let mut previous_new_hash = proof.claim.new_root; - for ( - depth, - (direction, domain, old_hash, new_hash, sibling, is_padding_open, is_padding_close), - ) in proof.address_hash_traces.iter().rev().enumerate() - { - self.depth - .assign(region, offset, u64::try_from(depth + 1).unwrap()); - self.segment_type - .assign(region, offset, SegmentType::AccountTrie); - let path_type = match (*is_padding_open, *is_padding_close) { - (false, false) => PathType::Common, - (false, true) => { - assert_eq!(*new_hash, previous_new_hash); - PathType::ExtensionOld - } - (true, false) => { - assert_eq!(*old_hash, previous_old_hash); - PathType::ExtensionNew - } - (true, true) => unreachable!(), - }; - self.path_type.assign(region, offset, path_type); - - self.sibling.assign(region, offset, *sibling); - self.old_hash.assign(region, offset, *old_hash); - self.new_hash.assign(region, offset, *new_hash); - self.direction.assign(region, offset, *direction); - self.domain.assign(region, offset, domain.into_u64()); - - self.key.assign(region, offset, key); - self.other_key.assign(region, offset, other_key); - - match path_type { - PathType::Start => {} - PathType::Common => { - previous_old_hash = *old_hash; - previous_new_hash = *new_hash; - } - PathType::ExtensionOld => { - previous_old_hash = *old_hash; - } - PathType::ExtensionNew => { - previous_new_hash = *new_hash; - } - } - offset += 1; + let n_account_trie_rows = + self.assign_account_trie_rows(region, offset, &proof.account_trie_rows); + for i in 0..n_account_trie_rows { + self.key.assign(region, offset + i, key); + self.other_key.assign(region, offset + i, other_key); } + offset += n_account_trie_rows; let final_path_type = proof .address_hash_traces @@ -625,6 +583,20 @@ impl MptUpdateConfig { n_rows } + fn assign_account_trie_rows( + &self, + region: &mut Region<'_, Fr>, + starting_offset: usize, + rows: &TrieRows, + ) -> usize { + let n_rows = self.assign_trie_rows(region, starting_offset, rows); + for i in 0..n_rows { + self.segment_type + .assign(region, starting_offset + i, SegmentType::AccountTrie); + } + n_rows + } + fn assign_storage_trie_rows( &self, region: &mut Region<'_, Fr>, @@ -651,6 +623,17 @@ impl MptUpdateConfig { .assign(region, offset, u64::try_from(i + 1).unwrap()); self.path_type.assign(region, offset, row.path_type); + if let Some(next_row) = rows.0.get(i + 1) { + if !matches!(next_row.path_type, PathType::Start | PathType::Common) + && row.path_type == PathType::Common + { + self.intermediate_values[0].assign( + region, + offset, + next_domain(row.domain, row.direction), + ); + } + } for (value, column) in [ (row.sibling, self.sibling), (row.old, self.old_hash), @@ -977,42 +960,47 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - let new_domain = lagrange_polynomial( - config.domain.current(), - &[ - ( - HashDomain::NodeTypeBranch0.into(), - BinaryQuery(config.direction.current()).select( - Query::from(HashDomain::NodeTypeBranch1.into_u64()), - Query::from(HashDomain::NodeTypeBranch2.into_u64()), + let new_domain = config.intermediate_values[0]; + cb.assert_equal( + "new domain matches direction and domain after insertion", + new_domain.current(), + lagrange_polynomial( + config.domain.current(), + &[ + ( + HashDomain::NodeTypeBranch0.into(), + BinaryQuery(config.direction.current()).select( + Query::from(HashDomain::NodeTypeBranch1.into_u64()), + Query::from(HashDomain::NodeTypeBranch2.into_u64()), + ), ), - ), - ( - HashDomain::NodeTypeBranch1.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ( - HashDomain::NodeTypeBranch2.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ( - HashDomain::AccountFields.into(), - Query::from(HashDomain::AccountFields.into_u64()), - ), - ], + ( + HashDomain::NodeTypeBranch1.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::NodeTypeBranch2.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::AccountFields.into(), + Query::from(HashDomain::AccountFields.into_u64()), + ), + ], + ), ); cb.poseidon_lookup( "poseidon hash correct for new common path", [ new_left(config), new_right(config), - new_domain, + new_domain.current(), config.new_hash.previous(), ], poseidon, ); }); - cb.condition(is_type_2.clone(), |cb| { + cb.condition(is_type_2, |cb| { cb.assert_zero( "old hash is zero for type 2 empty account", config.old_hash.current(), @@ -1054,36 +1042,41 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - let new_domain = lagrange_polynomial( - config.domain.current(), - &[ - ( - HashDomain::NodeTypeBranch0.into(), - BinaryQuery(config.direction.current()).select( - Query::from(HashDomain::NodeTypeBranch1.into_u64()), - Query::from(HashDomain::NodeTypeBranch2.into_u64()), + let new_domain = config.intermediate_values[0]; + cb.assert_equal( + "new domain matches direction and domain before deletion", + new_domain.current(), + lagrange_polynomial( + config.domain.current(), + &[ + ( + HashDomain::NodeTypeBranch0.into(), + BinaryQuery(config.direction.current()).select( + Query::from(HashDomain::NodeTypeBranch1.into_u64()), + Query::from(HashDomain::NodeTypeBranch2.into_u64()), + ), ), - ), - ( - HashDomain::NodeTypeBranch1.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ( - HashDomain::NodeTypeBranch2.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), - ), - ( - HashDomain::AccountFields.into(), - Query::from(HashDomain::AccountFields.into_u64()), - ), - ], + ( + HashDomain::NodeTypeBranch1.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::NodeTypeBranch2.into(), + Query::from(HashDomain::NodeTypeBranch3.into_u64()), + ), + ( + HashDomain::AccountFields.into(), + Query::from(HashDomain::AccountFields.into_u64()), + ), + ], + ), ); cb.poseidon_lookup( "poseidon hash correct for old common path", [ old_left(config), old_right(config), - new_domain, + new_domain.current(), config.old_hash.previous(), ], poseidon, From a38378ba36dcd77aba0696cca87c1c30ea439a2b Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:22:41 +0800 Subject: [PATCH 47/86] clippy --- src/util.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.rs b/src/util.rs index 7bfa6807..72c62412 100644 --- a/src/util.rs +++ b/src/util.rs @@ -155,7 +155,7 @@ pub fn lagrange_polynomial(argument: Query, points: &[(Fr, Query basis_polynomials.push(numerator * denominator.invert().unwrap()); } - let y_coordinates = points.into_iter().map(|p| p.1.clone()); + let y_coordinates = points.iter().map(|p| p.1.clone()); basis_polynomials .into_iter() .zip(y_coordinates) From 27ccbe0d1620d95680a38fa83d37e661cbc0c586 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:22:58 +0800 Subject: [PATCH 48/86] fix singleton trie test --- src/gadgets/mpt_update.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 87bb75cc..f37a3f4b 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -530,7 +530,8 @@ impl MptUpdateConfig { proof.claim.kind { self.key.assign(region, offset + 3, proof.storage.key()); - let [storage_key_high, storage_key_low, ..] = self.intermediate_values; + let [storage_key_high, storage_key_low, new_domain, ..] = + self.intermediate_values; let [rlc_storage_key_high, rlc_storage_key_low, ..] = self.second_phase_intermediate_values; assign_word_rlc( @@ -543,6 +544,7 @@ impl MptUpdateConfig { ); self.other_key .assign(region, offset + 3, proof.storage.other_key()); + new_domain.assign(region, offset + 3, HashDomain::AccountFields); } } _ => {} @@ -627,7 +629,7 @@ impl MptUpdateConfig { if !matches!(next_row.path_type, PathType::Start | PathType::Common) && row.path_type == PathType::Common { - self.intermediate_values[0].assign( + self.intermediate_values[2].assign( region, offset, next_domain(row.domain, row.direction), @@ -960,7 +962,7 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - let new_domain = config.intermediate_values[0]; + let new_domain = config.intermediate_values[2]; cb.assert_equal( "new domain matches direction and domain after insertion", new_domain.current(), @@ -1042,7 +1044,7 @@ fn configure_common_path( .segment_type .next_matches(&[SegmentType::AccountLeaf0, SegmentType::StorageLeaf0]); cb.condition(!is_type_2.clone(), |cb| { - let new_domain = config.intermediate_values[0]; + let new_domain = config.intermediate_values[2]; cb.assert_equal( "new domain matches direction and domain before deletion", new_domain.current(), From 3f8e44035a2648dd9318a33557151aaa6aaeb78e Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:46:44 +0800 Subject: [PATCH 49/86] Fix HashDomain variant names --- src/gadgets/mpt_update.rs | 73 +++++++++-------- src/gadgets/mpt_update/nonexistence_proof.rs | 2 +- src/gadgets/mpt_update/segment.rs | 10 +-- src/types.rs | 82 +++++++------------- src/types/storage.rs | 18 ++--- src/types/trie.rs | 12 +-- src/util.rs | 8 +- 7 files changed, 85 insertions(+), 120 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index f37a3f4b..e09f7057 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -435,7 +435,7 @@ impl MptUpdateConfig { }) .unwrap_or(PathType::Common); let (final_old_hash, final_new_hash) = match proof.address_hash_traces.first() { - None => (proof.old.hash(), proof.new.hash()), + None => unimplemented!("single account mpt not handled"), Some((_, _, old_hash, new_hash, _, _, _)) => (*old_hash, *new_hash), }; @@ -500,14 +500,12 @@ impl MptUpdateConfig { for (i, (segment_type, sibling, old_hash, new_hash, direction)) in izip!(segment_types, siblings, old_hashes, new_hashes, directions).enumerate() { - // leaf0 and leaf1 have problems.... if i == 0 { self.is_zero_gadgets[3].assign_value_and_inverse(region, offset, old_hash); - self.domain - .assign(region, offset + i, HashDomain::NodeTypeEmpty.into_u64()); + self.domain.assign(region, offset + i, HashDomain::Leaf); } else { self.domain - .assign(region, offset + i, HashDomain::AccountFields.into_u64()); + .assign(region, offset + i, HashDomain::AccountFields); } self.segment_type.assign(region, offset + i, segment_type); self.path_type.assign(region, offset + i, leaf_path_type); @@ -765,8 +763,7 @@ impl MptUpdateConfig { self.segment_type .assign(region, offset, SegmentType::StorageLeaf0); self.direction.assign(region, offset, true); - self.domain - .assign(region, offset, HashDomain::NodeTypeEmpty); + self.domain.assign(region, offset, HashDomain::Leaf); let sibling = match path_type { PathType::Start => unreachable!(), @@ -941,10 +938,10 @@ fn configure_common_path( config.path_type.next_matches(&[PathType::ExtensionNew]), |cb| { cb.assert_zero( - "old domain is not HashDomain::NodeTypeBranch3", - (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)) + "old domain is not HashDomain::Branch3", + (config.domain.current() - u64::from(HashDomain::Branch0)) + * (config.domain.current() - u64::from(HashDomain::Branch1)) + * (config.domain.current() - u64::from(HashDomain::Branch2)) * (config.domain.current() - u64::from(HashDomain::AccountFields)), ); cb.poseidon_lookup( @@ -970,19 +967,19 @@ fn configure_common_path( config.domain.current(), &[ ( - HashDomain::NodeTypeBranch0.into(), + HashDomain::Branch0.into(), BinaryQuery(config.direction.current()).select( - Query::from(HashDomain::NodeTypeBranch1.into_u64()), - Query::from(HashDomain::NodeTypeBranch2.into_u64()), + Query::from(HashDomain::Branch1.into_u64()), + Query::from(HashDomain::Branch2.into_u64()), ), ), ( - HashDomain::NodeTypeBranch1.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), + HashDomain::Branch1.into(), + Query::from(HashDomain::Branch3.into_u64()), ), ( - HashDomain::NodeTypeBranch2.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), + HashDomain::Branch2.into(), + Query::from(HashDomain::Branch3.into_u64()), ), ( HashDomain::AccountFields.into(), @@ -1024,10 +1021,10 @@ fn configure_common_path( config.path_type.next_matches(&[PathType::ExtensionOld]), |cb| { cb.assert_zero( - "new domain is not HashDomain::NodeTypeBranch3", - (config.domain.current() - u64::from(HashDomain::NodeTypeBranch0)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch1)) - * (config.domain.current() - u64::from(HashDomain::NodeTypeBranch2)) + "new domain is not HashDomain::Branch3", + (config.domain.current() - u64::from(HashDomain::Branch0)) + * (config.domain.current() - u64::from(HashDomain::Branch1)) + * (config.domain.current() - u64::from(HashDomain::Branch2)) * (config.domain.current() - u64::from(HashDomain::AccountFields)), ); cb.poseidon_lookup( @@ -1052,23 +1049,23 @@ fn configure_common_path( config.domain.current(), &[ ( - HashDomain::NodeTypeBranch0.into(), + HashDomain::Branch0.into(), BinaryQuery(config.direction.current()).select( - Query::from(HashDomain::NodeTypeBranch1.into_u64()), - Query::from(HashDomain::NodeTypeBranch2.into_u64()), + Query::from(Fr::from(HashDomain::Branch1)), + Query::from(Fr::from(HashDomain::Branch2)), ), ), ( - HashDomain::NodeTypeBranch1.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), + HashDomain::Branch1.into(), + Query::from(Fr::from(HashDomain::Branch3)), ), ( - HashDomain::NodeTypeBranch2.into(), - Query::from(HashDomain::NodeTypeBranch3.into_u64()), + HashDomain::Branch2.into(), + Query::from(Fr::from(HashDomain::Branch3)), ), ( HashDomain::AccountFields.into(), - Query::from(HashDomain::AccountFields.into_u64()), + Query::from(Fr::from(HashDomain::AccountFields)), ), ], ), @@ -1580,9 +1577,9 @@ fn configure_balance( } SegmentType::AccountLeaf0 => { cb.assert_equal( - "balance AccountLeaf0 domain is NodeTypeLeaf", + "balance AccountLeaf0 domain is Leaf", config.domain.current(), - Query::from(u64::from(HashDomain::NodeTypeEmpty)), + Query::from(u64::from(HashDomain::Leaf)), ); cb.assert_equal("direction is 1", config.direction.current(), Query::one()); } @@ -2091,15 +2088,15 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { if let Some(data_hash) = proof.old.leaf_data_hash { hash_traces.push(( [proof.old.key, data_hash], - HashDomain::NodeTypeEmpty.into(), - domain_hash(proof.old.key, data_hash, HashDomain::NodeTypeEmpty), + HashDomain::Leaf.into(), + domain_hash(proof.old.key, data_hash, HashDomain::Leaf), )); } if let Some(data_hash) = proof.new.leaf_data_hash { hash_traces.push(( [proof.new.key, data_hash], - HashDomain::NodeTypeEmpty.into(), - domain_hash(proof.new.key, data_hash, HashDomain::NodeTypeEmpty), + HashDomain::Leaf.into(), + domain_hash(proof.new.key, data_hash, HashDomain::Leaf), )); } @@ -2109,8 +2106,8 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { for [left, right, digest] in account_leaf_hash_traces { if domain_hash(left, right, HashDomain::AccountFields) == digest { hash_traces.push(([left, right], HashDomain::AccountFields.into(), digest)) - } else if domain_hash(left, right, HashDomain::NodeTypeEmpty) == digest { - hash_traces.push(([left, right], HashDomain::NodeTypeEmpty.into(), digest)) + } else if domain_hash(left, right, HashDomain::Leaf) == digest { + hash_traces.push(([left, right], HashDomain::Leaf.into(), digest)) } else if domain_hash(left, right, HashDomain::Pair) == digest { hash_traces.push(([left, right], HashDomain::Pair.into(), digest)) } diff --git a/src/gadgets/mpt_update/nonexistence_proof.rs b/src/gadgets/mpt_update/nonexistence_proof.rs index 6e20ee84..ad657814 100644 --- a/src/gadgets/mpt_update/nonexistence_proof.rs +++ b/src/gadgets/mpt_update/nonexistence_proof.rs @@ -42,7 +42,7 @@ pub fn configure( [ other_key.current(), other_leaf_data_hash.current(), - Query::from(u64::from(HashDomain::NodeTypeEmpty)), + Query::from(u64::from(HashDomain::Leaf)), hash.current(), ], poseidon, diff --git a/src/gadgets/mpt_update/segment.rs b/src/gadgets/mpt_update/segment.rs index 58e66d64..eb28a491 100644 --- a/src/gadgets/mpt_update/segment.rs +++ b/src/gadgets/mpt_update/segment.rs @@ -143,12 +143,12 @@ pub fn domains(segment_type: SegmentType) -> Vec { SegmentType::Start => vec![HashDomain::Pair], SegmentType::AccountTrie | SegmentType::StorageTrie => vec![ - HashDomain::NodeTypeBranch0, - HashDomain::NodeTypeBranch1, - HashDomain::NodeTypeBranch2, - HashDomain::NodeTypeBranch3, + HashDomain::Branch0, + HashDomain::Branch1, + HashDomain::Branch2, + HashDomain::Branch3, ], - SegmentType::AccountLeaf0 | SegmentType::StorageLeaf0 => vec![HashDomain::NodeTypeEmpty], + SegmentType::AccountLeaf0 | SegmentType::StorageLeaf0 => vec![HashDomain::Leaf], SegmentType::AccountLeaf1 | SegmentType::AccountLeaf2 | SegmentType::AccountLeaf3 => { vec![HashDomain::AccountFields] } diff --git a/src/types.rs b/src/types.rs index ef4b7152..f513af45 100644 --- a/src/types.rs +++ b/src/types.rs @@ -21,31 +21,25 @@ use trie::TrieRows; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum HashDomain { - NodeTypeEmpty = 4, // this is not needed? // it is somehow used for leaf domain hashes? - NodeTypeLeaf = 5, // Rename to Leaf... - NodeTypeBranch0 = 6, - NodeTypeBranch1 = 7, - NodeTypeBranch2 = 8, - NodeTypeBranch3 = 9, - Pair = 512, - AccountFields = 5 * 256, - // Test = 1 - // TwoElements for keys, storage value, and keccak code hash, = 512 - // Five(Six?)Elements for account fields.... + Leaf, + Branch0, // branch node with both children = leaf or empty + Branch1, // branch node with left child = branch node and right child = leaf or empty + Branch2, // branch node with left child = leaf or empty and right child = branch node + Branch3, // branch node with both children = branch node + Pair, + AccountFields, } impl TryFrom for HashDomain { type Error = &'static str; fn try_from(x: u64) -> Result { match x { - 4 => Ok(Self::NodeTypeEmpty), - 5 => Ok(Self::NodeTypeLeaf), - 6 => Ok(Self::NodeTypeBranch0), - 7 => Ok(Self::NodeTypeBranch1), - 8 => Ok(Self::NodeTypeBranch2), - 9 => Ok(Self::NodeTypeBranch3), - // 512 => Ok(Self::) - _ => Err("input out of range for HashDomain"), + 4 => Ok(Self::Leaf), + 6 => Ok(Self::Branch0), + 7 => Ok(Self::Branch1), + 8 => Ok(Self::Branch2), + 9 => Ok(Self::Branch3), + _ => Err("unreachable u64 for HashDomain"), } } } @@ -59,12 +53,11 @@ impl From for Fr { impl From for u64 { fn from(h: HashDomain) -> Self { match h { - HashDomain::NodeTypeEmpty => 4, - HashDomain::NodeTypeLeaf => 5, - HashDomain::NodeTypeBranch0 => 6, - HashDomain::NodeTypeBranch1 => 7, - HashDomain::NodeTypeBranch2 => 8, - HashDomain::NodeTypeBranch3 => 9, + HashDomain::Leaf => 4, + HashDomain::Branch0 => 6, + HashDomain::Branch1 => 7, + HashDomain::Branch2 => 8, + HashDomain::Branch3 => 9, HashDomain::Pair => 2 * 256, HashDomain::AccountFields => 5 * 256, } @@ -237,16 +230,6 @@ pub struct Path { pub leaf_data_hash: Option, // leaf data hash for type 0 and type 1, None for type 2. } -impl Path { - pub fn hash(&self) -> Fr { - if let Some(data_hash) = self.leaf_data_hash { - domain_hash(self.key, data_hash, HashDomain::NodeTypeLeaf) - } else { - Fr::zero() - } - } -} - impl From<(&MPTProofType, &SMTTrace)> for Claim { fn from((proof_type, trace): (&MPTProofType, &SMTTrace)) -> Self { let [old_root, new_root] = trace.account_path.clone().map(|path| fr(path.root)); @@ -503,9 +486,8 @@ fn get_leaf(path: SMTPath) -> Option { fn leaf_hash(path: SMTPath) -> Fr { if let Some(leaf) = path.leaf { - domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::NodeTypeEmpty) + domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::Leaf) } else { - // assert_eq!(path, SMTPath::default()); Fr::zero() } } @@ -536,7 +518,7 @@ fn account_hash_traces(address: Address, account: AccountData, storage_root: Fr) account_hash_traces[5] = [ account_key, account_hash, - domain_hash(account_key, account_hash, HashDomain::NodeTypeEmpty), + domain_hash(account_key, account_hash, HashDomain::Leaf), ]; account_hash_traces } @@ -620,7 +602,7 @@ fn empty_account_hash_traces(leaf: Option) -> [[Fr; 3]; 6] { account_hash_traces[5] = [ l.key, l.value_hash, - domain_hash(l.key, l.value_hash, HashDomain::NodeTypeEmpty), + domain_hash(l.key, l.value_hash, HashDomain::Leaf), ]; } account_hash_traces @@ -841,7 +823,7 @@ impl Proof { if let Some(old_leaf) = self.leafs[0] { assert_eq!( - domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::NodeTypeEmpty), + domain_hash(old_leaf.key, old_leaf.value_hash, HashDomain::Leaf), self.old_account_hash_traces[5][2], ); } else { @@ -849,7 +831,7 @@ impl Proof { } if let Some(new_leaf) = self.leafs[1] { assert_eq!( - domain_hash(new_leaf.key, new_leaf.value_hash, HashDomain::NodeTypeEmpty), + domain_hash(new_leaf.key, new_leaf.value_hash, HashDomain::Leaf), self.new_account_hash_traces[5][2], ); } else { @@ -912,17 +894,16 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) unimplemented!("account leaf deletion"); } else if previous_path_type == Some(PathType::ExtensionNew) { match *domain { - HashDomain::NodeTypeBranch0 => [ - HashDomain::NodeTypeBranch0, + HashDomain::Branch0 => [ + HashDomain::Branch0, if *direction { - HashDomain::NodeTypeBranch1 + HashDomain::Branch1 } else { - HashDomain::NodeTypeBranch2 + HashDomain::Branch2 }, ], - HashDomain::NodeTypeBranch1 => unimplemented!("type 2 extension"), - HashDomain::NodeTypeBranch2 => unimplemented!("type 2 extension"), - HashDomain::NodeTypeBranch3 => { + HashDomain::Branch1 | HashDomain::Branch2 => unreachable!(), + HashDomain::Branch3 => { unreachable!("both siblings already present") } _ => unreachable!(), @@ -983,11 +964,6 @@ fn fr(x: HexBytes<32>) -> Fr { Fr::from_bytes(&x.0).unwrap() } -fn storage_key_hash(key: U256) -> Fr { - let (high, low) = split_word(key); - domain_hash(high, low, HashDomain::NodeTypeLeaf) -} - fn split_word(x: U256) -> (Fr, Fr) { let mut bytes = [0; 32]; x.to_big_endian(&mut bytes); diff --git a/src/types/storage.rs b/src/types/storage.rs index f0842a69..797d8c3b 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -237,7 +237,7 @@ impl StorageLeaf { if let Self::Empty { .. } = self { Fr::zero() } else { - domain_hash(self.key(), self.value_hash(), HashDomain::NodeTypeEmpty) + domain_hash(self.key(), self.value_hash(), HashDomain::Leaf) } } @@ -245,12 +245,9 @@ impl StorageLeaf { let mut lookups = vec![]; match self { Self::Empty { .. } => (), - Self::Leaf { value_hash, .. } => lookups.push(( - self.key(), - *value_hash, - HashDomain::NodeTypeEmpty, - self.hash(), - )), + Self::Leaf { value_hash, .. } => { + lookups.push((self.key(), *value_hash, HashDomain::Leaf, self.hash())) + } Self::Entry { storage_key, .. } => { let (key_high, key_low) = u256_hi_lo(storage_key); lookups.extend(vec![ @@ -266,12 +263,7 @@ impl StorageLeaf { HashDomain::Pair, self.value_hash(), ), - ( - self.key(), - self.value_hash(), - HashDomain::NodeTypeEmpty, - self.hash(), - ), + (self.key(), self.value_hash(), HashDomain::Leaf, self.hash()), ]); } } diff --git a/src/types/trie.rs b/src/types/trie.rs index 4619f22f..07e3de6c 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -258,15 +258,15 @@ impl TrieRows { pub fn next_domain(before_insertion_domain: HashDomain, insertion_direction: bool) -> HashDomain { match before_insertion_domain { - HashDomain::NodeTypeBranch0 => { + HashDomain::Branch0 => { if insertion_direction { - HashDomain::NodeTypeBranch1 + HashDomain::Branch1 } else { - HashDomain::NodeTypeBranch2 + HashDomain::Branch2 } } - HashDomain::NodeTypeBranch1 | HashDomain::NodeTypeBranch2 => HashDomain::NodeTypeBranch3, - HashDomain::NodeTypeBranch3 => unreachable!(), + HashDomain::Branch1 | HashDomain::Branch2 => HashDomain::Branch3, + HashDomain::Branch3 => unreachable!(), _ => unreachable!(), } } @@ -291,5 +291,5 @@ fn get_domains( } fn leaf_hash(leaf: SMTNode) -> Fr { - domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::NodeTypeEmpty) + domain_hash(fr(leaf.sibling), fr(leaf.value), HashDomain::Leaf) } diff --git a/src/util.rs b/src/util.rs index 72c62412..021ced80 100644 --- a/src/util.rs +++ b/src/util.rs @@ -124,13 +124,13 @@ pub fn account_key(address: Address) -> Fr { pub fn check_domain_consistency(before: HashDomain, after: HashDomain, direction: bool) { if direction { assert!( - before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch1 - || before == HashDomain::NodeTypeBranch2 && after == HashDomain::NodeTypeBranch3 + before == HashDomain::Branch0 && after == HashDomain::Branch1 + || before == HashDomain::Branch2 && after == HashDomain::Branch3 ); } else { assert!( - before == HashDomain::NodeTypeBranch0 && after == HashDomain::NodeTypeBranch2 - || before == HashDomain::NodeTypeBranch1 && after == HashDomain::NodeTypeBranch3 + before == HashDomain::Branch0 && after == HashDomain::Branch2 + || before == HashDomain::Branch1 && after == HashDomain::Branch3 ); } } From 90e2b1ec2416743f25c7ab8e89d4040448667991 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 15:52:13 +0800 Subject: [PATCH 50/86] Remove temp_hash --- src/gadgets/poseidon.rs | 7 ++++--- src/util.rs | 7 +------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index cc6933e7..0d5ed41c 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -1,12 +1,12 @@ use crate::constraint_builder::{AdviceColumn, ConstraintBuilder, FixedColumn, Query}; -#[cfg(test)] -use crate::util::temp_hash; use halo2_proofs::{ arithmetic::FieldExt, plonk::{Advice, Column, Fixed}, }; #[cfg(test)] use halo2_proofs::{circuit::Region, halo2curves::bn256::Fr, plonk::ConstraintSystem}; +#[cfg(test)] +use hash_circuit::hash::Hashable; /// Lookup represent the poseidon table in zkevm circuit pub trait PoseidonLookup { @@ -87,7 +87,8 @@ impl PoseidonTable { pub fn load(&self, region: &mut Region<'_, Fr>, hash_traces: &[([Fr; 2], Fr, Fr)]) { for (offset, hash_trace) in hash_traces.iter().enumerate() { assert!( - temp_hash(hash_trace.0[0], hash_trace.0[1], hash_trace.1) == hash_trace.2, + Hashable::hash_with_domain([hash_trace.0[0], hash_trace.0[1]], hash_trace.1) + == hash_trace.2, "{:?}", (hash_trace.0, hash_trace.1, hash_trace.2) ); diff --git a/src/util.rs b/src/util.rs index 021ced80..93eafb46 100644 --- a/src/util.rs +++ b/src/util.rs @@ -15,12 +15,7 @@ pub(crate) fn fr(x: HexBytes<32>) -> Fr { } pub fn domain_hash(x: Fr, y: Fr, domain: HashDomain) -> Fr { - Hashable::hash_with_domain([x, y], Fr::from(Into::::into(domain))) - // Hashable::hash_with_domain([x, y], domain) -} - -pub fn temp_hash(x: Fr, y: Fr, domain: Fr) -> Fr { - Hashable::hash_with_domain([x, y], domain) + Hashable::hash_with_domain([x, y], Fr::from(domain)) } pub(crate) trait Bit { From a3d38ca6257aa5e0d5c746c8d8c07f674434636e Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Fri, 28 Jul 2023 22:53:29 +0800 Subject: [PATCH 51/86] Fix check_hash_traces_new --- src/types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types.rs b/src/types.rs index f513af45..e813eed3 100644 --- a/src/types.rs +++ b/src/types.rs @@ -902,7 +902,7 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) HashDomain::Branch2 }, ], - HashDomain::Branch1 | HashDomain::Branch2 => unreachable!(), + HashDomain::Branch1 | HashDomain::Branch2 => HashDomain::Branch3, HashDomain::Branch3 => { unreachable!("both siblings already present") } From 0dd038f5d7a6a91fc8875c2bf12e153bd484303a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Sat, 29 Jul 2023 00:13:20 +0800 Subject: [PATCH 52/86] fix build --- src/types.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/types.rs b/src/types.rs index e813eed3..bd06ee90 100644 --- a/src/types.rs +++ b/src/types.rs @@ -902,7 +902,8 @@ fn check_hash_traces_new(traces: &[(bool, HashDomain, Fr, Fr, Fr, bool, bool)]) HashDomain::Branch2 }, ], - HashDomain::Branch1 | HashDomain::Branch2 => HashDomain::Branch3, + HashDomain::Branch1 => [HashDomain::Branch1, HashDomain::Branch3], + HashDomain::Branch2 => [HashDomain::Branch2, HashDomain::Branch3], HashDomain::Branch3 => { unreachable!("both siblings already present") } From 011fa6a18e036e23b9bcccc031cacbbba0d21792 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Sun, 30 Jul 2023 18:32:25 +0800 Subject: [PATCH 53/86] Handle case where hash domain for root node changes --- src/tests.rs | 10 ++ src/traces/depth_1_type_1_storage.json | 129 +++++++++++++++++++++++++ src/types/trie.rs | 37 +++++-- 3 files changed, 168 insertions(+), 8 deletions(-) create mode 100644 src/traces/depth_1_type_1_storage.json diff --git a/src/tests.rs b/src/tests.rs index 2b4b8247..dc2c4c70 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -818,3 +818,13 @@ fn singleton_storage_trie() { deletion_proof.check(); mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } + +#[test] +fn depth_1_type_1_storage() { + // This tests the case where the hash domain for calculating the storage root changes + // because of an insertion or deletion. + + let trace: SMTTrace = serde_json::from_str(&include_str!("traces/depth_1_type_1_storage.json")).unwrap(); + mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); + mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); +} diff --git a/src/traces/depth_1_type_1_storage.json b/src/traces/depth_1_type_1_storage.json new file mode 100644 index 00000000..cd3035a7 --- /dev/null +++ b/src/traces/depth_1_type_1_storage.json @@ -0,0 +1,129 @@ +{ + "address": "0x03f8133dd5ed58838b20af1296f62f44e69baa48", + "accountKey": "0x5cc5740d42ad79f1b9ce9451a084e26632cc9aee8ee7f747a29d07bf8863ed1b", + "accountPath": [ + { + "root": "0x75350e959b64b865c76737751c9cfa23f1e35aa416810b8f6b655c85b07aca1c", + "leaf": { + "value": "0x779a269cc632a5d2668d20b01b20489fde58941b322fde4677ef2ebe118e6f20", + "sibling": "0x5cc5740d42ad79f1b9ce9451a084e26632cc9aee8ee7f747a29d07bf8863ed1b", + "node_type": 4 + }, + "path": [ + { + "value": "0x109004f4385fc231bee2a20b2921e1a9088636bfdb690a647121e1c605de0f01", + "sibling": "0xe5c1fc68d2b728115a6f79fb38ee57ffff5859ebec9caaa7bc54986119ee5c02", + "node_type": 9 + }, + { + "value": "0x0359541ab054404bc94af4188de1df74e1cdc8bc80aacb8d9944fe416b2fe621", + "sibling": "0xd454ada20a5db3b7ace82d2bf8aead0ef7da859582da4de86e71cf822ebcc827", + "node_type": 9 + }, + { + "value": "0xa69528847504d7d3ce4bc46bb04b82382dda2df17a911c6b299312bcdf06b62f", + "sibling": "0xf9b45f4acabaa7e6937d8dac46059c85188c93404b8b81762c3c1da5746acd0f", + "node_type": 6 + } + ], + "pathPart": "0x4" + }, + { + "root": "0xb0cc90cb23834dbcf7c3c359dc13d92bf8e1ab972222db24f37c607502457329", + "leaf": { + "value": "0xb23690306d435fcd7851b61f9e5b584cb2b799b383df49b8aac578759ded7a04", + "sibling": "0x5cc5740d42ad79f1b9ce9451a084e26632cc9aee8ee7f747a29d07bf8863ed1b", + "node_type": 4 + }, + "path": [ + { + "value": "0xd45136e52dbf61f56933cf3f6a1963e6e1e7f9d8a5ff3de6ceeb4b43ea04b91d", + "sibling": "0xe5c1fc68d2b728115a6f79fb38ee57ffff5859ebec9caaa7bc54986119ee5c02", + "node_type": 9 + }, + { + "value": "0x9034c0822065b65b03ad4b45e28f8b5d4e1d0ae0c0a3ea0fc582d30ed4e16b00", + "sibling": "0xd454ada20a5db3b7ace82d2bf8aead0ef7da859582da4de86e71cf822ebcc827", + "node_type": 9 + }, + { + "value": "0x27bc4f663b5a51827390b6940763918440f96cea2bbbaf3d6bc386489d60ba11", + "sibling": "0xf9b45f4acabaa7e6937d8dac46059c85188c93404b8b81762c3c1da5746acd0f", + "node_type": 6 + } + ], + "pathPart": "0x4" + } + ], + "accountUpdate": [ + { + "nonce": 1, + "balance": "0x0", + "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", + "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", + "codeSize": 4507 + }, + { + "nonce": 1, + "balance": "0x0", + "codeHash": "0x16fc66d15010e6213d2a009f57ed8e847717ea0b83eeb37cd322e9ad1b018a3e", + "poseidonCodeHash": "0x0d85b09a93d5ed99a87d27dcf6d50e4459d16bb694e70f89eefcb745ea1c85e7", + "codeSize": 4507 + } + ], + "statePath": [ + { + "root": "0xa6d1ca9e941bc47b27ef7bbbecb327d2e3183ab6b729014b2f33f70a079f610a", + "leaf": { + "value": "0x2e1cb8b9dc00f6834b26d763e0733c3045a0e2262f5b4a1fd16a99b099b8dc0a", + "sibling": "0xebbde6853f0d7fd5c795a751c763ee866f603ddd45a59a14ad1189f04105c506", + "node_type": 4 + }, + "path": [ + { + "value": "0xb2f29b80761a58f1144c3afeb97b7a8d8ddb9fe9bbbd2efabec9401a7937980a", + "sibling": "0xd1a4b5f37b62fd698f85d93925f579394db4404e186f21e6df6670f23bc9d027", + "node_type": 6 + } + ], + "pathPart": "0x1" + }, + { + "root": "0x94571a8d28220d48d3db2ee8be4a4f42fb20e4c09325397bc4e36d80f0de3b21", + "leaf": { + "value": "0x937d5f0461f0cc3c2607ade7f55e4c0952b5977d73a97392e054f0c95b3f3300", + "sibling": "0x775788db2d0c83b883dc4705090775d5ba4fdca68379a90e9c48e3b6529ded1a", + "node_type": 4 + }, + "path": [ + { + "value": "0x37f76144ee25efb94ae9609251c9fa4cd19648d74454805bfab59183fad1eb01", + "sibling": "0xd1a4b5f37b62fd698f85d93925f579394db4404e186f21e6df6670f23bc9d027", + "node_type": 7 + }, + { + "value": "0x766dfedbd4683dff3d7e1fbd3c274a1cf2b4286c369e4bf7b69a0ef0bb364710", + "sibling": "0x0000000000000000000000000000000000000000000000000000000000000000", + "node_type": 7 + }, + { + "value": "0x804597600908545e7ba96b5f7e3b3010d6d041af15226770d6f9886286d72313", + "sibling": "0xb2f29b80761a58f1144c3afeb97b7a8d8ddb9fe9bbbd2efabec9401a7937980a", + "node_type": 6 + } + ], + "pathPart": "0x7" + } + ], + "stateKey": "0x775788db2d0c83b883dc4705090775d5ba4fdca68379a90e9c48e3b6529ded1a", + "stateUpdate": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "value": "0x000000000000000000001c5a77d9fa7ef466951b2f01f724bca3a5820b630012" + } + ] +} diff --git a/src/types/trie.rs b/src/types/trie.rs index 07e3de6c..b948ef34 100644 --- a/src/types/trie.rs +++ b/src/types/trie.rs @@ -22,22 +22,37 @@ pub struct TrieRow { pub struct TrieRows(pub Vec); impl TrieRow { - pub fn old_hash(&self) -> Fr { + fn old_hash(&self, next_path_type: Option) -> Fr { + let [domain, _] = self.hash_domains(next_path_type); if let PathType::ExtensionNew = self.path_type { self.old } else if self.direction { - domain_hash(self.sibling, self.old, self.domain) + domain_hash(self.sibling, self.old, domain) } else { - domain_hash(self.old, self.sibling, self.domain) + domain_hash(self.old, self.sibling, domain) } } - pub fn new_hash(&self) -> Fr { + fn new_hash(&self, next_path_type: Option) -> Fr { + let [_, domain] = self.hash_domains(next_path_type); if let PathType::ExtensionOld = self.path_type { self.new } else if self.direction { - domain_hash(self.sibling, self.new, self.domain) + domain_hash(self.sibling, self.new, domain) } else { - domain_hash(self.new, self.sibling, self.domain) + domain_hash(self.new, self.sibling, domain) + } + } + + fn hash_domains(&self, next_path_type: Option) -> [HashDomain; 2] { + if self.path_type == PathType::Common + && matches!( + next_path_type, + Some(PathType::ExtensionNew) | Some(PathType::ExtensionOld) + ) + { + get_domains(next_path_type.unwrap(), self.domain, self.direction) + } else { + [self.domain, self.domain] } } } @@ -193,11 +208,17 @@ impl TrieRows { } pub fn old_root(&self, leaf_hash: impl FnOnce() -> Fr) -> Fr { - self.0.first().map_or_else(leaf_hash, TrieRow::old_hash) + let next_path_type = self.0.get(1).map(|row| row.path_type); + self.0 + .first() + .map_or_else(leaf_hash, |row| row.old_hash(next_path_type)) } pub fn new_root(&self, leaf_hash: impl FnOnce() -> Fr) -> Fr { - self.0.first().map_or_else(leaf_hash, TrieRow::new_hash) + let next_path_type = self.0.get(1).map(|row| row.path_type); + self.0 + .first() + .map_or_else(leaf_hash, |row| row.new_hash(next_path_type)) } #[cfg(test)] From dc1a0c72ec9d284011d0260c54848f8e8f34ba0a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 31 Jul 2023 14:04:04 +0800 Subject: [PATCH 54/86] Add failing empty storage proof tests --- src/tests.rs | 91 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/src/tests.rs b/src/tests.rs index dc2c4c70..d8d460a3 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -12,6 +12,7 @@ use halo2_proofs::{ use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; const N_ROWS: usize = 1024; +const STORAGE_ADDRESS: Address = Address::repeat_byte(1); fn initial_generator() -> WitnessGenerator { assert!(*HASH_SCHEME_DONE); @@ -33,7 +34,7 @@ fn initial_storage_generator() -> WitnessGenerator { for i in 40..60 { generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::one(), U256::zero(), Some(U256::from(i)), @@ -519,7 +520,7 @@ fn empty_storage_type_1_update_a() { let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::from(307), U256::zero(), Some(U256::from(23412321)), @@ -562,7 +563,7 @@ fn empty_storage_type_2_update_a() { let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::from(307), U256::zero(), Some(U256::from(502)), @@ -605,7 +606,7 @@ fn empty_storage_type_2_update_b() { let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::from(307), U256::zero(), Some(U256::from(500)), @@ -655,7 +656,7 @@ fn empty_storage_type_1_update_b() { let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::from(307), U256::zero(), Some(U256::from(1)), @@ -698,7 +699,7 @@ fn empty_storage_type_1_update_c() { let mut generator = initial_storage_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(1), + STORAGE_ADDRESS, U256::from(307), U256::zero(), Some(U256::from(3)), @@ -771,7 +772,7 @@ fn empty_storage_trie() { let mut generator = initial_generator(); let trace = generator.handle_new_state( mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, - Address::repeat_byte(2), + STORAGE_ADDRESS, U256::from(324123123u64), U256::zero(), Some(U256::from(3)), @@ -824,7 +825,81 @@ fn depth_1_type_1_storage() { // This tests the case where the hash domain for calculating the storage root changes // because of an insertion or deletion. - let trace: SMTTrace = serde_json::from_str(&include_str!("traces/depth_1_type_1_storage.json")).unwrap(); + let trace: SMTTrace = + serde_json::from_str(&include_str!("traces/depth_1_type_1_storage.json")).unwrap(); mock_prove(vec![(MPTProofType::StorageChanged, trace.clone())]); mock_prove(vec![(MPTProofType::StorageChanged, reverse(trace))]); } + +#[test] +fn depth_1_type_1_empty_storage() { + let mut generator = initial_generator(); + for key in [2, 10] { + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(2), + U256::from(7), + U256::zero(), + Some(U256::from(key)), + ); + } + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + Address::repeat_byte(2), + U256::zero(), + U256::zero(), + Some(U256::from(3)), + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + let proof = Proof::from((MPTProofType::StorageDoesNotExist, trace.clone())); + proof.check(); + mock_prove(vec![(MPTProofType::StorageDoesNotExist, trace)]); +} + +#[test] +fn empty_storage_type_1() { + let mut generator = initial_storage_generator(); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + STORAGE_ADDRESS, + U256::zero(), + U256::zero(), + Some(U256::from(3)), + ); + dbg!(trace.clone()); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_some(), + "storage key = 3 is not type 1" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::StorageDoesNotExist, trace)]); +} + +#[test] +fn empty_storage_type_2() { + let mut generator = initial_storage_generator(); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::StorageChanged, + STORAGE_ADDRESS, + U256::zero(), + U256::zero(), + Some(U256::from(500)), + ); + assert!( + trace.state_path[0].clone().unwrap().leaf.is_none(), + "storage key = 500 is not type 2" + ); + + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::StorageDoesNotExist, trace)]); +} From 1c11b6c9b1245073a76c3ce7100b6798060f7cb8 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 31 Jul 2023 14:05:41 +0800 Subject: [PATCH 55/86] Fix failing empty storage proofs by always adding storage key hash to hash traces --- src/gadgets/mpt_update.rs | 1 + src/types/storage.rs | 36 ++++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index e09f7057..bfdeb868 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -661,6 +661,7 @@ impl MptUpdateConfig { trie_rows, old_leaf, new_leaf, + .. } => { let other_key = storage.other_key(); let n_trie_rows = self.assign_storage_trie_rows(region, offset, trie_rows); diff --git a/src/types/storage.rs b/src/types/storage.rs index 797d8c3b..fa5b43e6 100644 --- a/src/types/storage.rs +++ b/src/types/storage.rs @@ -12,6 +12,7 @@ use halo2_proofs::{arithmetic::FieldExt, halo2curves::bn256::Fr}; pub enum StorageProof { Root(Fr), // Not proving a storage update, so we only need the storage root. Update { + storage_key: U256, key: Fr, trie_rows: TrieRows, old_leaf: StorageLeaf, @@ -65,12 +66,21 @@ impl StorageProof { match self { Self::Root(_) => vec![], Self::Update { + storage_key, + key, trie_rows, old_leaf, new_leaf, .. } => { - let mut lookups = trie_rows.poseidon_lookups(); + let (key_high, key_low) = u256_hi_lo(storage_key); + let mut lookups = vec![( + Fr::from_u128(key_high), + Fr::from_u128(key_low), + HashDomain::Pair, + *key, + )]; + lookups.extend(trie_rows.poseidon_lookups()); lookups.extend(old_leaf.poseidon_lookups()); lookups.extend(new_leaf.poseidon_lookups()); lookups @@ -126,10 +136,10 @@ impl StorageProof { #[cfg(test)] pub fn check(&self) { if let Self::Update { - key: _, trie_rows, old_leaf, new_leaf, + .. } = self { // Check that trie rows are consistent and produce claimed roots. @@ -242,21 +252,13 @@ impl StorageLeaf { } fn poseidon_lookups(&self) -> Vec<(Fr, Fr, HashDomain, Fr)> { - let mut lookups = vec![]; match self { - Self::Empty { .. } => (), + Self::Empty { .. } => vec![], Self::Leaf { value_hash, .. } => { - lookups.push((self.key(), *value_hash, HashDomain::Leaf, self.hash())) + vec![(self.key(), *value_hash, HashDomain::Leaf, self.hash())] } - Self::Entry { storage_key, .. } => { - let (key_high, key_low) = u256_hi_lo(storage_key); - lookups.extend(vec![ - ( - Fr::from_u128(key_high), - Fr::from_u128(key_low), - HashDomain::Pair, - self.key(), - ), + Self::Entry { .. } => { + vec![ ( self.value_high(), self.value_low(), @@ -264,10 +266,9 @@ impl StorageLeaf { self.value_hash(), ), (self.key(), self.value_hash(), HashDomain::Leaf, self.hash()), - ]); + ] } } - lookups } } @@ -289,10 +290,13 @@ impl From<&SMTTrace> for StorageProof { ); let [old_entry, new_entry] = trace.state_update.unwrap().map(Option::unwrap); + assert_eq!(old_entry.key, new_entry.key); + let storage_key = u256_from_hex(old_entry.key); let old_leaf = StorageLeaf::new(key, &old_leaf, &old_entry); let new_leaf = StorageLeaf::new(key, &new_leaf, &new_entry); let storage_proof = Self::Update { + storage_key, key, trie_rows, old_leaf, From 8511fdf2aa8fbecdb7278d160a6eb165198e6f2c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 7 Aug 2023 03:47:05 -0700 Subject: [PATCH 56/86] Range check address_high --- src/gadgets/mpt_update.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 54a4a0bf..b156a071 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -130,9 +130,14 @@ impl MptUpdateConfig { * (1 << 32); cb.poseidon_lookup( "account mpt key = h(address_high, address_low)", - [address_high.current(), address_low, key.current()], + [address_high.current(), address_low.clone(), key.current()], poseidon, ); + cb.add_lookup( + "address_high is 16 bytes", + [address_high.current(), Query::from(15)], + bytes.lookup(), + ); cb.add_lookup( "rlc_old_root = rlc(old_root)", [old_hash.current(), old_hash_rlc.current(), Query::from(31)], @@ -2051,6 +2056,7 @@ pub fn byte_representations(proofs: &[Proof]) -> (Vec, Vec, Vec) let mut frs = vec![]; for proof in proofs { + u128s.push(address_high(proof.claim.address)); match MPTProofType::from(proof.claim) { MPTProofType::NonceChanged | MPTProofType::CodeSizeExists => { u128s.push(address_high(proof.claim.address)); From c3231c2b7f758beae46d8f2234fd72b0dba12f98 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Mon, 14 Aug 2023 08:55:18 -0700 Subject: [PATCH 57/86] Constrain inverse_or_zero to be zero when value is 0 (#82) Co-authored-by: Mason Liang --- src/gadgets/is_zero.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gadgets/is_zero.rs b/src/gadgets/is_zero.rs index 4aef2953..a4d9a210 100644 --- a/src/gadgets/is_zero.rs +++ b/src/gadgets/is_zero.rs @@ -55,6 +55,10 @@ impl IsZeroGadget { "value is 0 or inverse_or_zero is inverse of value", value.current() * (Query::one() - value.current() * inverse_or_zero.current()), ); + cb.assert_zero( + "inverse_or_zero is 0 or inverse_or_zero is inverse of value", + inverse_or_zero.current() * (Query::one() - value.current() * inverse_or_zero.current()), + ); Self { value, inverse_or_zero, From 9aeff02e4d86e9bbecd0e420ebd3ed13a824e094 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Mon, 14 Aug 2023 09:32:04 -0700 Subject: [PATCH 58/86] [ToB 2.6] Fix configure_nonce (#73) * Remove unreachable constraints and check that account leafs are not deleted for nonce proofs * Fix constraint typos * Deduplicate lookup * Check that old nonce is 0 for new account and move old_code_size into condition --------- Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 42 +++++++++++++++------------------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index bfdeb868..04049306 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1277,6 +1277,10 @@ fn configure_nonce( bytes: &impl BytesLookup, poseidon: &impl PoseidonLookup, ) { + cb.assert( + "account leafs cannot be deleted", + !config.path_type.current_matches(&[PathType::ExtensionOld]), + ); for variant in SegmentType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| match variant { SegmentType::AccountTrie => { @@ -1340,10 +1344,13 @@ fn configure_nonce( SegmentType::AccountLeaf3 => { cb.assert_zero("direction is 0", config.direction.current()); - let old_code_size = (config.old_hash.current() - config.old_value.current()) - * Query::Constant(F::from(1 << 32).square().invert().unwrap()); let new_code_size = (config.new_hash.current() - config.new_value.current()) * Query::Constant(F::from(1 << 32).square().invert().unwrap()); + cb.add_lookup( + "new nonce is 8 bytes", + [config.new_value.current(), Query::from(7)], + bytes.lookup(), + ); cb.condition( config.path_type.current_matches(&[PathType::Common]), |cb| { @@ -1352,11 +1359,9 @@ fn configure_nonce( [config.old_value.current(), Query::from(7)], bytes.lookup(), ); - cb.add_lookup( - "new nonce is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), - ); + let old_code_size = (config.old_hash.current() + - config.old_value.current()) + * Query::Constant(F::from(1 << 32).square().invert().unwrap()); cb.assert_equal( "old_code_size = new_code_size for nonce update", old_code_size.clone(), @@ -1364,7 +1369,7 @@ fn configure_nonce( ); cb.add_lookup( "existing code size is 8 bytes", - [old_code_size.clone(), Query::from(7)], + [old_code_size, Query::from(7)], bytes.lookup(), ); }, @@ -1372,10 +1377,9 @@ fn configure_nonce( cb.condition( config.path_type.current_matches(&[PathType::ExtensionNew]), |cb| { - cb.add_lookup( - "new nonce is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), + cb.assert_zero( + "old nonce is 0 for ExtensionNew nonce update", + config.old_value.current(), ); cb.assert_zero( "code size is 0 for ExtensionNew nonce update", @@ -1387,20 +1391,6 @@ fn configure_nonce( ); }, ); - cb.condition( - config.path_type.current_matches(&[PathType::ExtensionOld]), - |cb| { - cb.add_lookup( - "old nonce is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), - ); - cb.assert_zero( - "code size is 0 for ExtensionOld nonce update", - old_code_size, - ); - }, - ); } _ => {} }; From 2163a9c436ed85363c954ecf7e6e1044a1b991dc Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 14 Aug 2023 08:42:47 -0800 Subject: [PATCH 59/86] fix build --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d9b1c75e..fb04fc42 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ halo2_proofs = { git = "https://github.com/scroll-tech/halo2.git", branch = "dev print_layout = ["halo2_proofs/dev-graph"] [dev-dependencies] -mpt-zktrie = { git = "https://github.com/scroll-tech/zkevm-circuits.git", branch = "feat/mpt_new_hash_scheme" } +mpt-zktrie = { git = "https://github.com/scroll-tech/zkevm-circuits.git" } # mpt-zktrie = { path = "../scroll-circuits/zktrie" } rand_chacha = "0.3.0" plotters = "0.3" From b0d5f6fca05285e9f86f12db0da94f9d20bfbb0a Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 23 Aug 2023 15:20:09 -0700 Subject: [PATCH 60/86] Add check that final mpt update row is padding --- src/mpt.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/mpt.rs b/src/mpt.rs index f0212a7c..074cb090 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -12,6 +12,7 @@ use crate::{ poseidon::PoseidonLookup, rlc_randomness::RlcRandomness, }, + mpt_table::MPTProofType, types::Proof, }; use halo2_proofs::{ @@ -25,6 +26,7 @@ use halo2_proofs::{ #[derive(Clone)] pub struct MptCircuitConfig { selector: SelectorColumn, + is_final_row: SelectorColumn, rlc_randomness: RlcRandomness, mpt_update: MptUpdateConfig, canonical_representation: CanonicalRepresentationConfig, @@ -68,10 +70,30 @@ impl MptCircuitConfig { &canonical_representation, ); + // This ensures that the final mpt update in the circuit is complete, since the padding + // for the mpt update is a valid proof that shows the account with address 0 does not + // exist in an mpt with root = 0 (i.e. the mpt is empty). + let is_final_row = SelectorColumn(cs.fixed_column()); + cb.add_lookup( + "final mpt update is padding", + [ + 1.into(), + 0.into(), + 0.into(), + (MPTProofType::AccountDoesNotExist as u64).into(), + 0.into(), + 0.into(), + 0.into(), + 0.into(), + ], + mpt_update.lookup().map(|q| q * is_final_row.current()), + ); + cb.build(cs); Self { selector, + is_final_row, rlc_randomness, mpt_update, key_bit, @@ -132,6 +154,7 @@ impl MptCircuitConfig { for offset in 1 + n_assigned_rows..n_rows { self.mpt_update.assign_padding_row(&mut region, offset); } + self.is_final_row.enable(&mut region, n_rows - 1); Ok(()) }, From 0e2957049257b56672978ff8cb726c3207e6b49c Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Wed, 23 Aug 2023 15:20:18 -0700 Subject: [PATCH 61/86] fmt --- src/gadgets/is_zero.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gadgets/is_zero.rs b/src/gadgets/is_zero.rs index a4d9a210..9fe7163d 100644 --- a/src/gadgets/is_zero.rs +++ b/src/gadgets/is_zero.rs @@ -57,7 +57,8 @@ impl IsZeroGadget { ); cb.assert_zero( "inverse_or_zero is 0 or inverse_or_zero is inverse of value", - inverse_or_zero.current() * (Query::one() - value.current() * inverse_or_zero.current()), + inverse_or_zero.current() + * (Query::one() - value.current() * inverse_or_zero.current()), ); Self { value, From 9bd18782c19b5f5b2a2410b80f1ace6cd9637dcb Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 15:41:33 -0700 Subject: [PATCH 62/86] Check previous instead of current (#68) Co-authored-by: Mason Liang --- src/gadgets/one_hot.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gadgets/one_hot.rs b/src/gadgets/one_hot.rs index 14418ed7..d33dd0ad 100644 --- a/src/gadgets/one_hot.rs +++ b/src/gadgets/one_hot.rs @@ -75,7 +75,7 @@ impl OneHot { * self .columns .get(&t) - .map_or_else(|| !self.sum(-1), BinaryColumn::current) + .map_or_else(|| !self.sum(-1), BinaryColumn::previous) }) } From 34af759e94f4b342507778145e7ae364a6d5566e Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 15:43:16 -0700 Subject: [PATCH 63/86] Constraint BinaryColumn to be binary (#69) Co-authored-by: Mason Liang --- src/constraint_builder/binary_column.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/constraint_builder/binary_column.rs b/src/constraint_builder/binary_column.rs index 8e777d9a..c414850f 100644 --- a/src/constraint_builder/binary_column.rs +++ b/src/constraint_builder/binary_column.rs @@ -28,12 +28,14 @@ impl BinaryColumn { pub fn configure( cs: &mut ConstraintSystem, - _cb: &mut ConstraintBuilder, + cb: &mut ConstraintBuilder, ) -> Self { - let advice_column = cs.advice_column(); - // TODO: constrain to be binary here... - // cb.add_constraint() - Self(advice_column) + let binary_column = Self(cs.advice_column()); + cb.assert( + "binary column is 0 or 1", + binary_column.current().or(!binary_column.current()), + ); + binary_column } pub fn assign(&self, region: &mut Region<'_, F>, offset: usize, value: bool) { From 3ab166a4a62329ec42d44cd63fc9563ff29dea4e Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 15:45:20 -0700 Subject: [PATCH 64/86] Check old hash = new hash for every row of empty storage proofs (#74) Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 04049306..0b223e62 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1921,19 +1921,14 @@ fn configure_empty_storage( .path_type .current_matches(&[PathType::Start, PathType::Common]), ); + cb.assert_equal( + "hash doesn't change for empty account", + config.old_hash.current(), + config.new_hash.current(), + ); let is_final_segment = config.segment_type.next_matches(&[SegmentType::Start]); cb.condition(is_final_segment, |cb| { - cb.assert_equal( - "old_hash = new_hash", - config.old_hash.current(), - config.new_hash.current(), - ); - cb.assert_equal( - "old value = new value for empty account proof", - config.old_value.current(), - config.new_value.current(), - ); nonexistence_proof::configure( cb, config.old_value, @@ -1960,6 +1955,8 @@ fn configure_empty_storage( } SegmentType::AccountLeaf3 => { cb.assert_zero("direction is 0", config.direction.current()); + // Note that this constraint doesn't apply if the account doesn't exist. This + // is ok, because every storage key for an empty account is empty. configure_word_rlc( cb, [config.key, key_high, key_low], From 004fcddb53a86a62ba94f1f7fe8c04b315f23779 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 15:45:39 -0700 Subject: [PATCH 65/86] Remove unreachable constraints and redundant condition in configure_code_size (#64) Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 71 ++++++++++----------------------------- 1 file changed, 17 insertions(+), 54 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 0b223e62..c9ac204e 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1461,62 +1461,25 @@ fn configure_code_size( - config.old_value.current() * Query::Constant(F::from(1 << 32).square()); let new_nonce = config.new_hash.current() - config.new_value.current() * Query::Constant(F::from(1 << 32).square()); - cb.condition( - config.path_type.current_matches(&[PathType::Common]), - |cb| { - cb.add_lookup( - "old code size is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), - ); - cb.add_lookup( - "new code size is 8 bytes", - [config.new_value.current(), Query::from(7)], - bytes.lookup(), - ); - cb.assert_equal( - "old nonce = new nonce for code size update", - old_nonce.clone(), - new_nonce.clone(), - ); - cb.add_lookup( - "nonce is 8 bytes", - [old_nonce.clone(), Query::from(7)], - bytes.lookup(), - ); - }, + cb.add_lookup( + "old code size is 8 bytes", + [config.old_value.current(), Query::from(7)], + bytes.lookup(), ); - cb.condition( - config.path_type.current_matches(&[PathType::ExtensionNew]), - |cb| { - cb.add_lookup( - "new nonce is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), - ); - cb.assert_zero( - "new nonce is 0 for ExtensionNew code size update", - new_nonce, - ); - cb.assert_zero( - "nonce and code size are 0 for ExtensionNew balance update", - config.sibling.current(), - ); - }, + cb.add_lookup( + "new code size is 8 bytes", + [config.new_value.current(), Query::from(7)], + bytes.lookup(), ); - cb.condition( - config.path_type.current_matches(&[PathType::ExtensionOld]), - |cb| { - cb.add_lookup( - "old code size is 8 bytes", - [config.old_value.current(), Query::from(7)], - bytes.lookup(), - ); - cb.assert_zero( - "old nonce is 0 for ExtensionOld code size update", - old_nonce, - ); - }, + cb.assert_equal( + "old nonce = new nonce for code size update", + old_nonce.clone(), + new_nonce, + ); + cb.add_lookup( + "nonce is 8 bytes", + [old_nonce, Query::from(7)], + bytes.lookup(), ); } _ => {} From f9ff6bb56b45da3ad219e4e01c283bedd478ef14 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 15:46:06 -0700 Subject: [PATCH 66/86] fix constraint name (#72) Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index c9ac204e..0f193c6e 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -175,7 +175,7 @@ impl MptUpdateConfig { old_value.previous(), ); cb.assert_equal( - "old_value does not change", + "new_value does not change", new_value.current(), new_value.previous(), ); From b8a85285b385b8be68da55c79680c635de899b88 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 16:00:54 -0700 Subject: [PATCH 67/86] Remove unused file (#71) Co-authored-by: Mason Liang --- src/types.rs | 1 - src/types/account.rs | 166 ------------------------------------------- 2 files changed, 167 deletions(-) delete mode 100644 src/types/account.rs diff --git a/src/types.rs b/src/types.rs index bd06ee90..9536fd23 100644 --- a/src/types.rs +++ b/src/types.rs @@ -13,7 +13,6 @@ use itertools::{EitherOrBoth, Itertools}; use num_bigint::BigUint; use num_traits::identities::Zero; -// mod account; pub mod storage; pub mod trie; use storage::StorageProof; diff --git a/src/types/account.rs b/src/types/account.rs deleted file mode 100644 index 28bc3186..00000000 --- a/src/types/account.rs +++ /dev/null @@ -1,166 +0,0 @@ -use crate::{ - serde::{AccountData as SerdeAccountData, SMTNode, SMTTrace}, - types::{storage::StorageProof, trie::TrieRows}, - util::{account_key, fr, fr_from_biguint, hash, split_word, u256_from_biguint}, -}; -use ethers_core::types::{Address, U256}; -use halo2_proofs::halo2curves::bn256::Fr; - -#[derive(Clone, Debug)] -pub struct AccountProof { - account_key: Fr, - trie_rows: TrieRows, - old_leaf: AccountLeaf, - new_leaf: AccountLeaf, - storage: StorageProof, -} - -#[derive(Clone, Debug)] -pub enum AccountLeaf { - Empty { - account_key: Fr, - }, - Leaf { - account_key: Fr, - account_hash: Fr, - }, - Account { - address: Address, - account_data: AccountData, - }, -} - -#[derive(Clone, Copy, Debug, Default)] -pub struct AccountData { - balance: Fr, // We assume that all account balances can fit into 1 field element. - keccak_codehash: U256, - poseidon_codehash: Fr, - code_size: u64, - nonce: u64, -} - -impl AccountData { - fn hash(&self, storage_root: Fr) -> Fr { - hash( - self.poseidon_codehash_sibling(storage_root), - self.poseidon_codehash, - ) - } - - fn packed_nonce_and_codesize(&self) -> Fr { - Fr::from(self.nonce) + Fr::from(self.code_size) * Fr::from(1 << 32).square() - } - - fn hashed_nonce_codesize_balance(&self) -> Fr { - hash(self.packed_nonce_and_codesize(), self.balance) - } - - fn hashed_keccak_codehash(&self) -> Fr { - let (high, low) = split_word(self.keccak_codehash); - hash(high, low) - } - - fn hashed_storage_root_keccak_codehash(&self, storage_root: Fr) -> Fr { - hash(storage_root, self.hashed_keccak_codehash()) - } - - fn poseidon_codehash_sibling(&self, storage_root: Fr) -> Fr { - hash( - self.hashed_nonce_codesize_balance(), - self.hashed_storage_root_keccak_codehash(storage_root), - ) - } -} - -impl AccountProof { - pub fn old_root(&self) -> Fr { - self.trie_rows - .old_root(|| self.old_leaf.hash(self.storage.new_root())) - } - - pub fn new_root(&self) -> Fr { - self.trie_rows - .new_root(|| self.new_leaf.hash(self.storage.old_root())) - } -} - -impl AccountLeaf { - fn new(address: Address, node: &Option, data: &Option) -> Self { - let account_key = account_key(address); - match (node, data) { - (None, None) => Self::Empty { account_key }, - (Some(node), Some(data)) => { - assert_eq!(account_key, fr(node.sibling)); - Self::Account { - address, - account_data: AccountData { - balance: fr_from_biguint(&data.balance), - keccak_codehash: u256_from_biguint(&data.code_hash), - poseidon_codehash: fr_from_biguint(&data.poseidon_code_hash), - code_size: data.code_size, - nonce: data.nonce, - }, - } - } - (Some(node), None) => { - assert_eq!(account_key, fr(node.sibling)); - Self::Leaf { - account_key, - account_hash: fr(node.value), - } - } - (None, Some(_)) => { - unreachable!(); - } - } - } - - fn hash(&self, storage_root: Fr) -> Fr { - match self { - Self::Empty { .. } => Fr::zero(), - Self::Leaf { - account_key, - account_hash, - } => hash(hash(Fr::one(), *account_key), *account_hash), - Self::Account { - address, - account_data, - } => hash( - hash(Fr::one(), account_key(*address)), - account_data.hash(storage_root), - ), - } - } -} - -impl From<&SMTTrace> for AccountProof { - fn from(trace: &SMTTrace) -> Self { - let address = Address::from(trace.address.0); - - let [old_path, new_path] = &trace.account_path; - let old_leaf = old_path.leaf; - let new_leaf = new_path.leaf; - let trie_rows = TrieRows::new( - account_key(address), - &new_path.path, - &new_path.path, - old_path.leaf, - new_path.leaf, - ); - - let [old_entry, new_entry] = &trace.account_update; - let old_leaf = AccountLeaf::new(address, &old_leaf, old_entry); - let new_leaf = AccountLeaf::new(address, &new_leaf, new_entry); - - let account_proof = Self { - account_key: account_key(address), - trie_rows, - old_leaf, - new_leaf, - storage: StorageProof::from(trace), - }; - assert_eq!(account_proof.old_root(), fr(old_path.root)); - assert_eq!(account_proof.new_root(), fr(new_path.root)); - account_proof - } -} From f89e2d58990377299e17cca45bf1c280ff708b5f Mon Sep 17 00:00:00 2001 From: z2trillion Date: Wed, 23 Aug 2023 16:06:20 -0700 Subject: [PATCH 68/86] Fix constraint names (#86) Co-authored-by: Mason Liang --- src/gadgets/byte_representation.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gadgets/byte_representation.rs b/src/gadgets/byte_representation.rs index a60dd835..2dd4323b 100644 --- a/src/gadgets/byte_representation.rs +++ b/src/gadgets/byte_representation.rs @@ -65,12 +65,12 @@ impl ByteRepresentationConfig { index.current() * (index.current() - index.previous() - 1), ); cb.assert_equal( - "current value = previous value * 256 * (index == 0) + byte", + "current value = previous value * 256 * (index != 0) + byte", value.current(), value.previous() * 256 * !index_is_zero.current() + byte.current(), ); cb.assert_equal( - "current rlc = previous rlc * randomness * (index == 0) + byte", + "current rlc = previous rlc * randomness * (index != 0) + byte", rlc.current(), rlc.previous() * randomness.query() * !index_is_zero.current() + byte.current(), ); From ef64eb52548946a0dd7f0ee83ce71ed8d460c405 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Thu, 24 Aug 2023 22:39:30 -0700 Subject: [PATCH 69/86] [ZK 42] Fix configure_balance constraints (#87) * Check that nonce and code size are 0 new account leaf * Remove unreachable condition --------- Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 0f193c6e..7faaab84 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1570,9 +1570,7 @@ fn configure_balance( SegmentType::AccountLeaf3 => { cb.assert_equal("direction is 1", config.direction.current(), Query::one()); cb.condition( - config - .path_type - .current_matches(&[PathType::Common, PathType::ExtensionOld]), + config.path_type.current_matches(&[PathType::Common]), |cb| { cb.add_lookup( "old balance is rlc(old_hash) and fits into 31 bytes", @@ -1601,6 +1599,15 @@ fn configure_balance( ); }, ); + cb.condition( + config.path_type.current_matches(&[PathType::ExtensionNew]), + |cb| { + cb.assert_zero( + "nonce and code size are 0 for new account", + config.sibling.current(), + ); + }, + ); } _ => {} }; From c8f9c7f39d476e48b2712f5caaf3a98327ee2098 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Thu, 24 Aug 2023 22:55:37 -0700 Subject: [PATCH 70/86] [ZK 35] add is_first selector to handle wraparound for .previous (#81) * Add is_first selector to handle wraparound for .previous * Remove unneeded condition * Correct constraint name --------- Co-authored-by: Mason Liang --- src/gadgets/byte_representation.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gadgets/byte_representation.rs b/src/gadgets/byte_representation.rs index 2dd4323b..1f761bb9 100644 --- a/src/gadgets/byte_representation.rs +++ b/src/gadgets/byte_representation.rs @@ -1,5 +1,7 @@ use super::{byte_bit::RangeCheck256Lookup, is_zero::IsZeroGadget, rlc_randomness::RlcRandomness}; -use crate::constraint_builder::{AdviceColumn, ConstraintBuilder, Query, SecondPhaseAdviceColumn}; +use crate::constraint_builder::{ + AdviceColumn, ConstraintBuilder, Query, SecondPhaseAdviceColumn, SelectorColumn, +}; use ethers_core::types::{Address, H256}; use halo2_proofs::{ arithmetic::FieldExt, @@ -27,6 +29,7 @@ pub struct ByteRepresentationConfig { index: AdviceColumn, // internal columns + is_first: SelectorColumn, byte: AdviceColumn, index_is_zero: IsZeroGadget, } @@ -56,12 +59,16 @@ impl ByteRepresentationConfig { range_check: &impl RangeCheck256Lookup, randomness: &RlcRandomness, ) -> Self { + let is_first = SelectorColumn(cs.fixed_column()); let [value, index, byte] = cb.advice_columns(cs); let [rlc] = cb.second_phase_advice_columns(cs); let index_is_zero = IsZeroGadget::configure(cs, cb, index); + cb.condition(is_first.current(), |cb| { + cb.assert_zero("index is 0 for first row", index.current()) + }); cb.assert_zero( - "index increases by 1 or resets to 0", + "index is 0 or increases by 1", index.current() * (index.current() - index.previous() - 1), ); cb.assert_equal( @@ -82,6 +89,7 @@ impl ByteRepresentationConfig { index, index_is_zero, byte, + is_first, } } @@ -94,6 +102,7 @@ impl ByteRepresentationConfig { frs: &[Fr], randomness: Value, ) { + self.is_first.enable(region, 0); let byte_representations = u64s .iter() .map(u64_to_big_endian) From 7c3f35e8609263bd4c55a76ced2f088e3ecdd534 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 24 Aug 2023 23:05:24 -0700 Subject: [PATCH 71/86] Use constraints instead of lookups --- src/mpt.rs | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/mpt.rs b/src/mpt.rs index 074cb090..adb51c76 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -21,6 +21,7 @@ use halo2_proofs::{ halo2curves::bn256::Fr, plonk::{Challenge, ConstraintSystem, Error, Expression, VirtualCells}, }; +use itertools::Itertools; /// Config for MptCircuit #[derive(Clone)] @@ -74,20 +75,28 @@ impl MptCircuitConfig { // for the mpt update is a valid proof that shows the account with address 0 does not // exist in an mpt with root = 0 (i.e. the mpt is empty). let is_final_row = SelectorColumn(cs.fixed_column()); - cb.add_lookup( - "final mpt update is padding", - [ - 1.into(), - 0.into(), - 0.into(), - (MPTProofType::AccountDoesNotExist as u64).into(), - 0.into(), - 0.into(), - 0.into(), - 0.into(), - ], - mpt_update.lookup().map(|q| q * is_final_row.current()), - ); + let padding_row_expressions = [ + 1.into(), + 0.into(), + 0.into(), + (MPTProofType::AccountDoesNotExist as u64).into(), + 0.into(), + 0.into(), + 0.into(), + 0.into(), + ]; + cb.condition(is_final_row.current(), |cb| { + for (padding_row_expression, lookup_expression) in padding_row_expressions + .into_iter() + .zip_eq(mpt_update.lookup()) + { + cb.assert_equal( + "final mpt update is padding", + padding_row_expression, + lookup_expression, + ) + } + }); cb.build(cs); From 63a8416191550f6220a052d32c9a4b8d3a91f9a9 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Thu, 24 Aug 2023 23:10:40 -0700 Subject: [PATCH 72/86] Fix assert --- src/mpt.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mpt.rs b/src/mpt.rs index adb51c76..aca1d7d0 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -156,8 +156,9 @@ impl MptCircuitConfig { let n_assigned_rows = self.mpt_update.assign(&mut region, proofs, randomness); assert!( - n_assigned_rows <= n_rows, - "mpt circuit requires {n_assigned_rows} rows > limit of {n_rows} rows" + 2 + n_assigned_rows <= n_rows, + "mpt circuit requires {n_assigned_rows} rows for mpt updates + 1 initial \ + all-zero row + at least 1 final padding row. Only {n_rows} rows available." ); for offset in 1 + n_assigned_rows..n_rows { From a0691430c5dca97013659b8fc3848beb13c9af94 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Tue, 29 Aug 2023 20:06:26 -0700 Subject: [PATCH 73/86] Handle proofs for empty and singleton MPT's (#89) * Add failing tests * Add failing empty mpt empty account proof test * Handle case of singleton and empty mpt's --------- Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 2 +- src/tests.rs | 59 +++++++++++++++++++++++++++++++++++++++ src/types.rs | 9 ++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index a4e94532..780225b3 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -440,7 +440,7 @@ impl MptUpdateConfig { }) .unwrap_or(PathType::Common); let (final_old_hash, final_new_hash) = match proof.address_hash_traces.first() { - None => unimplemented!("single account mpt not handled"), + None => (proof.old.hash(), proof.new.hash()), Some((_, _, old_hash, new_hash, _, _, _)) => (*old_hash, *new_hash), }; diff --git a/src/tests.rs b/src/tests.rs index d8d460a3..7ef7f0c3 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -903,3 +903,62 @@ fn empty_storage_type_2() { mock_prove(vec![(MPTProofType::StorageDoesNotExist, trace)]); } + +#[test] +fn empty_mpt() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(2), + U256::from(1231412), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); +} + +#[test] +fn empty_mpt_empty_account() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(232), + U256::zero(), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); +} + +#[test] +fn singleton_mpt() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(1), + U256::from(23), + U256::zero(), + None, + ); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(2), + U256::from(15), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); +} diff --git a/src/types.rs b/src/types.rs index 9536fd23..47dbf8c6 100644 --- a/src/types.rs +++ b/src/types.rs @@ -229,6 +229,15 @@ pub struct Path { pub leaf_data_hash: Option, // leaf data hash for type 0 and type 1, None for type 2. } +impl Path { + pub fn hash(&self) -> Fr { + match self.leaf_data_hash { + None => Fr::zero(), + Some(data_hash) => domain_hash(self.key, data_hash, HashDomain::Leaf), + } + } +} + impl From<(&MPTProofType, &SMTTrace)> for Claim { fn from((proof_type, trace): (&MPTProofType, &SMTTrace)) -> Self { let [old_root, new_root] = trace.account_path.clone().map(|path| fr(path.root)); From c5cd0dab4a242d7077bf9cad051119dafaa4d6e9 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Tue, 29 Aug 2023 22:26:51 -0700 Subject: [PATCH 74/86] Fix failing testool cases (#90) * Handle case for proving 0 balance, nonce, keccak code hash, code size, and empty storage updates in an empty mpt * Add singleton_mpt_empty_account test * Fix documentation --------- Co-authored-by: Mason Liang --- src/gadgets/mpt_update.rs | 8 +- src/gadgets/mpt_update/segment.rs | 2 + src/tests.rs | 84 ++++ ...egistratorPerTxsNotEnoughGas_d0_g0_v0.json | 463 ++++++++++++++++++ 4 files changed, 553 insertions(+), 4 deletions(-) create mode 100644 src/traces/createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0.json diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 780225b3..d33fea72 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -1288,7 +1288,7 @@ fn configure_nonce( ); for variant in SegmentType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| match variant { - SegmentType::AccountTrie => { + SegmentType::Start | SegmentType::AccountTrie => { cb.condition( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { @@ -1420,7 +1420,7 @@ fn configure_code_size( ); for variant in SegmentType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| match variant { - SegmentType::AccountTrie => { + SegmentType::Start | SegmentType::AccountTrie => { cb.condition( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { @@ -1504,7 +1504,7 @@ fn configure_balance( ) { for variant in SegmentType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| match variant { - SegmentType::AccountTrie => { + SegmentType::Start | SegmentType::AccountTrie => { cb.condition( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { @@ -1690,7 +1690,7 @@ fn configure_keccak_code_hash( ); for variant in SegmentType::iter() { let conditional_constraints = |cb: &mut ConstraintBuilder| match variant { - SegmentType::AccountTrie => { + SegmentType::Start | SegmentType::AccountTrie => { cb.condition( config.segment_type.next_matches(&[SegmentType::Start]), |cb| { diff --git a/src/gadgets/mpt_update/segment.rs b/src/gadgets/mpt_update/segment.rs index eb28a491..011c42ef 100644 --- a/src/gadgets/mpt_update/segment.rs +++ b/src/gadgets/mpt_update/segment.rs @@ -25,6 +25,7 @@ pub fn transitions(proof: MPTProofType) -> HashMap ( SegmentType::Start, vec![ + SegmentType::Start, // empty account proof in an empty mpt SegmentType::AccountTrie, // mpt has > 1 account SegmentType::AccountLeaf0, // mpt has <= 1 account ], @@ -106,6 +107,7 @@ pub fn transitions(proof: MPTProofType) -> HashMap ( SegmentType::Start, vec![ + SegmentType::Start, // empty account proof in an empty mpt SegmentType::AccountTrie, // mpt has > 1 account SegmentType::AccountLeaf0, // mpt has 1 account ], diff --git a/src/tests.rs b/src/tests.rs index 7ef7f0c3..46094e34 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -194,12 +194,59 @@ fn empty_account_proofs_for_zero_value_updates() { MPTProofType::NonceChanged, MPTProofType::CodeSizeExists, MPTProofType::CodeHashExists, + // poseidon code hash is not in this list because the state (rw) circuit will + // translate mpt lookups where the old and new poseidon code hash = 0 in account + // nonexistence proof lookups. ] { mock_prove(vec![(proof_type, trace.clone())]); } } } +#[test] +fn empty_mpt_empty_account_proofs_for_zero_value_updates() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(232), + U256::zero(), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let type_1_trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(1), + U256::from(23), + U256::zero(), + None, + ); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(2), + U256::zero(), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let type_2_trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + for proof_type in [ + MPTProofType::BalanceChanged, + MPTProofType::NonceChanged, + MPTProofType::CodeSizeExists, + MPTProofType::CodeHashExists, + ] { + mock_prove(vec![(proof_type, type_1_trace.clone())]); + mock_prove(vec![(proof_type, type_2_trace.clone())]); + } +} + #[test] fn empty_account_proofs_for_empty_storage_updates() { let type_1_address = Address::zero(); @@ -962,3 +1009,40 @@ fn singleton_mpt() { mock_prove(vec![(MPTProofType::BalanceChanged, trace)]); } + +#[test] +fn singleton_mpt_empty_account() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(1), + U256::from(23), + U256::zero(), + None, + ); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(2), + U256::zero(), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + mock_prove(vec![(MPTProofType::AccountDoesNotExist, trace)]); +} + +#[test] +fn createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0() { + // These mpt updates are by the test case at + // https://github.com/ethereum/tests/blob/747a4828f36c5fc8ab4f288d1cf4f1fe6662f3d6/src/GeneralStateTestsFiller/stCallCreateCallCodeTest/createNameRegistratorPerTxsNotEnoughGasFiller.json + mock_prove( + serde_json::from_str(&include_str!( + "traces/createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0.json" + )) + .unwrap(), + ); +} diff --git a/src/traces/createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0.json b/src/traces/createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0.json new file mode 100644 index 00000000..33a88d07 --- /dev/null +++ b/src/traces/createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0.json @@ -0,0 +1,463 @@ +[ + [ + "AccountDoesNotExist", + { + "address": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "accountKey": "0x0c2b7a2233683ca3fdf4cb670d06fffdeb11ad0592b1e7cad87e3e3cc7bcf805", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "NonceChanged", + { + "address": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "accountKey": "0x293ccdc4280a75784fbdf8c7ae69b76e0852a88b140a7f330f49783d1347f626", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "BalanceChanged", + { + "address": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "accountKey": "0x293ccdc4280a75784fbdf8c7ae69b76e0852a88b140a7f330f49783d1347f626", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "CodeHashExists", + { + "address": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "accountKey": "0x293ccdc4280a75784fbdf8c7ae69b76e0852a88b140a7f330f49783d1347f626", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "AccountDoesNotExist", + { + "address": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "accountKey": "0x293ccdc4280a75784fbdf8c7ae69b76e0852a88b140a7f330f49783d1347f626", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "NonceChanged", + { + "address": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "accountKey": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "accountPath": [ + { + "root": "0x252e31fcfd8f15f35cf1db8a250dc2f9920414047047f8263f509b2ec9d7dd03", + "leaf": { + "value": "0x0fd348b83e56090b7525967291ba6ae3c06f43cb926a41018b279747d702d329", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0x21c93afa043be744e054aa90a3021bc3c28df7eb73686826fdb1af882db68d00", + "leaf": { + "value": "0x01a0cb636f821145c93f3fe1c01ef770710634b11442e684e9b2a3a5661ea11c", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + { + "nonce": 0, + "balance": "0xde0b6b3a7640000", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", + "codeSize": 0 + }, + { + "nonce": 1, + "balance": "0xde0b6b3a7640000", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "BalanceChanged", + { + "address": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "accountKey": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "accountPath": [ + { + "root": "0x21c93afa043be744e054aa90a3021bc3c28df7eb73686826fdb1af882db68d00", + "leaf": { + "value": "0x01a0cb636f821145c93f3fe1c01ef770710634b11442e684e9b2a3a5661ea11c", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + { + "nonce": 1, + "balance": "0xde0b6b3a7640000", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", + "codeSize": 0 + }, + { + "nonce": 1, + "balance": "0xde0b6b3a75b6e5e", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864", + "codeSize": 0 + } + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "StorageDoesNotExist", + { + "address": "0x5300000000000000000000000000000000000000", + "accountKey": "0x0e246ded53daafa183c0d7b6ff1427e8318b63f416ac264dd3ea5ff3dc9b3808", + "accountPath": [ + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ], + [ + "StorageDoesNotExist", + { + "address": "0x5300000000000000000000000000000000000002", + "accountKey": "0xc964ea4804d91b686d3213d75187b806cca56a03a8e669c905fbd1e415689a13", + "accountPath": [ + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + ], + [ + "StorageDoesNotExist", + { + "address": "0x5300000000000000000000000000000000000002", + "accountKey": "0xc964ea4804d91b686d3213d75187b806cca56a03a8e669c905fbd1e415689a13", + "accountPath": [ + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000002" + } + ], + [ + "StorageDoesNotExist", + { + "address": "0x5300000000000000000000000000000000000002", + "accountKey": "0xc964ea4804d91b686d3213d75187b806cca56a03a8e669c905fbd1e415689a13", + "accountPath": [ + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000003" + } + ], + [ + "StorageDoesNotExist", + { + "address": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", + "accountKey": "0x293ccdc4280a75784fbdf8c7ae69b76e0852a88b140a7f330f49783d1347f626", + "accountPath": [ + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + }, + { + "root": "0xb6a81800a5caa2576fc916d7b53dd7abc0439a6b80d177394b3fe0e00b8bbf2e", + "leaf": { + "value": "0xf90e9fb8011123e5fe020cd4d65c150902658a2ef051090d46c6f48de6d2d405", + "sibling": "0x44ef89daadd3a70d440f9af05579a1f73d2d9407710c524f21903ee56f3f3f1a", + "node_type": 4 + }, + "pathPart": "0x0" + } + ], + "accountUpdate": [ + null, + null + ], + "statePath": [ + null, + null + ], + "commonStateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "stateKey": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + ] +] From cafcdeb2c7fd6602d0ddac183c1fb5396a135f9e Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Fri, 1 Sep 2023 09:10:52 +0800 Subject: [PATCH 75/86] upgrade poseidon circuit --- Cargo.lock.current | 3199 ++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 +- 2 files changed, 3200 insertions(+), 1 deletion(-) create mode 100644 Cargo.lock.current diff --git a/Cargo.lock.current b/Cargo.lock.current new file mode 100644 index 00000000..9e171af9 --- /dev/null +++ b/Cargo.lock.current @@ -0,0 +1,3199 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if 1.0.0", + "cipher", + "cpufeatures", + "opaque-debug 0.3.0", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "auto_impl" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + +[[package]] +name = "base58" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" + +[[package]] +name = "base58check" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b" +dependencies = [ + "base58", + "sha2 0.8.2", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64ct" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" + +[[package]] +name = "bech32" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" + +[[package]] +name = "bencher" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" +dependencies = [ + "either", + "radium 0.3.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium 0.7.0", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding 0.1.5", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding 0.2.1", + "generic-array 0.14.7", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "bytecheck" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +dependencies = [ + "serde", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "time", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "coins-bip32" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560" +dependencies = [ + "bincode", + "bs58", + "coins-core", + "digest 0.10.7", + "getrandom", + "hmac 0.12.1", + "k256", + "lazy_static", + "serde", + "sha2 0.10.7", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171" +dependencies = [ + "bitvec 0.17.4", + "coins-bip32", + "getrandom", + "hex", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "rand", + "sha2 0.10.7", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617" +dependencies = [ + "base58check", + "base64 0.12.3", + "bech32", + "blake2", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.7", + "sha3 0.10.8", + "thiserror", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "const-cstr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3d0b5ff30645a68f35ece8cea4556ca14ef8a1651455f789a099a0513532a6" + +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + +[[package]] +name = "constant_time_eq" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +dependencies = [ + "bitflags", + "core-foundation", + "libc", +] + +[[package]] +name = "core-text" +version = "19.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" +dependencies = [ + "core-foundation", + "core-graphics", + "foreign-types", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array 0.14.7", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core 0.10.2", + "darling_macro 0.10.2", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core 0.10.2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derive_builder" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" +dependencies = [ + "darling 0.10.2", + "derive_builder_core", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" +dependencies = [ + "darling 0.10.2", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "dwrote" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +dependencies = [ + "lazy_static", + "libc", + "winapi", + "wio", +] + +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "digest 0.10.7", + "ff", + "generic-array 0.14.7", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "eth-keystore" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f65b750ac950f2f825b36d08bef4cda4112e19a7b1a68f6e2bb499413e12440" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2 0.10.7", + "sha3 0.10.8", + "thiserror", + "uuid 0.8.2", +] + +[[package]] +name = "eth-types" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#e7d4c104c0affc74dd6c1e0a52e7ca941e6cbadd" +dependencies = [ + "ethers-core", + "ethers-signers", + "halo2_proofs", + "hex", + "itertools", + "lazy_static", + "libsecp256k1", + "num", + "num-bigint", + "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "regex", + "serde", + "serde_json", + "serde_with", + "sha3 0.10.8", + "strum", + "strum_macros", + "subtle", + "uint", +] + +[[package]] +name = "ethabi" +version = "17.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.8", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + +[[package]] +name = "ethers-core" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ebdd63c828f58aa067f40f9adcbea5e114fb1f90144b3a1e2858e0c9b1ff4e8" +dependencies = [ + "arrayvec", + "bytes", + "chrono", + "convert_case", + "elliptic-curve", + "ethabi", + "fastrlp", + "generic-array 0.14.7", + "hex", + "k256", + "proc-macro2", + "rand", + "rlp", + "rlp-derive", + "rust_decimal", + "serde", + "serde_json", + "strum", + "syn 1.0.109", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-signers" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73a72ecad124e8ccd18d6a43624208cab0199e59621b1f0fa6b776b2e0529107" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "hex", + "rand", + "sha2 0.10.7", + "thiserror", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fastrlp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "089263294bb1c38ac73649a6ad563dd9a5142c8dc0482be15b8b9acb22a1611e" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "fastrlp-derive", +] + +[[package]] +name = "fastrlp-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f9d074ab623d1b388c12544bfeed759c7df36dc5c300cda053df9ba1232075" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec 1.0.1", + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flate2" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-ord" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bad48618fdb549078c333a7a8528acb57af271d0433bdecd523eb620628364e" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "font-kit" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21fe28504d371085fae9ac7a3450f0b289ab71e07c8e57baa3fb68b9e57d6ce5" +dependencies = [ + "bitflags", + "byteorder", + "core-foundation", + "core-graphics", + "core-text", + "dirs-next", + "dwrote", + "float-ord", + "freetype", + "lazy_static", + "libc", + "log", + "pathfinder_geometry", + "pathfinder_simd", + "walkdir", + "winapi", + "yeslogic-fontconfig-sys", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "freetype" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" +dependencies = [ + "freetype-sys", + "libc", +] + +[[package]] +name = "freetype-sys" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" +dependencies = [ + "cmake", + "libc", + "pkg-config", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gobuild" +version = "0.1.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e156a4ddbf3deb5e8116946c111413bd9a5679bdc1536c78a60618a7a9ac9e" +dependencies = [ + "cc", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "halo2-mpt-circuits" +version = "0.1.0" +dependencies = [ + "bencher", + "ethers-core", + "halo2_proofs", + "hex", + "itertools", + "lazy_static", + "log", + "mpt-zktrie", + "num-bigint", + "num-traits", + "plotters", + "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0901)", + "rand", + "rand_chacha", + "serde", + "serde_json", + "strum", + "strum_macros", + "subtle", + "thiserror", +] + +[[package]] +name = "halo2-mpt-circuits" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.1#c5cd0dab4a242d7077bf9cad051119dafaa4d6e9" +dependencies = [ + "ethers-core", + "halo2_proofs", + "hex", + "itertools", + "lazy_static", + "log", + "num-bigint", + "num-traits", + "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "rand", + "serde", + "serde_json", + "strum", + "strum_macros", + "thiserror", +] + +[[package]] +name = "halo2_proofs" +version = "0.2.0" +source = "git+https://github.com/scroll-tech/halo2.git?branch=develop#aa86c107aeb62282d81ebce5c4930ec0c0aa540b" +dependencies = [ + "ark-std", + "blake2b_simd", + "cfg-if 0.1.10", + "crossbeam", + "env_logger", + "ff", + "group", + "halo2curves 0.3.1 (git+https://github.com/scroll-tech/halo2curves.git?branch=0.3.1-derive-serde)", + "log", + "num-bigint", + "num-integer", + "plotters", + "poseidon", + "rand_core", + "rayon", + "sha3 0.9.1", + "subtle", + "tabbycat", + "tracing", +] + +[[package]] +name = "halo2curves" +version = "0.3.1" +source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.1#9b67e19bca30a35208b0c1b41c1723771e2c9f49" +dependencies = [ + "ff", + "group", + "lazy_static", + "num-bigint", + "num-traits", + "pasta_curves", + "rand", + "rand_core", + "static_assertions", + "subtle", +] + +[[package]] +name = "halo2curves" +version = "0.3.1" +source = "git+https://github.com/scroll-tech/halo2curves.git?branch=0.3.1-derive-serde#969f1e44d9713ee4cd552563bd0c762c5d53b56e" +dependencies = [ + "ff", + "group", + "lazy_static", + "num-bigint", + "num-traits", + "pasta_curves", + "paste", + "rand", + "rand_core", + "serde", + "static_assertions", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.7", + "hmac 0.8.1", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "image" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +dependencies = [ + "cfg-if 1.0.0", + "ecdsa", + "elliptic-curve", + "sha2 0.10.7", + "sha3 0.10.8", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libloading" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys", +] + +[[package]] +name = "libsecp256k1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +dependencies = [ + "arrayref", + "base64 0.13.1", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mpt-zktrie" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#e7d4c104c0affc74dd6c1e0a52e7ca941e6cbadd" +dependencies = [ + "eth-types", + "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.1)", + "halo2_proofs", + "hex", + "lazy_static", + "log", + "num-bigint", + "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "zktrie", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.2", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "parity-scale-codec" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +dependencies = [ + "arrayvec", + "bitvec 1.0.1", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "password-hash" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff", + "group", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pathfinder_geometry" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" +dependencies = [ + "log", + "pathfinder_simd", +] + +[[package]] +name = "pathfinder_simd" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "pbkdf2" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash 0.4.2", + "sha2 0.10.7", +] + +[[package]] +name = "pest" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "chrono", + "font-kit", + "image", + "lazy_static", + "num-traits", + "pathfinder_geometry", + "plotters-backend", + "plotters-bitmap", + "plotters-svg", + "ttf-parser", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-bitmap" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cebbe1f70205299abc69e8b295035bb52a6a70ee35474ad10011f0a4efb8543" +dependencies = [ + "gif", + "image", + "plotters-backend", +] + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "poseidon" +version = "0.2.0" +source = "git+https://github.com/scroll-tech/poseidon.git?branch=scroll-dev-0220#2fb4a2385bada39b50dce12fe50cb80d2fd33476" +dependencies = [ + "group", + "halo2curves 0.3.1 (git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.1)", + "subtle", +] + +[[package]] +name = "poseidon-circuit" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723#1652d54bf7ca9d8f286b53fe077d9efefdcf6d5f" +dependencies = [ + "bitvec 1.0.1", + "halo2_proofs", + "lazy_static", + "log", + "rand", + "rand_xorshift", + "thiserror", +] + +[[package]] +name = "poseidon-circuit" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0901#69524f42bdc55c581088c2fe64c2ab9a2921146b" +dependencies = [ + "bitvec 1.0.1", + "halo2_proofs", + "lazy_static", + "log", + "rand", + "rand_xorshift", + "thiserror", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "primitive-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "rend" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint", + "hmac 0.12.1", + "zeroize", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rkyv" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +dependencies = [ + "bitvec 1.0.1", + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid 1.4.1", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rust_decimal" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "salsa20" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e73d6d7c6311ebdbd9184ad6c4447b2f36337e327bda107d3ba9e3c374f9d325" +dependencies = [ + "hmac 0.12.1", + "password-hash 0.3.2", + "pbkdf2 0.10.1", + "salsa20", + "sha2 0.10.7", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "serde_json" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling 0.13.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tabbycat" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c45590f0f859197b4545be1b17b2bc3cc7bb075f7d1cc0ea1dc6521c0bf256a3" +dependencies = [ + "anyhow", + "derive_builder", + "regex", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yeslogic-fontconfig-sys" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2bbd69036d397ebbff671b1b8e4d918610c181c5a16073b96f984a38d08c386" +dependencies = [ + "const-cstr", + "dlib", + "once_cell", + "pkg-config", +] + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" + +[[package]] +name = "zktrie" +version = "0.2.0" +source = "git+https://github.com/scroll-tech/zktrie.git?branch=v0.6#83318659773604fa565e2ebeb810a6d3746f0af4" +dependencies = [ + "gobuild", +] diff --git a/Cargo.toml b/Cargo.toml index fb04fc42..7eee374e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] ethers-core = "0.17.0" itertools = "0.10.5" -hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git", branch = "scroll-dev-0723"} +hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git", branch = "scroll-dev-0901"} halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_09_10" } rand = "0.8" lazy_static = "1.4.0" From e4f5df31e9b3005bb5977c11aa0c3b262cfe3269 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Mon, 11 Sep 2023 21:57:56 -0400 Subject: [PATCH 76/86] [ZK 38] range check address_high and address_low (#78) * Add comment explaining why we don't need to range check address_low * [ZK 2-23] add check that final mpt update row is padding (#85) * Add check that final mpt update row is padding * fmt * Use constraints instead of lookups * Fix assert --------- Co-authored-by: Mason Liang * Add range check for address_low * camel case test name --------- Co-authored-by: naure Co-authored-by: Mason Liang --- src/gadgets/byte_representation.rs | 12 +++++++-- src/gadgets/mpt_update.rs | 39 ++++++++++++++++++------------ src/mpt.rs | 12 ++++++--- src/tests.rs | 2 +- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/src/gadgets/byte_representation.rs b/src/gadgets/byte_representation.rs index 1f761bb9..20485787 100644 --- a/src/gadgets/byte_representation.rs +++ b/src/gadgets/byte_representation.rs @@ -97,15 +97,17 @@ impl ByteRepresentationConfig { pub fn assign( &self, region: &mut Region<'_, F>, + u32s: &[u32], u64s: &[u64], u128s: &[u128], frs: &[Fr], randomness: Value, ) { self.is_first.enable(region, 0); - let byte_representations = u64s + let byte_representations = u32s .iter() - .map(u64_to_big_endian) + .map(u32_to_big_endian) + .chain(u64s.iter().map(u64_to_big_endian)) .chain(u128s.iter().map(u128_to_big_endian)) .chain(frs.iter().map(fr_to_big_endian)); @@ -133,6 +135,9 @@ impl ByteRepresentationConfig { } } +fn u32_to_big_endian(x: &u32) -> Vec { + x.to_be_bytes().to_vec() +} fn u64_to_big_endian(x: &u64) -> Vec { x.to_be_bytes().to_vec() } @@ -173,6 +178,7 @@ mod test { #[derive(Clone, Default, Debug)] struct TestCircuit { + u32s: Vec, u64s: Vec, u128s: Vec, frs: Vec, @@ -219,6 +225,7 @@ mod test { byte_bit.assign(&mut region); byte_representation.assign( &mut region, + &self.u32s, &self.u64s, &self.u128s, &self.frs, @@ -233,6 +240,7 @@ mod test { #[test] fn test_byte_representation() { let circuit = TestCircuit { + u32s: vec![0, 1, u32::MAX], u64s: vec![u64::MAX], u128s: vec![0, 1, u128::MAX], frs: vec![Fr::from(2342)], diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index d33fea72..06004cf6 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -83,7 +83,9 @@ impl MptUpdateLookup for MptUpdateConfig { let proof_type = self.proof_type.current() * is_start(); let old_value = self.old_value.current() * is_start(); let new_value = self.new_value.current() * is_start(); - let address = self.intermediate_values[0].current() * is_start(); + let [address_high, address_low, ..] = self.intermediate_values; + let address = + address_high.current() + address_low.current() * Query::Constant(F::from_u128(1 << 96)); let storage_key_rlc = self.storage_key_rlc.current() * is_start(); [ is_start().into(), @@ -131,17 +133,13 @@ impl MptUpdateConfig { path_type.current_matches(&[PathType::Start]).into(), ); cb.condition(is_start.clone().and(cb.every_row_selector()), |cb| { - let [address, address_high, ..] = intermediate_values; + let [address_high, address_low, ..] = intermediate_values; let [old_hash_rlc, new_hash_rlc, ..] = second_phase_intermediate_values; - let address_low: Query = (address.current() - address_high.current() * (1 << 32)) - * (1 << 32) - * (1 << 32) - * (1 << 32); cb.poseidon_lookup( - "account mpt key = h(address_high, address_low)", + "account mpt key = h(address_high, address_low << 96)", [ address_high.current(), - address_low, + address_low.current() * Query::Constant(F::from_u128(1 << 96)), Query::from(u64::from(HashDomain::Pair)), key.current(), ], @@ -152,6 +150,11 @@ impl MptUpdateConfig { [address_high.current(), Query::from(15)], bytes.lookup(), ); + cb.add_lookup( + "address_low is 4 bytes", + [address_low.current(), Query::from(3)], + bytes.lookup(), + ); cb.add_lookup( "rlc_old_root = rlc(old_root)", [old_hash.current(), old_hash_rlc.current(), Query::from(31)], @@ -393,12 +396,16 @@ impl MptUpdateConfig { self.other_key.assign(region, offset, other_key); self.domain.assign(region, offset, HashDomain::Pair); - self.intermediate_values[0].assign(region, offset, address_to_fr(proof.claim.address)); - self.intermediate_values[1].assign( + self.intermediate_values[0].assign( region, offset, Fr::from_u128(address_high(proof.claim.address)), ); + self.intermediate_values[1].assign( + region, + offset, + u64::from(address_low(proof.claim.address)), + ); let rlc_fr = |x: Fr| { let mut bytes = x.to_bytes(); @@ -2013,9 +2020,9 @@ fn address_high(a: Address) -> u128 { u128::from_be_bytes(high_bytes) } -fn address_low(a: Address) -> u128 { +fn address_low(a: Address) -> u32 { let low_bytes: [u8; 4] = a.0[16..].try_into().unwrap(); - u128::from(u32::from_be_bytes(low_bytes)) << 96 + u32::from_be_bytes(low_bytes) } // ... the return traces: ([inp;2], domain, hash) @@ -2042,7 +2049,7 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { hash_traces.push(( [ Fr::from_u128(address_high(proof.claim.address)), - Fr::from_u128(address_low(proof.claim.address)), + Fr::from_u128(u128::from(address_low(proof.claim.address)) << 96), ], HashDomain::Pair.into(), key, @@ -2113,13 +2120,15 @@ pub fn key_bit_lookups(proofs: &[Proof]) -> Vec<(Fr, usize, bool)> { } /// ... -pub fn byte_representations(proofs: &[Proof]) -> (Vec, Vec, Vec) { +pub fn byte_representations(proofs: &[Proof]) -> (Vec, Vec, Vec, Vec) { + let mut u32s = vec![]; let mut u64s = vec![]; let mut u128s = vec![0]; let mut frs = vec![]; for proof in proofs { u128s.push(address_high(proof.claim.address)); + u32s.push(address_low(proof.claim.address)); match MPTProofType::from(proof.claim) { MPTProofType::NonceChanged | MPTProofType::CodeSizeExists => { u128s.push(address_high(proof.claim.address)); @@ -2188,7 +2197,7 @@ pub fn byte_representations(proofs: &[Proof]) -> (Vec, Vec, Vec) _ => {} } } - (u64s, u128s, frs) + (u32s, u64s, u128s, frs) } /// .. diff --git a/src/mpt.rs b/src/mpt.rs index aca1d7d0..08c8c50c 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -119,7 +119,7 @@ impl MptCircuitConfig { n_rows: usize, ) -> Result<(), Error> { let randomness = self.rlc_randomness.value(layouter); - let (u64s, u128s, frs) = byte_representations(proofs); + let (u32s, u64s, u128s, frs) = byte_representations(proofs); layouter.assign_region( || "mpt circuit", @@ -150,8 +150,14 @@ impl MptCircuitConfig { ); self.key_bit.assign(&mut region, &key_bit_lookups(proofs)); self.byte_bit.assign(&mut region); - self.byte_representation - .assign(&mut region, &u64s, &u128s, &frs, randomness); + self.byte_representation.assign( + &mut region, + &u32s, + &u64s, + &u128s, + &frs, + randomness, + ); let n_assigned_rows = self.mpt_update.assign(&mut region, proofs, randomness); diff --git a/src/tests.rs b/src/tests.rs index 46094e34..5601076b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1036,7 +1036,7 @@ fn singleton_mpt_empty_account() { } #[test] -fn createNameRegistratorPerTxsNotEnoughGas_d0_g0_v0() { +fn create_name_registrator_per_txs_not_enough_gas_d0_g0_v0() { // These mpt updates are by the test case at // https://github.com/ethereum/tests/blob/747a4828f36c5fc8ab4f288d1cf4f1fe6662f3d6/src/GeneralStateTestsFiller/stCallCreateCallCodeTest/createNameRegistratorPerTxsNotEnoughGasFiller.json mock_prove( From a42263eeb38f48b3008abea95993423604497c6a Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Wed, 13 Sep 2023 10:27:36 +0800 Subject: [PATCH 77/86] upgrade ethers-rs --- Cargo.lock.current | 914 ++++++++++++++++++++------------ Cargo.toml | 4 +- src/constraint_builder/query.rs | 3 +- src/gadgets/mpt_update.rs | 4 +- src/util.rs | 7 +- 5 files changed, 584 insertions(+), 348 deletions(-) diff --git a/Cargo.lock.current b/Cargo.lock.current index 9e171af9..1fe44df4 100644 --- a/Cargo.lock.current +++ b/Cargo.lock.current @@ -10,14 +10,13 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if 1.0.0", "cipher", "cpufeatures", - "opaque-debug 0.3.0", ] [[package]] @@ -102,7 +101,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.32", ] [[package]] @@ -141,44 +140,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" [[package]] -name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" - -[[package]] -name = "base58check" -version = "0.1.0" +name = "base16ct" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b" -dependencies = [ - "base58", - "sha2 0.8.2", -] +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" -version = "0.7.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bencher" @@ -186,15 +175,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -202,14 +182,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "bitvec" -version = "0.17.4" +name = "bitflags" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" -dependencies = [ - "either", - "radium 0.3.0", -] +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bitvec" @@ -218,51 +194,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", - "radium 0.7.0", + "radium", "tap", "wyz", ] -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "blake2b_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec", "constant_time_eq", ] -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding 0.1.5", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding 0.2.1", - "generic-array 0.14.7", + "block-padding", + "generic-array", ] [[package]] @@ -271,16 +226,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", + "generic-array", ] [[package]] @@ -336,9 +282,13 @@ dependencies = [ [[package]] name = "bs58" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "sha2 0.10.7", + "tinyvec", +] [[package]] name = "bumpalo" @@ -352,12 +302,6 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - [[package]] name = "bytecheck" version = "0.6.11" @@ -382,9 +326,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -394,9 +338,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ "serde", ] @@ -424,26 +368,26 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.28" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" +checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time", "wasm-bindgen", "windows-targets", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array 0.14.7", + "crypto-common", + "inout", ] [[package]] @@ -457,18 +401,15 @@ dependencies = [ [[package]] name = "coins-bip32" -version = "0.7.0" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ - "bincode", "bs58", "coins-core", "digest 0.10.7", - "getrandom", "hmac 0.12.1", - "k256", - "lazy_static", + "k256 0.13.1", "serde", "sha2 0.10.7", "thiserror", @@ -476,16 +417,15 @@ dependencies = [ [[package]] name = "coins-bip39" -version = "0.7.0" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" dependencies = [ - "bitvec 0.17.4", + "bitvec", "coins-bip32", - "getrandom", - "hex", "hmac 0.12.1", - "pbkdf2 0.11.0", + "once_cell", + "pbkdf2 0.12.2", "rand", "sha2 0.10.7", "thiserror", @@ -493,16 +433,15 @@ dependencies = [ [[package]] name = "coins-core" -version = "0.7.0" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ - "base58check", - "base64 0.12.3", + "base64 0.21.4", "bech32", - "blake2", + "bs58", "digest 0.10.7", - "generic-array 0.14.7", + "generic-array", "hex", "ripemd", "serde", @@ -532,15 +471,9 @@ checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "constant_time_eq" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" - -[[package]] -name = "convert_case" -version = "0.5.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation" @@ -564,7 +497,7 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-graphics-types", "foreign-types", @@ -577,7 +510,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "libc", ] @@ -691,7 +624,19 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ - "generic-array 0.14.7", + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +dependencies = [ + "generic-array", "rand_core", "subtle", "zeroize", @@ -703,7 +648,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array", "typenum", ] @@ -713,15 +658,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.7", + "generic-array", "subtle", ] [[package]] name = "ctr" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ "cipher", ] @@ -806,6 +751,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "derive_builder" version = "0.9.0" @@ -832,12 +787,14 @@ dependencies = [ ] [[package]] -name = "digest" -version = "0.8.1" +name = "derive_more" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "generic-array 0.12.4", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -846,7 +803,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -856,6 +813,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -908,10 +866,24 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "der", - "elliptic-curve", - "rfc6979", - "signature", + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", +] + +[[package]] +name = "ecdsa" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +dependencies = [ + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.5", + "rfc6979 0.4.0", + "signature 2.1.0", + "spki 0.7.2", ] [[package]] @@ -926,16 +898,34 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "base16ct", - "crypto-bigint", - "der", + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", "digest 0.10.7", - "ff", - "generic-array 0.14.7", - "group", - "pkcs8", + "ff 0.12.1", + "generic-array", + "group 0.12.1", "rand_core", - "sec1", + "sec1 0.3.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.3", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "group 0.13.0", + "pkcs8 0.10.2", + "rand_core", + "sec1 0.7.3", "subtle", "zeroize", ] @@ -959,11 +949,32 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "eth-keystore" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f65b750ac950f2f825b36d08bef4cda4112e19a7b1a68f6e2bb499413e12440" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes", "ctr", @@ -984,9 +995,9 @@ dependencies = [ [[package]] name = "eth-types" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#e7d4c104c0affc74dd6c1e0a52e7ca941e6cbadd" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#9626d87efff1ce00914f8a556d884e023f62259b" dependencies = [ - "ethers-core", + "ethers-core 2.0.7", "ethers-signers", "halo2_proofs", "hex", @@ -995,7 +1006,7 @@ dependencies = [ "libsecp256k1", "num", "num-bigint", - "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "poseidon-circuit", "regex", "serde", "serde_json", @@ -1013,7 +1024,24 @@ version = "17.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" dependencies = [ - "ethereum-types", + "ethereum-types 0.13.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.8", + "thiserror", + "uint", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types 0.14.1", "hex", "once_cell", "regex", @@ -1031,9 +1059,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" dependencies = [ "crunchy", - "fixed-hash", + "fixed-hash 0.7.0", "impl-rlp", - "impl-serde", + "impl-serde 0.3.2", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash 0.8.0", + "impl-codec", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", "tiny-keccak", ] @@ -1043,11 +1086,27 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" dependencies = [ - "ethbloom", - "fixed-hash", + "ethbloom 0.12.1", + "fixed-hash 0.7.0", "impl-rlp", - "impl-serde", - "primitive-types", + "impl-serde 0.3.2", + "primitive-types 0.11.1", + "uint", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash 0.8.0", + "impl-codec", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.1", + "scale-info", "uint", ] @@ -1060,14 +1119,12 @@ dependencies = [ "arrayvec", "bytes", "chrono", - "convert_case", - "elliptic-curve", - "ethabi", + "elliptic-curve 0.12.3", + "ethabi 17.2.0", "fastrlp", - "generic-array 0.14.7", + "generic-array", "hex", - "k256", - "proc-macro2", + "k256 0.11.6", "rand", "rlp", "rlp-derive", @@ -1075,7 +1132,32 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 1.0.109", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-core" +version = "2.0.7" +source = "git+https://github.com/scroll-tech/ethers-rs.git?branch=v2.0.7#e32dfd62e7cdec31160b91c5a646883594a586ba" +dependencies = [ + "arrayvec", + "bytes", + "chrono", + "elliptic-curve 0.13.5", + "ethabi 18.0.0", + "generic-array", + "hex", + "k256 0.13.1", + "num_enum", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "tempfile", "thiserror", "tiny-keccak", "unicode-xid", @@ -1083,27 +1165,28 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a72ecad124e8ccd18d6a43624208cab0199e59621b1f0fa6b776b2e0529107" +checksum = "02c4b7e15f212fa7cc2e1251868320221d4ff77a3d48068e69f47ce1c491df2d" dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve", + "elliptic-curve 0.13.5", "eth-keystore", - "ethers-core", + "ethers-core 2.0.7", "hex", "rand", "sha2 0.10.7", "thiserror", + "tracing", ] [[package]] -name = "fake-simd" -version = "0.1.2" +name = "fastrand" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "fastrlp" @@ -1114,7 +1197,7 @@ dependencies = [ "arrayvec", "auto_impl", "bytes", - "ethereum-types", + "ethereum-types 0.13.1", "fastrlp-derive", ] @@ -1145,7 +1228,17 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "bitvec 1.0.1", + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ "rand_core", "subtle", ] @@ -1162,6 +1255,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + [[package]] name = "flate2" version = "1.0.27" @@ -1190,7 +1295,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21fe28504d371085fae9ac7a3450f0b289ab71e07c8e57baa3fb68b9e57d6ce5" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "core-foundation", "core-graphics", @@ -1251,15 +1356,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1268,6 +1364,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1277,10 +1374,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if 1.0.0", - "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "wasi", ] [[package]] @@ -1308,7 +1403,18 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "ff", + "ff 0.12.1", + "rand_core", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", "rand_core", "subtle", ] @@ -1318,7 +1424,7 @@ name = "halo2-mpt-circuits" version = "0.1.0" dependencies = [ "bencher", - "ethers-core", + "ethers-core 2.0.7", "halo2_proofs", "hex", "itertools", @@ -1328,7 +1434,7 @@ dependencies = [ "num-bigint", "num-traits", "plotters", - "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0901)", + "poseidon-circuit", "rand", "rand_chacha", "serde", @@ -1342,9 +1448,9 @@ dependencies = [ [[package]] name = "halo2-mpt-circuits" version = "0.1.0" -source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.1#c5cd0dab4a242d7077bf9cad051119dafaa4d6e9" +source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.2#cafcdeb2c7fd6602d0ddac183c1fb5396a135f9e" dependencies = [ - "ethers-core", + "ethers-core 0.17.0", "halo2_proofs", "hex", "itertools", @@ -1352,7 +1458,7 @@ dependencies = [ "log", "num-bigint", "num-traits", - "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "poseidon-circuit", "rand", "serde", "serde_json", @@ -1371,8 +1477,8 @@ dependencies = [ "cfg-if 0.1.10", "crossbeam", "env_logger", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "halo2curves 0.3.1 (git+https://github.com/scroll-tech/halo2curves.git?branch=0.3.1-derive-serde)", "log", "num-bigint", @@ -1392,8 +1498,8 @@ name = "halo2curves" version = "0.3.1" source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.1#9b67e19bca30a35208b0c1b41c1723771e2c9f49" dependencies = [ - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "lazy_static", "num-bigint", "num-traits", @@ -1409,8 +1515,8 @@ name = "halo2curves" version = "0.3.1" source = "git+https://github.com/scroll-tech/halo2curves.git?branch=0.3.1-derive-serde#969f1e44d9713ee4cd552563bd0c762c5d53b56e" dependencies = [ - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "lazy_static", "num-bigint", "num-traits", @@ -1500,7 +1606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.7", + "generic-array", "hmac 0.8.1", ] @@ -1581,6 +1687,15 @@ dependencies = [ "serde", ] +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.2" @@ -1602,6 +1717,15 @@ dependencies = [ "hashbrown 0.14.0", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "itertools" version = "0.10.5" @@ -1639,12 +1763,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" dependencies = [ "cfg-if 1.0.0", - "ecdsa", - "elliptic-curve", + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", "sha2 0.10.7", "sha3 0.10.8", ] +[[package]] +name = "k256" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if 1.0.0", + "ecdsa 0.16.8", + "elliptic-curve 0.13.5", + "once_cell", + "sha2 0.10.7", + "signature 2.1.0", +] + [[package]] name = "keccak" version = "0.1.4" @@ -1724,6 +1862,12 @@ dependencies = [ "libsecp256k1-core", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" + [[package]] name = "log" version = "0.4.20" @@ -1732,9 +1876,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.2" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" @@ -1758,16 +1902,16 @@ dependencies = [ [[package]] name = "mpt-zktrie" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#e7d4c104c0affc74dd6c1e0a52e7ca941e6cbadd" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#9626d87efff1ce00914f8a556d884e023f62259b" dependencies = [ "eth-types", - "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.1)", + "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.2)", "halo2_proofs", "hex", "lazy_static", "log", "num-bigint", - "poseidon-circuit 0.1.0 (git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723)", + "poseidon-circuit", "zktrie", ] @@ -1858,6 +2002,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.32", +] + [[package]] name = "once_cell" version = "1.18.0" @@ -1866,15 +2031,34 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "opaque-debug" -version = "0.3.0" +name = "open-fastrlp" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types 0.14.1", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "parity-scale-codec" @@ -1883,7 +2067,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" dependencies = [ "arrayvec", - "bitvec 1.0.1", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -1902,28 +2086,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "password-hash" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - [[package]] name = "pasta_curves" version = "0.4.1" @@ -1931,8 +2093,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" dependencies = [ "blake2b_simd", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "lazy_static", "rand", "static_assertions", @@ -1966,23 +2128,21 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest 0.10.7", ] [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", "hmac 0.12.1", - "password-hash 0.4.2", - "sha2 0.10.7", ] [[package]] @@ -2008,8 +2168,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", - "spki", + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", ] [[package]] @@ -2070,7 +2240,7 @@ version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", @@ -2082,31 +2252,17 @@ name = "poseidon" version = "0.2.0" source = "git+https://github.com/scroll-tech/poseidon.git?branch=scroll-dev-0220#2fb4a2385bada39b50dce12fe50cb80d2fd33476" dependencies = [ - "group", + "group 0.12.1", "halo2curves 0.3.1 (git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.1)", "subtle", ] -[[package]] -name = "poseidon-circuit" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0723#1652d54bf7ca9d8f286b53fe077d9efefdcf6d5f" -dependencies = [ - "bitvec 1.0.1", - "halo2_proofs", - "lazy_static", - "log", - "rand", - "rand_xorshift", - "thiserror", -] - [[package]] name = "poseidon-circuit" version = "0.1.0" source = "git+https://github.com/scroll-tech/poseidon-circuit.git?branch=scroll-dev-0901#69524f42bdc55c581088c2fe64c2ab9a2921146b" dependencies = [ - "bitvec 1.0.1", + "bitvec", "halo2_proofs", "lazy_static", "log", @@ -2127,10 +2283,24 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" dependencies = [ - "fixed-hash", + "fixed-hash 0.7.0", "impl-codec", "impl-rlp", - "impl-serde", + "impl-serde 0.3.2", + "uint", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash 0.8.0", + "impl-codec", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", "uint", ] @@ -2215,12 +2385,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" - [[package]] name = "radium" version = "0.7.0" @@ -2294,7 +2458,16 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", ] [[package]] @@ -2304,15 +2477,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", @@ -2322,9 +2495,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", @@ -2352,11 +2525,21 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ - "crypto-bigint", + "crypto-bigint 0.4.9", "hmac 0.12.1", "zeroize", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + [[package]] name = "ripemd" version = "0.1.3" @@ -2372,7 +2555,7 @@ version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" dependencies = [ - "bitvec 1.0.1", + "bitvec", "bytecheck", "hashbrown 0.12.3", "ptr_meta", @@ -2401,6 +2584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] @@ -2446,6 +2630,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -2460,9 +2657,9 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salsa20" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ "cipher", ] @@ -2476,6 +2673,30 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "cfg-if 1.0.0", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2484,13 +2705,12 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73d6d7c6311ebdbd9184ad6c4447b2f36337e327bda107d3ba9e3c374f9d325" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" dependencies = [ "hmac 0.12.1", - "password-hash 0.3.2", - "pbkdf2 0.10.1", + "pbkdf2 0.11.0", "salsa20", "sha2 0.10.7", ] @@ -2507,10 +2727,24 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "base16ct", - "der", - "generic-array 0.14.7", - "pkcs8", + "base16ct 0.1.1", + "der 0.6.1", + "generic-array", + "pkcs8 0.9.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", + "generic-array", + "pkcs8 0.10.2", "subtle", "zeroize", ] @@ -2550,14 +2784,14 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.32", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2" dependencies = [ "itoa", "ryu", @@ -2586,18 +2820,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha2" version = "0.9.9" @@ -2608,7 +2830,7 @@ dependencies = [ "cfg-if 1.0.0", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -2631,7 +2853,7 @@ dependencies = [ "block-buffer 0.9.0", "digest 0.9.0", "keccak", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -2654,6 +2876,16 @@ dependencies = [ "rand_core", ] +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -2673,7 +2905,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der 0.7.8", ] [[package]] @@ -2718,9 +2960,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -2735,9 +2977,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" dependencies = [ "proc-macro2", "quote", @@ -2761,6 +3003,19 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tempfile" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "redox_syscall 0.3.5", + "rustix", + "windows-sys", +] + [[package]] name = "termcolor" version = "1.2.0" @@ -2772,33 +3027,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "syn 2.0.32", ] [[package]] @@ -2842,9 +3086,9 @@ checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "toml_datetime", @@ -2871,7 +3115,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.32", ] [[package]] @@ -2949,20 +3193,14 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2990,7 +3228,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.32", "wasm-bindgen-shared", ] @@ -3012,7 +3250,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.32", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 7eee374e..65f5f3e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -ethers-core = "0.17.0" +ethers-core = "2.0.7" itertools = "0.10.5" hash-circuit = { package = "poseidon-circuit", git = "https://github.com/scroll-tech/poseidon-circuit.git", branch = "scroll-dev-0901"} halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_09_10" } @@ -24,6 +24,8 @@ log = "0.4" [patch."https://github.com/privacy-scaling-explorations/halo2.git"] halo2_proofs = { git = "https://github.com/scroll-tech/halo2.git", branch = "develop" } +[patch.crates-io] +ethers-core = { git = "https://github.com/scroll-tech/ethers-rs.git", branch = "v2.0.7" } [features] # printout the layout of circuits for demo and some unittests diff --git a/src/constraint_builder/query.rs b/src/constraint_builder/query.rs index 670c852a..c7b24c4c 100644 --- a/src/constraint_builder/query.rs +++ b/src/constraint_builder/query.rs @@ -1,8 +1,7 @@ use super::BinaryQuery; -use ethers_core::k256::elliptic_curve::PrimeField; use halo2_proofs::{ arithmetic::{Field, FieldExt}, - halo2curves::bn256::Fr, + halo2curves::{bn256::Fr, group::ff::PrimeField}, plonk::{Advice, Challenge, Column, Expression, Fixed, VirtualCells}, poly::Rotation, }; diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 06004cf6..365868f0 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -26,11 +26,11 @@ use crate::{ util::{account_key, domain_hash, lagrange_polynomial, rlc, u256_hi_lo, u256_to_big_endian}, MPTProofType, }; -use ethers_core::{k256::elliptic_curve::PrimeField, types::Address}; +use ethers_core::types::Address; use halo2_proofs::{ arithmetic::{Field, FieldExt}, circuit::{Region, Value}, - halo2curves::bn256::Fr, + halo2curves::{bn256::Fr, group::ff::PrimeField}, plonk::ConstraintSystem, }; use itertools::izip; diff --git a/src/util.rs b/src/util.rs index 93eafb46..33fb3360 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,11 +1,8 @@ use crate::{constraint_builder::Query, serde::HexBytes, types::HashDomain}; -use ethers_core::{ - k256::elliptic_curve::PrimeField, - types::{Address, U256}, -}; +use ethers_core::types::{Address, U256}; use halo2_proofs::{ arithmetic::{Field, FieldExt}, - halo2curves::bn256::Fr, + halo2curves::{bn256::Fr, group::ff::PrimeField}, }; use hash_circuit::hash::Hashable; use num_bigint::BigUint; From 6b8b568f111b9499abd9d7738c0b46a83a5f06fc Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Wed, 13 Sep 2023 10:33:20 +0800 Subject: [PATCH 78/86] prune Cargo.lock --- Cargo.lock.current | 565 ++++----------------------------------------- 1 file changed, 46 insertions(+), 519 deletions(-) diff --git a/Cargo.lock.current b/Cargo.lock.current index 1fe44df4..cf31c6e0 100644 --- a/Cargo.lock.current +++ b/Cargo.lock.current @@ -19,28 +19,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", - "version_check", -] - [[package]] name = "aho-corasick" version = "1.0.5" @@ -133,12 +111,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -235,51 +207,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" -[[package]] -name = "borsh" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" -dependencies = [ - "borsh-derive", - "hashbrown 0.13.2", -] - -[[package]] -name = "borsh-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "bs58" version = "0.5.0" @@ -302,28 +229,6 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" -[[package]] -name = "bytecheck" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "bytemuck" version = "1.14.0" @@ -409,7 +314,7 @@ dependencies = [ "coins-core", "digest 0.10.7", "hmac 0.12.1", - "k256 0.13.1", + "k256", "serde", "sha2 0.10.7", "thiserror", @@ -618,18 +523,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.3" @@ -741,16 +634,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "der" version = "0.7.8" @@ -860,30 +743,18 @@ dependencies = [ "wio", ] -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ - "der 0.7.8", + "der", "digest 0.10.7", - "elliptic-curve 0.13.5", - "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] @@ -892,40 +763,21 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.7", - "ff 0.12.1", - "generic-array", - "group 0.12.1", - "rand_core", - "sec1 0.3.0", - "subtle", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "base16ct", + "crypto-bigint", "digest 0.10.7", "ff 0.13.0", "generic-array", "group 0.13.0", - "pkcs8 0.10.2", + "pkcs8", "rand_core", - "sec1 0.7.3", + "sec1", "subtle", "zeroize", ] @@ -989,15 +841,15 @@ dependencies = [ "sha2 0.10.7", "sha3 0.10.8", "thiserror", - "uuid 0.8.2", + "uuid", ] [[package]] name = "eth-types" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#9626d87efff1ce00914f8a556d884e023f62259b" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#0afa0d9e148b914eda1d1a701547f62ee1844b24" dependencies = [ - "ethers-core 2.0.7", + "ethers-core", "ethers-signers", "halo2_proofs", "hex", @@ -1018,30 +870,13 @@ dependencies = [ "uint", ] -[[package]] -name = "ethabi" -version = "17.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" -dependencies = [ - "ethereum-types 0.13.1", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3 0.10.8", - "thiserror", - "uint", -] - [[package]] name = "ethabi" version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" dependencies = [ - "ethereum-types 0.14.1", + "ethereum-types", "hex", "once_cell", "regex", @@ -1052,19 +887,6 @@ dependencies = [ "uint", ] -[[package]] -name = "ethbloom" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" -dependencies = [ - "crunchy", - "fixed-hash 0.7.0", - "impl-rlp", - "impl-serde 0.3.2", - "tiny-keccak", -] - [[package]] name = "ethbloom" version = "0.13.0" @@ -1072,71 +894,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" dependencies = [ "crunchy", - "fixed-hash 0.8.0", + "fixed-hash", "impl-codec", "impl-rlp", - "impl-serde 0.4.0", + "impl-serde", "scale-info", "tiny-keccak", ] -[[package]] -name = "ethereum-types" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" -dependencies = [ - "ethbloom 0.12.1", - "fixed-hash 0.7.0", - "impl-rlp", - "impl-serde 0.3.2", - "primitive-types 0.11.1", - "uint", -] - [[package]] name = "ethereum-types" version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ - "ethbloom 0.13.0", - "fixed-hash 0.8.0", + "ethbloom", + "fixed-hash", "impl-codec", "impl-rlp", - "impl-serde 0.4.0", - "primitive-types 0.12.1", + "impl-serde", + "primitive-types", "scale-info", "uint", ] -[[package]] -name = "ethers-core" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebdd63c828f58aa067f40f9adcbea5e114fb1f90144b3a1e2858e0c9b1ff4e8" -dependencies = [ - "arrayvec", - "bytes", - "chrono", - "elliptic-curve 0.12.3", - "ethabi 17.2.0", - "fastrlp", - "generic-array", - "hex", - "k256 0.11.6", - "rand", - "rlp", - "rlp-derive", - "rust_decimal", - "serde", - "serde_json", - "strum", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - [[package]] name = "ethers-core" version = "2.0.7" @@ -1145,11 +926,11 @@ dependencies = [ "arrayvec", "bytes", "chrono", - "elliptic-curve 0.13.5", - "ethabi 18.0.0", + "elliptic-curve", + "ethabi", "generic-array", "hex", - "k256 0.13.1", + "k256", "num_enum", "open-fastrlp", "rand", @@ -1172,9 +953,9 @@ dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.5", + "elliptic-curve", "eth-keystore", - "ethers-core 2.0.7", + "ethers-core", "hex", "rand", "sha2 0.10.7", @@ -1188,31 +969,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" -[[package]] -name = "fastrlp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "089263294bb1c38ac73649a6ad563dd9a5142c8dc0482be15b8b9acb22a1611e" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types 0.13.1", - "fastrlp-derive", -] - -[[package]] -name = "fastrlp-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f9d074ab623d1b388c12544bfeed759c7df36dc5c300cda053df9ba1232075" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "fdeflate" version = "0.3.0" @@ -1243,18 +999,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -1424,7 +1168,7 @@ name = "halo2-mpt-circuits" version = "0.1.0" dependencies = [ "bencher", - "ethers-core 2.0.7", + "ethers-core", "halo2_proofs", "hex", "itertools", @@ -1448,9 +1192,9 @@ dependencies = [ [[package]] name = "halo2-mpt-circuits" version = "0.1.0" -source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.2#cafcdeb2c7fd6602d0ddac183c1fb5396a135f9e" +source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.3#a42263eeb38f48b3008abea95993423604497c6a" dependencies = [ - "ethers-core 0.17.0", + "ethers-core", "halo2_proofs", "hex", "itertools", @@ -1529,24 +1273,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.3", -] - [[package]] name = "hashbrown" version = "0.14.0" @@ -1678,15 +1404,6 @@ dependencies = [ "rlp", ] -[[package]] -name = "impl-serde" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" -dependencies = [ - "serde", -] - [[package]] name = "impl-serde" version = "0.4.0" @@ -1714,7 +1431,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown", ] [[package]] @@ -1756,19 +1473,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "k256" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" -dependencies = [ - "cfg-if 1.0.0", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.7", - "sha3 0.10.8", -] - [[package]] name = "k256" version = "0.13.1" @@ -1776,11 +1480,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if 1.0.0", - "ecdsa 0.16.8", - "elliptic-curve 0.13.5", + "ecdsa", + "elliptic-curve", "once_cell", "sha2 0.10.7", - "signature 2.1.0", + "signature", ] [[package]] @@ -1902,10 +1606,10 @@ dependencies = [ [[package]] name = "mpt-zktrie" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#9626d87efff1ce00914f8a556d884e023f62259b" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git#0afa0d9e148b914eda1d1a701547f62ee1844b24" dependencies = [ "eth-types", - "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.2)", + "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.3)", "halo2_proofs", "hex", "lazy_static", @@ -2017,7 +1721,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.32", @@ -2044,7 +1748,7 @@ dependencies = [ "arrayvec", "auto_impl", "bytes", - "ethereum-types 0.14.1", + "ethereum-types", "open-fastrlp-derive", ] @@ -2080,7 +1784,7 @@ version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -2162,24 +1866,14 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" -dependencies = [ - "der 0.6.1", - "spki 0.6.0", -] - [[package]] name = "pkcs8" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.8", - "spki 0.7.2", + "der", + "spki", ] [[package]] @@ -2277,42 +1971,20 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "primitive-types" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" -dependencies = [ - "fixed-hash 0.7.0", - "impl-codec", - "impl-rlp", - "impl-serde 0.3.2", - "uint", -] - [[package]] name = "primitive-types" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" dependencies = [ - "fixed-hash 0.8.0", + "fixed-hash", "impl-codec", "impl-rlp", - "impl-serde 0.4.0", + "impl-serde", "scale-info", "uint", ] -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2356,26 +2028,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "quote" version = "1.0.33" @@ -2510,26 +2162,6 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" -[[package]] -name = "rend" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -2549,34 +2181,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "rkyv" -version = "0.7.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" -dependencies = [ - "bitvec", - "bytecheck", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid 1.4.1", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rlp" version = "0.5.2" @@ -2599,22 +2203,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "rust_decimal" -version = "1.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", -] - [[package]] name = "rustc-hex" version = "2.1.0" @@ -2691,7 +2279,7 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -2715,36 +2303,16 @@ dependencies = [ "sha2 0.10.7", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array", - "pkcs8 0.9.0", - "subtle", - "zeroize", -] - [[package]] name = "sec1" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct 0.2.0", - "der 0.7.8", + "base16ct", + "der", "generic-array", - "pkcs8 0.10.2", + "pkcs8", "subtle", "zeroize", ] @@ -2866,16 +2434,6 @@ dependencies = [ "keccak", ] -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - [[package]] name = "signature" version = "2.1.0" @@ -2892,22 +2450,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - -[[package]] -name = "spki" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" -dependencies = [ - "base64ct", - "der 0.6.1", -] - [[package]] name = "spki" version = "0.7.2" @@ -2915,7 +2457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.7.8", + "der", ] [[package]] @@ -3069,15 +2611,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml_datetime" version = "0.6.3" @@ -3179,12 +2712,6 @@ dependencies = [ "serde", ] -[[package]] -name = "uuid" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" - [[package]] name = "version_check" version = "0.9.4" From c257a9357dbecea157715ff3f7b5227ac6b7b3a3 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Wed, 13 Sep 2023 14:31:14 +0800 Subject: [PATCH 79/86] fix mpt table lookup --- src/gadgets/mpt_update.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 365868f0..1dd45a77 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -84,8 +84,9 @@ impl MptUpdateLookup for MptUpdateConfig { let old_value = self.old_value.current() * is_start(); let new_value = self.new_value.current() * is_start(); let [address_high, address_low, ..] = self.intermediate_values; - let address = - address_high.current() + address_low.current() * Query::Constant(F::from_u128(1 << 96)); + let address = (address_high.current() + + address_low.current() * Query::Constant(F::from_u128(1 << 96))) + * is_start(); let storage_key_rlc = self.storage_key_rlc.current() * is_start(); [ is_start().into(), From 0bae9eeb813583c11f6db1f961a7e92f8c9bda82 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Wed, 13 Sep 2023 14:48:57 +0800 Subject: [PATCH 80/86] fix mpt circuit --- src/gadgets/mpt_update.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 1dd45a77..d422d20c 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -84,8 +84,8 @@ impl MptUpdateLookup for MptUpdateConfig { let old_value = self.old_value.current() * is_start(); let new_value = self.new_value.current() * is_start(); let [address_high, address_low, ..] = self.intermediate_values; - let address = (address_high.current() - + address_low.current() * Query::Constant(F::from_u128(1 << 96))) + let address = (address_high.current() * Query::Constant(F::from_u128(1 << 32)) + + address_low.current()) * is_start(); let storage_key_rlc = self.storage_key_rlc.current() * is_start(); [ From b5ea508b6100f487185fc0ae35aa5bc8e61175a0 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Sat, 23 Sep 2023 20:23:40 -0400 Subject: [PATCH 81/86] Disambiguate between rlc lookups (#76) Co-authored-by: Mason Liang --- src/gadgets/canonical_representation.rs | 30 ++++++++++++++----------- src/gadgets/mpt_update.rs | 7 +++--- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/gadgets/canonical_representation.rs b/src/gadgets/canonical_representation.rs index 149d6d9b..98383cc9 100644 --- a/src/gadgets/canonical_representation.rs +++ b/src/gadgets/canonical_representation.rs @@ -2,10 +2,7 @@ use super::super::constraint_builder::{ AdviceColumn, BinaryColumn, ConstraintBuilder, FixedColumn, Query, SecondPhaseAdviceColumn, SelectorColumn, }; -use super::{ - byte_bit::RangeCheck256Lookup, byte_representation::RlcLookup, is_zero::IsZeroGadget, - rlc_randomness::RlcRandomness, -}; +use super::{byte_bit::RangeCheck256Lookup, is_zero::IsZeroGadget, rlc_randomness::RlcRandomness}; use ethers_core::types::U256; use halo2_proofs::{ arithmetic::{Field, FieldExt}, @@ -20,6 +17,11 @@ pub trait CanonicalRepresentationLookup { fn lookup(&self) -> [Query; 3]; } +// Lookup to prove that Rlc(x: Fr) = y +pub trait FrRlcLookup { + fn lookup(&self) -> [Query; 2]; +} + #[derive(Clone)] pub struct CanonicalRepresentationConfig { // Lookup columns @@ -30,9 +32,9 @@ pub struct CanonicalRepresentationConfig { // Witness columns index_is_zero: SelectorColumn, // (0..32).repeat().map(|i| i == 0) - // index_is_31: SelectorColumn, // (0..32).repeat().map(|i| i == 31) - modulus_byte: FixedColumn, // (0..32).repeat().map(|i| Fr::MODULUS.to_be_bytes()[i]) - difference: AdviceColumn, // modulus_byte - byte + index_is_31: SelectorColumn, // (0..32).repeat().map(|i| i == 31) + modulus_byte: FixedColumn, // (0..32).repeat().map(|i| Fr::MODULUS.to_be_bytes()[i]) + difference: AdviceColumn, // modulus_byte - byte difference_is_zero: IsZeroGadget, differences_are_zero_so_far: BinaryColumn, // difference[0] ... difference[index - 1] are all 0. } @@ -44,7 +46,7 @@ impl CanonicalRepresentationConfig { range_check: &impl RangeCheck256Lookup, randomness: &RlcRandomness, ) -> Self { - let ([index_is_zero], [index, modulus_byte], [value, byte, difference]) = + let ([index_is_zero, index_is_31], [index, modulus_byte], [value, byte, difference]) = cb.build_columns(cs); let [rlc] = cb.second_phase_advice_columns(cs); @@ -120,6 +122,7 @@ impl CanonicalRepresentationConfig { byte, rlc, index_is_zero, + index_is_31, modulus_byte, difference, difference_is_zero, @@ -153,6 +156,8 @@ impl CanonicalRepresentationConfig { .assign(region, offset, u64::try_from(index).unwrap()); if index.is_zero() { self.index_is_zero.enable(region, offset); + } else if index == 31 { + self.index_is_31.enable(region, offset); } let difference = Fr::from(u64::from(*modulus_byte)) - Fr::from(u64::from(*byte)); @@ -187,12 +192,11 @@ impl CanonicalRepresentationLookup for CanonicalRepresentationConfig { } } -impl RlcLookup for CanonicalRepresentationConfig { - fn lookup(&self) -> [Query; 3] { +impl FrRlcLookup for CanonicalRepresentationConfig { + fn lookup(&self) -> [Query; 2] { [ - self.value.current(), - self.rlc.current(), - self.index.current(), + self.value.current() * self.index_is_31.current(), + self.rlc.current() * self.index_is_31.current(), ] } } diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index d422d20c..500537e7 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -8,6 +8,7 @@ use word_rlc::{assign as assign_word_rlc, configure as configure_word_rlc}; use super::{ byte_representation::{BytesLookup, RlcLookup}, + canonical_representation::FrRlcLookup, is_zero::IsZeroGadget, key_bit::KeyBitLookup, one_hot::OneHot, @@ -110,7 +111,7 @@ impl MptUpdateConfig { rlc: &impl RlcLookup, bytes: &impl BytesLookup, rlc_randomness: &RlcRandomness, - fr_rlc: &impl RlcLookup, + fr_rlc: &impl FrRlcLookup, ) -> Self { let proof_type: OneHot = OneHot::configure(cs, cb); let [storage_key_rlc, old_value, new_value] = cb.second_phase_advice_columns(cs); @@ -158,12 +159,12 @@ impl MptUpdateConfig { ); cb.add_lookup( "rlc_old_root = rlc(old_root)", - [old_hash.current(), old_hash_rlc.current(), Query::from(31)], + [old_hash.current(), old_hash_rlc.current()], fr_rlc.lookup(), ); cb.add_lookup( "rlc_new_root = rlc(new_root)", - [new_hash.current(), new_hash_rlc.current(), Query::from(31)], + [new_hash.current(), new_hash_rlc.current()], fr_rlc.lookup(), ); }); From 9613b2cb1df35ca2e9177823fd891f9d1d7b6c5d Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 25 Sep 2023 21:07:52 -0400 Subject: [PATCH 82/86] Remove unused function --- src/constraint_builder.rs | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/src/constraint_builder.rs b/src/constraint_builder.rs index 7b146ddb..d4272488 100644 --- a/src/constraint_builder.rs +++ b/src/constraint_builder.rs @@ -83,27 +83,6 @@ impl ConstraintBuilder { self.lookups.push((name, lookup)) } - pub fn add_lookup_with_default( - &mut self, - name: &'static str, - left: [Query; N], - right: [Query; N], - default: [Query; N], - ) { - let condition = self - .conditions - .iter() - .skip(1) // Save a degree by skipping every row selector - .fold(BinaryQuery::one(), |a, b| a.and(b.clone())); - let lookup = left - .into_iter() - .zip(default.into_iter()) - .map(|(a, b)| condition.select(a, b)) - .zip(right.into_iter()) - .collect(); - self.lookups.push((name, lookup)) - } - pub fn build_columns( &self, cs: &mut ConstraintSystem, From 3667289cb46e69bfb3075b9fccaa2e3f58693f10 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 25 Sep 2023 21:12:36 -0400 Subject: [PATCH 83/86] Move poseidon lookup to constraint builder --- src/constraint_builder.rs | 35 ++++++++++++++++++++++++++++++ src/gadgets/poseidon.rs | 45 ++++----------------------------------- 2 files changed, 39 insertions(+), 41 deletions(-) diff --git a/src/constraint_builder.rs b/src/constraint_builder.rs index d4272488..f2f881d2 100644 --- a/src/constraint_builder.rs +++ b/src/constraint_builder.rs @@ -1,3 +1,4 @@ +use crate::gadgets::poseidon::PoseidonLookup; use halo2_proofs::{ arithmetic::FieldExt, plonk::{ConstraintSystem, SecondPhase}, @@ -83,6 +84,40 @@ impl ConstraintBuilder { self.lookups.push((name, lookup)) } + pub fn poseidon_lookup( + &mut self, + name: &'static str, + [left, right, domain, hash]: [Query; 4], + poseidon: &impl PoseidonLookup, + ) { + let extended_queries = [ + Query::one(), + hash, + left, + right, + Query::zero(), + domain, + Query::one(), + ]; + + let (q_enable, [hash, left, right, control, domain_spec, head_mark]) = + poseidon.lookup_columns(); + + self.add_lookup( + name, + extended_queries, + [ + q_enable.current(), + hash.current(), + left.current(), + right.current(), + control.current(), + domain_spec.current(), + head_mark.current(), + ], + ) + } + pub fn build_columns( &self, cs: &mut ConstraintSystem, diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index 0d5ed41c..2586490e 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -1,11 +1,10 @@ -use crate::constraint_builder::{AdviceColumn, ConstraintBuilder, FixedColumn, Query}; +use crate::constraint_builder::{AdviceColumn, FixedColumn}; +use halo2_proofs::plonk::{Advice, Column, Fixed}; +#[cfg(test)] use halo2_proofs::{ - arithmetic::FieldExt, - plonk::{Advice, Column, Fixed}, + arithmetic::FieldExt, circuit::Region, halo2curves::bn256::Fr, plonk::ConstraintSystem, }; #[cfg(test)] -use halo2_proofs::{circuit::Region, halo2curves::bn256::Fr, plonk::ConstraintSystem}; -#[cfg(test)] use hash_circuit::hash::Hashable; /// Lookup represent the poseidon table in zkevm circuit @@ -20,42 +19,6 @@ pub trait PoseidonLookup { } } -impl ConstraintBuilder { - pub fn poseidon_lookup( - &mut self, - name: &'static str, - [left, right, domain, hash]: [Query; 4], - poseidon: &impl PoseidonLookup, - ) { - let extended_queries = [ - Query::one(), - hash, - left, - right, - Query::zero(), - domain, - Query::one(), - ]; - - let (q_enable, [hash, left, right, control, domain_spec, head_mark]) = - poseidon.lookup_columns(); - - self.add_lookup( - name, - extended_queries, - [ - q_enable.current(), - hash.current(), - left.current(), - right.current(), - control.current(), - domain_spec.current(), - head_mark.current(), - ], - ) - } -} - #[cfg(test)] #[derive(Clone, Copy)] pub struct PoseidonTable { From bcf16365c4730a5ba6434d879f17dc07ca0d2ce5 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 25 Sep 2023 21:20:53 -0400 Subject: [PATCH 84/86] Ensure row is enabled for non-poseidon lookups --- src/constraint_builder.rs | 41 +++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/src/constraint_builder.rs b/src/constraint_builder.rs index f2f881d2..b653a5f7 100644 --- a/src/constraint_builder.rs +++ b/src/constraint_builder.rs @@ -3,6 +3,7 @@ use halo2_proofs::{ arithmetic::FieldExt, plonk::{ConstraintSystem, SecondPhase}, }; +use itertools::Itertools; mod binary_column; mod binary_query; @@ -74,13 +75,14 @@ impl ConstraintBuilder { let condition = self .conditions .iter() - .skip(1) // Save a degree by skipping every row selector .fold(BinaryQuery::one(), |a, b| a.and(b.clone())); - let lookup = left + let mut lookup: Vec<_> = left .into_iter() .map(|q| q * condition.clone()) .zip(right.into_iter()) .collect(); + // If condition is true, every_row_selector must be enabled. + lookup.push((condition.into(), self.every_row_selector().into())); self.lookups.push((name, lookup)) } @@ -90,6 +92,11 @@ impl ConstraintBuilder { [left, right, domain, hash]: [Query; 4], poseidon: &impl PoseidonLookup, ) { + let condition = self + .conditions + .iter() + .skip(1) // Save a degree by skipping every row selector + .fold(BinaryQuery::one(), |a, b| a.and(b.clone())); let extended_queries = [ Query::one(), hash, @@ -98,24 +105,28 @@ impl ConstraintBuilder { Query::zero(), domain, Query::one(), - ]; + ] + .map(|q| q * condition.clone()); let (q_enable, [hash, left, right, control, domain_spec, head_mark]) = poseidon.lookup_columns(); + let poseidon_lookup_queries = [ + q_enable.current(), + hash.current(), + left.current(), + right.current(), + control.current(), + domain_spec.current(), + head_mark.current(), + ]; - self.add_lookup( + self.lookups.push(( name, - extended_queries, - [ - q_enable.current(), - hash.current(), - left.current(), - right.current(), - control.current(), - domain_spec.current(), - head_mark.current(), - ], - ) + extended_queries + .into_iter() + .zip_eq(poseidon_lookup_queries) + .collect(), + )) } pub fn build_columns( From 578c210ceb88d3c143ee2a013ad836d19285d9c1 Mon Sep 17 00:00:00 2001 From: Mason Liang Date: Mon, 25 Sep 2023 21:28:40 -0400 Subject: [PATCH 85/86] Use enough rows to allow tests to pass --- src/gadgets/byte_representation.rs | 2 +- src/gadgets/canonical_representation.rs | 2 +- src/gadgets/key_bit.rs | 2 +- src/tests.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gadgets/byte_representation.rs b/src/gadgets/byte_representation.rs index 20485787..4ce4a331 100644 --- a/src/gadgets/byte_representation.rs +++ b/src/gadgets/byte_representation.rs @@ -219,7 +219,7 @@ mod test { layouter.assign_region( || "", |mut region| { - for offset in 0..1024 { + for offset in 0..(8 * 256) { selector.enable(&mut region, offset); } byte_bit.assign(&mut region); diff --git a/src/gadgets/canonical_representation.rs b/src/gadgets/canonical_representation.rs index 98383cc9..7e2ae9b5 100644 --- a/src/gadgets/canonical_representation.rs +++ b/src/gadgets/canonical_representation.rs @@ -250,7 +250,7 @@ mod test { layouter.assign_region( || "", |mut region| { - for offset in 0..256 { + for offset in 0..(8 * 256) { selector.enable(&mut region, offset); } byte_bit.assign(&mut region); diff --git a/src/gadgets/key_bit.rs b/src/gadgets/key_bit.rs index cc2299d3..8891665d 100644 --- a/src/gadgets/key_bit.rs +++ b/src/gadgets/key_bit.rs @@ -191,7 +191,7 @@ mod test { layouter.assign_region( || "", |mut region| { - for offset in 0..32 { + for offset in 0..(8 * 256) { selector.enable(&mut region, offset); } diff --git a/src/tests.rs b/src/tests.rs index 5601076b..91855616 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -11,7 +11,7 @@ use halo2_proofs::{ }; use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; -const N_ROWS: usize = 1024; +const N_ROWS: usize = 8 * 256 + 1; const STORAGE_ADDRESS: Address = Address::repeat_byte(1); fn initial_generator() -> WitnessGenerator { From 6232ff4e91ee2e55a8e5ab96b6e360bdd3037c67 Mon Sep 17 00:00:00 2001 From: z2trillion Date: Tue, 31 Oct 2023 09:56:56 +0800 Subject: [PATCH 86/86] Add n_rows_required method to MptCircuit (#93) * fix column annotation * Implement n_rows_required for internal gadgets * Add n_rows_required implementation for MptUpdateGadget * clippy and add 1 to account for disabled row in MptUpdateConfig * Start assignment from second row * Remove panic * Add comments explaining where +1 comes from * Add test for fixed vk * Dedup hash traces and add comment explaining +1 in n_rows_required * Fix comment * Fix build * Track Cargo.lock --------- Co-authored-by: Mason Liang --- .gitignore | 3 +- Cargo.lock.current => Cargo.lock | 278 ++++++++++-------------- Cargo.toml | 2 +- src/constraint_builder/column.rs | 2 +- src/gadgets/byte_bit.rs | 13 +- src/gadgets/byte_representation.rs | 14 +- src/gadgets/canonical_representation.rs | 52 ++++- src/gadgets/key_bit.rs | 11 +- src/gadgets/mpt_update.rs | 32 +++ src/gadgets/poseidon.rs | 12 + src/mpt.rs | 27 ++- src/tests.rs | 66 +++++- 12 files changed, 318 insertions(+), 194 deletions(-) rename Cargo.lock.current => Cargo.lock (91%) diff --git a/.gitignore b/.gitignore index 31a5ddfa..21ad0a9e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ /layouts .vscode .cargo -Cargo.lock -*.png \ No newline at end of file +*.png diff --git a/Cargo.lock.current b/Cargo.lock similarity index 91% rename from Cargo.lock.current rename to Cargo.lock index cf31c6e0..cab9efe6 100644 --- a/Cargo.lock.current +++ b/Cargo.lock @@ -21,9 +21,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.5" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -73,13 +73,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", ] [[package]] @@ -88,7 +88,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] @@ -155,9 +155,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -213,15 +213,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" dependencies = [ - "sha2 0.10.7", + "sha2 0.10.8", "tinyvec", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -237,9 +237,9 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -273,9 +273,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.30" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", @@ -316,7 +316,7 @@ dependencies = [ "hmac 0.12.1", "k256", "serde", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", ] @@ -332,7 +332,7 @@ dependencies = [ "once_cell", "pbkdf2 0.12.2", "rand", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", ] @@ -351,7 +351,7 @@ dependencies = [ "ripemd", "serde", "serde_derive", - "sha2 0.10.7", + "sha2 0.10.8", "sha3 0.10.8", "thiserror", ] @@ -765,9 +765,9 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" -version = "0.13.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct", "crypto-bigint", @@ -803,25 +803,14 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "eth-keystore" version = "0.5.0" @@ -838,7 +827,7 @@ dependencies = [ "scrypt", "serde", "serde_json", - "sha2 0.10.7", + "sha2 0.10.8", "sha3 0.10.8", "thiserror", "uuid", @@ -847,7 +836,7 @@ dependencies = [ [[package]] name = "eth-types" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#0afa0d9e148b914eda1d1a701547f62ee1844b24" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git?rev=7d9bc181953cfc6e7baf82ff0ce651281fd70a8a#7d9bc181953cfc6e7baf82ff0ce651281fd70a8a" dependencies = [ "ethers-core", "ethers-signers", @@ -858,6 +847,7 @@ dependencies = [ "libsecp256k1", "num", "num-bigint", + "once_cell", "poseidon-circuit", "regex", "serde", @@ -958,16 +948,16 @@ dependencies = [ "ethers-core", "hex", "rand", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", "tracing", ] [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" @@ -1013,9 +1003,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1192,7 +1182,7 @@ dependencies = [ [[package]] name = "halo2-mpt-circuits" version = "0.1.0" -source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.3#a42263eeb38f48b3008abea95993423604497c6a" +source = "git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.7.0#578c210ceb88d3c143ee2a013ad836d19285d9c1" dependencies = [ "ethers-core", "halo2_proofs", @@ -1214,7 +1204,7 @@ dependencies = [ [[package]] name = "halo2_proofs" version = "0.2.0" -source = "git+https://github.com/scroll-tech/halo2.git?branch=develop#aa86c107aeb62282d81ebce5c4930ec0c0aa540b" +source = "git+https://github.com/scroll-tech/halo2.git?branch=develop#e3fe25eadd714fd991f35190d17ff0b8fb031188" dependencies = [ "ark-std", "blake2b_simd", @@ -1275,9 +1265,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -1294,12 +1284,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" - [[package]] name = "hex" version = "0.4.3" @@ -1426,9 +1410,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", "hashbrown", @@ -1483,7 +1467,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "sha2 0.10.7", + "sha2 0.10.8", "signature", ] @@ -1504,15 +1488,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libloading" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if 1.0.0", "windows-sys", @@ -1568,9 +1552,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "log" @@ -1580,9 +1564,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.3" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -1606,10 +1590,10 @@ dependencies = [ [[package]] name = "mpt-zktrie" version = "0.1.0" -source = "git+https://github.com/scroll-tech/zkevm-circuits.git#0afa0d9e148b914eda1d1a701547f62ee1844b24" +source = "git+https://github.com/scroll-tech/zkevm-circuits.git?rev=7d9bc181953cfc6e7baf82ff0ce651281fd70a8a#7d9bc181953cfc6e7baf82ff0ce651281fd70a8a" dependencies = [ "eth-types", - "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.6.3)", + "halo2-mpt-circuits 0.1.0 (git+https://github.com/scroll-tech/mpt-circuit.git?tag=v0.7.0)", "halo2_proofs", "hex", "lazy_static", @@ -1689,23 +1673,13 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - [[package]] name = "num_enum" version = "0.6.1" @@ -1724,7 +1698,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", ] [[package]] @@ -1823,9 +1797,9 @@ dependencies = [ [[package]] name = "pathfinder_simd" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" +checksum = "0444332826c70dc47be74a7c6a5fc44e23a7905ad6858d4162b658320455ef93" dependencies = [ "rustc_version", ] @@ -1849,17 +1823,6 @@ dependencies = [ "hmac 0.12.1", ] -[[package]] -name = "pest" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - [[package]] name = "pin-project-lite" version = "0.2.13" @@ -1973,9 +1936,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -2021,9 +1984,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -2084,9 +2047,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -2094,14 +2057,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -2135,9 +2096,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -2147,9 +2108,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -2158,9 +2119,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rfc6979" @@ -2211,20 +2172,20 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.13" +version = "0.38.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", @@ -2300,7 +2261,7 @@ dependencies = [ "hmac 0.12.1", "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] @@ -2319,47 +2280,35 @@ dependencies = [ [[package]] name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -2403,9 +2352,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -2519,9 +2468,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.32" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -2560,31 +2509,31 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", ] [[package]] @@ -2630,11 +2579,10 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" dependencies = [ - "cfg-if 1.0.0", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2642,20 +2590,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] @@ -2668,15 +2616,9 @@ checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" [[package]] name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd-trie" -version = "0.1.6" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" @@ -2692,9 +2634,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-xid" @@ -2755,7 +2697,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -2777,7 +2719,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2822,9 +2764,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -2912,9 +2854,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.15" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] @@ -2958,7 +2900,7 @@ checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" [[package]] name = "zktrie" version = "0.2.0" -source = "git+https://github.com/scroll-tech/zktrie.git?branch=v0.6#83318659773604fa565e2ebeb810a6d3746f0af4" +source = "git+https://github.com/scroll-tech/zktrie.git?branch=v0.7#a130ea543d291d4b71724f91cb8a49745c593a0c" dependencies = [ "gobuild", ] diff --git a/Cargo.toml b/Cargo.toml index 65f5f3e1..18cecdd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ ethers-core = { git = "https://github.com/scroll-tech/ethers-rs.git", branch = " print_layout = ["halo2_proofs/dev-graph"] [dev-dependencies] -mpt-zktrie = { git = "https://github.com/scroll-tech/zkevm-circuits.git" } +mpt-zktrie = { git = "https://github.com/scroll-tech/zkevm-circuits.git", rev = "7d9bc181953cfc6e7baf82ff0ce651281fd70a8a" } # mpt-zktrie = { path = "../scroll-circuits/zktrie" } rand_chacha = "0.3.0" plotters = "0.3" diff --git a/src/constraint_builder/column.rs b/src/constraint_builder/column.rs index b3dbfa03..45351e16 100644 --- a/src/constraint_builder/column.rs +++ b/src/constraint_builder/column.rs @@ -51,7 +51,7 @@ impl FixedColumn { { region .assign_fixed( - || "asdfasdfawe", + || "fixed", self.0, offset, || Value::known(value.try_into().unwrap()), diff --git a/src/gadgets/byte_bit.rs b/src/gadgets/byte_bit.rs index 60474732..471fa2f8 100644 --- a/src/gadgets/byte_bit.rs +++ b/src/gadgets/byte_bit.rs @@ -31,7 +31,7 @@ impl ByteBitGadget { } pub fn assign(&self, region: &mut Region<'_, F>) { - let mut offset = 0; + let mut offset = 1; for byte in 0..256 { for index in 0..8 { self.byte.assign(region, offset, byte); @@ -40,6 +40,17 @@ impl ByteBitGadget { offset += 1; } } + + let expected_offset = Self::n_rows_required(); + debug_assert!( + offset == expected_offset, + "assign used {offset} rows but {expected_offset} rows expected from `n_rows_required`", + ); + } + + pub fn n_rows_required() -> usize { + // +1 because assigment starts on offset = 1 instead of offset = 0. + 256 * 8 + 1 } } diff --git a/src/gadgets/byte_representation.rs b/src/gadgets/byte_representation.rs index 4ce4a331..aa8b2904 100644 --- a/src/gadgets/byte_representation.rs +++ b/src/gadgets/byte_representation.rs @@ -93,7 +93,6 @@ impl ByteRepresentationConfig { } } - // can this we done with an Iterator instead? pub fn assign( &self, region: &mut Region<'_, F>, @@ -111,7 +110,7 @@ impl ByteRepresentationConfig { .chain(u128s.iter().map(u128_to_big_endian)) .chain(frs.iter().map(fr_to_big_endian)); - let mut offset = 0; + let mut offset = 1; for byte_representation in byte_representations { let mut value = F::zero(); let mut rlc = Value::known(F::zero()); @@ -132,6 +131,17 @@ impl ByteRepresentationConfig { offset += 1; } } + + let expected_offset = Self::n_rows_required(u32s, u64s, u128s, frs); + debug_assert!( + offset == expected_offset, + "assign used {offset} rows but {expected_offset} rows expected from `n_rows_required`", + ); + } + + pub fn n_rows_required(u32s: &[u32], u64s: &[u64], u128s: &[u128], frs: &[Fr]) -> usize { + // +1 because assigment starts on offset = 1 instead of offset = 0. + 1 + u32s.len() * 4 + u64s.len() * 8 + u128s.len() * 16 + frs.len() * 31 } } diff --git a/src/gadgets/canonical_representation.rs b/src/gadgets/canonical_representation.rs index 7e2ae9b5..e98f0132 100644 --- a/src/gadgets/canonical_representation.rs +++ b/src/gadgets/canonical_representation.rs @@ -130,19 +130,19 @@ impl CanonicalRepresentationConfig { } } - pub fn assign<'a>( + pub fn assign( &self, region: &mut Region<'_, Fr>, randomness: Value, - values: impl IntoIterator, + values: &[Fr], + n_rows: usize, ) { let modulus = U256::from_str_radix(Fr::MODULUS, 16).unwrap(); let mut modulus_bytes = [0u8; 32]; modulus.to_big_endian(&mut modulus_bytes); - let mut offset = 0; - // TODO: we add a final Fr::zero() to handle the always enabled selector. Add a default assignment instead? - for value in values.into_iter().copied().chain([Fr::zero()]) { + let mut offset = 1; + for value in values.iter() { let mut bytes = value.to_bytes(); bytes.reverse(); let mut differences_are_zero_so_far = true; @@ -171,7 +171,7 @@ impl CanonicalRepresentationConfig { ); differences_are_zero_so_far &= difference.is_zero_vartime(); - self.value.assign(region, offset, value); + self.value.assign(region, offset, *value); rlc = rlc * randomness + Value::known(Fr::from(u64::from(*byte))); self.rlc.assign(region, offset, rlc); @@ -179,6 +179,42 @@ impl CanonicalRepresentationConfig { offset += 1 } } + + let expected_offset = Self::n_rows_required(values); + debug_assert!( + offset == expected_offset, + "assign used {offset} rows but {expected_offset} rows expected from `n_rows_required`", + ); + + let n_padding_values = n_rows / 32 - values.len(); + for _ in 0..n_padding_values { + for (index, modulus_byte) in modulus_bytes.iter().enumerate() { + self.modulus_byte + .assign(region, offset, u64::from(*modulus_byte)); + + self.index + .assign(region, offset, u64::try_from(index).unwrap()); + if index.is_zero() { + self.index_is_zero.enable(region, offset); + } else if index == 31 { + self.index_is_31.enable(region, offset); + } + + let difference = Fr::from(u64::from(*modulus_byte)); + self.difference.assign(region, offset, difference); + self.difference_is_zero.assign(region, offset, difference); + + self.differences_are_zero_so_far + .assign(region, offset, index == 0); + + offset += 1 + } + } + } + + pub fn n_rows_required(values: &[Fr]) -> usize { + // +1 because assigment starts on offset = 1 instead of offset = 0. + values.len() * 32 + 1 } } @@ -250,11 +286,11 @@ mod test { layouter.assign_region( || "", |mut region| { - for offset in 0..(8 * 256) { + for offset in 1..(1 + 8 * 256) { selector.enable(&mut region, offset); } byte_bit.assign(&mut region); - canonical_representation.assign(&mut region, randomness, &self.values); + canonical_representation.assign(&mut region, randomness, &self.values, 256); Ok(()) }, ) diff --git a/src/gadgets/key_bit.rs b/src/gadgets/key_bit.rs index 8891665d..5d4b2581 100644 --- a/src/gadgets/key_bit.rs +++ b/src/gadgets/key_bit.rs @@ -89,6 +89,8 @@ impl KeyBitConfig { pub fn assign(&self, region: &mut Region<'_, Fr>, lookups: &[(Fr, usize, bool)]) { // TODO; dedup lookups for (offset, (value, index, bit)) in lookups.iter().enumerate() { + // TODO: either move the disabled row to the end of the assigment or get rid of it entirely. + let offset = offset + 1; // Start assigning at offet = 1 because the first row is disabled. let bytes = value.to_bytes(); let index_div_8 = index / 8; // index = (31 - index/8) * 8 @@ -108,6 +110,11 @@ impl KeyBitConfig { self.byte.assign(region, offset, u64::from(byte)); } } + + pub fn n_rows_required(lookups: &[(Fr, usize, bool)]) -> usize { + // +1 because assigment starts on offset = 1 instead of offset = 0. + 1 + lookups.len() + } } impl KeyBitLookup for KeyBitConfig { @@ -191,13 +198,13 @@ mod test { layouter.assign_region( || "", |mut region| { - for offset in 0..(8 * 256) { + for offset in 1..(1 + 8 * 256) { selector.enable(&mut region, offset); } key_bit.assign(&mut region, &self.lookups); byte_bit.assign(&mut region); - canonical_representation.assign(&mut region, randomness, &keys); + canonical_representation.assign(&mut region, randomness, &keys, 256); Ok(()) }, ) diff --git a/src/gadgets/mpt_update.rs b/src/gadgets/mpt_update.rs index 500537e7..cedd72c4 100644 --- a/src/gadgets/mpt_update.rs +++ b/src/gadgets/mpt_update.rs @@ -594,9 +594,21 @@ impl MptUpdateConfig { n_rows += proof.n_rows(); offset = 1 + n_rows; } + + let expected_offset = Self::n_rows_required(proofs); + debug_assert!( + offset == expected_offset, + "assign used {offset} rows but {expected_offset} rows expected from `n_rows_required`", + ); + n_rows } + pub fn n_rows_required(proofs: &[Proof]) -> usize { + // +1 because assigment starts on offset = 1 instead of offset = 0. + proofs.iter().map(Proof::n_rows).sum::() + 1 + } + fn assign_account_trie_rows( &self, region: &mut Region<'_, Fr>, @@ -2086,6 +2098,8 @@ pub fn hash_traces(proofs: &[Proof]) -> Vec<([Fr; 2], Fr, Fr)> { } } } + hash_traces.sort(); + hash_traces.dedup(); hash_traces } @@ -2118,6 +2132,9 @@ pub fn key_bit_lookups(proofs: &[Proof]) -> Vec<(Fr, usize, bool)> { } lookups.extend(proof.storage.key_bit_lookups()); } + + lookups.sort(); + lookups.dedup(); lookups } @@ -2199,6 +2216,19 @@ pub fn byte_representations(proofs: &[Proof]) -> (Vec, Vec, Vec, _ => {} } } + + u32s.sort(); + u32s.dedup(); + + u64s.sort(); + u64s.dedup(); + + u128s.sort(); + u128s.dedup(); + + frs.sort(); + frs.dedup(); + (u32s, u64s, u128s, frs) } @@ -2213,5 +2243,7 @@ pub fn mpt_update_keys(proofs: &[Proof]) -> Vec { keys.push(proof.claim.old_root); keys.push(proof.claim.new_root); } + keys.sort(); + keys.dedup(); keys } diff --git a/src/gadgets/poseidon.rs b/src/gadgets/poseidon.rs index 2586490e..c216643e 100644 --- a/src/gadgets/poseidon.rs +++ b/src/gadgets/poseidon.rs @@ -7,6 +7,9 @@ use halo2_proofs::{ #[cfg(test)] use hash_circuit::hash::Hashable; +#[cfg(test)] +const MAX_POSEIDON_ROWS: usize = 200; + /// Lookup represent the poseidon table in zkevm circuit pub trait PoseidonLookup { fn lookup_columns(&self) -> (FixedColumn, [AdviceColumn; 6]) { @@ -48,6 +51,9 @@ impl PoseidonTable { } pub fn load(&self, region: &mut Region<'_, Fr>, hash_traces: &[([Fr; 2], Fr, Fr)]) { + // The test poseidon table starts assigning from the first row, which has a disabled + // selector, but this is fine because the poseidon_lookup in the ConstraintBuilder + // doesn't include the mpt circuit's selector column. for (offset, hash_trace) in hash_traces.iter().enumerate() { assert!( Hashable::hash_with_domain([hash_trace.0[0], hash_trace.0[1]], hash_trace.1) @@ -67,6 +73,12 @@ impl PoseidonTable { } self.q_enable.assign(region, offset, Fr::one()); } + + // We need to do this so that the fixed columns in the tests will not depend on the + // number of poseidon hashes that are looked up. + for offset in hash_traces.len()..MAX_POSEIDON_ROWS { + self.q_enable.assign(region, offset, Fr::one()); + } } } diff --git a/src/mpt.rs b/src/mpt.rs index 08c8c50c..12ce206c 100644 --- a/src/mpt.rs +++ b/src/mpt.rs @@ -141,13 +141,8 @@ impl MptCircuitConfig { keys.len() ); - self.canonical_representation.assign( - &mut region, - randomness, - keys.iter() - .chain(std::iter::repeat(&Fr::zero())) - .take(total_rep_size), - ); + self.canonical_representation + .assign(&mut region, randomness, &keys, n_rows); self.key_bit.assign(&mut region, &key_bit_lookups(proofs)); self.byte_bit.assign(&mut region); self.byte_representation.assign( @@ -180,4 +175,22 @@ impl MptCircuitConfig { pub fn lookup_exprs(&self, meta: &mut VirtualCells<'_, F>) -> [Expression; 8] { self.mpt_update.lookup().map(|q| q.run(meta)) } + + /// The number of minimum number of rows required for the mpt circuit. + pub fn n_rows_required(proofs: &[Proof]) -> usize { + let (u32s, u64s, u128s, frs) = byte_representations(proofs); + + // +1 for the final padding row to satisfy the "final mpt update is padding" constraint. + 1 + *[ + MptUpdateConfig::n_rows_required(proofs), + CanonicalRepresentationConfig::n_rows_required(&mpt_update_keys(proofs)), + KeyBitConfig::n_rows_required(&key_bit_lookups(proofs)), + // TODO: move rlc lookup for frs into CanonicalRepresentationConfig. + ByteRepresentationConfig::n_rows_required(&u32s, &u64s, &u128s, &frs), + ByteBitGadget::n_rows_required(), + ] + .iter() + .max() + .unwrap() + } } diff --git a/src/tests.rs b/src/tests.rs index 91855616..0ea9df52 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -6,10 +6,12 @@ use ethers_core::types::{Address, U256}; use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner}, dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, ConstraintSystem, Error, FirstPhase}, + halo2curves::bn256::{Bn256, Fr}, + plonk::{keygen_vk, Circuit, ConstraintSystem, Error, FirstPhase}, + poly::kzg::commitment::ParamsKZG, }; use mpt_zktrie::state::{builder::HASH_SCHEME_DONE, witness::WitnessGenerator, ZktrieState}; +use rand_chacha::rand_core::SeedableRng; const N_ROWS: usize = 8 * 256 + 1; const STORAGE_ADDRESS: Address = Address::repeat_byte(1); @@ -115,6 +117,34 @@ fn degree() { assert_eq!(meta.degree(), 9); } +#[test] +fn verifying_key_constant() { + let params = ParamsKZG::::setup(17, rand_chacha::ChaCha20Rng::seed_from_u64(2)); + + let no_updates = TestCircuit::new(N_ROWS, vec![]); + let one_update = TestCircuit::new( + N_ROWS, + vec![( + MPTProofType::BalanceChanged, + serde_json::from_str(&include_str!( + "traces/empty_account_type_1_balance_update.json" + )) + .unwrap(), + )], + ); + let vk_no_updates = keygen_vk(¶ms, &no_updates).unwrap(); + let vk_one_update = keygen_vk(¶ms, &one_update).unwrap(); + + assert_eq!( + vk_no_updates.fixed_commitments(), + vk_one_update.fixed_commitments() + ); + assert_eq!( + vk_no_updates.permutation().commitments(), + vk_one_update.permutation().commitments() + ); +} + #[test] fn all_padding() { mock_prove(vec![]); @@ -1046,3 +1076,35 @@ fn create_name_registrator_per_txs_not_enough_gas_d0_g0_v0() { .unwrap(), ); } + +#[test] +fn test_n_rows_required() { + assert!(*HASH_SCHEME_DONE); + let mut generator = WitnessGenerator::from(&ZktrieState::default()); + generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::BalanceChanged, + Address::repeat_byte(1), + U256::from(23), + U256::zero(), + None, + ); + + let trace = generator.handle_new_state( + mpt_zktrie::mpt_circuits::MPTProofType::AccountDoesNotExist, + Address::repeat_byte(2), + U256::zero(), + U256::zero(), + None, + ); + let json = serde_json::to_string_pretty(&trace).unwrap(); + let trace: SMTTrace = serde_json::from_str(&json).unwrap(); + + let witness = vec![(MPTProofType::AccountDoesNotExist, trace); 3000]; + let proofs: Vec<_> = witness.clone().into_iter().map(Proof::from).collect(); + + let n_rows_required = MptCircuitConfig::n_rows_required(&proofs); + + let circuit = TestCircuit::new(n_rows_required, witness); + let prover = MockProver::::run(14, &circuit, vec![]).unwrap(); + assert_eq!(prover.verify(), Ok(())); +}