Time-vesting the Uniswap v3 staker

Hi folks! I’m Mario from Revert.

So, there’s a known issue with the current v3 staker which has been previously discussed in the forums. The gist is that the dominating strategy on staking programs is to have automated ulta-concentrated liquidity that just follows the current price.

Solutions have previously been proposed here in the forums, like having a “min range” for positions to be eliegible for staking.

Some weeks ago the Polygon DeFi team reached out to us, aware of the issues with the staker, and looking for an alternative solution to incentivize liquidity via individual LPs instead of liquidity managers or automated strategy operators, which seemed like a worthwhile challenge so we got to work.

Researching we ran across an idea first suggested by Moody Salem on the staker github.

The idea consists of time-vesting the rewards for the running incentive programs. They could be vested just over a few days, which would have been enough to prevent the 1-tick strategy in the RBN pool as these positions were usually out of range a few times per day. The vesting period could also be set for the full length of the incentives program, which should incentivize even wider liquidity across the price range.

We also liked this idea in that it does not set an all-or-nothing cutoff by range, nor by timeframe. As the diagrams below shows, rewards can be vested linearly, while the position is in range, from the block it was staked until the vesting period is complete, or the position is unstaked.

Attaching some images that might help explain how this works:

So we forked the v3 staker implementing this idea, and hopefully it can be merged upstream to the canonical staker.

The fork has already been audited by PeckShield, which was sponsored by Polygon under the grant programme for building on top of Uniswap v3, and the idea is to test this new staker with an upcoming Polygon liquidity mining program. You can read more on this blog post.

We believe this new staker will provide DAOs, or any organization, a new way to incentivize liquidity on Uniswap v3, while allowing the rewards to be distributed more widely to LPing asset holders instead of to only a few automated strategy operators.

Looking forward to comments and suggestions from the UNI community.