From 380dbb2d00d187a37b9e5d4a7a3e4c8e931e68d6 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+pythonberg1997@users.noreply.github.com> Date: Fri, 16 Aug 2024 19:39:23 +0800 Subject: [PATCH 1/5] fix: system account transition issue in `distribute_incoming` (#113) --- Cargo.lock | 8 ++++---- Cargo.toml | 8 ++++---- crates/bsc/evm/src/post_execution.rs | 16 +++++----------- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34f3d8af9a..91fd00c99c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9795,7 +9795,7 @@ dependencies = [ [[package]] name = "revm" version = "12.1.0" -source = "git+https://github.com/bnb-chain/revm?tag=v1.0.0#8675437c8943c2664840d6c4aaad7c1c2f8681d6" +source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" dependencies = [ "auto_impl", "cfg-if", @@ -9827,7 +9827,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "8.1.0" -source = "git+https://github.com/bnb-chain/revm?tag=v1.0.0#8675437c8943c2664840d6c4aaad7c1c2f8681d6" +source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" dependencies = [ "revm-primitives", "serde", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "9.2.0" -source = "git+https://github.com/bnb-chain/revm?tag=v1.0.0#8675437c8943c2664840d6c4aaad7c1c2f8681d6" +source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" dependencies = [ "alloy-rlp", "aurora-engine-modexp", @@ -9864,7 +9864,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "7.1.0" -source = "git+https://github.com/bnb-chain/revm?tag=v1.0.0#8675437c8943c2664840d6c4aaad7c1c2f8681d6" +source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" dependencies = [ "alloy-eips", "alloy-primitives", diff --git a/Cargo.toml b/Cargo.toml index fc5e52420f..4466775a6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -554,10 +554,10 @@ test-fuzz = "5" iai-callgrind = "0.11" [patch.crates-io] -revm = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.0" } -revm-interpreter = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.0" } -revm-precompile = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.0" } -revm-primitives = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.0" } +revm = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } +revm-interpreter = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } +revm-precompile = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } +revm-primitives = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } alloy-chains = { git = "https://github.com/bnb-chain/alloy-chains-rs.git", tag = "v1.0.0" } alloy-rpc-types-eth = { git = "https://github.com/bnb-chain/alloy", tag = "v1.0.0" } alloy-consensus = { git = "https://github.com/bnb-chain/alloy", tag = "v1.0.0" } diff --git a/crates/bsc/evm/src/post_execution.rs b/crates/bsc/evm/src/post_execution.rs index ce92c04016..27ef83d37b 100644 --- a/crates/bsc/evm/src/post_execution.rs +++ b/crates/bsc/evm/src/post_execution.rs @@ -313,21 +313,16 @@ where BscBlockExecutionError::ProviderInnerError { error: Box::new(err.into()) } })?; - if header.number != 1 && - (system_account.account.is_none() || - system_account.account.as_ref().unwrap().info.balance == U256::ZERO) + if system_account.account.is_none() || + system_account.account.as_ref().unwrap().info.balance == U256::ZERO { return Ok(()); } - let (mut block_reward, transition) = system_account.drain_balance(); + let (mut block_reward, mut transition) = system_account.drain_balance(); + transition.info = None; self.state.apply_transition(vec![(SYSTEM_ADDRESS, transition)]); - // if block reward is zero, no need to distribute - if block_reward == 0 { - return Ok(()); - } - let balance_increment = HashMap::from([(validator, block_reward)]); self.state .increment_balances(balance_increment) @@ -338,8 +333,7 @@ where .basic(SYSTEM_REWARD_CONTRACT.parse().unwrap()) .map_err(|err| BscBlockExecutionError::ProviderInnerError { error: Box::new(err.into()), - }) - .unwrap() + })? .unwrap_or_default() .balance; if !self.chain_spec().is_kepler_active_at_timestamp(header.timestamp) && From cdd7cea8bbb196f9653b5ff47459ed51d1c76bc5 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Tue, 20 Aug 2024 15:09:12 +0800 Subject: [PATCH 2/5] fix: cannot find parent block during livesync (#111) * fix: cannot find parent block during livesync * fix some test issues * fix some test issues * try to fix deadlock issue * try to fix dead loop issue * refine codes * fix an issue * fix issue & refactor * fix some review comments --- .../src/commands/debug_cmd/build_block.rs | 4 +- .../commands/debug_cmd/in_memory_merkle.rs | 1 + bin/reth/src/commands/debug_cmd/merkle.rs | 2 +- crates/blockchain-tree/src/chain.rs | 14 +++- crates/bsc/engine/src/task.rs | 2 +- crates/bsc/evm/src/execute.rs | 71 ++++++++++++------- crates/bsc/evm/src/post_execution.rs | 14 ++-- crates/bsc/evm/src/pre_execution.rs | 14 ++-- crates/consensus/auto-seal/src/lib.rs | 2 +- crates/engine/tree/src/tree/mod.rs | 2 +- crates/ethereum/evm/src/execute.rs | 23 ++++-- crates/evm/src/either.rs | 14 ++-- crates/evm/src/execute.rs | 43 +++++++---- crates/evm/src/noop.rs | 6 +- crates/evm/src/test_utils.rs | 6 +- crates/exex/exex/src/backfill/job.rs | 2 +- crates/exex/exex/src/backfill/mod.rs | 8 ++- crates/optimism/evm/src/execute.rs | 10 +-- crates/stages/stages/src/stages/execution.rs | 2 +- 19 files changed, 158 insertions(+), 82 deletions(-) diff --git a/bin/reth/src/commands/debug_cmd/build_block.rs b/bin/reth/src/commands/debug_cmd/build_block.rs index ef6dbaf11c..b674324aa8 100644 --- a/bin/reth/src/commands/debug_cmd/build_block.rs +++ b/bin/reth/src/commands/debug_cmd/build_block.rs @@ -279,8 +279,8 @@ impl Command { #[cfg(not(feature = "bsc"))] let executor = block_executor!(provider_factory.chain_spec()).executor(db); - let BlockExecutionOutput { state, receipts, requests, .. } = - executor.execute((&block_with_senders.clone().unseal(), U256::MAX).into())?; + let BlockExecutionOutput { state, receipts, requests, .. } = executor + .execute((&block_with_senders.clone().unseal(), U256::MAX, None).into())?; let execution_outcome = ExecutionOutcome::new( state, receipts.into(), diff --git a/bin/reth/src/commands/debug_cmd/in_memory_merkle.rs b/bin/reth/src/commands/debug_cmd/in_memory_merkle.rs index ed59246510..aa202004cf 100644 --- a/bin/reth/src/commands/debug_cmd/in_memory_merkle.rs +++ b/bin/reth/src/commands/debug_cmd/in_memory_merkle.rs @@ -145,6 +145,7 @@ impl Command { .with_recovered_senders() .ok_or(BlockValidationError::SenderRecoveryError)?, merkle_block_td + block.difficulty, + None, ) .into(), )?; diff --git a/bin/reth/src/commands/debug_cmd/merkle.rs b/bin/reth/src/commands/debug_cmd/merkle.rs index 3534b6c2cc..2c41a2c593 100644 --- a/bin/reth/src/commands/debug_cmd/merkle.rs +++ b/bin/reth/src/commands/debug_cmd/merkle.rs @@ -153,7 +153,7 @@ impl Command { provider_rw.static_file_provider().clone(), ), )); - executor.execute_and_verify_one((&sealed_block.clone().unseal(), td).into())?; + executor.execute_and_verify_one((&sealed_block.clone().unseal(), td, None).into())?; executor.finalize().write_to_storage(&provider_rw, None, OriginalValuesKnown::Yes)?; let checkpoint = Some(StageCheckpoint::new( diff --git a/crates/blockchain-tree/src/chain.rs b/crates/blockchain-tree/src/chain.rs index dbc0c1d04b..7dfdce6967 100644 --- a/crates/blockchain-tree/src/chain.rs +++ b/crates/blockchain-tree/src/chain.rs @@ -15,7 +15,8 @@ use reth_evm::execute::{BlockExecutionOutput, BlockExecutorProvider, Executor}; use reth_execution_errors::BlockExecutionError; use reth_execution_types::{Chain, ExecutionOutcome}; use reth_primitives::{ - BlockHash, BlockNumber, ForkBlock, GotExpected, SealedBlockWithSenders, SealedHeader, U256, + BlockHash, BlockNumber, ForkBlock, GotExpected, Header, SealedBlockWithSenders, SealedHeader, + B256, U256, }; use reth_provider::{ providers::{BundleStateProvider, ConsistentDbView}, @@ -25,7 +26,7 @@ use reth_revm::database::StateProviderDatabase; use reth_trie::updates::TrieUpdates; use reth_trie_parallel::parallel_root::ParallelStateRoot; use std::{ - collections::BTreeMap, + collections::{BTreeMap, HashMap}, ops::{Deref, DerefMut}, time::Instant, }; @@ -92,6 +93,7 @@ impl AppendableChain { let (bundle_state, trie_updates) = Self::validate_and_execute( block.clone(), parent_header, + None, state_provider, externals, block_attachment, @@ -138,6 +140,7 @@ impl AppendableChain { let (block_state, _) = Self::validate_and_execute( block.clone(), parent, + None, bundle_state_data, externals, BlockAttachment::HistoricalFork, @@ -170,6 +173,7 @@ impl AppendableChain { fn validate_and_execute( block: SealedBlockWithSenders, parent_block: &SealedHeader, + ancestor_blocks: Option<&HashMap>, bundle_state_data_provider: EDP, externals: &TreeExternals, block_attachment: BlockAttachment, @@ -209,7 +213,7 @@ impl AppendableChain { let block_hash = block.hash(); let block = block.unseal(); - let state = executor.execute((&block, U256::MAX).into())?; + let state = executor.execute((&block, U256::MAX, ancestor_blocks).into())?; let BlockExecutionOutput { state, receipts, requests, .. } = state; externals .consensus @@ -285,6 +289,9 @@ impl AppendableChain { { let parent_block = self.chain.tip(); + let ancestor_blocks = + self.headers().map(|h| return (h.hash() as B256, h.header().clone())).collect(); + let bundle_state_data = BundleStateDataRef { execution_outcome: self.execution_outcome(), sidechain_block_hashes: &side_chain_block_hashes, @@ -295,6 +302,7 @@ impl AppendableChain { let (block_state, _) = Self::validate_and_execute( block.clone(), parent_block, + Some(&ancestor_blocks), bundle_state_data, externals, block_attachment, diff --git a/crates/bsc/engine/src/task.rs b/crates/bsc/engine/src/task.rs index 3201c43bd2..b13b82da0e 100644 --- a/crates/bsc/engine/src/task.rs +++ b/crates/bsc/engine/src/task.rs @@ -61,7 +61,7 @@ pub(crate) struct ParliaEngineTask< > { /// The configured chain spec chain_spec: Arc, - /// The coneensus instance + /// The consensus instance consensus: Parlia, /// The provider used to read the block and header from the inserted chain provider: Provider, diff --git a/crates/bsc/evm/src/execute.rs b/crates/bsc/evm/src/execute.rs index 145ac7615d..121193135b 100644 --- a/crates/bsc/evm/src/execute.rs +++ b/crates/bsc/evm/src/execute.rs @@ -323,14 +323,15 @@ where &mut self, block: &BlockWithSenders, total_difficulty: U256, + ancestor: Option<&HashMap>, ) -> Result { // 1. get parent header and snapshot - let parent = &(self.get_header_by_hash(block.parent_hash)?); + let parent = &(self.get_header_by_hash(block.parent_hash, ancestor)?); let snapshot_reader = SnapshotReader::new(self.provider.clone(), self.parlia.clone()); - let snap = &(snapshot_reader.snapshot(parent, None)?); + let snap = &(snapshot_reader.snapshot(parent, ancestor)?); // 2. prepare state on new block - self.on_new_block(&block.header, parent, snap)?; + self.on_new_block(&block.header, parent, ancestor, snap)?; // 3. get data from contracts before execute transactions let post_execution_input = @@ -353,6 +354,7 @@ where self.post_execution( block, parent, + ancestor, snap, post_execution_input, &mut system_txs, @@ -370,6 +372,7 @@ where pub(crate) fn get_justified_header( &self, + ancestor: Option<&HashMap>, snap: &Snapshot, ) -> Result { if snap.vote_data.source_hash == B256::ZERO && snap.vote_data.target_hash == B256::ZERO { @@ -382,16 +385,23 @@ where }); } - self.get_header_by_hash(snap.vote_data.target_hash) + self.get_header_by_hash(snap.vote_data.target_hash, ancestor) } pub(crate) fn get_header_by_hash( &self, block_hash: B256, + ancestor: Option<&HashMap>, ) -> Result { - self.provider - .header(&block_hash) - .map_err(|err| BscBlockExecutionError::ProviderInnerError { error: err.into() })? + ancestor + .and_then(|m| m.get(&block_hash).cloned()) + .or_else(|| { + self.provider + .header(&block_hash) + .map_err(|err| BscBlockExecutionError::ProviderInnerError { error: err.into() }) + .ok() + .flatten() + }) .ok_or_else(|| BscBlockExecutionError::UnknownHeader { block_hash }.into()) } @@ -670,7 +680,7 @@ where DB: Database + std::fmt::Display>, P: ParliaProvider, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -682,9 +692,9 @@ where /// /// State changes are committed to the database. fn execute(mut self, input: Self::Input<'_>) -> Result { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, ancestor_headers } = input; let BscExecuteOutput { receipts, gas_used, snapshot } = - self.execute_and_verify(block, total_difficulty)?; + self.execute_and_verify(block, total_difficulty, ancestor_headers)?; // NOTE: we need to merge keep the reverts for the bundle retention self.state.merge_transitions(BundleRetention::Reverts); @@ -726,15 +736,15 @@ where DB: Database + std::fmt::Display>, P: ParliaProvider, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; fn execute_and_verify_one(&mut self, input: Self::Input<'_>) -> Result<(), Self::Error> { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, .. } = input; let execute_start = Instant::now(); let BscExecuteOutput { receipts, gas_used: _, snapshot } = - self.executor.execute_and_verify(block, total_difficulty)?; + self.executor.execute_and_verify(block, total_difficulty, None)?; self.stats.execution_duration += execute_start.elapsed(); validate_block_post_execution(block, self.executor.chain_spec(), &receipts)?; @@ -806,7 +816,7 @@ where pub fn snapshot( &self, header: &Header, - parent: Option<&Header>, + ancestor: Option<&HashMap>, ) -> Result { let mut cache = RECENT_SNAPS.write(); @@ -853,14 +863,14 @@ where // No snapshot for this header, gather the header and move backward skip_headers.push(header.clone()); - if let Some(parent) = parent { - block_number = parent.number; - block_hash = header.parent_hash; - header = parent.clone(); - } else if let Ok(h) = self.get_header_by_hash(header.parent_hash) { + if let Ok(h) = self.get_header_by_hash(header.parent_hash, ancestor) { block_number = h.number; block_hash = header.parent_hash; header = h; + } else { + return Err( + BscBlockExecutionError::UnknownHeader { block_hash: header.parent_hash }.into() + ) } } @@ -880,7 +890,7 @@ where { // change validator set let checkpoint_header = - self.find_ancient_header(header, snap.miner_history_check_len())?; + self.find_ancient_header(header, ancestor, snap.miner_history_check_len())?; let validators_info = self .parlia @@ -924,21 +934,32 @@ where Ok(snap) } - fn get_header_by_hash(&self, block_hash: B256) -> Result { - self.provider - .header(&block_hash) - .map_err(|err| BscBlockExecutionError::ProviderInnerError { error: err.into() })? + fn get_header_by_hash( + &self, + block_hash: B256, + ancestor: Option<&HashMap>, + ) -> Result { + ancestor + .and_then(|m| m.get(&block_hash).cloned()) + .or_else(|| { + self.provider + .header(&block_hash) + .map_err(|err| BscBlockExecutionError::ProviderInnerError { error: err.into() }) + .ok() + .flatten() + }) .ok_or_else(|| BscBlockExecutionError::UnknownHeader { block_hash }.into()) } fn find_ancient_header( &self, header: &Header, + ancestor: Option<&HashMap>, count: u64, ) -> Result { let mut result = header.clone(); for _ in 0..count { - result = self.get_header_by_hash(result.parent_hash)?; + result = self.get_header_by_hash(result.parent_hash, ancestor)?; } Ok(result) } diff --git a/crates/bsc/evm/src/post_execution.rs b/crates/bsc/evm/src/post_execution.rs index 27ef83d37b..bdede5c59c 100644 --- a/crates/bsc/evm/src/post_execution.rs +++ b/crates/bsc/evm/src/post_execution.rs @@ -12,7 +12,7 @@ use reth_primitives::{ hex, parlia::{Snapshot, VoteAddress, VoteAttestation}, system_contracts::SYSTEM_REWARD_CONTRACT, - Address, BlockWithSenders, GotExpected, Header, Receipt, TransactionSigned, U256, + Address, BlockWithSenders, GotExpected, Header, Receipt, TransactionSigned, B256, U256, }; use reth_provider::ParliaProvider; use reth_revm::bsc::SYSTEM_ADDRESS; @@ -41,6 +41,7 @@ where &mut self, block: &BlockWithSenders, parent: &Header, + ancestor: Option<&HashMap>, snap: &Snapshot, post_execution_input: PostExecutionInput, system_txs: &mut Vec, @@ -107,6 +108,7 @@ where if self.chain_spec().is_plato_active_at_block(number) { self.distribute_finality_reward( header, + ancestor, system_txs, receipts, cumulative_gas_used, @@ -369,6 +371,7 @@ where fn distribute_finality_reward( &mut self, header: &Header, + ancestor: Option<&HashMap>, system_txs: &mut Vec, receipts: &mut Vec, cumulative_gas_used: &mut u64, @@ -385,14 +388,14 @@ where let end = header.number; let mut target_hash = header.parent_hash; for _ in (start..end).rev() { - let header = &(self.get_header_by_hash(target_hash)?); + let header = &(self.get_header_by_hash(target_hash, ancestor)?); if let Some(attestation) = self.parlia().get_vote_attestation_from_header(header).map_err(|err| { BscBlockExecutionError::ParliaConsensusInnerError { error: err.into() } })? { - self.process_attestation(&attestation, header, &mut accumulated_weights)?; + self.process_attestation(&attestation, header, ancestor, &mut accumulated_weights)?; } target_hash = header.parent_hash; @@ -445,10 +448,11 @@ where &self, attestation: &VoteAttestation, parent_header: &Header, + ancestor: Option<&HashMap>, accumulated_weights: &mut HashMap, ) -> Result<(), BlockExecutionError> { - let justified_header = self.get_header_by_hash(attestation.data.target_hash)?; - let parent = self.get_header_by_hash(justified_header.parent_hash)?; + let justified_header = self.get_header_by_hash(attestation.data.target_hash, ancestor)?; + let parent = self.get_header_by_hash(justified_header.parent_hash, ancestor)?; let snapshot_reader = SnapshotReader::new(self.provider.clone(), self.parlia.clone()); let snapshot = &(snapshot_reader.snapshot(&parent, None)?); let validators = &snapshot.validators; diff --git a/crates/bsc/evm/src/pre_execution.rs b/crates/bsc/evm/src/pre_execution.rs index 3f8931a040..0e005b6736 100644 --- a/crates/bsc/evm/src/pre_execution.rs +++ b/crates/bsc/evm/src/pre_execution.rs @@ -10,10 +10,11 @@ use reth_ethereum_forks::{BscHardforks, EthereumHardforks}; use reth_evm::ConfigureEvm; use reth_primitives::{ parlia::{Snapshot, VoteAddress, MAX_ATTESTATION_EXTRA_LENGTH}, - GotExpected, Header, + GotExpected, Header, B256, }; use reth_provider::ParliaProvider; use revm_primitives::db::Database; +use std::collections::HashMap; const BLST_DST: &[u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; @@ -28,23 +29,25 @@ where &mut self, header: &Header, parent: &Header, + ancestor: Option<&HashMap>, snap: &Snapshot, ) -> Result<(), BlockExecutionError> { // Set state clear flag if the block is after the Spurious Dragon hardfork. let state_clear_flag = self.chain_spec().is_spurious_dragon_active_at_block(header.number); self.state.set_state_clear_flag(state_clear_flag); - self.verify_cascading_fields(header, parent, snap) + self.verify_cascading_fields(header, parent, ancestor, snap) } fn verify_cascading_fields( &self, header: &Header, parent: &Header, + ancestor: Option<&HashMap>, snap: &Snapshot, ) -> Result<(), BlockExecutionError> { self.verify_block_time_for_ramanujan(snap, header, parent)?; - self.verify_vote_attestation(snap, header, parent)?; + self.verify_vote_attestation(snap, header, parent, ancestor)?; self.verify_seal(snap, header)?; Ok(()) @@ -77,6 +80,7 @@ where snap: &Snapshot, header: &Header, parent: &Header, + ancestor: Option<&HashMap>, ) -> Result<(), BlockExecutionError> { if !self.chain_spec().is_plato_active_at_block(header.number) { return Ok(()); @@ -109,7 +113,7 @@ where // the attestation source block should be the highest justified block. let source_block = attestation.data.source_number; let source_hash = attestation.data.source_hash; - let justified = &(self.get_justified_header(snap)?); + let justified = &(self.get_justified_header(ancestor, snap)?); if source_block != justified.number || source_hash != justified.hash_slow() { return Err(BscBlockExecutionError::InvalidAttestationSource { block_number: GotExpected { got: source_block, expected: justified.number }, @@ -120,7 +124,7 @@ where } // Get the target_number - 1 block's snapshot. - let pre_target_header = &(self.get_header_by_hash(parent.parent_hash)?); + let pre_target_header = &(self.get_header_by_hash(parent.parent_hash, ancestor)?); let snapshot_reader = SnapshotReader::new(self.provider.clone(), self.parlia.clone()); let snap = &(snapshot_reader.snapshot(pre_target_header, None)?); diff --git a/crates/consensus/auto-seal/src/lib.rs b/crates/consensus/auto-seal/src/lib.rs index 7a9001dcae..3274abb258 100644 --- a/crates/consensus/auto-seal/src/lib.rs +++ b/crates/consensus/auto-seal/src/lib.rs @@ -388,7 +388,7 @@ impl StorageInner { requests: block_execution_requests, gas_used, .. - } = executor.executor(&mut db).execute((&block, U256::ZERO).into())?; + } = executor.executor(&mut db).execute((&block, U256::ZERO, None).into())?; let execution_outcome = ExecutionOutcome::new( state, receipts.into(), diff --git a/crates/engine/tree/src/tree/mod.rs b/crates/engine/tree/src/tree/mod.rs index 83afa7395c..4de11fc9c1 100644 --- a/crates/engine/tree/src/tree/mod.rs +++ b/crates/engine/tree/src/tree/mod.rs @@ -658,7 +658,7 @@ where let block_number = block.number; let block_hash = block.hash(); let block = block.unseal(); - let output = executor.execute((&block, U256::MAX).into()).unwrap(); + let output = executor.execute((&block, U256::MAX, None).into()).unwrap(); self.consensus.validate_block_post_execution( &block, PostExecutionInput::new(&output.receipts, &output.requests), diff --git a/crates/ethereum/evm/src/execute.rs b/crates/ethereum/evm/src/execute.rs index 45ed8c8740..7617d09ef0 100644 --- a/crates/ethereum/evm/src/execute.rs +++ b/crates/ethereum/evm/src/execute.rs @@ -365,7 +365,7 @@ where EvmConfig: ConfigureEvm, DB: Database + std::fmt::Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -375,7 +375,7 @@ where /// /// Returns an error if the block could not be executed or failed verification. fn execute(mut self, input: Self::Input<'_>) -> Result { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, .. } = input; let EthExecuteOutput { receipts, requests, gas_used } = self.execute_without_verification(block, total_difficulty)?; @@ -419,12 +419,12 @@ where EvmConfig: ConfigureEvm, DB: Database + Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; fn execute_and_verify_one(&mut self, input: Self::Input<'_>) -> Result<(), Self::Error> { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, .. } = input; let EthExecuteOutput { receipts, requests, gas_used: _ } = self.executor.execute_without_verification(block, total_difficulty)?; @@ -567,6 +567,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -666,6 +667,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -720,6 +722,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -765,6 +768,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -793,6 +797,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -853,6 +858,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -924,6 +930,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -975,6 +982,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1033,6 +1041,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1097,6 +1106,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1152,6 +1162,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1192,6 +1203,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1235,6 +1247,7 @@ mod tests { senders: vec![], }, U256::ZERO, + None, ) .into(), ) @@ -1325,6 +1338,7 @@ mod tests { .with_recovered_senders() .unwrap(), U256::ZERO, + None, ) .into(), ) @@ -1414,6 +1428,7 @@ mod tests { .with_recovered_senders() .unwrap(), U256::ZERO, + None, ) .into(), ); diff --git a/crates/evm/src/either.rs b/crates/evm/src/either.rs index f6af36d2eb..def3dcc652 100644 --- a/crates/evm/src/either.rs +++ b/crates/evm/src/either.rs @@ -7,7 +7,7 @@ use crate::execute::{ }; use reth_execution_errors::BlockExecutionError; use reth_execution_types::ExecutionOutcome; -use reth_primitives::{BlockNumber, BlockWithSenders, Receipt}; +use reth_primitives::{BlockNumber, BlockWithSenders, Header, Receipt}; use reth_prune_types::PruneModes; use reth_storage_errors::provider::ProviderError; use revm_primitives::db::Database; @@ -51,19 +51,19 @@ impl Executor for Either where A: for<'a> Executor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = BlockExecutionOutput, Error = BlockExecutionError, >, B: for<'a> Executor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = BlockExecutionOutput, Error = BlockExecutionError, >, DB: Database + Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -79,19 +79,19 @@ impl BatchExecutor for Either where A: for<'a> BatchExecutor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = ExecutionOutcome, Error = BlockExecutionError, >, B: for<'a> BatchExecutor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = ExecutionOutcome, Error = BlockExecutionError, >, DB: Database + Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; diff --git a/crates/evm/src/execute.rs b/crates/evm/src/execute.rs index c3ca2ba9ac..c7af375277 100644 --- a/crates/evm/src/execute.rs +++ b/crates/evm/src/execute.rs @@ -1,7 +1,9 @@ //! Traits for execution. use reth_execution_types::ExecutionOutcome; -use reth_primitives::{parlia::Snapshot, BlockNumber, BlockWithSenders, Receipt, Request, U256}; +use reth_primitives::{ + parlia::Snapshot, BlockNumber, BlockWithSenders, Header, Receipt, Request, B256, U256, +}; use reth_prune_types::PruneModes; use revm::db::BundleState; use revm_primitives::db::Database; @@ -9,6 +11,7 @@ use std::fmt::Display; #[cfg(not(feature = "std"))] use alloc::vec::Vec; +use std::collections::HashMap; pub use reth_execution_errors::{BlockExecutionError, BlockValidationError}; pub use reth_storage_errors::provider::ProviderError; @@ -119,23 +122,37 @@ pub struct BlockExecutionOutput { /// A helper type for ethereum block inputs that consists of a block and the total difficulty. #[derive(Debug)] -pub struct BlockExecutionInput<'a, Block> { +pub struct BlockExecutionInput<'a, Block, Header> { /// The block to execute. pub block: &'a Block, /// The total difficulty of the block. pub total_difficulty: U256, + /// The headers of the block's ancestor + pub ancestor_headers: Option<&'a HashMap>, } -impl<'a, Block> BlockExecutionInput<'a, Block> { +impl<'a, Block, Header> BlockExecutionInput<'a, Block, Header> { /// Creates a new input. - pub const fn new(block: &'a Block, total_difficulty: U256) -> Self { - Self { block, total_difficulty } + pub const fn new( + block: &'a Block, + total_difficulty: U256, + ancestor_headers: Option<&'a HashMap>, + ) -> Self { + Self { block, total_difficulty, ancestor_headers } } } -impl<'a, Block> From<(&'a Block, U256)> for BlockExecutionInput<'a, Block> { - fn from((block, total_difficulty): (&'a Block, U256)) -> Self { - Self::new(block, total_difficulty) +impl<'a, Block, Header> From<(&'a Block, U256, Option<&'a HashMap>)> + for BlockExecutionInput<'a, Block, Header> +{ + fn from( + (block, total_difficulty, ancestor_headers): ( + &'a Block, + U256, + Option<&'a HashMap>, + ), + ) -> Self { + Self::new(block, total_difficulty, ancestor_headers) } } @@ -154,7 +171,7 @@ pub trait BlockExecutorProvider: Send + Sync + Clone + Unpin + 'static { /// the returned state. type Executor + Display>>: for<'a> Executor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = BlockExecutionOutput, Error = BlockExecutionError, >; @@ -162,7 +179,7 @@ pub trait BlockExecutorProvider: Send + Sync + Clone + Unpin + 'static { /// An executor that can execute a batch of blocks given a database. type BatchExecutor + Display>>: for<'a> BatchExecutor< DB, - Input<'a> = BlockExecutionInput<'a, BlockWithSenders>, + Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>, Output = ExecutionOutcome, Error = BlockExecutionError, >; @@ -215,7 +232,7 @@ mod tests { struct TestExecutor(PhantomData); impl Executor for TestExecutor { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -225,7 +242,7 @@ mod tests { } impl BatchExecutor for TestExecutor { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; @@ -264,6 +281,6 @@ mod tests { requests: None, }; let block = BlockWithSenders::new(block, Default::default()).unwrap(); - let _ = executor.execute(BlockExecutionInput::new(&block, U256::ZERO)); + let _ = executor.execute(BlockExecutionInput::new(&block, U256::ZERO, None)); } } diff --git a/crates/evm/src/noop.rs b/crates/evm/src/noop.rs index 80a2b76de8..72c0ed9d91 100644 --- a/crates/evm/src/noop.rs +++ b/crates/evm/src/noop.rs @@ -4,7 +4,7 @@ use std::fmt::Display; use reth_execution_errors::BlockExecutionError; use reth_execution_types::ExecutionOutcome; -use reth_primitives::{BlockNumber, BlockWithSenders, Receipt}; +use reth_primitives::{BlockNumber, BlockWithSenders, Header, Receipt}; use reth_prune_types::PruneModes; use reth_storage_errors::provider::ProviderError; use revm_primitives::db::Database; @@ -41,7 +41,7 @@ impl BlockExecutorProvider for NoopBlockExecutorProvider { } impl Executor for NoopBlockExecutorProvider { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -51,7 +51,7 @@ impl Executor for NoopBlockExecutorProvider { } impl BatchExecutor for NoopBlockExecutorProvider { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; diff --git a/crates/evm/src/test_utils.rs b/crates/evm/src/test_utils.rs index 67edbce418..76f4f65214 100644 --- a/crates/evm/src/test_utils.rs +++ b/crates/evm/src/test_utils.rs @@ -6,7 +6,7 @@ use crate::execute::{ use parking_lot::Mutex; use reth_execution_errors::BlockExecutionError; use reth_execution_types::ExecutionOutcome; -use reth_primitives::{BlockNumber, BlockWithSenders, Receipt}; +use reth_primitives::{BlockNumber, BlockWithSenders, Header, Receipt}; use reth_prune_types::PruneModes; use reth_storage_errors::provider::ProviderError; use revm_primitives::db::Database; @@ -46,7 +46,7 @@ impl BlockExecutorProvider for MockExecutorProvider { } impl Executor for MockExecutorProvider { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -64,7 +64,7 @@ impl Executor for MockExecutorProvider { } impl BatchExecutor for MockExecutorProvider { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; diff --git a/crates/exex/exex/src/backfill/job.rs b/crates/exex/exex/src/backfill/job.rs index fa8695740b..892f63efac 100644 --- a/crates/exex/exex/src/backfill/job.rs +++ b/crates/exex/exex/src/backfill/job.rs @@ -61,7 +61,7 @@ where trace!(target: "exex::backfill", number = block_number, txs = block_with_senders.block.body.len(), "Executing block"); - let block_execution_output = executor.execute((&block_with_senders, td).into())?; + let block_execution_output = executor.execute((&block_with_senders, td, None).into())?; Ok((block_with_senders, block_execution_output)) } diff --git a/crates/exex/exex/src/backfill/mod.rs b/crates/exex/exex/src/backfill/mod.rs index 40cc48c6bb..d53d021df7 100644 --- a/crates/exex/exex/src/backfill/mod.rs +++ b/crates/exex/exex/src/backfill/mod.rs @@ -161,7 +161,7 @@ where } .with_senders_unchecked(senders); - executor.execute_and_verify_one((&block, td).into())?; + executor.execute_and_verify_one((&block, td, None).into())?; execution_duration += execute_start.elapsed(); // TODO(alexey): report gas metrics using `block.header.gas_used` @@ -287,7 +287,11 @@ mod tests { provider.tx_ref(), provider.static_file_provider().clone(), ))) - .execute(BlockExecutionInput { block, total_difficulty: U256::ZERO })?; + .execute(BlockExecutionInput { + block, + total_difficulty: U256::ZERO, + ancestor_headers: None, + })?; block_execution_output.state.reverts.sort(); // Convert the block execution output to an execution outcome for committing to the database diff --git a/crates/optimism/evm/src/execute.rs b/crates/optimism/evm/src/execute.rs index 3ff38e4dea..1f32449b83 100644 --- a/crates/optimism/evm/src/execute.rs +++ b/crates/optimism/evm/src/execute.rs @@ -391,7 +391,7 @@ where EvmConfig: ConfigureEvm, DB: Database + std::fmt::Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = BlockExecutionOutput; type Error = BlockExecutionError; @@ -403,7 +403,7 @@ where /// /// State changes are committed to the database. fn execute(mut self, input: Self::Input<'_>) -> Result { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, .. } = input; let (receipts, gas_used) = self.execute_without_verification(block, total_difficulty)?; // NOTE: we need to merge keep the reverts for the bundle retention @@ -449,12 +449,12 @@ where EvmConfig: ConfigureEvm, DB: Database + std::fmt::Display>, { - type Input<'a> = BlockExecutionInput<'a, BlockWithSenders>; + type Input<'a> = BlockExecutionInput<'a, BlockWithSenders, Header>; type Output = ExecutionOutcome; type Error = BlockExecutionError; fn execute_and_verify_one(&mut self, input: Self::Input<'_>) -> Result<(), Self::Error> { - let BlockExecutionInput { block, total_difficulty } = input; + let BlockExecutionInput { block, total_difficulty, .. } = input; let (receipts, _gas_used) = self.executor.execute_without_verification(block, total_difficulty)?; @@ -606,6 +606,7 @@ mod tests { senders: vec![addr, addr], }, U256::ZERO, + None, ) .into(), ) @@ -688,6 +689,7 @@ mod tests { senders: vec![addr, addr], }, U256::ZERO, + None, ) .into(), ) diff --git a/crates/stages/stages/src/stages/execution.rs b/crates/stages/stages/src/stages/execution.rs index 08a5d07d24..7b605006be 100644 --- a/crates/stages/stages/src/stages/execution.rs +++ b/crates/stages/stages/src/stages/execution.rs @@ -275,7 +275,7 @@ where // Execute the block let execute_start = Instant::now(); - executor.execute_and_verify_one((&block, td).into()).map_err(|error| { + executor.execute_and_verify_one((&block, td, None).into()).map_err(|error| { StageError::Block { block: Box::new(block.header.clone().seal_slow()), error: BlockErrorKind::Execution(error), From d6ab73ea257595a1789566f1e847d875d623348d Mon Sep 17 00:00:00 2001 From: dylanhuang Date: Wed, 21 Aug 2024 18:54:30 +0800 Subject: [PATCH 3/5] fix: print CanonicalBlockAdded logs after committed db (#115) --- crates/consensus/beacon/src/engine/mod.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/consensus/beacon/src/engine/mod.rs b/crates/consensus/beacon/src/engine/mod.rs index 08cf1f2e05..8d2495bca4 100644 --- a/crates/consensus/beacon/src/engine/mod.rs +++ b/crates/consensus/beacon/src/engine/mod.rs @@ -1734,14 +1734,6 @@ where Ok(status) => { match status { InsertPayloadOk::Inserted(BlockStatus::Valid(_)) => { - let elapsed = start.elapsed(); - let event_block = Arc::new(block); - let event = BeaconConsensusEngineEvent::CanonicalBlockAdded( - event_block, - elapsed, - ); - self.event_sender.notify(event); - // block is connected to the canonical chain and is valid. // if it's not connected to current canonical head, the state root // has not been validated. @@ -1759,6 +1751,14 @@ where ) } } + + let elapsed = start.elapsed(); + let event_block = Arc::new(block); + let event = BeaconConsensusEngineEvent::CanonicalBlockAdded( + event_block, + elapsed, + ); + self.event_sender.notify(event); } InsertPayloadOk::Inserted(BlockStatus::Disconnected { head, From 74948d9e43e451557fa394c5052508a4e1499ebf Mon Sep 17 00:00:00 2001 From: yutianwu Date: Thu, 22 Aug 2024 14:26:53 +0800 Subject: [PATCH 4/5] feat: add mainnet fork time for HaberFix and Bohr upgrade (#116) --- crates/ethereum-forks/src/hardfork/bsc.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/ethereum-forks/src/hardfork/bsc.rs b/crates/ethereum-forks/src/hardfork/bsc.rs index 204528d11a..de7657244d 100644 --- a/crates/ethereum-forks/src/hardfork/bsc.rs +++ b/crates/ethereum-forks/src/hardfork/bsc.rs @@ -221,6 +221,8 @@ impl BscHardfork { (Self::FeynmanFix.boxed(), ForkCondition::Timestamp(1713419340)), (EthereumHardfork::Cancun.boxed(), ForkCondition::Timestamp(1718863500)), (Self::Haber.boxed(), ForkCondition::Timestamp(1718863500)), + (Self::HaberFix.boxed(), ForkCondition::Timestamp(1727316120)), + (Self::Bohr.boxed(), ForkCondition::Timestamp(1727317200)), ]) } From f6b11141a1f4dd1c475f39e23d3bbe78e63b35d6 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+pythonberg1997@users.noreply.github.com> Date: Fri, 23 Aug 2024 15:26:46 +0800 Subject: [PATCH 5/5] chore: add change log and update deps for release v1.0.2 (#117) --- CHANGELOG.md | 17 +++- Cargo.lock | 236 +++++++++++++++++++++++++-------------------------- Cargo.toml | 10 +-- 3 files changed, 138 insertions(+), 125 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4661e2c6ca..b073838626 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## V1.0.2 +This release is for BSC mainnet HaberFix and Bohr upgrade and opBNB mainnet Wright upgrade. + +### FEATURES +* [\#106](https://github.com/bnb-chain/reth/pull/106) feat: add mainnet fork time for Wright upgrade +* [\#116](https://github.com/bnb-chain/reth/pull/116) feat: add mainnet fork time for HaberFix and Bohr upgrade + +### BUGFIX +* [\#111](https://github.com/bnb-chain/reth/pull/111) fix: cannot find parent block during livesync +* [\#113](https://github.com/bnb-chain/reth/pull/113) fix: system account transition issue in `distribute_incoming` +* [\#115](https://github.com/bnb-chain/reth/pull/115) fix: print CanonicalBlockAdded logs after committed db + + ## V1.0.1 This release is for BSC testnet Bohr upgrade and opBNB testnet Wright upgrade. @@ -7,16 +20,16 @@ This release is for BSC testnet Bohr upgrade and opBNB testnet Wright upgrade. * [\#102](https://github.com/bnb-chain/reth/pull/102) chore: update deps * [\#101](https://github.com/bnb-chain/reth/pull/101) feat: support traceBlock and traceTransaction for bsc * [\#100](https://github.com/bnb-chain/reth/pull/100) feat: add fork time for Bohr Hardfork of BSC in testnet -* [\#99](https://github.com/bnb-chain/reth/pull/99) feat: add fork time for Wright Hardfork of opBNB in testnet +* [\#99](https://github.com/bnb-chain/reth/pull/99) feat: add fork time for Wright Hardfork of opBNB in testnet * [\#94](https://github.com/bnb-chain/reth/pull/94) feat: support Wright upgrade for opbnb * [\#95](https://github.com/bnb-chain/reth/pull/95) feat: add prune for ancient sidecars data * [\#86](https://github.com/bnb-chain/reth/pull/86) feat: implement the Bohr upgrade of BSC * [\#98](https://github.com/bnb-chain/reth/pull/98) feat: merge with upstream v1.0.3 version - ### BUGFIX * [\#97](https://github.com/bnb-chain/reth/pull/97) fix: snapshot incompatibility issue + ## v1.0.0 The Reth is entering production-ready v1.0.0. Thanks to the Paradigm team for their continuous iterations on Reth, providing the community with a highly scalable, modular, high-performance, and feature-rich client. diff --git a/Cargo.lock b/Cargo.lock index 91fd00c99c..71201ffd22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2949,7 +2949,7 @@ dependencies = [ [[package]] name = "ef-tests" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "rayon", @@ -7041,7 +7041,7 @@ dependencies = [ [[package]] name = "reth" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "aquamarine", @@ -7123,7 +7123,7 @@ dependencies = [ [[package]] name = "reth-auto-seal-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures-util", "reth-beacon-consensus", @@ -7149,7 +7149,7 @@ dependencies = [ [[package]] name = "reth-basic-payload-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "futures-core", @@ -7171,7 +7171,7 @@ dependencies = [ [[package]] name = "reth-beacon-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "assert_matches", @@ -7223,7 +7223,7 @@ dependencies = [ [[package]] name = "reth-bench" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7264,7 +7264,7 @@ dependencies = [ [[package]] name = "reth-blockchain-tree" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "aquamarine", @@ -7298,7 +7298,7 @@ dependencies = [ [[package]] name = "reth-blockchain-tree-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -7309,11 +7309,11 @@ dependencies = [ [[package]] name = "reth-bsc-cli" -version = "1.0.3" +version = "1.0.2" [[package]] name = "reth-bsc-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -7352,7 +7352,7 @@ dependencies = [ [[package]] name = "reth-bsc-engine" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -7396,7 +7396,7 @@ dependencies = [ [[package]] name = "reth-chainspec" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-chains", "alloy-eips", @@ -7420,7 +7420,7 @@ dependencies = [ [[package]] name = "reth-cli" -version = "1.0.3" +version = "1.0.2" dependencies = [ "clap", "eyre", @@ -7430,7 +7430,7 @@ dependencies = [ [[package]] name = "reth-cli-commands" -version = "1.0.3" +version = "1.0.2" dependencies = [ "ahash", "arbitrary", @@ -7483,7 +7483,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-tasks", "tokio", @@ -7492,7 +7492,7 @@ dependencies = [ [[package]] name = "reth-cli-util" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -7507,7 +7507,7 @@ dependencies = [ [[package]] name = "reth-codecs" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7528,7 +7528,7 @@ dependencies = [ [[package]] name = "reth-codecs-derive" -version = "1.0.3" +version = "1.0.2" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -7539,7 +7539,7 @@ dependencies = [ [[package]] name = "reth-config" -version = "1.0.3" +version = "1.0.2" dependencies = [ "confy", "humantime-serde", @@ -7554,7 +7554,7 @@ dependencies = [ [[package]] name = "reth-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "auto_impl", "reth-primitives", @@ -7563,7 +7563,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" -version = "1.0.3" +version = "1.0.2" dependencies = [ "mockall", "rand 0.8.5", @@ -7575,7 +7575,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7597,7 +7597,7 @@ dependencies = [ [[package]] name = "reth-db" -version = "1.0.3" +version = "1.0.2" dependencies = [ "arbitrary", "assert_matches", @@ -7636,7 +7636,7 @@ dependencies = [ [[package]] name = "reth-db-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "arbitrary", "assert_matches", @@ -7668,7 +7668,7 @@ dependencies = [ [[package]] name = "reth-db-common" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "boyer-moore-magiclen", @@ -7693,7 +7693,7 @@ dependencies = [ [[package]] name = "reth-discv4" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -7720,7 +7720,7 @@ dependencies = [ [[package]] name = "reth-discv5" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -7746,7 +7746,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-chains", "alloy-primitives", @@ -7774,7 +7774,7 @@ dependencies = [ [[package]] name = "reth-downloaders" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "assert_matches", @@ -7809,7 +7809,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-network", @@ -7841,7 +7841,7 @@ dependencies = [ [[package]] name = "reth-ecies" -version = "1.0.3" +version = "1.0.2" dependencies = [ "aes 0.8.4", "alloy-primitives", @@ -7871,7 +7871,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-payload-primitives", @@ -7880,7 +7880,7 @@ dependencies = [ [[package]] name = "reth-engine-tree" -version = "1.0.3" +version = "1.0.2" dependencies = [ "aquamarine", "assert_matches", @@ -7928,7 +7928,7 @@ dependencies = [ [[package]] name = "reth-engine-util" -version = "1.0.3" +version = "1.0.2" dependencies = [ "eyre", "futures", @@ -7946,7 +7946,7 @@ dependencies = [ [[package]] name = "reth-errors" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-blockchain-tree-api", "reth-consensus", @@ -7958,7 +7958,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "arbitrary", @@ -7992,7 +7992,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-chains", "alloy-genesis", @@ -8013,7 +8013,7 @@ dependencies = [ [[package]] name = "reth-ethereum-cli" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "clap", @@ -8026,7 +8026,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-consensus", @@ -8037,7 +8037,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures", "pin-project", @@ -8056,7 +8056,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "reth-chainspec", @@ -8074,7 +8074,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-chains", "alloy-primitives", @@ -8093,7 +8093,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-basic-payload-builder", "reth-errors", @@ -8111,7 +8111,7 @@ dependencies = [ [[package]] name = "reth-etl" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "rayon", @@ -8121,7 +8121,7 @@ dependencies = [ [[package]] name = "reth-evm" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "auto_impl", @@ -8139,7 +8139,7 @@ dependencies = [ [[package]] name = "reth-evm-bsc" -version = "1.0.3" +version = "1.0.2" dependencies = [ "bitset", "blst", @@ -8162,7 +8162,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "alloy-sol-types", @@ -8182,7 +8182,7 @@ dependencies = [ [[package]] name = "reth-evm-optimism" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-consensus-common", @@ -8202,7 +8202,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8215,7 +8215,7 @@ dependencies = [ [[package]] name = "reth-execution-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8229,7 +8229,7 @@ dependencies = [ [[package]] name = "reth-exex" -version = "1.0.3" +version = "1.0.2" dependencies = [ "eyre", "futures", @@ -8263,7 +8263,7 @@ dependencies = [ [[package]] name = "reth-exex-test-utils" -version = "1.0.3" +version = "1.0.2" dependencies = [ "eyre", "futures-util", @@ -8293,7 +8293,7 @@ dependencies = [ [[package]] name = "reth-exex-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "reth-provider", @@ -8302,7 +8302,7 @@ dependencies = [ [[package]] name = "reth-fs-util" -version = "1.0.3" +version = "1.0.2" dependencies = [ "serde", "serde_json", @@ -8311,7 +8311,7 @@ dependencies = [ [[package]] name = "reth-ipc" -version = "1.0.3" +version = "1.0.2" dependencies = [ "async-trait", "bytes 1.7.0", @@ -8333,7 +8333,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "1.0.3" +version = "1.0.2" dependencies = [ "bitflags 2.6.0", "byteorder", @@ -8353,7 +8353,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" -version = "1.0.3" +version = "1.0.2" dependencies = [ "bindgen", "cc", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "reth-metrics" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures", "metrics", @@ -8372,7 +8372,7 @@ dependencies = [ [[package]] name = "reth-metrics-derive" -version = "1.0.3" +version = "1.0.2" dependencies = [ "metrics", "once_cell", @@ -8386,14 +8386,14 @@ dependencies = [ [[package]] name = "reth-net-banlist" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", ] [[package]] name = "reth-net-nat" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures-util", "reqwest 0.12.5", @@ -8405,7 +8405,7 @@ dependencies = [ [[package]] name = "reth-network" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-node-bindings", "alloy-provider", @@ -8463,7 +8463,7 @@ dependencies = [ [[package]] name = "reth-network-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "alloy-rpc-types-admin", @@ -8477,7 +8477,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" -version = "1.0.3" +version = "1.0.2" dependencies = [ "auto_impl", "futures", @@ -8495,7 +8495,7 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -8511,7 +8511,7 @@ dependencies = [ [[package]] name = "reth-network-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "humantime-serde", "reth-net-banlist", @@ -8524,7 +8524,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" -version = "1.0.3" +version = "1.0.2" dependencies = [ "anyhow", "bincode", @@ -8545,7 +8545,7 @@ dependencies = [ [[package]] name = "reth-node-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-db-api", "reth-engine-primitives", @@ -8560,7 +8560,7 @@ dependencies = [ [[package]] name = "reth-node-bsc" -version = "1.0.3" +version = "1.0.2" dependencies = [ "eyre", "futures", @@ -8591,7 +8591,7 @@ dependencies = [ [[package]] name = "reth-node-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "aquamarine", "backon", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "reth-node-core" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "alloy-rpc-types-engine", @@ -8707,7 +8707,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -8748,7 +8748,7 @@ dependencies = [ [[package]] name = "reth-node-events" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rpc-types-engine", "futures", @@ -8770,7 +8770,7 @@ dependencies = [ [[package]] name = "reth-node-optimism" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -8820,7 +8820,7 @@ dependencies = [ [[package]] name = "reth-optimism-cli" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -8859,7 +8859,7 @@ dependencies = [ [[package]] name = "reth-optimism-consensus" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-consensus", @@ -8870,7 +8870,7 @@ dependencies = [ [[package]] name = "reth-optimism-payload-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "reth-basic-payload-builder", @@ -8894,11 +8894,11 @@ dependencies = [ [[package]] name = "reth-optimism-primitives" -version = "1.0.3" +version = "1.0.2" [[package]] name = "reth-optimism-rpc" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "jsonrpsee", @@ -8926,7 +8926,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures-util", "metrics", @@ -8948,7 +8948,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-errors", @@ -8962,7 +8962,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-chainspec", "reth-primitives", @@ -8972,7 +8972,7 @@ dependencies = [ [[package]] name = "reth-primitives" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-chains", "alloy-eips", @@ -9021,7 +9021,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9048,7 +9048,7 @@ dependencies = [ [[package]] name = "reth-provider" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "alloy-rpc-types-engine", @@ -9091,7 +9091,7 @@ dependencies = [ [[package]] name = "reth-prune" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "assert_matches", @@ -9120,7 +9120,7 @@ dependencies = [ [[package]] name = "reth-prune-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "arbitrary", @@ -9141,7 +9141,7 @@ dependencies = [ [[package]] name = "reth-revm" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-eips", "reth-chainspec", @@ -9159,7 +9159,7 @@ dependencies = [ [[package]] name = "reth-rpc" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-dyn-abi", "alloy-genesis", @@ -9217,7 +9217,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "jsonrpsee", "reth-engine-primitives", @@ -9230,7 +9230,7 @@ dependencies = [ [[package]] name = "reth-rpc-api-testing-util" -version = "1.0.3" +version = "1.0.2" dependencies = [ "futures", "jsonrpsee", @@ -9245,7 +9245,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" -version = "1.0.3" +version = "1.0.2" dependencies = [ "clap", "http 1.1.0", @@ -9291,7 +9291,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "assert_matches", @@ -9324,7 +9324,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-dyn-abi", "async-trait", @@ -9356,7 +9356,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-sol-types", "derive_more", @@ -9393,7 +9393,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rpc-types-engine", "assert_matches", @@ -9410,7 +9410,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "jsonrpsee-core", @@ -9425,7 +9425,7 @@ dependencies = [ [[package]] name = "reth-rpc-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "alloy-rpc-types", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "reth-rpc-types-compat" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "alloy-rpc-types", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "reth-stages" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "assert_matches", @@ -9509,7 +9509,7 @@ dependencies = [ [[package]] name = "reth-stages-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "aquamarine", @@ -9538,7 +9538,7 @@ dependencies = [ [[package]] name = "reth-stages-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "arbitrary", @@ -9556,7 +9556,7 @@ dependencies = [ [[package]] name = "reth-static-file" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "assert_matches", @@ -9579,7 +9579,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-primitives", "clap", @@ -9590,7 +9590,7 @@ dependencies = [ [[package]] name = "reth-storage-api" -version = "1.0.3" +version = "1.0.2" dependencies = [ "auto_impl", "reth-chainspec", @@ -9606,7 +9606,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" -version = "1.0.3" +version = "1.0.2" dependencies = [ "reth-fs-util", "reth-primitives", @@ -9615,7 +9615,7 @@ dependencies = [ [[package]] name = "reth-tasks" -version = "1.0.3" +version = "1.0.2" dependencies = [ "auto_impl", "dyn-clone", @@ -9632,7 +9632,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-genesis", "rand 0.8.5", @@ -9642,7 +9642,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" -version = "1.0.3" +version = "1.0.2" dependencies = [ "tokio", "tokio-stream", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "1.0.3" +version = "1.0.2" dependencies = [ "clap", "eyre", @@ -9665,7 +9665,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "aquamarine", @@ -9705,7 +9705,7 @@ dependencies = [ [[package]] name = "reth-trie" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "auto_impl", @@ -9739,7 +9739,7 @@ dependencies = [ [[package]] name = "reth-trie-common" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -9768,7 +9768,7 @@ dependencies = [ [[package]] name = "reth-trie-parallel" -version = "1.0.3" +version = "1.0.2" dependencies = [ "alloy-rlp", "criterion", @@ -9795,7 +9795,7 @@ dependencies = [ [[package]] name = "revm" version = "12.1.0" -source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" +source = "git+https://github.com/bnb-chain/revm?tag=v1.0.1#0ba000fbdf2bfb9b01c5cb862b0f13b5ab4ee98d" dependencies = [ "auto_impl", "cfg-if", @@ -9827,7 +9827,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "8.1.0" -source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" +source = "git+https://github.com/bnb-chain/revm?tag=v1.0.1#0ba000fbdf2bfb9b01c5cb862b0f13b5ab4ee98d" dependencies = [ "revm-primitives", "serde", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "9.2.0" -source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" +source = "git+https://github.com/bnb-chain/revm?tag=v1.0.1#0ba000fbdf2bfb9b01c5cb862b0f13b5ab4ee98d" dependencies = [ "alloy-rlp", "aurora-engine-modexp", @@ -9864,7 +9864,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "7.1.0" -source = "git+https://github.com/bnb-chain/revm?rev=1fc86e73a51f2c27d41601ba16e8b746109be988#1fc86e73a51f2c27d41601ba16e8b746109be988" +source = "git+https://github.com/bnb-chain/revm?tag=v1.0.1#0ba000fbdf2bfb9b01c5cb862b0f13b5ab4ee98d" dependencies = [ "alloy-eips", "alloy-primitives", diff --git a/Cargo.toml b/Cargo.toml index 4466775a6c..24c55325cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "1.0.3" +version = "1.0.2" edition = "2021" rust-version = "1.79" license = "MIT OR Apache-2.0" @@ -554,10 +554,10 @@ test-fuzz = "5" iai-callgrind = "0.11" [patch.crates-io] -revm = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } -revm-interpreter = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } -revm-precompile = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } -revm-primitives = { git = "https://github.com/bnb-chain/revm", rev = "1fc86e73a51f2c27d41601ba16e8b746109be988" } +revm = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.1" } +revm-interpreter = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.1" } +revm-precompile = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.1" } +revm-primitives = { git = "https://github.com/bnb-chain/revm", tag = "v1.0.1" } alloy-chains = { git = "https://github.com/bnb-chain/alloy-chains-rs.git", tag = "v1.0.0" } alloy-rpc-types-eth = { git = "https://github.com/bnb-chain/alloy", tag = "v1.0.0" } alloy-consensus = { git = "https://github.com/bnb-chain/alloy", tag = "v1.0.0" }