Skip to main content
Stenion
Registry
Coverage note · not a score

Solv (Blend V2 pool)

oracle not gradable

Stenion publishes no safety score for Solv (Blend V2 pool) — not a low one, not a zero.

A Blend V2 market on a SEP-40 feed registry, whose only time parameter is a publish interval long enough to rate a price hours old as perfectly fresh.

Oracle publishes nothing to grade price trust against

These markets can be read, and four of the five factors compute normally for them. What their price feeds do not publish is a staleness tolerance or a deviation bound — the two on-chain parameters oracleSafety is anchored to, neither of which SEP-40 defines. Scored anyway, the nearest substitute rates a price that is hours old as perfectly fresh, and dropping the factor instead would rank a market higher for having an oracle we cannot inspect. Not a judgment about these protocols or their oracles: it says only that this particular number has nothing to be computed from.

Why Solv (Blend V2 pool) isn’t scored

What we found, stated as what is verified and what is inferred. None of this is a risk finding, and none of it feeds a number.

A Blend V2 market on the same pool wasm (a41fc53d…). Its oracle (CBMGLKUQ…) is the closest of the four to a standard feed — a SEP-40 registry exporting base, assets, decimals, resolution, price, prices and lastprice alongside owner-only add_feed, update_feed and remove_feed. It is the only one of the four that implements SEP-40 at all.

It still publishes neither of the parameters METHODOLOGY.md §2 needs: no max_age(), no oracles(), no asset_configs(), and no deviation bound anywhere in its interface. That is a property of SEP-40 rather than of this contract — the standard defines no maximum acceptable price age and no deviation bound, and explicitly leaves staleness checking to whoever reads the price.

The one field that looks like an anchor is resolution(), and using it would produce a worse outcome than declining to score. resolution() is a publish interval, not a staleness tolerance, and this oracle reports 43200 — twelve hours. Fed into Stenion’s freshness window with no max_age to pair it with, a twelve-hour tick yields a twenty-four-hour dead line, so every price younger than a day scores the top of the scale. Its own feeds demonstrate the problem: two were live to the second when read, while USDC was 10,285 seconds old and one further feed 21,739 seconds old. All four would have published a freshness of 100. That is the fabricated confidence the rule against invented numbers exists to prevent, so the anchor is refused rather than used.

The contract is unusually candid about this, which is worth recording rather than paraphrasing: its own documentation flags two deliberate departures from SEP-40 — that decimals is not immutable, and that resolution “should never change after deployment” but here can, through an owner-callable set_resolution. A value the owner can move is not an anchor even in principle. Separately, the market held $175.69 in total supplied value when read.

Verify this yourself

Resolve the oracle from the pool’s Config (CBMGLKUQ…) and call resolution() — it returns 43200 — then base(), assets() and decimals(). List its exports with getContractMethods and confirm no max_age, oracles or asset_configs, and read the doc comments on decimals and set_resolution, which state the two SEP-40 deviations. Then simulate lastprice(Asset::Stellar(addr)) for each address from the pool’s get_reserve_list and compare each returned timestamp against the current ledger close time to reproduce the spread of feed ages.

CC4HHXPK…QOAC6UXG

Figures above read on . Balances change; re-read them rather than relying on this date.

This page is a coverage decision, not an assessment of the protocol’s safety, and nothing on it feeds any score. If Solv (Blend V2 pool) becomes scorable, this page goes away in the same change that registers it — it is replaced by a real entry in the registry, with a number derived from its own contracts.

Protocol names, logos and trademarks belong to their respective owners and are shown for identification only. Their presence here and any link to a protocol's own site or documentation does not imply endorsement, partnership, or any relationship with Stenion, in either direction.