Blog
Engineering notes from Countdown Family
Design decisions, corrections, and field notes from building a launchpad on Robinhood Chain. Every post describes code that is in the repository, including the mistakes.
block.number on Robinhood Chain is Ethereum’s. We measured it, and here is what changed.
Before sending the contracts to mainnet we checked an assumption the launch window rested on. It was wrong by 41 million blocks. The token now measures its window in L2 blocks, a router loophole is closed, and the factory is no longer 945 bytes over the size limit.
Introducing Countdown Family: a launchpad with nothing to migrate
One transaction deploys a token into a permanently locked Uniswap V3 position on Robinhood Chain. No bonding curve, no graduation migration, no liquidity anyone can withdraw. Here is what that means and why we built it this way.
Why we dropped the bonding curve
We shipped a constant-product bonding curve with anti-snipe tax, TWAP caps, and an atomic migration to a V2 pool. Then we deleted it from the code path. A post-mortem on a design that worked and still lost.
The creator’s opening buy is not capped. We said otherwise. Here is the correction.
Our UI, our docs and our internal notes all said the creator could take at most 5% of supply at launch. A fork test proved the contract does the opposite. What the code actually does, why, and what we changed.
No mock data: how every number on the site gets a block number
We deleted every seed file, every growth engine and every random walk. What is left is an indexer with two rules it will not bend, a price chart that goes flat when nothing trades, and a volume figure that is honestly a count.
Slippage floors come from the quoter, not the chart
Deriving a minimum output from the displayed price reverts every large trade on a steep curve. Why the swap panel simulates Quoter V2 for every quote, and how sells unwrap to ETH with the floor on the unwrap.
Fees you can only see by trying to take them
Uniswap V3 has no view for a position’s pending fees. The profile page shows them anyway, by simulating collectFees against the current block. On the difference between “zero” and “already paid”, and why the split is snapshotted.
Two blocks: what the launch window actually protects
Per-wallet caps cannot stop a sniper with a hundred wallets. Block numbers can. A walk through the token’s transfer hook, the launch-block lockout, and the one exemption.
Building on Robinhood Chain: rate limits, viaIR, and 600 bytes
Field notes from putting a Uniswap V3 launchpad on an Arbitrum Orbit chain: a public RPC that 429s eth_blockNumber, a factory that would not compile without viaIR, a contract 600 bytes over the limit until shanghai, and no testnet to rehearse on.