Objective:
This CMP seeks to modify and clarify [CMP #3] in two ways:
- Ensure there is always some liquidity for VOLTA to avoid volatility when computing the TWAP
- Define in depth how to compute the TWAP
Snapshot:
[CMP #7.1] Amendments to CMP #3
High Level Details:
This proposal is the same as CMP 7, but without changing the TWAP period.
“[CMP #3] - Protocol Compensation Overhaul” does specify exactly how the TWAP is calculated, this proposal has the goal of defining an in-depth method to calculate the TWAP and lower the volatility for the calculations by adding a small amount of protocol-owned liquidity for VOLTA.
Provide Low Level Details:
[CMP #3] remains in place except for the modifications listed. This proposal is effective immediately, Q1 included.
Additional liquidity
If the proposal passes, within 7 days the protocol must provide liquidity in the two biggest (at the time of the proposal passing) liquidity pools of VOLTA on Ethereum and Avalanche.
Pair 250 VOLTA with the corresponding amount of stables (in the 0-∞ range if it’s a v3-style pool that allows customizing the range) on each chain (Ethereum and Avalanche).
At the time of writing, this amounts to approximately $52k worth of liquidity ($26k worth of stables, $26k worth of VOLTA) on each chain.
The total of 500 VOLTA needed must be bought back by the treasury at the best price on the open market within 7 day and paired with the appropriate stablecoin(s). The Volta team is free to decide the best way to acquire said stablecoin(s) from the treasury.
The liquidity provided must be held by the treasury at all times and must not be removed unless another proposal states otherwise.
Calculating the TWAP
To calculate the TWAP, we must first define how to calculate the price at any given block of the chain.
The price at a given block is defined by the worth (in $) of the output that would be obtained by selling 1 VOLTA in the treasury-owned liquidity pool (mentioned above) of the given chain. Uniswap and other protocols provide contract functions to get a quote for selling a certain amount of tokens (for example, see Getting a Quote | Uniswap). Most RPC endpoints can simulate a call of a contract function at any given block.
The TWAP over any time period on a given chain must be calculated as follows.
Variables:
{start block}
: the block closest in time to the start of the TWAP period
{end block}
: the block closest in time to the start of the TWAP period
{block interval}
: divide 60 seconds by the average block time (in seconds) of the chain, rounding down (for example, if blocks on Ethereum take 12 seconds on average, {block interval}
would be 5)
TWAP: counting from block {start block}
, exactly every {block interval}
blocks take the price using the method defined above, stop before surpassing {end block}
, and compute the average of the price.
Pseudo-code:
current block = {start block}
total = 0
counted blocks = 0
while (current block < {end block}) {
total = total + price(block)
counted blocks = counted blocks + 1
current block = current block + {block interval}
}
TWAP = total / counted blocks
After calculating the TWAP on Ethereum and Avalanche separately, compute an equally-weighted average to obtain the final (global) TWAP used for calculating performance fees.
As further clarification for [CMP #3], which says:
“The performance fee will be capped at 80% of the liquid backing of Volta Club token in order to protect the interest of long term holders.”
The liquid backing used for capping the performance fee must be calculated on the last day of each quarter.