[BIP-562] Enable gauge for rETH/WETH on [Polygon zkEVM]

PR with Payload


  • This is a proposal to enable one uncapped Balancer gauge for rETH/WETH on Polygon zkEVM.
  • The underlying pool 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; it is typically more capital efficient and could thus generate significant trading volume.
  • The pool shall have a swap fee of 1 basis points, i.e., 0.01% at pool inception. 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.

References/Useful links

Protocol description

  • When a user deposits into the Rocket Pool protocol, they will instantly receive the rETH token which represents a tokenised staking deposit and the rewards it gains over time in the Rocket Pool network. - Rocket Pool
  • WETH is an ERC-20 version of ETH. - WETH


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. A similar E-CLP to the one mentioned in this proposal has been recently deployed on Arbitrum. For an overview of previously deployed E-CLPs consult: https://dune.com/gyro_finance/gyroscope-e-clps

This pool is replacing a previously deployed E-CLP on zkEVM for the same assets. This is required as the previously used rate provider will be deprecated. The respective old gauge can thus also be depracated.



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.


  • rateProvider0 (for rETH): 0x8C76aa5B78357E1Fa104EA2bC4A219F0870251f1
  • rateProvider1 (for WETH): 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)


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 live on Ethereum since EOY23, with E-CLPs on several other chains. Details available here .


As per “Motivation”.



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

gauge(address): 0xF27B784Aa66D5B27BFfd247e32C000C86511C2B2

gaugeType(string): PolygonZkEvm

Transaction 2:
The DAO Multisig 0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f will interact with the AuthorizerAdaptorEntrypoint at 0xf5dECDB1f3d1ee384908Fbe16D2F0348AE43a9eA and call performAction using 0xab8f0945 for the data(bytes) and pass 0x42a3290a65CA16Adaf161c6FfAfDBE0913A169F4 for the target(address) argument.