How it works

A referrer escrows the reward up front. A referee takes a slot, signs up with the code, and submits proof. The referrer approves — or disputes, and a jury of the protocol's most active wallets rules. Nobody has to trust anybody to hold funds.

The money

Posting a slot locks of the reward: the reward itself, a protocol fee, and a dispute stake. The referee posts a matching stake only when they submit proof, so accepting a mission is free. Both stakes come back on an honest deal — the loser of a dispute forfeits theirs to the jury, which is what stops either side from disputing for free.

Who can change the rates

The fee and the stake above are set by the protocol and can be retuned — the market they were chosen for is a guess until it has run. What they cannot do is reach an offer that already exists. Every offer stores the rates it was funded at, and each one settles on those, so a change binds new business only. Post a slot at and it pays however the number moves afterwards.

Both rates are bounded in the contract, not by policy: the fee can never exceed , and the stake is held between and . The worst case is therefore readable from the code rather than taken on trust. The recipient of the fee is fixed permanently at deployment — the rate can be retuned within those bounds, but it can never be pointed somewhere new.

Nothing about that lets anyone reach escrowed money. There is exactly one function that moves USDC out of this contract, it pays the caller their own settled balance, and no role — owner, arbitrator, or protocol — can name a different recipient.

Changing an offer after it is posted

An offer is not frozen. Its referrer can add slots at the price already posted, funding each new one exactly as the first were, and can raise the reward, topping up the escrow on the slots nobody has taken. The offer keeps its id and its history either way, so a campaign that sold out or is not moving does not have to be cancelled and re-posted.

Two limits on the raise. The reward can only go up — the advertised price is what a referee decides on before doing the work, so it can never be walked back under them. And it moves only between missions: while any mission is in progress the price is held, and it unlocks once every one of them has settled. A slot already paid out is never re-priced. Adding slots has neither restriction, because it changes nothing about a mission already under way.

Points and the leaderboard

The board is ranked on points, and points are minted from one thing only: a paid settlement. The referee earns 100 per USDC of reward received and a flat 1,000 for the claim; the referrer earns 100 per USDC the slot cost them — reward plus the fee, never a dispute stake — and a flat 1,000 for the bounty. A record, the highest reward per slot ever posted, is worth 10,000 to its referrer once a slot on it has paid; a referral is worth 2,000 once the referee has settled something. And the early birds: the first 1,000 offers and the first 1,000 claims each hold a place in the queue, worth 1,000 points to number 1 and a point less for each number after — to the offer's referrer, to the claim's referee — paid once the offer has paid a slot or the claim is paid. Numbers are spent in order whatever became of them.

Nothing in flight scores. A claim that is accepted, submitted or disputed can still go either way, so it is worth nothing until it reaches a terminal state — and nothing already scored is ever taken back. The same rule governs the other columns: they count slots that closed, missions that reached a terminal state and disputes that were ruled on, never work still under way.

The reason every point hangs off a paid settlement is that every other number here is free to inflate. Posting an offer costs nothing, because cancelling refunds the reward, the fee and the stake in full; accepting a mission costs nothing, because the referee's stake is not pulled until they submit proof; letting a mission lapse costs nothing. A payout is the only event where money leaves for good — the reward to the referee, the fee to the protocol — so it is the only event a ranking can safely rest on. No single counterparty may supply more than 25% of a wallet's points either, so one relationship — however genuine — cannot be an entire rank.

This makes rank cost money; it does not make it unbuyable. Anyone holding both sides of a deal can still settle slots with themselves, and they will pay the same for the privilege as everyone else. That is deliberate — the price of a point is the same however it is earned — but read the board as a record of fees paid, which is exactly what it is, rather than as proof of reputation.

The rates are on chain, in a contract only ref_market can write, and every board applies them when it is read — so a change re-prices every settlement ever made, and every change is a public event.

Your proof, and what happens to it

