Platform › Rewards › Quests

Rewards

Quests

The quarter of every reward that its earner spends on acquiring other users: 116,250,000 THD the platform never directs. The task menu, the pool split, payout batches and the windows.

Version
1.8
Updated
2026-10-16
Source
THD contract sources · THD — Full Plan v1.43

Status#

Quests are the platform’s user-directed acquisition budget. A quarter of every reward-earning user’s daily THD allocation is routed into a budget they spend on attracting other users. The platform never spends it and never chooses who receives it.

The 75/25 split#

The split is applied before the allocation reaches the user: of every daily allocation in the groups below, 75% goes into the earner’s own claim and 25% into their quest budget.

The three groups whose allocation splits, lifetime
GroupAllocationClaim · 75%Quest · 25%
Curve & predict traders220,000,000 THD165,000,000 THD55,000,000 THD
Creators & market makers75,000,000 THD56,250,000 THD18,750,000 THD
KOLs & referrers170,000,000 THD127,500,000 THD42,500,000 THD
Total465,000,000 THD348,750,000 THD116,250,000 THD — 11.62% of supply

That quest pool is larger than any platform bucket, and none of it is the platform’s to spend: the earners who receive it direct it, and the platform has no function that could choose a recipient. The split is not on chain anywhere — it is applied before an allocation reaches a user, and the vault’s creditBatch only moves the result. These allocations are excluded from the split, and the reasons differ:

Excluded from the split
ExcludedWhy
Settlers · 1%The recipients are bots. A budget they will never direct is a 25% pay cut, held for ever.
LP providers · 10%Starts only after 100% unlock — after the acquisition phase quests exist for.
Spoils · 11%Post-TGE, and its battlepass, bands and seasons already reward presence directly.
Liquidity, BD, ecosystem, insurance, teamNot user rewards.

What a campaign is#

A campaign is a sponsor-published task list, a set of rates and a budget. Completers who do the tasks are paid out of that sponsor’s budget, and — where they are not already tied to a referrer — become the sponsor’s referee.

What a sponsor is buying, by group
SponsorWhat the campaign buys them
TraderReferees — their only income that is not their own trading.
Creator or market makerGraduation. Buyers on their curve before the target, which turns on their post-graduation fee stream permanently.
KOLFollowers, rank, and a larger allocation.
ReferrerTheir entire business, funded in THD rather than in cash.

Every row is self-interested, which is the design: a task list built around what the platform wants is a list nobody chooses from. The platform benefits are side effects — curve volume rises because creators want graduation, activation rises because referrers want referees who actually trade.

The task menu#

A sponsor builds a campaign from a fixed menu of tasks, and chooses what each one pays. The menu is ordered by what faking a completion would cost the faker, because payout weight is meant to track that and nothing else: a task that costs real money on chain is the strongest signal available, and a task that is free to fake at scale pays at once only while the campaign’s free-step allowance lasts, and after that only once the completer has done a capital or gas task in the same campaign.

The free-step allowance
RuleValue
Share of the budgetSet by the sponsor, 0 to 20%, default 20%; signed into the terms
Counts against itEverything paid, per token, to completers who never did a paid task in the campaign
OrderFirst verified, first paid
When it is used upFree steps wait for a paid task, as before
Campaigns signed before it0%: their free steps always wait for a paid task

How a task is checked is a security property, not a detail. A task read from the chain cannot be asserted into existence by anybody, including the platform. An off-chain check against the X API can be: anybody who can write one database row can manufacture one, which is exactly why those tasks are gated behind a paid one.

