Bounty Marketplace
The NullGraph Bounty Marketplace connects researchers who own Null Knowledge Assets (NKAs) with BioDAOs and research organizations willing to pay for specific negative results.All bounties are denominated in BIO tokens and use automatic escrow — rewards are locked on-chain the moment a bounty is created.
How It Works
1
BioDAO Posts Bounty
Creator describes needed null result, sets BIO reward amount, and chooses deadline
2
Automatic Escrow
BIO tokens are immediately transferred to a program-controlled vault
3
Researcher Submits NKA
A researcher with matching NKA links their asset to the bounty
4
Creator Reviews
Bounty creator reviews submission and either approves or closes bounty
5
Instant Payout
On approval: 97.5% to researcher, 2.5% to protocol treasury
Bounty Account Structure
Each bounty is stored in aNullBounty PDA:
PDA Seeds:
- Bounty:
["null_bounty", creator_pubkey, bounty_number_le_bytes] - Vault:
["bounty_vault", bounty_pda_key]
Bounty Status Flow
Bounties transition through four states:Creating a Bounty
Instruction: create_bounty
Escrow Guarantee
The moment
create_bounty succeeds, BIO tokens leave the creator’s wallet and are locked in the vault. The creator cannot access these funds except by closing the bounty.Frontend Example
Submitting to a Bounty
Instruction: submit_to_bounty
Researchers link their existing NKA to an open bounty:
Security: The
has_one = researcher constraint in the account context ensures only the NKA owner can submit it.Submission Account
Each submission creates aBountySubmission PDA:
["bounty_submission", bounty_pda_key, null_result_pda_key]
Approving a Submission
Instruction: approve_bounty_submission
Bounty creator approves the submission, triggering automatic payout:
Atomic Payout
Both transfers (researcher + treasury) happen in a single transaction. Either both succeed or both fail.
Vault Authority
Vault uses PDA signer seeds to authorize transfers. No private keys involved.
Closing a Bounty
Instruction: close_bounty
Creators can reclaim escrowed BIO from Open or Matched bounties:
Cannot close Fulfilled bounties — once approved, the bounty is permanently marked as Fulfilled and vault is already empty.
BIO Token Integration
SPL Token Interface
All token operations use the SPL Token Interface (anchor-spl/token_interface):
Why transfer_checked?
- Validates mint — ensures tokens are actually BIO, not a fake mint
- Validates decimals — prevents precision errors
- Safer than
transfer— explicit validation at instruction level
BIO Decimals
BIO tokens use 6 decimals:Events
All bounty lifecycle actions emit events for indexing:Security Model
Signer Checks
Only
creator can approve/close their bounty (enforced via has_one = creator)Status Guards
Each instruction validates current status before mutation
Submission Match
approve_bounty_submission verifies matched_submission PDA matches provided submissionSafe Math
All fee/payout calculations use
checked_mul, checked_div, checked_subError Handling
Browse Bounties
Fetch all bounties from the program:Next Steps
Protocol Fees
Deep dive into the 2.5% fee model and treasury distribution
BIO Integration
Learn about Bio Protocol alignment and token economics