Skip to content

Commit 1aa44b6

Browse files
authored
initial fixes
1 parent 3b352ac commit 1aa44b6

File tree

2 files changed

+45
-79
lines changed

2 files changed

+45
-79
lines changed

docs/contracts/liquidity-launchpad/01-introduction.md

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@ The Uniswap Liquidity Launchpad is a comprehensive framework for bootstrapping i
1414
2. **Liquidity Bootstrapping** - Automatically seed Uniswap V4 pools with auction proceeds at the discovered price
1515
3. **Token Creation** (Optional) - Deploy new ERC-20 tokens with rich metadata and optional cross-chain capabilities
1616

17-
Unlike traditional approaches that rely on centralized market makers or expose participants to timing games and manipulation, the Uniswap Liquidity Launchpad provides a decentralized, mechanism-design-driven approach for establishing deep, sustainable liquidity from day one.
17+
Unlike traditional approaches that rely on centralized market makers or expose participants to timing games and manipulation, the Uniswap Liquidity Launchpad provides an open mechanism for boostrapping deep liquidity on decentralized exchanges.
1818

19+
The system is composable - it is not limited to the intial set of implementation contracts. Other auction and LBPStrategy implementations are welcome!
1920

2021
### Key Benefits
2122

2223
- **Fair Price Discovery** - Continuous clearing auctions eliminate timing games and establish credible market prices
2324
- **Immediate Deep Liquidity** - Seamless transition from price discovery to active Uniswap V4 trading with substantial initial depth
2425
- **Permissionless** - Anyone can bootstrap liquidity or participate in price discovery without gatekeepers
25-
- **Transparent** - All parameters set upfront; real-time visibility into price discovery progress
26+
- **Transparent** - All parameters are immutable after they are set
2627
- **Composable** - Modular architecture supports multiple auction formats and distribution strategies
2728
- **Gas Efficient** - Optimized implementations using Permit2, multicall, and efficient data structures
2829

@@ -40,50 +41,51 @@ Each component is designed to be composable and extensible, allowing you to cust
4041

4142
![Token Launcher Architecture](./images/TokenLauncherOverview.png)
4243

43-
### Typical Liquidity Bootstrapping Flow
44+
### Example Flow
4445