The task menu, weighted by cost to fake
TaskCategoryHow it is checkedCost to fakeSponsor gets
Buy my curve before it graduatesPremiumChecked automaticallyCapitalGraduation
Provide THD/ETH liquidity for N daysPremiumChecked automaticallyCapital + timePool depth
Take the opposite side of a market I stakedPremiumChecked automaticallyCapitalA two-sided market
Hold my token through graduationPremiumChecked automaticallyCapital + timeNo dump on launch
Settle any market inside the 5-minute windowPremiumChecked automaticallyGasSettler capacity
Make your first trade on The HoodPremiumChecked automaticallyGasA referee who actually trades
Create a market on a project I launchedPremiumChecked automaticallyGasCross-product activation
Buy creditsPremiumChecked automaticallyCapitalA paying user
Buy the battlepass premium passPremiumChecked automaticallyCapitalA paying user
Join or found a bandPremiumChecked automaticallyGasA banded user
Spin the Fortune WheelPremiumChecked on The HoodGasWheel activity
Craft arrows at The WoodsPremiumChecked automaticallyGasWoods activity
Vote in the THD fee votePremiumChecked automaticallyGasGovernance turnout
Stake on my project's marketPremiumChecked automaticallyCapitalMarket depth on my project
Buy my milestone packagePremiumChecked automaticallyCapitalA committed long holder
Back my callPremiumChecked automaticallyCapitalA bigger pool behind my position
Buy a launch I promotePremiumChecked automaticallyCapitalFee share through the KOL roster
Make your first prediction stakePremiumChecked automaticallyCapitalA referee who stakes
Reach N curve tradesPremiumChecked automaticallyCapitalA repeat trader
Pass the THD claim gatePremiumChecked automaticallyCapitalA referee past the claim gate
Join my bandPremiumChecked automaticallyGasA member
Stay in my band N daysPremiumChecked automaticallyGasA lasting member
Trade in my band's forcePremiumChecked automaticallyCapitalBand contest volume
Buy from my band shopPremiumChecked automaticallyCapitalBand vault income
Buy from my shopPremiumChecked automaticallyCapitalA sale
Buy from my shop on two different daysPremiumChecked automaticallyCapital + timeA repeat buyer
Buy N different items from my shopPremiumChecked automaticallyCapitalCatalogue reach
Wear a cosmetic from my shopPremiumChecked on The HoodCapitalA walking advert
Complete your profilePresenceChecked on The HoodFree · after a Premium stepA real-looking account
Check in on N battlepass daysPresenceChecked on The HoodFree · after a Premium stepA returning user
Create your referral linkPresenceChecked on The HoodFree · after a Premium stepA new referrer
Bring a new traderPresenceChecked on The HoodGas · after a Premium stepA new trading user
Follow my Hood profilePresenceChecked on The HoodFree · after a Premium stepAn audience on The Hood
Watch my projectPresenceChecked on The HoodFree · after a Premium stepA watcher who sees updates
Post in my project's chatPresenceChecked on The HoodFree · after a Premium stepA live chat
Post a thesis on my projectPresenceChecked on The HoodFree · after a Premium stepA pinned view on my chart
Refer a trader to my launchPresenceChecked on The HoodGas · after a Premium stepA buyer on my curve
Comment on my marketPresenceChecked on The HoodFree · after a Premium stepDebate on my market
Become my refereePresenceChecked on The HoodFree · after a Premium stepA referee for life
Post in my band's roomPresenceChecked on The HoodFree · after a Premium stepAn active band room
Follow my shopPresenceChecked on The HoodFree · after a Premium stepShop followers
Connect X to a Hood accountXX sign-inLow · after a Premium stepIdentity
What a step is about
Step aboutThe sponsor picks
A projectAny of theirs, or up to 10 of their launches
A marketAny they created or staked, or up to 10
A shop or bandAny of theirs, or up to 10
Quests opened beforeAny of the sponsor’s
Who may complete
RuleValue
X connectedAlways
Minimum X account ageOptional, set by the sponsor in days (up to 3650); judged when the quest opens
Become my refereeAccounts without a referrer only
Task categories
CategoryMeaning
PremiumCosts the completer money or gas. A label for the sponsor, not a gate.
PresenceFree, done on The Hood.
XDone on X.
How a task is checked
CheckWhat it means
Checked automaticallyRead from the chain. Cannot be asserted into existence by anybody, including us.
X sign-inChecked when you connect X to your account.
Checked on The HoodRead from The Hood's own records: a follow, a watch, a post, a check-in or a referral. Free to complete, so it pays after a Premium step or from the free-step allowance.
X checkAn off-chain check against the X API. These pay nothing until a capital or gas task is done in the same campaign.
Cost to fake
CostWhy it is weighted this way
CapitalFaking it costs real money on chain. The strongest signal available.
Capital + timeMoney, held. Cannot be borrowed for one block.
GasCheap but not free, and still read from the chain.
LowAn X account that passes sign-in costs money and time.
FreeFree to fake at scale, so gated behind a paid task.

The six steps#

The budget is on chain. The completions are not. The settlement is a root. That division is the whole architecture.

