NockApp testing & evidence lab

Test your NockApp, prove it, and share the evidence.

Nocksperimental is a testing, simulation, and monitoring lab for Nockchain apps. Script how your app behaves, check it against invariants, and turn each run into an auditable report you can hand to a teammate, an auditor, or CI — before real value moves through it.

Testnet-first No key custody Re-verifiable evidence Open CLI (nocklab)
Live lab status
pinned upstream 33ba97b / build
System: healthy· Chain append-only· 5/5 signatures valid· Latest root root-game-badge-· 0 blocked· LAB LIVE: 33 PASS / 1 WARN / 0 FAIL
Lab fixtures
34
Exploit proofs
15
Trust badges
11/12
Launch verified
8/9
Trust chain
5/5 OK
Upstream anchor
33ba97b

Fixture suite

Lab status

Lab JSON
source: .nocklab
Fixtures
34
Invariant kinds
12
Invariant packs
6
Pass
33
Warn
1
Fail
0

Exploit-proof / negative controls

15 proven

Negative-control fixtures model a known attack and read CI-green only when the exploit is caught — expectRejected inverts the gate, so a caught exploit is a signed proof-of-prevention.

attack-peek-leaks-seedproven

Caught exploit reads CI-green.

attack-xchain-mint-without-burnproven

Caught exploit reads CI-green.

attack-xchain-under-quorumproven

Caught exploit reads CI-green.

attack-xchain-unauthorized-signerproven

Caught exploit reads CI-green.

attack-xchain-replayproven

Caught exploit reads CI-green.

attack-xchain-premature-finalityproven

Caught exploit reads CI-green.

attack-xchain-hash-algo-mismatchproven

Caught exploit reads CI-green.

attack-xchain-timelock-inversionproven

Caught exploit reads CI-green.

attack-xchain-one-sided-settlementproven

Caught exploit reads CI-green.

attack-xchain-signature-replayproven

Caught exploit reads CI-green.

attack-xchain-missing-domain-separatorproven

Caught exploit reads CI-green.

attack-xchain-insufficient-finality-for-chainproven

Caught exploit reads CI-green.

attack-xchain-challenge-window-violatedproven

Caught exploit reads CI-green.

attack-xchain-replay-namespacingproven

Caught exploit reads CI-green.

attack-xchain-evm-hashlock-family-mismatchproven

Caught exploit reads CI-green.

Launch readiness

Launch evidence

View all
verified 8watch 1blocked 0builder 8operator 1integrator 0
verified92

VESL Demo App

builder-auditor
Open
watch78

Payment Flow NockApp

builder-auditor
Open
verified88

Confidential Operator App

operator
Open
verified97

Forfeit Flip

builder-auditor badge
Open
verified96

Forfeit Dice

builder-auditor badge
Open
verified97

Forfeit Roulette

builder-auditor badge
Open

Provably-fair

POC games

Open all

Forfeit Flip

Provably-fair coin flip — even money, recomputable by either party.

outcome = lowbit( H(serverSeed ‖ clientSeed ‖ nonce) ) → 0 = house, 1 = player
Fixture

forfeit-flip-fairness

Case

case-forfeit-flip-launch-001

signed badge: verified · fresh

Forfeit Dice

Provably-fair, provably-uniform dice — even money over a fixed line.

roll = rejection-sampled H(serverSeed ‖ clientSeed ‖ nonce) mod 10000 → player wins iff roll ≥ 5000
Fixture

forfeit-dice-fairness

Case

case-forfeit-dice-launch-001

signed badge: verified · fresh

Forfeit Roulette

Provably-fair European roulette — pick a color, zero is the disclosed house edge.

pocket = rejection-sampled H(serverSeed ‖ clientSeed ‖ nonce ‖ draw) mod 37 → player wins iff color(pocket) == bet; 0 is green (house)
Fixture

forfeit-roulette-fairness

Case

case-forfeit-roulette-launch-001

signed badge: verified · stale

Forfeit Slots

Provably-fair three-reel slots — pair or better wins, odds disclosed exactly.

reel[i] = rejection-sampled H(serverSeed ‖ clientSeed ‖ nonce ‖ i) mod 8 → player wins iff ≥2 reels match (P = 176/512 = 34.375%)
Fixture

forfeit-slots-fairness

Case

case-forfeit-slots-launch-001

signed badge: verified · stale

Forfeit High Card

Provably-fair war — two distinct cards, higher rank wins, suits break ties.

playerCard = H(…‖0) mod 52, houseCard = first H(…‖d), d≥1, ≠ playerCard → higher rank wins; ties: ♣ < ♦ < ♥ < ♠
Fixture

