Skip to content

Milestone 4 · Protocol

Nuvex maintainers
Earth from orbit beside a spacecraft

What Milestone 4 actually added

The programs already stored a request, the node that fulfilled it, and the proof. Reading those accounts meant talking to a cluster. Milestone 4 adds an off-chain copy so an operator can list them. The copy lives in nuvex-services. The programs did not change, and no fee started moving.

  • The indexer polls getProgramAccounts and decodes request, node, registry, protocol and VrfResult layouts.
  • It writes PostgreSQL, or a JSON snapshot when NUVEX_READ_MODEL_PATH is set.
  • GET /v1/requests, /v1/nodes and /v1/network return that store. An empty list is a 200.
  • The console reads NEXT_PUBLIC_API_URL. nuvex network reads NUVEX_API_URL.

What it refuses to do

start exits 2 unless an RPC URL, at least one program id, and a place to write are set. The API returns 503 when neither DATABASE_URL nor a snapshot path is set. Jobs and models stay 501. Price medians are a later request, not part of this copy. GET /health still returns authority: none.

“The indexer can copy those accounts into PostgreSQL and the read API can serve them. That copy is not protocol truth.”
Protocol README, Status

A missing indexed row is not proof the account is absent on chain. The indexer only reports accounts it observed. Finality stays on the account the program wrote.

How to read it

Apply the SQL in nuvex-services/indexer/prisma/migrations before pointing the API at Postgres. Program ids and the RPC URL stay in the environment. They are not defaults in source.

nuvex network
# NUVEX_API_URL is unset. The CLI does not invent network status.

# With the API configured, the same command prints GET /v1/network.
# That body is a count of indexed rows, not a latency and not a result.

Illustration panels on the site stay labelled. Indexed tables appear only when the API URL is set. Fees stay unset until ADR 0005 names basis points, and nothing in this milestone deploys to mainnet.

A night sky over a mountain ridge
Nuvex maintainersMilestone 5

Protocol

A price median is not a proof

Milestone 5 asks public venues for SOL, BTC, and ETH, drops anything stale or failed, and returns the median only when enough sources remain. The programs still reject a Price request.

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