Syncswap liquidity pools: asset types, fees, and withdrawal choices
Updated -
Syncswap liquidity pools match different asset behavior through distinct automated market maker models. Stable Pools target stablecoin trading, Classic Pools use constant-product pricing for general token pairs, and V2 Aqua Pools use automatic rebalancing for volatile assets and liquid staking tokens. Choosing a model also means considering the actual pool's reserves, fees, and withdrawal method. Asset type identifies a relevant pricing curve; the selected deployment and its live conditions determine the liquidity position that you can enter or exit.
Asset relationships and the choice of pricing curve
The deciding boundary is whether the tokens aim to maintain a stable relative price or their ratio needs to move with market prices. A stablecoin category describes an asset's intended behavior. The relationship between the selected assets determines whether stable pricing suits the pair. Aqua adds another choice for volatile and liquid staking assets, while Classic supports general trading. Identify the actual token contracts within the selected network, since those contracts determine the assets that the pool holds. In V1, the pool exposes those identities through
token0
and
token1
.
In V1 Classic and Stable Pools, a liquidity provider receives LP tokens representing pool shares. Their underlying token amounts change with the pool's balances.
A Stable Pool deposit when reserves change
A deposit into an existing V1 Stable Pool completes only if the pool mints enough LP tokens to meet the minimum specified in the router call.
A wallet plans a deposit into a hypothetical existing V1 Stable Pool. The deposit amounts, pool reserves, and minimum LP output are also hypothetical. An initial estimate meets that minimum, and the wallet already grants the V1 router sufficient spending allowance. The estimate describes the pool before execution. Intervening trades can change its reserves, so the same deposit amounts may produce a different LP amount when the transaction executes.
A deposit that meets its minimum
If execution mints at least the specified minimum, the router's output check passes. The pool creates LP tokens for the recipient encoded in the deposit data. A successful transaction, the pool's Mint event, and the recipient's LP balance establish what the deposit produced. The event identifies the contributed token amounts and the minted liquidity. Those records distinguish completed liquidity provision from an allowance that merely permits spending.
A deposit that falls below its minimum
If the pool calculates zero LP tokens, it reverts with InsufficientLiquidityMinted. If changed reserves instead produce a nonzero LP amount below the selected minimum, the router reverts with
NotEnoughLiquidityMinted
. Transfers and minting within that failed transaction do not persist. The recipient receives no LP tokens from that deposit, even though spending permission already exists.
Stable Pools and the limits of a shared peg
A Stable Pool suits assets whose intended relative prices remain close, because its hybrid curve supports stablecoin trading around that relationship. Pool balances still affect the quote, and a stable pricing model does not enforce the assets' external market values. If a token loses its peg, the relationship that made stable pricing attractive changes. The choice therefore includes the economic behavior of both assets, alongside the curve itself. A pool can continue calculating trades while the assets no longer trade at their intended relative values.
A similar token quantity does not establish a similar economic value. The asset relationship and the pool's actual balances both matter.
Classic Pools and changing reserve proportions
Classic pricing accommodates general token trading through a reserve relationship that changes the exchange rate as trades change the balance between assets. Classic Pools price swaps using the constant-product relationship x*y=k. Here, x and y represent the two token reserves. The formula supplies the pricing rule, while fees and liquidity changes affect the actual reserve product. A trade that consumes a larger proportion of the available output reserve moves further along the curve.
This explains why equal input amounts can produce different quotes in pools with different reserves. It also connects pool depth to price impact, the movement caused by the trade itself. Slippage describes a difference between an expected outcome and execution. Those concepts influence the choice of a pool, although neither supplies a permanent percentage for every operation.
Classic pricing supports general pairs without requiring a stable relative-price assumption.
Aqua Pools and automatic rebalancing
Aqua uses a dynamic hybrid curve with built-in automatic rebalancing to support volatile assets and liquid staking tokens in the V2 protocol family. That mechanism changes the choice from a fixed constant-product model to a pool model that adjusts its pricing configuration. Liquid staking token, or LST, identifies an asset category; it does not establish a fixed market ratio against every possible paired asset. Assess the selected assets and applicable fees together, without treating automatic rebalancing as protection against changes in their market values.
Pool versions and the position contract
The pool's version determines its contract architecture, so choosing an asset pair also requires identifying which deployment holds the position and which interface manages it. V1 has Classic and Stable Pools. V2 introduced Aqua alongside its Classic and Stable models, and V2.1 retains the V2 interfaces. A model name therefore does not uniquely identify an existing liquidity position. The network, pool contract, and version provide the necessary context.
V1 uses a Vault, whereas the V2, V2.1, and V3 architectures operate without that Vault. On zkSync Era, V3 also has a separate Range Pool Factory and a Position NFT Manager. The V1 minting and burning details discussed here apply to its Classic and Stable implementations; they do not describe every position interface across these versions.
The V2 router supports swap routes through V1 pools. That compatibility does not convert an existing V1 LP balance into another pool's position.
Swap fees and the cost of deposit imbalance
Swap fees and deposit imbalance affect different parts of the pool decision, with the applicable charge determined by the selected model, version, and operation.
Fixed and dynamic swap fees
Aqua Pools in the V2 protocol family support dynamic swap fees.
Fee Data contains
minFee
,
maxFee
, and
gamma
. The bounds describe the fee range, and a higher gamma reduces fee volatility. A fixed fee has equal minimum and maximum values. Fee Manager stores default and custom pool fees, and Pool Master exposes its applicable address. Because that module can change, an old fee setting cannot establish the charge that a selected pool applies now.
Deposit proportions in V1
Amounts that follow the reserve ratio
For an existing V1 Classic or Stable Pool, input amounts that follow the current reserve ratio avoid its imbalance mint fee. Matching that ratio concerns the relationship between reserves and contributions. Equal quantities of the two tokens do not necessarily match it.
Amounts outside the reserve ratio
Both V1 implementations calculate an imbalance fee from the excess contribution relative to the reserve ratio, using the applicable swap fee. That adjustment affects the LP amount that the pool mints. Comparing a balanced contribution with an unbalanced one therefore requires their actual proportions. The V1 formula does not establish an Aqua deposit fee or a universal charge across versions.
Pool depth and the meaning of a quote
A token-swap quote and an estimate of minted LP tokens describe different outputs and units. In V1,
getAmountOut
calculates swap output for a specified input amount and sender using the pool's reserves and applicable fee. It does not calculate the LP shares that a liquidity deposit will create. Reserve changes can alter a later calculation. Compare candidates using the same intended assets and operation, with each candidate's relevant live state. A pricing-model name alone supplies neither an execution quote nor an annual return.
Which withdrawal returns both pool assets?
The ordinary V1 burn calculates outputs for both pool tokens from current balances and the LP tokens surrendered. Depending on the encoded withdrawal mode, the pool credits the recipient's Vault balances or transfers the outputs out of the Vault. For its Classic and Stable implementations, each output equals the burned LP amount multiplied by that token's pool balance, divided by total LP supply after any applicable protocol-fee minting. That proportional exit retains both assets at the pool's current composition. It does not restore the original deposit quantities. Trading, other liquidity changes, and fee accounting may have changed what the shares represent.
A single-token V1 burn also converts one proportional output into the selected pool token through the pool's swap calculation. Its applicable swap fee and reserves therefore affect the final amount. The router checks separate minimum token amounts for an ordinary burn and one minimum amount for a single-token burn. A pool choice that looks suitable for entry can have a different exit cost when the desired final exposure is one asset.
Pool ownership and holding the assets separately
Liquidity provision creates exposure to a changing pool composition, so comparing it with holding the original assets separately requires considering market values alongside trading fees. In a Classic constant-product pool, changing relative asset prices can leave the LP position worth less than separate holdings. This difference is commonly called impermanent loss. Trading fees can offset that difference, but the amount of trading and the price movement determine the comparison. A stablecoin pool also retains the risk that one of its assets loses its intended peg.
An LP position can gain market value while underperforming separate holdings. Compare both at the same market prices and over the same period. Keeping the position means accepting changes in pool composition while earning a share of the fees that trades generate. Holding the original assets separately preserves their quantities outside the pool.
Syncswap liquidity pools - your questions answered
Can the same token pair use both Classic and Stable Pools?
The same token pair can have distinct pools identified by their pool type. Pool Master supports lookup using the two tokens and the type, so a Classic Pool and a Stable Pool are separate choices with different pricing rules. Their reserve balances and fees belong to their own contracts. Selecting a pair therefore does not, by itself, select the model or move liquidity between those pools.
Is different token precision a problem for a V1 Stable Pool?
The V1 Stable Pool implementation adjusts token balances using each token's precision multiplier. Its swap calculation multiplies reserves by those factors before applying StableMath, then converts the output back into the output token's units. Different decimal precision therefore does not require equal raw token quantities. The calculation relies on the multipliers configured for that pool, and those scaling factors describe token units rather than market-price protection.
Why does a V1 LP balance differ from the amounts deposited?
A V1 LP balance measures pool shares in LP token units, not the combined units of the deposited assets. For an existing Classic or Stable Pool, minting relates invariant growth to the existing LP supply, with applicable fee adjustments. Adding the two input quantities does not produce the LP balance. The minted shares instead determine a proportional claim on pool assets when the relevant burn calculation runs.
What happens if a permit used for a V1 liquidity deposit has expired?
The V1 addLiquidityWithPermit method reverts if an included ERC-2612 permit has expired. The token checks the signed deadline when the router submits the permit, before the router transfers the deposit inputs. A valid permit requires a block timestamp no later than that deadline, alongside its other signature conditions. The deadline governs acceptance of the signed allowance; it does not set an expiry for LP tokens that already exist.
Does creating a V1 pool also supply its starting liquidity?
Pool creation and supplying liquidity are distinct operations. The V1 router's createPool method calls the selected factory and returns the pool address; its liquidity-addition methods transfer inputs and request minting. A newly created contract address therefore does not establish deposited reserves or an LP balance. The first liquidity mint initializes the share supply under that pool's rules, including its permanently locked minimum liquidity. These operations can share a transaction when an applicable interface combines them.
Can a V1 pool entry remain after its liquidity has been withdrawn?
The V1 router's enteredPools list can retain a pool entry after a withdrawal. Its tracking addition methods record first participation, and its burn methods do not remove that entry. The list therefore records participation rather than the current LP balance. A remaining entry does not prove that the account still owns shares, and an absent entry does not prove zero ownership because the untracked addition method also mints liquidity.
How can a V1 protocol fee change an existing LP's share?
An applicable V1 protocol fee can mint additional LP tokens to the configured fee recipient. The Classic and Stable implementations perform this calculation when fee collection is enabled, the stored invariant is nonzero, and the measured invariant has grown. Increasing total LP supply can reduce an existing balance's fractional ownership. This mechanism is separate from an input-token imbalance charge and does not establish a fixed deduction from every liquidity deposit.