April 27, 2023: Pool Creation Factory ππ
Full walkthrough of the new Curve pool creation UI
Itβs live! If youβve ever feared creating a Curve pool required a degree in advanced mathematics, give the new UI a spin and see what you think.
Congrats to OnlyJousting / 0xtutti for the clean and intuitive design.
Although the old retro-style UI still has some fans of the design, few people liked the wall of text that was the pool creation interface:
Remarkably, five hundred pools were nonetheless created on mainnet using the old UI. No surprise the new version has already seen such a positive response.
Weβve been working on assembling extensive documentation to describe the new pool UI. What follows below is the current draft text that is being recommended to post to the Curve Resources page. If you are interested in creating a pool, please give it a read and shout at us if you find anything incorrect.
Understanding Factory Pools
The Curve pool creation factory allows any user to permissionlessly deploy a Curve pool. These pools can contain a variety of assets, including pegged tokens, unpegged tokens, and metapools built off of other base pools.
Keep in mind a few points about all pools:
Destroying Curve pools once deployed is not possible
Curve is not responsible for any of the assets going in there so you must do your own research when trading in the pool factory. The Curve team and DAO also have no control over the tokens added in the factory which means you must verify the token addresses you trade on there.
The only admin change that can be made by the Curve DAO is ramping the A (amplification) parameter
Tokens with more than 18 decimals are not supported
After deploying a pool, you must seed initial liquidity if you want users to interact with it.
Pools will only display on the homepage by default if their TVL is not below the threshold of what is considered "small."
To get started, visit the "Pool Creation" tab at the top of the Curve homepage, and select whether you would like to create a "Stableswap Pool" (a pool with pegged assets) or a "Cryptoswap Pool" (containing assets whose prices may be volatile).
Note some sidechains may not yet support a stableswap or cryptoswap pool factory.
Creating a Stableswap Pool
The Stableswap pool creation is appropriate for assets expected to hold a price peg very close to each other, like a pair of dollarcoins. The creation wizard will guide you through the process of creating a pool, but if you have questions throughout you are encouraged to speak with a member of the Curve team in the Telegram or Discord.
Token Selection
The token selection tab can be used to select between two to four tokens.
You can select a token by searching for the symbol of any token that is already being used on Curve, or by pasting the poolβs address.
On Ethereum you might observe a handful of popular assets (ie Tether, USDC, Frax) are not available in the token selection dropdown. Some of these assets have been added to "base pools," which can be used in the creation of other "metapools."
See also: Base & Metapools

