Price and oracle
A source set fixed for ever, what it costs to move the median, what five named reporters can and cannot do, and the difference between a branch that stops liquidating and one that stops everything.
Spec v0.9.1, reviewed 2026-09-08
The price a position is measured against is not read from one feed. It is the median of three families of markets, delivered by at least two independent infrastructures, clamped around the last accepted exchange print. That design removes the single point of failure and replaces it with a different set of exposures, which this page states.
The mechanism itself is on The composite price and Price regimes. What follows is what can go wrong with it.
The source set is fixed before deployment and can never be changed
Every pool, every feed identifier and every reporter key is written into the constructor. There is no function to add a source, remove one, reweight one or replace one, and the Closer key does not know the oracle contracts exist.
What that buys. Nobody can point the protocol at a price of their choosing. The most common failure in real-world-asset lending is an administrator swapping an oracle; here the function does not exist.
What is left over. A source that dies stays dead. If liquidity migrates from a listed Uniswap pool to one that is not listed, that pool's contribution goes to zero and the family it belongs to thins out. If the signed path stops being verifiable, it stops counting. The branch degrades, then freezes, then closes itself after 7 days without a valid exchange price. Nobody repairs it.
Risk
Two Uniswap pools on the same chain count as one infrastructure, not two, because one liquidity provider can hold both. A branch whose only non-reporter group is its on-chain pools has a single point of failure, and on the tier 2 names with no round-the-clock signed feed that is the ordinary weekend state. Those branches are frozen at the weekend rather than mispriced, which is the correct failure but not a comfortable one.
Rules R-3.2.1, R-3.2.15
What it costs to move the median
An attacker who wants a healthy position liquidated has to be a Stability Pool depositor, because the pool is what buys, and then push the composite below the true price so that the pool buys cheap. Both halves are needed, and the second one is priced.
Moving one family is not enough: the median ignores the extreme family. The cost is therefore the cost of the second cheapest family, in addition to the first.
| Family | What has to be moved | Order of magnitude, from the September 2026 measurements |
|---|---|---|
| On-chain pools | The truncated 30-minute average of the listed pools, held for at least half an hour against arbitrage | Tens of millions of dollars of standing capital, and 40 to 200 thousand dollars of loss on the flow arbitraged away |
| Signed index and perpetual feeds | The mark of a perpetual with tens of millions of dollars of daily volume, or three reporter keys | Several million dollars per percentage point, and the mark is itself an average |
| Twin markets | Two thin venues at once, which moves only the family value and therefore nothing | A million or two, for no effect while the other two families hold |
Even granting all of it, the gain is bounded by what sits inside the window that the manipulation opens. On a branch at its largest ceiling, positions between the liquidation threshold and a few points above it are a small share of the debt, the discount is 4% at most, and the attacker collects only their own share of the pool. The design's own arithmetic puts the gross gain two orders of magnitude below the cost.
Guarantee
Each observation of an on-chain pool may move the recorded price by at most 0.50%, once per minute, and 3 clipped observations in a row make that pool absent rather than wrong. A swap and a price refresh in the same transaction move the 30-minute average by under two hundredths of a per cent.
Rules R-3.20.1, R-3.20.2, invariant 12
The same price feeds the borrowing limit, and that is sampled defensively
The composite is also what the volatility oracle records to set each branch's borrowing limit of the day. Three properties keep that from becoming a cheaper way to attack the same number.
The sample is taken once per fixed 24-hour slot aligned on midnight, not on a rolling timer, so nobody can choose when it falls. It is the median of 3 readings rather than a single one, so a price held wrong for one block is not the day's sample. And a corporate action no longer erases the history, so a split cannot be used to reset a branch to its cautious prior.
Guarantee
At an extreme volatility the limit reaches its tier floor, 60%, 50% or 40%, and stops there. It never reaches zero and it never blocks anything: borrowing continues at the floor, and withdrawals that repay at least proportionally are judged on the tier ceiling regardless.
Pushing the limit down therefore means holding the composite wrong across the medians of several fixed slots, at the costs in the table above, to remove a few points of borrowing capacity for a week from people who can simply wait. Pushing it up is not available at all: a realised variance cannot be un-realised, and skipping a sample does not reduce it.
Five named reporters, and what three of them can do together
Five keys are fixed at deployment. Each signs the price it reads on a public venue, and a bundle is accepted with 3 signatures out of 5 whose spread is at most 0.5%. The stored value is the median of what they signed. A reporter can renounce; none can ever be added.
Three of them acting together can sign anything. Here is the whole of what that achieves.
| They try to | Result |
|---|---|
| Set the price | They cannot. Their group is capped at 49% of the median, so the median is always a value some other group produced |
| Reach the full regime alone | They cannot. The full regime requires a group that is not the reporters |
| Push a branch out of the full regime | Yes, by disagreeing with the honest sources by more than 1.5% |
| Freeze liquidations | Yes, by disagreeing by more than 3% |
| Close a branch | They cannot. A contradiction freezes; it never shuts down |
| Profit | No. They are never the median, so the pool never buys at their number |
What is left is a denial of liquidation, lasting exactly as long as they lie, visible in the published dispersion, and costing them three public reputations. The residue is real on a branch whose only non-reporter group is absent: there, the reporters lying and the reporters being absent produce the same frozen state.
The signed path depends on infrastructure nobody here controls
Two of the three families arrive as signed messages. One path is verified against the Wormhole guardian set; the other against the five reporter keys.
If the guardian set stops producing verifiable attestations, or the message format changes, that whole path dies at once across all twenty branches. The design has walked through the consequence: the index branch keeps its pools and its reporter venues and stays in the full regime; the gold branch keeps its metal feeds; the branch whose only signed source was that path freezes.
Risk
The gold branch carries a sharper version of the same exposure, and it is the one genuine single
point of failure among the twenty. It has one session anchor, the signed one, because no
exchange feed for it exists on this chain. Every other branch has a second anchor to switch to when
the first goes quiet; this one has nothing. If it stops publishing for more than
26 hours of open session, the branch goes straight to HALT: borrowing,
withdrawing and redemption stop, and only repaying, adding collateral and closing stay open. After
7 days the branch closes itself.
There is no fallback, because a fallback is a second oracle chosen by somebody. The specification is explicit that a source is never replaced, and that this is the price of having no administrator.
The chain itself
Robinhood Chain has one sequencer. It can filter or reorder transactions, and whether a verified uptime feed exists is one of the pre-deployment checks. If none exists, the protocol has no cause to detect a sequencer outage and simply sees stale prices.
While the sequencer is down, nobody can repay, nobody can add collateral, nobody can liquidate, and no price arrives. When it restarts, everything that accumulated arrives at once. The protocol's answer is the 600 seconds during which the pool executes nothing after a price returns, which bounds the race but does not remove it.
Risk
This is not a Fyber mechanism and Fyber cannot improve it. It is a property of the chain the collateral lives on, and the collateral does not live anywhere else.
Freezing and halting are different, and the difference is the point
The word people reach for is "the oracle is down". The protocol distinguishes two states, and confusing them is the most common misreading of the design.
| Liquidations | Borrowing and withdrawing | Redemption | Repay, deposit, close | |
|---|---|---|---|---|
Sources thin or disagreeing (FROZEN) | Stopped | Open, at the frozen haircut | Open | Open |
No valid exchange price (HALT) | Stopped | Stopped | Stopped | Open |
A frozen branch is the protocol declining to act on a number it does not trust. It is not a failure state and it does not lead to a shutdown: only 120 hours without any exchange price, while frozen, escalates to a halt, and only 7 days of continuous halt closes the branch.
Guarantee
Nothing but the death of the exchange price can block borrowing, withdrawing or redemption. Nothing but the silence or the contradiction of the markets can block a liquidation. Interest stops accruing after 24 hours of continuous halt.
Rules R-4.4.1, R-5.5.5
What is measured before any of this is frozen
The source registry, the quality weights, the dispersion thresholds and the confidence reference are all calibrated on measurement, not on judgement, and every one of them is blocking. The window and the failure response for each are on What is measured before launch.
Risks
What can cost you money in each role, which risks the contracts act on, and which ones are written down because nothing on-chain can address them.
Liquidation and bad debt
How far a price may fall before a liquidation stops covering the debt, what an earnings minute does to a tier 2 branch, and the three layers that absorb the shortfall.