Aim Incentive Pendulum to target equilibrium of effective security bond and vault (RUNE value of assets) liquidity, rather than pooled RUNE liquidity
This line of thought is prompted by !3307 (closed)
'Vault assets for total provided liquidity'
(here, here)
though not currently closed by it,
and I suggest its implementation slot into the structure of !3347 (merged)
'Use both effectiveSecurityBond and totalEffectiveBond to calculate poolShare'
(as a separate MR after/if !3347 (merged) is merged).
Premise:
What is doing the securing is the effective security bond (lowest 2/3rds of node bonds summed);
what is being secured are the Layer 1 assets in the vaults (which the lowest 2/3rds of nodes are able to seize if financially advantageous).
What receives the Bond Module rewards is the total effective bond
(the summed bond of every node up to the bond amount of the highest-bond node in the lower 2/3rds)
and what receives the Pool Module rewards is the pooled liquidity in Available Layer 1 pools
(Layer 1 pools from getTotalProvidedLiquidityRune
here, Available filter here)
. (Note: Move the IsAvailable
check to within getTotalProvidedLiquidityRune
to consistently only sum RUNE which receives rewards.)
For instance, if the lowest 2/3rds would lose 100 million USD worth of RUNE to seize 110 million USD worth of vault assets,
but the pool RUNE depths only reflected 90 million USD worth of assets,
the network would be insecure while an Incentive Pendulum that only considered pooled RUNE and not vault assets would perceive it as still being secure.
There has always been some difference between vault Assets and pooled Assets depths due to queued swaps and scheduled outbounds
(and oversolvencies from MaxOutboundAttempts
-dropped outbounds),
but with the introduction of streaming swaps this has increased in magnitude and normality;
while any (Layer 1 to Layer 1) streaming swap is ongoing the value of the vault Assets is held outside the pools,
whether as pending input or pending partial success-outbound or pending partial refund.
In the same way that !3347 (merged) determines the equilibrium target according to securityBond and pooledRune ('totalLiquidity'),
then adjusts for that effectiveBond is what receives the rewards,
|
I suggest that a follow-up MR (!3307 (closed) or inheriting its will) slightly extend !3347 (merged)'s framework
to determine the equilibrium target according to securityBond and vaultLiquidity,
then adjust for that effectiveBond and pooledRune are what receive the rewards.
(As 'pooledLiquidity' if it were used would always be double pooledRune,
the equilibrium ideal is that securityBond = 2 * vaultLiquidity
and that pooledLiquidity and effectiveBond receive the same yield (RUNE rewards per RUNE liquidity).
As a hypothetical example for (certain code lines of) getPoolShare
:
if securityBond.LTE(vaultLiquidity) {
return cosmos.ZeroUint()
}
baseNodeShare := common.GetSafeShare(vaultLiquidity, securityBond, totalRewards)
basePoolShare := common.SafeSub(totalRewards, baseNodeShare)
adjustmentNodeShare := common.GetUncappedShare(effectiveBond, securityBond, baseNodeShare)
adjustmentPoolShare := common.GetSafeShare(pooledRune, vaultLiquidity, basePoolShare)
adjustmentRewards := adjustmentPoolShare.Add(adjustmentNodeShare)
return common.GetSafeShare(adjustmentPoolShare, adjustmentRewards, totalRewards)
Equilibrium example:
totalRewards = 156
pooledRune = 200 (so pooledLiquidity = 400, RUNE value of Asset and RUNE together)
vaultLiquidity = 300 (200 RUNE value of pooled Asset liquidity, 100 swallowed oversolvency)
securityBond = 600 (2 * vaultLiquidity)
effectiveBond = 900 (600 securityBond, 300 effective bonds of top 1/3rd of nodes)
|
baseNodeShare = (300 / 600) * 156 = 78
basePoolShare = 156 - 78 = 78
adjustmentNodeShare = (900 / 600) * 78 = 117
adjustmentPoolShare = (200 / 300) * 78 = 52
adjustmentRewards = 117 + 52 = 169
poolShare = (52 / 169) * 156 = 48 (so nodeShare = 156 - 48 = 108)
|
pooledLiquidity 400 gets 48 rewards (12 per 100)
effectiveBond 900 gets 108 rewards (12 per 100)
(equal yield)
Specifically: !3451 (merged)
'Aim Incentive Pendulum to target equilibrium of effective security bond and vault (RUNE value of assets) liquidity, rather than pooled RUNE liquidity'.