Skip to content

Milestone 5 · Protocol

Nuvex maintainers
A night sky over a mountain ridge

What the API returns

GET /v1/prices reads public tickers and trades. A USD query uses Coinbase, Kraken, and Pyth. A USDT query uses Binance and Bybit. Those quotes are not averaged together. The body says authority: none.

Each observation has to carry the venue's own timestamp. The default window is 60 seconds, and the caller can set maxAgeMs between 1 and 300 seconds. The default minimum is two fresh sources. Below that, the status is 422 and median is null.

What it will not fill in

Pyth's public Hermes endpoint currently answers an unauthenticated request with HTTP 401. That shows up under rejected. The other venues are not asked to stand in for it with a made-up number. A source that is simply down is recorded the same way.

“Programs still reject a Price request. A caller cannot treat the median as a finalized oracle result.”
Documentation, Price oracle

Data jobs stay closed. ADR 0004 names source-specific checks and a quorum, and names neither, so no adapter fetches arbitrary data. Fees stay unset.

Earth from orbit beside a spacecraft
Nuvex maintainersMilestone 4

Protocol

The read model copies accounts. It does not decide them

Milestone 4 adds an indexer, a PostgreSQL store, and a read API the console and CLI can query. An empty list is a real answer. A row in that list is still not a finalized result.

Read the post
A circuit layout photographed as white traces on black
Nuvex maintainersMilestone 3

Security

The multi-key weakness the README admits

An operator who funds several node keys can choose which of those outputs to submit. The eligibility predicate does not close that, each extra key only costs the configured minimum stake, and a minimum of zero resists nothing. Here is what still holds, and what would have to change.

Read the post