+ Hover an event on the left — the matching entry highlights in the record on the right. +
++ Run the block to generate the grouped view and full BAL record. +
+ +Waiting for block execution…
+What runs in this block
+{{ brief.lesson }}
+Accounts before execution
+{{ brief.actors[0]!.label }}
+{{ brief.actors[0]!.shortAddress }}
+{{ brief.actors[1]!.label }}
+{{ brief.actors[1]!.shortAddress }}
+Recipient
+0x0000…0000
+empty · touched on transfer
+Transaction
+{{ brief.action.headline }}
+{{ brief.action.detail }}
+Expect in BAL
+Contract logic
+{{ group.name }}
+{{ group.triggerLabel }}
+blockAccessListHash. ' +
+ 'This exploration runs real Amsterdam blocks via EthereumJS and inspects the generated BAL step by step.',
+ usageText:
+ 'Pick a curriculum step, read the scenario summary, then press Run block. ' +
+ 'The highlighted panel shows what changed in the BAL compared to the previous step. ' +
+ 'Expand the full JSON for details. Work through the examples in order for the guided tour.',
+ creatorName: 'HolgerD77',
+ creatorURL: 'https://x.com/HolgerD77',
+ poweredBy: [{ name: 'EthereumJS', href: 'https://github.com/ethereumjs/ethereumjs-monorepo' }],
+}
diff --git a/src/explorations/eip-7928/run.ts b/src/explorations/eip-7928/run.ts
new file mode 100644
index 0000000..9982a3d
--- /dev/null
+++ b/src/explorations/eip-7928/run.ts
@@ -0,0 +1,39 @@
+import { Common, Hardfork, Mainnet } from '@ethereumjs/common'
+import { bytesToHex } from '@ethereumjs/util'
+import { createVM, runBlock } from '@ethereumjs/vm'
+
+import { applyPreState, buildAmsterdamBlock } from './scenarios/helpers'
+import { getScenario } from './scenarios'
+
+import type { PreStateAccount, ScenarioRunResult } from './scenarios/types'
+
+export async function runScenario(scenarioId: string): Promise