Defines the FeeSplitter contract that routes protocol revenue from the TreasuryV2 (LP-080) to downstream recipients. The primary split: 50% burn (deflationary, LP-079), 30% to the xLUX LiquidLUX vault (LP-094) as yield for stakers, and 20% to the DAO treasury for operational funding.
0x...dEa1 (LP-079) |
function distribute() external;
function setRatios(uint256 burnBps, uint256 vaultBps, uint256 daoBps) external onlyGovernance;
function recipients() external view returns (address burn, address vault, address dao);
distribute() is permissionless. Splits the contract's LUX balance and forwards to each recipient.setRatios() requires governance timelock. Sum must equal 10,000 bps (100%).
TreasuryV2 -> FeeSplitter.distribute()
|-- 50% -> DeadBurn (permanent destruction)
|-- 30% -> xLUX Vault (increases xLUX exchange rate)
|-- 20% -> DAO Treasury (operational fund)
The 30% routed to the xLUX vault increases the LUX backing per xLUX token. xLUX holders receive yield without claiming -- the exchange rate appreciates over time.
The governance can adjust ratios within bounds:
1. distribute() is idempotent and permissionless. MEV extractors calling it early is harmless.
2. Ratio changes are subject to 7-day governance timelock.
3. Zero-balance distribution is a no-op (no revert, no gas waste).
4. The contract holds no persistent state beyond the ratio configuration.
github.com/luxfi/standard/contracts/treasury/FeeSplitter.sol |github.com/luxfi/standard/contracts/staking/LiquidLUX.sol |Copyright (C) 2025-2026, Lux Partners Limited. All rights reserved.
Licensed under the MIT License.