Documentation

New here? What You Need to Know →

How VENDWORLD works

Gameplay rules, the economy, the collection and the technology behind the city, in one place.

Overview

VENDWORLD is a social vending-machine tycoon game. There are exactly 2,222 Genesis machines, each an ERC-721 NFT minted for free on OpenSea. Holders place their machine on a street plot in Neo Sakura City, keep it stocked, collect City Credits from simulated customers and upgrade it over time.

The NFT is your machine's identity and ownership. To put it on the map you burn VEND, the city's token. Once placed, it earns a share of an hourly VEND reward pool. Everyday play (stock, sales, credits, levels) runs on our servers, so it's fast, cheap and fair.

In one line: mint free → get VEND → burn to place → keep it stocked and charged → earn hourly VEND → claim → upgrade.

Quick start

  1. Get a machine. Mint from the official OpenSea drop (link announced on this site) or buy one on the secondary market.
  2. Get VEND. After mint-out, VEND launches with the world. Buy 10,000 VEND per machine you want to place.
  3. Open the city. Go to World. Wallet connect opens at launch; until then press Play the demo to get 3 sample machines and test VEND. At launch you'll sign a login message, which costs nothing and grants no permissions.
  4. Open your Backpack. Your machines appear there. Press Place.
  5. Pick a glowing plot. Hover to compare traffic and rivals, then confirm and approve the 10,000 VEND burn in your wallet.
  6. Play the loop. Collect the coin bubbles above your machine, restock before it empties, recharge its energy and claim your VEND from the Rewards panel.

No machine yet? Choose Play the demo to run three sample machines in your browser with a test VEND balance.

Controls

ActionMouse / keyboardTouch
PanDrag, or arrow keys / WASDOne-finger drag
ZoomScroll wheel, + / −Pinch
Inspect a machineClick itTap it
CollectClick the bubble, or click a selected machine againTap the bubble
Cancel placement / closeEscCancel button

Cities & plots

There are four cities. Each is a grid of blocks in six district types, surrounded by forest (or snow) on three sides and water on the fourth. Every block is ringed by a sidewalk, and the sidewalk tiles (except the corners) are plots: 7,920 in total, far more than the 2,222 machines, so there's always a choice. Travel between cities with the Cities button.

CityGridPlotsCharacter
🌸 Neo Sakura City11 × 112,904Cherry blossoms, towers, a big harbor
🌴 Coral Cove8 × 81,536Tropical resort, long beach, marina
❄️ Frostpeak8 × 81,536Snowy village, frozen lake, rail depot
🌃 Neon Bay9 × 91,944Always dusk, neon towers, spaceport

District types

Each city uses the same six district types under local names, with the same base traffic:

District (Neo Sakura name)Base trafficAlso called
🏙️ Downtown100%Resort Strip, Ski Village, Tower Heights
🛍️ Shopping Plaza85%Boardwalk, Market Square, Arcade District
🍜 Ramen Street80%Taco Shack Row, Hot Spring Row, Night Market
🌸 Sakura Park65%Lagoon Park, Ice Rink Park, Holo Park
⚓ Harbor60%Marina, Rail Depot, Spaceport
🏡 Residential Hills55%Palm Village, Chalet Hills, Capsule Homes

Plot rules

  • One machine per plot, one plot per machine.
  • Plots are game licences, not separate NFTs. You don't buy land.
  • When you sell your machine, its placement goes with it to the new owner.
  • Roads, buildings, parks, the beach and the water can't hold machines.

Core loop

Every 15game-minutesStock up2 CC per itemCrowd buyssimulated customersCollect+5 CC per sale, XP, partsUpgradebigger stock, more salesPlaceburn 10,000 VENDonceStock-outsales stop: restock!
Place once, then cycle: stock → sell → collect → upgrade. An empty machine stops selling until you restock.

Traffic & rivals

Each plot has an effective traffic score. It starts from the district's base traffic and is adjusted by today's event, whether your machine's card collection is hot today, and how many machines are nearby.

