Smart Contracts
Solidity 0.8.24, Cancun EVM, Hardhat + OpenZeppelin UUPS proxies. Tokens launch directly into Uniswap V3 — no bonding curve and no graduation step.
Architecture
Platform owners configure fees and branding. Creators call Factory to mint a MemeToken and seed a Uniswap V3 pool in one transaction. Registry records every launch; the adapter holds the LP NFT permanently.
Governance & config
Multi-platform fees, treasuries, pause flags, and role-based access control.
Launch path
Factory deploys the token, registers it, and routes liquidity to the adapter.
DEX liquidity
Creates the pool, adds full-range liquidity, and harvests LP fees for platform + creator.
PlatformConfig
RBAC · fees · pause
Factory
deploys + seeds
MemeToken
ERC-20 · 1B supply
V3 Adapter
pool + locked LP
Registry
on-chain index
PlatformConfig
HubRBAC, platform branding, fee bounds, treasuries, stats, and emergency pause.
Factory
DeployercreateToken deploys MemeToken, pays the 0.001 ETH protocol fee, and seeds the V3 pool.
UniswapV3Adapter
LiquidityILiquidityAdapter: create pool, mint full-range position, harvest LP fees. No withdraw.
Registry
TrackingStores launch metadata, creator mappings, and the direct pool address per token.
MemeToken
ERC-20Fixed 1B supply with metadata (image, socials). Ownership transferred to the creator.
Treasury
OptionalSimple pauseable ETH/ERC-20 vault for protocol or platform fund management.
Launch flow
Pay creation fee + pool ETH
msg.value must exceed 0.001 ETH. Excess ETH becomes pool liquidity alongside tokensForPool.
Deploy MemeToken
Factory mints the full 1B supply; creator is recorded on the token.
Register on-chain
Registry stores the launch with bondingCurve = address(0) (direct launch marker).
Split supply
tokensForPool go to the adapter; remaining tokens go to the creator who also receives ownership.
Seed Uniswap V3
Adapter creates the pool at the platform’s lpFee tier and locks full-range liquidity.
Finalize
Registry stores the pool address; PlatformConfig stats increment (creation + graduated).
Contract addresses
| Contract | Mainnet (4663) |
|---|---|
| PlatformConfig | 0x6c3a5ce27A9410821554F45fbB6871634f6049C4 |
| Factory | 0x275610476E3Cb10a6E627dC5C75cd05e1258AE6C |
| Registry | 0x2Dc20ab72d1645b396990D9d26092Ed2AEd762df |
| UniswapV3Adapter | 0xD156063048E44a99357C78D0053043b192D60f1A |
| SwapRouter | 0xCaf681a66D020601342297493863E78C959E5cb2 |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 |
Import programmatically from the SDK:
import { CONTRACT_ADDRESSES, getAddressesForChain } from "launch-robin/constants";
const addr = getAddressesForChain(4663);Factory.sol
Minimal UUPS factory. Initializes with PlatformConfig, then one-time setRegistry / setAdapter. Creation fee is a fixed 0.001 ether sent to the protocol treasury.
createToken
function createToken(
bytes32 platformId,
string name, string symbol, string description, string imageUri,
string website, string twitter, string telegram, string discord,
uint256 tokensForPool // wei amount seeded into the V3 pool
) external payable returns (address token, address pool)Requires msg.value > TOKEN_CREATION_FEE. Respects global and per-platform pause. Returns the token and Uniswap V3 pool addresses.
UniswapV3Adapter.sol
Implements ILiquidityAdapter. Creates the V3 pool, mints a full-range NFT position held by the adapter, and exposes harvest for accrued LP fees.
- Pool fee tier — from the platform's
lpFee(0.5% / 1% / 2.5%). - LP fee split — creator share (
creatorShareBps) → creator; remainder → platform treasury. - Locked liquidity — no withdraw path; LP NFT stays with the adapter.
Fee model
The protocol earns the flat creation fee at launch. Trading economics live in the Uniswap pool (LP fee tier). Platform owners configure lpFee and creatorShareBps within global caps on PlatformConfig.
PlatformConfig.sol
Central RBAC and configuration hub. UUPS + OpenZeppelin AccessControlUpgradeable.
Structures
| Struct | Fields |
|---|---|
| Branding | name, logoUri, website, twitter, telegram, discord, docUrl, supportUrl, description |
| Fees | creationFee, tradingFeeBps, lpFee, creatorShareBps |
| Stats | totalTokens, graduatedTokens, tradingVolume, totalFees, creatorRewards, protocolRewards, liquidityCreated, creationCount |
Fee limits
| Limit | Default | Meaning |
|---|---|---|
maxLpFee | 25000 | Max 2.5% Uniswap fee tier (must be 5000, 10000, or 25000) |
maxCreatorShareBps | 5000 | Max 50% of harvested LP fees to creator |
Registry.sol
On-chain registry of all launches, creators, and pool addresses.
| Function | Role |
|---|---|
registerToken(...) | Factory-only insert of launch metadata |
setDirectPoolAddress(token, pool) | Stores the V3 pool after seeding |
getLaunch(token) | LaunchInfo for a token |
getCreatorTokens(creator) | Tokens launched by an address |
getAllLaunches() | Full launch list |
MemeToken.sol
Standard OpenZeppelin ERC-20 with fixed supply and extended metadata.
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 * 10**18; address public immutable creator; uint256 public immutable creationTimestamp; // Plus: description, imageUri, website, twitter, telegram, discord
Roles & access control
| Role | Holder | Powers |
|---|---|---|
| DEFAULT_ADMIN_ROLE | Protocol owner | Global pause, fee boundaries, core wiring, UUPS upgrades |
| PLATFORM_OWNER_ROLE | Per-platform | Update fees/treasury, pause platform, manage admins |
| PLATFORM_ADMIN_ROLE | Per-platform | Update branding |
| TREASURY_MANAGER_ROLE | Per-platform | Manage fee claims / withdrawals |
Platform roles are derived: keccak256(abi.encodePacked("ROLE_NAME", platformId))
Events
| Event | Emitted by | Notes |
|---|---|---|
TokenCreated | Factory | token, creator, name, symbol |
DirectPoolCreated | Registry / flow | token ↔ V3 pool binding |
LiquidityPermanentlyLocked | Adapter | LP NFT held by adapter |
PlatformRegistered | PlatformConfig | platformId, owner, treasury |
PlatformFeesUpdated | PlatformConfig | lpFee, creatorShareBps, … |
UUPS upgradeability
PlatformConfig, Factory, Registry, and UniswapV3Adapter use UUPS proxies. Upgrades require DEFAULT_ADMIN_ROLE. Hold upgrade keys in a multisig for production.