From cb443ba56fd6f65b56dee4e104c4afad5d5bd43f Mon Sep 17 00:00:00 2001 From: Wolfgang Welz Date: Wed, 29 Jan 2025 12:00:43 +0100 Subject: [PATCH] Fix unresolvable key endianness --- crates/core/src/mpt.rs | 8 ++++---- crates/preflight/src/db.rs | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/crates/core/src/mpt.rs b/crates/core/src/mpt.rs index b8ee3082..ac870261 100644 --- a/crates/core/src/mpt.rs +++ b/crates/core/src/mpt.rs @@ -1,5 +1,5 @@ use alloy_primitives::map::B256Set; -use alloy_primitives::{B256, U256}; +use alloy_primitives::B256; use alloy_rlp::{Decodable, Encodable}; use risc0_ethereum_trie::{orphan, CachedTrie}; use serde::{Deserialize, Serialize}; @@ -55,7 +55,7 @@ impl MptNode { &mut self, key: K, post_state_proof: impl IntoIterator, - unresolvable: &mut B256Set, + unresolvable_keys: &mut B256Set, ) -> alloy_rlp::Result<()> where K: AsRef<[u8]>, @@ -65,8 +65,8 @@ impl MptNode { Ok(_) => {} Err(orphan::Error::Unresolvable(nibbles)) => { // convert the unresolvable nibbles into B256 with zero padding - let key = B256::from(U256::from_le_slice(&nibbles.pack())); - unresolvable.insert(key); + let unresolvable = B256::right_padding_from(&nibbles.pack()); + unresolvable_keys.insert(unresolvable); } Err(orphan::Error::RlpError(err)) => return Err(err), }; diff --git a/crates/preflight/src/db.rs b/crates/preflight/src/db.rs index 1565e8ae..7690ae96 100644 --- a/crates/preflight/src/db.rs +++ b/crates/preflight/src/db.rs @@ -21,7 +21,7 @@ use alloy::primitives::map::HashMap; use alloy::primitives::{Address, B256, U256}; use alloy::rpc::types::EIP1186AccountProofResponse; use anyhow::Context; -use log::error; +use log::{debug, error}; use reth_primitives::revm_primitives::{Account, AccountInfo, Bytecode}; use reth_revm::db::states::StateChangeset; use reth_revm::db::CacheDB; @@ -267,6 +267,7 @@ impl> PreflightDB { let mut provider = provider_db.provider.borrow_mut(); let block_no = initial_db.db.borrow_db().block_no + block_count - 1; + debug!("getting next account: start={}", start); let address = provider .get_next_account(&AccountRangeQuery::new(block_no, start)) .context("debug_accountRange call failed")?; @@ -299,6 +300,10 @@ impl> PreflightDB { let mut indices = BTreeSet::new(); for start in starts { + debug!( + "getting next storage key: address={},start={}", + address, start + ); let slot = provider .get_next_slot(&StorageRangeQuery::new(block_no, address, start)) .context("debug_storageRangeAt call failed")?;