Protocol Overview
Runner Protocol is a fair token launch platform on Solana, built around the Continuous Clearing Auction (CCA) mechanism originally designed by Uniswap Research. It provides trustless, on-chain price discovery that eliminates the timing games, front-running, and MEV extraction that plague existing token launch methods.
Architecture
Runner Protocol is composed of two on-chain programs that work together, plus an off-chain indexer for frontend data:
┌──────────────────────────────────────────────────────────┐
│ Launchpad Orchestrator │
│ 8zfW4iLA7JagfotwCn8FT3SpdzUyGQ7CRSzjMwmJyK6F │
│ │
│ Token-2022 mint ─► Escrow setup ─► CCA auction CPI │
│ Settlement pipeline ─► Raydium pool ─► Enable claims │
└────────────────────────┬─────────────────────────────────┘
│ CPI (Cross-Program Invocation)
▼
┌──────────────────────────────────────────────────────────┐
│ CCA V2 Engine │
│ F5DdorN9nawhpQJZkfLYx2SpcWxSTZnwh3ZRyNtXP5do │
│ │
│ Bidding ─► Tick linked list ─► Checkpoint clearing │
│ Settlement math ─► Exit bids ─► Claim tokens │
└────────────────────────┬─────────────────────────────────┘
│ CPI
▼
┌──────────────────────────────────────────────────────────┐
│ Raydium CPMM │
│ Permanent liquidity pool creation │
└──────────────────────────────────────────────────────────┘
Launchpad Orchestrator
The Launchpad program manages the full token launch lifecycle: creating Token-2022 mints with on-chain metadata, setting up escrow accounts, orchestrating the CCA auction via CPI, and executing the post-auction settlement pipeline (finalize, sweep proceeds, create Raydium pool, enable claims). It enforces protocol-level constraints like minimum auction duration, allowed quote mints, and token allocation bounds.
CCA V2 Engine
The CCA V2 program is the core auction engine. It implements the continuous clearing auction mechanism with Q96 fixed-point price math, a tick-based linked list for demand aggregation, checkpoint-based clearing price discovery, and lazy settlement using cumulative accumulators. It handles 13 instruction entry points covering auction initialization, bidding, checkpoint creation, bid exit, token claims, and currency/token sweeps.
Raydium CPMM
After a successful auction, the Launchpad creates a permanent Raydium CPMM liquidity pool seeded at the auction-discovered clearing price. LP tokens are burned on creation, making the liquidity irremovable.
On-Chain Account Types
CCA V2 Accounts
| Account | PDA Seeds | Purpose |
|---|---|---|
| AuctionConfig | ["cca_auction", authority, auction_id] | Immutable auction parameters (supply, prices, timing) |
| AuctionState | ["cca_state", auction_config] | Mutable live state (clearing price, demand, raised currency) |
| SupplySchedule | ["cca_supply", auction_config] | Step-based token release schedule (MPS rates per block) |
| Checkpoint | ["cca_checkpoint", auction_config, block] | Epoch snapshot with clearing price and settlement accumulators |
| Tick | ["cca_tick", auction_config, price] | Price-level node in the demand linked list |
| Bid | ["cca_bid", auction_config, bid_id] | Individual bid receipt tracking position and settlement |
Launchpad Accounts
| Account | PDA Seeds | Purpose |
|---|---|---|
| ProtocolConfig | ["cca_protocol"] | Global protocol settings (fees, limits, allowed mints) |
| LaunchConfig | ["cca_launch", creator, launch_id] | Per-launch configuration and settlement state machine |
| Token Mint | ["cca_token_mint", launch_config] | Token-2022 mint with MetadataPointer |
| Escrows | ["escrow", launch_config, type] | Five escrow accounts (auction, LP, team, proceeds, fee) |
Key Properties
| Property | Description |
|---|---|
| Fair pricing | Clearing price is the highest price where all released tokens can sell |
| Early participation rewarded | Bids placed earlier get exposure to more auction blocks at potentially lower prices |
| Non-withdrawable in-range bids | Bids above the clearing price cannot be withdrawn, preventing strategic manipulation |
| Mandatory mint authority renunciation | After settlement, no one can mint additional tokens |
| Permanent liquidity | LP tokens are burned, making the Raydium liquidity pool irremovable |
| Permissionless settlement | Every settlement step can be triggered by anyone (keeper bots, bidders, team) |
| PDA custody | All tokens and currency are held in program-derived accounts, not external wallets |
Current Status
Runner Protocol is currently deployed on Solana Devnet for testing and verification. It has not yet launched on mainnet. A professional security audit is planned but has not yet been completed.
| Component | Status | Details |
|---|---|---|
| CCA V2 | Devnet | Program ID: F5DdorN9nawhpQJZkfLYx2SpcWxSTZnwh3ZRyNtXP5do |
| Launchpad | Devnet | Program ID: 8zfW4iLA7JagfotwCn8FT3SpdzUyGQ7CRSzjMwmJyK6F |
| Indexer | Live | Railway deployment indexing both programs |
| Unit tests | 211 passing | CCA V2 Rust tests including 48 property-based (proptest) |
| Integration tests | 95 passing | CCA V2 (29) + Launchpad (29) + Indexer (36) |
| E2E lifecycle | 26 passing | Full auction lifecycle on local validator |
| Fuzz tests | 6 targets | 7.2M+ iterations, 0 crashes |
| Security review | Internal only | Multiple adversarial review rounds; professional audit pending |
Tech Stack
- Framework: Anchor 0.29.0
- Solana: solana-program 1.18, CLI 3.0.13
- Token standard: Token-2022 with MetadataPointer extension
- Math: Q96 fixed-point (2^96 scaling), U256 as
[u8; 32]little-endian - DEX integration: Raydium CPMM via raw
invoke_signed