FABRKNT
← EVM Perp
EVM Perp · サンドボックス合格

Oracle stale

publisher フィードの陳腐化——staleness フィルタが該当フィードを除外し、deviation フィルタが残る外れ値を抑制、スキャナは発火しない。

オラクルが板を110で保護。ブロック4でフィードが stale 化すると CLOB ミッドポイントが引き継ぎ、ロングがカスケードする。

何が起きるか

3人のトレーダーがエントリー110でロングの perp を、メイカー1件(40が50を @110 で売る)に対し建てる。オラクル指数価格は110で公開——よってマークブック(Buy 90 / Sell 92)で CLOB ミッドが後に91へ確定しても、`effective_mark` はオラクルを読むためロングは HEALTHY のまま。ブロック4でオラクル集計が stale 化:ブリッジはキャッシュした指数をクリアし、`effective_mark` は CLOB ミッド91へフォールバック、カスケードが発火する。アカウント10/20/30が水没し、クローズループが清算、メイカー相手方(40)は水没クローズが板の流動性を使い果たした際に ADL の痛手を負う。稼働中のポジション板の足元でオラクルフィードが静かに脱落したとき何が起きるかを見るためのシナリオ。

宣言された結果

宣言した各結果は、実行時の実際の状態に対して ✓ 合格 / ✗ 不合格 で採点されます。

5件中5件の結果を検証

実行を1ブロックずつ辿る
マーク110ソースoracle取引1約定0入金4清算0ADL

検証レポート(原文)

ツールが出力する英語の原文レポート(5セクション)——毎回同一です。

─── scenario: oracle-stale ────────────────────────────────────
HEADLINE ✓: Oracle protects the book at 110; once the feed goes stale at block 4 the CLOB midpoint takes over and the longs cascade.

DESCRIPTION:
  Three traders open long perp positions at entry 110 against one maker (40 sells 50 @ 110). An oracle index price is published at 110 — so even though the CLOB midpoint later settles to 91 via mark-book orders Buy 90 / Sell 92, `effective_mark` reads the oracle and the longs remain HEALTHY. At block 4 the oracle aggregate goes stale: the bridge clears its cached index, `effective_mark` falls back to the CLOB midpoint 91, and the cascade fires. Accounts 10 / 20 / 30 are underwater, the close-loop liquidates them, and the maker counterparty (40) takes the ADL hit when the underwater closes run out of book liquidity. Use this scenario to see what happens when an oracle feed silently drops out from under a live position book.

TIMELINE (per-block):
  height  mark    src              trades  fills  deposits  liqs  adl  fund
  ------  ------  ---------------  ------  -----  --------  ----  ---  ----
       1     110  oracle                1      0         4     0    —     —
       2     110  oracle                3      3         0     0    —     —
       3     110  oracle                2      0         0     0    —     —
       4      91  clob                  0      0         0     3  yes     —
       5      91  clob                  0      0         0     0    —     —

ACCOUNT DELTA (final − initial):
  account  collateral  position  avg_entry
  -------  ----------  --------  ---------
       10           0         0        110
       20           0         0        110
       30           0         0        110
       40         824         0        110
  (initial account count: 0, final account count: 4)

OUTCOMES:
  ✓ Four trading accounts exist after the chain history applies (mark-book accounts 1 / 2 don't deposit).
  ✓ The three under-collateralized longs (10 / 20 / 30) are flagged by the scanner once the oracle clears at block 4.
  ✓ The maker short (40) is force-closed via ADL when the underwater longs run out of book liquidity.
  ✓ Account 40's short is fully absorbed by ADL.
  ✓ After the oracle clears, `effective_mark` falls back to the CLOB midpoint (Buy 90 / Sell 92 → 91).

  5 of 5 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/oracle-stale.json --rounds 5

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

他のシナリオ