Bloating methods

To inflate state from a ~3.5× starting point toward 10×, something has to write a great many leaves into the MPT. There are two honest ways to do it, and the project deliberately chose the slower one.

Path A — direct DB injection

Skip the EVM. Construct accounts and slots in memory, hash them into a trie, and commit nodes straight to the client’s snapshot DB.

Path B — commit through the node, replay via Engine API (chosen)

Build blocks full of state-mutating transactions and commit them into Nethermind through testing_commitBlockV1. Every committed block is real — it went through the EVM, the STF, and the snapshot-flush path — and it’s reachable by full validation, so snap sync works against the result. Each block is also saved to payloads.rlp, which replays on any client through engine_newPayloadV4 + engine_forkchoiceUpdatedV3.

Bloating verbs

The controller’s actions are a fixed set of verbs, each touching a different state axis:

VerbPrimary effect
eoatxnew externally-owned accounts (account-trie growth)
calltxcalls into existing contracts (storage churn)
deploytx / factorydeploytxnew contract code + storage roots
storagespamdense storage-slot writes (storage-trie growth)
erc20_bloater / erc20txERC-20 transfers — realistic balance-slot patterns
uniswap_swapsAMM swaps — deep, hot storage tries (the “DEX problem”)
gasburnertxgas consumption without state change (execution load)
storagerefundtxslot clears — exercises refund + trie-deletion paths

The active set is narrowable via ORCH_VERBS. Verb eligibility is contract-dependency aware: verbs that need a deployed contract are excluded at startup rather than failing mid-run.

Why not just use mainnet

Mainnet is the 1× anchor — the proof-size and trie-structure numbers on the metrics page are measured there directly, and they’re the load-bearing baseline. The interesting result is the curve above 1×. We don’t generate that state from scratch: we continue an existing ~3.5× Bloatnet and grow it through the real execution path, so the result is a state any client can independently re-derive by replaying payloads.rlp.