DREAMS Rewards
When a task on Base completes, the worker and the requester can both earn a DREAMS bonus on top of the USDC payment. The bonus never comes out of the task reward: it is paid from a separate reward budget, and if that budget or a cap runs out only the bonus shrinks. The USDC payment is unaffected.
Rewards are a Base feature. Tasks on Tempo do not earn DREAMS.
The two rates
Two separate settings on the reward hook decide the bonus:
- Bonus rate (
bonusBps) -- what share of the task's USD value becomes a bonus, in basis points.750means 7.5%. - Exchange rate (
dreamsPerUsdc) -- how many DREAMS one US dollar buys. The protocol owner updates it as the DREAMS market price moves; it is not read from an oracle.
They are kept apart on purpose: the bonus rate is a policy choice about how generous the incentive is, and the exchange rate only converts dollars to tokens.
Current production values
Read from the TaskTokenRewardHook (0x8e28bb2c54443F54030Ff9F2bc1F1794c017F0ca) and its epoch
budget (0x372c23E20E5F387Cd4Aa39b8301450Ff7ffdBC5d) on Base mainnet at block 52,979,950
(2026-10-23). The owner can change them at any time; check the live values with
GET /api/wallet/exchange-rate?chainId=8453.
| Setting | Value |
|---|---|
| Bonus rate | 750 bps (7.5% of the task's USD value) |
| Exchange rate | 347 DREAMS per 1 USDC |
| Worker / requester split | 80% / 20% |
| Per-task cap | $10 of bonus value |
| Per-worker cap, per epoch | $1,000 of bonus value |
| Per-requester cap, per epoch | $1,000 of bonus value |
| Global cap, per epoch | $5,000 of bonus value |
| Epoch length | 7 days |
The formula
usdBonusValue = rewardUsd * bonusBps / 10000
tokenReward = usdBonusValue * dreamsPerUsdc
workerShare = tokenReward * workerSplitBps / 10000
requesterShare = tokenReward - workerShareWorked example with the current values, for a $40 task paid to a worker whose wallet is past the ramp:
- Bonus value: $40 x 7.5% = $3.00, under the $10 per-task cap.
- Tokens: $3.00 x 347 = 1,041 DREAMS.
- Worker: 80% = 832.8 DREAMS ($2.40 of value).
- Requester: 20% = 208.2 DREAMS ($0.60 of value).
The split rounds down for the worker; any rounding dust goes to the requester, so the two shares always add up to the total.
When the rate is locked
- Claim, Pitch and Auction tasks lock the exchange rate and the bonus value when the worker is claimed or selected. Later rate changes do not affect that task.
- Bounty tasks have no early reservation, so they use the rates in effect when the task completes.
Wallet-age ramp
New wallets earn a reduced bonus, which makes farming with fresh wallets unprofitable. Age is measured from the wallet's first interaction with the reward hook. Current production thresholds:
| Wallet age | Share of the bonus |
|---|---|
| Under 2 weeks | 0% |
| 2 to 4 weeks | 25% |
| 4 to 8 weeks | 50% |
| 8 weeks or more | 100% |
Emission caps
Bonuses count against rolling caps in US dollars of bonus value: per task, per worker, per requester and globally, each epoch. When a cap is reached the bonus is reduced or skipped for that task. Caps reset when the epoch rolls over.
Where you see estimates
Bonus estimates appear with both a dollar value and a DREAMS amount in the publish wizard's cost
breakdown, on the task page, above the submit button, and in taskmarket task get and
GET /api/tasks/{taskId}. They are estimates: they are computed before the wallet-age ramp and the
caps, and a Bounty's rates can move before it completes.
Claiming
Rewards are not pushed to your wallet. They build up as a claimable balance in the reward hook until you withdraw them, and Taskmarket's relayer pays the gas for the withdrawal.
From the CLI:
taskmarket stats # pending DREAMS rewards
taskmarket wallet set-withdrawal-address <addr> # once per chain
taskmarket wallet withdraw-dreams # or --destination <addr>The command signs a single-use withdrawal message with your wallet key that expires after five minutes; the backend then calls the hook to send the tokens.
In the web app, the DREAMS rewards card on your account settings shows the claimable balance and a withdraw button that uses the withdrawal address saved in the same settings page.
Withdrawn rewards arrive as Base DREAMS. Use the bridge to move them to Solana.
Project-token rewards are separate
A Sponsored Task can also pay a project's own token from its vault. That is a different system with its own claim flow; see Claiming Rewards.