Notes / Findings

Between a quarter and a half of what the oracle publishes scores at or below Bybit's configuration before the hack (exposure, not prediction)

Findings2026-09-26Chain: not stated

Source: data/finding_2026-09-26-incident-configurations-vs-published-scores.md in the repository, rendered here without changes. Source file

2026-09-26, revised 2026-09-27 after an independent review (the review's corrections are folded in below). data/research_2026-09-21-authority-incidents-evidence-table.md lists 23 authority incidents and concludes that the honest claim is "measured exposure of the authority path", not prediction (there is no sample of protocols that were not hit). This measures that exposure. scripts/incident_exposure.py reads every published score from the deployed oracles, replays five incidents through the shared Safe-rooted convention (scripts/lib/scorers.py::_safe_rooted_scores and the standard composite, no new formula), and counts the published targets at or below each. Read-only; 179 targets read, nothing unread. The threshold of each incident is stated by its source; the owner count comes from the source, and for Bybit from an on-chain read of the Safe (0x1db92e2E...: 6 owners, threshold 3), because the cited page gives the threshold only. The timelock score of 0 is this project's reading of a plain Safe, which has no built-in delay; the sources do not state a delay either way (only Drift and Echo have an absence written in their sources, per the evidence table).

The published set today#

179 targets on 9 oracles (Ethereum's 25 and Hyperliquid's 15 are the published numbers, one or more behind the scorers; Ethereum's 25 still include the retired Ethena minter, published at composite 52): median composite 44; 107 targets (60%) have a timelock score of 0; 44 (25%) sit in the lowest band (composite 10 or less; mostly bare-key roots, 5 of the 44 are placeholders or partial scores). By oracle (targets, median composite, no timelock, lowest band): Robinhood Chain 63, 33, 39, 20; Ethereum L1 25, 60, 9, 3; Arbitrum 13, 55, 5, 2; Base 13, 66, 3, 0; Tempo 14, 39, 12, 4; Plasma 9, 52, 5, 0; Monad 9, 49, 6, 1; Hyperliquid 15, 9, 13, 10; Solana 18, 46, 15, 4.

The incident configurations, replayed#

IncidentConfiguration (threshold from the source; timelock read as none)Replayed compositePublished targets at or below
Radiant Capital, 2024-10, $53MSafe 3-of-1152112 of 179
WazirX, 2024-07, $235MSafe 4-of-647101 of 179
Bybit, 2025-02, $1.46BSafe 3-of-64491 of 179 (51%)
Humanity Protocol (Ethereum), 2026-06, $32M to $36M3-of-6 multisig4491 of 179
Humanity Protocol (BNB Chain), 2026-063-of-5 multisig4388 of 179

The table's other incidents (bare-EOA admins such as Munchables, DeltaPrime and UPCX, a verifier set of one at Kelp, a Solana Security Council at Drift) are not replayed here: this uses only the Safe convention the repository already documents. Drift has its own backtest (data/backtest_2026-09-17-drift-protocol-security-council-compromise.md).

How to read it, and what it does not say#

| Set | Targets | At or below Bybit's 44 | Timelock score 0 | |---|---|---|---| | All nine oracles | 179 | 91 (51%) | 107 (60%) | | Without Robinhood Chain | 116 | 49 (42%) | 68 (59%) | | Without Tempo, Solana and Hyperliquid (their own multisig formulas) | 132 | 61 (46%) | 67 (51%) | | Without those three and Robinhood Chain | 69 | 19 (28%) | 28 (41%) |

So the honest range for "at or below Bybit's configuration" is 28% to 51%, depending on the set.

Reproduce#

python3 scripts/incident_exposure.py --out <file> (about a minute; eth_call on 8 testnet RPCs, getProgramAccounts on Solana devnet; the file now carries each row's target address; exits non-zero if any oracle or target could not be read). Tests: scripts/lib/tests/test_incident_exposure.py.

Not an audit, not investment advice. All notes ยท Back to the dashboard.