
SNS Liquidity Pools
TL;DR
We propose to implement a Liquidity Pool Extension for SNSs that allows allocating some SNS treasury tokens in a DEX to support exchanging SNS tokens (for existing and new SNSs).
We’re looking for feedback on the high-level design.
Background
Participants of an SNS launch should be able to use decentralized exchanges (DEXs) to exchange liquid SNS tokens obtained after a successful swap. Currently, this requires a lot of manual work for each DEX: registering the new tokens, the desired exchange pair (e.g., SNS:ICP), and adding tokens to the corresponding liquidity pool (a pair of DEX-controlled accounts used to support instant exchanges).
Even then, it is not practically possible to exchange tokens freely until a substantial amount of liquidity is added. This requires either a large number of liquidity providers or multiple SNS treasury transfers to the liquidity pool; either way, the process is slow and requires some sort of off-chain coordination. As a result, many SNSs currently do not have a realistic and fair way to exchange their tokens, even months after the launch. This makes swap participation less attractive.
Currently, SNS DAOs mitigate the problem by using a combination of treasury transfer proposals and custom functions that are specific to each individual DEX. However, keeping track of multiple proposals to achieve a single goal (i.e., allocate part of the treasury funds in a liquidity pool) is complicated for the voters, and is thus error prone. Currently, SNSs cannot easily withdraw their tokens from liquidity pools.
An additional complication stems from the lack of a common DEX standard; each DEX on ICP has its own custom interface. On the one hand, this makes it challenging to support arbitrary DEXs in the SNS framework. On the other hand, there are different DEXs on ICP, so tailoring the SNS to work with just one DEX is insufficient.
Overview
The SNS Liquidity Pools feature will enable SNS DAOs to allocate some part of the treasury tokens into liquidity pools on specific DEXs. The liquidity will support a more stable and efficient market for the SNS ecosystem.
Key Components
At the core of the design is a new class of canisters that can directly integrate with SNSs to manage parts of the treasury, called the Liquidity Pool Extension (one for each supported DEX). This canister is deployed and controlled solely by the SNS, with its code being open source and thoroughly audited (we will list the exact technical requirements in the next iteration if we go forward with this design).
While all Liquidity Pool Extension canisters encapsulate DEX-specific code, they integrate into the SNS framework via the same simple API. This has the advantage that all proposals for allocating treasury funds into liquidity pools are the same, no matter the DEX they interact with, making it a lot easier for SNS users to understand and vote on them.
This design avoids tailoring the SNS framework to a fixed set of DEXs. Any DEXs, including existing and future ones, can provide its own Liquidity Pool Extension canister. DFINITY will build the first proof of concept, but subsequent Liquidity Pool Extensions can be built either by the DEX developers or any other party, so long as they meet the technical requirements and are approved by the NNS.
The Liquidity Pool Extension provides the following key functionality:
- Deposits: An SNS can deposit some SNS and ICP tokens from its treasury into a DEX. For existing SNSs, this will require a critical proposal, while for a new SNS, its initial DEX deposit could be specified in the CreateSNS proposal. Each supported DEX will require its own Liquidity Pool Extension canister.
- Observability: The Liquidity Pool Extension provides an audit trail API for clients to check their SNS’s balances and to perform audits based on all ledger transactions involved in managing SNS assets.
- Efficiency: The Liquidity Pool Extension will automatically send all unused tokens back to the SNS treasury.
- Withdrawals: An SNS can fully withdraw all remaining tokens from its DEX allocation via a critical proposal.
Benefits
The SNS Liquidity Pools feature will bring several benefits:
- Increased Liquidity: Ensuring smoother token exchanging and price stability.
- Simpler user flow: One proposal per DEX allocation; zero additional proposals for new SNSs to specify DEX allocations.
- Better security: Transparent treasury management with a fully on-chain audit trail.
- Transparency: Improved visibility for SNS owned assets, e.g., to indicate DAO health.
Next Steps
- Prototype the Liquidity Pool Extension and refine the design.
- Share the resulting prototype and detailed design with the community.
- Extend the SNS API to support registering Liquidity Pool Extensions.
We’re committed to building a robust and user-friendly SNS Liquidity Pools feature that will benefit the entire ecosystem, including the SNS communities and DEXs. Please share your feedback on this high-level design to facilitate the discussion.