Wanted

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

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

WindowWhat can happen
Before the deadlineSubmit, award, cancel if there are no submissions.
Deadline to +14 daysAward. Cancel only with no submissions.
After +14 daysWith 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

Contracts

ContractAddress
Wanted escrowdeploying soon