How EGGPOP works
Tear a pack, meet your pet. Pack money buys $EGGPOP and burns it. For 7 days your pet's gold is a cut of the coin's trading tax, by weight. Then it peels into the album in your pond. 4 of a kind make a neon.
If trading stops, gold stops. A pack paid in ETH, USDG or gold buys the coin first, and that buy pays the trading tax like any other: about 2% of the pack. A pack paid in $EGGPOP pays none.
A pack
- A pack burns the coin. The price is the same for everyone:
100,000coins, plus1%for every recent pack, and that extra halves every6hours - Pay with the coin, or with gold, ETH or USDG. The game buys the coin on the pair and burns it in the same transaction. Any coin left over comes back to you
- Up to 10 packs in one transaction. No limit per wallet
- No ETH on Robinhood Chain yet? "Add ETH from Base / Arbitrum" on the page sends it through Relay to your own wallet here, in about a second. Relay takes its fee (a few cents), EGGPOP adds none
The odds
| chance | weight | |
|---|---|---|
| Common | 80% | 1 |
| Rare | 17% | 5 |
| Legendary | 3% | 40 |
| JACKPOT | 1 in 1,000 | 100 |
A JACKPOT hit comes on top of the pack's own pet: the day's lowest revealed hit gets one jackpot pet of that weight.
The odds on the site also count every roll made so far, read from the chain: from 100 packs as shares, the JACKPOT by days.
A pet's cut is its weight over the weight of every pet alive. After a UTC day closes, anyone can draw its jackpot: at once if a hit is known or every pack of the day has its true roll, and 2 hours after the day in any case. The lowest pack number among the day's revealed hits gets one jackpot pet, which lives as long as that pack's own pet. Packs still unrevealed by then are not in it. The order packs were revealed in does not matter.
Invites
Every wallet with a pack holds three invite links. A friend who tears a first pack from one carries its tag in the top 32 bits of the pack's user seed, which the PackOpened event puts on chain. Both albums then show a stamp: "Brought a friend" and "Came with a friend". That is all it does: no gold, no odds, no weight. The roll does not depend on the tag: it comes from the block after the pack and the seed chain, whatever the user seed is.
The cut
The game contract is the coin's fee recipient on pons from the first trade. Anyone can call claim(): the trading tax moves from pons to the game, 30% is set aside for the team wallet (anyone can send it there with withdrawOps(), and if that wallet is ever blocked the pets' side keeps going), and the rest is paid out to living pets over the next 24 hours. Each claim is a stream of its own: a later claim never stretches or slows one already running. Gold paid out while no pet is alive waits and goes out over 24 hours from the next hatch. A pet gets only what is paid out after it hatches, so a big claim cannot be caught by opening a pack right after it. Collect any time. Nothing is lost by waiting.
After 7 days the pet peels: no more cut, and it stays in the album. A neon is a look. It does not add weight or time.
The roll
roll = keccak(seed, hash of the block after your pack, your seed, pack id, your address) mod 10,000
- The seeds come from a hash chain. Its first link was published before launch and sits in the contract: every seed shown must hash to the one before it, so none can be swapped
- Seed n belongs to pack n, in the order packs were opened
- When you open, the block after yours does not exist yet, so nobody knows your roll, the team included. A pack cannot be cancelled
- One seed gives away every seed below it (each is the hash of the next). So whoever shows a seed, the keeper or anyone, resolves every pack up to it with its true roll in the same call. No pack can be skipped and brought back later
- Every input is public once the pack is revealed: recompute any roll from the events
- Limits you set on every open: the most coin you burn, the least coin you get for what you pay, and a deadline
What can go wrong
- The keeper. A keeper run by the team shows the seeds. If it stops, packs wait. After an hour anyone can make a waiting pack a common with
expire(), but only while its seed is unknown, and the block hash is kept: the reveal that later covers it gives it its true roll, with the extra weight on the common's own timer (after it peeled, only the look changes). Holding one pack back holds back every pack after it, in public. The keeper together with the chain's sequencer could bias rolls. Neither can alone. Beyond showing seeds the keeper can do two things: hand its role to another address, only when every pack has its seed shown, and start a new seed chain, only when no pack is waiting for its pet. Over floored packs whose seeds were never shown, a new chain needs 3 days with no reveal, and those packs stay common. The keeper cannot move gold - If the keeper disappears, packs from then on open as commons, and the keeper gets no share of anything from that
- After graduation. The trading tax sits on the pons hook until it is swept. Anyone can sweep it through the game with
sweepPool()while no coin-side conversion is due. Otherwise only the pons operator can, as for every pons coin - Gold can be paused. Gold here is a Robinhood stock token (its address is below). Every transfer checks a Robinhood contract (
0xe10b6f6B275de231345c20D14Ab812db62151b00) forpaused()andisBlocked(address). If it pauses, or blocks the game's address, gold cannot leave the game: collects, the team share and pair payments stop until it is lifted. Packs paid with the coin keep working - No owner. The contract has no owner, no pause and no upgrade. Gold leaves it only to the team wallet (its share of each claim, a fixed address set at deploy) and to pet owners (what their pets were paid). Gold sent to the game directly is not counted as trading tax and stays there
Addresses
| Game | 0xea72DEdC152623085f70c889B485aAb4B4812b95 |
| Coin | 0xe66E6bCF3fc2ED4BA2e39c50C22C2F4A09E66E66 |
| Team wallet | 0xDE6c29B780d579755742Ff500F53Ef2dbaA5896F |
| Keeper | 0xabf8f0C647d78a23A834369bf4a130d3FcF63F14 |
| Seed chain anchor | 0x23a46b6fc1ed08595d96c93524f4da7e4cb32ff4153067c1cb92c49decf4e1ee |
| Gold (GLD) | 0xC9a981FEE1F9DEc688bb123ccDeCc63D0deBFC4e |