Your reef
Sign in with Xaman to hatch polyps and spawn your medusae. Each action is a transaction you approve in Xaman, sent to the Reef at rXELLiESgJYepe35dbkpPByi3uas6jLAW.
Keeper settings
A life in four stages
The rules come from real jellyfish biology, including the one species that can age backwards.
Polyp
Every Xellie begins anchored to the reef. A polyp can't spawn. It matures after 4,096 ledgers, roughly four hours.
Medusa
A free-swimming adult that can spawn with another medusa you own. Each spawn is followed by a longer rest: 1,800 ledgers after the first, doubling each time.
Spent
Vitality is written in the genome: three to seven spawns. When it runs out the medusa stops spawning, but it stays yours and still counts toward collections.
Rebirth
Immortal Xellies carry the Turritopsis flag, about 1.6% of genesis. A spent immortal can revert to a polyp with the same genes and full vitality.
Planned for v2Spawning lab
This runs the hook's genetics byte for byte, with the seed built the same way: the intent id, the last ledger hash and a ledger nonce (random here), plus a running tide that carries every earlier spawn in this session.
Parent A
Offspring
Parent B
| Trait | Parent A | Offspring | Parent B | Offspring shows |
|---|
Plate I. Genesis specimens
Nine freshly rolled genesis polyps, drawn as adults. Names are derived from the genome: bell shape gives the genus, glow colour the species. Pick one to send it to the lab as parent A.
What's in 32 bytes
The whole creature lives in its URIToken's URI as xellies:1: plus 64 hex characters. Any wallet or explorer can decode it without asking our servers.
Twelve traits, four alleles
Bell shape, bell hue, glow hue, glow pattern, tentacle count, tentacle length, tentacle style, oral arms, pulse rhythm, clarity, rim and aura. Each has one expressed allele and three dormant ones, like CryptoKitties. All four are public in the token; they just don't show in the artwork.
When two medusae spawn, each parent's dormant alleles can surface a slot (an even chance at each step), then each slot takes the allele from one parent or the other. Two jellies that look ordinary can carry something rare.
Lumen, the glow intensity, blends instead: the offspring gets the parents' average, give or take 40.
Resonance mutations
When the two alleles meeting in a slot are partners, there's a one-in-four chance (one-in-two during a Bloom) they fuse into the next tier.
| Partners meeting | Can become |
|---|---|
| 0+1, 2+3, 4+5, 6+7 (common) | 8, 9, 10, 11 (tidal) |
| 8+9, 10+11 (tidal) | 12, 13 (abyssal) |
| 12+13 (abyssal) | 14 (mythic) |
| 14+14, only during a Bloom | 15 (bloom) |
Drift
After inheritance, every one of the 48 allele slots gets its own roll. About one in 43 becomes a wild allele, freshly rolled as if at genesis. Another one in 43 drifts to a neighbouring allele of the same tier.
How hard is it to guess?
Every rule is public and every allele is on the ledger, so nothing here is secret. The outcome is still hard to call. Each spawn makes over 200 independent random decisions from a seed that doesn't exist until the ledger closes. Even knowing both parents' full genomes, the best possible guess at any single trait of the offspring is right about 33% of the time, and the whole look almost never.
How it runs on Xahau
Two hooks on one Reef account share a hook namespace. No servers decide anything: the website only reads the ledger and builds transactions for your wallet to sign.
- You pay the Reef
A Payment with hook parameter
OP=Hhatches a genesis polyp.OP=Swith token idsAandBspawns two of your medusae. - reef_pay records the intent
It checks price, ownership, maturity, rest and vitality, writes an intent keyed by your transaction id, then emits an Invoke to itself.
- Next ledger, reef_roll rolls
The seed hashes your intent id, the last ledger hash, a ledger nonce and the Reef's tide, a running hash of every roll before yours. None of it can be known when you sign.
- A Remit mints your jelly
The hook emits a Remit with
MintURITokento your account. The callback marks the intent granted, or failed so the operator can refund it.
Verify, don't trust
Each hook's bytecode is referenced on ledger by its HookHash, the SHA-256 of the wasm. Build the source in a pinned container, hash it, compare. If the digests match, the published code is the running code.
Both hooks pass Xahau's guard checker: about 47,000 and 53,000 worst-case instructions of the 65,535 allowed. That ceiling is why the design uses two hooks rather than one.
$ HOOKAPI=./hookapi ./build.sh genetics: C vs JS parity 2000 genomes compared, 0 mismatches Hook validation successful! # reef_pay Hook validation successful! # reef_roll <sha256> build/reef_pay.wasm <sha256> build/reef_roll.wasm # compare with the HookHash entries on the Reef account
Proposed numbers
All of these are keeper-settable state, not constants, except the rest schedule and vitality range, which are in the hook.
| Genesis polyps, first season | 4,096 |
| Hatch price | 20 XAH |
| Spawn fee | 5 XAH |
| Maturity | 4,096 ledgers |
| Rest after spawn n | 900 × 2n ledgers |
| Vitality | 3–7 spawns, genetic |
| Blooms | Announced windows |
Rarity that holds
We simulated 3,000 jellies mating at random for eight generations with one Bloom. Tidal alleles rose from 15% to 26% of expressed traits, abyssal from 4.7% to 7.0%, mythic held near 2%, and bloom alleles appeared at about one per 10,000 traits. The extra randomness makes offspring harder to call without cheapening rarity.
Immortality fades fast under random mating, to under half a percent in one generation and under 0.1% by the fourth. Keeping it alive takes pairing immortals deliberately, which is exactly the kind of breeding project that gives a collection a story.
Supply stays bounded because every medusa has finite vitality and each rest doubles. A genesis jelly with vitality 7 needs over 200,000 ledgers of rest to use it all.
What we borrowed
Two predecessors shaped the rules: the game that made breeding collectibles famous, and the card game proving Hooks can run this kind of thing cleanly.
- Dormant alleles
- Kept, and published openly. Four alleles per trait plus per-slot drift make breeding a puzzle with real surprises.
- Cooldowns that grow
- Kept, and paired with a hard vitality cap, because cooldowns alone slowed supply without ever stopping it.
- Gas-heavy breeding
- Avoided. Hooks run inside the ledger at Xahau's fees, so spawning stays cheap as the game grows.
- Siring market
- Planned for v2 as on-ledger sire offers, paid out by an emitted Payment.
From CryptoKitties
- Pay, then roll a ledger later
- Adopted. Randomness from a hash that didn't exist at signing time.
- Record before you emit
- Adopted. Every purchase is written down first; a failed mint is marked on ledger, visible and refundable.
- Reproducible builds and published hashes
- Adopted, with a build script that also proves the website and the hook share one genetics engine.
- Self-describing tokens
- Taken further: the genome is the URI, so a Xellie can be rendered from the ledger alone.