Wanted docs
Wanted is a bounty escrow on Robinhood Chain (chain id 4663). A poster locks a reward in ETH or USDG with a task and a deadline. Hunters submit links to their work. The poster awards one hunter, or if they stay silent, every hunter shares the reward.
Posting
- Title up to 120 bytes, details up to 2,000.
- Reward in ETH or USDG. For USDG the app approves exactly the reward first.
- Deadline between 1 hour and 120 days from now.
- The fee rate at the moment of posting is stored with the bounty and can't change for it later.
Submitting
Until the deadline, any wallet except the poster can call submit(id, link) once per bounty. The link (up to 300 bytes) is stored in the Submitted event, so it is public. Share a preview if the work itself is valuable.
Awarding
From posting until deadline plus 14 days, the poster can call award(id, hunter) for any wallet that submitted, even before the deadline. The hunter receives the reward minus the fee in the same transaction and the bounty closes.
Cancelling
While a bounty has no submissions, the poster can call cancel(id) at any time, including after the deadline, and gets the full reward back. Once anyone has submitted, cancelling is no longer possible.
The silent-poster split
If the pick window (deadline plus 14 days) passes without an award and there was at least one submission, each hunter who submitted can call claimSplit(id):
part = reward ÷ submissions (the last claimer also gets the rounding dust) paid = part − part × fee ÷ 10,000
Example: 500 USDG, 3 hunters, 2% fee. Each hunter claims 166.67 USDG and receives 163.33. The poster has no way to stop it, which is the point: the reward was promised to the work.
Fees
2% of what is paid to hunters, sent to the treasury. Nothing is charged when a poster cancels or takes back an unanswered bounty. The cap in the contract is 5% (MAX_FEE_BPS = 500).
Timeline
| Window | What can happen |
|---|---|
| Before the deadline | Submit, award, cancel if there are no submissions. |
| Deadline to +14 days | Award. Cancel only with no submissions. |
| After +14 days | With submissions: each hunter claims an equal part. Without: the poster cancels. |
Interface
function post(address token, uint128 amount, uint40 deadline, string title, string details) payable returns (uint256 id) function submit(uint256 id, string link) function award(uint256 id, address hunter) function cancel(uint256 id) function claimSplit(uint256 id) function get(uint256 id) view returns (Bounty) function latest(uint256 skip, uint256 n) view returns (Bounty[] list, uint256[] ids) event Posted(uint256 indexed id, address indexed poster, address token, uint256 amount, uint256 deadline, string title) event Submitted(uint256 indexed id, address indexed hunter, string link) event Awarded(uint256 indexed id, address indexed hunter, uint256 paid, uint256 fee) event SplitClaimed(uint256 indexed id, address indexed hunter, uint256 paid) event Refunded(uint256 indexed id, uint256 amount)
Owner limits
The owner can change the fee for future bounties up to 5%, change the treasury and hand over ownership. Only ETH and USDG are accepted as rewards. There is no function that moves escrowed funds, picks a winner or edits a bounty.
Risks
- The contract is unaudited. It has unit tests and a test with real USDG on a copy of mainnet.
- Judging is up to the poster. The contract guarantees payment, not fairness of the pick.
- Submissions are public links. Anyone can see submitted work.
Contracts
| Contract | Address |
|---|---|
| Wanted escrow | deploying soon |
