From b6731595a42faaaf61046c6e267a7520b06e6eb3 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Tue, 21 Oct 2025 13:06:33 -0300 Subject: [PATCH 01/31] wip: perf: move trie updates to background --- Cargo.lock | 1 + crates/storage/Cargo.toml | 1 + crates/storage/store_db/rocksdb.rs | 172 ++++++++++++++++++----------- crates/storage/trie_db/layering.rs | 19 ++-- 4 files changed, 121 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 839f32ae2da..8bb943f5d99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4060,6 +4060,7 @@ dependencies = [ "serde", "serde_json", "sha3", + "spawned-concurrency", "tempfile", "thiserror 2.0.17", "tokio", diff --git a/crates/storage/Cargo.toml b/crates/storage/Cargo.toml index 508ee5866b7..c5c76068846 100644 --- a/crates/storage/Cargo.toml +++ b/crates/storage/Cargo.toml @@ -23,6 +23,7 @@ hex.workspace = true serde = { version = "1.0.203", features = ["derive"] } serde_json = "1.0.117" rocksdb = { workspace = true, optional = true } +spawned-concurrency.workspace = true tokio = { workspace = true, optional = true, features = ["rt"] } bincode = "1.3.3" diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index ef33d23e0a9..733518312b8 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -20,8 +20,12 @@ use rocksdb::{ }; use std::{ collections::HashSet, + mem::take, path::Path, - sync::{Arc, RwLock}, + sync::{ + Arc, Mutex, RwLock, + mpsc::{SyncSender, sync_channel}, + }, }; use tracing::{debug, error, info}; @@ -123,7 +127,7 @@ enum FKVGeneratorControlMessage { #[derive(Debug, Clone)] pub struct Store { db: Arc>, - trie_cache: Arc>, + trie_cache: Arc>>, flatkeyvalue_control_tx: std::sync::mpsc::SyncSender, } @@ -323,16 +327,17 @@ impl Store { } } } - let (tx, rx) = std::sync::mpsc::sync_channel(0); + let (fkv_tx, fkv_rx) = std::sync::mpsc::sync_channel(0); + let (trie_upd_tx, trie_upd_rx) = std::sync::mpsc::sync_channel(1); let store = Self { db: Arc::new(db), trie_cache: Default::default(), - flatkeyvalue_control_tx: tx, + flatkeyvalue_control_tx: fkv_tx, }; let store_clone = store.clone(); std::thread::spawn(move || { - let mut rx = rx; + let mut rx = fkv_rx; loop { match rx.recv() { Ok(FKVGeneratorControlMessage::Continue) => break, @@ -350,6 +355,18 @@ impl Store { } // rx channel is dropped, closing it }); + let store_clone = store.clone(); + std::thread::spawn(move || { + let mut rx = trie_upd_rx; + loop { + match rx.recv() { + Ok((notify, account_updates, storage_updates)) => { + store_clone.apply_trie_updates(); + } + Err(err) => error!("Error while reading diff layer: {err}"), + } + } + }); Ok(store) } @@ -605,6 +622,67 @@ impl Store { }; } } + + fn apply_trie_updates( + &self, + notify: SyncSender>, + parent_state_root: H256, + child_state_root: H256, + account_updates: Vec<(Nibbles, Vec)>, + storage_updates: Vec<(H256, Vec<(Nibbles, Vec)>)>, + ) -> Result<(), StoreError> { + let db = &*self.db; + let fkv_ctl = &self.flatkeyvalue_control_tx; + let trie_cache = &self.trie_cache; + + let new_layer = storage_updates + .into_iter() + .flat_map(|(account_hash, nodes)| { + nodes + .into_iter() + .map(move |(path, node)| (apply_prefix(Some(account_hash), path), node)) + }) + .chain(account_updates) + .collect(); + let mut trie = trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(); + let trie_mut = Arc::Arc::make_mut(&mut trie); + trie_mut.put_batch(parent_state_root, child_state_root, new_layer); + + let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) else { + return Ok(()); + }; + // If the channel is closed, there's nobody to notify + let _ = fkv_ctl.send(FKVGeneratorControlMessage::Stop); + + let mut batch = WriteBatch::default(); + let [cf_trie_nodes, cf_flatkeyvalue, cf_misc] = + open_cfs(db, [CF_TRIE_NODES, CF_FLATKEYVALUE, CF_MISC_VALUES])?; + + let last_written = db.get_cf(&cf_misc, "last_written")?.unwrap_or_default(); + let nodes = trie.commit(root).unwrap_or_default(); + for (key, value) in nodes { + let is_leaf = key.len() == 65 || key.len() == 131; + + if is_leaf && key > last_written { + continue; + } + let cf = if is_leaf { + &cf_flatkeyvalue + } else { + &cf_trie_nodes + }; + if value.is_empty() { + batch.delete_cf(cf, key); + } else { + batch.put_cf(cf, key, value); + } + } + db.write(batch)?; + Ok(()) + } } #[async_trait::async_trait] @@ -635,74 +713,44 @@ impl StoreEngine for Store { let _span = tracing::trace_span!("Block DB update").entered(); let [ - cf_trie_nodes, - cf_flatkeyvalue, cf_receipts, cf_codes, cf_block_numbers, cf_tx_locations, cf_headers, cf_bodies, - cf_misc, ] = open_cfs( &db, [ - CF_TRIE_NODES, - CF_FLATKEYVALUE, CF_RECEIPTS, CF_ACCOUNT_CODES, CF_BLOCK_NUMBERS, CF_TRANSACTION_LOCATIONS, CF_HEADERS, CF_BODIES, - CF_MISC_VALUES, ], )?; - + let _span = tracing::trace_span!("Block DB update").entered(); let mut batch = WriteBatch::default(); - let mut updated_trie = false; - - let mut trie = trie_cache.write().map_err(|_| StoreError::LockError)?; - if let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) { - updated_trie = true; - // If the channel is closed, there's nobody to notify - let _ = flatkeyvalue_control_tx.send(FKVGeneratorControlMessage::Stop); - - let last_written = db.get_cf(&cf_misc, "last_written")?.unwrap_or_default(); - let nodes = trie.commit(root).unwrap_or_default(); - for (key, value) in nodes { - let is_leaf = key.len() == 65 || key.len() == 131; - - if is_leaf && key > last_written { - continue; - } - let cf = if is_leaf { - &cf_flatkeyvalue - } else { - &cf_trie_nodes - }; - if value.is_empty() { - batch.delete_cf(cf, key); - } else { - batch.put_cf(cf, key, value); - } - } - } - trie.put_batch( - parent_state_root, - last_state_root, - update_batch - .storage_updates - .into_iter() - .flat_map(|(account_hash, nodes)| { - nodes - .into_iter() - .map(move |(path, node)| (apply_prefix(Some(account_hash), path), node)) - }) - .chain(update_batch.account_updates) - .collect(), + let (account_updates, storage_updates) = ( + take(&mut update_batch.account_updates), + take(&mut update_batch.storage_updates), ); + let wait_for_new_layer = None; + let need_new_layer = !account_updates.is_empty() || !storage_updates.is_empty(); + if need_new_layer { + // Capacity one ensures sender just notifies and goes on + let (notify_tx, notify_rx) = sync_channel(1); + wait_for_new_layer = Some(notify_rx); + self.trie_update_worker_tx.send(( + notify_tx, + parent_state_root, + last_state_root, + account_updates, + storage_updates, + ))?; + } for block in update_batch.blocks { let block_number = block.header.number; @@ -744,15 +792,15 @@ impl StoreEngine for Store { batch.put_cf(&cf_codes, code_key, code_value); } - // Single write operation - let ret = db - .write(batch) - .map_err(|e| StoreError::Custom(format!("RocksDB batch write error: {}", e))); - if updated_trie { - // If the channel is closed, there's nobody to notify - let _ = flatkeyvalue_control_tx.send(FKVGeneratorControlMessage::Continue); + if let Some(rx) = wait_for_new_layer { + // Wait for an updated top layer so every caller afterwards sees a consistent view. + // Specifically, the next block produced MUST see this upper layer. + rx.recv() + .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))?; } - ret + // After top-level is addded, we can make the rest of the changes visible. + db.write(batch) + .map_err(|e| StoreError::Custom(format!("RocksDB batch write error: {}", e))) }) .await .map_err(|e| StoreError::Custom(format!("Task panicked: {}", e)))? @@ -1731,7 +1779,7 @@ impl StoreEngine for Store { /// Open column families fn open_cfs<'a, const N: usize>( - db: &'a Arc>, + db: &'a DBWithThreadMode, names: [&str; N], ) -> Result<[Arc>; N], StoreError> { let mut handles = Vec::with_capacity(N); diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index 437a2aff1e7..bd527ea63ea 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -1,22 +1,25 @@ use ethrex_common::H256; use ethrex_rlp::decode::RLPDecode; -use std::{collections::HashMap, sync::Arc, sync::RwLock}; +use std::{ + collections::BTreeMap, + sync::{Arc, RwLock}, +}; use ethrex_trie::{EMPTY_TRIE_HASH, Nibbles, Node, TrieDB, TrieError}; #[derive(Debug)] struct TrieLayer { - nodes: HashMap, Vec>, + nodes: BTreeMap, Vec>, parent: H256, id: usize, } -#[derive(Debug, Default)] +#[derive(Clone, Debug, Default)] pub struct TrieLayerCache { /// Monotonically increasing ID for layers, starting at 1. /// TODO: this implementation panics on overflow last_id: usize, - layers: HashMap, + layers: BTreeMap>, } impl TrieLayerCache { @@ -41,11 +44,7 @@ impl TrieLayerCache { } // TODO: use finalized hash to know when to commit - pub fn get_commitable( - &mut self, - mut state_root: H256, - commit_threshold: usize, - ) -> Option { + pub fn get_commitable(&self, mut state_root: H256, commit_threshold: usize) -> Option { let mut counter = 0; while let Some(layer) = self.layers.get(&state_root) { state_root = layer.parent; @@ -74,7 +73,7 @@ impl TrieLayerCache { .or_insert_with(|| { self.last_id += 1; TrieLayer { - nodes: HashMap::new(), + nodes: Arc::new(BTreeMap::new()), parent, id: self.last_id, } From 624959c455b9c423a1d6cf8dbc91ef694845f0d2 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Tue, 21 Oct 2025 14:13:56 -0300 Subject: [PATCH 02/31] almost building --- crates/storage/store_db/rocksdb.rs | 87 +++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 20 deletions(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 733518312b8..b427583f5cf 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -129,6 +129,13 @@ pub struct Store { db: Arc>, trie_cache: Arc>>, flatkeyvalue_control_tx: std::sync::mpsc::SyncSender, + trie_update_worker_tx: std::sync::mpsc::SyncSender<( + std::sync::mpsc::SyncSender>, + H256, + H256, + Vec<(Nibbles, Vec)>, + Vec<(H256, Vec<(Nibbles, Vec)>)>, + )>, } impl Store { @@ -334,6 +341,7 @@ impl Store { db: Arc::new(db), trie_cache: Default::default(), flatkeyvalue_control_tx: fkv_tx, + trie_update_worker_tx: trie_upd_tx, }; let store_clone = store.clone(); std::thread::spawn(move || { @@ -357,11 +365,26 @@ impl Store { }); let store_clone = store.clone(); std::thread::spawn(move || { - let mut rx = trie_upd_rx; + let rx = trie_upd_rx; loop { match rx.recv() { - Ok((notify, account_updates, storage_updates)) => { - store_clone.apply_trie_updates(); + Ok(( + notify, + parent_state_root, + child_state_root, + account_updates, + storage_updates, + )) => { + // FIXME: what should we do on error? + let _ = store_clone + .apply_trie_updates( + notify, + parent_state_root, + child_state_root, + account_updates, + storage_updates, + ) + .inspect_err(|err| error!("apply_trie_updates failed: {err}")); } Err(err) => error!("Error while reading diff layer: {err}"), } @@ -635,6 +658,7 @@ impl Store { let fkv_ctl = &self.flatkeyvalue_control_tx; let trie_cache = &self.trie_cache; + // Phase 1: update the in-memory diff-layers only, then notify block production. let new_layer = storage_updates .into_iter() .flat_map(|(account_hash, nodes)| { @@ -644,25 +668,39 @@ impl Store { }) .chain(account_updates) .collect(); - let mut trie = trie_cache + // Read-Copy-Update the trie cache with a new layer. + let trie = trie_cache .lock() .map_err(|_| StoreError::LockError)? .clone(); - let trie_mut = Arc::Arc::make_mut(&mut trie); + let mut trie_mut = (&*trie).clone(); trie_mut.put_batch(parent_state_root, child_state_root, new_layer); + *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); + // Update finished, signal block production. + notify.send(Ok(())).map_err(|_| StoreError::LockError)?; + // Phase 2: update disk layer. + let trie = trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(); let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) else { + // Nothing to commit to disk, move on. return Ok(()); }; - // If the channel is closed, there's nobody to notify + // Stop the flat-key-value generator thread, as the underlying trie is about to change. + // Ignore the error, if the channel is closed it means there is no worker to notify. let _ = fkv_ctl.send(FKVGeneratorControlMessage::Stop); + // RCU to remove the bottom layer: update step needs to happen after disk layer is updated. + let mut trie_mut = (&*trie).clone(); let mut batch = WriteBatch::default(); let [cf_trie_nodes, cf_flatkeyvalue, cf_misc] = open_cfs(db, [CF_TRIE_NODES, CF_FLATKEYVALUE, CF_MISC_VALUES])?; let last_written = db.get_cf(&cf_misc, "last_written")?.unwrap_or_default(); - let nodes = trie.commit(root).unwrap_or_default(); + // Commit removes the bottom layer and returns it, this is the mutation step. + let nodes = trie_mut.commit(root).unwrap_or_default(); for (key, value) in nodes { let is_leaf = key.len() == 65 || key.len() == 131; @@ -681,15 +719,16 @@ impl Store { } } db.write(batch)?; + // Phase 3: update diff layers with the removal of bottom layer. + *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); Ok(()) } } #[async_trait::async_trait] impl StoreEngine for Store { - async fn apply_updates(&self, update_batch: UpdateBatch) -> Result<(), StoreError> { + async fn apply_updates(&self, mut update_batch: UpdateBatch) -> Result<(), StoreError> { let db = self.db.clone(); - let trie_cache = self.trie_cache.clone(); let parent_state_root = self .get_block_header_by_hash( update_batch @@ -707,7 +746,7 @@ impl StoreEngine for Store { .ok_or(StoreError::UpdateBatchNoBlocks)? .header .state_root; - let flatkeyvalue_control_tx = self.flatkeyvalue_control_tx.clone(); + let trie_upd_worker_tx = self.trie_update_worker_tx.clone(); tokio::task::spawn_blocking(move || { let _span = tracing::trace_span!("Block DB update").entered(); @@ -737,19 +776,25 @@ impl StoreEngine for Store { take(&mut update_batch.account_updates), take(&mut update_batch.storage_updates), ); - let wait_for_new_layer = None; + let mut wait_for_new_layer = None; let need_new_layer = !account_updates.is_empty() || !storage_updates.is_empty(); if need_new_layer { // Capacity one ensures sender just notifies and goes on let (notify_tx, notify_rx) = sync_channel(1); wait_for_new_layer = Some(notify_rx); - self.trie_update_worker_tx.send(( - notify_tx, - parent_state_root, - last_state_root, - account_updates, - storage_updates, - ))?; + trie_upd_worker_tx + .send(( + notify_tx, + parent_state_root, + last_state_root, + account_updates, + storage_updates, + )) + .map_err(|e| { + StoreError::Custom(format!( + "failed to read new trie layer notification: {e}" + )) + })?; } for block in update_batch.blocks { @@ -1348,10 +1393,11 @@ impl StoreEngine for Store { storage_root: H256, state_root: H256, ) -> Result { + // FIXME: use a DB snapshot here let db = Box::new(RocksDBTrieDB::new(self.db.clone(), CF_TRIE_NODES, None)?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.clone(), + inner: self.trie_cache.lock().unwrap().clone(), db, prefix: Some(hashed_address), }); @@ -1359,10 +1405,11 @@ impl StoreEngine for Store { } fn open_state_trie(&self, state_root: H256) -> Result { + // FIXME: use a DB snapshot here let db = Box::new(RocksDBTrieDB::new(self.db.clone(), CF_TRIE_NODES, None)?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.clone(), + inner: self.trie_cache.lock().unwrap().clone(), db, prefix: None, }); From fd10649fb9bd4fdfc7d0a22c75b72ac00db3999a Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Wed, 22 Oct 2025 16:10:22 +0200 Subject: [PATCH 03/31] fixes --- crates/storage/store_db/in_memory.rs | 37 +++++++++-------- crates/storage/store_db/rocksdb.rs | 52 ++++++++++++++++------- crates/storage/trie_db/layering.rs | 62 ++++++++++++++-------------- 3 files changed, 85 insertions(+), 66 deletions(-) diff --git a/crates/storage/store_db/in_memory.rs b/crates/storage/store_db/in_memory.rs index ae47add0e0f..6af558f848b 100644 --- a/crates/storage/store_db/in_memory.rs +++ b/crates/storage/store_db/in_memory.rs @@ -15,7 +15,7 @@ use ethrex_trie::{InMemoryTrieDB, Nibbles, Trie, db::NodeMap}; use std::{ collections::HashMap, fmt::Debug, - sync::{Arc, Mutex, MutexGuard, RwLock}, + sync::{Arc, Mutex, MutexGuard}, }; // NOTE: we use a different commit threshold than rocksdb since tests @@ -39,7 +39,7 @@ pub struct StoreInner { // Maps transaction hashes to their blocks (height+hash) and index within the blocks. transaction_locations: HashMap>, receipts: HashMap>, - trie_cache: Arc>, + trie_cache: Arc, // Contains account trie nodes state_trie_nodes: NodeMap, pending_blocks: HashMap, @@ -92,10 +92,7 @@ impl StoreEngine for Store { // Store trie updates { - let mut trie = store - .trie_cache - .write() - .map_err(|_| StoreError::LockError)?; + let mut trie = TrieLayerCache::clone(&store.trie_cache); let parent = update_batch .blocks .first() @@ -116,21 +113,24 @@ impl StoreEngine for Store { .header .state_root; - let mut state_trie = store - .state_trie_nodes - .lock() - .map_err(|_| StoreError::LockError)?; - - if let Some(root) = trie.get_commitable(pre_state_root, COMMIT_THRESHOLD) { - let nodes = trie.commit(root).unwrap_or_default(); - for (key, value) in nodes { - if value.is_empty() { - state_trie.remove(&key); - } else { - state_trie.insert(key, value); + { + let mut state_trie = store + .state_trie_nodes + .lock() + .map_err(|_| StoreError::LockError)?; + + if let Some(root) = trie.get_commitable(pre_state_root, COMMIT_THRESHOLD) { + let nodes = trie.commit(root).unwrap_or_default(); + for (key, value) in nodes { + if value.is_empty() { + state_trie.remove(&key); + } else { + state_trie.insert(key, value); + } } } } + let key_values = update_batch .storage_updates .into_iter() @@ -142,6 +142,7 @@ impl StoreEngine for Store { .chain(update_batch.account_updates) .collect(); trie.put_batch(pre_state_root, last_state_root, key_values); + store.trie_cache = Arc::new(trie); } for block in update_batch.blocks { diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index b427583f5cf..70bedaa3d47 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -23,7 +23,7 @@ use std::{ mem::take, path::Path, sync::{ - Arc, Mutex, RwLock, + Arc, Mutex, mpsc::{SyncSender, sync_channel}, }, }; @@ -117,6 +117,16 @@ pub const CF_FLATKEYVALUE: &str = "flatkeyvalue"; pub const CF_MISC_VALUES: &str = "misc_values"; +pub type StorageUpdates = Vec<(H256, Vec<(Nibbles, Vec)>)>; + +pub type TriedUpdateWorkerTx = std::sync::mpsc::SyncSender<( + std::sync::mpsc::SyncSender>, + H256, + H256, + Vec<(Nibbles, Vec)>, + Vec<(H256, Vec<(Nibbles, Vec)>)>, +)>; + /// Control messages for the FlatKeyValue generator #[derive(Debug, PartialEq)] enum FKVGeneratorControlMessage { @@ -129,13 +139,7 @@ pub struct Store { db: Arc>, trie_cache: Arc>>, flatkeyvalue_control_tx: std::sync::mpsc::SyncSender, - trie_update_worker_tx: std::sync::mpsc::SyncSender<( - std::sync::mpsc::SyncSender>, - H256, - H256, - Vec<(Nibbles, Vec)>, - Vec<(H256, Vec<(Nibbles, Vec)>)>, - )>, + trie_update_worker_tx: TriedUpdateWorkerTx, } impl Store { @@ -652,7 +656,7 @@ impl Store { parent_state_root: H256, child_state_root: H256, account_updates: Vec<(Nibbles, Vec)>, - storage_updates: Vec<(H256, Vec<(Nibbles, Vec)>)>, + storage_updates: StorageUpdates, ) -> Result<(), StoreError> { let db = &*self.db; let fkv_ctl = &self.flatkeyvalue_control_tx; @@ -673,7 +677,7 @@ impl Store { .lock() .map_err(|_| StoreError::LockError)? .clone(); - let mut trie_mut = (&*trie).clone(); + let mut trie_mut = (*trie).clone(); trie_mut.put_batch(parent_state_root, child_state_root, new_layer); *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); // Update finished, signal block production. @@ -693,7 +697,7 @@ impl Store { let _ = fkv_ctl.send(FKVGeneratorControlMessage::Stop); // RCU to remove the bottom layer: update step needs to happen after disk layer is updated. - let mut trie_mut = (&*trie).clone(); + let mut trie_mut = (*trie).clone(); let mut batch = WriteBatch::default(); let [cf_trie_nodes, cf_flatkeyvalue, cf_misc] = open_cfs(db, [CF_TRIE_NODES, CF_FLATKEYVALUE, CF_MISC_VALUES])?; @@ -841,7 +845,7 @@ impl StoreEngine for Store { // Wait for an updated top layer so every caller afterwards sees a consistent view. // Specifically, the next block produced MUST see this upper layer. rx.recv() - .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))?; + .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))??; } // After top-level is addded, we can make the rest of the changes visible. db.write(batch) @@ -1397,7 +1401,11 @@ impl StoreEngine for Store { let db = Box::new(RocksDBTrieDB::new(self.db.clone(), CF_TRIE_NODES, None)?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.lock().unwrap().clone(), + inner: self + .trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(), db, prefix: Some(hashed_address), }); @@ -1409,7 +1417,11 @@ impl StoreEngine for Store { let db = Box::new(RocksDBTrieDB::new(self.db.clone(), CF_TRIE_NODES, None)?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.lock().unwrap().clone(), + inner: self + .trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(), db, prefix: None, }); @@ -1442,7 +1454,11 @@ impl StoreEngine for Store { )?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.clone(), + inner: self + .trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(), db, prefix: None, }); @@ -1462,7 +1478,11 @@ impl StoreEngine for Store { )?); let wrap_db = Box::new(TrieWrapper { state_root, - inner: self.trie_cache.clone(), + inner: self + .trie_cache + .lock() + .map_err(|_| StoreError::LockError)? + .clone(), db, prefix: Some(hashed_address), }); diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index bd527ea63ea..f9cf6377eb8 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -1,15 +1,12 @@ use ethrex_common::H256; use ethrex_rlp::decode::RLPDecode; -use std::{ - collections::BTreeMap, - sync::{Arc, RwLock}, -}; +use std::{collections::BTreeMap, sync::Arc}; use ethrex_trie::{EMPTY_TRIE_HASH, Nibbles, Node, TrieDB, TrieError}; -#[derive(Debug)] +#[derive(Debug, Clone)] struct TrieLayer { - nodes: BTreeMap, Vec>, + nodes: Arc, Vec>>, parent: H256, id: usize, } @@ -68,26 +65,32 @@ impl TrieLayerCache { tracing::error!("Inconsistent state: parent == state_root but key_values not empty"); return; } - self.layers - .entry(state_root) - .or_insert_with(|| { - self.last_id += 1; - TrieLayer { - nodes: Arc::new(BTreeMap::new()), - parent, - id: self.last_id, - } - }) - .nodes - .extend( - key_values - .into_iter() - .map(|(path, node)| (path.into_vec(), node)), - ); + + let mut entry = if let Some(entry) = self.layers.get(&state_root) { + TrieLayer::clone(entry) + } else { + TrieLayer { + nodes: Arc::new(BTreeMap::new()), + parent, + id: self.last_id, + } + }; + + let mut nodes = (*entry.nodes).clone(); + nodes.extend( + key_values + .into_iter() + .map(|(path, node)| (path.into_vec(), node)), + ); + entry.nodes = Arc::new(nodes); + self.layers.insert(state_root, Arc::new(entry)); } pub fn commit(&mut self, state_root: H256) -> Option, Vec)>> { - let mut layer = self.layers.remove(&state_root)?; + let layer = match Arc::try_unwrap(self.layers.remove(&state_root)?) { + Ok(layer) => layer, + Err(layer) => TrieLayer::clone(&layer), + }; // ensure parents are commited let parent_nodes = self.commit(layer.parent); // older layers are useless @@ -96,7 +99,7 @@ impl TrieLayerCache { parent_nodes .unwrap_or_default() .into_iter() - .chain(layer.nodes.drain()) + .chain(layer.nodes.as_ref().clone()) .collect(), ) } @@ -104,7 +107,7 @@ impl TrieLayerCache { pub struct TrieWrapper { pub state_root: H256, - pub inner: Arc>, + pub inner: Arc, pub db: Box, pub prefix: Option, } @@ -127,12 +130,7 @@ impl TrieDB for TrieWrapper { } fn get(&self, key: Nibbles) -> Result>, TrieError> { let key = apply_prefix(self.prefix, key); - if let Some(value) = self - .inner - .read() - .map_err(|_| TrieError::LockError)? - .get(self.state_root, key.clone()) - { + if let Some(value) = self.inner.get(self.state_root, key.clone()) { return Ok(Some(value)); } self.db.get(key) @@ -148,7 +146,7 @@ impl TrieDB for TrieWrapper { } None => *EMPTY_TRIE_HASH, }; - let mut inner = self.inner.write().map_err(|_| TrieError::LockError)?; + let mut inner = TrieLayerCache::clone(&self.inner); inner.put_batch( self.state_root, new_state_root, From be1cbd1aa410acad743c04e839e0f1e1fda3dc8c Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 22 Oct 2025 15:42:30 -0300 Subject: [PATCH 04/31] Send continue message after db write --- crates/storage/store_db/rocksdb.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 70bedaa3d47..0521fbb12e7 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -722,7 +722,10 @@ impl Store { batch.put_cf(cf, key, value); } } - db.write(batch)?; + let result = db.write(batch); + // We want to send this message even if there was an error during the batch write + let _ = fkv_ctl.send(FKVGeneratorControlMessage::Continue); + result?; // Phase 3: update diff layers with the removal of bottom layer. *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); Ok(()) From bf8dc6172c0a5176fbd6f3ad20f0477513f5db38 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 22 Oct 2025 16:18:10 -0300 Subject: [PATCH 05/31] revert btreemap --- crates/storage/trie_db/layering.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index f9cf6377eb8..a1b672057c3 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -1,12 +1,12 @@ use ethrex_common::H256; use ethrex_rlp::decode::RLPDecode; -use std::{collections::BTreeMap, sync::Arc}; +use std::{collections::HashMap, sync::Arc}; use ethrex_trie::{EMPTY_TRIE_HASH, Nibbles, Node, TrieDB, TrieError}; #[derive(Debug, Clone)] struct TrieLayer { - nodes: Arc, Vec>>, + nodes: Arc, Vec>>, parent: H256, id: usize, } @@ -16,7 +16,7 @@ pub struct TrieLayerCache { /// Monotonically increasing ID for layers, starting at 1. /// TODO: this implementation panics on overflow last_id: usize, - layers: BTreeMap>, + layers: HashMap>, } impl TrieLayerCache { @@ -70,7 +70,7 @@ impl TrieLayerCache { TrieLayer::clone(entry) } else { TrieLayer { - nodes: Arc::new(BTreeMap::new()), + nodes: Arc::new(HashMap::new()), parent, id: self.last_id, } From e51845249d6fb7ce26ee0f51af2c12a17c0168cd Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 22 Oct 2025 18:00:54 -0300 Subject: [PATCH 06/31] unconditionally notify about new diff layer --- crates/storage/store_db/rocksdb.rs | 46 +++++++++++++----------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 0521fbb12e7..713c4061413 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -783,26 +783,21 @@ impl StoreEngine for Store { take(&mut update_batch.account_updates), take(&mut update_batch.storage_updates), ); - let mut wait_for_new_layer = None; - let need_new_layer = !account_updates.is_empty() || !storage_updates.is_empty(); - if need_new_layer { - // Capacity one ensures sender just notifies and goes on - let (notify_tx, notify_rx) = sync_channel(1); - wait_for_new_layer = Some(notify_rx); - trie_upd_worker_tx - .send(( - notify_tx, - parent_state_root, - last_state_root, - account_updates, - storage_updates, - )) - .map_err(|e| { - StoreError::Custom(format!( - "failed to read new trie layer notification: {e}" - )) - })?; - } + + // Capacity one ensures sender just notifies and goes on + let (notify_tx, notify_rx) = sync_channel(1); + let wait_for_new_layer = notify_rx; + trie_upd_worker_tx + .send(( + notify_tx, + parent_state_root, + last_state_root, + account_updates, + storage_updates, + )) + .map_err(|e| { + StoreError::Custom(format!("failed to read new trie layer notification: {e}")) + })?; for block in update_batch.blocks { let block_number = block.header.number; @@ -844,12 +839,11 @@ impl StoreEngine for Store { batch.put_cf(&cf_codes, code_key, code_value); } - if let Some(rx) = wait_for_new_layer { - // Wait for an updated top layer so every caller afterwards sees a consistent view. - // Specifically, the next block produced MUST see this upper layer. - rx.recv() - .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))??; - } + // Wait for an updated top layer so every caller afterwards sees a consistent view. + // Specifically, the next block produced MUST see this upper layer. + wait_for_new_layer + .recv() + .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))??; // After top-level is addded, we can make the rest of the changes visible. db.write(batch) .map_err(|e| StoreError::Custom(format!("RocksDB batch write error: {}", e))) From ef7a1087532db13f66fb14b7ff75d6663df3a9aa Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 22 Oct 2025 18:19:03 -0300 Subject: [PATCH 07/31] change trie update channel to have bound 0 instead of 1 --- crates/storage/store_db/rocksdb.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 713c4061413..8090f83e510 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -339,7 +339,7 @@ impl Store { } } let (fkv_tx, fkv_rx) = std::sync::mpsc::sync_channel(0); - let (trie_upd_tx, trie_upd_rx) = std::sync::mpsc::sync_channel(1); + let (trie_upd_tx, trie_upd_rx) = std::sync::mpsc::sync_channel(0); let store = Self { db: Arc::new(db), From 0b5d5355717118cdbd5196552ee9af98d04dcbd2 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 22 Oct 2025 19:14:06 -0300 Subject: [PATCH 08/31] Test sending ok afterwards --- crates/storage/store_db/rocksdb.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 8090f83e510..3201dd27073 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -681,7 +681,7 @@ impl Store { trie_mut.put_batch(parent_state_root, child_state_root, new_layer); *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); // Update finished, signal block production. - notify.send(Ok(())).map_err(|_| StoreError::LockError)?; + // notify.send(Ok(())).map_err(|_| StoreError::LockError)?; // Phase 2: update disk layer. let trie = trie_cache @@ -728,6 +728,8 @@ impl Store { result?; // Phase 3: update diff layers with the removal of bottom layer. *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); + + notify.send(Ok(())).map_err(|_| StoreError::LockError)?; Ok(()) } } From 3e686921cc5c626ee812e5be29c19207a93c019f Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Wed, 22 Oct 2025 19:28:02 -0300 Subject: [PATCH 09/31] fix --- crates/storage/store_db/rocksdb.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 3201dd27073..0eac4dcea72 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -690,6 +690,7 @@ impl Store { .clone(); let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) else { // Nothing to commit to disk, move on. + notify.send(Ok(())).map_err(|_| StoreError::LockError)?; return Ok(()); }; // Stop the flat-key-value generator thread, as the underlying trie is about to change. From 29bf987a45e6574e409806bc015ecdae15f15e8b Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 22 Oct 2025 20:18:52 -0300 Subject: [PATCH 10/31] fix id increment + disallow modify --- crates/storage/trie_db/layering.rs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index a1b672057c3..dd6d867df0c 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -65,24 +65,20 @@ impl TrieLayerCache { tracing::error!("Inconsistent state: parent == state_root but key_values not empty"); return; } + if self.layers.contains_key(&state_root) { + return; + } - let mut entry = if let Some(entry) = self.layers.get(&state_root) { - TrieLayer::clone(entry) - } else { - TrieLayer { - nodes: Arc::new(HashMap::new()), - parent, - id: self.last_id, - } - }; - - let mut nodes = (*entry.nodes).clone(); - nodes.extend( + let nodes = HashMap::from_iter( key_values .into_iter() .map(|(path, node)| (path.into_vec(), node)), ); - entry.nodes = Arc::new(nodes); + let entry = TrieLayer { + nodes: Arc::new(nodes), + parent, + id: self.last_id + 1, + }; self.layers.insert(state_root, Arc::new(entry)); } From e41963b3abe6fabb0ceef1eaf8450b5b50cbbdf8 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 22 Oct 2025 20:20:40 -0300 Subject: [PATCH 11/31] actually update last_id --- crates/storage/trie_db/layering.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index dd6d867df0c..77bce9d82d8 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -74,10 +74,11 @@ impl TrieLayerCache { .into_iter() .map(|(path, node)| (path.into_vec(), node)), ); + self.last_id += 1; let entry = TrieLayer { nodes: Arc::new(nodes), parent, - id: self.last_id + 1, + id: self.last_id, }; self.layers.insert(state_root, Arc::new(entry)); } From 6b3c8b9c7d1e64ce7b3dff9e4279616e978173d7 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 22 Oct 2025 20:21:06 -0300 Subject: [PATCH 12/31] Revert "fix" This reverts commit 3e686921cc5c626ee812e5be29c19207a93c019f. --- crates/storage/store_db/rocksdb.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 0eac4dcea72..3201dd27073 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -690,7 +690,6 @@ impl Store { .clone(); let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) else { // Nothing to commit to disk, move on. - notify.send(Ok(())).map_err(|_| StoreError::LockError)?; return Ok(()); }; // Stop the flat-key-value generator thread, as the underlying trie is about to change. From 49e47ee1a93af6249a2795d7cb4b81b8a37a687e Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 22 Oct 2025 20:21:22 -0300 Subject: [PATCH 13/31] Revert "Test sending ok afterwards" This reverts commit 0b5d5355717118cdbd5196552ee9af98d04dcbd2. --- crates/storage/store_db/rocksdb.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 3201dd27073..8090f83e510 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -681,7 +681,7 @@ impl Store { trie_mut.put_batch(parent_state_root, child_state_root, new_layer); *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); // Update finished, signal block production. - // notify.send(Ok(())).map_err(|_| StoreError::LockError)?; + notify.send(Ok(())).map_err(|_| StoreError::LockError)?; // Phase 2: update disk layer. let trie = trie_cache @@ -728,8 +728,6 @@ impl Store { result?; // Phase 3: update diff layers with the removal of bottom layer. *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); - - notify.send(Ok(())).map_err(|_| StoreError::LockError)?; Ok(()) } } From ab7c5a8d8c1bdb4e3529c3840da31f1f1a57d89f Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 15:40:02 -0300 Subject: [PATCH 14/31] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac73eb9a2fb..04064470385 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Perf +### 2025-10-23 + +- Move trie updates post block execution to a background thread. [#4989](https://github.com/lambdaclass/ethrex/pull/4989). + ### 2025-10-17 - Replaces incremental iteration with a one-time precompute method that scans the entire bytecode, building a `BitVec` where bits mark valid `JUMPDEST` positions, skipping `PUSH1..PUSH32` data bytes. From c9055747480977430175ea34f58f0af8ce092fdd Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 15:52:56 -0300 Subject: [PATCH 15/31] Update prover cargo lock files --- .../src/guest_program/src/risc0/Cargo.lock | 320 +++++++++++++++-- .../src/guest_program/src/sp1/Cargo.lock | 328 ++++++++++++++++-- 2 files changed, 586 insertions(+), 62 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index e40a125d9ce..4a682644f96 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -34,7 +34,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "once_cell", "version_check", "zerocopy", @@ -370,7 +370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.3", "libc", "miniz_oxide", "object", @@ -478,7 +478,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if", + "cfg-if 1.0.3", "constant_time_eq", ] @@ -646,6 +646,12 @@ dependencies = [ "shlex", ] +[[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.3" @@ -808,7 +814,21 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", +] + +[[package]] +name = "crossbeam" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-channel 0.4.4", + "crossbeam-deque 0.7.4", + "crossbeam-epoch 0.8.2", + "crossbeam-queue 0.2.3", + "crossbeam-utils 0.7.2", ] [[package]] @@ -817,11 +837,21 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", + "crossbeam-channel 0.5.15", + "crossbeam-deque 0.8.6", + "crossbeam-epoch 0.9.18", + "crossbeam-queue 0.3.12", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -830,7 +860,18 @@ version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch 0.8.2", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -839,8 +880,23 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-epoch 0.9.18", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard", ] [[package]] @@ -849,7 +905,18 @@ version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -858,7 +925,18 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] @@ -1327,6 +1405,7 @@ dependencies = [ "serde", "serde_json", "sha3", + "spawned-concurrency", "thiserror", "tracing", ] @@ -1335,7 +1414,7 @@ dependencies = [ name = "ethrex-threadpool" version = "0.1.0" dependencies = [ - "crossbeam", + "crossbeam 0.8.4", ] [[package]] @@ -1344,7 +1423,7 @@ version = "5.0.0" dependencies = [ "anyhow", "bytes", - "crossbeam", + "crossbeam 0.8.4", "digest", "ethereum-types", "ethrex-rlp", @@ -1492,12 +1571,54 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + [[package]] name = "futures-core" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + [[package]] name = "futures-macro" version = "0.3.31" @@ -1527,9 +1648,13 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1558,7 +1683,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "libc", "wasi 0.11.1+wasi-snapshot-preview1", ] @@ -1569,7 +1694,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "libc", "r-efi", "wasi 0.14.4+wasi-0.2.4", @@ -1887,7 +2012,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ "bitflags 2.9.4", - "cfg-if", + "cfg-if 1.0.3", "libc", ] @@ -1945,7 +2070,7 @@ name = "k256" version = "0.13.4" source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256%2Fv0.13.4-risczero.0#f913b0aa4646e85d4a2095742ce86abf25bb1354" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "ecdsa", "elliptic-curve", "once_cell", @@ -2038,6 +2163,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.28" @@ -2108,12 +2242,27 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + [[package]] name = "memchr" version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg", +] + [[package]] name = "merlin" version = "3.0.0" @@ -2464,6 +2613,29 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if 1.0.3", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.0", +] + [[package]] name = "paste" version = "1.0.15" @@ -2727,8 +2899,17 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "crossbeam-deque 0.8.6", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.9.4", ] [[package]] @@ -2919,7 +3100,7 @@ dependencies = [ "blake2", "borsh", "bytemuck", - "cfg-if", + "cfg-if 1.0.3", "digest", "hex", "hex-literal", @@ -2969,7 +3150,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", - "cfg-if", + "cfg-if 1.0.3", "getrandom 0.2.16", "getrandom 0.3.3", "libm", @@ -3116,6 +3297,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "sec1" version = "0.7.3" @@ -3237,7 +3424,7 @@ name = "sha2" version = "0.10.8" source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.8-risczero.0#244dc3b08788f7a4ccce14c66896ae3b4f24c166" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "cpufeatures", "digest", ] @@ -3267,6 +3454,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -3301,6 +3497,16 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "sp1-lib" version = "5.2.1" @@ -3320,7 +3526,7 @@ checksum = "dddd8d022840c1c500e0d7f82e9b9cf080b7dabd469f06b394010e6a594f692b" dependencies = [ "bincode", "blake3", - "cfg-if", + "cfg-if 1.0.3", "hex", "lazy_static", "num-bigint 0.4.6", @@ -3338,7 +3544,7 @@ version = "0.8.0-sp1-5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "ff", "group", "pairing", @@ -3347,6 +3553,33 @@ dependencies = [ "subtle", ] +[[package]] +name = "spawned-concurrency" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d99b97ba5429336b6fa8b6e8ecbe09a1c7324f8b9fa63a11262dbd3a44e577b" +dependencies = [ + "futures", + "pin-project-lite", + "spawned-rt", + "thiserror", + "tracing", +] + +[[package]] +name = "spawned-rt" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d58e8d7224fbcd3dbc39f7bacf958ae0882c95b5431353445be5a86b80cedcaf" +dependencies = [ + "crossbeam 0.7.3", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "tracing-subscriber 0.3.20", +] + [[package]] name = "spin" version = "0.9.8" @@ -3483,7 +3716,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", ] [[package]] @@ -3566,11 +3799,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", + "bytes", "io-uring", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "slab", + "socket2", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", ] [[package]] @@ -3794,7 +4056,7 @@ version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "once_cell", "rustversion", "wasm-bindgen-macro", diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index 916487d932d..8bfb56fabfa 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -34,7 +34,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "once_cell", "version_check", "zerocopy", @@ -280,7 +280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.3", "libc", "miniz_oxide", "object", @@ -379,7 +379,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if", + "cfg-if 1.0.3", "constant_time_eq", ] @@ -397,7 +397,7 @@ name = "bls12_381" version = "0.8.0" source = "git+https://github.com/lambdaclass/bls12_381-patch/?branch=expose-fp-struct#f2242f78b2b5fc10d9168a810c04ab8728ac6804" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "digest", "ff", "group", @@ -494,6 +494,12 @@ dependencies = [ "shlex", ] +[[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.3" @@ -626,7 +632,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", ] [[package]] @@ -635,17 +641,41 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-channel 0.4.4", + "crossbeam-deque 0.7.4", + "crossbeam-epoch 0.8.2", + "crossbeam-queue 0.2.3", + "crossbeam-utils 0.7.2", +] + [[package]] name = "crossbeam" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", + "crossbeam-channel 0.5.15", + "crossbeam-deque 0.8.6", + "crossbeam-epoch 0.9.18", + "crossbeam-queue 0.3.12", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -654,7 +684,18 @@ version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch 0.8.2", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -663,8 +704,23 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-epoch 0.9.18", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard", ] [[package]] @@ -673,7 +729,18 @@ version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] @@ -682,7 +749,18 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] @@ -1106,6 +1184,7 @@ dependencies = [ "serde", "serde_json", "sha3", + "spawned-concurrency", "thiserror", "tracing", ] @@ -1114,7 +1193,7 @@ dependencies = [ name = "ethrex-threadpool" version = "0.1.0" dependencies = [ - "crossbeam", + "crossbeam 0.8.4", ] [[package]] @@ -1123,7 +1202,7 @@ version = "5.0.0" dependencies = [ "anyhow", "bytes", - "crossbeam", + "crossbeam 0.8.4", "digest", "ethereum-types", "ethrex-rlp", @@ -1244,12 +1323,54 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + [[package]] name = "futures-core" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + [[package]] name = "futures-macro" version = "0.3.31" @@ -1279,9 +1400,13 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1310,7 +1435,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "libc", "wasi 0.11.1+wasi-snapshot-preview1", ] @@ -1321,7 +1446,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "libc", "r-efi", "wasi 0.14.7+wasi-0.2.4", @@ -1631,7 +1756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.3", "libc", ] @@ -1689,7 +1814,7 @@ name = "k256" version = "0.13.4" source = "git+https://github.com/sp1-patches/elliptic-curves?tag=patch-k256-13.4-sp1-5.0.0#f7d8998e05d8cbcbd8e543eba1030a7385011fa8" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "ecdsa", "elliptic-curve", "hex", @@ -1790,6 +1915,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.28" @@ -1851,12 +1985,27 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + [[package]] name = "memchr" version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2134,6 +2283,29 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if 1.0.3", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + [[package]] name = "paste" version = "1.0.15" @@ -2336,8 +2508,17 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "crossbeam-deque 0.8.6", + "crossbeam-utils 0.8.21", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", ] [[package]] @@ -2450,7 +2631,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222fb240c3286247ecdee6fa5341e7cdad0ffdf8e7e401d9937f2d58482a20bf" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "const-default", "libc", "svgbobdoc", @@ -2522,6 +2703,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "sec1" version = "0.7.3" @@ -2542,7 +2729,7 @@ version = "0.30.0" source = "git+https://github.com/sp1-patches/rust-secp256k1?tag=patch-0.30.0-sp1-5.0.0#04d87db04bcc2dc5dd8e1ab3f046cc655440d07a" dependencies = [ "bitcoin_hashes", - "cfg-if", + "cfg-if 1.0.3", "k256", "rand", "secp256k1-sys", @@ -2644,7 +2831,7 @@ name = "sha2" version = "0.10.8" source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.8-sp1-4.0.0#1f224388fdede7cef649bce0d63876d1a9e3f515" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "cpufeatures", "digest", ] @@ -2673,6 +2860,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -2707,6 +2903,16 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "sp1-lib" version = "5.2.2" @@ -2727,7 +2933,7 @@ checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" dependencies = [ "bincode", "blake3", - "cfg-if", + "cfg-if 1.0.3", "hex", "lazy_static", "num-bigint 0.4.6", @@ -2745,7 +2951,7 @@ version = "5.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d36441aa04268afe6684b4eca1726599bcb64892cbbe376dafc77c87f5e5fd0" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "critical-section", "embedded-alloc", "getrandom 0.2.16", @@ -2764,7 +2970,7 @@ version = "0.8.0-sp1-5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "ff", "group", "pairing", @@ -2773,6 +2979,33 @@ dependencies = [ "subtle", ] +[[package]] +name = "spawned-concurrency" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d99b97ba5429336b6fa8b6e8ecbe09a1c7324f8b9fa63a11262dbd3a44e577b" +dependencies = [ + "futures", + "pin-project-lite", + "spawned-rt", + "thiserror", + "tracing", +] + +[[package]] +name = "spawned-rt" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d58e8d7224fbcd3dbc39f7bacf958ae0882c95b5431353445be5a86b80cedcaf" +dependencies = [ + "crossbeam 0.7.3", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "tracing-subscriber", +] + [[package]] name = "spin" version = "0.9.8" @@ -2835,7 +3068,7 @@ source = "git+https://github.com/sp1-patches/bn?tag=patch-0.6.0-sp1-5.0.0#e0d67f dependencies = [ "bytemuck", "byteorder", - "cfg-if", + "cfg-if 1.0.3", "crunchy", "lazy_static", "num-bigint 0.4.6", @@ -2928,7 +3161,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", ] [[package]] @@ -2967,7 +3200,7 @@ name = "tiny-keccak" version = "2.0.2" source = "git+https://github.com/sp1-patches/tiny-keccak?tag=patch-2.0.2-sp1-4.0.0#d2ffd330259c8f290b07d99cc1ef1f74774382c2" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "crunchy", ] @@ -3003,11 +3236,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", + "bytes", "io-uring", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "slab", + "socket2", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", ] [[package]] @@ -3244,7 +3506,7 @@ version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ - "cfg-if", + "cfg-if 1.0.3", "once_cell", "rustversion", "wasm-bindgen-macro", From 693c94dad401ad326971d46b7c5e9a2cd7e82256 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 16:30:07 -0300 Subject: [PATCH 16/31] Remove unneeded spawned concurrency dependency --- Cargo.lock | 1 - crates/storage/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 991255007bb..d25c100d4bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4064,7 +4064,6 @@ dependencies = [ "serde", "serde_json", "sha3", - "spawned-concurrency", "tempfile", "thiserror 2.0.17", "tokio", diff --git a/crates/storage/Cargo.toml b/crates/storage/Cargo.toml index c5c76068846..508ee5866b7 100644 --- a/crates/storage/Cargo.toml +++ b/crates/storage/Cargo.toml @@ -23,7 +23,6 @@ hex.workspace = true serde = { version = "1.0.203", features = ["derive"] } serde_json = "1.0.117" rocksdb = { workspace = true, optional = true } -spawned-concurrency.workspace = true tokio = { workspace = true, optional = true, features = ["rt"] } bincode = "1.3.3" From 65cd9a7b101ab4a34a69debc59658ab823fbc61c Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 16:30:21 -0300 Subject: [PATCH 17/31] Revert "Update prover cargo lock files" This reverts commit c9055747480977430175ea34f58f0af8ce092fdd. --- .../src/guest_program/src/risc0/Cargo.lock | 320 ++--------------- .../src/guest_program/src/sp1/Cargo.lock | 328 ++---------------- 2 files changed, 62 insertions(+), 586 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index 4a682644f96..e40a125d9ce 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -34,7 +34,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "once_cell", "version_check", "zerocopy", @@ -370,7 +370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if 1.0.3", + "cfg-if", "libc", "miniz_oxide", "object", @@ -478,7 +478,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if 1.0.3", + "cfg-if", "constant_time_eq", ] @@ -646,12 +646,6 @@ dependencies = [ "shlex", ] -[[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.3" @@ -814,21 +808,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if 1.0.3", -] - -[[package]] -name = "crossbeam" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-channel 0.4.4", - "crossbeam-deque 0.7.4", - "crossbeam-epoch 0.8.2", - "crossbeam-queue 0.2.3", - "crossbeam-utils 0.7.2", + "cfg-if", ] [[package]] @@ -837,21 +817,11 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "crossbeam-channel 0.5.15", - "crossbeam-deque 0.8.6", - "crossbeam-epoch 0.9.18", - "crossbeam-queue 0.3.12", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", ] [[package]] @@ -860,18 +830,7 @@ version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -880,23 +839,8 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "crossbeam-epoch 0.9.18", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset", - "scopeguard", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] @@ -905,18 +849,7 @@ version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -925,18 +858,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", + "crossbeam-utils", ] [[package]] @@ -1405,7 +1327,6 @@ dependencies = [ "serde", "serde_json", "sha3", - "spawned-concurrency", "thiserror", "tracing", ] @@ -1414,7 +1335,7 @@ dependencies = [ name = "ethrex-threadpool" version = "0.1.0" dependencies = [ - "crossbeam 0.8.4", + "crossbeam", ] [[package]] @@ -1423,7 +1344,7 @@ version = "5.0.0" dependencies = [ "anyhow", "bytes", - "crossbeam 0.8.4", + "crossbeam", "digest", "ethereum-types", "ethrex-rlp", @@ -1571,54 +1492,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - [[package]] name = "futures-core" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - [[package]] name = "futures-macro" version = "0.3.31" @@ -1648,13 +1527,9 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1683,7 +1558,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "libc", "wasi 0.11.1+wasi-snapshot-preview1", ] @@ -1694,7 +1569,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "libc", "r-efi", "wasi 0.14.4+wasi-0.2.4", @@ -2012,7 +1887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ "bitflags 2.9.4", - "cfg-if 1.0.3", + "cfg-if", "libc", ] @@ -2070,7 +1945,7 @@ name = "k256" version = "0.13.4" source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256%2Fv0.13.4-risczero.0#f913b0aa4646e85d4a2095742ce86abf25bb1354" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "ecdsa", "elliptic-curve", "once_cell", @@ -2163,15 +2038,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - [[package]] name = "log" version = "0.4.28" @@ -2242,27 +2108,12 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - [[package]] name = "merlin" version = "3.0.0" @@ -2613,29 +2464,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if 1.0.3", - "libc", - "redox_syscall", - "smallvec", - "windows-link 0.2.0", -] - [[package]] name = "paste" version = "1.0.15" @@ -2899,17 +2727,8 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ - "crossbeam-deque 0.8.6", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.9.4", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] @@ -3100,7 +2919,7 @@ dependencies = [ "blake2", "borsh", "bytemuck", - "cfg-if 1.0.3", + "cfg-if", "digest", "hex", "hex-literal", @@ -3150,7 +2969,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", - "cfg-if 1.0.3", + "cfg-if", "getrandom 0.2.16", "getrandom 0.3.3", "libm", @@ -3297,12 +3116,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "sec1" version = "0.7.3" @@ -3424,7 +3237,7 @@ name = "sha2" version = "0.10.8" source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.8-risczero.0#244dc3b08788f7a4ccce14c66896ae3b4f24c166" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "cpufeatures", "digest", ] @@ -3454,15 +3267,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signal-hook-registry" -version = "1.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" -dependencies = [ - "libc", -] - [[package]] name = "signature" version = "2.2.0" @@ -3497,16 +3301,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" -[[package]] -name = "socket2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - [[package]] name = "sp1-lib" version = "5.2.1" @@ -3526,7 +3320,7 @@ checksum = "dddd8d022840c1c500e0d7f82e9b9cf080b7dabd469f06b394010e6a594f692b" dependencies = [ "bincode", "blake3", - "cfg-if 1.0.3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -3544,7 +3338,7 @@ version = "0.8.0-sp1-5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "ff", "group", "pairing", @@ -3553,33 +3347,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "spawned-concurrency" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d99b97ba5429336b6fa8b6e8ecbe09a1c7324f8b9fa63a11262dbd3a44e577b" -dependencies = [ - "futures", - "pin-project-lite", - "spawned-rt", - "thiserror", - "tracing", -] - -[[package]] -name = "spawned-rt" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58e8d7224fbcd3dbc39f7bacf958ae0882c95b5431353445be5a86b80cedcaf" -dependencies = [ - "crossbeam 0.7.3", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", - "tracing-subscriber 0.3.20", -] - [[package]] name = "spin" version = "0.9.8" @@ -3716,7 +3483,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", ] [[package]] @@ -3799,40 +3566,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", - "bytes", "io-uring", "libc", "mio", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "slab", - "socket2", - "tokio-macros", - "windows-sys 0.59.0", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", ] [[package]] @@ -4056,7 +3794,7 @@ version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index 8bfb56fabfa..916487d932d 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -34,7 +34,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "once_cell", "version_check", "zerocopy", @@ -280,7 +280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", - "cfg-if 1.0.3", + "cfg-if", "libc", "miniz_oxide", "object", @@ -379,7 +379,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if 1.0.3", + "cfg-if", "constant_time_eq", ] @@ -397,7 +397,7 @@ name = "bls12_381" version = "0.8.0" source = "git+https://github.com/lambdaclass/bls12_381-patch/?branch=expose-fp-struct#f2242f78b2b5fc10d9168a810c04ab8728ac6804" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "digest", "ff", "group", @@ -494,12 +494,6 @@ dependencies = [ "shlex", ] -[[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.3" @@ -632,7 +626,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", ] [[package]] @@ -641,41 +635,17 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" -[[package]] -name = "crossbeam" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-channel 0.4.4", - "crossbeam-deque 0.7.4", - "crossbeam-epoch 0.8.2", - "crossbeam-queue 0.2.3", - "crossbeam-utils 0.7.2", -] - [[package]] name = "crossbeam" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "crossbeam-channel 0.5.15", - "crossbeam-deque 0.8.6", - "crossbeam-epoch 0.9.18", - "crossbeam-queue 0.3.12", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", ] [[package]] @@ -684,18 +654,7 @@ version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -704,23 +663,8 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "crossbeam-epoch 0.9.18", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset", - "scopeguard", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] @@ -729,18 +673,7 @@ version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -749,18 +682,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", + "crossbeam-utils", ] [[package]] @@ -1184,7 +1106,6 @@ dependencies = [ "serde", "serde_json", "sha3", - "spawned-concurrency", "thiserror", "tracing", ] @@ -1193,7 +1114,7 @@ dependencies = [ name = "ethrex-threadpool" version = "0.1.0" dependencies = [ - "crossbeam 0.8.4", + "crossbeam", ] [[package]] @@ -1202,7 +1123,7 @@ version = "5.0.0" dependencies = [ "anyhow", "bytes", - "crossbeam 0.8.4", + "crossbeam", "digest", "ethereum-types", "ethrex-rlp", @@ -1323,54 +1244,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - [[package]] name = "futures-core" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - [[package]] name = "futures-macro" version = "0.3.31" @@ -1400,13 +1279,9 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1435,7 +1310,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "libc", "wasi 0.11.1+wasi-snapshot-preview1", ] @@ -1446,7 +1321,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "libc", "r-efi", "wasi 0.14.7+wasi-0.2.4", @@ -1756,7 +1631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ "bitflags", - "cfg-if 1.0.3", + "cfg-if", "libc", ] @@ -1814,7 +1689,7 @@ name = "k256" version = "0.13.4" source = "git+https://github.com/sp1-patches/elliptic-curves?tag=patch-k256-13.4-sp1-5.0.0#f7d8998e05d8cbcbd8e543eba1030a7385011fa8" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "ecdsa", "elliptic-curve", "hex", @@ -1915,15 +1790,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - [[package]] name = "log" version = "0.4.28" @@ -1985,27 +1851,12 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2283,29 +2134,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if 1.0.3", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - [[package]] name = "paste" version = "1.0.15" @@ -2508,17 +2336,8 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ - "crossbeam-deque 0.8.6", - "crossbeam-utils 0.8.21", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] @@ -2631,7 +2450,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222fb240c3286247ecdee6fa5341e7cdad0ffdf8e7e401d9937f2d58482a20bf" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "const-default", "libc", "svgbobdoc", @@ -2703,12 +2522,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "sec1" version = "0.7.3" @@ -2729,7 +2542,7 @@ version = "0.30.0" source = "git+https://github.com/sp1-patches/rust-secp256k1?tag=patch-0.30.0-sp1-5.0.0#04d87db04bcc2dc5dd8e1ab3f046cc655440d07a" dependencies = [ "bitcoin_hashes", - "cfg-if 1.0.3", + "cfg-if", "k256", "rand", "secp256k1-sys", @@ -2831,7 +2644,7 @@ name = "sha2" version = "0.10.8" source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.8-sp1-4.0.0#1f224388fdede7cef649bce0d63876d1a9e3f515" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "cpufeatures", "digest", ] @@ -2860,15 +2673,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signal-hook-registry" -version = "1.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" -dependencies = [ - "libc", -] - [[package]] name = "signature" version = "2.2.0" @@ -2903,16 +2707,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" -[[package]] -name = "socket2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - [[package]] name = "sp1-lib" version = "5.2.2" @@ -2933,7 +2727,7 @@ checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" dependencies = [ "bincode", "blake3", - "cfg-if 1.0.3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -2951,7 +2745,7 @@ version = "5.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d36441aa04268afe6684b4eca1726599bcb64892cbbe376dafc77c87f5e5fd0" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "critical-section", "embedded-alloc", "getrandom 0.2.16", @@ -2970,7 +2764,7 @@ version = "0.8.0-sp1-5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "ff", "group", "pairing", @@ -2979,33 +2773,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "spawned-concurrency" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d99b97ba5429336b6fa8b6e8ecbe09a1c7324f8b9fa63a11262dbd3a44e577b" -dependencies = [ - "futures", - "pin-project-lite", - "spawned-rt", - "thiserror", - "tracing", -] - -[[package]] -name = "spawned-rt" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58e8d7224fbcd3dbc39f7bacf958ae0882c95b5431353445be5a86b80cedcaf" -dependencies = [ - "crossbeam 0.7.3", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", - "tracing-subscriber", -] - [[package]] name = "spin" version = "0.9.8" @@ -3068,7 +2835,7 @@ source = "git+https://github.com/sp1-patches/bn?tag=patch-0.6.0-sp1-5.0.0#e0d67f dependencies = [ "bytemuck", "byteorder", - "cfg-if 1.0.3", + "cfg-if", "crunchy", "lazy_static", "num-bigint 0.4.6", @@ -3161,7 +2928,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", ] [[package]] @@ -3200,7 +2967,7 @@ name = "tiny-keccak" version = "2.0.2" source = "git+https://github.com/sp1-patches/tiny-keccak?tag=patch-2.0.2-sp1-4.0.0#d2ffd330259c8f290b07d99cc1ef1f74774382c2" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "crunchy", ] @@ -3236,40 +3003,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", - "bytes", "io-uring", "libc", "mio", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "slab", - "socket2", - "tokio-macros", - "windows-sys 0.59.0", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", ] [[package]] @@ -3506,7 +3244,7 @@ version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ - "cfg-if 1.0.3", + "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", From b27b2aa42bca97823c110ad62b5d4c313302c219 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 17:50:11 -0300 Subject: [PATCH 18/31] Fix tests --- crates/networking/p2p/snap.rs | 3 ++- crates/storage/store.rs | 6 +++--- crates/storage/trie_db/layering.rs | 23 +++-------------------- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/crates/networking/p2p/snap.rs b/crates/networking/p2p/snap.rs index f7326d2bd71..b5c73105173 100644 --- a/crates/networking/p2p/snap.rs +++ b/crates/networking/p2p/snap.rs @@ -180,6 +180,7 @@ mod tests { use ethrex_common::{BigEndianHash, H256, types::AccountState}; use ethrex_rlp::{decode::RLPDecode, encode::RLPEncode}; use ethrex_storage::EngineType; + use ethrex_trie::EMPTY_TRIE_HASH; use crate::rlpx::snap::AccountStateSlim; @@ -996,7 +997,7 @@ mod tests { // Create a store and load it up with the accounts let store = Store::new("null", EngineType::InMemory).unwrap(); - let mut state_trie = store.new_state_trie_for_test()?; + let mut state_trie = store.open_direct_state_trie(*EMPTY_TRIE_HASH)?; for (address, account) in accounts { let hashed_address = H256::from_str(address).unwrap().as_bytes().to_vec(); let account = AccountState::from(AccountStateSlim::decode(&account).unwrap()); diff --git a/crates/storage/store.rs b/crates/storage/store.rs index 080f39768f0..ae6cd2f5b47 100644 --- a/crates/storage/store.rs +++ b/crates/storage/store.rs @@ -1503,7 +1503,7 @@ mod tests { }) .collect(); accounts.sort_by_key(|a| a.0); - let mut trie = store.open_state_trie(*EMPTY_TRIE_HASH).unwrap(); + let mut trie = store.open_direct_state_trie(*EMPTY_TRIE_HASH).unwrap(); for (address, state) in &accounts { trie.insert(address.0.to_vec(), state.encode_to_vec()) .unwrap(); @@ -1529,13 +1529,13 @@ mod tests { .collect(); slots.sort_by_key(|a| a.0); let mut trie = store - .open_storage_trie(address, *EMPTY_TRIE_HASH, *EMPTY_TRIE_HASH) + .open_direct_storage_trie(address, *EMPTY_TRIE_HASH) .unwrap(); for (slot, value) in &slots { trie.insert(slot.0.to_vec(), value.encode_to_vec()).unwrap(); } let storage_root = trie.hash().unwrap(); - let mut trie = store.open_state_trie(*EMPTY_TRIE_HASH).unwrap(); + let mut trie = store.open_direct_state_trie(*EMPTY_TRIE_HASH).unwrap(); trie.insert( address.0.to_vec(), AccountState { diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index 77bce9d82d8..8eb69365443 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -133,25 +133,8 @@ impl TrieDB for TrieWrapper { self.db.get(key) } - fn put_batch(&self, key_values: Vec<(Nibbles, Vec)>) -> Result<(), TrieError> { - // TODO: this is unused, because we call `TrieLayerCache::put_batch` directly - let last_pair = key_values.iter().rev().find(|(_path, rlp)| !rlp.is_empty()); - let new_state_root = match last_pair { - Some((_, noderlp)) => { - let root_node = Node::decode(noderlp)?; - root_node.compute_hash().finalize() - } - None => *EMPTY_TRIE_HASH, - }; - let mut inner = TrieLayerCache::clone(&self.inner); - inner.put_batch( - self.state_root, - new_state_root, - key_values - .into_iter() - .map(move |(path, node)| (apply_prefix(self.prefix, path), node)) - .collect(), - ); - Ok(()) + fn put_batch(&self, _key_values: Vec<(Nibbles, Vec)>) -> Result<(), TrieError> { + // TODO: Get rid of this. + unimplemented!("This function should not be called"); } } From ff93aa9633cf9afecdb7267b920b377d3b2cc8ca Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 18:33:42 -0300 Subject: [PATCH 19/31] clippy --- crates/storage/trie_db/layering.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index 8eb69365443..1e310db7d2b 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -1,8 +1,7 @@ use ethrex_common::H256; -use ethrex_rlp::decode::RLPDecode; use std::{collections::HashMap, sync::Arc}; -use ethrex_trie::{EMPTY_TRIE_HASH, Nibbles, Node, TrieDB, TrieError}; +use ethrex_trie::{Nibbles, TrieDB, TrieError}; #[derive(Debug, Clone)] struct TrieLayer { From b080ea21affaf77939683b3e8127a38b2acfa01d Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 19:40:06 -0300 Subject: [PATCH 20/31] Add documentation for the background thread --- crates/storage/store_db/rocksdb.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index e3605070555..ecbbd42548c 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -370,6 +370,26 @@ impl Store { // rx channel is dropped, closing it }); let store_clone = store.clone(); + /* + When a block is executed, the write of the bottom-most diff layer to disk is done in the background through this thread. + This is to improve block execution times, since it's not necessary when executing the next block to have this layer flushed to disk. + + This background thread receives messages through a channel to apply new trie updates and does three things: + + - First, it updates the top-most in-memory diff layer and notifies the process that sent the message (i.e. the + block production thread) so it can continue with block execution (block execution cannot proceed without the + diff layers updated, otherwise it would see wrong state when reading from the trie). This section is done in an RCU manner: + a shared pointer with the trie is kept behind a lock. This thread first acquires the lock, then copies the pointer and drops the lock; + afterwards it makes a deep copy of the trie layer and mutates it, then takes the lock again, replaces the pointer with the updated copy, + then drops the lock again. + + - Second, it performs the logic of persisting the bottom-most diff layer to disk. This is the part of the logic that block execution does not + need to proceed. What does need to be aware of this section is the process in charge of generating the snapshot (a.k.a. FlatKeyValue). + Because of this, this section first sends a message to pause the FlatKeyValue generation, then persists the diff layer to disk, then notifies + again for FlatKeyValue generation to continue. + + - Third, it removes the (no longer needed) bottom-most diff layer from the trie layers in the same way as the first step. + */ std::thread::spawn(move || { let rx = trie_upd_rx; loop { From 28369f12102362a2efaec88b45800fb04df95f6f Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Thu, 23 Oct 2025 19:45:47 -0300 Subject: [PATCH 21/31] cargo fmt --- crates/storage/store_db/rocksdb.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index ecbbd42548c..42c6e3b8af2 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -384,7 +384,7 @@ impl Store { then drops the lock again. - Second, it performs the logic of persisting the bottom-most diff layer to disk. This is the part of the logic that block execution does not - need to proceed. What does need to be aware of this section is the process in charge of generating the snapshot (a.k.a. FlatKeyValue). + need to proceed. What does need to be aware of this section is the process in charge of generating the snapshot (a.k.a. FlatKeyValue). Because of this, this section first sends a message to pause the FlatKeyValue generation, then persists the diff layer to disk, then notifies again for FlatKeyValue generation to continue. From d714943805e9e39553e6d4a5bd76c65c7ac0d50e Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:05:50 +0100 Subject: [PATCH 22/31] remove needless scope --- crates/storage/store_db/in_memory.rs | 94 ++++++++++++++-------------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/crates/storage/store_db/in_memory.rs b/crates/storage/store_db/in_memory.rs index 8112c7ff989..f163e172992 100644 --- a/crates/storage/store_db/in_memory.rs +++ b/crates/storage/store_db/in_memory.rs @@ -90,60 +90,58 @@ impl StoreEngine for Store { let mut store = self.inner()?; // Store trie updates - { - let mut trie = TrieLayerCache::clone(&store.trie_cache); - let parent = update_batch - .blocks - .first() - .ok_or(StoreError::UpdateBatchNoBlocks)? - .header - .parent_hash; - - let pre_state_root = store - .headers - .get(&parent) - .map(|header| header.state_root) - .unwrap_or_default(); - - let last_state_root = update_batch - .blocks - .last() - .ok_or(StoreError::UpdateBatchNoBlocks)? - .header - .state_root; + let mut trie = TrieLayerCache::clone(&store.trie_cache); + let parent = update_batch + .blocks + .first() + .ok_or(StoreError::UpdateBatchNoBlocks)? + .header + .parent_hash; + + let pre_state_root = store + .headers + .get(&parent) + .map(|header| header.state_root) + .unwrap_or_default(); + + let last_state_root = update_batch + .blocks + .last() + .ok_or(StoreError::UpdateBatchNoBlocks)? + .header + .state_root; - { - let mut state_trie = store - .state_trie_nodes - .lock() - .map_err(|_| StoreError::LockError)?; - - if let Some(root) = trie.get_commitable(pre_state_root, COMMIT_THRESHOLD) { - let nodes = trie.commit(root).unwrap_or_default(); - for (key, value) in nodes { - if value.is_empty() { - state_trie.remove(&key); - } else { - state_trie.insert(key, value); - } + { + let mut state_trie = store + .state_trie_nodes + .lock() + .map_err(|_| StoreError::LockError)?; + + if let Some(root) = trie.get_commitable(pre_state_root, COMMIT_THRESHOLD) { + let nodes = trie.commit(root).unwrap_or_default(); + for (key, value) in nodes { + if value.is_empty() { + state_trie.remove(&key); + } else { + state_trie.insert(key, value); } } } - - let key_values = update_batch - .storage_updates - .into_iter() - .flat_map(|(account_hash, nodes)| { - nodes - .into_iter() - .map(move |(path, node)| (apply_prefix(Some(account_hash), path), node)) - }) - .chain(update_batch.account_updates) - .collect(); - trie.put_batch(pre_state_root, last_state_root, key_values); - store.trie_cache = Arc::new(trie); } + let key_values = update_batch + .storage_updates + .into_iter() + .flat_map(|(account_hash, nodes)| { + nodes + .into_iter() + .map(move |(path, node)| (apply_prefix(Some(account_hash), path), node)) + }) + .chain(update_batch.account_updates) + .collect(); + trie.put_batch(pre_state_root, last_state_root, key_values); + store.trie_cache = Arc::new(trie); + for block in update_batch.blocks { // store block let number = block.header.number; From 48f5b3ae93426e23f1004af739eef042c4e2e214 Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:09:18 +0100 Subject: [PATCH 23/31] add warnings, use collect --- crates/storage/trie_db/layering.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index 1e310db7d2b..34fe28832c9 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -65,14 +65,15 @@ impl TrieLayerCache { return; } if self.layers.contains_key(&state_root) { + tracing::warn!("tried to insert a state_root that's already inserted"); return; } - let nodes = HashMap::from_iter( - key_values - .into_iter() - .map(|(path, node)| (path.into_vec(), node)), - ); + let nodes: HashMap, Vec> = key_values + .into_iter() + .map(|(path, node)| (path.into_vec(), node)) + .collect(); + self.last_id += 1; let entry = TrieLayer { nodes: Arc::new(nodes), From 01227874c9d7716bc7ccd901225e6de433964e3c Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:09:48 +0100 Subject: [PATCH 24/31] typo --- crates/storage/store_db/rocksdb.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 42c6e3b8af2..283f43243fa 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -873,7 +873,7 @@ impl StoreEngine for Store { wait_for_new_layer .recv() .map_err(|e| StoreError::Custom(format!("recv failed: {e}")))??; - // After top-level is addded, we can make the rest of the changes visible. + // After top-level is added, we can make the rest of the changes visible. db.write(batch) .map_err(|e| StoreError::Custom(format!("RocksDB batch write error: {}", e))) }) From 32b6de29c706552a0b94924a601934a8f36c2fb5 Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:11:13 +0100 Subject: [PATCH 25/31] use destructure --- crates/storage/store_db/rocksdb.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 283f43243fa..416cf710dfc 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -20,7 +20,6 @@ use rocksdb::{ }; use std::{ collections::HashSet, - mem::take, path::Path, sync::{ Arc, Mutex, @@ -756,7 +755,7 @@ impl Store { #[async_trait::async_trait] impl StoreEngine for Store { - async fn apply_updates(&self, mut update_batch: UpdateBatch) -> Result<(), StoreError> { + async fn apply_updates(&self, update_batch: UpdateBatch) -> Result<(), StoreError> { let db = self.db.clone(); let parent_state_root = self .get_block_header_by_hash( @@ -801,10 +800,11 @@ impl StoreEngine for Store { let _span = tracing::trace_span!("Block DB update").entered(); let mut batch = WriteBatch::default(); - let (account_updates, storage_updates) = ( - take(&mut update_batch.account_updates), - take(&mut update_batch.storage_updates), - ); + let UpdateBatch { + account_updates, + storage_updates, + .. + } = update_batch; // Capacity one ensures sender just notifies and goes on let (notify_tx, notify_rx) = sync_channel(1); From 12c9621cb17e6109d6aeb9671e2ecb4440c2263e Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:11:40 +0100 Subject: [PATCH 26/31] typo --- crates/storage/store_db/rocksdb.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 416cf710dfc..66caed6f7fb 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -701,7 +701,7 @@ impl Store { let mut trie_mut = (*trie).clone(); trie_mut.put_batch(parent_state_root, child_state_root, new_layer); *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); - // Update finished, signal block production. + // Update finished, signal block processing. notify.send(Ok(())).map_err(|_| StoreError::LockError)?; // Phase 2: update disk layer. From 68e32a906a89373a317dd074d8b3b051550c9316 Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Mon, 27 Oct 2025 09:12:53 +0100 Subject: [PATCH 27/31] avoid lock --- crates/storage/store_db/rocksdb.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 66caed6f7fb..3237eae2484 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -700,15 +700,12 @@ impl Store { .clone(); let mut trie_mut = (*trie).clone(); trie_mut.put_batch(parent_state_root, child_state_root, new_layer); - *trie_cache.lock().map_err(|_| StoreError::LockError)? = Arc::new(trie_mut); + let trie = Arc::new(trie_mut); + *trie_cache.lock().map_err(|_| StoreError::LockError)? = trie.clone(); // Update finished, signal block processing. notify.send(Ok(())).map_err(|_| StoreError::LockError)?; // Phase 2: update disk layer. - let trie = trie_cache - .lock() - .map_err(|_| StoreError::LockError)? - .clone(); let Some(root) = trie.get_commitable(parent_state_root, COMMIT_THRESHOLD) else { // Nothing to commit to disk, move on. return Ok(()); From 44412380343976366eb9406097ac93bc61ffee18 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 27 Oct 2025 10:51:43 -0300 Subject: [PATCH 28/31] Make change in L2 to trigger CI L2 tests --- crates/l2/sequencer/l1_committer.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/sequencer/l1_committer.rs b/crates/l2/sequencer/l1_committer.rs index 6fc1c0fef2d..b0e01c3facd 100644 --- a/crates/l2/sequencer/l1_committer.rs +++ b/crates/l2/sequencer/l1_committer.rs @@ -952,3 +952,5 @@ async fn estimate_blob_gas( Ok(blob_gas) } + +// Test From 5d39705e5ca7aec668a54d43d58f85452571df37 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 27 Oct 2025 12:11:20 -0300 Subject: [PATCH 29/31] Revert "Make change in L2 to trigger CI L2 tests" This reverts commit 44412380343976366eb9406097ac93bc61ffee18. --- crates/l2/sequencer/l1_committer.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/l2/sequencer/l1_committer.rs b/crates/l2/sequencer/l1_committer.rs index b0e01c3facd..6fc1c0fef2d 100644 --- a/crates/l2/sequencer/l1_committer.rs +++ b/crates/l2/sequencer/l1_committer.rs @@ -952,5 +952,3 @@ async fn estimate_blob_gas( Ok(blob_gas) } - -// Test From d4f74f221d05ad61ba75daf7fcf0c41be99543fd Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 27 Oct 2025 13:09:10 -0300 Subject: [PATCH 30/31] Test l2 ci --- crates/l2/sequencer/l1_committer.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/sequencer/l1_committer.rs b/crates/l2/sequencer/l1_committer.rs index dd3ae3b2648..e6a39059ea4 100644 --- a/crates/l2/sequencer/l1_committer.rs +++ b/crates/l2/sequencer/l1_committer.rs @@ -1266,3 +1266,5 @@ pub async fn regenerate_head_state( Ok(()) } + +// Test From a05a03939a8e06870dd691e5cb18a3f0e896c1c6 Mon Sep 17 00:00:00 2001 From: Javier Chatruc Date: Mon, 27 Oct 2025 13:12:25 -0300 Subject: [PATCH 31/31] Revert "Test l2 ci" This reverts commit d4f74f221d05ad61ba75daf7fcf0c41be99543fd. --- crates/l2/sequencer/l1_committer.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/l2/sequencer/l1_committer.rs b/crates/l2/sequencer/l1_committer.rs index e6a39059ea4..dd3ae3b2648 100644 --- a/crates/l2/sequencer/l1_committer.rs +++ b/crates/l2/sequencer/l1_committer.rs @@ -1266,5 +1266,3 @@ pub async fn regenerate_head_state( Ok(()) } - -// Test