forfeit-highcard-fairness

Case

case-forfeit-highcard-launch-001

signed badge: verified · stale

Forfeit Limbo

Provably-fair crash multiplier — 2.00× target, 1% edge disclosed in the curve.

u = rejection-sampled H(serverSeed ‖ clientSeed ‖ nonce ‖ draw) mod 2²⁴ → multiplier = max(1.00, 0.99·2²⁴/(u+1)); player wins iff ≥ 2.00×
Fixture

forfeit-limbo-fairness

Case

case-forfeit-limbo-launch-001

signed badge: verified · stale

What it can do

Run fixture-driven NockApp tests

Script poke / peek / fakenet / invariant / bridge steps as JSON fixtures, get a typed run report with per-step state diffs + snapshots.

nocklab CLI · /lab/run

Check state against an invariant catalog

12 invariant kinds — numeric floors/ranges, supply conservation, authorized-actor, temporal ordering, monotonic counters — plus allowlisted custom checks (e.g. replay-safety).

/verify · packs/

Diagnose a local fakenet

Command-backed health, balance, chain metadata, diagnostics, support bundles, and evidence capsules against your own node.

/fakenet

Read live cross-chain bridge state

Read-only view of the Basescan-verified Nockchain↔Base 3-of-5 bridge on Base Sepolia, with quorum/replay/finality invariants over real mints.

/bridge

Generate CI evidence artifacts

One command produces JSON + Markdown report artifacts your repo can publish from CI.

npm run lab:ci

Publish & independently verify evidence

Signed badges, generated-report evidence, fakenet receipts, and registry roots each have a re-derivable verifier — trust nothing, check everything.

/verify · /trust

What it can't do

Honest limits, on purpose. Nocksperimental refuses to overclaim — here is what a green run does not mean.

Mock runs are not live-chain truth

A mock-fakenet report models state transitions; it does not prove your deployed kernel behaves the same way.

A passing fixture is model-attested, not an “app works” cert

Model-attested and exploit-prevention (expectRejected) results are never presented as proof the deployed app works.

A verified cert is earned, never assumed

Certs must be signed by an active non-dev key, bound to a real report hash + snapshot root, and re-derived from steps — we never trust a report’s self-declared status.

Live cross-chain reads are testnet-first

live-base reads Base Sepolia read-only; the Nockchain leg stays modeled, and empty windows pass vacuously — not as proof.

It holds no keys and takes no custody

Reads are getBlockNumber / readContract / getLogs only. The product never stores keys, seeds, wallet exports, or raw payment material.

Not a security guarantee

Passing invariants reduce risk; they don’t replace an audit. The watch board is monitoring, not protocol authority.

For developers

Run interactive tests

Browse what the lab tests, run a fixture, and verify the evidence yourself — zero trust required.

1

Install & boot

npm install && npm run dev

Open http://localhost:3000

2

Run your first fixture

npm run lab:sample

Writes a report to .nocklab/ — then open the sample viewer.

3

Verify the evidence

npm run verify:portable

Exit 0 = verified, offline, without trusting this host. Or paste a receipt into /verify.

Point it at your own NockApp

npx nocklab run --config nocklab.config.json --ci --strict

Who it's for

NockApp developers

Script peek/poke fixtures and run deterministic local checks before wallets, explorers, and users depend on your app.

Auditors & integrators

Get re-derivable, signed evidence you can verify independently — instead of trusting a self-declared status.

Operators

Watch bridge/settlement state on Base Sepolia and Nockchain upstream drift with alert-ready timelines.

First working artifact

A fixture-driven lab report

hello-counter-v0

Hello Counter

Mock-backed report for a NockApp fakenet run — model-attested, not an app cert. The local adapter replaces this mock execution with commands against your own fakenet node.

pass
Steps
4/4
Invariants
4/4
Snapshots
5
Hosted reports

4

Private workspaces

4

Verified badges

12

Trust consumers

4

npm run lab:ci

Scripted run

Boot mock fakenet profile

pass

Mock endpoint accepted for deterministic run

Alice increments counter

pass

counter=1

Bob increments counter

pass

counter=2

Read counter value

pass

2

Invariant checks

Counter is never negative

pass

2

Counter final value matches fixture

pass

2

Every poke has a declared actor

pass

2/2 poke steps declared actors

NOCK-denominated balances conserve supply

pass

alice=700, bob=300, total=1000

Build plan

Core product plus parallel options

