Suspicion ledger
Every event that triggers at least one rule is recorded here with its full score breakdown, and appended to data/ledger/*.jsonl on the engine so nothing is lost on restart.
// Rate of suspicion
Waiting for traffic…
// How a score is computed
Invariant rules (R1 R2 R3 R7 R8 R10 R11) mean the bridge broke a rule it must never break, e.g. paying out with no lock.
Behaviour rules (R4 R5 R6 R9) mean something is unusual, e.g. a volume spike or a new address.
inv = 1 − Π(1 − p_invariant) beh = 1 − Π(1 − p_behaviour) base = 100 × (1 − (1−inv)(1−0.7·beh)) boost= inv>0 ? 2.5·log10(usd/100k) : 0 (0..10) score= base + boost
CRITICAL needs an invariant ≥ 0.8 and ≥ $1M. Size alone can never make a CRITICAL: Ronin moved $340M legitimately in Feb 2022.
Each address also keeps a running suspicion that rises with every flagged tx and halves every 30 min. That value colours the graph nodes.
min severity0 rows
| time | tx | bridge | usd | score | severity | type | rules | incident |
|---|