An Ethereum IDO launchpad is a set of Solidity contracts that sell a new ERC-20 token for ETH or stablecoins, allocate it fairly, vest it, and seed liquidity on a DEX. Ethereum has the most mature tooling and auditing ecosystem for this, but mainnet gas costs and MEV shape every design choice, which is why many launchpads now run on Ethereum layer 2s.
Mainnet or layer 2
A sale where thousands of users each pay mainnet gas to register, contribute, and claim can cost participants more in fees than small allocations are worth. Rollups such as Arbitrum, Optimism, Base and ZKsync Era run the same Solidity code at a fraction of the cost, inherit Ethereum's security model to varying degrees, and have active DEXs for listing. A common pattern is to issue the token on Ethereum mainnet for credibility and deep liquidity, then run the sale on an L2 with a canonical bridge, or to launch natively on an L2 where your community already is. The trade-offs are covered in the layer 2 scaling explainer.
The contract set
| Contract | Purpose | Ethereum building blocks |
|---|---|---|
| Token | The project's ERC-20 | OpenZeppelin ERC-20 with EIP-2612 permit; avoid owner mint functions |
| Staking / tiers | Lock a platform token to earn allocation weight | Snapshot by block or time-weighted balance to stop last-minute staking |
| Allow-list | Who may contribute and how much | Merkle root of (address, cap) or EIP-712 signed allocations from a KYC backend |
| Sale | Accept contributions, enforce caps and windows, refunds | Pull-based refunds; SafeERC20 for stablecoins; reentrancy guards |
| Lottery (optional) | Random winners among registrants | Verifiable randomness such as Chainlink VRF, never block hashes |
| Vesting / claim | Release tokens over time | Cliff and linear schedules; Merkle-based claims for large user sets |
| Liquidity lock | Prove LP tokens or positions cannot be pulled | Time-locked contract holding Uniswap LP tokens or v3/v4 position NFTs |
The token itself is covered in the Ethereum token guide; the general engineering practices in Ethereum smart contract development.
Allocation without gas wars
First-come-first-served sales on Ethereum turn into priority-fee auctions that bots win. Better patterns:
- Overflow sales, where everyone commits during a window and allocations are scaled pro rata, with refunds claimable afterward.
- Batch auctions, where bids are collected and a single clearing price is computed at the end, so ordering within the window does not matter.
- Liquidity bootstrapping pools on Balancer, where token weight starts high and declines, so price falls unless demand supports it, which discourages bots buying early.
- Signed allocations tied to KYC, so one person cannot claim many allocations through many wallets.
Launch-day MEV and sniping
When a pool is created, bots watch the mempool and buy in the same block, then sell into retail demand. Defenses include adding liquidity and enabling trading in separate steps with a short delay, submitting the liquidity transaction through a private relay so it is not visible in the public mempool, per-wallet limits during the first minutes, and, on Uniswap v4, hooks that impose launch-time rules such as dynamic fees. None is perfect; be honest with your community about what you have and have not prevented.
Security checklist
- No privileged function can mint tokens, change vesting, or withdraw contributions outside documented rules.
- Admin roles held by a multisig, with a timelock for parameter changes.
- Contracts not upgradeable after the sale, or upgradeable only through a timelocked, publicly visible process.
- Fuzz and invariant tests: total claimed never exceeds total sold; refunds plus allocations equal contributions.
- An independent audit of the final deployed code, with the audited commit hash published.
Cost and timeline drivers
As a reasoned estimate, an Ethereum or L2 launchpad built from well-known open-source components, with tiers, overflow sale, vesting, KYC integration and a web app, takes two to four months for two or three engineers plus an audit. A Dutch-auction or batch-auction mechanism, multiple L2 deployments, or a custom staking token adds weeks and audit scope. Sale formats and vetting are covered in the launchpad buyer's guide.
Frequently asked questions
Is it worth launching on Ethereum mainnet?
For large raises with sophisticated participants, perhaps. For community sales with small tickets, an L2 usually serves users better because fees would otherwise eat their allocations.
How do I stop one person using many wallets?
Tie allocations to KYC-verified identities through signed or Merkle-based allow-lists. Staking requirements help, but well-funded actors can split stakes.
What is an LBP?
A liquidity bootstrapping pool is a weighted AMM pool whose weights shift over time, pushing price down unless buyers step in. It is used for price discovery and to discourage bots.