1+ import logging
12from typing import Mapping
23
34from chainbench .test_data .base import BaseTestData , BlockchainData , Blocks , ChainInfo
45from chainbench .util .rng import get_rng
56
7+ logger = logging .getLogger (__name__ )
8+
69
710class EVMTestData (BaseTestData ):
811 TXS_REQUIRED = 100
@@ -35,6 +38,16 @@ class EVMTestData(BaseTestData):
3538 "start_block" : 20000000 ,
3639 "end_block" : 32000000 ,
3740 },
41+ 8453 : {
42+ "name" : "base-mainnet" ,
43+ "start_block" : 1 ,
44+ "end_block" : 2400000 ,
45+ },
46+ 84531 : {
47+ "name" : "base-testnet" ,
48+ "start_block" : 1 ,
49+ "end_block" : 8200000 ,
50+ },
3851 }
3952
4053 def _fetch_chain_id (self ) -> int :
@@ -57,23 +70,29 @@ def _fetch_random_block(self, start, end, return_txs=True) -> tuple[int, dict]:
5770 block_number = rng .random .randint (start , end )
5871 return self ._fetch_block (block_number , return_txs = return_txs )
5972
73+ def _get_start_and_end_blocks (self , use_recent_blocks : bool ) -> tuple [int , int ]:
74+ chain_id : int = self ._fetch_chain_id ()
75+ if not use_recent_blocks and chain_id in self .CHAIN_INFO :
76+ start_block_number = self .CHAIN_INFO [chain_id ]["start_block" ]
77+ end_block_number = self .CHAIN_INFO [chain_id ]["end_block" ]
78+ logger .info ("Using blocks from %s to %s as test data" , start_block_number , end_block_number )
79+ return start_block_number , end_block_number
80+ else :
81+ end_block_number = int (self ._make_call ("eth_blockNumber" ), 0 )
82+ start_block_number = end_block_number - 20
83+ logger .info ("Using recent blocks from %s to %s as test data" , start_block_number , end_block_number )
84+ return start_block_number , end_block_number
85+
6086 # get initial data from blockchain
6187 def _get_init_data (self , parsed_options ) -> BlockchainData :
6288 txs : list [dict ] = []
6389 tx_hashes : list [str ] = []
6490 accounts : set [str ] = set ()
6591 blocks : Blocks = []
66- chain_id : int = self ._fetch_chain_id ()
6792 start_block_number : int
6893 end_block_number : int
6994 return_txs : bool
70-
71- if parsed_options .use_recent_blocks :
72- end_block_number = int (self ._make_call ("eth_blockNumber" ), 0 )
73- start_block_number = end_block_number - 20
74- else :
75- start_block_number = self .CHAIN_INFO [chain_id ]["start_block" ]
76- end_block_number = self .CHAIN_INFO [chain_id ]["end_block" ]
95+ start_block_number , end_block_number = self ._get_start_and_end_blocks (parsed_options .use_recent_blocks )
7796
7897 while self .TXS_REQUIRED > len (txs ) or self .ACCOUNTS_REQUIRED > len (accounts ) or self .SAVE_BLOCKS > len (blocks ):
7998 if self .ACCOUNTS_REQUIRED > len (accounts ) or self .TXS_REQUIRED > len (txs ):
0 commit comments