1 of 7

Vanilla Besu�Preimage

Besu�Verkle

getPreImage

CL (Nimbus)

  • A vanilla Besu node syncs and generates preimages continuously.�
  • A custom RPC API allows the Verkle node to fetch preimages from the vanilla node.�
  • This setup impacts performance, but block time remains well below slot time, so migration timing measurements are unaffected.�
  • The preimage retrieval time is excluded from stateroot benchmarks.�
  • This ensures up to date preimages everytime -> Just restarts Verkle node between tests.

2 of 7

State Migration in Besu

  • Facade: Central logic that manages access to the current state.�
  • Bonsai PMT: The PMT state format used before the fork.�
  • Verkle: The new state format introduced after the fork.�

Migration Behavior:

  • Before the fork: The orchestrator routes all state access to Bonsai PMT.�
  • During the migration window: The orchestrator can interact with both Bonsai and Verkle�
  • After the migration The orchestrator exclusively uses Verkle for all state access.

Worldstate facade

Worldstate

Verkle

Worldstate Bonsai (PMT)

3 of 7

"chainId": 560048,

"homesteadBlock": 0,

"shanghaiTime": 0,

"cancunTime": 0,

"pragueTime": 1742999832,

yield new StateTransitionWorldStateProvider(

bonsaiWorldStateProvider, verkleWorldStateProvider, verkleMilestone, blockchain);

Besu verkle configuration

  • Keep the same genesis without verkleTimestamp (no invalid fork id)

  • Add the verkle timestamp directly in the code

4 of 7

Migration configuration

  • Tested on Hoodi

  • 5000 leafs from PMT to Verkle by block

With a configuration of 5000, we can reach between 5000 to 9000 leaves to insert into Verkle, even for empty blocks.�It can be explained because we increment by 1 per account, even though each account actually uses 2 leaves (basic data + code hash key).

5 of 7

Migration

  • Tested on Hoodi

Duration : 12h59m (slot time 12 secondes)

6 of 7

Migration validation

  • We can't validate the state root for now.

  • Validation using Ignacio's reference tests.

  • Validation by checking the gas used for each block and ensuring correct execution (no invalid nonce, etc.).

7 of 7

Migration next step

  • Continue to check if there is an issue

  • Cleaning the code of the branch

  • Testing in a testnet with more transactions.

Sepolia ? Mainnet ?