Single-block cascade
Cascade compressed into a single block — verifies the per-block scanner pipeline handles all close orders in one consensus tick without re-entrancy.
Same accounts as `cascade`, but the entire setup + crash fires on block 1.
What happens
The same five-trader cascade as `cascade`, but every event lands in block 1 — deposits, resting sells, market buys all at once. The liquidation engine then runs once and clears everyone the oracle drop made vulnerable, in a single tick. Useful for comparing 'one-shot stress test' vs the staggered multi-block version: both produce the same final state, but the multi-block path lets you see the position-building phase that precedes the cascade.
Declared outcomes
Each declared outcome is scored ✓ pass / ✗ fail against the run’s actual state.
- Five trading accounts exist after the single-block setup
- Four fills (the four market buys crossing the resting sells)
- The liquidation scanner flags accounts after the mark-book settles
- No more than 2 liquidations fire — write-back prevents re-flagging
4 of 4 outcome(s) verified.
2 liquidations + ADL fire here
Verbatim report
The exact 5-section report the run emits — identical every run.
─── scenario: single-block-cascade ────────────────────────────────────
HEADLINE ✓: Same accounts as `cascade`, but the entire setup + crash fires on block 1.
DESCRIPTION:
The same five-trader cascade as `cascade`, but every event lands in block 1 — deposits, resting sells, market buys all at once. The liquidation engine then runs once and clears everyone the oracle drop made vulnerable, in a single tick. Useful for comparing 'one-shot stress test' vs the staggered multi-block version: both produce the same final state, but the multi-block path lets you see the position-building phase that precedes the cascade.
TIMELINE (per-block):
height mark src trades fills deposits liqs adl fund
------ ------ --------------- ------ ----- -------- ---- --- ----
1 96 clob 8 4 5 2 yes —
2 96 clob 0 0 0 0 — —
3 96 clob 0 0 0 0 — —
ACCOUNT DELTA (final − initial):
account collateral position avg_entry
------- ---------- -------- ---------
10 200 10 110
20 0 0 110
30 0 0 110
40 300 0 110
50 444 0 110
(initial account count: 0, final account count: 5)
OUTCOMES:
✓ Five trading accounts exist after the single-block setup
✓ Four fills (the four market buys crossing the resting sells)
✓ The liquidation scanner flags accounts after the mark-book settles
✓ No more than 2 liquidations fire — write-back prevents re-flagging
4 of 4 outcome(s) verified.
NOTE: v1 runs the scenario in-process against a unit-provider
`LiveRethEvmBridge<()>` (no Reth boot). For the production-shape
run (real Reth + Malachite + JSON-RPC), use:
openhl reth-devnet --chain-history scenarios/single-block-cascade.json --rounds 3
NEXT:
• Adopt this engine : https://github.com/psyto/rdk
• Custom build : https://fabrknt.com/waitlist.html?product=evm-perp&intent=build
• Hosted access : https://fabrknt.com/waitlist.html?product=evm-perp&intent=hosted