Developers
Prove physical action in three calls
The SDK reads hardware metadata, strips PII, and produces a succinct proof. The on-chain verifier does the rest. No proving infrastructure to run.
SDK v1.0 · stable
Quickstart
From capture to settled proof
1
Install
terminal
npm install @zkbounty/zk-sdk2
Capture & attest on-device
capture.ts
import { ZkBounty } from "@zkbounty/zk-sdk";
const zk = new ZkBounty({ cluster: "mainnet-beta" });
// reads enclave signature, GPS lock, sensor sig + slot hash
const attested = await zk.capture({
bountyId: "bnt_3f9a…",
action: "photo",
});3
Prove & submit
submit.ts
// strips PII, generates the zk proof locally
const proof = await zk.prove(attested);
// verifier program settles in one transaction
const receipt = await zk.submit(proof);
console.log(receipt.status); // "verified"
console.log(receipt.slot); // 318_540_991
console.log(receipt.payout); // 12 SOL -> your walletThat's the whole flow.
No backend, no proving cluster, no review step. The proof is generated on the hunter's device and verified by the on-chain program.
API reference
REST · base https://zk-bounty.com/v1
GET
/v1/statsNetwork stats - live bounties, escrow, capabilityGET
/v1/bountiesList and filter open bounties and their criteriaGET
/v1/bounties/:slugFetch a bounty and its submissionsPOST
/v1/bountiesDeploy a bounty and fund its escrow vaultPOST
/v1/proofsSubmit a generated proof for on-chain verificationGET
/v1/proofs/:idFetch a submission's verification statusGET
/v1/activityRecent network activity feedCircuit registry
One circuit per action class.
| Circuit | Action | Constraints | Status |
|---|---|---|---|
| physical_action_v2 | photo / video | 63,104 | live |
| sensor_log_v1 | sensor-log | 48,902 | live |
| geo_scan_v1 | scan | 41,330 | live |
| cold_chain_v1 | sensor-fusion | 71,556 | beta |
Attestation mask flags:
ENCLAVE=1<<0GEO=1<<1SENSOR=1<<2SLOT=1<<3