[ 01 ] Seismograph
Seismograph
How NearVolcano works, with the numbers the collection actually runs on. Read it once and the whole system is clear: the supply split, the draw, the record behind every token and the art it becomes.
[ 01 ] Supply classes
Four classes, one fixed split.
Every token maps to one Smithsonian Global Volcanism Program row. Rarity follows the real eruptive status of that volcano and nothing else: erupting, active, dormant or extinct. The rarer the status, the rarer your token.
- LEGENDARY → Erupting
- 222 · 10%
- RARE → Active
- 667 · 30%
- COMMON → Dormant
- 1,111 · 50%
- EPIC → Extinct
- 222 · 10%
Venting right now. The rarest class, and the loudest art.
Eruption on record in human history. Restless, never sleepy.
Quiet for now, still capable. The bulk of the collection.
Cold and finished. Ancient ground that will not erupt again.
NOTE Status is rarity, one class each: the 222 erupting volcanoes are legendary, 222 extinct are epic, 667 active are rare and the 1,111 dormant tokens fill common. Nothing else shifts the odds.
[ 02 ] The draw
Five steps, zero runtime randomness.
Nothing is rolled at runtime. Each scene is decided once, when the art is built, and shipped as a raster — which is why the same peak looks the same on every device.
- 01
Seed
The token id seeds the stream. The same id always draws the same scene, and nothing depends on time, place or wallet.
- 02
Class
The Smithsonian status fixes the class before anything draws: 222 erupting, 667 active, 1,111 dormant and 222 extinct.
- 03
Scene
Sky band, ridge width, snowline, plume height and lava arms all fall out of the same stream.
- 04
Render
The scene is rasterised at double the native grid — 1,348 px wide, 20 px cells — so every dot lands on a whole pixel.
- 05
Publish
The same id renders identically on every device, forever. The files ship with the site; no server is involved.
[ 03 ] Rarity math
2,222 seats, no remainder.
Four buckets, fixed counts, and every token lands in exactly one of them. The bar below is the whole supply, to scale.
- Erupting
- 222 · legendary class
- Extinct
- 222 · epic class
- Active
- 667 · rare class
- Dormant
- 1,111 · common class
- Supply check
- 222 + 667 + 1,111 + 222 = 2,222
LOCKED The split prints in the contract. Nothing moves after Erupt opens, and this page shows the same numbers the chain will.
[ 04 ] Traits
Every field the record carries.
These are the real Smithsonian fields behind each token, not generated traits. One row, one token, and the same row always resolves to the same art.
Status
- Erupting
- 222 · 10%
- Active
- 667 · 30%
- Dormant
- 1,111 · 50%
- Extinct
- 222 · 10%
Rarity
- LEGENDARY
- 222
- EPIC
- 222
- RARE
- 667
- COMMON
- 1,111
Volcano type
- Stratovolcano
- 993
- Shield volcano
- 163
- Volcanic field
- 160
- Caldera
- 130
Regions
- Kamchatka
- 103
- Honshu
- 73
- Mexico
- 63
- Africa-NE
- 59
Elevation
- Highest
- 6,887 m
- Most tokens
- 1,000 to 3,000 m
- Lowest
- -1,270 m
Art
- Raster
- 1348 px lossless WebP
- Grid
- 20 px cells, 2x the source
- Colours
- flat, kept lossless
- Seed
- token id
[ 05 ] Tracked data
What every volcano carries.
Coordinates, elevation, volcano type and eruptive status come from the Smithsonian Global Volcanism Program. Rarity is derived from the status field and the palette follows it, so nothing on a token is invented.
- Name
- As the GVP record spells it
- Country · Region
- 115 countries · 195 regions
- Latitude
- Signed degrees, two decimals
- Longitude
- Signed degrees, two decimals
- Elevation
- Metres, below sea level allowed
- Volcano type
- stratovolcano, shield, caldera, field
- Status
- erupting · active · dormant · extinct
- Rarity
- LEGENDARY · EPIC · RARE · COMMON
- Last eruption
- Code from the GVP record: U undated, ? doubtful Holocene, D1 to D7 dated episodes, D1 newest
- Art
- 1348x1112 lossless WebP, 2x the source grid
- Catalogue size
- 2,222 volcanoes
- GVP records
- 2,222 distinct volcano numbers
EXAMPLE Etna · Italy · Italy · 37.73N 15.00E · 3,350 m · erupting · last eruption D1.
[ 06 ] The art
One sharp raster per token.
Every token ships one lossless WebP, rasterised at double the art grid so every dot lands on a whole pixel and the browser can scale it down without blur. Three specimens below, drawn by the same pipeline that will draw yours.

