A real Robinhood Chain replay

ONE ACTION.
TWO HISTORIES.

One router action. The same later inputs.
What changes when that action does nothing?

Not predicted. Re-executed.

The transaction stays in history. Only its router commands are emptied.

Hold to disable · recorded execution

Choose a link to inspect itSelected events / gaps condensed

One window. 321 arrivals.

21 selected events, including all 16 changed outcomes.

What the replay found

Most of the future held.
16 outcomes didn't.

The very next transaction reverted. Then 262 in a row kept their outcome, through 40 blocks. Then 15 more changed in the last 9 blocks. Not a cascade, not noise: a recorded result for every transaction.

Block 1X, and the next transaction reverts 40 blocks: same outcomes262 transactions in a row Last 9 blocks: 15 more change2 revert, 13 can no longer execute

Why execute instead of estimate

Dependency analysis can list the transactions that might depend on X. It cannot say whether they still succeed. RHOOK runs them, against the state the changed history produced, and records what actually happens.

Blockchains record one history.
RHOOK executes the alternatives.

A declared change to committed history, then execution under the same rules. One change per run. Not an imagined scenario.

The engine behind this page

Change one action.
Execute everything after it.

RHOOK is our open-source counterfactual execution engine for onchain history. It replaces one declared historical input, then runs every later transaction, in its original order, against the state the changed history produces. Both histories get a recorded outcome for every transaction.

  1. 01

    Pin the history

    A pinned starting state and the exact order of every later transaction. Those inputs never change.

  2. 02

    Change one input

    Here, router call X keeps its place in history, but its commands are emptied. Nothing is re-signed or removed.

  3. 03

    Execute forward

    Every later transaction runs against the state the changed history produced, block after block. Each one succeeds, reverts, or can no longer execute.

Counterfactual execution records

Robinhood Chain 4663
This page

16of 317

Later outcomes changed: 3 reverted, 13 could not execute.

One UniversalRouter call emptied in block 70,397,227 · 50 blocks · 321 transactions · ETH/SHIB v4 pool · replayed on a pinned native Nitro build

Reproduce it offline ↗

Ethereum mainnet
Alchemix study

93reverted

Later transactions that succeeded onchain reverted in the replay; 3 more could not execute.

One call changed: harvest(0) → harvest(2) in block 12,645,422 · 187 blocks · 36,847 transactions · 0 divergences when the unchanged history was replayed

The 93 from our first post. A frozen research study on a separate apparatus: the pinned result and its hashes are public, the full archive is not.

Pinned result ↗

Check it yourself

  • Every transaction, in both histories, carries a record: its identity, the state before and after, the outcome, gas, fees and logs.
  • The verifier treats whoever produced the records as untrusted. Matching hashes are not enough: types, order and cross-references are checked independently.
  • This page's data is generated from the published archive ↗, SHA-256 dc9dde06…fdc21.

npm ci && npm test && npm run quickstartSynthetic example, no Docker

npm run demo:robinhoodThis case on native Nitro, in Docker, offline

What this is not

  • Not a fork. The changed history is conditional historical execution, not a consensus-valid chain.
  • Not a prediction. Later transactions keep their original signed inputs. Real traders might have acted differently.
  • Not an audit. Engineering conformance on these cases, not production certification. One intervention per run.
  • Not a token mechanism. It establishes no attribution, liability, recovery amount or $RHOOK utility.

Next record · unpublishedNo date published · no claim before the record

The recorded result

Execution and commitment details

The historical arrival stays fixed. A declared message-data replacement changes the replay. These records establish the presented comparison; they are not an independent execution proof.