Skip to content
BobiBird
Verification

You do not have to take our word for what hatched

We could, in principle, hand ourselves every rare Bobi. This page is how you will be able to check that we did not — for every egg, from the day the game opens, without asking us for anything.

How it works

Nothing has hatched yet, so there is nothing to check today. This is how every egg will work once the game opens.

1

When you buy

Your egg gets its own secret seed, and we publish a hash of it straight away. The seed itself stays hidden, but the hash fixes it — we cannot change it later without the hash changing too.

2

At the same moment

Your egg records the current finalized slot, and a target slot exactly 648,000 slots later. That target is public immediately, about 72 hours before the block it points at exists.

3

For the next 60 seconds, if you want

Your egg also gets a second seed, made by our server. You can replace it with 32 random bytes of your own, and then you do not have to trust that our random numbers were random. Doing nothing is fine. What stops anyone steering the result is still the block from step 2, which nobody, including us, can know yet.

4

At hatching

The block at the target slot is recorded first, then the traits are derived from the secret seed, the second seed and that block. The secret seed is published, so sha256 of it can be checked against the hash from step 1.

What every Bobi publishes

All of it, for every Bobi, whether or not anyone asks — from the first egg sold.

FieldWhat it is
server_seed_hashPublished at purchase, before the entropy exists
server_seedRevealed after hatching. Check sha256 of it against the hash above
client_seedMade by our server, unless you replaced it with your own within 60 seconds of buying. Each Bobi's page says which
commit_slotThe finalized slot recorded when you bought
target_slotcommit_slot + 648,000, published about 72 hours before that block exists
hatch_slotThe first confirmed block at or after the target, stored before anything is derived
draw_logEvery draw, in order, so a re-roll can be replayed step by step
shape_attemptsHow many draws this Bobi took to find a look no other Bobi has. 65 means the first draw and all 64 re-draws repeated an existing Bobi, and it hatched as a twin
is_twinWhether this Bobi shares its look with another. Rare, and published either way
twin_of_pet_idFor a twin, the Bobi it shares its look with. Empty otherwise

Recomputing it yourself

Each Bobi's page will ship a self-contained script that rebuilds the digest and re-derives the traits in your own browser, with no access to our servers. If the result does not match what we published, we were lying and you can prove it.

Arrives with the first hatched Bobi.

What a re-roll does to the odds

Every Bobi is meant to look different from every other, so a draw that would reproduce one that already exists is thrown away and drawn again, up to 64 times; if every one of those repeats too, the Bobi hatches as a declared twin. That is a rejection sampler, and it does move probability away from appearances already taken.

This is why every Bobi publishes shape_attempts. The rates on the drop rates page are the draw rates; the attempts tell you how far the observed frequencies have drifted, for that Bobi, at that point in the population. A disclosure that quietly stopped being true would be worse than none.

What this still cannot rule out

An operator who also controlled block production could, in principle, withhold or reorder the block at the target slot. Three things limit that: the target is taken from a finalized slot and read at finalized commitment, the hatch slot is stored before anything is derived from it, and the economics are absurd — suppressing a Solana block to influence a $10 egg.

We state this openly rather than papering over it. A verification scheme that claims to be perfect is the one worth distrusting.