Every action in the Normies contracts checks one thing about the caller: are they the owner, a delegate, a wallet with a pixel allowance, or anyone at all. This page lists each action and who passes that check.
Rule 1
Delegates act. They never spend Canvas pixels.
On the Canvas, a delegate of either kind can paint and nothing else. Withdrawing, depositing, burning and paid services all refuse a delegate.
Rule 2
An allowance spends. It never withdraws.
An approved spender can use up to the approved amount of the owner’s pixels for deposits, canvas services, listings and skins. The pixels never move to the spender.
Rule 3
Payouts go to the owner, whoever sends them.
Revenue claims, expired listing returns and Arena withdrawals always pay the rightful account. Anyone can trigger them.
Five kinds of caller
Each column in the tables below is one of these.
Owner
The wallet that holds the Normie, or the wallet that holds the pixels. Can do everything for what it owns.
normies.ownerOf(id) == callerCanvas delegate
One wallet per Normie, set on the Canvas by the owner. Painting only. Stops counting when the Normie changes hands.
canvas.setDelegate(id, wallet)delegate.xyz
A hot wallet the owner delegated on delegate.xyz, v1 or v2. Each contract chooses which levels and rights it accepts.
registry.checkDelegateFor…Approved spender
A wallet the pixel owner approved for an amount, like an ERC-20 allowance. Each use consumes it, so treat it as custody of that amount.
storageV2.approve(spender, amount)Anyone
No check on the caller. Used for buying, and for actions that can only pay the rightful account.
no caller checkActions by contract
A filled cell means that caller passes the check. Notes say where the pixels or the Normie end up.
Canvas
NormiesCanvasV2LiveCanvas delegate and delegate.xyz (any level) both paint only.
Paint a Normie
setTransformBitmapWithdraw pixels from a Normie
withdrawPixelsDeposit pixels onto a Normie
depositPixelsEnlarge the canvas
enlargeCanvasClear the base art
clearBaseBurn Normies for pixels
commitBurn · commitBurnToWalletReveal a burn
revealBurnSet or revoke the Canvas delegate
setDelegate · revokeDelegate#PIXEL balances
NormiesCanvasStorageV2LiveHolds every wallet and Normie balance. No delegation.
Approve a spender
approvePixel Market
NormiesPixelMarketLiveNo delegation. An allowance can list for the owner.
List your #PIXEL
listList for someone else
listFromCancel a listing
cancelBuy #PIXEL
buy · batchBuyReturn an expired listing
reclaimExpiredRevenue share
NormiesRevenuePoolLiveNo delegation needed.
Claim a revenue share
claim · claimManyReturn unclaimed ETH to the pool
sweepAgentic
Adapter8004Livedelegate.xyz v2 only, unscoped or for adapter8004.manage. Built by premm.eth.
Awaken a Normie
registerArena
NormiesArenaStorage · Queue · SkinsSoondelegate.xyz at any level, for every holder action.
Top up a Normie’s Arena balance
deposit · depositBatchJoin or leave the line
resume · pauseLink a Normie to its agent
bindAgentWithdraw an Arena balance
withdraw · withdrawBatchBuy a skin for any Normie
purchaseTwo kinds of delegate
They are separate systems. A Canvas delegate does nothing outside the Canvas, and each contract reads delegate.xyz in its own way.
Canvas delegate
- Set by
- The owner, on the Canvas, one per Normie
- Stored in
NormiesCanvasStorageV2, with the owner who set it- Grants
- Painting on that Normie
- Ends
- On revoke, or as soon as the Normie has a new owner
delegate.xyz
- Set by
- The owner, on delegate.xyz
- Registries
- v2 and v1
- Rights
- Full delegations only, except Adapter8004, which also accepts its own
adapter8004.manageright - Ends
- When the owner revokes it on delegate.xyz
| Contract | Registry | Wallet | Contract | Token |
|---|---|---|---|---|
| NormiesCanvasV2 (painting) | v2 + v1 | yes | yes | yes |
| NormiesArenaStorage | v2 + v1 | yes | yes | yes |
| Adapter8004 (awakening) | v2 | yes | yes | yes |
| Pixel Market, Revenue Pool, Arena Skins | Not read | no | no | no |
Team only
Held by the contract owners, which are team Safes, or by roles they grant. No holder, delegate or spender can call these.
NormiesCanvasV2
Team Safe · guardian
- Pause and unpause
- Burn tiers and max burn %
- Bigger and blank canvas prices
- Point to a new storage contract
NormiesCanvasStorageV2
Team Safe · guardian
- Grant mover roles to the canvas and market
- Authorize edit layer writers
- Pause every allowance at once
NormiesPixelMarket
Team Safe · config, guardian
- Fee and revenue share split
- Fee recipients
- Listing price floor
- Pause buying and listing
NormiesRevenuePool
Team Safe · poster, guardian, config
- Post an epoch
- Cancel an epoch before claims open
- Claim window
- Withdraw unallocated ETH
Arena
Team Safe · operator, guardian, sponsor
- Start, admit, finish and settle rounds
- Cancel a round
- Sponsor a round
- Return a burned Normie’s balance
- Skin price
NormiesLegendaryCanvas
Contract owner
- Set or clear a Legendary Canvas and its artist
NFT approvals (setApprovalForAll, marketplace approvals) grant nothing in any of these contracts. Every check reads the owner, a delegation or a pixel allowance.
