Whitepaper

Xahmoeba

A shared digital species on Xahau. Each creature grows from a permanent, heritable genome; two of them can have a child; and the whole population, with every lineage, is public. This is the description of how it works, what is promised, and what is not.

Version 0.1, September 2026. Written for a reader who keeps or might keep a moeba. The protocol is described in more depth, with its evidence, in the five chapters; the keeper's practical steps are on Getting started.

A rehearsal. This species runs on Xahau testnet before its release: the population may be wiped, the issuing account replaced and the rules changed without notice, and nothing born here carries over. Why → Found a fault? Tell us on X.

What this is

Xahmoeba is one species of small digital creatures, called moebas. A moeba is grown, not assembled: thirty-two bytes of genome are read through a fixed developmental process — how many segments, where limbs attach, how the head and tail form, how it moves, what colour it is — and the result is one canonical body. The drawing comes last, and the drawing never decides anything. Because looks follow from the genome step by step, a child resembles its parents for reasons that can be traced, locus by locus.

On the ledger a moeba is a URIToken issued by one Xahau account, the issuer (rMmx5nHzoVJAoMTFWkgCCMrZryTaD682tr on Xahau testnet). Whoever holds the token is its keeper. Two mature moebas can have a child: their keeper sends one payment to the issuer naming both, and from then on nobody signs anything. Hooks on the issuer's account wait for a ledger that has not closed yet, take its hash as the birth's chance, combine the parents' genomes, mint the child and deliver it. The child's genome is a pure function of the parents and the birth's seed: that hash, mixed with the network, the issuer, the rules version and the request itself. This site recomputes both on every moeba's page. The source is not published.

There is no token attached to the species, and no server that the population depends on: the issuer's hooks run every birth. The account they run on is held by xrplorer ApS. The site you are reading holds no data of its own: it reads the ledger and draws what it finds, and if it disappeared the moebas would be exactly where they are.

What a moeba carries

Everything that a moeba is sits on the token, in two places.

Its identity, in the URI. A URIToken's id is its issuer and its URI together, so the URI is immutable by construction. Ours holds the genetic model, whether it is a founder or a birth, its generation, the ledger it was born in, how many births it has in it, the version of the rules it was born under, the moment it becomes mature, its serial number, and the id of the request that committed its birth. Ninety-one characters.

Its records, as remarks on the token. Xahau lets an issuer attach small labelled values to a token, and mark each one immutable so that it can never be changed or removed by anyone, the issuer included.

The token's Digest field, set at mint, is a hash over the URI and the three immutable records in a fixed order. A moeba whose records do not match its Digest is shown as such on this site, and would be by any reader that checks.

Nothing about its appearance is on the ledger

This is the part worth being clear about, because it is where Xahmoeba differs most from a collectible whose picture is a file. A moeba's token holds its genome and nothing about how it looks. There is no image, no image URL, no list of traits, no metadata describing a body. Body, colour, movement and even the systematic name are all read from the genome, on your device, by the same code every other device runs.

Many projects seal a card's identity on the ledger and point at a picture hosted somewhere. That is honest, and it is also a dependency: if the host goes, the picture goes, and what remains is an identifier. Xahmoeba has no such pointer to lose. If every copy of this site vanished, a moeba would still be the same moeba, because the moeba was never the picture; it was always the genome, and the genome is on the token. The source that reads a body from that genome is not published.

The trade is that the drawing is not a promise. It is a reading, and readings improve. Which brings us to the next section.

The drawing can change; the moeba cannot

The renderer is client code, versioned like any other, and it will be changed: to draw a limb the genome always specified but the old version fumbled, to make a texture read as the genome says it should, to fix a body plan that looked wrong. When that happens a moeba may look different than it did last month. It has not changed. Its genome is the same thirty-two bytes, its development is the same fixed process, and the body that process produces is the same body; we have become better at seeing it.

Some drawings will be wrong for a while. The genome can express combinations no moeba has yet had, and the renderer meets some of them for the first time when a birth produces them. A combination nobody has seen may be drawn badly the first time, and corrected once it has been looked at. That is expected in a species whose forms are discovered rather than designed, and it is why the site shows the structure and the genome beside the living view: the drawing is one of three readings, and the genome is the one that is authoritative.

What does not change for a moeba once it is born: its genetic model, the developmental version it was born under, and the birth rules. The model is a byte in its identity, the developmental version is in its birth record, and the birth rules are hashed into c.rules/1. A new model, a new developmental version or new birth rules show up on new births and can never be applied to an existing one. A moeba is born under a version of the rules and stays under it.

Where the randomness comes from

