nuvex README

The project's README from github.com/NuvexNetwork/nuvex. As one markdown file: README.md.

Nuvex

Solana-native verifiable compute and oracle protocol.

Programs accept a job, an input, constraints, and a callback. Randomness is the first job. An active node can fulfill a VRF request with an ECVRF proof after it locks the configured stake and sends a heartbeat. Fees still do not move.

Status

Milestone 3 verifies VRF proofs with solana-ecvrf 0.0.1 (RFC 9381 ECVRF-EDWARDS25519-SHA512-TAI, 80-byte proof, 64-byte output). No audit of that crate was found. 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. The callback, when set, receives the output and no accounts. max_fee is stored and never charged. The node process still does not submit transactions. The SDK can prove on the host and still refuses to send a transaction. An operator who funds several keys can still choose among those outputs. The cost of each extra key is the configured minimum stake. A minimum of zero does not resist that. Off-chain, the indexer can copy those accounts into PostgreSQL and the read API can serve them. That copy is not protocol truth. GET /v1/prices returns a median of fresh public observations for SOL, BTC, and ETH. USD and USDT are not mixed. A short or stale set returns no median. Programs still reject a Price request.

Do not deploy this tree to mainnet. scripts/deploy-mainnet.sh exits before any transaction.

Toolchain

Component Version Why
Anchor 1.2.0 Latest stable release. 2.0.0-rc.1 is not stable.
Solana CLI 4.1.2 Version named by the Anchor 1.2.0 release notes.
Solana crates 3.x The crates anchor-lang 1.2.0 links. Agave 4.x crates are not that line.
Rust 1.89 MSRV, stable 1.98 in development Anchor's rust-version.
Node.js 22 Current LTS line used in this environment.
TypeScript 5.9.3 Version used by the JavaScript SDK.
pnpm 10.15.1 Package manager for sdk/js.

Layout

This repository is the protocol. The website, the documentation site, and the off-chain services are separate repositories.

Decision records live in the documentation repository, under architecture/adr/.

Open decisions

These are blocked on purpose. The next milestone must not invent them in a pull request that only wants the code to compile.

  1. VRF audit. The verifier is solana-ecvrf 0.0.1. No audit report was found. ADR 0004 records that absence.
  2. Challenge, reject, and fail edges. Cancel, expire, and VRF fulfillment are the live transitions. ADR 0001 leaves every challenge edge forbidden.
  3. Fee shares and selection weights. Roles exist. Basis points do not. max_fee is not collected. VRF fulfillment is first-come among nodes that meet the ADR 0003 predicate. There is no weighted lottery.

Develop

make check

That runs formatting, Clippy, cargo build-sbf for the three programs and the test callback consumer, Rust tests, and the JavaScript SDK tests. Program tests load target/deploy/*.so. LiteSVM 0.17 loads the default SBF architecture from that command, because verification calls sol_sha512. It needs the Solana CLI and platform tools.

The node image is built from this repository:

docker build -f node/Dockerfile -t nuvex-oracle-node:local .

Copy an environment file before pointing a process at a cluster:

cp env/.env.local.example .env.local

RPC URLs, program ids, and key paths are variables. They are not defaults in source.

Development program keypairs, when generated, live in keys/program/ and are gitignored. Public ids are in Anchor.toml. Those ids are local ids.

Next milestone

Milestone 6: compute jobs and commit/reveal. Data jobs stay unspecified. Fees stay unset until ADR 0005 names basis points. No mainnet deployment.

nuvex (NuvexNetwork/nuvex)

Searching Database…

200 ·GitHub
这是什么?Nuvex 是一个 Solana 原生的可验证计算与预言机数据协议:程序接受一个任务、一份输入、约束条件和一个回调,首个支持的任务类型是随机数,由质押节点附上 ECVRF 证明来完成。
它是 Solana 程序、SDK,还是两者都是?它是一个分层协议:链上 Anchor 程序(oracle-core、oracle-registry、verification)、带 PDA 辅助函数的 Rust 和 JS SDK,以及一个用于提交请求的 CLI——不过 SDK 和 CLI 目前自己还不能发送交易。
怎么构建和测试它?开发工作流会运行格式化检查、Clippy、对三个链上程序和测试回调消费者执行 'cargo build-sbf'、Rust 测试,以及 JavaScript SDK 测试,并通过 LiteSVM 加载编译出的 .so 文件。
我需要哪些工具链版本?你需要 Anchor 1.2.0、Solana CLI 4.1.2、Solana crates 3.x、Rust 1.89(MSRV)、Node.js 22、TypeScript 5.9.3,JS SDK 还需要 pnpm 10.15.1。
它可以直接部署到主网吗?不行。仓库明确禁止主网部署,部署脚本在发送任何交易之前就会退出,节点进程和 SDK 仍拒绝提交交易,费用也只做记录、从不实际收取。
它面向谁——应用开发者还是节点运营者?面向两类人群:调用 Rust 或 JS SDK 请求随机数等任务的开发者,以及锁定质押、发送心跳并用 ECVRF 证明完成 VRF 请求的节点运营者。
VRF 随机数功能实际是怎么工作的?活跃节点锁定配置的质押,把心跳保持在要求的时间窗口内,然后附上 ECVRF 证明(RFC 9381 ECVRF-EDWARDS25519-SHA512-TAI)来完成 VRF 请求,生成 80 字节的证明和 64 字节的输出,并可在链上验证。
现在能从它获取价格数据吗?可以,'GET /v1/prices' 会返回 SOL、BTC 和 ETH 的新鲜公开观测值的中位数,且不混用 USD 和 USDT;样本过少或过旧时不返回中位数,链上的 Price 请求目前仍会被拒绝。
为什么 VRF crate 还没有经过审计?验证器 solana-ecvrf 0.0.1 尚无公开的审计报告,这一缺口被刻意作为未决事项(ADR 0004)跟踪,而不是被掩盖。
下一个里程碑会有什么内容?里程碑 6 将加入计算任务和 commit/reveal 机制;数据任务和费用基点要等后续 ADR 才会确定。
Size
0.4 MB
Stars
200
Updated
CommitOct 03
Age
15d
Commits · 90 Days