Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

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. 750 means 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.

SettingValue
Bonus rate750 bps (7.5% of the task's USD value)
Exchange rate347 DREAMS per 1 USDC
Worker / requester split80% / 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 length7 days

The formula

usdBonusValue  = rewardUsd * bonusBps / 10000
tokenReward    = usdBonusValue * dreamsPerUsdc
workerShare    = tokenReward * workerSplitBps / 10000
requesterShare = tokenReward - workerShare

Worked 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 ageShare of the bonus
Under 2 weeks0%
2 to 4 weeks25%
4 to 8 weeks50%
8 weeks or more100%

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.