This proposal builds on this robustness analysis, a discussion on oracle reliability and a discussion on swap liquidity. We propose modification to 1) the existing oracle voting participation incentives and 2) the existing cost structure for market
swap transactions.
1. Oracle voting incentives
Currently, validators choose to submit oracle votes every 1 minute, and validators voting within 2% of the elected median price get rewarded with spread fees from swaps coming in the next minute.
Problems:
- Incentives are uncertain. Although running an oracle takes similar effort to block validation (requires steady attention and honesty) the rewards are sporadic and unpredictable, which makes it difficult to invest time and resources to create an oracle.
- Market volatility (and infancy) hurts oracle voters, as many may not make it into the winning set even when they are voting honestly due to the volatility of sources
- The mechanism tends towards token inflation, as swaps tend to capturing arb, which inflates the number of tokens
Proposed modification:
- Slash low oracle availability: Validators that fail to submit honest (as defined in item 2) votes at least 5% of the last 1000 oracle votes get slashed.
-
Make oracle honesty relative: Validators whose votes are within
max(0.02, s)
from the elected median, wheres
is the stddev of the vote prices are eligible to get rewarded . - Burn spread fees: Instead of rewarding oracle participating validators with swap spread fees, burn it.
-
Reward seigniorage to oracle winners instead of burning: Instead of burning epochโs seigniorage *
reward-weight
, add it to an amortized reward pool where 1/100th of the pool is paid out as rewards to oracle ballot winners everyVotePeriod
2. Swap trading incentives
Currently, the system charges a gradient swap spread fee (2-10%) increasing as the supply change of Luna approximates a DailyChangeCap
. For example, if the DailyChangeCap
is 0.1%, the spread fee for swapping Luna to Terra increases up to 10% as Luna daily supply change gets closer to -0.1%, and and spread fee for swapping Terra to Luna increases up to 10% as Luna daily supply change gets closer to +0.1%.
Problems:
- The stability mechanism is powerless when the
DailyChangeCap
is hit. We need a way to facilitate swaps even if the cost of doing so is high. - If an attacker can manipulate one or more of Lunaโs markets more than the effective spread (2-10%), he can capture an arbitrage gain even if Terra is trading at the peg (this).
Proposed modification (borrowing from Uniswapโs book):
Let DailyChangeCap
= l
,
daily supply change of Luna be c
,
TERRA/LUNA exchange rate r
- Swapping
x
Terra costs: max(0.02, (c
+x
/r
) /l
) in spread. Intuitively, the spread goes up from 2% to 100% as Luna inflation approximates the cap. - Swapping
y
Luna costs: max(0.02, (c
+y
*r
) /l
) in spread. Intuitively, the spread goes up from 2% to 100% as Luna deflation approximates the cap. - Luna supply change tracking resets every 24 hours.
- The
DailyChangeCap
should be set to something much higher than what it is currently (0.1%) to 2%.