MONARKFleetNarabiUkemiBellit abstains so DeFi can act.
Documentation menu
docs · the pieces · Narabibuilt

Narabi, one day at a time.

Narabi reads the redemption flow of one stablecoin population once a day, at block finality, steps an adaptive quantile tracker on what actually happened, and publishes a line anyone can replay. The gate reads a committed calibration, not the tracker. The tracker adapts; the gate does not yet.

What Narabi senses

A run on a claim redeemable at face value is the object: holders who expect others to redeem redeem first, and the flow of redemptions speeds up before the stock does (Douglas W. Diamond and Philip H. Dybvig (1983), and for a run tied to fundamentals, Itay Goldstein and Ady Pauzner (2005)). Narabi measures the speed of that flow on chain, for one population today, the served class keyed narabi:persistence-v2@eip155:1/erc20:0x4c9edd5852cd905f086c759e8383e09bff1e68b3. It publishes the measurement; it does not call a run.

The register’s served note: a daily published timeline parsed by the site from the published files (its committed capture keeps each line's endpoint count only), and its attested flow carried into the served gate, both replayed by integration tests.

One window a day

One window a day: the day closes, the reads wait for finality, the flow is scored, the tracker steps, the line is chained and published.A UTC DAY CLOSESits block range isfixed from thechain: from_block toto_blockFINALITYa window whoseclosing block is notfinal yet is lag,never a skipped stepTHE READSeach burns, mintsand supply readneeds two distinctproviders thatagree; the readswait for finalityTHE FLOWburns, mints andsupply become anattested flow, thena velocity scoreTHE TRACKERthe quantilethreshold stepsonce, on therealized outcome; Tgrows by oneTHE LINEhashed with the hashof the line beforeit, then appended tothe timelinePublished at /narabi/state.json · timeline.jsonltried at the UTC slots 00:30, 03:30, 06:30, 09:30A probe on another hostreads the published files by 10:30 UTC:is the last window there, does the chainhold, does the state match the last line?
One window a day. The publication slots and the probe’s deadline are read from the committed served facts.
  1. Fix the daily UTC window and read its block range from the chain, from_block to to_block.
  2. Sum USDe burns and mints inside the range from the token's Transfer events; read the closing supply.
  3. Form the velocity v: burns divided by the opening supply (reconstructed exactly as close plus burns minus mints), per hour of window. Burns only in the numerator; a true fraction of the stock, never the odds.
  4. Classify the window: calm when burns stay under one percent of the opening stock and the stock is above the committed floor; then evaluable, non evaluable or clipped for the pair.
  5. Score the pair against the persistence forecast (tomorrow's v is today's v), step the tracker on it, and append the line with its hash, the sentinel's version and its RPC endpoint pool (this page shows only its size).

The tracker and its bound

The tracker moves its quantile threshold each window, up when the score exceeded it and down otherwise, with a step size that decays as windows accumulate. Its parameters, as published: target miscoverage 0.1, step constant 0.041666666666666664, decay parameter 0.1, score bound 0.041666666666666664.

After 6 steps, the published state projects that the printed bound reaches the target at T = 1789. Until then the bound stays above the target, and the page says so rather than hiding it.

The tracker's threshold after each published window, with the committed threshold the gate reads drawn apart.The tracker’s threshold after each published windowthe committed threshold the gate reads, q₁one dot per published window, oldest on the left; a small dot is a window where the tracker did not step;a red dot is a window whose score exceeded the threshold before the steplast window 2026-09-23, T = 6; the vertical axis is scaled to the values it shows
The tracker’s threshold over the published windows, from the committed capture of the timeline. The dashed line is the committed threshold the gate reads.

What the gate reads

The served gate class stable-run-velocity-24h reads a committed static calibration of 613 calm pairs, digest c9793b281167465af88c9e837aaeaf7fb26c709ff4c5e342c68893e759d9e86c. Every other population abstains, with the reason under_calib. The committed region moves only when a pre-registered drift criterion fires: the rolling share of calm pairs that missed the committed threshold reaching 0.4, evaluable once 90 calm pairs have accumulated. A drift opens a review; it never switches anything automatically.

What the probe checks

A probe runs on another host than the one that publishes, so a stalled or broken publication is seen from the outside. It reads the published timeline at the UTC times 10:30, 12:30, 16:30, the first of them the deadline. It checks that the last expected window is there, that the chain of line hashes holds from the genesis line, and that the published state agrees with the last line. A failure raises an alert to the operator.

The Narabi page re-runs the same integrity checks in your browser, on the files as served now: /narabi/state.json and /narabi/timeline.jsonl.

A real line

The last line of the committed capture of the published timeline, as captured. Nothing here is typed.

a selection of the fields of the line for 2026-09-23, as committed in the site data
{
  "day": "2026-09-23",
  "from_block": 26036464,
  "to_block": 26043610,
  "burns": "11321263619380000000000000",
  "mints": "5429629789870680000000000",
  "supply_close": "4890564085271987753523503861",
  "pair_status": "evaluable",
  "s": 0.00019894844020833333,
  "q_before": 0.015149932577145829,
  "q_after": 0.01372793777778526,
  "T": 6,
  "bound_thm1": 0.9767186838611738,
  "drift_flag": false,
  "prev_line_hash": "842c96328367857dcbf29582fa5a4d9bbd3fdc51d107f56f8d771088a0ac775c",
  "line_hash": "e69ed7b085c9a7cb9a521f0ee95391abc81e05ba5b85c59ba7d302e64dac1d31"
}

What Narabi is not

Sources

  • Anastasios N. Angelopoulos, Rina Foygel Barber and Stephen Bates (2024) Online conformal prediction with decaying step sizes. Proceedings of the International Conference on Machine Learning (ICML), PMLR vol. 235, pp. 1616-1630. read in part Used for the quantile tracker Narabi steps each day and the long-run bound it prints.
  • Isaac Gibbs and Emmanuel J. Candes (2021) Adaptive Conformal Inference Under Distribution Shift. Advances in Neural Information Processing Systems (NeurIPS). read in part Used for the online update the tracker descends from.
  • Rina Foygel Barber, Emmanuel J. Candes, Aaditya Ramdas and Ryan J. Tibshirani (2023) Conformal Prediction Beyond Exchangeability. The Annals of Statistics, vol. 51, no. 2, pp. 816-845. read in part Used for the sentence served with a class whose calibration is not exchangeable: no coverage is measured.
  • Douglas W. Diamond and Philip H. Dybvig (1983) Bank Runs, Deposit Insurance, and Liquidity. Journal of Political Economy, vol. 91, no. 3, pp. 401-419. read in part Used for the object Narabi senses: a run on a claim redeemable at face value.
  • Itay Goldstein and Ady Pauzner (2005) Demand-Deposit Contracts and the Probability of Bank Runs. The Journal of Finance, vol. 60, no. 3, pp. 1293-1327. read in part Used for runs tied to fundamentals rather than to a coin toss between equilibria.