Acme Lend v1 — pre-launch (testnet)
Overview
- Project
- acme.antibody.testnet, account: acme.antibody.testnet · our fixture project
- Description
Fictional lending protocol with planted bugs (DELIBERATELY VULNERABLE TEST FIXTURE).
as written in the committed manifest- Program key
- bounty.
antibody. testnet/4, program key: bounty.antibody.testnet/4 - Phase
- Open round 0this round since
- Created
- EgfTZ8mL…, NEAR transaction: EgfTZ8mLntpfGfzHtrStxUtMMkVjji2YgDwKT4CZLMmW, opens an explorer in a new tab
- Opened
- EdgXpczE…, NEAR transaction: EdgXpczE1qzKCqmES7nCchXCdqYTRwGjH9tR2BMcWUSy, opens an explorer in a new tab
- Terms sha256
- 3a9c40175b7ae46a…, terms sha256: 3a9c40175b7ae46a342566111ba65ca4a420c8ff2289eb7b08c8759b5125a34d
- Manifest sha256
- 7f6ccc5b783a0269…, manifest sha256: 7f6ccc5b783a0269f6c341e480a63ebddb65e2613052cd1b2b53d9b7366f7169Uploaded in NEAR transaction 7hCWPDLP3c…, NEAR transaction: 7hCWPDLP3cykczeraXZXNb7yHAtRVaWFH9uw5UysPnRk, opens an explorer in a new tab by acme.antibody.testnet
- Sealing key
- ed440042deec504f…, sealing public key: ed440042deec504fdc6412eefd4e09ea51ad98a5f1ff54a7fef7921e2c8d0c1cProofs are sealed to it. It counts only once its activation run (run 28) is attested on NEAR: Ao8kjEMS…, NEAR transaction: Ao8kjEMSxomRqLcthiPcovCdUdvTjw9eE7p4ma3XnuLV, opens an explorer in a new tab
Its record
- At stake
- 0.3wNEAR available now
- Verified attempts
- 1
- Paid findings
- 1
- First claim
- 281 safter it opened
- Claimed in the first hour
- 25%of the escrow
- Open for
- 145.1 h
Holds if: the manifest hash shown here, as near-antibody stores it
antibody judge --program 4The rules as code
| Rule | Severity | Payout | Budget per round | Source |
|---|---|---|---|---|
solvencybit 0an attested proof pauses Lender claims are covered at the committed reference price. | Critical | 0.1 wNEAR | 0.4 wNEAR | |
fees_to_treasurybit 1 Accrued fees plus the treasury balance never decrease. | High | 0.03 wNEAR | 0.4 wNEAR | |
share_pricebit 2 The vault's share price never falls for the remaining holders. | Medium | 0.01 wNEAR | 0.4 wNEAR |
The budget caps what one rule pays per round, so many entry points into one root cause cannot drain the escrow. A finding's key is the rule and the entry point that broke it (by default, the target and function): the first proof of each key is paid.
The targets (9) on Sepolia
- AcmeGuard0xbbbdc069…732c, AcmeGuard address: 0xbbbdc0695cc5b4ce66f14408b4079dc4b816732c, opens an explorer in a new tab
- acUSD0x4ddda60d…7982, acUSD address: 0x4ddda60d4554cba7bcf0fd51d0c9ffba04c47982, opens an explorer in a new tab
- acETH0x9c72c966…da9b, acETH address: 0x9c72c966c0a36b30f5c30b8e56453a0ca4d5da9b, opens an explorer in a new tab
- AcmePool0xa6481705…d662, AcmePool address: 0xa6481705df94f5a53897f4ad603c4153af94d662, opens an explorer in a new tab
- AcmeLend0x13ddc837…a79a, AcmeLend address: 0x13ddc837a4aa76d564937dc34ca7f7238195a79a, opens an explorer in a new tab
- AcmeLendImpl0x8f7242e2…2c58, AcmeLendImpl address: 0x8f7242e24f57871ffa0a365a9a719e73271f2c58, opens an explorer in a new tab
- AcmeVault0x23f0f943…9f4d, AcmeVault address: 0x23f0f94338485f422b76620a1a6e4d0349379f4d, opens an explorer in a new tab
- AcmeVaultImpl0x671fc443…ed53, AcmeVaultImpl address: 0x671fc4433d8c22092b6ae36c5d7beda9b521ed53, opens an explorer in a new tab
- AcmeTreasury0x2eca410f…6a92, AcmeTreasury address: 0x2eca410fb258ad9bdf22f7d3d6a77462602e6a92, opens an explorer in a new tab
The terms
Payouts
| Severity | Payout | Rules |
|---|---|---|
| Critical | 0.1 wNEAR | solvency |
| High | 0.03 wNEAR | fees_to_treasury |
| Medium | 0.01 wNEAR | share_price |
| Low | none | none |
- Bond per commit
- 0.001 wNEAR · refunded, or forfeited to this program's escrow when the proof breaks nothing
- Instant payments
- up to 0.1 wNEAR
When a payout is instant
Paid in seconds when the verdict is attested on NEAR, within 0.15 wNEAR per 1 h. Otherwise a payout waits the challenge window; above the cap it also needs an agreeing second run.
- Challenge bond
- 0.005 wNEAR
- Protocol fee
- none · pinned at 0 for this program
- Release fee
- none · pinned at 0 for this program
- Verification deposit
- 0.03 NEAR per run, paid by whoever asks for it; OutLayer refunds the unused part
The escrow against the largest payout
The available escrow over the largest payout. Below 1× the status page raises an alert; a payout the escrow cannot cover is queued as debt, in commit order.
- Pauses
- An attested proof of solvency, on a light-client anchor, pauses the protocol on every chain the project registered (one pause ticket per round), with no minimum impact.
- Known issues
- At most 4, sealed before open, their base payouts at most 50% of the escrow.
- Gap lane
- A proof that breaks no rule but harms a declared protected account by more than $100 is refunded and recorded as a gap claim, with 0.01 wNEAR reserved. It is paid if a later round adds a rule its proof breaks.
- Unevaluable
- A proof the rules cannot evaluate (check() reverts or runs out of gas) is refunded.
The windows
| Window | Length | What it bounds |
|---|---|---|
Reveal | 10 min | A commit is revealed within this, or it expires and its bond goes to the escrow. |
Challenge window | 60 s | A verdict that is not paid instantly is final after this; anyone may challenge it within it, with the challenge bond. |
Resolve | 5 min | A challenge with no attested result within this voids the verdict; both bonds are refunded. |
Run timeout | 4 min | A run that never answered is void after this. |
Infrastructure grace | 10 min | An infrastructure failure is retried this long, then the commit closes with a refund. |
Round minimum | 2 min | A round runs at least this long before the next one opens. |
Re-run window | 10 min | Re-runs at a proposed fix may be asked for within this of its confirmed check. |
Disclosure delay | 10 min | A paid proof becomes public at most this long after its claim. |
Exit grace | 60 s | After the deadline plus this, anyone may settle the program (exit). |
Deadline | No commit is accepted after it. |
The anchor
- Chain
- Sepolia (11155111)
- Block
- 12056217 (opens an explorer)
- Hash
- 0xe9a6c3adef88372784cc7ee980ad910856c0cc7b54f70c3a1fa4895409a457fe
- Its check
- confirmed by the light clientnear-antibody compared the hash with client-eth2.sepolia.testnet when the program was created.anchor_checked (LightClient): EgfTZ8mL…, NEAR transaction: EgfTZ8mLntpfGfzHtrStxUtMMkVjji2YgDwKT4CZLMmW, opens an explorer in a new tab
- Base witness
- The anchor state the rules and the round-0 checks read, proven against the anchor and pinned at activation.e30ce3628ddfd2cd…, base witness sha256: e30ce3628ddfd2cd6d9c7c45f879d8cf080e4d4f75e9cc3fca2e1db04c0df6e5Uploaded in NEAR transaction 4dVsdC4UF1…, NEAR transaction: 4dVsdC4UF1u4gmUez3tSeHRb6eWgkkigWSVpoVZf8V7m, opens an explorer in a new tab by acme.antibody.testnet
Check the hash yourself
Expected: byte 0 is 1 (the client holds the block), then 32 bytes equal to the anchor hash.
The same check from a terminal, and the one that also hashes the block header from a Sepolia RPC:
antibody judge --program 4antibody anchor-check --block 12056217Known issues
Known issue 1
- Rules
- share_price (slot 2)
- Tags
- 6078473139faa847…, known issue tag: 6078473139faa847b26450e186815651fcfe82fad50993f0d44fda6fa647eab3
- Verified by
- run 29 · 9whjFKVe…, NEAR transaction: 9whjFKVemMrMX668vHYLhrH1VaKZGRi7MGWmV3JQJA6U, opens an explorer in a new tab
- Later proofs
- none yet
Declared before open (opened with 1 known: EdgXpczE…, NEAR transaction: EdgXpczE1qzKCqmES7nCchXCdqYTRwGjH9tR2BMcWUSy, opens an explorer in a new tab). A round may never add one, and a known issue blocks no release.
Holds if: the first known issue's tag, as committed before open
antibody status --program 4The chains
The sealed feed
| Commit | Who | When | State | Verdict | Keys | Payout |
|---|---|---|---|---|---|---|
Commit 12#0 · round 0 | agent-a.antibody.testnet, account: agent-a.antibody.testnetour fixture agent A | Paid | ViolationAttested on NEAR | solvencye509d5ff…, tag of solvency: e509d5ffa3c37cb943f14abd9e9364bf21cb6306547bde28eae54b83eeb89697 |
A key is a rule and the entry point that broke it: the first proof of each key is paid; a later one is a duplicate that keeps its own proof record. Each commit's page shows its proof card and how to check it.
antibody status --program 4Rounds and the release gate
The ledger
Where the escrow is
| Available | 0.300 |
|---|---|
| Reserved | 0.000 |
| Paid | 0.100 |
| Fees | 0.000 |
| Returned | 0.000 |
| Funded | 0.400 |
What came in
| Deposits | 0.400 |
|---|---|
| Forfeited bonds | 0.000 |
| Challenge bonds | 0.000 |
| Funded | 0.400 |
Forfeited bonds go to this program's escrow, where they pay future findings: never to us.
The audit
- Accounted
- 0.4
- Reservations
- 0 · held by the commits; equals reserved when it balances
- Debt
- 0 · owed and not yet funded, queued in commit order
- Defaulted
- 0
Holds if: ok: true (funded equals accounted, and reserved equals the commits' reservations)
antibody view --contract bounty.antibody.testnet --method audit --args '{"program_id":4}'