Summary
This is my first proposal, from now on I will contribute regularly to Curve DAO.
I’m a long-term Curve Guy - in mid-February 2020, a month after curve’s launch, I provided liquidity for the first time. Since then, Curve has developed into a cornerstone of DeFi. You find me at @martinkrung, on tg, twitter and github.
As I do this the first time, please review.
I worked with contributors from steakhouse to execute this proposal for Lido/Curve. (With the support of Micheal)
DAO vote ( https://dao.curve.fi/vote/ownership/447 ) , includes 3 actions to allow Lido to reward liquidity with wstETH on the following pools:
- stETH old (ETH/stETH)
- stETH-ng (ETH/stETH)
- TricryptoLLAMA (crvUSD/tBTC/wstETH)
stETH old (ETH/stETH):
For the stETH legacy pool, steakhouse did deploy two new contracts. This is necessary because the reward token is now wstETH, in the last reward season has been LDO token. The only change made to this contract is replacing LDO with wstETH token in the New Curve Liquidity Farming Manager:
New Staking Reward Contract:
https://etherscan.io/address/0x4F48031B0EF8acCea3052Af00A3279fbA31b50D8#code
New Curve Liquidity Farming Manager:
https://etherscan.io/address/0x9d81153Ae611Aeb53e5f137b701C67c2EbffcDAE#code
You find more info about this change here: https://github.com/martinkrung/curve-dao-contracts-lido/tree/main/contracts/steth_reward
stETH-ng (ETH/stETH)
For this, add_reward(gauge_ng, reward_token_address, distributor_address) on the gauge has to be set. More details in specification below.
TricryptoLLAMA (crvUSD/tBTC/wstETH)
For this, add_reward(reward_token_address, distributor_address) on the gauge has to be set. More details in specification below.
Testing
I simulated all this on a forked mainnet, run this code to test it out: https://github.com/martinkrung/curve-dao-contracts-lido/blob/main/scripts/voting/new_vote_stETH-ETH_reward.py
You find an output here: Output from Simulation · Issue #3 · martinkrung/curve-dao-contracts-lido · GitHub
Motivation
Rewarding ETH/stETH liquidity, which leads to more capital in the pools and less slippage, benefits both Lido and Curve. Lido to incentivize TricryptoLLAMA, a pool with crvUSD pool benefits Curve and crvUSD.
Timeline
I will put the vote on-chain next Monday afternoon and then update the vote ID.
Specification
1. Action stETH ((ETH/stETH)) Pool
For this steackhous/Lido deployed a new StakingRewards and Curve Liquidity 0x4F48031B0EF8acCea3052Af00A3279fbA31b50D8
Curve Liquidity Farming Manager: 0x9d81153Ae611Aeb53e5f137b701C67c2EbffcDAE
This vote executes:
set_rewards(gauge_old, StakingRewardsContract, signature, reward_tokens),
on Gauge Owner 0x519AFB566c05E00cfB9af73496D00217A630e4D5
by Curve Ownership Agent 0x40907540d8a6C65c637785e8f8B742ae6b0b9968
with these arguments
st-ETH old gauge:
gauge_old = 0x182B723a58739a9c974cFDB385ceaDb237453c28
StakingRewardsContract = 0x4F48031B0EF8acCea3052Af00A3279fbA31b50D8
Signatures are used to call functions in the StakingRewards Contract
“a694fc3a2e1a7d4d3d18b9120000000000000000000000000000000000000000”
deposit_signature: 0xa694fc3a
withdraw_signature: 0x2e1a7d4d
withdraw_signature: 0x3d18b912
Signatures are the same, as the contract deployed is identical as last time, see this tx here:
0xff87625116cefee5dca4ed3285a76c807a7ce7f580f655eb20cde5357d7ba206
reward tokens: a list with length 8, and LDO token in the first, and wstETH in the second place
reward_tokens = 0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32, 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0x00…, 0x00…, 0x00…, 0x00…, 0x00…, 0x00… ]
distributor address is Lido: Rewards Committee Multisig
distributor_address = 0x87D93d9B2C672bf9c9642d853a8682546a5012B5
2. Action stETH-ng ((ETH/stETH)) Pool
This vote executes:
add_reward(gauge_ng, reward_token_address, distributor_address)
on Curve StableSwap Owner Proxy 0x742C3cF9Af45f91B109a81EfEaf11535ECDe9571
by Curve Ownership Agent 0x40907540d8a6C65c637785e8f8B742ae6b0b9968
with these arguments:
st-ETH ng gauge:
gauge_ng = 0x79F21BC30632cd40d2aF8134B469a0EB4C9574AA
reward token is wsETH
reward_token_address = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
distributor address is Lido: Rewards Committee Multisig
distributor_address = 0x87D93d9B2C672bf9c9642d853a8682546a5012B5
3. Action TricryptoLLAMA (crvUSD/tBTC/wstETH)
This vote executes
add_reward(reward_token_address, distributor_address)
on the gauge 0x60d3d7ebbc44dc810a743703184f062d00e6db7e
by Curve Ownership Agent 0x40907540d8a6C65c637785e8f8B742ae6b0b9968
with these arguments:
reward token is wsETH
reward_token_address = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
distributor address is Lido: Rewards Committee Multisig
distributor_address = 0x87D93d9B2C672bf9c9642d853a8682546a5012B5
Further Info
Lido will also reward liquidity for stETH/ETH pool on arbitrum and on optimism. As Lido Multisig is Gauge Manager on the two L2 they can execute this without the DAO help. A guide how to do this is here: Guide to Setting Token Rewards on a Gauge · Issue #2 · martinkrung/curve-dao-contracts-lido · GitHub