Documentation
Moonshoot
Access New Wealth
Moonshoot Phase 1 runs on Uniswap Liquidity Launcher, Continuous Clearing Auction (CCA), and Full Range LBP. Every successful campaign seeds a Uniswap v4 liquidity pool.
Why ownership distribution
Traditional growth buys temporary attention. Moonshoot creates an ownership relationship: participants contribute an asset they already hold and receive ownership in another asset.
Ownership is a more powerful distribution mechanism than advertising.
Campaign model
Every campaign has two assets. The distribution token is what participants receive; the contribution token is what they deposit.
Distribution Token
PROJECT
The token offered by the project and received by participants after graduation.
Target Token
COMMUNITY
The token participants contribute — often a community or creator coin.
Campaign pair
PROJECT × COMMUNITY
Contribute COMMUNITY · Receive PROJECT
Who participates
Project
- Goal
- Acquire new holders and reach a target community.
- Contributes
- Distribution tokens (existing ERC-20).
- Receives
- Cross-community liquidity and builder proceeds after graduation.
Participant
- Goal
- Discover assets and receive ownership using tokens they already hold.
- Contributes
- Contribution token with a max acceptable price.
- Receives
- Distribution tokens if the campaign graduates.
Target community
- Goal
- Create utility for their token as a contribution asset.
- Contributes
- Their holders as the audience for the campaign.
- Receives
- Demand for their token; partner revenue is Phase 2+ only.
How a campaign works
- 01
Project launches a campaign
An existing ERC-20 is distributed via Uniswap Liquidity Launcher and the Full Range LBP strategy. Campaign pair format is PROJECT × COMMUNITY.
- 02
CCA discovers a clearing price
Participants contribute a raise currency and set a max price. Supply releases over blocks; the auction finds a uniform clearing price with demand rollover.
- 03
Campaign graduates or fails
Graduation requires currencyRaised ≥ requiredCurrencyRaised. If it fails, participants recover full contributions via exitBid().
- 04
Participants claim allocation
After claimBlock, graduated campaigns allow claimTokens() for distribution tokens. Unused contribution tokens are returned.
- 05
Liquidity migrates to Uniswap v4
Raised currency and reserved distribution tokens seed a v4 pool at migrationBlock.
Campaign config
Create Campaign asks for three inputs only: Distribution Token, Distribution amount, and Target Token. Everything else follows Uniswap Liquidity Launcher Quick Launch defaults.
Duration
4 hours, starts immediately
Auction / LP split
50% auctioned · 50% reserved for LP
Raised → LP
100% of raised currency seeds the pool
Pool fee
0.25% (Uniswap v4)
Floor FDV
~$1,000
Graduation FDV
~$10,000 (~$5,000 raise at 50% sold)
Emission
Convex curve · ~30% in the final block
Migration
1 block after auction end
Campaign lifecycle
Upcoming
Campaign is configured; bidding opens at startBlock.
Live
Participants join by contributing the raise currency on CCA.
Ended
Auction closed; graduation result is determined on-chain.
Graduated
Clearing price set; claim opens after claimBlock.
Migrated
Uniswap v4 pool is live; trade the pair on Uniswap.
Failed
Goal not met; participants exit bids for a full refund.
FAQ
What is a campaign pair?
Every Moonshoot campaign is written PROJECT × COMMUNITY — distribution token first, contribution token second.
What do I enter to create a campaign?
Only three fields: Distribution Token, Distribution amount, and Target Token. Schedule, pricing, LP split, and emission use Uniswap Quick Launch defaults — see Campaign config below.
What happens if the campaign does not graduate?
The auction fails. Participants exit their bids and recover 100% of committed contribution tokens.
Do I pay my max price?
No. CCA uses a uniform clearing price. You only pay the clearing price for tokens allocated to you.
What's next
- Phase 2 — Community profiles, allowlists, partner analytics.
- Phase 3 — Concentrated LP positions, custom v4 hooks, fee sharing.
- Phase 4 — New token issuance via LiquidityLauncher.createToken.