A birth needs chance, and chance on a deterministic ledger is the hard part. Xahmoeba uses commit first, reveal later: when a request is admitted, the hooks name a ledger a few ledgers ahead. That ledger's hash does not exist yet. When it closes, its hash — which depends on every transaction in it and the order the validators agreed on — is captured and mixed with the request into a 32-byte seed. Every draw of the birth is read from that seed: which copy of each locus the child receives, where the reading switches, whether a mutation pathway opens.

So the parents are committed before the chance that decides the child exists, and the requester cannot compute the child before sending, cancel what they do not like, or try again. What this does not claim: that the hash is unbiased or beyond influence. Whoever can influence the final contents of that ledger may influence its hash; on Xahau that is a question about validators and transaction inclusion that has not been quantified. The protocol is not described here as fair or as a verifiable random function. It is described as commit-first with a public beacon, and the source is recorded on every moeba so that a better one can replace it in a later version of the rules without touching a single existing creature.

One more property of the design: once the named ledger closes, its hash is public and the child follows from it — anyone can compute it, before the hooks have even read the hash. This site recomputes that child from the record. So the line for refunds is that ledger closing, not the hooks capturing it. A birth a keeper breaks after the named ledger has closed — by burning a parent, their own or a partner's — is never refunded, whether or not the hooks have captured the hash yet: a refund then would be a free look at the outcome with the option to walk away from it and try again. A birth that breaks before that ledger closes is refunded when swept: the unspent budget, both prices, and the issuer's fee. So is a birth the clock never reached before its deadline, and one whose parent the issuer burned before its randomness was fixed — those are the issuer's failures, not the keeper's, and nobody should pay the fee for a birth that did not happen. If the child was already minted and is still with the issuer, and every partner who was owed a price has been paid, the sweep sends the child to the keeper who asked. A child whose partner is still unpaid stays with the issuer.

How a birth runs

The issuer's account carries five hook positions, and nothing else runs the species. One admits or refuses a request when the payment arrives; one walks each birth through its stages; two do the genetics, recombination and mutation, in the same fixed arithmetic the site runs to check them; one refuses moving a moeba that a birth in progress still needs. Founders go through the same five: a founder is a request with no parents, whose named variants are drawn from the species' founder weights and whose number loci are drawn so a founder sits near the middle of a trait far more often than at either end.

Nobody signs the steps. The hooks wake themselves with Xahau's Cron, one birth per wake-up, round-robin across the four births the issuer will run at once. The wake-up that captures the randomness also combines the genomes and applies the mutation rules. Minting the token, sealing its three records, charging each parent one birth, delivering the child and paying the other keeper each take a fire of their own. Every transaction the hooks send reports back to them when it has been applied, and that report — not a clock and not a server — is what moves a birth to its next stage. If a step fails it is retried, paid from the birth's own budget, until it succeeds or the budget is gone; a birth that runs dry stops where it is and is swept, and anyone may send the transaction that sweeps it.

A newborn is not ready at once. It becomes mature one minute after its randomness was fixed, on the ledger's clock, and is born with a fixed number of births in it, spent one per child whichever parent it is. Founders are mature from birth. The hooks chapter lets you drive these stages by hand, including burning a parent halfway through.

The money

A request pays four things at once, all quoted from the ledger at the moment it is made: the issuer's fee, the other keeper's price if the other parent is theirs, a budget for the transactions the hooks will send on the request's behalf, and the Cron wake-ups that carry it through its stages. The site puts that amount on the payment; the keeper types nothing. The hooks check the same numbers on arrival and refuse anything under them, keeping nothing from a refused request. What a birth does not spend of its budget stays with the issuer, so the quote is kept close to the floor.

The fee for a birth, the fee for a founder, the fee for a name, the maturity wait and the number of births a newborn gets are parameters on the issuer's account, not compiled into the hooks. The issuer can move them with one transaction, without new code. A new fee applies from the next request; a new maturity wait or fertility reaches only moebas born after it, since each moeba carries the values it was actually born under. The founder price is a curve: it steps up every so many founders, so that once there is a population, buying a moeba and breeding it is cheaper than asking for another founder, and founders stay raw material rather than the prize. Breeding is not a way in — at least one parent must be the requester's own — so a keeper starts with a founder, a purchase or a gift. Today's figures, read live from the account, are on Getting started.

Buying, selling and giving moebas between keepers are ordinary URIToken transactions; the issuer takes nothing from them. Letting others breed with a moeba pays its keeper the price they set, per birth, as part of the birth — and spends one of that moeba's births, which is what the price is for.

The rules

