Skip to main content

The toolchain is pinned

These are the versions the repo is built and tested against. Anchor.toml pins the first two, rust-toolchain.toml the third.
Anchor’s TypeScript client is @anchor-lang/core (1.x). The pre-1.0 @coral-xyz/anchor package is abandoned at 0.32.1 — do not import it.

Install

1

Solana toolchain

2

Anchor toolchain

3

JavaScript workspace

Run the tests

That builds the program and runs the Rust suite. It should pass from a clean clone. The TypeScript packages each carry their own suite and run under Node’s built-in test runner — no vitest, no jest:
Every package except @nelo/voucher runs with zero dependencies installed — they use node --test against plain TypeScript, which Node 22 strips natively. @nelo/voucher needs @noble/curves, so it is the one suite that requires pnpm install first.

What you get

Program tests are Rust + LiteSVM, in programs/nelo_vault/tests/. There is no mocha/TypeScript test path — Anchor.toml sets [scripts] test = "cargo test", and no local validator is needed.

Run the reserve model

The economics model prints a full report, and prints its own unsourced assumptions before any result:
See The reserve model for what it concludes.

Devnet

The program is deployed to devnet at 29QdPRQC8C5v6C8gMcBqtw9T4RxYyZ1wqThkEj3XJeQx. There is an end-to-end devnet gate — vault funded, voucher redeemed with the device signature verified by the secp256r1 precompile on a real validator, double-spend refused, signature-over-other-bytes refused:
It is #[ignore] so it never runs in the default suite, and it creates its own 6-decimal mint, so a run is self-contained. It costs devnet SOL. It initialises RiskConfig itself, tolerating one that already exists.
It passes against the Trust Stake build now deployed to devnet — the first run in which RiskConfig existed on a real validator. See Deployment.

Hard rules for this repo

  • anchor test stays green. It is a graded deliverable, not a nicety.
  • Negative tests before positive ones, everywhere in the vault. A test that passes because nothing was checked is worse than no test.
  • Never commit a keypair, a mnemonic, or a real API key. .env is gitignored; keep it that way.
  • Everything a judge needs is in the repo. No links only the team can open.