Skip to content

Nuvex checks proofs inside Solana programs and hands the result to your callback. VRF is live in the programs today. A configured indexer can copy those accounts for the console. Data, compute, and inference jobs are planned.

VRF request

Illustration · not chain data
Verifiedcallback executed
job_type = VRFproof 80 Boutput 64 B
OpenAssignedProvedVerifiedCallback
  • Node 01stake 92%Fulfilled
  • Node 02stake 78%Eligible
  • Node 03stake 64%Eligible

Built with open tools and standards

Verifiable infrastructure for programs that need proof, not promises

Node heartbeat···
Illustration · not chain data

Verifiable randomness

Live

A VRF request is fulfilled with an ECVRF proof that the verification program checks before the output is written.

Oracle data

In development

A public price median is available from the API when enough sources are fresh. It is not written on-chain. Arbitrary data jobs are still not designed.

Verifiable compute

Planned

Off-chain execution with a committed result is a reserved job type. No compute job runs today.

AI inference

Planned

Inference requests share the same request lifecycle. How to verify a model output is an open research question.

Open requestOPEN
job_type
VRF
requester
your program
input
32-byte seed
callback
consumer program
max_fee
recorded, not charged
Illustration · not chain data

Three programs

oracle-core holds requests, oracle-registry holds nodes and stake, and verification checks proofs. Each is an Anchor program.

Learn more
ProgramsAnchor 1.2
  • oracle-corerequests, callbacksLive
  • oracle-registrynodes, stake, slashLive
  • verificationECVRF proofsLive

Account derivation

The Rust and TypeScript SDKs derive every program address and can prove a VRF output locally. They do not send transactions yet.

Learn more
request.ts
// TypeScript SDK
import { requestPda } from "@nuvex/sdk";
 
const [request] = requestPda(
coreProgramId, requester, requestId,
);

Operator process

The node binary exposes health and metrics. It does not load a VRF key or submit a fulfilment.

Learn more
nuvex-oracle-nodeHealth only
  • /healthok
  • /metricsexposed
  • VRF keynot loaded
  • fulfilmentsnot submitted

Read model

The indexer copies observed request, node, and proof accounts. The API and console can list them. That list is not chain authority.

Learn more
terminal
$ nuvex network
NUVEX_API_URL is unset
 
$ nuvex --help
node request registry staking network

Rust SDK

PDA helpers for every account and a prove_vrf function that keeps the secret with the caller.

Learn more
prove.rs
// Rust SDK, secret stays local
let proof = nuvex_sdk::prove_vrf(
&secret, &request, JobType::Vrf, &input,
)?;
 
// proof.proof: [u8; 80], proof.output: [u8; 64]

TypeScript SDK

The same derivations for web clients. Submitting a request throws until transactions are wired.

Learn more
request.ts
// TypeScript SDK
import { requestPda } from "@nuvex/sdk";
 
const [request] = requestPda(
coreProgramId, requester, requestId,
);

Command line

network reads the configured API and refuses to invent status if the URL is unset. The other operational commands still refuse to send.

Learn more
terminal
$ nuvex network
NUVEX_API_URL is unset
 
$ nuvex --help
node request registry staking network

Proofs checked in a program

The output is written only after the verification program accepts the ECVRF proof for that exact request. A node cannot swap in a different output after the fact.

Learn more
VerificationRFC 9381
  1. COMMITTEDproof submitted with the output
  2. VERIFIEDECVRF checked by the program
  3. FINALIZED64-byte output written
  4. EXECUTEDcallback ran, no accounts passed
Illustration · not chain data

Stake before fulfilment

Nodes lock the configured stake and heartbeat inside a window. A node that misbehaves can be slashed. A minimum of zero offers no resistance, and the docs say so.

Learn more
Stake and heartbeatper node

Minimum stake

configured

Heartbeat window

configured

Registered before request

required

Slash

available

Register
  • Join registry
  • Lock stake
  • Heartbeat

Register a node

A node key joins the registry, locks stake, and starts heartbeating before it can fulfil.

Verify

proof

80 B

output

64 B

Verify the proof

RFC 9381 ECVRF on Ed25519. 80-byte proof in, 64-byte output out, all inside the program.

Callback
accounts passed0
EXECUTED

Deliver the output

The callback program receives the output and no accounts, so it cannot be handed extra authority.

Nuvex is written with the same tools Solana developers already use. These are dependencies and standards, not partners.

Nuvex

Protocol README

Eligibility

“A node fulfills only when it is active, its stake meets the configured minimum, its heartbeat is inside the configured window, and the key was registered before the request.”
Open source

Programs, SDKs, CLI, and node live in one public repository under Apache-2.0.

Not audited yet

No independent audit has been performed. The VRF crate has no published audit either.

3

Solana programs

80

Byte ECVRF proof

64

Byte VRF output

1/4

Job families live

Building verifiable compute on Solana

Nuvex accepts a job, checks the proof inside a program, and hands the result to your callback. Randomness is live in the programs. A configured read API can list those accounts. Data, computation, and inference come next.