Testnet: tokens have no value, and the vulnerable contracts are our own test fixtures. Limits

Practice program · NEAR testnet

Try it, no account

Commit a sealed proof, have it run in the enclave and see it paid, from this page. Your browser makes the key, seals the proof and signs every transaction of the try.

Start a try

No wallet and no account: this tab does everything, with real testnet transactions.

Your account will be <name>.practice.antibody.testnet: 1 to 32 of a–z, 0–9, - and _, used once (a closed account keeps its name).

About 1.5 min now. Attestation on NEAR cannot come before , when the last of OutLayer's new worker images counts for the practice program, so the payout waits for the 60 s challenge window to end.

What will happen

  1. Your browser makes a throwaway key. The public vend key, deliberately public and allowed only to vend and reclaim, creates <name>.practice.antibody.testnet for it; the vending contract pays.
  2. It reads the practice program from the vending contract, builds the published tutorial proof against your own vault, seals it, then commits and reveals it.
  3. OutLayer's enclave re-runs the proof on the program's pinned base and answers on NEAR. The answer is attested once the run's TDX quote is verified on NEAR; if that has not happened when the challenge window ends, the try is paid then, without it.
  4. Your browser settles the claim (allocate and pay, both permissionless) and closes the account: its NEAR goes back to the vending contract.

The practice program is a tutorial: its bug and its proof are public, and nothing here is a real vulnerability. NEAR testnet only: wNEAR has no value. How the practice program works

Before you start

  • Reading the practice program from the vending contract…
  • The vending contract limits how many practice accounts it vends per clock hour.
  • The faucet: the vending contract holds 3.692 NEAR; the public vend key has 9.17 NEAR of allowance; its NEAR credit at near-antibody, which pays each try's verification run and storage (about 0.048 NEAR a try), is 1.32 NEAR. A try costs it about 0.046 NEAR (measured on testnet); what it lends the account comes back at the close.
  • Attestation on NEAR may not come yet. OutLayer listed new worker images recently, and near-antibody counts them for the practice program only from , the last from 2026-11-10 15:07:42 UTC. A run on one of them cannot be attested before then, so the try is paid when the program's 60 s challenge window ends, about 1.5 min after the commit.

What your browser will do

  • Made here: the throwaway ed25519 key, the salt, the seal (X25519, HKDF-SHA256, ChaCha20-Poly1305) and every transaction signature of the try.
  • Kept here: the practice key, in this tab's memory and sessionStorage, so a reload can resume the try or close the account. It is never sent; only signatures are.
  • Done elsewhere, as for every run: OutLayer's enclave answers the reveal, and our attestation relayer submits the run's TDX quote, which near-antibody verifies on chain.

This tab talked to

Nothing yet: the page reads the vending contract from NEAR when it opens, and the try does the rest.

Counted in this tab since the page opened (checks you run with a button are separate). Besides this site itself, the page's Content-Security-Policy lets it reach only our API and public NEAR and EVM RPCs.

If a try cannot run now

recorded

Recorded tries, and the CLI

Two practice tries from the 2026-11-04 testnet run, each account vended by the public vend key for someone with no NEAR account: recorded, not live. Every hash below is a NEAR testnet transaction. The results file

judge-1-p6.practice.antibody.testnet

practice try

Done:Paid, 0.001 wNEAR to the vending contract, 43.7 s from the vend to the payout (vault 4, run 53). Commit 20 times each of its steps from the commit's block.

view bounty.antibody.testnet.get_commit({"commit_id":20})

Holds if: commit 20 is Done:Paid, 0.001 wNEAR (1000000000000000000000 raw)

antibody status --commit 20

judge-2-p6.practice.antibody.testnet

practice try

Done:Paid, 0.001 wNEAR to the vending contract, 39.9 s from the vend to the payout (vault 5, run 54). Commit 21 times each of its steps from the commit's block.

view bounty.antibody.testnet.get_commit({"commit_id":21})

Holds if: commit 21 is Done:Paid, 0.001 wNEAR (1000000000000000000000 raw)

antibody status --commit 21

The same try from a terminal signs the same transactions. The release binary (the README shows how to download it and check its sha256) has the testnet deployment built in; it needs no account and no key:

antibody try --name <you>

Once the public vend key's allowance is spent, the CLI can vend with your own testnet account instead:

antibody --account <your-account.testnet> try --name <you>