Skip to the number picker
Assato — Pixel Dwellers

Assato

4444 pixel dwellers, fully onchain.

Pick a number. Its dweller is yours.

A sample Assato
Pick a number
1–999999

Type a number from 1 to 999999, or roll the dice.

Twenty-nine wake from any number.

The thirtieth answers only to repdigits.

Plate I — Specimens

29 by roll · 1 by repdigit

Every number wakes one of thirty species: a pixel dweller in one of nine body forms, printed in process inks on white, with hollow eyes the page shows through, a top that usually breaks into drifting fragments and a thin drop shadow. Its eyes never blink. Awake, it glitches: now and then it twitches half a cell and a few pixels flicker out and back. Asleep, it holds still, a lid drawn halfway down each eye. Pick one to see how the engine draws it.

Specimen 1 of 30

Harlequin, number 2262

No. 2262CommonPreview only

Species indexSwipe or tap

Harlequin

Harlequins keep the fairground lights of Asa, and their coats never agree on a colour.

How the engine draws it

Diagonal checker: ink on every other diagonal, a shuffled five-colour run between; 4 in 10 slip a step partway down.

Odds3.45% of numbers · about 1 in 29

Harlequin holds rolls 0–344 of 10,000

Label · No. 226222 traits onchain

Motif
Glitched Checker
Palette
Process
Form
Cone
Height
Mid
Antenna
Bulb
Stance
Grounded
Mouth
None
Arms
Up
Dissolve
Heavy
Facing
East
Eyes
Wide
Pattern
None
Tier
Common

Plate II — Inks

6 rolled · 2 earned

After its species, a number rolls 0–99 for its ink: process inks printed on white. Each square below is one roll.

The roll · 0–99Rolls 00–29

Rolled · 6 inks · 100 in 100

Earned · never rolled

Harlequin in Process · No. 17180

Harlequin in Process · No. 17180

Preview only

Harlequin in all six rolled inks

Six rolled inks, each a real number drawn alike. Aurum and Void are earned, never rolled.

Rarity lives in the digits.

The hash draws the rest.

Read a number

Rules, in order

  • Repdigit: no match
  • Echo: matches
  • Run: not checked, an earlier rule matched
  • Round: not checked, an earlier rule matched
  • Mirror: not checked, an earlier rule matched

909090: 90, three times.

Nearest

Number 909090: Confetti

No. 909090Preview only

Rare · Echo
Set by the digits
  • Tier Rare
  • Ink Aurum (the hash rolled Process, 16 of 100)
  • Crown yes
Drawn by the hash
  • Species Confetti (roll 928 of 10,000)
  • Form Tall (roll 27 of 100)
  • Height Low
  • Facing West
  • Antenna None
  • Stance Legged
  • Arms None
  • Eyes Single
  • Mouth None
  • Dissolve None
  • Motif 13 Pieces
Claim
Protected claim: seal, then claim. — Rare per wallet. 141 exist · — free

Four tiers

Counts are exact for 1–999999

  • Ultra Rare

    1 in 18,519

    Number 7777

    Repdigit · every digit the same

    Singularity · Void · magenta bulb

    — free of 54

    — per wallet · protected claim

  • Rare

    1 in 7,092

    Number 1234

    Echo 81 · Run 33 · Round 27

    Aurum · crown · gold bulb

    — free of 141

    — per wallet · protected claim

  • Uncommon

    1 in 514

    Number 12321

    Mirror · reads the same backwards, 3+ digits

    Bulb in the ink’s deep colour

    One transaction

  • Common

    99.8% of numbers

    Number 2026

    No pattern

    Nothing forced. The hash draws it all.

    One transaction

Common and Uncommon claimed together: —

The 195

—

Every protected number. Filled = claimed. Select one to read it.

claimedfreeunknownClaim status appears at launch.

Repdigits · 54

—
123456789
×1
×2
×3
×4
×5
×6

Echoes · 81

—
0123456789
1
2
3
4
5
6
7
8
9

No aa aa aa: those are repdigits.

Runs · 33

—
Up 4
Up 5
Up 6
Down 4
Down 5
Down 6

Rounds · 27

—
123456789
000
0000
00000