effective_traffic = district_traffic × event_multiplier × hot_collection_bonus × (1 − congestion)
congestion = min(0.65, nearby_machines × 0.035) // nearby = within 3 tiles

So a Downtown corner with 12 neighbours (−42%) can sell less than a lonely Residential corner. The placement screen shows every number before you confirm.

Sales simulation

Customers are simulated. Every tick, the engine works out how many items each placed machine sells.

Tickevery 15 game-min(2.5 s in the demo)Trafficdistrict × event× hot collection× (1 − congestion)Demand0.4 × traffic× time of day× level × luckSoldmin(stock, demand)Ledgercredits, XP, partsin one transaction
One tick for one machine. In production all machines are processed by server workers, and every result is written to the ledger in a single database transaction.
Time of dayDemand
00:00 – 06:00× 0.25
06:00 – 09:00 · morning commute× 0.8
09:00 – 12:00× 1.0
12:00 – 14:00 · lunch rush× 1.4
14:00 – 18:00× 1.0
18:00 – 21:00 · evening rush× 1.25
21:00 – 24:00× 0.6

Stock and City Credits

  • Each sale earns 5 City Credits (CC) and 1 XP, held in the machine until you collect.
  • Restocking costs 2 CC per item. Capacity starts at 20 and grows 8 per level.
  • Every sale has a 4% chance to drop an upgrade part.
  • Offline progress catches up for at most one game day, so a machine left alone will stall rather than pile up forever.

Upgrades

Each level adds capacity (+8 items) and sales demand (+12%), raises your machine's reward weight (1.0x at level 1 up to 15.0x at level 10) and changes its look: a rooftop sign from level 4, a neon pink sign from level 7 and a gold star at level 10.

UpgradeCity CreditsPartsVEND burnNew weight
Lv 1 → 28025001.4x
Lv 2 → 316051,0002.0x
Lv 3 → 426062,0002.8x
Lv 4 → 538083,5004.0x
Lv 5 → 6520105,0005.4x
Lv 6 → 7700127,5007.0x
Lv 7 → 89001410,0009.0x
Lv 8 → 91,1501615,00011.6x
Lv 9 → 101,5002020,00015.0x

City Credit and parts costs are prototype values and will be rebalanced after the beta. A higher weight gives a bigger share of the pool, never a fixed number of tokens.

Relocation

  • Moving a placed machine to another free plot burns 3,000 VEND.
  • Cooldown: one game day (24 game hours) between moves.
  • You can preview any plot's traffic for free before deciding.
  • Stock, level and pending credits move with the machine.

Events & day/night

Every game day the city council runs one event that multiplies a district's traffic by ×1.5: Office Rush (Downtown), Mega Sale Weekend (Plaza), Noodle Night (Ramen Street), Block Party (Residential), Sakura Festival (Park) or Cargo Week (Harbor). Three card collections are also hot each day and sell ×1.3 faster. Check Hot Items in the city.

A game day lasts about four real minutes in the demo. At night the city darkens, street lamps glow and your machine's screen lights up its corner.

Weather

Each city has its own climate, and the weather changes every six game hours (the same for every player): rain and the odd storm in Neo Sakura City, mostly sunshine in Coral Cove, snow and blizzards in Frostpeak, and frequent neon rain in Neon Bay. The current weather shows next to the clock. Weather is visual only and does not change sales.

The VEND token

VEND is the power that runs Neo Sakura City. You burn it to put your machine on a street, and once it's live your machine earns VEND every hour from the season reward vault. Burned VEND is destroyed for good; rewards come only from a pool that was funded in advance.

Name / tickerVENDWORLD Token · VEND
StandardERC-20, burnable
Max supply1,000,000,000 VEND, all created once at launch
Minting after launchNone. The contract has no mint function.
ChainSame chain as the Genesis NFT (being finalised; must support OpenSea Drops)
Launch48 hours after the Genesis mint sells out, together with the world opening
Burned forPlacing (10,000), relocating (3,000) and every level upgrade (500 – 20,000)
Earned byPlaced machines: an hourly share of the season vault (30M VEND per 90-day season)
Contract addressPublished here at launch. Anything else is fake.
The short version: the NFT is your machine. Burn VEND to place it. While it's placed, stocked and charged, it earns a share of the hourly VEND pool. Its sales also earn City Credits, which keep it running but never turn into VEND.

