Concentrator has launched its innovative IFO with a small bit of fanfare, and it looks like Concentrator may be one of, if not the, fastest growing DeFi protocol on Ethereum right now! We’ve seen a surge in interest in our Discord for nitty-gritty details of how Concentrator works, so I’m going to go deep into the weeds and talk about some details here. The details here are more than most users want or need, so for the big picture, see the launch article. Also this will not be about the IFO specifically, but rather about Concentrator in general, and how it works. Let’s Dive In!
Boiling it down to the elevator pitch, Concentrator helps users earn the most cvxCRV from Convex vaults. Specifically (see diagram) this is achieved by harvesting all yields from Convex, swapping them to cvxCRV and staking them. To use Concentrator, farmers only need to deposit their Curve LPs (or zap in) and that’s it - Concentrator handles the rest. Behind the scenes, however, there’s more going on.
When a new deposit comes in, Concentrator automatically stakes it in the appropriate Convex pool, then periodically harvests and swaps the Convex rewards into aCRV. Over time depositors in these vaults will accrue aCRV. As you can see on the diagram, aCRV is a wrapper that contains staked cvxCRV which continuously compounds behind the scenes. Each time your LP vault is harvested (steps 2+3+4) your aCRV balance goes up, and each time the cvxCRV staking rewards are harvested (steps 5+3+4) the value of every aCRV goes up a little. The aCRV index tracks how much cvxCRV is staked in the aCRV contract as a fraction of the total aCRV supply. Each time cvxCRV staking rewards are harvested and compounded, the contract’s staked cvxCRV balance increases but the supply of aCRV doesn't change, so the index goes up. The index therefore tells you how much cvxCRV each aCRV is redeemable for at any given time. It is global, it’s the same for everyone, and only goes up over time.
The Concentrator UI shows your aCRV balance, which is the sum of aCRV in your wallet (if you previously claimed/withdrew it) and claimable aCRV that has been harvested from the vaults but not yet claimed from the vault contract. Notice that in the example image my balance is 37.7 aCRV, but because the Index is currently 1.1404 that aCRV is actually worth over 43 cvxCRV. (37.8 * 1.14 =~ 43).
Referring to the Concentrator Flow diagram above, harvesting is the term used to refer to either the combination of steps 2+3+4, or of steps 5+3+4. Basically harvesting means the claiming all rewards associated with a Convex pool, swapping them to cvxCRV and staking them. These steps happen all in a single transaction per Concentrator vault. Since vaults pool all deposits together, the harvest function acts on all rewards for all depositors in the vault being harvested. No matter who runs the harvest function, everybody in the vault benefits.
There are several important details about harvesting. First, each vault only tracks two numbers for each depositor: Total amount deposited, and total claimable (i.e. already harvested) aCRV. Since all funds are pooled together, and deposits can come and go between harvests, the vault can not track how much of the un-harvested rewards on the underlying Convex vault came from your deposit. When a harvest occurs, it is divided between all depositors in the vault based on their total amount deposited at the moment of harvest.
As you can see, it’s impossible to predict precisely how much you will receive in the next harvest unless the next harvest is happening right now. The estimate of how much you would receive if the harvest happened right now is shown in the withdraw window for each vault, labelled “Harvest before withdraw will get:”. Rewards that have been harvested are all yours and will remain claimable from the contract even if you withdraw, but you only get a share of the next harvest if you’re actually in the pool when the harvest happens. So if you will be getting a large quantity of aCRV from the next harvest, it may be worth it for you to pay gas to run the Harvest function yourself.
You may ask, why not harvest automatically with every withdrawal? Harvesting is gas intensive. It involves making several Ethereum mainnet transactions. While auto-compounders running on cheap side chains or roll-ups can get away with building an automatic harvest into every withdrawal, on Ethereum mainnet this would be horrible UX, especially for small depositors. For smaller depositors, it is unlikely that their share of the harvest would be worth the gas cost to harvest, unless (segue!) the harvest bounty was already quite large.
The harvest bounty is the main reason that anybody ever runs the harvest. Whoever runs and pays gas for the harvest transaction receives 1% of the harvested aCRV as a reward/bounty. As the size of the harvest (i.e. the total value of the unharvested rewards) increases, so too does the size of the bounty. Eventually the unharvested rewards accrue to the level where the 1% bounty is more valuable than the gas cost. This general mechanism (often the runner is called a keeper) is the standard way that DeFi automates functions to happen without requiring central control, and typically there are bots monitoring the contracts and competing to be the first to run these functions for a profit.
As you can see, this harvest bounty dynamic makes it very difficult to predict when harvests will actually be run. Generally harvests happen when un-harvested rewards are high enough and/or gas is low enough to make the transaction profitable. But, they may also happen when a large depositor wishes to exit a pool, and their share of the next harvest plus the bounty is high enough to cover the gas fee.
The only way the platform (and the future veCTR token holders!) earns revenue is from the performance fee. This is the fee collected by the platform each time a harvest is run. Referring back to the Concentrator flow diagram, we recall that a “harvest” refers to steps 2+3, whether they are swapping vault rewards or the cvxCRV staking rewards which back the aCRV token. The performance fee only applies to the harvested rewards, never to the principal deposit.
Important Note: During the IFO only this fee is effectively zero since the platform is giving out CTR for each aCRV harvested!
The harvest bounty is fully described in the Harvest section, but it adds 1% to the total fees charged on each harvest. The harvest bounty is additive with the performance fee.
The withdrawal fee is different from the other two fees in two important ways 1) the fee is paid from one member of the pool to all the rest and 2) it is charged on the principal amount rather than the harvested amount. Withdrawal fees vary from pool to pool between 0.01% and 0.5%.
Withdrawal fees have a very specific purpose. In the Harvests section, I described how harvest yields are distributed among depositors based on their deposited amount at the time of the harvest. This dynamic can be exploited. Imagine if a pool had some rewards that are as of yet unharvested. If someone made a large deposit and immediately ran a harvest, they would receive a proportional share of that harvest, even though their deposit didn’t actually earn any of those rewards. That person could then withdraw their principal and claim their (un-earned) share of the harvest. This exploit could be automated by bots and run on every harvest (ever heard of MEV?) and the vaults would basically never work correctly.
The ideal withdrawal fee is set to approximately the same amount as one single harvest, and at this level the exploit I described becomes unprofitable. If anyone were to attempt it, as soon as they withdrew their stake the withdrawal fee (remember it is distributed to the other depositors in the pool) would essentially give all their ill-gotten gains back to the pool.
Optimal withdrawal fees will vary based on TVL and APR of a given pool so for Concentrator these may be tweaked over time, but the protocol is only incentivized to set them such that they are sufficient to stop the exploit without being high enough to unduly hurt regular users. For long-term depositors that will remain in the pool for many harvests, the withdrawal fee will be negligible.
For depositors, the general trade-off of using Concentrator is that they give up a small fraction of rewards (10%+1%) in exchange for boosted yields compounded without any gas costs or hassle. Their principal is safe (withdrawal fee notwithstanding). Non-whales simply earn more by using Concentrator, even after fees. For really big accounts who don’t blink an eye at gas fees for multiple mainnet transactions every day or two, such as whales or DAOs managing big treasuries, the hassle saved by automating these processes is also very valuable. (See Concentrator is for DAOs)