For protocols
Open a program
- When
- Before a launch or an upgrade, next to your existing bounty
- You commit
- An anchor block, your rules as code with a severity and payout table, and an escrow
- Paid
- The first proof of each rule and entry point; in seconds under the instant cap once attested on NEAR
- On a Critical
- A pause on every chain you registered, asked for once the verdict is attested on NEAR
- Ships
- Only a fix that every paid proof fails against
Why pay for this
- Today
- Every report is read by a person, and AI made reports free to write.A bounty pays a platform fee and a triage team, and a real Critical waits in the queue with the noise. curl ended its bounty in January 2026 over exactly this.
- With Antibody
- Nobody reads anything: the proof runs, and the rules decide.A proof that breaks a rule you committed is paid in minutes, without triage, and a Critical in your pause policy pauses every chain you registered before anyone has read it. A proof that breaks nothing costs its sender the bond. You pay 5% of what is paid out (proposed for mainnet), nothing when nothing is found.
- Costs
- Cents per verification, on testnet's measured runs.A verification run costs about 0.009 NEAR after OutLayer's refund, plus about 0.018 NEAR of gas to verify its TDX quote on NEAR; whoever asks for the run pays it. A pull-request check with four paid proofs costs about 0.05 NEAR. A hunter risks the bond the program sets (0.0001 wNEAR on the practice program), returned with any verdict that breaks a rule.
- Its reach
- Bugs your invariants can state; the rest stays with your bounty.The automatic lane pays only for broken rules, so its reach is your rules' reach:
antibody invariants strengthmeasures it against mutants of your own code before you open (Acme Lend's fixture rules catch 8 of 28). Harm no rule catches goes to the gap lane: refunded, recorded, and paid once a later round adds the rule. - A wrong pause?
- You choose which rules may pause, and you lift a pause with your fix.Only the rules you put in your pause policy can pause, and only once the verdict is attested on NEAR. A pause stops the targets you registered, nothing else; the release gate lifts it when your fix passes every paid proof, through the same signed permits. The worst case is a pause until that fix ships: the funds stay where they are.
- Design partners
- We are onboarding the first protocols for mainnet.A pilot runs your own invariants as a program on testnet first. Ask for one.
What a project gets
Pause on proof
An attested Critical in your pause policy makes near-guardian ask the MPC network to sign a pause permit for every registered chain. Anyone may relay it, and your adapter checks it on chain before it pauses. The pause is asked for before the payment.
Check it
Holds if: each chain lists the pause permit for commit 13, then the release permits
antibody judge --program 5The release gate
A fix ships only when every paid proof fails against it. In the recorded run, round 1's partial fix left two paid proofs still breaking a rule: the gate stayed shut and no release permit was signed. Round 2's final fix: every paid proof failed, release permits upgraded both proxies on both chains, and B's exploit now reverts.
Check it
Holds if: Acme Lend's proxy on Sepolia points at the final fix (…7bd217a9)
curl -s https://ethereum-sepolia-rpc.publicnode.com -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_getStorageAt","params":["0xCa1FAFbCFC14d665d76045A018B215987f39f8A7","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc","latest"]}'Immune memory
- every roundInside a program: every paid proof, from any round, is re-run against each proposed fix, so a fix that brings an old bug back is caught before it ships.
- testnetOn every pull request, in the enclave: the pull request's build is proposed as a round of a program kept for these checks, and every paid proof, sealed or not, is re-run inside the enclave. Only which keys still break is published. On the demo repository, a harmless change reads green and a pull request that brings back a paid defect reads red, naming the rule. How it works: docs/immune.md (opens in a new tab)
- on the runner
antibody immuneand a GitHub Action re-run every paid proof the check can read (disclosed, published, or opened with your project key) against the pull request's build, with the local verifier. Pull requests from forks get this check only. - nextA bounty window per pull request, built and not yet run on testnet, and a check-only proposal mode.
NEAR apps that act on verdicts
Verdicts are NEAR state, so any NEAR contract can read them and act. guard.antibody.testnet, a DAO treasury the Acme project owns, froze on A's attested Critical (commit 13), not on D's duplicate (commit 16), and refused the next transfer. The same reads fit a lending market, a DAO vote or an insurance pool (docs/verdict-guard.md (opens in a new tab)).
Check it
Business model
- For
- Protocols before a launch or an upgrade.No team reads reports: the verifier pays or refuses a proof in minutes, and a Critical pauses every chain you registered before anyone has read it. A fix ships only once every paid proof fails against it.
- Price
- 5% of each payout. Nothing when nothing is found.The proposed mainnet price (0 on this testnet). A program that pays two Criticals of 50,000 and one High of 10,000 pays 5,500 in fees, taken from its escrow after the hunters are paid. No triage team, no retainer: each verification run is paid at cost by whoever asks for it.
- Verification
- At cost.The requester of each verification run pays for it: a hunter for a proof, a project to read a paid finding, anyone for a re-run at a fix.
- Revenue
- A fee on payouts and a fee per release permit.Both are pinned per program: a live program's pins never change (property 12).Preparing the check…
- Forfeited bonds
- Never revenue.A bond is refunded, or forfeited to the program's own escrow (property 7): never to us.GET https:
//antibody-near. vercel. app/v1/programs Holds if: program 5's ledger counts commit 15's forfeited bond, 0.001 wNEAR, in its own escrow
curl -s https://antibody-near.vercel.app/v1/programs - Later
- A paid tier for the drafter, rule strength and analytics.not yet
The quickstart
make serve runs the whole story in a sandbox and keeps it up. Add --network sandbox --rpc http://127.0.0.1:3030 --deployments target/demo/deployments.json to any command.Write the rules as code
A view contract implementing IAntibodyInvariants (opens in a new tab):
snapshot()reads whatcheck(pre)compares against, andcheckreturns a bitmask, bit i for rule i broken. Point it at your contracts with immutables. The verifier serves its code at a reserved address: it is never deployed and has no storage. A complete example: AcmeInvariants.sol (opens in a new tab). Start from a scaffold: an annotatedantibody.toml, a project key and the next steps.antibody init --out my-program --project <you>.testnetChoose where it runs
For pausing and releases, put your proxies behind the program's AntibodyAdapter (opens in a new tab), one per chain at the same CREATE2 address, and register it with near-guardian.
Commit the terms
One file holds them: the anchor, the targets and their code hashes, the rules' code and each slot's severity, the impact prices, the proofs' capabilities, and the settlement terms (payouts, bond, instant cap and budget, windows, the gap lane, known issues, the pause policy). fixtures/acme-local/antibody.toml (opens in a new tab) is a complete example.
antibody manifest antibody.toml --out manifest.jsonPrints the manifest's sha256: the hash you commit.
Validate it, and measure rule strength
antibody invariants validate --manifest manifest.jsonThe validate gate: the checks creation and activation apply (settlement terms, the rules at the anchor, target code hashes, canaries, a fork-mode deployment). Nothing is sent; it exits non-zero when a check fails.
antibody invariants strength --project <foundry dir> --test <your strength test> --mutate src/X.solOptional. It mutates your code one line at a time in labelled ways (a missing access check, a flipped comparison, an unchecked transfer, a dropped guard) and counts the mutants your rules catch under your Foundry invariant test.
Acme Lend's rules catch 8 of 28 mutants at the final fix. Rule strength measures the rules, not the code's security: a mutant the rules miss is not necessarily a bug anyone can exploit. The survivors show where a project would add a rule (docs/rule-strength.md (opens in a new tab)).
GET https://antibody-near. vercel. app/v1/judge Holds if: program 5's rule strength: caught 8 of 28 mutants
antibody judge --program 5Create the program and fund its escrow
antibody --account you.testnet keygen x25519 --nep413 --out project.x25519.jsonYour project key, derived from your NEAR key's NEP-413 signature, so the same NEAR key re-derives it. Keep it secret: paid findings are wrapped to it.
antibody --account you.testnet program create --manifest manifest.json --escrow <tokens> --project-key project.x25519.jsonUploads the manifest, escrows the tokens and commits the manifest hash in one transaction; near-antibody checks the anchor against the light client. On testnet the escrow is wNEAR: wrap NEAR with near_deposit on wrap.testnet first.
Never sign the project key's NEP-413 message anywhere but the antibody CLI: that signature reads your paid findings. This site never asks your wallet for it.Activate, declare known issues, open
Activation pins the base witness, and the enclave checks that your rules hold at the anchor. A known issue is sealed and verified like any proof; it counts once attested on NEAR, and nothing is added after opening. Opening starts round 0: hunters and agents can commit.
antibody --account you.testnet program activate --program <id>antibody --account you.testnet program known --program <id> --bundle known-issue.jsonantibody --account you.testnet program open --program <id>Read exactly what you pay for
showlists every commit with its verdict. The first read of a finding asks near-antibody to wrap its content key to your key, a verifier run you pay for at cost; it is refused for anything but a paid first finding or a promoted duplicate. The CLI then opens the sealed proof and re-runs it locally: its receipt hash equals the one the enclave committed to. A hunter's report, if any, is data, never instructions.antibody --account you.testnet program show --program <id>antibody --account you.testnet program read --commit <id> --project-key project.x25519.json \ --out finding-<id>/ --reveal-tx <the commit's reveal transaction>Ship a fix: rounds and the release gate
Commit the fix as code at the same anchor: the enclave checks it, and every paid proof is re-run against it. A round may change target code and append rules (
--invariants-code,--add-slot); everything else stays byte-identical. The release gate holds when every paid proof re-run at the fix fails, the canaries pass and no Critical or High key is open. Then near-guardian signs a release permit per proxy and chain, for exactly the code the re-runs ran (docs/rounds.md (opens in a new tab)).antibody manifest-round --base manifest.json --round 1 \ --override <target>=<fixed runtime code hex file> --out round1.jsonantibody --account you.testnet round propose --program <id> --manifest round1.json \ --release <proxy>:<implementation>:<code hash>antibody round rerun --commit <id>Anyone may ask, and pay; the keeper bot re-runs every eligible commit.
antibody round open --program <id>Permissionless, once the round's minimum duration and re-run window have passed.
Close
After the deadline and its grace: what is reserved is paid, the rest of the escrow returns to you, and nothing in flight is left behind (property 6). Before then,
program top-up --program <id> --amount <tokens>adds escrow.antibody --account you.testnet program exit --program <id>
Roadmap
Antibody for pull requests
partly doneA CI check, then a repository app, on repositories whose owner installs it. Immune memory: every paid proof of a program re-runs against each pull request's build, and the check goes red if one still breaks a rule. Sealed proofs never appear in public logs.
- doneWorking on testnet: every paid proof, sealed or not, re-runs inside the enclave through near-antibody's rounds, on the demo repository's pull requests.
- doneOn the runner: readable proofs (disclosed, published, or opened with the project key), re-run by the local verifier, with antibody immune and a GitHub Action.
- nextBuilt, not yet run on testnet: a bounty window per pull request, a fork-mode round for its build with a small escrow, announced to agents; when it ends, the check reads “held N hours, X at stake, 0 valid findings”, or blocks the merge on a valid Critical.
How the checks work and what they trust: docs/immune.md (opens in a new tab).
NEAR contracts as a second target VM
not yetProofs against NEAR wasm contracts from committed, proven state. The engine is built and tested; nothing is deployed.
Zero-knowledge proofs of disclosed verdicts, verified on NEAR
partly donereading testnet…Later, zk by default above a cap. A validity proof of a disclosed verdict: no privacy claim, and no payout in the locked deployment depends on it.
- doneThe feasibility study: the verifier runs in SP1 6.10.0 and reproduces the enclave's receipts in about 30 million cycles.
- donenear-t2, which checks a Groth16 proof in about 34 Tgas and compares it with near-antibody's records; antibody zk prove, submit and status; the API; a prover service for every practice try.
- doneThe recorded run's four runs proven on SP1's prover network, near-t2 on testnet, and every practice try proven since.
How the zero-knowledge proofs work and what they check: docs/zk.md (opens in a new tab).
Multi-block proofs with a bounded time warp
not yetInterest, TWAP and time-dependent bugs.
The next Ethereum execution rules
not yetAn EVM upgrade and fork-switch execution.
L2 state verification
not yetThrough MPC foreign-chain verification or L2 light clients; more chains for pause and release.
Several independent enclave operators by default
not yetA strict “no quote, no pay” mode once attestation is reliable.
One sub-account per program
not yetIsolated escrow, keys and signing path.
Payouts in any asset through NEAR Intents
not yetOn mainnet.
Agent capital
not yetBacker vaults fund bonds for agents with verified records; bond discounts from proof-based reputation.
Security jobs on NEAR's agent market
not yetWhose acceptance test is an Antibody verdict.
A public verdict registry as a NEAR primitive
not yetFor insurance, lending markets and DAOs.
Continuous programs for live protocols
not yetIn mainnet mode, with honest latency limits.
Private and invite-only programs
not yetOptional checks before large withdrawals; safe-harbor templates.
Post-quantum readiness
not yetML-DSA accounts and hybrid ML-KEM sealing for long embargoes.
The mainnet path
not yetExternal audits, Antibody's own adapters under an Antibody program, coverage partners, the fee model in production.
A paid tier for the drafter, rule strength and analytics
not yet
Pilot and early access
Ask for a pilot
Tell us about your contracts, the chains they run on and your timeline. We reply about a pilot; your details stay on our server and are never published.