Launch timeline

Mint opensfree, gas onlyMint out2,222 / 2,222+48 hoursVEND + liquidity liveWorld opensplacement burns startSeason 1events, leaderboards
The 48-hour gap gives every holder time to see the final costs, buy VEND if they need it and scout the map before placements begin.
  1. Mint. The 2,222 Genesis machines mint for free on OpenSea (gas only).
  2. Mint out. When the last machine is minted, the 48-hour countdown starts and is shown on this site.
  3. Token launch. VEND goes live and the liquidity pool opens on a DEX. The official contract address is posted here and on our socials at the same moment.
  4. World opens. Holders connect, pick plots and burn VEND to place. Plots are first come, first served, but nobody can take a plot that's reserved to you mid-transaction.
  5. Season 1 starts. The first 30,000,000 VEND reward vault is funded and hourly rewards begin for every placed machine.

How VEND moves

WHERE VEND COMES FROMWHERE VEND GOESDEX liquidity poolbuy / sell VENDSeason reward vaulthourly machine rewardsOther playerswallet transfersYour walletholds VENDapprove exact amountsPlace machine10,000 VENDRelocate3,000 VENDUpgrades & paint5,000 – 30,000 VENDBurnedgone foreversupply goes downCity Creditsoff-chain game pointsnever converts
VEND reaches wallets from the DEX, the season reward vault or other players, and leaves circulation through burns. City Credits are walled off from VEND completely.

Getting VEND

  • Buy it on the DEX. You need VEND before your first placement. Swap for it in the official liquidity pool (link published at launch).
  • Machine rewards. Every placed machine earns an hourly share of the season vault. See Place-to-Earn.
  • From other players. VEND is a normal token, so it can be sent wallet to wallet.

Simulated sales never create VEND. Every reward VEND was set aside in the vault before the season started.

Burning to place

Every machine needs a VEND burn to go live on the map. The burn happens inside the PlacementRegistry contract in the same transaction that claims the plot, so you can never pay without getting your plot, or get a plot without paying.

Quotecost + 5-min reservationApproveexact amount onlyplace()registry burns VENDConfirmindexer checks finalityLivemachine on the map
You only ever approve the exact amount for that one action, never an unlimited allowance.
  • The placement fee targets roughly $10 worth of VEND. At launch it is a fixed 10,000 VEND; the team can adjust it under a 7-day timelock as the price moves. The exact amount is always shown before you confirm.
  • If the transaction fails or the 5-minute reservation expires, nothing is burned and the plot is released.
  • Burned VEND is not refundable, including if you later move or sell the machine.
  • When you sell your NFT, its placement, level and stock go with it. The buyer does not pay a new placement burn.

Place-to-Earn

Each season the reward vault is funded with a fixed amount of VEND and released evenly, hour by hour. Every hour's release is shared between all active machines in proportion to their weight. Your rate goes up when you level up, keep stock and stay charged, and goes down when more machines join or rivals level up.

Season vault30M VEND / 90 dayspre-funded, cappedHourly release~13,889 VENDper game hourSplit by weightlevel x locationx uptime x energyPendingestimated, onyour dashboardClaimVEND to yourwallet, any time
One accounting epoch = one game hour. Accrual is tracked off-chain and claimed in batches; there is no transaction every hour.
hourly_release = season_budget ÷ season_hours // 30,000,000 ÷ 2,160 ≈ 13,889 VEND
machine_weight = level_weight × location × uptime × energy
machine_reward = hourly_release × machine_weight ÷ total_weight_of_all_active_machines

Level weight

LevelWeightUpgrade burn to reach itReference VEND / hour*
11.0x(placement 10,000)3.1
21.4x5004.4
32.0x1,0006.3
42.8x2,0008.8
54.0x3,50012.5
65.4x5,00016.9
77.0x7,50021.9
89.0x10,00028.1
911.6x15,00036.3
1015.0x20,00046.9

