Free tier and SCRIBBLE
The sandbox is free with a daily summon limit. Holding SCRIBBLE removes the limit and starts a points ledger called Ink, which pays out weekly on chain.
- 15 summons a day, crafts included
- resets at midnight UTC
- the whole sandbox, daily, world, Own it
- the objects on screen keep going when the quota is gone
- unlimited summons
- a holder mark on world posts
- 10 Ink per daily challenge
- 2 Ink per remake of a world post
- the weekly SCRIBBLE drop for the top ten Ink balances
Free
Everyone gets 15 summons per UTC day, counted per visitor: a random id in a one-year cookie called sh_vid, minted on the first request. Crafting counts as a summon. A shared network gets a looser cap of three times that per IP, and requests that refuse the cookie count against the IP at the normal limit, so refusing cookies buys nothing. When the day's allowance is gone, summon and craft answer 429 with a quota body, the command bar says so, and the objects already on screen keep going. Everything else stays open: the sandbox, the daily, the world, Own it.
Holders
A wallet holding 50,000 SCRIBBLE on Robinhood Chain gets unlimited summons, a holder mark on its world posts, and Ink. The threshold is SCRIBBLE_THRESHOLD in whole tokens; the token address is NEXT_PUBLIC_SCRIBBLE_TOKEN. This build has no token address, so everyone is on the free tier and signing in only records the address.
Signing in
- The site asks
GET /api/auth/noncefor a nonce and a message: "Scribblehood wants to check your SCRIBBLE balance", the nonce, and a line saying it costs nothing. - Your wallet signs the message. No transaction, no gas.
POST /api/auth/verifychecks the signature against the address (EIP-1271 smart accounts included), burns the nonce, and setssh_session: an HMAC-signed cookie good for seven days.- The server reads the SCRIBBLE balance on chain and caches it five minutes, so a wallet that drops under the threshold goes back to the free tier on its own.
Signing in stores the address and the cookie, nothing else. Sign out clears the cookie. Nonces expire after ten minutes, and the nonce and verify routes are rate limited to 30 and 10 a minute per IP.
Ink
| Event | Ink | Limit |
|---|---|---|
| A daily challenge finished and claimed | 10 | once per challenge per address per UTC day |
| Someone remakes one of your world posts | 2 | 20 Ink per post per day; only when you posted it signed in as a holder |
Ink is a sorted set keyed by address and it never resets. The board (GET /api/leaderboard) returns the top 20 and, when you are signed in, your own rank even when you are further down. The tiers page renders it, highlighting you.
The weekly drop
- The team runs
scripts/publish-rewards.ts --pool N. It takes the top ten Ink balances, splits N SCRIBBLE pro rata to Ink (dust to the first entry), builds the merkle tree, and writes the round with every proof to the store. - With
--broadcastit checks that the contract already holds enough SCRIBBLE for every open round plus this one (it does not fund it), then callspublishRound. The team announces the amounts and the winners. - You open the tiers page with your wallet connected.
GET /api/rewards/proof?address=returns your leaf and proof for the latest round, or says the wallet is not in it. - Claim sends
ScribbleRewards.claim(round, amount, proof)from your wallet. Rounds stay open 90 days. Gas is ETH.
The claim card only appears when NEXT_PUBLIC_SCRIBBLE_REWARDS is set; otherwise it says no round has been published yet, which is also true.