I am putting forth a proposal for a system that is based on Curve Finance’s vote locking system that was originally brought up by community member Sisyphus. This proposal’s goal is to begin discussion by the community on whether it is the right choice to move forward on and how we would implement it. If you don’t feel like reading the docs, here is a brief TLDR based on them:
Curve employs two tokens CRV/veCRV (vesting CRV). CRV holders can vote lock their CRV into the Curve DAO to receive veCRV. The longer they lock for, the more veCRV they receive. Vote locking allows you to vote in governance, boost your CRV rewards and receive trading fees. The longer you lock your CRV for, the more voting power you have (and the bigger boost you can reach). You can vote lock 1,000 CRV for a year to have a 250 veCRV weight. Each CRV locked for four years (the maximum years allowed) is equal to 1 veCRV. Your voting weight decreases linearly over time.
Here are the contracts for Curve’s vesting escrow and voting escrow for those interested in checking out the code. I was pretty new to vyper when I started looking into this integration and was glad to have a reason to learn more about it.
A few important notes about Curve, these contracts, and decisions that will need to be made if the community decides to move forward:
- Curve uses Aragon for governance and these contracts are designed around that fact. Do we strip these features out or move towards adoption?
- Rewards given to veCRV holders include 50% of all Curve trading fees, and up to 2.5x more yield in Curve pools. They do this with the help of a partnership with Yearn (see also: https://crv.ape.tax/). How do we handle rewards for the vesting token holders for veBPRO?
- The checkpoint system that Curve implemented for boosting has some nuances that should be paid attention to. For instance, as new people vote lock more CRV, your boost will stay what it was when you applied it. If you abuse this, another user can kick and force a boost update to take you down to your real boost (see this also).
After reading the contracts, I believe that the idea behind veCRV has merit but will also need a decent amount of customization to make it work for BProtocol. For that reason I am indifferent towards the decision to move forward on it personally. I would instead like to hear what the community has to say since the initial signal vote was such a strong one for this idea. Let me know if you have any comments or questions and I will help the best I can.