# Uniswap Liquidity DAO Written by David Mihal Uniswap V3 has unveiled the new idea of "concentrated liquidity", which enables a more capital-efficent AMM. While this change is transparent to traders, it introduces additional complexity from the perspective of liquidity providers. Instead of simply depositting two assets into a pool, providers must now chose which pool to deposit into (V3 supports multiple pools with different fee tiers), and which "ticks" to allocate their capital to. This complexity also means that liquidity positions are no longer fungible, and can not be represented as composable ERC-20 tokens. Furthermore, accrued trading fees are no longer auto-compounded back into the liquidity pool. Liquidity providers must manually claim their fees, and if desired, add them back into the pool. ![](https://i.imgur.com/FA5p8EQ.png) Some community members have suggested that yield aggregators can fill the role of easily providing liquidity on Uniswap V3. While there are many aggregator projects that can fill this role, there is still a need for a single "canonical" liquidity provisioning service. This document proposes the creation of a new liquidity-allocating DAO (Liquidity DAO) that fits inline with Uniswap values: a protocol that is as simple and permissionless as possible. The primary goals of this project are: * Provide a similar lightweight LPing experience to V1/V2 * Determine optimum liquidity distribution via governance * Auto-compound fees accrued by the pool * Provide a fungible ERC-20 token representing liquidity positions * Allow governance using the UNI token ## Meta Pools The Liquidity DAO will provide a single meta-pool for each token pair, which will manage the deposited liquidity. ### Pool Creation A Meta-Pool can be permissionlessly created by any user for any token pair using the Meta Pool Factory. By default Meta Pools, will allocate liquidity to the 0.30% fee tier, and space liquidity evenly across all ticks. This provides roughly the same behavior as depositting liquidity in Uniswap V2. In order to change the liquidity allocation paramaters, a proposal must be approved by the governance (see Governance). ### Pool Deposits Any user may deposit liquidity (two balanced tokens) into the Meta Pool at any time. This will mint them fungible ERC-20 liquidity tokens, similar to Uniswap V2. Liquidity depositted into the pool is not immediately added to liquidity pools, instead it is kept liquid until the next rebalance (similar to yEarn vaults). #### Single-Sided Deposits The pool will provide a built-in function for users to deposit a single asset and receive pool tokens. ### Pool Rebalancing Pools will be pereodically re-balanced, which accomplishes the following tasks: * Adds new user deposits into pools * Rebalances liquidity between various ticks * Claims fees, which are re-depositted back into pools * Transfers an optional percentage of collected fees to the DAO treasury * If liquid funds are below the threshold for fast-withdrawals, some funds will be withdrawn from the Uniswap pool * In the event of a changed fee tier, move liquidity to the new Uniswap pool #### Rebalancing Incentives The rebalancing function may be triggered by any user at any time. However, the governance may decide to incentivize the rebalancing of some pools, providing a reward that is transferred to any user who calls the function. The Meta Pool will track the block number of the last rebalance, and incentives will only be paid out after a threshold of blocks has passed (for example, the pool should be rebalanced every 500 blocks). This incentivization can also be used to pay for a "job runner" network, such as the Keep3r Network, to execute the rebalances. ### Pool Withdrawals The pool will provide two methods for withdrawing funds: A "fast withdrawal" will allow users with smaller positions to withdraw from the liquid funds in the Meta Pool. Larger users can execute a "rebalance-and-withdraw", which will rebalance the funds in the pool and allow collecting a larger amount of liquidity. This will also allow them to withdraw any uncollected fees from the Uniswap pool. ### Liquidity Mining By representing liquidity shares as fungible ERC-20 tokens, other DeFi protocols can support V2-style liquidity mining. Liquidity mining can also be made cheaper & safer using a simple "locking" mechanism. Users can call a "lock" function on the LP token contract, which will lock an amount of the user's LP tokens and call a callback function on farming contract. At any time, users may call "unlock" to unstake their tokens as well. This provides two benefits over the traditional "deposit" model. First, it is cheaper & easier for users to deposit, since they must only send a single "lock" transaction, as opposed approve+deposit. Second, this keeps user funds safe, as a malitious/insecure farming contract can not take custody or lock a user's LP tokens. ## Fees At launch, the Liquidity DAO will have no added fees. Governance can vote to enable a global rebalancing fee. This will be a percentage of accrued trading fees that are directed to the Liquidity DAO treasury upon rebalancing. The governance can also individually set fees for a specific pool. When governance of a specific pool is delegated to a third party (see Pool Governance Delegation), a percentage of fees can be delegated to that delegator as well. ## Governance The Liquidity DAO will be governed by users who stake their UNI tokens. ### Dividends Governance can vote to allocate a portion of the treasury as dividends to be paid out to governance stakers. ### Delegated Voting Users may delegate their vote to other accounts, enabling "protocol politicans" to take a more active role in governance. ### Pool Governance Delegation The Liquidity DAO can delegate the governance over a single pool to a third party. This alleviates the Liquidity DAO of needing to manage _all_ pools. For example, the DAO may vote to delegate control of the YFI/WETH pool to the yEarn governance. The delegated governor can set the liquidity paramaters (the pair's fee-tier & tick percentages), and add a rebalancing incentive. The delegated governor can _not_ set rebalancing fees, however the Liquidity DAO can allocate a percentage of rebalancing fees to the delegated governor. ### Uniswap Core Governance UNI tokens depositted into Liquidity DAO will not only provide governance over the Liquidity DAO itself, but also the core Uniwap governance. Users will be able to submit votes for proposals in the Core Uniswap Governance DAO, and the DAO will act as a proxy in the core governance. ## Security & Risks This DAO provides increased security guarentees comparred to many more-flexible yield aggregators. The protocol does not have permission to implement arbitrary "strategies", which inject new code into the system. The protocol's access to user deposits is limited to the ability to rebalance funds between various ticks of a single pool, as well as between various pools of the same asset pair. The worst case scenario for a mis-managed Meta Pool is that liquidity is allocated to undesirable ticks, and the protocol accrues 0 trading fees. A separate scenario is that the governance may increase the rebalancing fee to an extreme level (up to 100%), and the liquidity providers would not receive any trading fees. Both of these senarios do not result in loss of funds, only the lost oppertunity cost of missed trading fees. Liquidity providers can simply withdraw their funds and re-deposit elsewhere. The largest oppertunity for mis-management comes from the governance access to the Liquidty DAO treasury. A governance attack could potentially drain treasury funds to an attacker. However, this is a risk shared by any DAO that holds a treasury, and again does not risk user funds. ## Technical Details Given that Uniswap is an open & permissionless system, the Liquidity DAO can be built on top of Uniswap V3 without need for approval from the core Uniswap governance or the Uniswap Labs team. The Liquidity DAO will be constructed of the following smart contracts: ### MetaPoolFactory Contract The MetaPoolFactory will facilitate the deterministic creation of MetaPool contracts, similar to the role of the PoolFactory in the Uniswap Core. The MetaPoolFactory will also store global configuration parameters, such as: * Protocol governance address * Protocol treasury address * Global rebalancing fee ### MetaPool Contract The MetaPool will allow users to deposit & withdraw funds, as well as facilitate the distribution of assets between various Uniswap positions. The MetaPool will also act as an ERC-20 token, representing shares of the liquidity depositted to the pool. The MetaPool will store the following pool configuration: * ERC-20 balances & approvals for LP shares * Percentage of assets to keep liquid for fast withdrawals (defaults to 1%) * The Uniswap pool fee tier (0.05%/0.30%/1%) * The percentage distribution between various ticks * Block number of the last rebalance * Rebalancing incentives * Optional pool-specific fee parameters * The optional delegation of governance to an outside address ### Governance Contract The Governance contract allows users to deposit UNI & receive a governing stake in the pool. The governance contract stores: * Shares (UNI depositted per address) * Voting delegation * Votes * Dividend balances * Proposals (a struct with the following optional parameters): * New Factory owner (for governance upgrade) * New global rebalancing fee * An action to be taken by the treasury * List of pools with the following optional parameters: * New local rebalancing fee * New fee tier * New tick distribution percentages * New delegated governor of pool ### Treasury The treasury will collect fees from rebalances. This contract will provide simple methods for swapping tokens (for example, to swap other tokens into ETH) and transferring tokens to other addresses. ## Additional features The architecture of the Liquidity DAO may make it an ideal location to integrate these other features which are needed for Uniswap V3: ### V2 Upgrade When Uniswap V2 launched, users were able to easily upgrade from V1 to V2 in a single transaction. Similarly, the Liquidity DAO can facilitate the upgrade from V2 to V3 by allowing users to deposit V2 LP tokens and automatically migrating liquidity into V3. ### Layer-2 Bridge Uniswap V3 is planned to be deployed both on Ethereum mainnet, as well as Optimism's optimistic rollup L2. Once both deployments are live, many users may hope to move their liquidity from L1 to L2, or vice versa. One challenge of this bridge is that funds must be depositted into Uniswap pools in balanced amounts, yet the price of a pool on L2 will vary from the price of the same pool on L1. Meta Pool can solve this issue, since the built-in rebalancing system already can handle deposits in unbalanced amounts. This makes the Liquidity DAO an easy tool to facilitate the movment of liquidity between L1 & L2. ## Next Steps This document has been released to facilitate discussion & gather comments from the Uniswap & Ethereum communities. If the project has community support, an application will be submitted for a grant from the Uniswap Grants program and a team will be formed to build the protocol.