Skip to content

Osaka Mainnet Testing

All tests selected for the Osaka hard fork passed! As part of our verification process, the STEEL Team ran a subset of consensus tests from ethereum/execution-specs directly on Ethereum mainnet.

Below you can find details about which tests were executed and the corresponding transaction hashes. The corresponding semi-manual testing effort for Prague can be found in this report.

Lighthouse Fulu Ascii Art

Summary

  • Test transactions were sent to mainnet for each EIP using EELS's execute subcommands.
  • All tests passed successfully with approximately ~0.0001 ETH gas used.
  • The tests focused on ModExp changes, the transaction gas limit cap, CLZ opcode, and P256Verify.

Schedule

  • Fork Epoch: 411392 (Dec-03-2025 09:49:11 PM UTC).
  • Fork Expected Finalization Epoch: 411394 (Dec-03-2025 10:01:59 PM UTC).
  • Testing commenced at the fork finalization epoch after the chain finalized successfully.

Test Specification

Included EIPs

Excluded EIPs

The following EIPs were not testable via EL transactions:

EIP-7823 (ModEXP Upper Bound)

Description

  • Executed the pre-compile at the exact boundary and above the boundary.

Command

Tests: test_eip_mainnet.py@2b7dc12

uv run execute remote --fork=Osaka -m mainnet \
tests/osaka/eip7823_modexp_upper_bounds/test_eip_mainnet.py \
--rpc-seed-key $MAINNET_RPC_SEED_KEY \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id $MAINNET_CHAIN_ID

Transaction Hashes

Test ID Transaction Hash
test_modexp_boundary[fork_Osaka-state_test-base-boundary-1024-bytes] 0x5be8356a...
test_modexp_over_boundary[fork_Osaka-state_test-base-over-boundary-1025-bytes] 0x1eaf26a2...

Outcome

✅ PASS - 2/2 tests passed.

EIP-7825 (Transaction Gas Limit Cap)

Description

  • Sent a transaction with the gas limit cap and above.

Command

Tests: test_eip_mainnet.py@2b7dc12

uv run execute remote --fork=Osaka -m mainnet \
tests/osaka/eip7825_transaction_gas_limit_cap/test_eip_mainnet.py \
--rpc-seed-key $MAINNET_RPC_SEED_KEY \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id $MAINNET_CHAIN_ID

Transaction Hashes

Test ID Transaction Hash
test_tx_gas_limit_cap_at_maximum[fork_Osaka-state_test] 0x95275083...
test_tx_gas_limit_cap_exceeded[fork_Osaka-state_test] (funding) 0xc5ac1131...
test_tx_gas_limit_cap_exceeded[fork_Osaka-state_test] (refund) 0x46d32a99...

Note: test_tx_gas_limit_cap_exceeded had no direct test transaction as expected (tx was rejected).

Outcome

✅ PASS - 2/2 tests passed.

EIP-7883 (ModEXP Gas Repricing)

Description

  • Triggered the gas cost changes in the ModExp precompile with five test cases.

Command

Tests: test_eip_mainnet.py@2b7dc12

uv run execute remote --fork=Osaka -m mainnet \
tests/osaka/eip7883_modexp_gas_increase/test_eip_mainnet.py \
--rpc-seed-key $MAINNET_RPC_SEED_KEY \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id $MAINNET_CHAIN_ID

Transaction Hashes

Test ID Transaction Hash
test_modexp_different_base_lengths[fork_Osaka-state_test-32-bytes-long-base] 0x26d0f8b5...
test_modexp_different_base_lengths[fork_Osaka-state_test-33-bytes-long-base] 0x71470510...
test_modexp_different_base_lengths[fork_Osaka-state_test-1024-bytes-long-exp] 0xca67e591...
test_modexp_different_base_lengths[fork_Osaka-state_test-nagydani-1-pow0x10001] 0x10d904c6...
test_modexp_different_base_lengths[fork_Osaka-state_test-zero-exponent-64bytes] 0xf2ae6f73...

Outcome

✅ PASS - 5/5 tests passed.

EIP-7910 (eth_config JSON-RPC Method)

Description

  • Ran execute eth-config after the fork to validate remaining BPO forks.

Command

uv run execute eth-config --network Mainnet \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id=1

Transaction Hashes

This was a regular call to a node's JSON RPC to request information; it did not require sending a transaction.

Outcome

✅ PASS - 6/6 tests passed against 5 mainnet RPC endpoints (Geth, Reth, Nethermind, Erigon, and Besu). All returned consistent results confirming correct eth_config implementation.

EIP-7939 (CLZ)

Description

  • Executed the CLZ opcode with different inputs.

Command

Tests: test_eip_mainnet.py@2b7dc12

uv run execute remote --fork=Osaka -m mainnet \
tests/osaka/eip7939_count_leading_zeros/test_eip_mainnet.py \
--rpc-seed-key $MAINNET_RPC_SEED_KEY \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id $MAINNET_CHAIN_ID

Transaction Hashes

Test ID Transaction Hash
test_clz_mainnet[fork_Osaka-state_test-clz-8-leading-zeros] 0x9ec7c2d9...
test_clz_mainnet[fork_Osaka-state_test-clz-all-zeros] 0x7f9ea62c...

Outcome

✅ PASS - 2/2 tests passed.

EIP-7951 (P256Verify)

Description

  • Executed the precompile with different inputs, including a negative test that used a signature valid only on secp256k1.

Command

Tests: test_eip_mainnet.py@2b7dc12

uv run execute remote --fork=Osaka -m mainnet \
tests/osaka/eip7951_p256verify_precompiles/test_eip_mainnet.py \
--rpc-seed-key $MAINNET_RPC_SEED_KEY \
--rpc-endpoint $MAINNET_RPC_ENDPOINT \
--chain-id $MAINNET_CHAIN_ID

Transaction Hashes

Test ID Transaction Hash
test_valid[fork_Osaka-state_test--valid_r1_sig-] 0x6911ce58...
test_invalid[fork_Osaka-state_test--invalid_r1_sig_but_valid_k1_sig-] 0x63e3c33f...

Outcome

✅ PASS - 2/2 tests passed.