[Proposal] Refund wstETH liquidity providers

In the first few weeks of January, engineers at Balancer Labs noticed the protocol fee collector contract was amassing relatively large amounts of wstETH, which was unexpected given the corresponding pool’s low trading volume.

Upon further investigation, it was detected that this happens because, when computing the fees it owes to the protocol the pool assumes that any increase in its value between two joins/exits is due to swap fees. This is however not true when pools contain tokens like wstETH, which increases in value over time. The combination of the protocol fee collection design and the rebasing nature of wstETH results in Balancer collecting a feee (set to 10% between Jan 4th and Feb 21st) of the wstETH appreciation.

However, at the time the Balancer app did not take this dimension into consideration when displaying the expected APR of the pool. A hotfix was deployed on Jan 21st to address this issue.

While this only has a minor effect on liquidity providers expected returns, we want to be fully transparent about the issue and present the community with an alternative to make liquidity providers whole. It would consist of refunding the protocol level fees collected from the wstETH pool over the period of time when the APR was incorrectly displayed on the frontend, plus a two week grace period.

Refunds would be computed in the following manner:

  • For every week $w$ between Jan 3rd and Feb 6th (5 weeks), compute the amount $A_w$ of wstETH received by the protocol fee collector (Dune Analytics)
  • Compute the amounts $a_{i,w}$ owed to each liquidity provider $i$, as if $A_w = \sum_i(a_{i,w})$ was uniformly owed over the entire week. This allows us to reuse the liquidity mining scripts to compute the distributions. (GitHub)
  • Compute the amounts $A_i = \sum_w(a_{i,w})$ owed to each liquidity provider $i$ (GitHub)

This results in 221 recipients, ~75% of which would be entitled to less than 0.01 wstETH, which suggests the best form of distribution would be an airdrop. Gas cost is estimated at ~6.000,000 million gas based on similar transactions, meaning 0.6 ETH if we assume 100 Gwei gas price, to be paid be the DAO’s Treasury.

If this proposal is approved by governance, 28.360863560000002 wstETH would be transferred from the protocol fee collector to the Baller’s liquidity mining distributor multisig, from where they’d be airdroppped to the recipients as per the report available here


OK, so the forum doesn’t like LaTeX markdown

1 Like

For clarity, the DAO Multisig (0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f) will initiate a transaction to the protocol fee collector (0xce88686553686DA562CE7Cea497CE749DA109f9F) calling the function withdrawCollectedFees with inputs:

tokens: [0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2]
amounts: [28360863560000002000, 600000000000000000]
recipient: 0xc38c5f97B34E175FFd35407fc91a937300E33860

I’ll include this under the Specification section on snapshot @markus



1 Like