* Reference only: all 2,222 machines active with an average weight of 2.0 (total weight 4,444) and a location factor of 1.0. Your real rate depends on everyone else and is shown live in the game.

The other factors

FactorRangeWhat moves it
Location0.8x – 1.2xDistrict traffic minus nearby rivals. Capped on purpose so prime plots can't swallow the pool.
Uptime1.0x or 0.25xStocked machines count fully; an empty machine drops to a quarter until you restock.
Energy1.0x or 0 (paused)Energy drains 1 point per game hour from 100. At zero the machine stops earning until you recharge with City Credits (1 CC per point).

Worked example

A Level 5 machine on a busy but crowded Ramen Street corner: weight 4.0 × 1.1 location × 1 uptime × 1 energy = 4.4. If the whole city's active weight is 4,444, it earns 13,889 × 4.4 ÷ 4,444 ≈ 13.8 VEND per hour, about 330 per game day. If it runs out of stock, that falls to about 3.4 VEND/hour until restocked. If the city's total weight doubles, every machine's rate halves.

Claiming

  • Rewards build up as pending VEND on your Rewards dashboard: rate, pending balance, season remaining and history.
  • Claim whenever you like; claims are batched on-chain through the RewardDistributor with proofs, so nothing can be claimed twice.
  • Pending rewards belong to the wallet that owned the machine when they accrued. After a sale, future rewards go to the new owner.
  • When a season's vault is used up, accrual stops until the next season is funded and announced. Rewards already accrued stay claimable.

Costs

ActionVEND burnedAlso needsNotes
Place machine10,000Own the NFT, empty plotTarget ≈ $10; once per machine
Relocate3,000Empty plot24 game-hour cooldown
Upgrade Lv 1 → 250080 CC + 2 partsWeight 1.0x → 1.4x
Upgrade Lv 2 → 31,000160 CC + 5 parts→ 2.0x
Upgrade Lv 3 → 42,000260 CC + 6 parts→ 2.8x, rooftop sign
Upgrade Lv 4 → 53,500380 CC + 8 parts→ 4.0x
Upgrade Lv 5 → 65,000520 CC + 10 parts→ 5.4x
Upgrade Lv 6 → 77,500700 CC + 12 parts→ 7.0x, neon sign
Upgrade Lv 7 → 810,000900 CC + 14 parts→ 9.0x
Upgrade Lv 8 → 915,0001,150 CC + 16 parts→ 11.6x
Upgrade Lv 9 → 1020,0001,500 CC + 20 parts→ 15.0x, gold star
Restock, recharge0City CreditsEveryday upkeep needs no VEND

Launch values. Any change is announced at least 7 days before it takes effect and never applies to a transaction already in progress.

Burn math

If all 2,222 machines are placed, 22,220,000 VEND (2.2% of supply) is burned by placement alone. Taking one machine from level 1 to 10 burns another 64,500 VEND. A season releases 30,000,000 VEND, so whether supply shrinks or grows in circulation depends on how much players burn versus claim. Both numbers will be shown live in the city.

Burning is a cost, not an investment. Burns don't fund rewards and don't guarantee any price. VEND can lose value.

VEND vs City Credits

VENDCity Credits (CC)
Where it livesOn-chain, in your walletOff-chain, in your game account
Supply1B fixed; rewards come from pre-funded vaultsCreated by simulated sales
How you get itDEX, hourly machine rewards, transfersCollect from your machines' sales
Used forPlacement, relocation, level upgradesRestock, energy recharge, upgrade materials
Transferable / tradableYesNo
Cash valueMarket price, can go to zeroNone, never redeemable
Converts to the other?Never, in either direction

The other assets: the Genesis NFT (ERC-721, 2,222 max) is your machine, and parts are off-chain upgrade items dropped by sales.

Supply & allocation

