diff --git a/Cargo.lock b/Cargo.lock index dadedd4e2f3..2a6d1cbc2b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9703,7 +9703,6 @@ dependencies = [ "reth-revm", "reth-rpc", "reth-rpc-api", - "reth-rpc-convert", "reth-rpc-engine-api", "reth-rpc-eth-api", "reth-rpc-eth-types", @@ -11975,7 +11974,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] diff --git a/crates/optimism/bin/Cargo.toml b/crates/optimism/bin/Cargo.toml index 4c6f6405fc4..299b173f1a9 100644 --- a/crates/optimism/bin/Cargo.toml +++ b/crates/optimism/bin/Cargo.toml @@ -41,6 +41,7 @@ otlp = ["reth-optimism-cli/otlp"] js-tracer = [ "reth-optimism-node/js-tracer", + "reth-node-builder/js-tracer", ] jemalloc = ["reth-cli-util/jemalloc", "reth-optimism-cli/jemalloc"] diff --git a/crates/optimism/rpc/Cargo.toml b/crates/optimism/rpc/Cargo.toml index 98a28361c75..bb112b27b91 100644 --- a/crates/optimism/rpc/Cargo.toml +++ b/crates/optimism/rpc/Cargo.toml @@ -30,7 +30,6 @@ reth-node-builder.workspace = true reth-chainspec.workspace = true reth-chain-state.workspace = true reth-rpc-engine-api.workspace = true -reth-rpc-convert.workspace = true reth-payload-util.workspace = true reth-provider.workspace = true diff --git a/crates/optimism/rpc/src/debug.rs b/crates/optimism/rpc/src/debug.rs index fbc500d9399..5747490bcb9 100644 --- a/crates/optimism/rpc/src/debug.rs +++ b/crates/optimism/rpc/src/debug.rs @@ -186,11 +186,11 @@ where let config = PayloadConfig { parent_header: Arc::new(parent_header), attributes }; let ctx = OpPayloadBuilderCtx { evm_config: this.evm_config.clone(), - da_config: Default::default(), // doesn't matter if no txpool chain_spec: this.provider.chain_spec(), config, cancel: Default::default(), best_payload: Default::default(), + builder_config: Default::default(), }; let state_provider = this diff --git a/crates/optimism/trie/src/cursor_factory.rs b/crates/optimism/trie/src/cursor_factory.rs index 7f75493c57e..b7bd6601434 100644 --- a/crates/optimism/trie/src/cursor_factory.rs +++ b/crates/optimism/trie/src/cursor_factory.rs @@ -28,10 +28,16 @@ impl<'tx, S> TrieCursorFactory for OpProofsTrieCursorFactory<'tx, S> where S: OpProofsStore + 'tx, { - type AccountTrieCursor = OpProofsTrieCursor>; - type StorageTrieCursor = OpProofsTrieCursor>; + type AccountTrieCursor<'a> + = OpProofsTrieCursor> + where + Self: 'a; + type StorageTrieCursor<'a> + = OpProofsTrieCursor> + where + Self: 'a; - fn account_trie_cursor(&self) -> Result { + fn account_trie_cursor(&self) -> Result, DatabaseError> { Ok(OpProofsTrieCursor::new( self.storage .account_trie_cursor(self.block_number) @@ -42,7 +48,7 @@ where fn storage_trie_cursor( &self, hashed_address: B256, - ) -> Result { + ) -> Result, DatabaseError> { Ok(OpProofsTrieCursor::new( self.storage .storage_trie_cursor(hashed_address, self.block_number) @@ -70,17 +76,23 @@ impl<'tx, S> HashedCursorFactory for OpProofsHashedAccountCursorFactory<'tx, S> where S: OpProofsStore + 'tx, { - type AccountCursor = OpProofsHashedAccountCursor>; - type StorageCursor = OpProofsHashedStorageCursor>; + type AccountCursor<'a> + = OpProofsHashedAccountCursor> + where + Self: 'a; + type StorageCursor<'a> + = OpProofsHashedStorageCursor> + where + Self: 'a; - fn hashed_account_cursor(&self) -> Result { + fn hashed_account_cursor(&self) -> Result, DatabaseError> { Ok(OpProofsHashedAccountCursor::new(self.storage.account_hashed_cursor(self.block_number)?)) } fn hashed_storage_cursor( &self, hashed_address: B256, - ) -> Result { + ) -> Result, DatabaseError> { Ok(OpProofsHashedStorageCursor::new( self.storage.storage_hashed_cursor(hashed_address, self.block_number)?, )) diff --git a/crates/optimism/trie/src/db/store.rs b/crates/optimism/trie/src/db/store.rs index 2cc06a7e892..bd3426fad8d 100644 --- a/crates/optimism/trie/src/db/store.rs +++ b/crates/optimism/trie/src/db/store.rs @@ -246,11 +246,10 @@ impl MdbxProofsStorage { let sorted_post_state = block_state_diff.post_state.into_sorted(); - let sorted_accounts = sorted_post_state.accounts().accounts_sorted(); let sorted_storage = sorted_post_state .account_storages() .iter() - .sorted_by_key(|(hashed_address, _)| *hashed_address) + .map(|(k, v)| (*k, v.clone())) .collect::>(); let storage_trie_len = sorted_storage_nodes.len(); @@ -265,7 +264,7 @@ impl MdbxProofsStorage { let hashed_account_keys = self.append_or_delete_dup_sorted( tx, block_number, - sorted_accounts.into_iter(), + sorted_post_state.accounts().iter().copied(), soft_delete, )?; @@ -298,19 +297,19 @@ impl MdbxProofsStorage { if storage.is_wiped() { // Yet to have any update for the current block number - So just using up to // previous block number - let mut ro = self.storage_hashed_cursor(*hashed_address, block_number - 1)?; - let keys = self.wipe_storage(tx, block_number, *hashed_address, || ro.next())?; + let mut ro = self.storage_hashed_cursor(hashed_address, block_number - 1)?; + let keys = self.wipe_storage(tx, block_number, hashed_address, || ro.next())?; hashed_storage_keys.extend(keys); // Skip any further processing for this hashed_address continue; } - let storage_items = storage.storage_slots_sorted().collect::>(); let keys = self.append_or_delete_dup_sorted( tx, block_number, - storage_items - .into_iter() - .map(|(key, val)| (*hashed_address, key, Some(StorageValue(val)))), + storage + .storage_slots_ref() + .iter() + .map(|(key, val)| (hashed_address, *key, Some(StorageValue(*val)))), soft_delete, )?; hashed_storage_keys.extend(keys); diff --git a/crates/optimism/trie/tests/live.rs b/crates/optimism/trie/tests/live.rs index 56fa644c05b..32ce95c4651 100644 --- a/crates/optimism/trie/tests/live.rs +++ b/crates/optimism/trie/tests/live.rs @@ -10,7 +10,7 @@ use reth_db_common::init::init_genesis; use reth_ethereum_primitives::{Block, BlockBody, Receipt, TransactionSigned}; use reth_evm::{execute::Executor, ConfigureEvm}; use reth_evm_ethereum::EthEvmConfig; -use reth_node_api::{FullNodePrimitives, NodeTypesWithDB}; +use reth_node_api::{NodePrimitives, NodeTypesWithDB}; use reth_optimism_trie::{ backfill::BackfillJob, in_memory::InMemoryProofsStorage, live::LiveTrieCollector, OpProofsStorage, @@ -145,7 +145,7 @@ fn execute_block( ) -> eyre::Result> where N: ProviderNodeTypes< - Primitives: FullNodePrimitives, + Primitives: NodePrimitives, > + NodeTypesWithDB, { let provider = provider_factory.provider()?; @@ -172,7 +172,7 @@ fn commit_block_to_database( ) -> eyre::Result<()> where N: ProviderNodeTypes< - Primitives: FullNodePrimitives, + Primitives: NodePrimitives, > + NodeTypesWithDB, { let execution_outcome = ExecutionOutcome { @@ -210,7 +210,7 @@ async fn run_test_scenario( ) -> eyre::Result<()> where N: ProviderNodeTypes< - Primitives: FullNodePrimitives, + Primitives: NodePrimitives, > + NodeTypesWithDB, { let genesis_hash = chain_spec.genesis_hash(); diff --git a/crates/storage/db-api/src/mock.rs b/crates/storage/db-api/src/mock.rs index 60f69ae8f0d..0878de1e4cd 100644 --- a/crates/storage/db-api/src/mock.rs +++ b/crates/storage/db-api/src/mock.rs @@ -290,12 +290,18 @@ impl DbCursorRO for CursorMock { } impl DbDupCursorRO for CursorMock { - /// Moves to the next duplicate entry. - /// **Mock behavior**: Always returns `None`. + fn prev_dup(&mut self) -> PairResult { + Ok(None) + } + fn next_dup(&mut self) -> PairResult { Ok(None) } + fn last_dup(&mut self) -> ValueOnlyResult { + Ok(None) + } + /// Moves to the next entry with a different key. /// **Mock behavior**: Always returns `None`. fn next_no_dup(&mut self) -> PairResult { diff --git a/crates/trie/common/src/updates.rs b/crates/trie/common/src/updates.rs index b0d178cd1d0..05149c77c18 100644 --- a/crates/trie/common/src/updates.rs +++ b/crates/trie/common/src/updates.rs @@ -432,9 +432,9 @@ pub struct TrieUpdatesSortedRef<'a> { pub struct TrieUpdatesSorted { /// Sorted collection of updated state nodes with corresponding paths. None indicates that a /// node was removed. - account_nodes: Vec<(Nibbles, Option)>, + pub account_nodes: Vec<(Nibbles, Option)>, /// Storage tries stored by hashed address of the account the trie belongs to. - storage_tries: B256Map, + pub storage_tries: B256Map, } impl TrieUpdatesSorted {