Docs
How Lunauts works.
Every number on this site comes from one deterministic pipeline: a seed produces the art, the art produces the rarity table, and the rarity table is written into the metadata. Nothing is assigned by hand, so anyone can rebuild the collection and check it.
Art & generator
lunauts-genesis-v1 drives a seeded PRNG, so token #1,337 always gets the same layers on any machine.Rarity method
sum of supply / trait count across all traits; rank 1 = highest score. Scores come from realised trait frequency after generation, so a rare value stays rare even if the weights drift. Each token gets a tier and a numeric rank, both written into its metadata.
Tiers
Metadata
Token metadata follows the OpenSea standard, with rarity exposed as attributes so marketplaces can sort on it. Pre-reveal, every id serves the same placeholder document.
{
"name": "Lunaut #1",
"description": "One of 2,000 Lunauts...",
"image": "ipfs://<art-cid>/1.png",
"external_url": "https://lunauts.com/lunaut/1",
"attributes": [
{ "trait_type": "Background", "value": "Dawn Haze" },
{ "trait_type": "Headgear", "value": "Crater Crown" },
{ "trait_type": "Rarity Tier", "value": "Mythic" },
{ "trait_type": "Rarity Rank", "value": 1, "display_type": "number" }
]
}Contract
Chain settings
Robinhood Chain Testnet
https://rpc.testnet.chain.robinhood.comThe mint panel can add the active network (Robinhood Chain) to your wallet in one click. Public RPCs are rate limited — a dedicated RPC is recommended for heavy use.
Verify it yourself
The generator, rarity script and contracts ship in the project archive. Run these to reproduce every claim on this site.
npm run generate --workspace packages/artre-render all 2,000 SVG + PNG from the seednpm run rarity --workspace packages/artrecompute trait distribution, tiers and ranksnpm run placeholder --workspace packages/artbuild the pre-reveal metadata and imagenpm test --workspace packages/contractsrun the mint contract test suiteforge testrun the SeaDrop variant tests in packages/seadropRaw data: rarity-traits.csv · rarity-tokens.csv
Waitlist API
The waitlist is a single JSON endpoint backed by Cloudflare KV, rate limited to 5 requests per minute per IP with a honeypot field for bots.
POST /api/waitlist
{ "email": "you@example.com", "wallet": "0x…", "x": "handle" }
200 { "ok": true }
409 { "error": "already on the waitlist" }
429 { "error": "too many requests" }Signups are exported to allowlist leaves with node scripts/export-allowlist.mjs.