Draft, subject to change. The final split will be published with the contract address before launch.
30%Community & seasons300M VEND20%Liquidity200M VEND20%Treasury200M VEND15%Team150M VEND10%Marketing100M VEND5%Reserve50M VEND
1,000,000,000 VEND, all minted once at launch.
BucketShareVENDRelease
Community & season rewards30%300,000,000Up to 30M per 90-day season into the reward vault (10 seasons)
Liquidity20%200,000,000Paired in the DEX pool at launch; LP tokens locked
Treasury & ecosystem20%200,000,000Multisig, timelocked, spending reported publicly
Team15%150,000,0006-month cliff, then 24-month linear vesting
Marketing & partnerships10%100,000,000Unlocked over 12 months
Reserve5%50,000,000Locked 12 months; for future listings

Rewards policy

  • Every season publishes its vault size, length, weights, eligibility, wallet limits and anti-bot rules before it starts.
  • Total rewards can never exceed what was deposited in the vault. Nothing is printed to top it up.
  • Rewards are paid in VEND, not dollars. Displayed rates are estimates and change every hour.
  • Simulated customers are fiction. Their purchases never fund payouts, and new players' placement burns never pay older players.
  • No guaranteed APY, ROI, payback period, token floor or income, ever.

Token safeguards

No hidden mint

The full 1B supply is created once. The contract has no function to create more.

Capped vaults

The EmissionController can only release what the season vault holds, at a fixed hourly schedule.

Exact approvals

The site asks you to approve only the amount for the action in front of you, never an unlimited allowance.

Multisig + timelock

Treasury and game parameters sit behind a multisig, and cost changes wait 7 days before taking effect.

No double claims

Every epoch is snapshotted and every claim is proof-checked by the RewardDistributor.

Audited

VEND, PlacementRegistry, MachineUpgrade and the reward contracts are reviewed by an independent auditor before launch.

Token FAQ

Is the mint still free if placement costs VEND?

The mint itself is free (gas only), and owning the machine costs nothing. Putting it on the map is a separate step that burns 10,000 VEND. We show this before the mint so nobody is surprised.

How much will my machine earn?

It depends on your machine's weight compared with everyone else's. The game shows a live estimate per machine, but it changes every hour as machines join, level up or run dry. It's paid in VEND, whose price can go up, down or to zero.

Will I earn back the 10,000 VEND placement?

There's no promise of that. Rewards depend on competition and season budgets, and the placement burn is a cost, not a deposit.

What happens when a season's pool runs out?

Accrual pauses. Everything already accrued stays claimable. The next season starts only once its vault is funded and announced.

Do I have to place my machine?

No. An unplaced machine is still yours and can be sold or placed later. It just doesn't earn anything until it's on a street.

What if I buy a machine that's already placed?

You get the machine with its plot, level and stock, and all future rewards. You don't pay the placement burn again. Rewards that accrued before the sale belong to the seller.

What if the placement transaction fails?

Nothing is burned and your reservation is released. You can try again or pick another plot.

Traits & rarity

The Genesis collection is Pixel Genesis V2: 2,222 isometric pixel-art vending machines, drawn on a 128 × 128 pixel grid and exported at 1024 × 1024. Every machine has the same chassis, a red display with nine sample pixel-avatar cards, a roof crate and a traffic cone; the traits change its colours, trim, crate, lights and emblem. Every image is checked to be unique.

Unrevealed for now. Which token gets which artwork stays hidden until the collection reveal, so nobody can pick out rare tokens before the mint. Until then, machines in the city wear a random mystery look with a gold ? crate. See Reveal.
TraitValues
BodyMint, Sakura, Lilac, Cream, Forest, Orange, Berry, Cobalt, Coral, Teal, Ocean; Gold (Legendary only)
BackgroundBlush, Lavender, Plum, Midnight, Sage, Ice, Sky, Sand
TrimRose, Ivory, Lime, Ice; Chrome (Rare), Cyan (Epic), Gold (Legendary)
CrateRose, Mint, Honey, Ice
Control lightsLime, Cyan, Pink
EmblemBolt, Star, Diamond, None; Crown (Legendary only)
PavementSlate, Mauve, Sandstone
Finish (by rarity)Enamel, Pastel Enamel, Chrome Edges, Cyan Edges, Gold Edition

