Where the randomness comes from

The one input to a birth that did not exist when the parents were chosen. The order is the point: the breeding decision comes first, the chance comes after, and neither side gets to look at the child and try again.

The ledger, live

Ask for a birth and watch where the chance comes in

Below, the ledger closing as it happens, read from a public node: every few seconds a new one. Ask for a birth and see the ledger it would be admitted in; its chance comes later, on the clock’s next fire, from the ledger’s own random number. Nothing is sent; if the node cannot be reached, a model on your device stands in and says so.

Sealed first, drawn after

When a request is admitted the parents are sealed: reserved for this birth, every rule checked, the price paid. Nothing about the child exists yet. On the clock’s next fire in a later ledger, the fire that captures the birth, the Hooks check both parents once more and ask the ledger for its random number: 32 bytes the validators draw together for that ledger, which nobody had before it closed. The child follows from that number. The requester therefore cannot know the child before committing to the parents, and cannot decline the child afterwards. That is the property the protocol is built around.

It is worth saying precisely what this is and is not. The number comes from Xahau’s RNG amendment: each validator commits to a secret, then reveals it, and the ledger’s number is made from the reveals together. No single validator chooses it. A group of validators that holds back can keep a ledger from having a number at all; then the birth waits, and the clock tries again on its next fire. A validator that sees the others’ reveals before fixing its own could tilt the number a little, so this site does not call it perfect randomness. What it gives is order — the breeding decision precedes the chance that determines the offspring — plus a public record this site checks every child against.

Why the request cannot bring its own

A request that supplies its own randomness, the ledger to draw in or a serial is refused. If a requester could choose any of them they could try many and keep the one they liked, which would make births an auction for the best genome rather than a draw. The hook checks for those parameters by name and rolls back if any is present.

Why it is mixed, not used raw

The 32 bytes are bound to the network id, the species’ account, the rules version, this request’s own id and the ledger of the draw before they become the seed. Two births drawn in the same ledger therefore get different seeds, and a draw cannot be replayed under a different rules version.

When a ledger has no number

A ledger without a random number is a miss, not a failure: the birth waits, the miss is counted, and the clock tries again on its next fire, a little later each time. A birth’s price already pays for four misses. A birth not captured within 240 ledgers of its admission, roughly a quarter of an hour, is refunded whole when it is swept: its unspent budget, both prices and the Hooks’ fee. The fee is earned on the fire that captures the birth, and not before.

Capture is the line. Before it nothing about the child can be known, so a parent burned before capture is found at the capture fire and the birth is refunded. From capture on the child is fixed, and nothing is refunded. Delivery may take as long as it takes, and a broken delivery is retried. If the child was minted and is still with the species’ account when the birth is swept, 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 species’ account.

What is recorded

Each moeba carries a record naming the source, the ledger of the draw, and the seed itself. Its page on this site shows all three and checks them against the ledger, from public data alone.

What to remember

  1. When a request is admitted, its parents are sealed. Nothing about the child exists yet, for anyone.
  2. On the fire that captures the birth, the Hooks take the ledger’s own random number, drawn by the validators together, and bind it to the network, the species’ account, the rules version and the request. A ledger without one only makes the birth wait.
  3. The draw is recorded with the child, so anyone can check it. It gives order, not perfect randomness: the decision comes first, the chance after.

Check a birth yourself