Skip to content

Osaka Mainnet Testing

As part of the hard-fork verification process, the STEEL Team executes a subset of consensus tests from ethereum/execution-specs directly on Ethereum mainnet - we're happy to report that all the tests selected for the Osaka hard fork passed!

In this post 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

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

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

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

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

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.