Rarity

TierSupplyShareFinish
Common1,33360%Enamel
Uncommon55625%Pastel Enamel
Rare22210%Chrome Edges
Epic894%Cyan Edges
Legendary221%Gold Edition (gold body, gold trim, crown emblem)

The cards on the machines are sample pixel avatars made for VENDWORLD, not artwork from other NFT collections. Rarity is cosmetic at launch and says nothing about market value.

Reveal

Before the reveal, every token shares the same unrevealed look and no trait data is public. At the reveal:

  1. Before mint opens, the team picks a secret seed and publishes only its SHA-256 hash (the commitment). The seed can no longer be changed.
  2. After mint-out, the hash of a block mined after the last mint is taken. Nobody could know it when the seed was committed.
  3. The offset is SHA-256 of seed + ":" + block hash, modulo 2,222. Token N gets artwork ((N − 1 + offset) mod 2,222) + 1. The city, the game and the site switch to the real artwork at once.
  4. The seed is then published. Anyone can check that its hash matches the commitment and recompute the offset, so neither the team nor anyone else could steer which token got which machine.

The NFT metadata on OpenSea uses the same assignment, so a token's picture on OpenSea and its machine in the city always match.

Metadata

Genesis art and base metadata are uploaded to the OpenSea Studio drop and are not rewritten after reveal. Game state (level, district) is served separately by our API, so your original art stays immutable.

{
  "name": "VENDWORLD Machine #0224",
  "description": "Genesis vending machine in VENDWORLD. Game progression and earnings are not guaranteed.",
  "image": "ipfs://<CID>/0224.png",
  "external_url": "https://<domain>/machine/224",
  "attributes": [
    { "trait_type": "Collection", "value": "Pudgy Penguins" },
    { "trait_type": "Body", "value": "Lavender" },
    { "trait_type": "Chassis", "value": "Wide" },
    { "trait_type": "Rarity", "value": "Common" }
  ]
}

Architecture

The browser draws the city and talks to our API. The API and the game workers own all game state in Postgres. A chain indexer watches the contracts, so the API always knows who owns which machine. Only ownership and VEND burns live on-chain.

PLAYERVENDWORLD SERVICESBLOCKCHAIN & STORAGEWeb appNext.js site + worldcanvas rendererWalletMetaMask, Rabby…API / BFFauth, quotes, actionsrate limitsGame enginetick workersqueue + cronPostgresplots, machines,credits ledgerChain indexerevents, finality,reorg handlingCDNsprites, map chunksAdmin consoleevents, moderationOpenSea Dropfree public mintGenesis ERC-7212,222 machinesPlacementRegistry1 plot ↔ 1 machineVEND ERC-201B fixed supply, burnableIPFSart + metadataHTTPSSQLticksTransferPlacedSIWE sign-insigns mint & placement txsmintsburnsassetslive ops
Production target. Solid arrows are requests or data flow; dashed means optional.
LayerTechnology
FrontendNext.js, TypeScript, Tailwind, wagmi + viem, canvas world renderer (Pixi/Phaser-class)
BackendTypeScript API, queue + cron tick workers, hourly reward epoch worker with published snapshots, SIWE sessions, rate limiting
DatabaseSupabase / Postgres with row-level security and an append-only credits ledger
BlockchainERC-721 Genesis (OpenSea Drop), PlacementRegistry, MachineUpgrade, RewardDistributor, EmissionController, ERC-20 VEND (1B fixed, burnable)
MediaIPFS for NFT art + metadata; CDN for game sprites and map chunks

Wallet sign-in

We use Sign-In with Ethereum. You sign a plain-text message with a one-time nonce. It costs no gas, approves nothing and can't move your assets.

Connectwallet shares addressNoncePOST /api/auth/nonceSign messagefree, no gas, no approvalVerifyPOST /api/auth/verifySessionowned machines loaded
After verification the API loads the machines your address owns according to the indexer.
We will never ask for your seed phrase or private key, or ask you to approve unlimited token spending to log in.

Placement flow

Placing is designed so two players can never grab the same plot. The server issues a short reservation with every quote, and occupancy is only committed once the server has verified the result.

