Skip to content

Commit 0b48f4b

Browse files
committed
refactoring
- fix mypy errors - added eth_estimate_gas_task to EVMMethods - deprecated _eth_estimate_gas_params_factory
1 parent 0d73479 commit 0b48f4b

File tree

4 files changed

+39
-37
lines changed

4 files changed

+39
-37
lines changed

chainbench/profile/evm/heavy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def trace_replay_block_transactions_task(self):
5858
self.make_call(
5959
name="trace_replay_block_transactions",
6060
method="trace_replayBlockTransactions",
61-
params=self._trace_replay_block_transaction_params_factory(get_rng()),
61+
params=self._trace_replay_block_transaction_params_factory(),
6262
)
6363

6464
@task
@@ -137,5 +137,5 @@ def eth_estimate_gas_task(self):
137137
self.make_call(
138138
name="eth_estimate_gas",
139139
method="eth_estimateGas",
140-
params=self._eth_estimate_gas_params_factory(get_rng()),
140+
params=self._erc20_eth_call_params_factory(get_rng()),
141141
)

chainbench/test_data/blockchain/evm.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,23 @@
66

77

88
class SmartContract:
9-
def __init__(self, address: str, function_params: list[t.Callable]):
9+
def __init__(self, address: str):
1010
self.address = address
11-
self.function_params = function_params
1211

1312

1413
class ERC20Contract(SmartContract):
15-
def __init__(self, address: str):
16-
function_params = [
17-
self.total_supply_params,
18-
self.symbol_params,
19-
self.balance_of_params,
20-
self.name_params,
21-
]
22-
super().__init__(address, function_params)
23-
24-
def total_supply_params(self, **kwargs) -> dict[str, str]:
14+
def total_supply_params(self) -> dict[str, str]:
2515
return {"data": "0x18160ddd", "to": self.address}
2616

27-
def balance_of_params(self, **kwargs) -> dict[str, str]:
28-
return {"data": "0x70a08231" + kwargs["address"][2:].zfill(64), "to": self.address}
17+
def balance_of_params(self, target_address: str) -> dict[str, str]:
18+
return {"data": "0x70a08231" + target_address[2:].zfill(64), "to": self.address}
2919

30-
def symbol_params(self, **kwargs) -> dict[str, str]:
20+
def symbol_params(self) -> dict[str, str]:
3121
return {"data": "0x95d89b41", "to": self.address}
3222

33-
def name_params(self, **kwargs) -> dict[str, str]:
23+
def name_params(self) -> dict[str, str]:
3424
return {"data": "0x06fdde03", "to": self.address}
3525

36-
def get_random_function_params(self, rng: RNG) -> t.Callable:
37-
return rng.random.choice(self.function_params)
3826

3927
class NetworkInfo(t.TypedDict):
4028
name: str

chainbench/test_data/evm.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
Tx,
1414
TxHash,
1515
)
16-
from chainbench.test_data.blockchain.evm import ChainInfo
16+
from chainbench.test_data.blockchain.evm import ChainInfo, ERC20Contract
17+
from chainbench.util.rng import RNG
1718

1819
logger = logging.getLogger(__name__)
1920

@@ -26,6 +27,12 @@ def __init__(self, rpc_version: str = "2.0"):
2627
def set_chain_info(self, chain_id: ChainId):
2728
self.chain_info = ChainInfo(chain_id)
2829

30+
def get_random_erc20_contract(self, rng: RNG) -> ERC20Contract:
31+
if self.chain_info is None:
32+
raise ValueError("Chain info is not set")
33+
else:
34+
return self.chain_info.get_random_contract(rng)
35+
2936
def fetch_chain_id(self) -> int:
3037
return self._parse_hex_to_int(self._make_call("eth_chainId"))
3138

chainbench/user/evm.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ def _trace_block_by_hash_params_factory(self, rng: RNG) -> list[BlockHash | dict
7979
{"tracer": "callTracer", "timeout": self._default_trace_timeout},
8080
]
8181

82-
def _trace_replay_block_transaction_params_factory(self, rng: RNG) -> list[str | list[str]]:
82+
@staticmethod
83+
def _trace_replay_block_transaction_params_factory() -> list[str | list[str]]:
8384
return [
8485
"latest",
8586
["vmTrace", "trace", "stateDiff"],
@@ -107,31 +108,30 @@ def _trace_filter_params_factory(self, rng: RNG) -> list[dict]:
107108
}
108109
]
109110

110-
def _eth_estimate_gas_params_factory(self, rng: RNG) -> list[dict]:
111-
return [
112-
{
113-
"from": self.test_data.get_random_account(rng),
114-
"to": self.test_data.get_random_account(rng),
115-
}
116-
]
117-
118-
def _eth_fee_history_params_factory(self, rng: RNG) -> list[int | str | list[int]]:
111+
@staticmethod
112+
def _eth_fee_history_params_factory(rng: RNG) -> list[int | str | list[int]]:
119113
return [rng.random.randint(1, 1024), "latest", [25, 75]]
120114

121115
def _erc20_eth_call_params_factory(self, rng: RNG):
122-
contract = self.test_data.chain_info.get_random_contract(rng)
123-
function_params = contract.get_random_function_params(rng)
116+
contract = self.test_data.get_random_erc20_contract(rng)
117+
functions_params = [
118+
contract.total_supply_params(),
119+
contract.balance_of_params(self.test_data.get_random_account(rng)),
120+
contract.symbol_params(),
121+
contract.name_params(),
122+
]
124123
return [
125-
function_params(address=self.test_data.get_random_account(rng)),
124+
rng.random.choice(functions_params),
126125
"latest",
127126
]
128127

129-
def _erc20_eth_get_code_params_factory(self, rng:RNG):
128+
def _erc20_eth_get_code_params_factory(self, rng: RNG):
130129
return [
131-
self.test_data.chain_info.get_random_contract(rng).address,
130+
self.test_data.get_random_erc20_contract(rng).address,
132131
"latest",
133132
]
134133

134+
135135
class EVMMethods(EVMBenchUser):
136136
abstract = True
137137

@@ -156,6 +156,13 @@ def eth_chain_id_task(self):
156156
method="eth_chainId",
157157
)
158158

159+
def eth_estimate_gas_task(self):
160+
self.make_call(
161+
name="eth_estimate_gas",
162+
method="eth_estimateGas",
163+
params=self._erc20_eth_call_params_factory(self.rng.get_rng()),
164+
)
165+
159166
def eth_fee_history_task(self) -> None:
160167
self.make_call(
161168
method="eth_feeHistory",
@@ -333,7 +340,7 @@ def trace_block_task(self) -> None:
333340
def trace_replay_block_transactions_task(self) -> None:
334341
self.make_call(
335342
method="trace_replayBlockTransactions",
336-
params=self._trace_replay_block_transaction_params_factory(self.rng.get_rng()),
343+
params=self._trace_replay_block_transaction_params_factory(),
337344
)
338345

339346
def trace_replay_transaction_task(self) -> None:

0 commit comments

Comments
 (0)