1
+ import logging
1
2
from typing import Mapping
2
3
3
4
from chainbench .test_data .base import BaseTestData , BlockchainData , Blocks , ChainInfo
4
5
from chainbench .util .rng import get_rng
5
6
7
+ logger = logging .getLogger (__name__ )
8
+
6
9
7
10
class EVMTestData (BaseTestData ):
8
11
TXS_REQUIRED = 100
@@ -35,6 +38,16 @@ class EVMTestData(BaseTestData):
35
38
"start_block" : 20000000 ,
36
39
"end_block" : 32000000 ,
37
40
},
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
+ },
38
51
}
39
52
40
53
def _fetch_chain_id (self ) -> int :
@@ -57,23 +70,29 @@ def _fetch_random_block(self, start, end, return_txs=True) -> tuple[int, dict]:
57
70
block_number = rng .random .randint (start , end )
58
71
return self ._fetch_block (block_number , return_txs = return_txs )
59
72
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
+
60
86
# get initial data from blockchain
61
87
def _get_init_data (self , parsed_options ) -> BlockchainData :
62
88
txs : list [dict ] = []
63
89
tx_hashes : list [str ] = []
64
90
accounts : set [str ] = set ()
65
91
blocks : Blocks = []
66
- chain_id : int = self ._fetch_chain_id ()
67
92
start_block_number : int
68
93
end_block_number : int
69
94
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 )
77
96
78
97
while self .TXS_REQUIRED > len (txs ) or self .ACCOUNTS_REQUIRED > len (accounts ) or self .SAVE_BLOCKS > len (blocks ):
79
98
if self .ACCOUNTS_REQUIRED > len (accounts ) or self .TXS_REQUIRED > len (txs ):
0 commit comments