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.
Quick start
- Get a machine. Mint from the official OpenSea drop (link announced on this site) or buy one on the secondary market.
- Get VEND. After mint-out, VEND launches with the world. Buy 10,000 VEND per machine you want to place.
- 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.
- Open your Backpack. Your machines appear there. Press Place.
- Pick a glowing plot. Hover to compare traffic and rivals, then confirm and approve the 10,000 VEND burn in your wallet.
- 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
| Action | Mouse / keyboard | Touch |
|---|---|---|
| Pan | Drag, or arrow keys / WASD | One-finger drag |
| Zoom | Scroll wheel, + / − | Pinch |
| Inspect a machine | Click it | Tap it |
| Collect | Click the bubble, or click a selected machine again | Tap the bubble |
| Cancel placement / close | Esc | Cancel 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.
| City | Grid | Plots | Character |
|---|---|---|---|
| 🌸 Neo Sakura City | 11 × 11 | 2,904 | Cherry blossoms, towers, a big harbor |
| 🌴 Coral Cove | 8 × 8 | 1,536 | Tropical resort, long beach, marina |
| ❄️ Frostpeak | 8 × 8 | 1,536 | Snowy village, frozen lake, rail depot |
| 🌃 Neon Bay | 9 × 9 | 1,944 | Always 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 traffic | Also called |
|---|---|---|
| 🏙️ Downtown | 100% | Resort Strip, Ski Village, Tower Heights |
| 🛍️ Shopping Plaza | 85% | Boardwalk, Market Square, Arcade District |
| 🍜 Ramen Street | 80% | Taco Shack Row, Hot Spring Row, Night Market |
| 🌸 Sakura Park | 65% | Lagoon Park, Ice Rink Park, Holo Park |
| ⚓ Harbor | 60% | Marina, Rail Depot, Spaceport |
| 🏡 Residential Hills | 55% | 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
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.
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.
| Time of day | Demand |
|---|---|
| 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.
| Upgrade | City Credits | Parts | VEND burn | New weight |
|---|---|---|---|---|
| Lv 1 → 2 | 80 | 2 | 500 | 1.4x |
| Lv 2 → 3 | 160 | 5 | 1,000 | 2.0x |
| Lv 3 → 4 | 260 | 6 | 2,000 | 2.8x |
| Lv 4 → 5 | 380 | 8 | 3,500 | 4.0x |
| Lv 5 → 6 | 520 | 10 | 5,000 | 5.4x |
| Lv 6 → 7 | 700 | 12 | 7,500 | 7.0x |
| Lv 7 → 8 | 900 | 14 | 10,000 | 9.0x |
| Lv 8 → 9 | 1,150 | 16 | 15,000 | 11.6x |
| Lv 9 → 10 | 1,500 | 20 | 20,000 | 15.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 / ticker | VENDWORLD Token · VEND |
|---|---|
| Standard | ERC-20, burnable |
| Max supply | 1,000,000,000 VEND, all created once at launch |
| Minting after launch | None. The contract has no mint function. |
| Chain | Same chain as the Genesis NFT (being finalised; must support OpenSea Drops) |
| Launch | 48 hours after the Genesis mint sells out, together with the world opening |
| Burned for | Placing (10,000), relocating (3,000) and every level upgrade (500 – 20,000) |
| Earned by | Placed machines: an hourly share of the season vault (30M VEND per 90-day season) |
| Contract address | Published here at launch. Anything else is fake. |
Launch timeline
- Mint. The 2,222 Genesis machines mint for free on OpenSea (gas only).
- Mint out. When the last machine is minted, the 48-hour countdown starts and is shown on this site.
- 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.
- 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.
- Season 1 starts. The first 30,000,000 VEND reward vault is funded and hourly rewards begin for every placed machine.
How VEND moves
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.
- 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.
machine_weight = level_weight × location × uptime × energy
machine_reward = hourly_release × machine_weight ÷ total_weight_of_all_active_machines
Level weight
| Level | Weight | Upgrade burn to reach it | Reference VEND / hour* |
|---|---|---|---|
| 1 | 1.0x | (placement 10,000) | 3.1 |
| 2 | 1.4x | 500 | 4.4 |
| 3 | 2.0x | 1,000 | 6.3 |
| 4 | 2.8x | 2,000 | 8.8 |
| 5 | 4.0x | 3,500 | 12.5 |
| 6 | 5.4x | 5,000 | 16.9 |
| 7 | 7.0x | 7,500 | 21.9 |
| 8 | 9.0x | 10,000 | 28.1 |
| 9 | 11.6x | 15,000 | 36.3 |
| 10 | 15.0x | 20,000 | 46.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
| Factor | Range | What moves it |
|---|---|---|
| Location | 0.8x – 1.2x | District traffic minus nearby rivals. Capped on purpose so prime plots can't swallow the pool. |
| Uptime | 1.0x or 0.25x | Stocked machines count fully; an empty machine drops to a quarter until you restock. |
| Energy | 1.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
| Action | VEND burned | Also needs | Notes |
|---|---|---|---|
| Place machine | 10,000 | Own the NFT, empty plot | Target ≈ $10; once per machine |
| Relocate | 3,000 | Empty plot | 24 game-hour cooldown |
| Upgrade Lv 1 → 2 | 500 | 80 CC + 2 parts | Weight 1.0x → 1.4x |
| Upgrade Lv 2 → 3 | 1,000 | 160 CC + 5 parts | → 2.0x |
| Upgrade Lv 3 → 4 | 2,000 | 260 CC + 6 parts | → 2.8x, rooftop sign |
| Upgrade Lv 4 → 5 | 3,500 | 380 CC + 8 parts | → 4.0x |
| Upgrade Lv 5 → 6 | 5,000 | 520 CC + 10 parts | → 5.4x |
| Upgrade Lv 6 → 7 | 7,500 | 700 CC + 12 parts | → 7.0x, neon sign |
| Upgrade Lv 7 → 8 | 10,000 | 900 CC + 14 parts | → 9.0x |
| Upgrade Lv 8 → 9 | 15,000 | 1,150 CC + 16 parts | → 11.6x |
| Upgrade Lv 9 → 10 | 20,000 | 1,500 CC + 20 parts | → 15.0x, gold star |
| Restock, recharge | 0 | City Credits | Everyday 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.
VEND vs City Credits
| VEND | City Credits (CC) | |
|---|---|---|
| Where it lives | On-chain, in your wallet | Off-chain, in your game account |
| Supply | 1B fixed; rewards come from pre-funded vaults | Created by simulated sales |
| How you get it | DEX, hourly machine rewards, transfers | Collect from your machines' sales |
| Used for | Placement, relocation, level upgrades | Restock, energy recharge, upgrade materials |
| Transferable / tradable | Yes | No |
| Cash value | Market price, can go to zero | None, 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
| Bucket | Share | VEND | Release |
|---|---|---|---|
| Community & season rewards | 30% | 300,000,000 | Up to 30M per 90-day season into the reward vault (10 seasons) |
| Liquidity | 20% | 200,000,000 | Paired in the DEX pool at launch; LP tokens locked |
| Treasury & ecosystem | 20% | 200,000,000 | Multisig, timelocked, spending reported publicly |
| Team | 15% | 150,000,000 | 6-month cliff, then 24-month linear vesting |
| Marketing & partnerships | 10% | 100,000,000 | Unlocked over 12 months |
| Reserve | 5% | 50,000,000 | Locked 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.
| Trait | Values |
|---|---|
| Body | Mint, Sakura, Lilac, Cream, Forest, Orange, Berry, Cobalt, Coral, Teal, Ocean; Gold (Legendary only) |
| Background | Blush, Lavender, Plum, Midnight, Sage, Ice, Sky, Sand |
| Trim | Rose, Ivory, Lime, Ice; Chrome (Rare), Cyan (Epic), Gold (Legendary) |
| Crate | Rose, Mint, Honey, Ice |
| Control lights | Lime, Cyan, Pink |
| Emblem | Bolt, Star, Diamond, None; Crown (Legendary only) |
| Pavement | Slate, Mauve, Sandstone |
| Finish (by rarity) | Enamel, Pastel Enamel, Chrome Edges, Cyan Edges, Gold Edition |
Rarity
| Tier | Supply | Share | Finish |
|---|---|---|---|
| Common | 1,333 | 60% | Enamel |
| Uncommon | 556 | 25% | Pastel Enamel |
| Rare | 222 | 10% | Chrome Edges |
| Epic | 89 | 4% | Cyan Edges |
| Legendary | 22 | 1% | 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:
- 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.
- After mint-out, the hash of a block mined after the last mint is taken. Nobody could know it when the seed was committed.
- 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.
- 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.
| Layer | Technology |
|---|---|
| Frontend | Next.js, TypeScript, Tailwind, wagmi + viem, canvas world renderer (Pixi/Phaser-class) |
| Backend | TypeScript API, queue + cron tick workers, hourly reward epoch worker with published snapshots, SIWE sessions, rate limiting |
| Database | Supabase / Postgres with row-level security and an append-only credits ledger |
| Blockchain | ERC-721 Genesis (OpenSea Drop), PlacementRegistry, MachineUpgrade, RewardDistributor, EmissionController, ERC-20 VEND (1B fixed, burnable) |
| Media | IPFS 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.
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.
Ownership sync
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:
| Part | Prototype today | Production |
|---|---|---|
| Access | Demo only; wallet connect opens at launch | Wallet sign-in (SIWE) |
| Ownership | 3 demo machines per player | Read from the Genesis contract |
| Simulation | Game server (or your browser if no server is running) | Server workers, seeded and auditable |
| Saves | Server database (SQLite) | Production database with backups |
| Placement | Instant, no transaction | Reservation + on-chain VEND burn |
| Rewards | Demo 30M pool shared with seeded machines, in your browser | Epoch worker + RewardDistributor claims |
| VEND | Demo balance (50,000, no value) | Real token in your wallet |
| Machine art | Unrevealed mystery look | Pixel Genesis V2 artwork after the reveal |
| Other players | Seeded sample machines | Real 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.