Liquidity Launcher is a comprehensive launch system built on Uniswap v4 that facilitates token creation, distribution, and liquidity bootstrapping.
Liquidity Launcher provides a streamlined approach for projects to:
- Create new ERC20 tokens with extended metadata and cross-chain capabilities
- Distribute tokens through customizable strategies
- Bootstrap liquidity using price discovery mechanisms
- Deploy automated market making pools on Uniswap v4
The primary strategy is a Liquidity Bootstrapping Pool (LBP) that combines a price discovery auction with automated liquidity provisioning that delivers immediate trading liquidity.
The repository also includes several direct strategies:
InstantLaunchStrategylaunches a fixed-supply token directly into a hookless native-ETH v4 pool as a single-sided position, permanently locked in theFeeSplitterfor permissionless fee distribution.UniversalRouterStrategyruns a caller-supplied Universal Router route, so a launch and a buy fit in one transaction.TokenSplittersplits a distribution across N recipients without taking custody.MerkleClaimFactorydeploys and funds aMerkleClaim(Uniswap's audited merkle distributor) for claim-based distributions.
See the Technical Reference for configuration, lifecycle, and trust assumptions.
This project uses Foundry for development and testing. To get started:
# Clone the repository with submodules
git clone --recurse-submodules <repository-url>
cd token-launcher
# If you already cloned without submodules
git submodule update --init --recursive
# Install Foundry (if not already installed)
curl -L https://foundry.paradigm.xyz | bash
foundryup
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup
# Build the project
forge build
# Build rust project
./script/build_rust.sh
# Run tests
forge test
# Run the LBP strategy suite
forge test --match-path 'test/strategies/lbp/**/*.sol'Most tests run locally. The periphery position-recipient tests fork mainnet and require:
QUICKNODE_RPC_URL— an Ethereum mainnet RPC endpoint for fork testing
LBP distributions can configure a Uniswap v4 hook through MigratorParameters.poolParameters.hook. Any nonzero hook MUST inherit InitializerHook, which gates beforeInitialize so only the singleton LBPStrategy can initialize the committed pool; the strategy verifies this via ERC165 during initializeDistribution. GatedSwapHook already inherits InitializerHook.
If hook is address(0) (static-fee pools only), the migration destination is state-dependent: migration prefers the canonical hookless pool, but falls back to the strategy-hooked pool (..., address(strategy)) if the hookless key was already initialized. Integrators should resolve the actual pool key from the Migrated event rather than assuming address(0). See the Deployment Guide for details.
Canonical contract addresses by chain and version. Cross-references link to related deployments elsewhere in this section.
Prior deployment addresses are retained for reference, marked deprecated, in the Deployment Guide.
Deployed to the same address on all networks that use the canonical Permit2 deployment (0x000000000022D473030F116dDEE9F6B43aC78BA3).
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.0.0 | 0x00004c4ccc709Ef590F7C81102C0689F0263D4e9 |
3a3103543f50a13a0ae52a253bb98a925d72146f |
|
| v3.2.0 | Robinhood Chain | 0x0000FffFBE8efE702c8703aE3477FF5dE3d319C0 |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to a different address on each chain. Must be deployed to a valid v4 hook address.
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.1.0 | Mainnet | 0x49380c4EfaB1b491006aF7FabAB8B3459F0E6000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Base | 0x34385dD739FE5464892BF0bA4CC42492804dA000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Unichain | 0x298eA05D0356B2Ae5cCAa3169E471783ee9EA000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Arbitrum | 0x8Af0775a70Cc94D71DFc0fE809435e833F2Fe000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.1 | Robinhood Chain | 0x05d552391067389EE44fec3924157ed33F976000 |
5ef0262b8e191360a212aac864a525dcf7a06605 |
| v3.1.0 | Avalanche | 0x57BD0A9Cd933c89Ba55e086D53031367b6406000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | XLayer | 0x58DF162fF41e5cB42B8515f75F90C1841938A000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Ink | 0xd749FAe4D01E8fd85B9e26555cB300018aFEA000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Sepolia | 0x96641d91e223c766F45b19d09494F5925C3cE000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
| v3.1.0 | Base Sepolia | 0xB06428b62c259eE982cE3D9BED47391dC9A5E000 |
873cbb23c5019a795193c5ad561edff2f78ba5a3 |
Deployed to a different address on each chain. Multiple versions may exist; each pins to a specific Fee Splitter.
| Version | Chain | Address | Fee Splitter | Commit Hash |
|---|---|---|---|---|
| v3.2.0 | Robinhood Chain | 0x23f8209572b4a1C2AD88A42749E830791Fb027f1 |
0xeFF166AAf189323c58dc27eD1206EB2C37FaACDf |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
| v3.2.0 | Robinhood Chain | 0xAD44D55E7f8337C3cE113fBb591486E85be104b2 |
0x222D6d4f1ce59b0d48D5505114eC8Addc90A4359 |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to a different address on each chain. Runs a caller-supplied Universal Router route so a launch and a buy can fit in one transaction.
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.2.0 | Robinhood Chain | 0x1242c9439d589cAE85E121B1f79f2aF51e91DCEE |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to the same address on all networks.
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.0.0 | 0x8B7DCeb5639DB986FCf86606C74e6300C40FE3cd |
3a3103543f50a13a0ae52a253bb98a925d72146f |
|
| v3.2.0 | Robinhood Chain | 0x4F5E3FBb9745358A92Da5674305FAb8D2B8a73cE |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed per chain with immutable fee splits. Multiple deployments may exist on the same chain.
| Version | Chain | Address | Fee Splits | Commit Hash |
|---|---|---|---|---|
| v3.2.0 | Robinhood Chain | 0xeFF166AAf189323c58dc27eD1206EB2C37FaACDf |
UERC20BeneficiaryVault: 40% native ETH; CompoundingClaimRecipient: 60% native ETH, 100% token | dd8769cd45c0e9450e928513ee129b0af74f7f32 |
| v3.2.0 | Robinhood Chain | 0x222D6d4f1ce59b0d48D5505114eC8Addc90A4359 |
CompoundingClaimRecipient: 100% native ETH, 100% token | dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to a different address on each chain. Distributes and attributes creator fees.
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.2.0 | Robinhood Chain | 0xd35E9CA72F64C7F93BE30fad67524323396B36D7 |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to a different address on each chain. Permissionlessly compounds LP fees into liquidity.
| Version | Chain | Address | Commit Hash |
|---|---|---|---|
| v3.2.0 | Robinhood Chain | 0xf9526Dd3361fe0ba6b7a99533ed471D3E808E99a |
dd8769cd45c0e9450e928513ee129b0af74f7f32 |
Deployed to a different address based on parameters. Releases funds in exchange for burning a fixed token amount.
| Version | Chain | Parameters | Address | Commit Hash |
|---|---|---|---|---|
| v3.2.0 | Robinhood Chain | minCurrency1Amount: 500_000e18 |
0xa1ba4CC12654D2b188e3ba77dc86c75cA47f1A4e |
0b5ee0527af94a8c635b6af5b334a7d17c5ed719 |
Deployed to a different based on parameters. Claims and distributes tokens over time.
| Version | Chain | Parameters | Address | Commit Hash |
|---|---|---|---|---|
| v3.2.0 | Robinhood Chain | maxCurrency0PerBlock: 125000000000000, maxCurrency1PerBlock: 50000000000000000000000, recipient: BuybackAndBurnRecipient |
0xeF451B293ED8C61d20f7d13ef336a496F0cc2c26 |
0b5ee0527af94a8c635b6af5b334a7d17c5ed719 |
Restricts pool initialization to a deployed LBPStrategy instance.
| Version | Chain | Address | LBPStrategy | Salt | Commit Hash |
|---|---|---|---|---|---|
| v3.1.1 | Robinhood Chain | 0xD462a559337859369EF271814851A18F496ba000 |
0x05d552391067389EE44fec3924157ed33F976000 |
0x0000000000000000000000000000000000000000000000000000000000002dcb |
5ef0262b8e191360a212aac864a525dcf7a06605 |
| Date | Auditor | Report |
|---|---|---|
| 2026-01-23 | OpenZeppelin | v2.0.0 |
| 2026-01-21 | Spearbit | v2.0.0 |
| 2025-10-27 | Spearbit | Cantina |
| 2025-10-20 | ABDK Consulting | v1.0 |
| 2025-10-01 | OpenZeppelin | v1.0 |
The files under src/ are covered under the Uniswap Labs bug bounty program on Cantina, subject to scope and other limitations.
This repository is licensed under the MIT License. See LICENSE for details.