Skip to content

Commit 2d8447e

Browse files
committed
fix remaining test
1 parent 97a2e6c commit 2d8447e

File tree

1 file changed

+85
-60
lines changed
  • crates/bitfinity-block-confirmation/src

1 file changed

+85
-60
lines changed

crates/bitfinity-block-confirmation/src/lib.rs

Lines changed: 85 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ use reth_evm::{
99
execute::{BasicBlockExecutor, BlockExecutorProvider, Executor},
1010
ConfigureEvm, Evm,
1111
};
12-
use reth_evm_ethereum::{
13-
execute::EthExecutorProvider, EthEvmConfig
14-
};
12+
use reth_evm_ethereum::{execute::EthExecutorProvider, EthEvmConfig};
1513
use reth_node_types::NodeTypesWithDB;
1614
use reth_primitives::Block;
1715
use reth_primitives_traits::block::RecoveredBlock;
@@ -20,12 +18,12 @@ use tracing::{debug, error, info, trace};
2018
use reth_provider::{
2119
providers::ProviderNodeTypes, ChainSpecProvider as _, ExecutionOutcome, ProviderFactory,
2220
};
23-
use reth_revm::{context::TxEnv, db::{states::bundle_state::BundleRetention, StateBuilder}};
24-
2521
use reth_revm::{
26-
database::StateProviderDatabase,
27-
DatabaseCommit,
22+
context::TxEnv,
23+
db::{states::bundle_state::BundleRetention, StateBuilder},
2824
};
25+
26+
use reth_revm::{database::StateProviderDatabase, DatabaseCommit};
2927
use reth_rpc_eth_types::{cache::db::StateProviderTraitObjWrapper, StateCacheDb};
3028
use reth_trie::{HashedPostState, KeccakKeyHasher, StateRoot};
3129
use reth_trie_db::DatabaseStateRoot;
@@ -48,7 +46,7 @@ where
4846
impl<C, DB> BitfinityBlockConfirmation<C, DB>
4947
where
5048
C: Client,
51-
DB: NodeTypesWithDB<ChainSpec = reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
49+
DB: NodeTypesWithDB<ChainSpec=reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
5250
{
5351
/// Create a new [`BitfinityBlockConfirmation`].
5452
pub const fn new(
@@ -149,7 +147,8 @@ where
149147
"Executing {} blocks", blocks.len()
150148
);
151149
let executor = self.executor();
152-
let blocks_with_senders: eyre::Result<Vec<_>> = blocks.iter().map(Self::convert_block).collect();
150+
let blocks_with_senders: eyre::Result<Vec<_>> =
151+
blocks.iter().map(Self::convert_block).collect();
153152
let blocks_with_senders = blocks_with_senders?;
154153

155154
let output = executor.execute_batch(&blocks_with_senders)?;
@@ -172,25 +171,31 @@ where
172171
.enumerate()
173172
.map(|(index, tx)| {
174173
tx.recover_signer().map_err(|err| {
175-
eyre!("Failed to recover sender for transaction {index} with hash {:?}", tx.hash()).wrap_err(err)
174+
eyre!(
175+
"Failed to recover sender for transaction {index} with hash {:?}",
176+
tx.hash()
177+
)
178+
.wrap_err(err)
176179
})
177180
})
178181
.collect();
179182
let senders = senders?;
180183

181-
Ok(RecoveredBlock::new_unhashed(block.clone(), senders ))
184+
Ok(RecoveredBlock::new_unhashed(block.clone(), senders))
182185
}
183186

184187
/// Get the block executor for the latest block.
185188
fn executor(
186189
&self,
187-
) -> BasicBlockExecutor<EthEvmConfig, StateProviderDatabase<reth_chain_state::MemoryOverlayStateProviderRef<'_>>> {
188-
190+
) -> BasicBlockExecutor<
191+
EthEvmConfig,
192+
StateProviderDatabase<reth_chain_state::MemoryOverlayStateProviderRef<'_>>,
193+
> {
189194
let historical = self.provider_factory.latest().expect("no latest provider");
190195
let db = MemoryOverlayStateProvider::new(historical, Vec::new());
191196

192197
EthExecutorProvider::ethereum(self.provider_factory.chain_spec())
193-
.executor(StateProviderDatabase::new(db))
198+
.executor(StateProviderDatabase::new(db))
194199
}
195200