ON-CHAIN VEND BURN (EVERY PLACEMENT, MOVE & PAID UPGRADE)PlayerWeb appAPIWalletChainIndexer1 · pick a glowing plot2 · POST /placement/quote3 · cost + 5-min reservation4 · traffic, rivals, cost5 · confirm6 · request signature7 · place() burns VEND8 · MachinePlaced9 · confirmed at finality10 · POST /placement/confirm11 · occupancy committed12 · machine drops in
The burn is confirmed on-chain before the plot is committed. A failed or expired transaction releases the reservation.

Ownership sync

Holder A sellson OpenSeaTransfer eventERC-721 on-chainIndexerwaits for finalitymachines.ownerupdated in PostgresHolder Bcontrols machine + plot
Selling your machine hands over the machine, its level and its plot. Pending credits are collected to the seller's balance first.

Smart contracts

Genesis NFT (OpenSea Studio)

Minted through an OpenSea Studio drop: OpenSea deploys and runs the ERC-721 contract, so there is no custom VENDWORLD NFT contract. 2,222 supply, free public stage, wallet limit and royalties are set in Studio. Our game only reads ownerOf and Transfer events from it.

PlacementRegistry

Enforces one plot per machine and one machine per plot, checks ownership, uses nonces against replays, emits MachinePlaced, MachineMoved, MachineRemoved.

VEND

Standard ERC-20, 1,000,000,000 fixed supply, burnable, no mint function. Launches 48 hours after mint-out. See The VEND token.

MachineUpgrade

Checks and burns the VEND for each level, records the new level and reward weight, and refreshes metadata.

RewardDistributor

Holds the funded season vault. Pays claims against published epoch snapshots with proofs; blocks double claims.

EmissionController

Sets season budget, length and hourly schedule. Can never release more than the vault holds. Multisig + timelock.

UpgradeItems (later)

ERC-1155 only if on-chain items genuinely help. Until then, items live off-chain where they're cheap and instant.

Contract addresses will be listed here once deployed. The chain is still being chosen and must support OpenSea Drops.

Prototype status

The current world is a playable prototype. It shows the real map, rules and numbers, but some parts are stand-ins:

PartPrototype todayProduction
AccessDemo only; wallet connect opens at launchWallet sign-in (SIWE)
Ownership3 demo machines per playerRead from the Genesis contract
SimulationGame server (or your browser if no server is running)Server workers, seeded and auditable
SavesServer database (SQLite)Production database with backups
PlacementInstant, no transactionReservation + on-chain VEND burn
RewardsDemo 30M pool shared with seeded machines, in your browserEpoch worker + RewardDistributor claims
VENDDemo balance (50,000, no value)Real token in your wallet
Machine artUnrevealed mystery lookPixel Genesis V2 artwork after the reveal
Other playersSeeded sample machinesReal holders

Security & fairness

  • Server-authoritative game state; the browser only draws.
  • Seeded randomness per machine and tick, so any result can be replayed in a dispute.
  • Idempotent ticks and ledger entries: nothing is ever counted twice.
  • Rate limits, bot detection and multi-wallet clustering checks.
  • Contracts audited, admin keys in a multisig with timelocks, emergency pause limited to narrow functions.
  • Chain reorg handling: occupancy is committed only after finality.
  • No arbitrary seizure of NFTs, ever.

Risk disclosures

This is a game, not an investment. Genesis machines are collectibles. Their market price can go to zero.

City Credits have no cash value and can't be withdrawn, sold or redeemed.

Rewards are not income. Rates are estimates that change hourly, depend on other players and stop when a season's vault is used up.

VEND is volatile. It can lose some or all of its value. Burned VEND is gone and not refunded. Placing a machine costs VEND even though the mint is free.

Customers are simulated. In-game sales are not real revenue and fund no payouts.

Gas is real. A free mint still needs a network fee paid from your wallet.

Rules can change. Prototype numbers will be rebalanced; changes will be announced.

Beware of fakes. Only trust links posted on this site. We will never DM you first.