[BIP-675] Enable Several E-CLPs [Arbitrum]

PR with Payload:

Summary

  • This is a proposal to enable five uncapped Balancer gauges for the following Arbitrum pools:
    • sUSDe/GYD
    • rETH/wstETH
    • aGHO/GYD
    • wUSDM/aUSDC
    • sFRAX/aFRAX
  • Every one of the pools is an Elliptic Concentrated Liquidity Pool (E-CLP). E-CLPs are custom pools from Gyroscope built on top of Balancer’s pool architecture. They enable trading along the curve of an ellipse. This pool type is ideally suited for stablecoins and liquid staking tokens; is typically more capital efficient and could thus generate significant trading volume.
  • GYD is an all-weather stablecoin that provides one-stop access to stablecoin risk control. GYD is fully backed by a set of assets with fundamental innovations in risk control built in at the protocol level to automate diversification and redundancy.
  • Each pool shall be a ‘Core’ pool. The fee split is as follows: 50% of all collected fees will go to liquidity providers, while the remaining 50% will go towards Balancer. At pool inception, no fees will go towards Gyroscope. As a Core pool it will be eligible for fee recycling.

References/Useful links

Protocol description

  • GYD is a USD denominated stablecoin, issued by the Gyroscope protocol

  • USDe can be staked for sUSDe which accrues rewards. USDe is enabled via hedging the delta of spot assets backing the token during minting. - Ethena

  • wUSDM is a wrapped version of USDM. USDM is a USD denominated stablecoin, issued by the Mountain Protocol.

  • aUSDC is the deposit receipt token issued by the Aave protocol to lenders of USDC. Since aTokens are rebasing, this pool uses BGD Labs’s statA wrapper that is a repricing representation of statA tokens that reflects the accruing lending yield.

  • aGHO is the deposit receipt token issued by the Aave protocol to lenders of GHO. Since aTokens are rebasing, this pool uses BGD Labs’s statA wrapper that is a repricing representation of statA tokens that reflects the accruing lending yield.

  • "wstETH is a wrapped version of stETH. […] wstETH keeps your balance of stETH fixed and uses an underlying share system to reflect your staking rewards.” - Lido

  • rETH is provided to user who deposit into the Rocket Pool protocol. The represents a tokenised staking deposit and the rewards it gains over time in the Rocket Pool network. - Rocket Pool

  • Staked FRAX (sFRAX) is an ERC4626 staking vault that distributes part of the Frax Protocol yield weekly to stakers denominated in FRAX stablecoins. The sFRAX token represents pro rata deposits within the vault and is always withdrawable for FRAX stablecoins at the pro rata rate at all times. - Frax

  • aFRAX is the deposit receipt token issued by the Aave protocol to lenders of FRAX. Since aTokens are rebasing, this pool uses BGD Labs’s statA wrapper that is a repricing representation of statA tokens that reflects the accruing lending yield.

Motivation

The capital efficiency of E-CLPs will help to quickly bootstrap a liquidity network for GYD. This hub-and-spoke network will enable a liquid secondary market for GYD to make it easier to exit from/ enter into GYD.

By using E-CLPs a comparably small amount of initial capital can provide a disproportionately deep market for GYD. The E-CLP’s efficiency gains are possible due to:

  • Customizable liquidity profiles: Using the curve of an ellipse enables highly customizable liquidity profiles. E-CLPs can be calibrated to approximate most trading curves that would be desired. E-CLP curves can be tailored to have certain regions of low price impact and other regions of high price impact.
  • Price bounds: The E-CLP concentrates liquidity within price-bounds that enable the E-CLP to be highly capital-efficient. Functionally, this works by enabling arbitrary truncation of liquidity profiles from a given trading curve. In effect, the capital efficiency comes from bounding the trading curve to an expected trading range of the assets.

Several E-CLPs have already been deployed to provide custom tailored liquidity profiles for LSTs and stablecoins. For an overview of previously deployed E-CLPs consult: https://dune.com/gyro_finance/gyroscope-e-clps

Specifications

Governance

The Gyroscope Protocol will be governed by a DAO and relevant stakeholder with the full launch on Ethereum. For now, the FTL Labs multi-sig can pause the pool, change the swap fee and set the protocol fee. As a custom pool by Gyroscope, the E-CLP will be controlled by Gyroscope governance upon its launch.

Oracles

sUSDe/GYD:

  • rateProvider1 (for sUSDe): 0x3A236F67Fce401D87D7215695235e201966576E4
  • rateProvider0 (for GYD): 0x00
  • (allows to control for a price drift from accruing yield by using rate providers to first convert from yield accruing tokens to the underlying)

rETH/wstETH:

aGHO/GYD:

  • rateProvider1 (for aGHO): 0xff38cC0cE0DE4476C5a3e78675b48420A851035B
  • rateProvider0 (for GYD): 0x00
  • (allows to control for a price drift from accruing yield by using rate providers to first convert from yield accruing tokens to the underlying)

wUSDM/aUSDC:

sFRAX/aFRAX:

Audits

Audit reports by Nethermind, Trail of Bits, and Runtime Verification can be accessed here (the E-CLP is called the “CEMM” in these reports). In addition, the E-CLP code has been live in production on Polygon since November 2022.

Centralization vectors

No centralization vectors. The FTL Labs team’s multi-sig can - currently - pause the pool, change the swap fee and set the protocol fee.

Market History

The Gyroscope Protocol is in limited production live on Polygon, with an imminent launch on Ethereum mainnet. Also see contracts.

Value

As per “Motivation”. Balancer can become the central trading venue for a new stablecoin that is already tightly interlinked with Balancer. By leveraging asymmetric concentrated liquidity for these assets GYD liquidity can quickly be bootstrapped and become a substantial driver of trading volume and total value locked.

Contracts

Specification:

The Balancer Maxi LM Multisig eth:0xc38c5f97B34E175FFd35407fc91a937300E33860 will interact with the GaugeAdderv4 at 0x5DbAd78818D4c8958EfF2d5b95b28385A22113Cd and call the addGauge function 5 times with the following arguments:

  1. gauge(address):0x5a47e3f2E5009168Af11C4b0198605f694805779
    gaugeType(string): Arbitrum

  2. gauge(address):0xcb785286C9bEBeFF7654a8238Eb563666fD75338
    gaugeType(string): Arbitrum

  3. gauge(address):0xB599e35f760c47888aD3fF684FF4cd01ff4Dc45B
    gaugeType(string): Arbitrum

  4. gauge(address):0x594dD4297Ef4A5ebeD3DA337Aa56078637aCb18E
    gaugeType(string): Arbitrum

  5. gauge(address):0x00654F788342647A8Aa15f2eb2490e17d222aC85
    gaugeType(string): Arbitrum