Block 0 is bedrock. Nobody mines it.
Bundlers can't land in the launch block, so they can't hoard supply. This page explains what gets sealed, what still works, and how to check any coin yourself.
Why block 0 matters
On most launchpads the creation transaction can be bundled with buys. Whoever bundles gets the first, cheapest slice of supply before the coin is even visible — then sells into everyone who arrives after. Bedrock closes that slot. The only buy in block 0 is the creator's, and it is capped and public, so there is nothing to bundle.
How a launch plays out
| Action | Launch block | Next block onward |
|---|---|---|
| Create token | Allowed | — |
| Creator first buy | Capped · disclosed · inside launch() | Normal buy like anyone |
| Any other buy | Rejected · SameBlockAsLaunch | Allowed · 1% per-wallet cap for 60s |
| Bundled buys | Rejected · the whole bundle reverts | Allowed (normal buys) |
| Creator moving coins | Rejected · CreatorLockedInLaunchBlock | Allowed |
Why it can't be dodged
The hook never tries to work out who the buyer is. It compares the current block with the block the pool was registered in, and only lets one caller through: the launcher, during the first buy, for that pool only. That is why a second wallet, a contract that launches and buys in one transaction, an EIP-7702 batch from the creator's own address, a different router and a direct call to the pool manager all fail the same way — each has a test in the repository.
On Arbitrum-style chains like Elysium the normal block number is the parent chain's and spans many L2 blocks, so the hook reads the real L2 block from the chain's ArbSys precompile.
Verify a launch
Every token page shows the launch block and the launch transaction at the bottom of its trades list, and the Protection page checks any address. The API returns the same:
GET /api/verify?q=0x…
{ "found": true, "launchBlock": 312801, "firstEligibleBlock": 312802, "b0Rejected": 2, "b0Landed": 0, "devBuy": { "supplyPct": 1.2, ... } }