diff --git a/evm/Cargo.toml b/evm/Cargo.toml index 1327635d..cdb8b5d6 100644 --- a/evm/Cargo.toml +++ b/evm/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] plonky2 = { path = "../plonky2", default-features = false, features = ["rand", "timing"] } plonky2_util = { path = "../util" } -eth_trie_utils = "0.3.1" +eth_trie_utils = "0.4.0" anyhow = "1.0.40" env_logger = "0.9.0" ethereum-types = "0.14.0" diff --git a/evm/src/cpu/kernel/tests/mpt/hash.rs b/evm/src/cpu/kernel/tests/mpt/hash.rs index 19c38e91..6321fb4b 100644 --- a/evm/src/cpu/kernel/tests/mpt/hash.rs +++ b/evm/src/cpu/kernel/tests/mpt/hash.rs @@ -2,7 +2,6 @@ use anyhow::Result; use eth_trie_utils::partial_trie::PartialTrie; use ethereum_types::{BigEndianHash, H256}; -use super::nibbles; use crate::cpu::kernel::aggregator::KERNEL; use crate::cpu::kernel::interpreter::Interpreter; use crate::cpu::kernel::tests::mpt::{extension_to_leaf, test_account_1_rlp, test_account_2_rlp}; @@ -55,7 +54,7 @@ fn mpt_hash_hash() -> Result<()> { #[test] fn mpt_hash_leaf() -> Result<()> { let state_trie = PartialTrie::Leaf { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), value: test_account_1_rlp(), }; let trie_inputs = TrieInputs { @@ -82,7 +81,7 @@ fn mpt_hash_extension_to_leaf() -> Result<()> { #[test] fn mpt_hash_branch_to_leaf() -> Result<()> { let leaf = PartialTrie::Leaf { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), value: test_account_2_rlp(), } .into(); diff --git a/evm/src/cpu/kernel/tests/mpt/insert.rs b/evm/src/cpu/kernel/tests/mpt/insert.rs index c92a7e62..6e1ad573 100644 --- a/evm/src/cpu/kernel/tests/mpt/insert.rs +++ b/evm/src/cpu/kernel/tests/mpt/insert.rs @@ -2,7 +2,6 @@ use anyhow::Result; use eth_trie_utils::partial_trie::{Nibbles, PartialTrie}; use ethereum_types::{BigEndianHash, H256}; -use super::nibbles; use crate::cpu::kernel::aggregator::KERNEL; use crate::cpu::kernel::constants::global_metadata::GlobalMetadata; use crate::cpu::kernel::interpreter::Interpreter; @@ -49,7 +48,7 @@ fn mpt_insert_leaf_overlapping_keys() -> Result<()> { #[ignore] // TODO: Not valid for state trie, all keys have same len. fn mpt_insert_leaf_insert_key_extends_leaf_key() -> Result<()> { let state_trie = PartialTrie::Leaf { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), value: test_account_1_rlp(), }; test_state_trie(state_trie, nibbles_64(0xABCDE), test_account_2()) @@ -59,7 +58,7 @@ fn mpt_insert_leaf_insert_key_extends_leaf_key() -> Result<()> { #[ignore] // TODO: Not valid for state trie, all keys have same len. fn mpt_insert_leaf_leaf_key_extends_insert_key() -> Result<()> { let state_trie = PartialTrie::Leaf { - nibbles: nibbles(0xABCDE), + nibbles: 0xABCDE_u64.into(), value: test_account_1_rlp(), }; test_state_trie(state_trie, nibbles_64(0xABC), test_account_2()) @@ -84,12 +83,12 @@ fn mpt_insert_extension_nonoverlapping_keys() -> Result<()> { // Existing keys are 0xABC, 0xABCDEF; inserted key is 0x12345. let mut children = std::array::from_fn(|_| PartialTrie::Empty.into()); children[0xD] = PartialTrie::Leaf { - nibbles: nibbles(0xEF), + nibbles: 0xEF_u64.into(), value: test_account_1_rlp(), } .into(); let state_trie = PartialTrie::Extension { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), child: PartialTrie::Branch { children, value: test_account_1_rlp(), @@ -107,12 +106,12 @@ fn mpt_insert_extension_insert_key_extends_node_key() -> Result<()> { // Existing keys are 0xA, 0xABCD; inserted key is 0xABCDEF. let mut children = std::array::from_fn(|_| PartialTrie::Empty.into()); children[0xB] = PartialTrie::Leaf { - nibbles: nibbles(0xCD), + nibbles: 0xCD_u64.into(), value: test_account_1_rlp(), } .into(); let state_trie = PartialTrie::Extension { - nibbles: nibbles(0xA), + nibbles: 0xA_u64.into(), child: PartialTrie::Branch { children, value: test_account_1_rlp(), diff --git a/evm/src/cpu/kernel/tests/mpt/load.rs b/evm/src/cpu/kernel/tests/mpt/load.rs index 78129a1c..79b4918f 100644 --- a/evm/src/cpu/kernel/tests/mpt/load.rs +++ b/evm/src/cpu/kernel/tests/mpt/load.rs @@ -2,11 +2,11 @@ use anyhow::Result; use eth_trie_utils::partial_trie::PartialTrie; use ethereum_types::{BigEndianHash, H256, U256}; +use crate::cpu::kernel::aggregator::KERNEL; use crate::cpu::kernel::constants::global_metadata::GlobalMetadata; use crate::cpu::kernel::constants::trie_type::PartialTrieType; use crate::cpu::kernel::interpreter::Interpreter; use crate::cpu::kernel::tests::mpt::{extension_to_leaf, test_account_1, test_account_1_rlp}; -use crate::cpu::kernel::{aggregator::KERNEL, tests::mpt::nibbles}; use crate::generation::mpt::all_mpt_prover_inputs_reversed; use crate::generation::TrieInputs; @@ -49,7 +49,7 @@ fn load_all_mpts_empty() -> Result<()> { fn load_all_mpts_leaf() -> Result<()> { let trie_inputs = TrieInputs { state_trie: PartialTrie::Leaf { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), value: test_account_1_rlp(), }, transactions_trie: Default::default(), diff --git a/evm/src/cpu/kernel/tests/mpt/mod.rs b/evm/src/cpu/kernel/tests/mpt/mod.rs index 4ac6396e..d5da1d6c 100644 --- a/evm/src/cpu/kernel/tests/mpt/mod.rs +++ b/evm/src/cpu/kernel/tests/mpt/mod.rs @@ -9,16 +9,6 @@ mod insert; mod load; mod read; -/// Helper function to reduce code duplication. -/// Note that this preserves all nibbles (eg. `0x123` is not interpreted as `0x0123`). -pub(crate) fn nibbles>(v: T) -> Nibbles { - let packed = v.into(); - Nibbles { - count: Nibbles::get_num_nibbles_in_key(&packed), - packed, - } -} - pub(crate) fn nibbles_64>(v: T) -> Nibbles { let packed = v.into(); Nibbles { count: 64, packed } @@ -58,7 +48,7 @@ pub(crate) fn test_account_2_rlp() -> Vec { /// A `PartialTrie` where an extension node leads to a leaf node containing an account. pub(crate) fn extension_to_leaf(value: Vec) -> PartialTrie { PartialTrie::Extension { - nibbles: nibbles(0xABC), + nibbles: 0xABC_u64.into(), child: PartialTrie::Leaf { nibbles: Nibbles { count: 3,