Proof of a signup is usually a screenshot of a personal financial account, so none of it goes on chain: the contract stores only a keccak256 commitment and a link. The file itself is uploaded to private storage and shown to exactly three people — the referee who submitted it, the referrer who is paying for it, and, only while a dispute is open, the jurors drawn to rule on it. Not to anyone else holding the link, and not to a juror once the case has closed. Accepted formats are PNG, JPEG, WEBP, PDF, up to 10.0 MB.

It is deleted as soon as the claim settles — paid, rejected or expired — and equally as soon as a submission deadline passes without a claim ever being made. There is no retention period to wait out: the file exists for as long as someone can still act on it and no longer, so a slow offer keeps its proofs longer than a fast one purely because the deal takes longer. Off-chain storage is only private if it also ends, so the deletion is part of the promise rather than housekeeping.

The commitment covers the file's bytes together with this chain, this escrow and this claim id — not just the link, which anyone can read on chain and which would therefore prove nothing. That binds a proof to one claim, so a genuine screenshot cannot be replayed across several, and it means a juror can recompute the hash from the file in front of them and check it against the chain. Since we can read the storage, that referee-signed hash is also what stops us swapping the file. Your browser checks it on every view, and says so. A referee who would rather host the file themselves can still paste a link instead; the commitment works the same way.

Live parameters

Read straight off Base. These match cast call against the same addresses.

Protocol fee
Dispute stake
Review period
Total escrowed
Settlement token
Escrow
0x2aFF72686B28400F63ACb91BD959aaDe9AcAF4F5
Arbitrator
0xccA6D93FF8b4bff9D83fBe4C8516Ae93eA1bEF2F
Protocol referrals
0xad9C6e55e90b8226D80Ec79178BF2D3f986d435B
Platform registry
0xd855405E040eA68135E767fD534bC1f3e012De75

Money moved

Lifetime, across every offer ever posted — not what is waiting to be withdrawn, which goes to zero the moment someone sweeps it. Totalled from settled claims rather than read off a counter, because the contract keeps none: the amounts are a function of the outcome and the offer's reward, so they can be recomputed exactly.

Total spent
Total earned
Total revenue
Arbitrator revenue

Spent is what left referrers' escrow for good; earned is what reached referees. The gap is the protocol fee plus whatever stakes were forfeited. Arbitrator revenue only moves on a dispute that was actually ruled, and by the same amount whichever way.

Offer status

What the badge on an offer means. Unlike a claim's, this is not an on-chain enum — it is read off the slot counts, the cancelled flag and the clock, so an offer can reach it without anyone sending a transaction.

Open
Has a free slot. The only state you can take a mission from.
In progress
Every slot is taken but some claim is still unsettled.
Completed
Every slot has settled — paid out or refunded. Terminal.
Expired
The deadline passed while slots were still open. Nobody can take one now, and the escrow on them sits until the referrer either reopens the offer with a new deadline or reclaims it.
Cancelled
The referrer called it off and took back every slot nobody had taken. Missions already in flight are untouched and still settle normally.

Claim status

Where one referee's slot has got to. This one is the ClaimStatus enum stored on the claim, so it only changes when someone sends a transaction — and the three terminal states are the only ones in which the money has finished moving.

Accepted
The slot is held. The referee has until the submission deadline to sign up and post proof, and has staked nothing yet. Miss it and anyone can release the slot back to the offer.
Submitted
Proof is in and the referee's stake is now posted too. The referrer has the review period to approve it or dispute it.
Disputed
The referrer rejected the proof and a jury drawn from the most active wallets now decides. Both stakes are locked until it rules — or until ref_market does, if the jury's window closes without a majority.
Paid
The referee has the reward and the protocol has its fee. Reached either by the referrer approving, by the court ruling for the referee, or by anyone finalising it once the review period lapsed — silence pays out. Terminal.
Rejected
The court ruled for the referrer and the referee forfeits their stake. The reward and fee were never spent, so the slot reopens for someone else — or is refunded, if the offer has since expired or been called off. Terminal.
Expired
The submission deadline passed with no proof. The referee had staked nothing so lost nothing, but cannot retake the mission; the slot reopens or is refunded the same way. Terminal.