#StepWhereCost
1The 25% is credited to the sponsorOn chain — creditBatch, keeper-only, with the THD pulled in the same transaction and credited as the measured balance deltaBatched
2The sponsor signs a campaign: tasks, rates, budgetAn EIP-712 signature under “The Hood Quests”; openCampaign is a permissionless relay and msg.sender appears nowhere in the accountingNo gas for the sponsor
3The budget moves from accrued to committedOn chain, at open—
4Completions are verifiedOff chain — the indexer for capital and gas tasks, the attestor for social tasks—
5The day’s payouts are committed as one rootpublishRoot(root, debits, expiries), keeper-onlyOne transaction per day regardless of volume
6The completer claimsclaim / claimMany, permissionless, one leaf per campaign and token, always paying the account the leaf names rather than the callerThe completer’s own gas, once

Why the budget is genuinely on chain rather than a database number: a sponsor is committing tokens to strangers. If the budget were only our record, the sponsor would be trusting us not to renege and so would every completer. Locked in a vault, the money is provably there before anybody does a task.

Payout batches#

Completions are paid in payout batches. Once a day the quests keeper commits every verified completion since the last batch as one Merkle root — an epoch — with publishRoot, and debits each campaign’s budget, per token, by what its leaves pay. One transaction per day, however many completions it carries. Each leaf names the account it pays, the campaign that funds it and the token it pays in.

Every batch runs on its own clock. Publishing stamps its deadline as publishedAt + CLAIM_WINDOW — 1 day — and that deadline is never inferred from the next batch. A reward is claimed with claim or claimMany inside that window; missing one batch does not roll its rewards into the next. What nobody claims in time returns to the sponsor whose campaign funded it, through reclaimExpired (anyone may send it) or the expiry leg of the next publishRoot. Because the leaf names its campaign and token, nobody chooses which sponsor gets it back.

Claiming THD moves nothing out of the vault: the THD becomes the account’s and waits there. The vault’s only THD exit is settleAccepted, which moves claimed balances to the reward distributor, ThdRewardVest — the only caller it accepts — where they vest to the end of the 90-day window from TGE + 24h. A reward in another token is paid straight to the completer or credited to the 90-day QuestTokenVest, as the campaign chose when it was signed.

Windows and durations#

The vault's and the campaign desk's constants
ConstantValueSecondsWhat it bounds
CLAIM_WINDOW1 day86,400How long a published reward can be claimed. Stamped at publication, never inferred from the next root. A constant, not a setter.
MIN_CAMPAIGN_DURATION1 hour3,600The shortest quest a signature may ask for.
MAX_CAMPAIGN_DURATION90 days7,776,000The longest.
SETTLEMENT_GRACE3 days259,200After endsAt, work done before the end can still be paid; only then does closeCampaign return the remainder — which the quests keeper sends on its next run. It removes a race; it does not extend a quest.

So a quest runs between 1 hour and 90 days, plus 3 days of settlement grace, and every reward it pays is claimable for 1 day from its batch.

A campaign ends at whichever comes firstOn chainUnspent budget
Reward pool exhaustedClosed inside the publishRoot that empties it; endsAt moves to that block; closeReasonOf = 1None left
Preset end dateCompletions stop at endsAt; after SETTLEMENT_GRACE the keeper sends closeCampaign; closeReasonOf = 2Returns to the sponsor’s accrued budget, never burned

There is no manual close (owner ruling 28-09-2026). A sponsor may still revoke a signature that has not yet been relayed — the revocation is keyed on the terms rather than the campaign id, because the id is the EIP-712 digest and only exists once the campaign is open.

What the keeper can and cannot do#

code
campaignId == EIP-712 digest of
  Campaign(address sponsor, bytes32 termsHash, uint256 budget,
           uint64 duration, uint64 validUntil, uint256 salt)

Only the digest is stored. The terms themselves live off chain behind termsHash, and the signature is checked with a checker that accepts EIP-1271, so a Safe can sponsor a campaign.

The boundary, as the contract states it
The keeper canThe keeper cannot
Misallocate a sponsor’s budget between completers.Take THD out of the contract. Every exit pays the whitelist-gated reward distributor, and the keeper can move no THD to itself.

The owner’s power is narrower still: it appoints the keeper and repoints the reward distributor, and the second is guarded three ways — non-zero, has code, and listed in TreasuryRegistry, whose address is immutable on this contract. That registry gate is what breaks the five-call owner-compromise walk, and it is why the vault is owned by the owner Safe rather than the guardian. See the trust model.