Normies logoNORMIES
Documentation

DOCS

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) == caller

Canvas 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 check

Actions by contract

A filled cell means that caller passes the check. Notes say where the pixels or the Normie end up.

Canvas

NormiesCanvasV2Live

Canvas delegate and delegate.xyz (any level) both paint only.

Paint a Normie

setTransformBitmap
Owner
Canvas delegate
delegate.xyz

Withdraw pixels from a Normie

withdrawPixels
OwnerInto the owner’s wallet

Deposit pixels onto a Normie

depositPixels
Owner
Approved spenderFrom the owner’s wallet

Enlarge the canvas

enlargeCanvas
Owner
Approved spenderPaid from the owner’s wallet or the Normie

Clear the base art

clearBase
Owner
Approved spenderPaid from the owner’s wallet or the Normie

Burn Normies for pixels

commitBurn · commitBurnToWallet
OwnerMust own every burned Normie and the receiver

Reveal a burn

revealBurn
AnyoneThe reward goes to the receiver Normie or wallet

Set or revoke the Canvas delegate

setDelegate · revokeDelegate
Owner

#PIXEL balances

NormiesCanvasStorageV2Live

Holds every wallet and Normie balance. No delegation.

Approve a spender

approve
OwnerSet or revoke any amount

Pixel Market

NormiesPixelMarketLive

No delegation. An allowance can list for the owner.

List your #PIXEL

list
Owner

List for someone else

listFrom
Approved spenderThe listing and the ETH belong to the owner

Cancel a listing

cancel
OwnerSeller only

Buy #PIXEL

buy · batchBuy
Anyone

Return an expired listing

reclaimExpired
AnyoneThe pixels go back to the seller

Revenue share

NormiesRevenuePoolLive

No delegation needed.

Claim a revenue share

claim · claimMany
AnyoneThe ETH goes to the account in the Merkle leaf

Return unclaimed ETH to the pool

sweep
AnyoneOnly after the epoch’s claim window ends

Agentic

Adapter8004Live

delegate.xyz v2 only, unscoped or for adapter8004.manage. Built by premm.eth.

Awaken a Normie

register
Owner
delegate.xyzThe agent belongs to whoever holds the Normie

Arena

NormiesArenaStorage · Queue · SkinsSoon

delegate.xyz at any level, for every holder action.

Top up a Normie’s Arena balance

deposit · depositBatch
Owner
delegate.xyzThe pixels come from the delegate’s own wallet

Join or leave the line

resume · pause
Owner
delegate.xyz

Link a Normie to its agent

bindAgent
Owner
delegate.xyz

Withdraw an Arena balance

withdraw · withdrawBatch
Owner
delegate.xyzAlways paid to the holder

Buy a skin for any Normie

purchase
Approved spenderPaid from the approver’s wallet
AnyonePaid from the caller’s wallet

Two 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.manage right
Ends
When the owner revokes it on delegate.xyz
ContractRegistryWalletContractToken
NormiesCanvasV2 (painting)v2 + v1yesyesyes
NormiesArenaStoragev2 + v1yesyesyes
Adapter8004 (awakening)v2yesyesyes
Pixel Market, Revenue Pool, Arena SkinsNot readnonono

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.