Separated authorities
The guards
- Drawdown guard. Caps how much the pool can lose over a time window. Even if the quoting key is fully compromised and pushes hostile prices, losses stop at the cap; your liquidity cannot be drained.
delta_staleness(staleness kill switch). If the pool doesn’t receive a price update within your configured number of slots, it stops quoting. A dead feed or crashed crank fails safe (no quotes) instead of failing open (stale quotes anyone can pick off).- Pause.
pause_authoritycan halt the pool instantly, independent of the cold key.
What happens if…
…my crank crashes at 3am?
…my crank crashes at 3am?
Quoting stops automatically once
delta_staleness expires, typically within a minute. No stale
quotes, no losses; the pool simply goes dark until updates resume. Aggregators stop routing to you
until then.…my quoting key is stolen?
…my quoting key is stolen?
The attacker can push bad prices, but the drawdown guard caps total losses over its window, and
the attacker cannot withdraw funds (that right belongs to other authorities). Pause the pool, rotate
quoting_authority from your cold key, resume.…my price source goes wrong (not down, wrong)?
…my price source goes wrong (not down, wrong)?
This is the failure the guards exist for: the drawdown guard bounds the damage while the bad feed
persists, and pausing takes one transaction. For belt-and-suspenders, run sanity bounds in your
crank config so implausible prices are rejected before they’re ever pushed.
…I want to shut down entirely?
…I want to shut down entirely?
Pause, withdraw both sides, done. The pool is yours alone: there are no other LPs to coordinate
with and no exit process.
Programmatic control
Everything above is scriptable: see Admin controls for authority management and pool-state transitions, and Oracle Management forupdateDeltaStaleness.
Per-wallet and per-router quoting rules are covered in
Toxic-flow prevention.