feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping
Core protocol changes for launch readiness: - OptimizerV3: binary bear/bull mapping from (staking%, avgTax) — avoids exploitable AW 30-90 kill zone. Bear: AS=30%, AW=100, CI=0, DD=0.3e18. Bull: AS=100%, AW=20, CI=0, DD=1e18. UUPS upgradeable with __gap[48]. - Directional VWAP: only records prices on ETH inflow (buys), preventing sell-side dilution of price memory - Floor formula: unified max(scarcity, mirror, clamp) — VWAP mirror uses distance from adjusted VWAP as floor distance, no branching - PriceOracle (M-1 fix): correct fallback TWAP divisor (60000s, not 300s) - Access control (M-2 fix): deployer-only guard on one-time setters - Recenter rate limit (M-3 fix): 60-second cooldown for open recenters - Safe fallback params: recenter() optimizer-failure defaults changed from exploitable CI=50%/AW=50 to safe bear-mode CI=0/AW=100 - Recentered event for monitoring and indexing - VERSION bump to 2, kraiken-lib COMPATIBLE_CONTRACT_VERSIONS updated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
21857ae8ca
commit
85350caf52
38 changed files with 3793 additions and 205 deletions
|
|
@ -51,11 +51,24 @@ Double-overflow scenarios requiring >1000x compression would need:
|
|||
- **Conclusion**: 1000x compression limit provides adequate protection against realistic scenarios
|
||||
|
||||
### Implementation Details
|
||||
**FLOOR Position Calculation:**
|
||||
**FLOOR Position Calculation (Unified Formula):**
|
||||
```
|
||||
FLOOR_PRICE = VWAP_PRICE * (0.7 + CAPITAL_INEFFICIENCY)
|
||||
floorTick = max(scarcityTick, mirrorTick, clampTick) toward KRK-cheap side
|
||||
```
|
||||
|
||||
Three signals determine the floor:
|
||||
- **scarcityTick**: derived from `vwapX96` and ETH/supply ratio. Dominates when ETH is scarce.
|
||||
- **mirrorTick**: `currentTick + |adjustedVwapTick - currentTick|` on KRK-cheap side. Reflects VWAP distance symmetrically. During sell pressure the mirror distance grows, resisting floor walkdown.
|
||||
- **clampTick**: minimum distance from anchor edge. `anchorSpacing = 200 + (34 × 20 × AW / 100)` ticks.
|
||||
|
||||
**VWAP Mirror Defense:**
|
||||
- During sell-heavy trading, the current tick drops but VWAP stays higher, so mirror distance *grows* — floor naturally resists being walked down.
|
||||
- CI controls mirror distance through `getAdjustedVWAP(CI)` with no magic numbers. CI=0% is safest (proven zero effect on fee revenue).
|
||||
|
||||
**Directional VWAP Recording:**
|
||||
- VWAP only records on ETH inflow (buys into the LM), preventing attackers from diluting VWAP with sells.
|
||||
- `shouldRecordVWAP` compares `lastRecenterTick` to current tick to detect direction.
|
||||
|
||||
**Protection Mechanism:**
|
||||
- VWAP provides "eternal memory" of historical trading activity
|
||||
- Compression algorithm ensures memory persists even under extreme volume
|
||||
|
|
@ -76,26 +89,26 @@ FLOOR_PRICE = VWAP_PRICE * (0.7 + CAPITAL_INEFFICIENCY)
|
|||
- **Average Tax Rate**: Weighted average of all staking tax rates
|
||||
- **Tax Rate Distribution**: Spread of tax rates across stakers
|
||||
|
||||
### Optimizer Integration
|
||||
**Sentiment Analysis:**
|
||||
```solidity
|
||||
function getLiquidityParams() returns (
|
||||
uint256 capitalInefficiency,
|
||||
uint256 anchorShare,
|
||||
uint24 anchorWidth,
|
||||
uint256 discoveryDepth
|
||||
) {
|
||||
// Analyze staking data to determine optimal liquidity parameters
|
||||
// Higher confidence (tax rates) → more aggressive positioning
|
||||
// Lower confidence → more conservative positioning
|
||||
}
|
||||
```
|
||||
### OptimizerV3 Integration
|
||||
**Direct 2D Binary Mapping (no intermediate score):**
|
||||
|
||||
OptimizerV3 reads `percentageStaked` and `averageTaxRate` from the Stake contract and maps them directly to one of two configurations:
|
||||
|
||||
- `staked ≤ 91%` → always **BEAR**: AS=30%, AW=100, CI=0, DD=0.3e18
|
||||
- `staked > 91%` → **BULL** if `deltaS³ × effIdx / 20 < 50`: AS=100%, AW=20, CI=0, DD=1e18
|
||||
|
||||
The binary step avoids the AW 40-80 kill zone where intermediate parameters are exploitable. Bull requires >91% staked with low enough tax; any decline snaps to bear instantly.
|
||||
|
||||
**Parameter Safety (proven via 1050-combo 4D sweep):**
|
||||
- CI=0% always (zero effect on fee revenue, maximum protection)
|
||||
- Fee revenue is parameter-independent (~1.5 ETH/cycle across all combos)
|
||||
- Safety comes entirely from the AS×AW configuration
|
||||
|
||||
### Economic Incentives
|
||||
- **Tax Revenue**: Funds protocol operations and incentivizes participation
|
||||
- **Staking Benefits**: Percentage ownership of total supply (rather than fixed token amounts)
|
||||
- **Prediction Market**: Tax rates create market-based sentiment signals
|
||||
- **Liquidity Optimization**: Sentiment data feeds into dynamic parameter adjustment
|
||||
- **Liquidity Optimization**: Sentiment data feeds into binary bear/bull parameter selection
|
||||
|
||||
## Position Dependencies Technical Details
|
||||
|
||||
|
|
@ -130,7 +143,7 @@ function getLiquidityParams() returns (
|
|||
### Key Contracts
|
||||
- **LiquidityManager.sol**: Core three-position strategy implementation
|
||||
- **VWAPTracker.sol**: Historical price memory and compression algorithm
|
||||
- **Optimizer.sol**: Sentiment analysis and parameter optimization
|
||||
- **OptimizerV3.sol**: Sentiment-driven binary bear/bull parameter selection (UUPS upgradeable)
|
||||
- **Stake.sol**: Harberger tax mechanism and sentiment data collection
|
||||
|
||||
### Analysis Tools
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue