Rust testnet · AGPL-3.0 · open source

AI inference,
proven on-chain.

An experimental blockchain where compute nodes run model layers in deterministic WASM, back results with Groth16 zkSNARKs, and settle disputes with bisection games — so verification cost stays flat while models grow without bound.

Proving everything is impossible.
So we don't.

We measured it. Groth16-proving every layer of a 2.7B-parameter model takes about a week per inference. A trillion parameters would take years. So verification here is statistical: stake first, sample op-level SNARK proofs at random after results commit, and pay for a full disputed-layer proof only when a game demands it.

~7 days
to fully zk-prove one 2.7B-param inference
measured extrapolation, docs/ZK_BENCHMARKS.md
≈ const
sampled verification cost — independent of model size
k proofs × ~0.1–0.7s each
90%
fraud detection with 22 sampled spot-checks
1 − 0.9^22 < 0.1 escape odds

Five real Groth16 circuits,
not mockups.

Every operator below compiles with circom 2, has a bit-exact integer spec mirrored against the WASM runtime by differential tests, and resolves on-chain disputes through the SNARK fast path.

N²+N constraints
matmul_slim

Dense layer core. Output-only commitment halved proof cost versus squaring every witness — inputs are already bound by the arithmetic. Measured up to 64×64 (4,160 constraints, 119 ms native).

376 constraints
layernorm8

Integer sqrt proven by bounds witness, reciprocal proven two-sided, floor semantics locked to the WASM.

280
relu8

Sign via 32-bit decomposition; branch forced by the circuit.

280
argmax8

One-hot selection plus dominance proofs; ties resolve canonically.

552
softmax8

Mirrors the WAT's hard-max rule exactly. Equality indicators instead of signed-bit tricks.

One runtime, one truth.

  • engineEd25519-signed blocks, fork resolution by hash weight, EIP-1559-style gas with policy multipliers
  • wasmQ16.16 fixed-point ops — zero floating point anywhere in execution
  • zkcircom 2 circuits + trusted setup automation + native proving by default
  • gameschallenge → bisect → proveStep, with a SNARK fast path that skips recompute
  • p2pWebSocket gossip, identity-keyed peer dedup, live 3-node sync verified in CI-style tests
  • apiExpress REST + token auth + rate limits + live dashboard on every node
$ git clone iguha0/ai-chain-network && cd ai-chain-network
$ npm install && npm run build
$ npm run setup:rapidsnark   # native prover (optional, ~5x)

# three-node local network
$ npm run node1 &
$ npm run node2 &
$ npm run node3 &

# open http://localhost:3001/dashboard

$ npm test
98 passing (19 suites)

Built. Designed. Next.

No vaporware, no inflated claims. Here is exactly where Verinoo stands.

Rust testnet — running

  • Multi-validator rotation + staked registry Rust · live
  • Dispute resolution via native Q16.16 witnesses Rust
  • Slashing: bond transfer + validator removal on fraud enforced
  • Stake-weighted leader selection alongside round-robin both shipped
  • Circuits compiled at n=8, n=32, n=64 pot14 setup
  • CLI wallet: generate / balance / send end-to-end tested
  • Faucet + metrics + hostile-block gate + deploy kit shipped

Protocol design decisions

  • Hybrid verification over prove-everything the thesis
  • Canonical tx encoding with anti-malleation binding security
  • Hard-max softmax for deterministic verification by design
  • Column-major Q16.16 matmul matching WASM layout parity

Next milestones

  • Attention/matmul Q16.16 pipeline alignment WASM analysis
  • MPC trusted setup ceremony (workflow documented) ADR-001
  • Malachite BFT behind LeaderPolicy trait ADR-002
  • Folding schemes for proof aggregation research

Three ways in.

Run a validator

Earn gas fees and block rewards for producing blocks and settling disputes. One command per node; SQLite storage; token-gated admin API.

npm run node1

Serve inference

Register a compute node, claim tasks matching your capacity, submit results with proofs. Reputation compounds; fraud gets slashed.

POST /tx registerNode

Build on the API

Register models, submit inference tasks, stream status from any node’s REST surface — or read the chain straight from SQLite.

GET /status · GET /blocks

The experiment is public.
The spec is executable.

Clone it, break it, prove things with it. AGPL-3.0, Rust core, no vaporware.