Everything the issuer's hooks refuse or require, in one place. None of it is enforced by this site.

Rarity is counted, not assigned

There is no rarity table. No moeba is marked common, rare or legendary, by us or by the rules, and no odds are printed on a box, because there is no box: what a birth produces depends on which two moebas are its parents, and that is the keepers' doing. What the site shows instead are counts. On a moeba's page: how many living moebas share its morph, which moeba was the first recorded with it, and what it carries on the copy that does not show, with how many others show or carry the same. On the What if page: for any two parents, what their children could be, how often, and which of those morphs nobody has recorded yet.

Every count says what it is counted among — the living moebas in this read of the ledger — and none of them is a rank. A form is rare when the genetics make it hard to reach and common when the population keeps breeding it, and both can change as the population does. The simulations behind the design suggest that single alleles spread quickly once they exist, whilecombinations stay open far longer; the naming layer (the Latin name is the body plan, limbs, symmetry and pattern together) exists so that people can talk about combinations without a tier system.

Why every moeba is burnable

Every moeba is minted with the URIToken flag that lets the issuer destroy it. That is not a choice we would have made for its own sake, and it is worth explaining. On Xahau a hook on the issuer's account runs when one of its tokens is sold, bought or sent — but whether that hook can refuse the transaction depends on the issuer being what the ledger calls a strong stakeholder in it, and the issuer is one only when it holds the right to burn. Measured on the test network: without the flag, the lock that keeps a parent from being sold mid-birth runs, rolls back, and the sale goes through anyway. With it, the refusal holds.

So the flag is the price of the one rule the protocol cannot do without: a moeba a birth still needs cannot be moved out from under it. The other side of that trade is stated plainly in the next section: the issuer can burn any moeba. It is the ledger's arrangement, not ours, and we would rather write it down than have it found.

What the issuer can do

The hooks enforce every rule above against everyone, including the account they run on — with the exceptions that come from holding the account's key. Whoever holds it can:

What the key cannot do, because the ledger enforces it against the issuer like everyone else:

Every version of the hooks that has run is on the ledger with the ledger it went live in, and the hash of the rules a moeba was born under is on the moeba. A species is a promise by whoever holds its key; the records are what make it a checkable one.

Why the account is not blackholed

An account on Xahau can be blackholed: its keys given up so that nobody can ever sign for it again, freezing its hooks and parameters exactly as they stand. That would remove every power in the list above, and it is a reasonable thing to ask for. We have not done it, and we do not plan to. The reason is not the earnings, though it is true that a blackholed issuer could never withdraw them; it is that being able to find and fix a fault matters more than being unable to.

The protocol is young. The rehearsal on the test network exists precisely because the hooks have had faults — a lock that broke a birth it should not have, a clock that stranded a healthy birth one step from settlement — each found by running the species, each fixed, each recorded in the protocol's own account of itself. A blackholed account could fix none of them; a fault found afterwards would be permanent, for every birth to come. The prices could never move, so a species priced for one market would be stuck in another; the maturity wait and fertility could never be tuned to what the population turned out to need.

What you have instead is narrower and, we think, more useful: everything a moeba is is sealed against us by the ledger, every change to the hooks is public with the date it went live, and the rules a moeba was born under travel with it forever. If that position ever changes, it will be a transaction anyone can check, and this section will say so.

The rehearsal on the testnet

The species runs on the Xahau test network before its release, where XAH is free and mistakes cost nothing. Everything you see here is a rehearsal, and the rehearsal has one rule that overrides all the others: it may be reset without notice.

Why rehearse in public? Because the things that go wrong in a species — a lock that misfires, a queue that stalls, a form the renderer has never met — only go wrong when many people are breeding many moebas in ways nobody planned. A private test finds the faults we thought of. This finds the rest. Take part, break things, and tell us what you find at @xahmoeba on X; it is the most useful thing anyone can do for the species right now.

What this is not

Moebas are creatures in an artificial-life experiment. There is no yield, no staking, no governance right, no token attached, and no promise that a moeba will be worth anything to anyone later. The site never quotes a value, a floor price or a chance of profit, and it never will. What is on offer is a species whose forms are grown rather than drawn, whose heredity you can trace, and whose population is kept by many people rather than run inside one simulation. That is the whole offer.

The site holds none of your keys and never submits a transaction for you. It prepares one, lays it out field by field and as JSON, and your wallet signs it. Anyone can mint a URIToken that looks like a moeba; a moeba is one only if it was issued by the account named above, and that is what every page here checks before it draws anything.

How to check any of it

If this document and the ledger disagree, the ledger is right and this document has a fault. Tell us.