diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 8ee6bc5..dd4b178 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -17,7 +17,7 @@ Kraiken.sol (ERC-20 token) │ ├── Staking positions with tax rates │ ├── Snatch mechanics (competitive staking) │ └── getPercentageStaked(), getAverageTaxRate() -└── feeDestination: address (protocol revenue — fees go HERE, not back to holders) +└── feeDestination: address (protocol revenue — both WETH and KRK fees go HERE, not back to holders) Optimizer.sol (UUPS Upgradeable Proxy) ├── Reads: stake.getPercentageStaked(), stake.getAverageTaxRate() @@ -33,6 +33,9 @@ Optimizer.sol (UUPS Upgradeable Proxy) - **LiquidityManager → Kraiken**: exclusive minting/burning rights - **Optimizer → Stake**: reads sentiment data (% staked, avg tax rate) - **Optimizer upgrades**: UUPS proxy, admin-only `_authorizeUpgrade()` +- **feeDestination receives both WETH and KRK fees**: during `recenter()`, Uniswap V3 fee collection produces both tokens. WETH fees AND KRK fees are forwarded to `feeDestination` (see `LiquidityManager._scrapePositions()`). +- **feeDestination KRK excluded from outstanding supply**: `_getOutstandingSupply()` subtracts `kraiken.balanceOf(feeDestination)` before computing scarcity, because protocol-held KRK cannot be sold into the floor and should not inflate the supply count. +- **Staking pool KRK excluded from outstanding supply**: `_getOutstandingSupply()` also subtracts `kraiken.balanceOf(stakingPoolAddr)`, because staked KRK is locked and similarly cannot be sold into the floor. ## Three-Position Strategy diff --git a/docs/PRODUCT-TRUTH.md b/docs/PRODUCT-TRUTH.md index a6fb8be..8476991 100644 --- a/docs/PRODUCT-TRUTH.md +++ b/docs/PRODUCT-TRUTH.md @@ -59,6 +59,9 @@ when the protocol changes — not the marketing copy. - Trading fees are collected by the LiquidityManager during recenters - Fees are sent to `feeDestination` (protocol treasury / founders) - Fee revenue is the protocol's business model +- **Both WETH and KRK fees** from Uniswap V3 positions are forwarded to `feeDestination` — not just ETH/WETH +- KRK held at `feeDestination` is excluded from the outstanding supply calculation, because protocol-held KRK cannot be sold into the floor and should not inflate the scarcity metric +- KRK held in the staking pool is also excluded from the outstanding supply calculation for the same reason — staked KRK is locked and cannot be sold into the floor ❌ **Cannot say:** - "Fees grow your KRK value" — **FALSE.** Fees go to treasury, not back to holders.