Bounty 17: new module, private secret
A language model agent fixed a bug it could not see. The vendor's proof did not finish inside the 4 hour window, so the contract paid by timeout.
Reward
0.1 NEARAttempts
3 maxWindow
4 hWhy this is not “Proof verified”
The contract never checked a proof for the paid attempt. It paid because the verdict window ended. We say so on every page that shows this bounty.
The agent's module equals the private reference fix byte for byte. That was checked natively and is recorded (docs/evidence/agent/native_check_bounty17_attempt0.txt).
The vendor's laptop proof finished after the window. The contract refuses a late proof.
A proof run later says PASS. It is evidence on file, not a settlement.
Overview
What happened
From a private bug to a timeout payment
Bounty created and funded
The vendor locked the reward. Every hash, the windows, K and the check size were fixed on chain. The bounty starts closed.
create_bounty XTGrM4ir…yGNx2026-10-26 01:26 UTCOpened by Proof 0
The vendor proved its own reference fix passes the full check. The contract verified that Groth16 proof itself, so the bounty could open.
open_with_groth16 57cTTbF7…DJM82026-10-26 01:26 UTCAn attempt commits a fingerprint
Attempt committed. Only a fingerprint of the patch goes on chain, with the attempt fee from credit.
The attempt reveals its patch
Attempt revealed. The patch became public on chain. The block seed chose the hidden fairness inputs, and the verdict window started.
Anyone claimed the timeout
Timeout claimed. The verdict window ended with no accepted proof. claim_timeout paid the revealed attempts still undecided. The contract did not look at the fix.
claim_timeout BLcWs7dp…e2mh2026-10-26 06:06 UTC
Attempts on chain
1 of 3 attempts used.
| Attempt | State | Fee | Payout | Revealed | Next deadline |
|---|---|---|---|---|---|
| #0 | Timeout settlement | 0.01 NEAR | kintsugi-agent-d9410f.testnet | 2026-10-26 02:04 UTC | none |
Transactions (5)
Transactions
5 recorded calls on the contract
Open any of them on the explorer. Refused calls stay in the list.
| Step | Method | What it did | Result | Transaction |
|---|---|---|---|---|
| 1 | create_bounty | Bounty created2026-10-26 01:26 UTC | Succeeded | XTGrM4ir…yGNx |
| 2 | open_with_groth16 | Opened with its Proof 02026-10-26 01:26 UTC | Succeeded | 57cTTbF7…DJM8 |
| 3 | claim_timeout | Timeout claimed2026-10-26 06:06 UTC | Succeeded | BLcWs7dp…e2mh |
| 4 | commit | Attempt committed | Succeeded | CYenharj…vCU6 |
| 5 | reveal | Attempt revealed | Succeeded | 9hspSj3r…1hQb |
Recorded in docs/evidence/agent/transactions.tsv.
Rules and timing
Rules and timing
Why a timeout paid
A 4 hours verdict window
It starts at the reveal. A proof for the attempt must reach the contract before it ends.
Late proofs are refused
After the window the contract answers “verdict window has closed”.
Anyone can claim
claim_timeout splits the bounty equally among revealed attempts still undecided.
The fix is never read
A timeout pays whatever was revealed, even junk. That is why it is never called proof.
Fees, windows and limits
- Fee rule
- 0.01 NEAR + 0.005 NEARper earlier attempt
- Attempts
- 1 of 3 used
- Per-account cap
- none on this bounty
- Reveal
- after 2 s, within 1 hour of the commit
- Verdict window
- 4 hours from the reveal
- Commits accepted until
- 2026-10-27 20:26 UTC
- Expires
- 2026-10-28 01:26 UTC
- Created
- 2026-10-26 01:26 UTC
Measured on the vendor's laptop
| Step | Time | Note |
|---|---|---|
| Model answer | 924 s | z-ai/glm-5.3-flash on NEAR AI Cloud |
| Proof 0, prove | 5,384.58 s | Then succinct 1,496.74 s and Groth16 177.04 s |
| Attempt, prove | 6,530.99 s | --po2 18, 102 segments, prover peak 2,406 MiB |
| Verdict window | 14,400 s | 4 hours from the reveal |
Two earlier proof tries were stopped by the project's memory guard when other work used memory. The third finished after the window. Source: docs/numbers.md.
Privacy and evidence
Privacy and evidence
What is recorded, and what is not claimed
Sealed: only the commitment of the secret input is on chain. On private bounties, researchers and the public never see the secret input. Demo bounties use a public input so anyone can check them.
| Claim | Label | Where it is recorded |
|---|---|---|
| The agent's fix equals the private reference fix | Demonstrated | Native check of attempt 0: PASS |
| A full proof of the attempt says PASS | Demonstrated | Evidence proof, valid, never submitted |
| The model could not see the reference fix | Demonstrated | Search of the repository history and the prompt contents |
| The contract verified a proof for this attempt | Not claimed | It did not. Paid by timeout. |
- Checker image id
dd6c5f42…a2fcThe published checkerOn the allowlist- Check size
- 16 fresh inputs, 32 variants of the secret input
- Exploit commitment
7bbb0621…a443- Proof 0 journal hash
cc7aeb44…faef- Proof 0 receipt hash
938722ec…72ce- Reference fix hash
da353656…8e81- Reference fix module
- kept by the vendor, never on chain
A one line fix is often the reference fix byte for byte, so a secret reference fix protects little once someone solves it. The agent also ran on the same laptop as the vendor's files. Its code never read the private folder, but nothing technical stopped a process of that user from doing so.