Description
To finalize repricing numbers, we need to run the complete benchmark test suite on both compute and stateful benchmarks (not repricing-specific).
Initial results on Benchmarkoor:
This tracker documents what's missing or broken in the output.
Compute
Statistics: passed 2040, failed 204, skipped 22, deselected 2.
These scenarios are not constructed successfully via the stateful filler. The constructed blocks are not accepted by clients:
Refactor PR: issue #3282
Below tests needs further refactor, the current storage initialization approach would exceed the initcode prefix size limit.
Below tests are being skipped:
Stateful
The test is limited to tests/benchmark/stateful/bloatnet, below is the failing cases:
depth_benchmarks/test_deep_branch.py
eip7928_block_level_access_lists/: not within the current scope.
test_account_query.py: test_balance_query, test_extcodesize_bytecode_sizes
test_sload.py: test_sload_bloated_prefetch_miss, test_sload_bloated_multi_contract[existing_slots_True]
test_sstore.py: test_sstore_dirty_transitions[oscillation_4x_from_zero]
test_transaction_types.py: test_ether_transfers_onchain_receivers[to_self]
test_erc20.py
test_account_access:non-existing scenario exceeds block gas limit.
test_ether_transfers_onchain_receivers: diff_to_nonexistent is not the worst case version, diff_to_self is broken due to RPC issue.
Suggestion to the next step:
- Exclude p1, p2 and
test_sload_bloated_multi_contract from this run, as this benchmark might require additional pre-state.
- Remove tests in p3 and p7, since they are mostly covered by existing scenarios.
Comment here for visibility: #3106 (comment), now waiting for CPerezz' response.
This means we could focus on the following scenaio only:
Notes
Description
To finalize repricing numbers, we need to run the complete benchmark test suite on both compute and stateful benchmarks (not repricing-specific).
Initial results on Benchmarkoor:
This tracker documents what's missing or broken in the output.
Compute
Statistics: passed 2040, failed 204, skipped 22, deselected 2.
These scenarios are not constructed successfully via the stateful filler. The constructed blocks are not accepted by clients:
test_ether_transfers_to_precompiletest_ether_transfers: diff_acc* ignored (66/120)test_auth_transaction:empty_authority_Falseignored (16/32)test_storage_access_cold:absent_slots_Falseignored (14/28)test_selfdestruct_existingtest_ext_account_query_cold:absent_accounts_False(2/4)test_mixed_dependency_graph:all max_txs + half of half_max_txs (10/18)test_deploy_then_interact:max_txs-single_contract(2/12)Refactor PR: issue #3282
Below tests needs further refactor, the current storage initialization approach would exceed the initcode prefix size limit.
test_state_root_computation: initcode prefix too longBelow tests are being skipped:
test_unchunkified_bytecode: contract deployment gas exceeds the benchmark gas valuetest_creates_collisions: Benchmark gas value cannot cover a single contract creationtest_bls12_pairing_uncachable[num_pairs_24]: calldata intrinsic gas cost exceeds the gas limit, this could be refactored.test_block_full_access_list_and_data: EIP-7934 block RLP size limit might be exceeded -> this expected but worth refactoringStateful
The test is limited to
tests/benchmark/stateful/bloatnet, below is the failing cases:depth_benchmarks/test_deep_branch.pyeip7928_block_level_access_lists/: not within the current scope.test_account_query.py:test_balance_query,test_extcodesize_bytecode_sizestest_sload.py:test_sload_bloated_prefetch_miss,test_sload_bloated_multi_contract[existing_slots_True]test_sstore.py:test_sstore_dirty_transitions[oscillation_4x_from_zero]test_transaction_types.py:test_ether_transfers_onchain_receivers[to_self]test_erc20.pytest_account_access:non-existing scenario exceeds block gas limit.test_ether_transfers_onchain_receivers:diff_to_nonexistentis not the worst case version,diff_to_selfis broken due to RPC issue.Suggestion to the next step:
test_sload_bloated_multi_contractfrom this run, as this benchmark might require additional pre-state.Comment here for visibility: #3106 (comment), now waiting for CPerezz' response.
This means we could focus on the following scenaio only:
test_sload_bloated_prefetch_misstest_sstore_dirty_transitions[oscillation_4x_from_zero]test_ether_transfers_onchain_receivers[to_self]: *to_self costs only intrinsic gas per tx (12,000/tx), so a 300M gas target produces 25,000 transactions. build_block() RLP-encodes all of them into a single testing_buildBlockV1 request in one shot (it does not go through get_alloc's batching path) roughly 5.4-5.7MB total, which exceeds go-ethereum's plain HTTP RPC endpoint's hardcoded 5MB request-body limit (no CLI flag to raise it). At 60M the same case only produces 5,000 txs (~1.1MB), safely under the limit the 5x jump to 300M is what pushes it over.test_account_access- refactor(test-benchmark): split stateful setup transactions across blocks #3282test_ether_transfers_onchain_receivers- refactor(test-benchmark): split stateful setup transactions across blocks #3282Notes
benchmarks/amsterdam-> Done by PR feat(test-benchmark): add missing glam eip to benchmark [backport benchmarks/amsterdam] #3276benchmarks/amsterdam-> Done by PR feat(test-benchmark): enhance worst case coverage [backport forks/amsterdam] #3277