Rules are checked in this order: Repdigit, Echo, Run, Round, Mirror.

Live counts appear at launch.

Seven parts, all onchain.

Every formula in plain sight.

Supply
4,444At launch
Price
0.0005 ETHAt launch
Per wallet
20At launch
Rare caps
1 Ultra · 3 RareAt launch
Royalty
10%At launch
Chain
Sepolia
  1. Signs nothing

    Step 01: Connect

    Any browser wallet.

    Every wallet in the browser is listed with its own icon. Connecting shares an address; nothing is signed, nothing is spent.

    network = Sepolia (chainId 11155111)
    contract = revealed at launch
  2. 1–999999

    Step 02: Choose a number

    Any number from 1 to 999999, or roll the dice.

    The art is a pure function of the number, so the preview is the mint. Each number is claimed once, ever. Ask for 5, 10 or more and the site draws free ones for you.

    seed ∈ 1..999999
    seedInfo(seed) → (valid, taken, tokenId, pattern, tier)
    art = engine(seed)   // the preview is the mint
  3. 0.0005 ETH each

    Step 03: Claim

    One transaction. Rare numbers: a protected claim in two.

    Common · Uncommon

    mintminted

    One transaction · up to 20 per wallet.

    mint(uint32[] seeds)  value = 0.0005 ETH × n

    Rare · Ultra Rare — protected

    seal≥ 1 blockclaim

    Seal a hash first (gas only). One block later, claim and pay. A seal lives 24 hours. 1 Ultra Rare · 3 Rare per wallet.

    commit(keccak256(abi.encode(minter, seeds, salt)))
    // ≥ 1 block later, ≤ 24 h
    claim(uint32[] seeds, bytes32 salt)   value = 0.0005 ETH × n

    Limits: First come, first served. Caps limit wallets, not people. A bot holding seals for all 195 rare numbers can still claim yours first once your claim is public; a private RPC (Flashbots Protect, MEV Blocker) hides it until it lands. A failed transaction returns your ETH; overpayment is refunded.

  4. 2,139 patterned

    Step 04: Rarity

    Rarity lives in the digits.

    The rules are checked in order (Repdigit, Echo, Run, Round, Mirror) and the first match sets the tier. Counts are exact for 1–999999.

    Tiers, their digit patterns and how many numbers from 1 to 999999 have each
    TierPatternNumbers
    Ultra RareRepdigit54
    RareEcho · Run · Round141
    UncommonMirror1,944
    Commoneverything else997,860
    Read a number
  5. 6 moons max

    Step 05: Orbit Docking

    Dock one dweller onto another. Six moons at most.

    Dweller 2764 with six moons docked
    Host
    2764
    Moons
    6/6

    A docked dweller becomes a moon in its species colour, in the white margin beside its host. Either owner can undock; a transfer undocks. Owners can close a dweller to other holders’ moons.

    dock(sat, host)
    undock(sat)   // owner of sat or host
    setDockingOpen(id, open)
    maxSatellites = 6
  6. 30 blocks ≈ 6 min

    Step 06: Planetary Alignment

    Every dweller aligns for 30 blocks, about every 6 hours.

    Period and phase come from its number. While aligned, its bulb takes the ink’s star colour and its owner can add one star per window, up to seven. Stars light the floor.

    Window · 30 blocksPeriod · —

    —

    h       = uint256(keccak256(abi.encode(seed)))
    period  = [1789,1801,1811,1823,1831,1847,1861,1867][h & 7]
    phase   = (h >> 3) % period
    aligned = (block.number + phase) % period < 30   // ≈ 6 min
  7. 4 contracts

    Step 07: Onchain

    Four contracts draw the SVG and write the JSON.

    AssatoSpeciesfills the species
    AssatoArtdraws the cells
    AssatoRendererwrites SVG + JSON
    Assatoholds the number

    The Seed trait is the number itself, one of 22 traits. The site’s engine matches the Solidity renderer byte for byte. ERC-4906 refreshes metadata. No IPFS, no server.

    tokenURI(id) → data:application/json;base64,…   // SVG inside
    {"display_type":"number","trait_type":"Seed","value":909090}