Unipump Protocol Documentation
Unipump is a permissionless launchpad for memecoins on Ethereum, built on Uniswap v4 hooks. This document covers protocol architecture, deployed contracts, fee mechanics, and integration details for developers.
Overview
Every Unipump launch goes through a single Factory transaction that:
- Clones an immutable LaunchToken implementation via EIP-1167 minimal proxies
- Initializes the clone with a creator-supplied name and symbol
- Mints the entire 1,000,000,000 fixed supply
- Creates a Uniswap v4 pool for the token paired with ETH
- Adds 100% of the supply as single-sided full-range liquidity
- Burns the resulting LP NFT to
0x000000000000000000000000000000000000dEaD - Registers the pool with the Unipump FeeHook for perpetual fee collection
- Executes the creator's optional starter buy via the Universal Router
All steps happen atomically in one transaction. There is no graduation, no bonding curve, no migration step.
Deployed Contracts
Ethereum Mainnet (chain ID 1)
| Contract | Address |
|---|---|
| LaunchToken implementation | 0xd5963478a44f7EcFa97C7e78AC2f7907e38611A6 |
| FeeHook | 0xEDC3A1688b151C69a353F39fb2ba7Ef2D7002044 |
| Factory | 0x610cA3907d02031d0B584eE9a167Ab922bC67B7E |
Platform wallet (immutable, receives platform-side fees): 0x1298975086908FA8eAB165d4e30892e3Df60C9CE
All three contracts are verified on Etherscan. Tokens launched through the Factory are deployed as EIP-1167 clones of the LaunchToken implementation; Etherscan auto-detects them as minimal proxies and displays the implementation source.
Token Parameters
Every token launched on Unipump has identical fundamentals:
- Total supply: 1,000,000,000 (1 billion), fixed
- Decimals: 18
- Mintable: No, the entire supply is minted at launch
- Burnable: No
- Pausable: No
- Upgradeable: No
- Owner: None — the token has no admin
The only creator-configurable parameters are the name, symbol, and the per-pool fee in basis points (between 50 and 1000, i.e. 0.5% to 10%).
Pool Configuration
| Parameter | Value |
|---|---|
| AMM | Uniswap v4 |
| Pool currencies | ETH (currency0) + token (currency1) |
| Tick spacing | 60 |
| Initial tick | 207240 |
| Liquidity range | Full range |
| Liquidity provider | Factory at launch, then nobody (LP NFT burned) |
| Hook | Unipump FeeHook (singleton) |
| Hook permissions | `BEFORE_INITIALIZE |
The starting price is determined by the initial tick. With the 1B supply at tick 207240, every fresh launch starts at approximately $2,310 fully-diluted market cap (subject to ETH price).
Fees
Unipump collects two distinct fees.
Launch Fee
A flat 0.002 ETH per launch, paid by the creator at the time of the launch transaction. Routed directly to the platform wallet.
Trading Fee (Hook Fee)
Set per-pool by the creator at launch. Range: 50 to 1000 basis points (0.5% to 10%). Default in the UI: 100 bps (1%).
This fee is collected by the FeeHook during afterSwap from the swap's unspecified output currency. The collected amount is split 60/40 between the creator and the platform.
| Recipient | Share |
|---|---|
| Creator | 60% of the trading fee |
| Platform | 40% of the trading fee |
The split is constant across all pools and cannot be changed.
Fee Currencies
The fee always comes from the unspecified side of a swap:
- Buy (exact-input ETH → token): fee is denominated in the token
- Sell (exact-input token → ETH): fee is denominated in ETH
- Exact-output swaps: fee is denominated in whichever currency the user did not fix
This means each pool accumulates fees in both currencies over time.
Claiming
Fees accumulate in the FeeHook contract until claimed.
Creators claim via:
function claimCreatorFees(
bytes32 poolId,
address currency,
address recipient
) external
currency = 0x0000...0000 claims the ETH side. Passing the token address claims the token side. recipient = 0x0000...0000 routes payment to the caller (the creator). Only the registered creator can call.
Platform fees are swept via:
function sweepPlatformFees(
bytes32 poolId,
address currency
) external
This function is permissionless — anyone can pay the gas — but the destination is hardcoded to the immutable platform wallet, so funds always end up in the right place.
Architecture
Factory
The Factory is the only contract creators interact with directly. It exposes:
function createToken(
string calldata name,
string calldata symbol,
uint16 hookFeeBps,
uint256 devBuyMinOut
) external payable returns (address token, bytes32 poolId)
msg.value covers the launch fee plus any optional starter buy amount. Emits TokenLaunched(address token, address creator, string name, string symbol, uint16 hookFeeBps, bytes32 poolId, ...).
LaunchToken
A minimal OpenZeppelin ERC-20 with a fixed 1B supply. Deployed as an EIP-1167 clone per launch. The master implementation is locked using a sentinel pattern so it can never be initialized directly.
Name and symbol are stored as overrides because the underlying OpenZeppelin ERC-20 takes them as constructor arguments and clones share constructor state with the implementation.
FeeHook
A singleton Uniswap v4 hook used by every Unipump pool. Responsible for:
- Validating that the pool is registered (rejects unregistered pools at
beforeInitialize) - Skimming the trading fee from the unspecified swap output during
afterSwap - Splitting the fee 60/40 and crediting the per-pool, per-currency mappings
- Allowing creators to claim their share and the platform to sweep its share
The FeeHook address itself encodes the required hook permission flags in its lowest 14 bits — this is enforced by the Uniswap v4 protocol. Mining the address with the correct flags is part of the deployment script.
Storage Layout
Two key mappings:
mapping(PoolId => mapping(Currency => uint256)) public creatorFees;
mapping(PoolId => mapping(Currency => uint256)) public platformFees;
Both are public and readable. The profile and claim pages query them directly to display pending balances.
Events
For indexers and integrations:
// Factory
event TokenLaunched(
address indexed token,
address indexed creator,
string name,
string symbol,
uint16 hookFeeBps,
bytes32 poolId
);
// FeeHook
event PoolRegistered(
bytes32 indexed poolId,
address indexed creator,
uint16 feeBps
);
event FeesAccrued(
bytes32 indexed poolId,
address indexed currency,
uint256 creatorAmount,
uint256 platformAmount
);
event CreatorFeesClaimed(
bytes32 indexed poolId,
address indexed currency,
address indexed recipient,
uint256 amount
);
event PlatformFeesClaimed(
bytes32 indexed poolId,
address indexed currency,
uint256 amount
);
Integration Notes
Trading Unipump Tokens
Any Uniswap v4 interface or aggregator that supports custom hooks can route swaps through Unipump pools. The pool's PoolKey is:
currency0:0x0000000000000000000000000000000000000000(ETH)currency1: the token addressfee:0x800000(dynamic / hook-controlled)tickSpacing:60hooks: the Unipump FeeHook address
The official Uniswap interface at app.uniswap.org supports v4 pools natively.
Reading Fee Balances
To check pending creator fees for a given pool and currency:
uint256 ethClaimable = feeHook.creatorFees(poolId, address(0));
uint256 tokenClaimable = feeHook.creatorFees(poolId, tokenAddress);
To check pending platform fees: same call against platformFees.
Indexing
The reference indexer is built with Ponder and listens for TokenLaunched from the Factory. Source for the public indexer is open and can be deployed against any RPC.
Compiler and Build Settings
| Setting | Value |
|---|---|
| Solidity version | 0.8.30 (LaunchToken, Factory), 0.8.26 (FeeHook) |
| EVM version | cancun |
| Optimizer | enabled, 1,000,000 runs |
| viaIR | true |
| Errors | custom errors only (no string reverts) |
These settings match what's verified on Etherscan.
Security Posture
- No admin keys. No contract has an owner, pauser, or upgrader.
- No proxy upgradeability. The LaunchToken master is the only proxy pattern (EIP-1167 minimal proxies for clones), and minimal proxies are not upgradeable.
- Immutable parameters. Platform wallet, fee split, and pool configuration are all constructor-immutable.
- Locked LP. Initial LP NFT is burned to
0xdEaD. - Pull-based claims. Funds never auto-push out of the FeeHook — claims are explicit, reducing reentrancy and griefing surface.
A formal third-party audit is in progress before public mainnet announcement.
Links
- App: https://unipump.fund
- Twitter: https://x.com/unipumpfund
- Etherscan (Factory): https://etherscan.io/address/0x610cA3907d02031d0B584eE9a167Ab922bC67B7E
Disclaimer
Smart contracts carry risk. The Unipump team makes no guarantees about the value, performance, or behavior of any token launched through the protocol. Use at your own risk.