#7

#1337

#2001
- ▪Raster: one 1348 px lossless WebP per token, drawn at 2x the art grid, no gradients.
- ▪Palette: the status picks the sky, plume and lava colours before the scene draws.
- ▪Scaling: the source is wider than any card, so the browser shrinks it smoothly instead of stretching a small bitmap.
- ▪Determinism: a seeded PRNG driven by the token id, the same stream every time.
- ▪Provenance: the volcano row behind each id comes from the GVP record.
[ 07 ] The market
A marketplace with no middle in the middle.
Trading runs inside the collection's own smart contract on NEAR. Sale terms are fixed in code, with separate Waitlist and Public allowances. The short version:
- ▪Escrowless: listing never takes your token. It stays in your wallet until a buyer actually pays.
- ▪Direct payment: one buy sends the NEAR straight to the seller, the fee to the treasury and any overpay back to the buyer — the contract never holds sale money.
- ▪Listed means locked: while a token sits on the book it cannot be transferred by any wallet or app; unlist it and it moves again.
- ▪Fixed economics: price, fee and treasury cannot change. The sale administrator manages waitlist approval and advances phases without changing trading rules.
- ▪Every move is a log: mints, listings, reprices, sales and transfers emit standard events, so the order book can be rebuilt from the chain itself.
Straight from the contract
contract/src/lib.rs · verbatim cuts
A listed token cannot move
nft_transfer · nft_approve
// every wallet and app routes through hererequire!(!self.listings.contains_key(token_id),"token is listed; unlist it first");
While a volcano sits on the book it is locked on chain — no wallet, no dApp, no back door. Unlist it and it moves again.
The seller is paid directly
buy → dispatch_payouts
// one leg per wallet: seller, treasury, overpayPromise::new(t.account.clone()).transfer(NearToken::from_yoctonear(t.amount.0),);
One buy moves the money straight into each wallet. The contract never holds sale funds on the happy path, and a failed transfer drops into a claimable credit instead of vanishing.
A stale listing cannot sell
buy · re-checked at sale
let owner = self.owner_of(&token_id);require!(owner == listing.seller,"stale listing: seller no longer owns this token");
A price is only ever spent while the account that agreed to it still owns the token — verified again at the moment of sale, not just at listing time.
Prices match the site, exactly
list · reprice
require!(price.0 >= MIN_LIST_PRICE && price.0 <= MAX_LIST_PRICE,"price must be between 0.01 and 9999 NEAR");
The same bounds /caldera validates — contract and UI cannot disagree in a way that loses money.
Withdraw can never overdraw
withdraw · safety net
require!(balance >= locked + amount,"insufficient contract balance; try again later");self.credits.remove(&caller); // transfer comes after
The contract checks it still holds the money before promising any, and clears the credit before paying — insolvency is structurally impossible.
Frozen the moment it deploys
new · one shot
#[init] // fixed economics; sale access is administered separatelyrequire!(mint_price.0 == FIXED_MINT_PRICE, "mint price must be 0.2 NEAR");require!(fee_bps <= MAX_FEE_BPS, "fee capped at 1000 bps (10%)");
Price, fee and treasury are fixed at initialization. A sale administrator can only manage waitlist eligibility and advance mint phases. Marketplace trading stays independent of the mint phase.
That is the whole promise: the contract can refuse a broken move, but it can never touch what is already yours.
Three phases. One fixed supply.
- Team
- 100 reserve
- Waitlist
- 2 per wallet
- Public
- 3 per wallet
Team allocation
0.2 NEAR each
0.2 NEAR each
2,222 total, including the team reserve. 2,122 available across Waitlist and Public. Waitlist lasts four hours, then Public opens automatically with no time limit. Separate phase limits allow approved wallets to mint up to 5 in total.
[ 08 ] NEAR basics
The chain underneath.
The numbers a minter actually touches. NEAR finality is fast and fees are small, so a transaction confirms in about the time it takes to blink.
The wallet side is real: NEAR Connect reads your account and balance straight from mainnet, one approval signs the mint transaction itself, and the seats land in the register the moment the indexer mirrors them — settlement is on chain, in the NEARVOLCANO contract.
- Block time
- ~0.6 seconds
- Finality
- ~1.2 seconds
- Epoch
- 43,200 blocks, about 7.2 hours
- Storage
- 1 NEAR per 100 kB, refundable
- Gas
- 0.001 NEAR per Tgas, unused returns
- Networks
- NEAR mainnet
- Contract
- Mint and trading access coming soon
- Site mode
- NEAR mainnet · Collection access coming soon