45-
The liquidity bootstrapping process follows a straightforward sequence from price discovery to active trading:
46+
The following is a high level overview of how the [LBP Strategy Basic](https://github.com/Uniswap/liquidity-launcher) contracts interface and work with the [Continuous Clearing Auction](https://github.com/Uniswap/continuous-clearing-auction/).
4647

47-
1. **Prepare Token** (Optional)
48-
49-
Launch a new token using `LiquidityLauncher.createToken()` via the factory, which deploys a UERC20 or UERC20Superchain token and mints the initial supply to the launcher. Alternatively, use an existing token and approve the launcher to distribute it.
48+
The following actions must be performed atomically within one transaction.
5049

51-
2. **Configure Liquidity Bootstrap**
52-
53-
Set up your bootstrapping parameters:
54-
- **Auction parameters**: Supply release schedule, price floor, duration & timing, and graduation threshold
55-
- **Pool parameters**: Token split (max 50% to auction), fee tier & tick spacing, migration delay, and optional hooks
50+
1. **Prepare Token** (Optional)
5651

57-
3. **Start Price Discovery**
52+
Launch a new token using `LiquidityLauncher.createToken()` via the [UERC20Factory](https://github.com/Uniswap/liquidity-launcher/blob/96860d8239785e717cff1e4189643b9acee925ff/src/token-factories/uerc20-factory), which deploys a UERC20 or UERC20Superchain token and mints the initial supply to the launcher. Alternatively, use an existing token and approve the launcher to distribute it.
5853

59-
Call `LiquidityLauncher.distributeToken()` to allocate tokens to the LBP Strategy. This deploys a CCA auction with the allocated tokens, and price discovery begins as participants submit bids.
54+
2. **Deploy Strategies**
6055

61-
4. **Fair Price Discovery**
56+
Call `LiquidityLauncher.distributeToken()` to deploy a new LBPStrategy instance via factory. The strategy will validate that the auction parameters and eventual pool configuraiton are valid, and if so, it will deploy a CCA auction with the desired amount of tokens to sell. The `LiquidityLauncher` contract will transfer tokens to the LBPStrategy and then they will be transferred into the auction.
6257

63-
As bids arrive, the auction continuously clears orders with automatic bid spreading, ensuring a uniform clearing price and real-time transparency for all participants. This establishes the fair market price for the token.
58+
We use an optimistic transfer then call pattern throughout the contracts to trigger an action after performing an ERC20 transfer.
6459

65-
5. **Auction Completion**
60+
3. **Auction Completion**
6661

67-
When the auction ends, the system checks if the graduation threshold was met. If graduated, the process proceeds to liquidity migration. If not, all bidders receive refunds.
62+
When the auction ends, all of the raised funds will be swept to a specified `fundsRecipient`. The LBPStrategy will ensure that it is the recipient of both the raised funds and any leftover unsold tokens.
6863

69-
6. **Liquidity Deployment**
64+
The LBPStrategy will also read the following data from the `IAuction` interface:
65+
```solidity
66+
interface IContinuousClearingAuction {
67+
function currencyRaised() external view returns (uint256);
68+
function clearingPrice() external view returns (uint256);
69+
}
70+
```
7071

71-
After the migration block delay, anyone can trigger `migrate()` to:
72-
- Initialize the Uniswap V4 pool at the discovered price
73-
- Deploy full-range liquidity using auction proceeds + reserve tokens
74-
- Deploy a one-sided position (if remaining tokens exist)
75-
- Mint the LP NFT to the position recipient
72+
4. **Seeding Liquidity**
7673

77-
7. **Active Liquid Market**
74+
Anyone can call the `migrate()` function on the `LBPStrategy` after a configured block. This does the following:
75+
- Initialize a new Uniswap V4 pool at the price from the auction
76+
- Deploy a full-range LP position using the auction proceeds + reserve tokens
77+
- (Optionally) deploy a one-sided position with remaining tokens
78+
- Mint the LP NFT to the a specified `positionRecipient`
79+
- Sweep any leftover tokens or raised funds to a configured `operator`
7880

79-
The pool is now live on Uniswap V4 with deep initial liquidity, making the token immediately tradable across the entire ecosystem with sustainable market depth.
81+
5. **After Migration**
8082

83+
The pool will be live on Uniswap V4 with deep liquidity around the discovered price. Participants in the auction can claim their purchased tokens on the auction after `claimBlock`, and these instances of the LBPStrategy + Auction contracts should hold no funds after all bids are withdrawn and all actions performed.
8184

8285
## Next Steps
8386

8487
- Learn about the [Continous Clearing Auction](./05-auction-mechanism.md) mechanism
8588
- Read the <a href='/whitepaper_cca.pdf' target='_blank' rel='noopener noreferrer'>whitepaper</a> to learn more about the mechanism
86-
- Dive into the repos below to see the code and start building
8789

8890
## Smart Contracts
8991

docs/contracts/liquidity-launchpad/05-auction-mechanism.md

Lines changed: 16 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,56 +21,29 @@ Bootstrapping initial liquidity for new tokens is challenging. Traditional appro
2121

2222
CCA addresses these issues through a unique approach: **automatic bid spreading over time** combined with **continuous price discovery**.
2323

24-
### Key Innovation: Bid Spreading
25-
26-
Every bid submitted to a CCA is automatically divided across all remaining auction intervals according to the token release schedule. This means:
27-
28-
- No participant can concentrate demand at a single moment
29-
- Timing of bid submission matters less than valuation
30-
- Early bidders naturally gain more exposure to lower prices
31-
- Sniping and last-minute gaming become ineffective
32-
33-
### How It Works
34-
35-
The CCA process for liquidity bootstrapping follows these steps:
36-
37-
1. **Configure Liquidity Bootstrap**
38-
39-
The project team sets up the price discovery parameters:
40-
- Supply release schedule Q(t) defining how tokens are released over time
41-
- Price floor to protect against selling below minimum valuation
42-
- Duration specified by start and end blocks
43-
- Graduation threshold that must be met for successful liquidity deployment
44-
45-
2. **Price Discovery Through Bidding**
24+
## Deployment Addresses
4625

47-
Participants establish market price by:
48-
- Specifying the maximum price they're willing to pay
49-
- Committing a fixed amount of currency to spend (exact-in bids)
50-
- Their bid automatically spreads over all remaining auction intervals according to the release schedule
26+
### ContinuousClearingAuctionFactory
5127

52-
3. **Continuous Price Clearing**
28+
| Network | Address | Commit Hash | Version |
29+
| -------- | ------------------------------------------ | ---------------------------------------- | ---------------- |
30+
| Mainnet | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |
31+
| Unichain | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |
32+
| Base | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |
33+
| Sepolia | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |
5334

54-
As the auction progresses:
55-
- Each block with new bids creates a checkpoint
56-
- The clearing price is calculated from aggregate demand versus available supply
57-
- The price can only increase or stay the same (never decrease)
58-
- All participants active in that interval pay the same uniform clearing price
35+
### Mechanism overview
5936

60-
4. **Auction Completion & Price Established**
37+
For a detailed overview, please read the [whitepaper](/whitepaper_cca.pdf).
6138

62-
When price discovery concludes:
63-
- The system checks if the graduation threshold was met
64-
- If graduated: the final clearing price becomes the pool initialization price
65-
- If not graduated: all bidders receive full refunds and no pool is created
39+
The most important element to understand about a Continuous Clearing Auction (CCA) is that tokens are sold over time to the current set of active participants. Every bid submitted to a CCA auction is automatically divided across all remaining intervals according to the token release schedule, such that:
6640

67-
5. **Liquidity Deployment**
41+
- No participant can concentrate demand at a single moment
42+
- Timing of bid submission matters less than valuation
43+
- Early bidders naturally gain more exposure to lower prices
44+
- Sniping and last-minute gaming become ineffective
6845

69-
After the auction succeeds:
70-
- Bidders exit to calculate their final fills and claim tokens
71-
- The raised currency + remaining tokens are deployed as liquidity in a Uniswap V4 pool
72-
- The pool initializes at the discovered clearing price
73-
- Deep, sustainable liquidity is established from day one
46+
## Technical overview
7447

7548
### Auction Configuration
7649

@@ -343,12 +316,3 @@ event TokensClaimed(uint256 indexed bidId, address indexed owner, uint256 tokens
343316
```
344317

345318
Anyone can call this function for any valid bid id.
346-
347-
## Deployment Addresses
348-
349-
### ContinuousClearingAuctionFactory
350-
351-
| Network | Address | Commit Hash | Version |
352-
|---------|---------|------------|---------|
353-
| Mainnet | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |
354-
| Sepolia | 0x0000ccaDF55C911a2FbC0BB9d2942Aa77c6FAa1D | 154fd189022858707837112943c09346869c964f | v1.0.0-candidate |

0 commit comments

Comments
 (0)