Lab JSON
RankModuleWhyFirst milestoneRevenueCapitalUpside
1
NockApp Test Runner
Core testing · Now
NockApp SDK builders need deterministic local checks before wallets, explorers, and users rely on their apps.Model an SDK-era test run with fakenet setup, scripted pokes, peeks, and pass/fail output.
CI subscriptionsTeam workspacesPaid audit-readiness reports
LowHigh
2
State Replay + Invariants
Security analysis · Now
Explorers can show what happened; Nocksperimental should help prove app state transitions obey the invariants builders promised.Define invariant fixtures for conservation, authorization, upgrade migration, replay, and invalid input handling.
Verification badgesAudit retainersExplorer-ready report exports
LowVery high
3
Intent Simulator
Solver tooling · Next
As programmable NockApps and solver-style flows emerge, builders will need to simulate execution quality before exposing real settlement paths.Create a mock intent lifecycle from declaration through solver response, proof status, and settlement result.
Solver QA plansExecution-quality reportsMarket-maker tooling
Low-mediumVery high
4
Bridge + Settlement Monitor
Operations · Next
Bridge users, wallets, funds, and explorers need reconciliation, stuck-withdrawal alerts, and proof/status timelines.Ship a Base-bridge monitor model that tracks a transfer lifecycle and emits alert-ready states.
Ops subscriptionsAlert seatsWallet and treasury monitoring
Low-mediumHigh
5
Native Token Test Harness
Standards readiness · Later
Before native tokens get crowded, own the testing surface for issuers, wallets, explorers, and protocol integrators.Draft token invariants for supply, mint/burn authority, metadata, wallet display, and transfer behavior.
Issuer verificationWallet compatibility checksExplorer compatibility exports
LowHigh
6
Compute Benchmark Reports
Compute markets · Later
Mining pools and future compute markets need neutral provider reputation before compute supply becomes a tradable surface.Define benchmark report formats for miners, pools, and providers without routing live jobs.
Provider reportsBenchmark leaderboardsPool and job-quality attestations
Medium-highVery high

Execution roadmap

How this compounds

0-30 days

Make the wedge concrete.

  • Static NockApp Lab dashboard
  • Run report schema
  • Invariant catalog v0
  • Mock fakenet/test-run fixtures
  • Ecosystem alignment notes for wallets, explorers, pools, and SDK builders

A developer or ecosystem partner can understand what would be tested and what report they would get.

30-90 days

Connect to real developer workflows.

  • CLI command for local report generation
  • Fixture-driven peek/poke simulation
  • CI-friendly JSON and Markdown reports
  • Bridge monitor model with alert states
  • Explorer and wallet report handoff formats

A NockApp repo can run a repeatable check and publish a report artifact wallets or explorers can consume.

3-6 months

Become the default pre-audit layer.

  • State snapshot diffing
  • Invariant packs for payments, intents, and token issuance
  • Hosted report history
  • Private team workspaces
  • Partner-specific report views for wallets, explorers, and infrastructure teams

Teams use the lab before launch, audits, upgrades, and partner integrations.

6-18 months

Turn testing data into ecosystem trust infrastructure.

  • Verified report badges
  • Solver execution-quality scoring
  • Native token compatibility reports
  • Compute provider benchmark profiles
  • Pool and bridge reliability signals

Apps, wallets, explorers, funds, pools, and providers use Nocksperimental reports as trust signals.

Parallel tracks

Build beside the core, not instead of it

Bridge + Settlement Monitor

Bridge activity creates operational pain for wallets, explorers, funds, and app teams: stuck transfers, reconciliation, proof status, and alerts.

Shared core

Reuses event ingestion, timelines, report exports, and alert policies.

First artifact

A mock Base transfer timeline with states for initiated, observed, finalized, delayed, and failed.

Native Token Test Harness

The native token standard is later on the roadmap, but issuers, wallets, and explorers will need safety checks as soon as it lands.

Shared core

Reuses invariant packs, snapshot diffs, and compatibility reports.

First artifact

A supply-conservation and authority-check invariant pack.

Intent Simulator

Intent-based execution needs simulation before solver networks, private DeFi, and wallet-routed actions become production-grade.

Shared core

Reuses scripted runs, failure classification, and execution-quality scoring.

First artifact

A fixture format for intent declaration, solver response, proof status, and settlement result.

Compute Benchmark Reports

Compute markets and mining pools will be capital intensive; neutral benchmarking lets Nocksperimental help without owning hardware.

Shared core

Reuses report identity, scoring, provider profiles, and verification badges.

First artifact

A benchmark report schema for miners, pools, providers, and job classes.