196201
/// Calculates POW hash
@@ -235,17 +240,13 @@ where
235240
let pow_tx =
236241
did::utils::block_confirmation_pow_transaction(from.clone(), base_fee, None, None);
237242

238-
// Simple transaction
239-
let kind = match pow_tx.to {
240-
Some(to) => TxKind::Call(to.0),
241-
None => TxKind::Create,
242-
};
243243
let tx = TxEnv {
244244
caller: pow_tx.from.into(),
245245
gas_limit: pow_tx.gas.0.to(),
246246
gas_price: pow_tx.gas_price.unwrap_or_default().0.to(),
247-
kind: kind,
247+
kind: TxKind::from(pow_tx.to.map(Into::into)),
248248
value: pow_tx.value.0,
249+
gas_priority_fee: None,
249250
..Default::default()
250251
};
251252

@@ -258,10 +259,7 @@ where
258259
let chain_spec = self.provider_factory.chain_spec();
259260
let evm_config = EthEvmConfig::new(chain_spec);
260261
let evm_env = evm_config.evm_env(&block.header);
261-
let mut evm = evm_config.evm_with_env(
262-
&mut state,
263-
evm_env,
264-
);
262+
let mut evm = evm_config.evm_with_env(&mut state, evm_env);
265263

266264
debug!(
267265
target: "bitfinity_block_confirmation::BitfinityBlockConfirmation",
@@ -315,15 +313,23 @@ where
315313

316314
#[cfg(test)]
317315
mod tests {
318-
319316
use alloy_consensus::{BlockHeader, Header, SignableTransaction, TxEip2930};
320317
use alloy_genesis::{Genesis, GenesisAccount};
321318

322319
use alloy_network::TxSignerSync;
323320
use alloy_primitives::{hex::FromHex, Address};
324321

325322
use alloy_signer::Signer;
326-
use did::{constant::EIP1559_INITIAL_BASE_FEE, rpc::{id::Id, request::RpcRequest, response::{Response, RpcResponse, Success}, version::Version}, U256};
323+
use did::{
324+
constant::EIP1559_INITIAL_BASE_FEE,
325+
rpc::{
326+
id::Id,
327+
request::RpcRequest,
328+
response::{Response, RpcResponse, Success},
329+
version::Version,
330+
},
331+
U256,
332+
};
327333

328334
use reth_chain_state::test_utils::TestBlockBuilder;
329335
use reth_chainspec::{
@@ -340,9 +346,7 @@ mod tests {
340346
use super::*;
341347

342348
use reth_node_types::{AnyNodeTypesWithEngine, FullNodePrimitives, NodeTypesWithDBAdapter};
343-
use reth_primitives::{
344-
Block, BlockBody, EthPrimitives, Receipt, TransactionSigned
345-
};
349+
use reth_primitives::{Block, BlockBody, EthPrimitives, Receipt, TransactionSigned};
346350
use reth_provider::{
347351
test_utils::create_test_provider_factory_with_chain_spec, BlockExecutionOutput,
348352
BlockReader, BlockWriter, DatabaseProviderFactory, EthStorage, HashedPostStateProvider,
@@ -368,7 +372,7 @@ mod tests {
368372
fn send_rpc_request(
369373
&self,
370374
_request: RpcRequest,
371-
) -> std::pin::Pin<Box<dyn Future<Output = anyhow::Result<RpcResponse>> + Send>> {
375+
) -> std::pin::Pin<Box<dyn Future<Output=anyhow::Result<RpcResponse>> + Send>> {
372376
let genesis_accounts = self.genesis_accounts.clone();
373377

374378
Box::pin(async move {
@@ -391,7 +395,7 @@ mod tests {
391395
transactions: Vec<TransactionSigned>,
392396
) -> eyre::Result<RecoveredBlock<Block>>
393397
where
394-
DB: NodeTypesWithDB<ChainSpec = reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
398+
DB: NodeTypesWithDB<ChainSpec=reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
395399
{
396400
use reth_primitives_traits::Block as _;
397401
let parent_block = provider_factory
@@ -420,8 +424,8 @@ mod tests {
420424
},
421425
body: BlockBody { transactions, ..Default::default() },
422426
}
423-
.try_into_recovered()
424-
.expect("failed to recover senders");
427+
.try_into_recovered()
428+
.expect("failed to recover senders");
425429

426430
Ok(block)
427431
}
@@ -433,7 +437,7 @@ mod tests {
433437
provider_factory: &ProviderFactory<DB>,
434438
) -> eyre::Result<RecoveredBlock<Block>>
435439
where
436-
DB: NodeTypesWithDB<ChainSpec = reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
440+
DB: NodeTypesWithDB<ChainSpec=reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
437441
{
438442
make_block(block_number, parent_hash, provider_factory, 0, vec![])
439443
}
@@ -446,7 +450,7 @@ mod tests {
446450
nonce: u64,
447451
) -> eyre::Result<RecoveredBlock<Block>>
448452
where
449-
DB: NodeTypesWithDB<ChainSpec = reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
453+
DB: NodeTypesWithDB<ChainSpec=reth_chainspec::ChainSpec> + ProviderNodeTypes + Clone,
450454
{
451455
let chain_spec = provider_factory.chain_spec();
452456
let mut signer = alloy_signer_local::PrivateKeySigner::from_slice(&[1; 32])?;
@@ -491,9 +495,9 @@ mod tests {
491495
where
492496
N: ProviderNodeTypes<
493497
Primitives: FullNodePrimitives<
494-
Block = reth_primitives::Block,
495-
BlockBody = reth_primitives::BlockBody,
496-
Receipt = reth_primitives::Receipt,
498+
Block=reth_primitives::Block,
499+
BlockBody=reth_primitives::BlockBody,
500+
Receipt=reth_primitives::Receipt,
497501
>,
498502
>,
499503
{
@@ -534,7 +538,20 @@ mod tests {
534538
fn setup_test_block_validator(
535539
extended_genesis: Option<(Address, did::U256)>,
536540
) -> (
537-
BitfinityBlockConfirmation<MockClient, NodeTypesWithDBAdapter<AnyNodeTypesWithEngine<EthPrimitives, EthEngineTypes, ChainSpec, MerklePatriciaTrie, EthStorage, EthEngineTypes>, Arc<TempDatabase<DatabaseEnv>>>>,
541+
BitfinityBlockConfirmation<
542+
MockClient,
543+
NodeTypesWithDBAdapter<
544+
AnyNodeTypesWithEngine<
545+
EthPrimitives,
546+
EthEngineTypes,
547+
ChainSpec,
548+
MerklePatriciaTrie,
549+
EthStorage,
550+
EthEngineTypes,
551+
>,
552+
Arc<TempDatabase<DatabaseEnv>>,
553+
>,
554+
>,
538555
RecoveredBlock<Block>,
539556
) {
540557
// EVM genesis accounts (similar to the test genesis in EVM)
@@ -616,13 +633,11 @@ mod tests {
616633
genesis_block.hash_slow().into(),
617634
&block_validator.provider_factory,
618635
)
619-
.unwrap();
636+
.unwrap();
620637

621638
// Insert the test block into the database.
622639
let provider_rw = block_validator.provider_factory.database_provider_rw().unwrap();
623-
provider_rw
624-
.insert_block(test_block.clone(), StorageLocation::Database)
625-
.unwrap();
640+
provider_rw.insert_block(test_block.clone(), StorageLocation::Database).unwrap();
626641
provider_rw.commit().unwrap();
627642

628643
test_block
@@ -634,8 +649,10 @@ mod tests {
634649
.unwrap();
635650

636651
// Calculate the POW hash.
637-
let pow =
638-
block_validator.compute_pow_hash(&block1.clone_block(), ExecutionOutcome::default()).await.unwrap();
652+
let pow = block_validator
653+
.compute_pow_hash(&block1.clone_block(), ExecutionOutcome::default())
654+
.await
655+
.unwrap();
639656

640657
assert_ne!(pow.0, KECCAK_EMPTY, "Proof of work hash should not be empty");
641658

@@ -658,7 +675,9 @@ mod tests {
658675
.get_executed_block_with_number(genesis_block.number + 1, genesis_block.hash_slow());
659676

660677
let outcome = block.execution_outcome();
661-
let pow_res = block_validator.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone()).await;
678+
let pow_res = block_validator
679+
.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone())
680+
.await;
662681

663682
assert!(pow_res.is_ok());
664683

@@ -675,8 +694,14 @@ mod tests {
675694
let outcome = block.execution_outcome();
676695

677696
// Compute POW hash twice with the same input
678-
let pow1 = block_validator.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone()).await.unwrap();
679-
let pow2 = block_validator.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone()).await.unwrap();
697+
let pow1 = block_validator
698+
.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone())
699+
.await
700+
.unwrap();
701+
let pow2 = block_validator
702+
.compute_pow_hash(&block.recovered_block().clone_block(), outcome.clone())
703+
.await
704+
.unwrap();
680705

681706
// Results should be deterministic
682707
assert_eq!(pow1, pow2, "POW hash computation should be deterministic");
@@ -721,7 +746,7 @@ mod tests {
721746
let expected_pow_hash = did::H256::from_hex_str(
722747
"0xe66caa3a5bf8a22c38c33e5fb4cab1bd1b34e9734526a8723c615e9d36ccc45b",
723748
)
724-
.unwrap();
749+
.unwrap();
725750

726751
let (block_validator, genesis_block) = setup_test_block_validator(None);
727752

@@ -731,13 +756,13 @@ mod tests {
731756
genesis_block.hash_slow().into(),
732757
&block_validator.provider_factory,
733758
)
734-
.unwrap();
759+
.unwrap();
735760
execute_block_and_commit_to_database(
736761
&block_validator.provider_factory,
737762
block_validator.provider_factory.chain_spec().clone(),
738763
&block,
739764
)
740-
.unwrap();
765+
.unwrap();
741766

742767
block
743768
};
@@ -752,7 +777,7 @@ mod tests {
752777
block_validator.provider_factory.chain_spec().clone(),
753778
&block,
754779
)
755-
.unwrap();
780+
.unwrap();
756781

757782
block
758783
};
@@ -766,7 +791,7 @@ mod tests {
766791
block_validator.provider_factory.chain_spec().clone(),
767792
&block,
768793
)
769-
.unwrap();
794+
.unwrap();
770795
let outcome = to_execution_outcome(block.number, &block_output);
771796

772797
// Compute POW hash for two different blocks
@@ -785,7 +810,7 @@ mod tests {
785810
let expected_pow_hash = did::H256::from_hex_str(
786811
"0xa349b3ca25925decd1c225b8bc3a133c436f3989eb8048e93ee1389c78a1d6a4",
787812
)
788-
.unwrap();
813+
.unwrap();
789814

790815
let signer = alloy_signer_local::PrivateKeySigner::from_slice(&[1; 32]).unwrap();
791816

@@ -799,13 +824,13 @@ mod tests {
799824
&block_validator.provider_factory,
800825
0,
801826
)
802-
.unwrap();
827+
.unwrap();
803828
execute_block_and_commit_to_database(
804829
&block_validator.provider_factory,
805830
block_validator.provider_factory.chain_spec().clone(),
806831
&block,
807832
)
808-
.unwrap();
833+
.unwrap();
809834

810835
block
811836
};
@@ -817,13 +842,13 @@ mod tests {
817842
&block_validator.provider_factory,
818843
1,
819844
)
820-
.unwrap();
845+
.unwrap();
821846
let out = execute_block_and_commit_to_database(
822847
&block_validator.provider_factory,
823848
block_validator.provider_factory.chain_spec().clone(),
824849
&block,
825850
)
826-
.unwrap();
851+
.unwrap();
827852

828853
to_execution_outcome(block.number, &out);
829854
block
@@ -835,13 +860,13 @@ mod tests {
835860
&block_validator.provider_factory,
836861
2,
837862
)
838-
.unwrap();
863+
.unwrap();
839864
let block_output = execute_block_and_commit_to_database(
840865
&block_validator.provider_factory,
841866
block_validator.provider_factory.chain_spec().clone(),
842867
&block,
843868
)
844-
.unwrap();
869+
.unwrap();
845870

846871
let outcome = to_execution_outcome(block.number, &block_output);
847872

0 commit comments

Comments
 (0)