If you want to include a token that is part of a base pool, you must use it as part of a corresponding base pool. Base pools can only be paired with one other token.
If you are using raw ether as a token, it must be added as "Token A." WETH may be added as either Token A or Token B.
If your pool contains "rebasing tokens" (a token which adjusts its total supply to control its price), make sure to select the appropriate box:
The UI will not check to see if a pool containing your token pairs already exists. Some protocols have seen opportunities to create two pools containing the same assets but using different parameters (c/f stETH concentrated). In most cases you should take care to make sure your pool does not already exist.
Pool Presets
The "Pool Presets" tab contains a few scenarios that prepopulate appropriate parameters for users who are unfamiliar with advanced aspects of Curve pools. The presets include an explanation of their use case.
The Advanced options toggle includes a variety of options which may not apply to your case.
Parameters
The parameters tab allows you to adjust pool parameters. The pool's fee is applied to all transactions within the pool, half of which accrues to pool LPs, the other half is distributed to veCRV stakers. The fee for StableSwap pools may be set between .04% and 1%.
The Advanced tab allows you to adjust the pool's "A Parameter."
The A Parameter is set by default based on your selection on the prior tab. A higher value for A concentrates liquidity better. If the assets are likely to fluctuate heavily you may want to lower the value below the default of 100.
After the pool launches, the DAO has the capability of adjusting the A parameter.
Pool Info
Finally, you may adjust factors used for displaying the pool on the Curve site. These cannot be adjusted after launching so be careful when selecting these parameters.
On the Curve UI the pools are grouped by the "Asset Type Tag." This only affects its display on the Curve website, it has no effect on the pool's performance.
USD: For pools only containing dollarcoins
ETH: For pools only containing ETH
BTC: For pools only containing BTC
Other: All other assets
Your pool is ready to launch! It will now appear on the Curve page, but it's not yet eligible to earn $CRV rewards. For next steps you will typically want to seed initial liquidity and create a pool gauge.
Creating a Cryptoswap Pool
The v2 Curve Factory supports pools of assets with volatile prices, with no expectation of price stability.
See also: Understanding Curve v2
Creating a Pool
The factory can be used to create a pool between any two ERC20 tokens. Based on trading activity in the pool, the v2 pools update an internal price oracle that the pool uses to rebalance itself.
If the pool is using wrapped Ethereum as one of the two assets, the pool will also support depositing either raw ETH or wrapped Ethereum.
Tokens in Pool
The token selection tab can be used to select up to two tokens.
The order of the tokens can matter for the performance of the AMM. Make sure to select the token with the higher price is first. If the tokens are supported by CoinGecko, you can see the "Initial Price" under the Pool Setup panel, choose the token order to maximize this value.
On Ethereum at the top of the token selection popup you can see any Curve basepools suggested up top. These allow you to create a metapool, where the other asset can trade with any of the underlying basepool assets.
Pool Presets
The "Pool Presets" tab provides scenarios that prepopulate appropriate parameters for users who are unfamiliar with advanced aspects of Curve pools. Some examples:
Crypto: Used volatile pairings for tokens which are likely to deviate heavily in price
Forex: Pairings that have low volatility
Liquid Staking Derivatives: Similar to $cbETH and $rETH which handle Ethereum LSDs
Parameters
On the parameters tab you can review and adjust the defaults populated by your selection on the "pool presets" tab. Crypto v2 pools contain a lot of parameters. If you are uncertain of which parameters to use, you may want to ask for help in any Curve channel before deploying. Some parameters can be tuned after the fact.
The basic parameters include the fees charged to users who interact with the pool. This is divided dynamically into a "Mid fee" and "Out fee" parameter, which represent the minimum and maximum fee during periods of low and high volatility.
Mid Fee: [.005% to 1%] Percentage. Fee when the pool is maximally balanced. This is the minimum fee. The fee is calculated as
mid_fee * f + out_fee * (10^18 - f)
Out Fee: [Mid Fee to 1%] Fee when the pool is imbalanced. Must be larger than the Mid Fee and represents the maximum fee.
The initial prices fetch current prices from Coingecko to set the initial liquidity concentration. If your tokens do not exist on Coingecko you will need to populate these values manually, otherwise they will be filled automatically.
The Advanced toggle allows you to adjust several of the other parameters under the hood.
Amplification Parameter (A): [4,000 to 4,000,000,000] Larger values of A make the curve better resemble a straight line in the center (when pool is near balance). Highly volatile assets should use a lower value, while assets that are closer together may be best with a higher value.
Gamma: [.00000001 to .02] The gamma parameter can further adjust the shape of the curve. Default values recommend .000145 for volatile assets and .0001 for less volatile assets.
Allowed Extra Profit: [0 to .01] As the pool takes profit, the allowed extra profit parameter allows for greater values. Recommended 0.000002 for volatile assets and 0.00000001 for less volatile assets.
Fee Gamma: [0 to 1] Adjusts how fast the fee increases from Mid Fee to Out Fee. Lower values cause fees to increase faster with imbalance. Recommended value of .0023 for volatile assets and .005 for less volatile assets.
Adjustment Step: [0 to 1] As the pool rebalances, it will must do so in units larger than the adjustment step size. Volatile assets are suggested to use larger values (0.000146), while less volatile assets do not move as frequently and may use smaller step sizes (default 0.0000055)
Admin Fee: [0 to 100] A percentage, the fees that go to veCRV holders
MA Half Time: [0 to 604,800] In seconds -- the price oracle uses an exponential moving average to dampen the effect of changes. This parameter adjusts the half life used.
Initial Price: [.000000000001 to 1,000,000,000,000] At time of deployment, divide price of token 1 by token 2
A more thorough reader on the parameters can be found here. You can use this interactive tool to see how some of the parameters interact.
After deployment, make sure to seed initial liquidity and create a gauge just like regular factory pools.