Defines sLUX, the liquid staking receipt token for Lux Network. Users deposit LUX into the StakingPool contract, which delegates to validators. In return, users receive sLUX at an exchange rate that appreciates as staking rewards accrue. sLUX is freely transferable, usable as DeFi collateral, and redeemable for the underlying LUX plus accumulated rewards.
contract StakingPool is ERC4626 {
function deposit(uint256 assets, address receiver) external payable returns (uint256 shares);
function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);
function totalAssets() external view returns (uint256); // staked LUX + pending rewards
}
exchangeRate = totalAssets() / totalSupply()
At genesis: 1 sLUX = 1 LUX. As validator rewards accumulate, totalAssets increases while totalSupply stays constant (no new sLUX minted for rewards). The exchange rate rises over time.
Example after 1 year at 8% APY: 1 sLUX = 1.08 LUX.
The StakingPool contract delegates to a curated set of validators selected by governance:
Delegation is spread across all qualifying validators proportionally, preventing stake centralization.
Redemption has a withdrawal delay matching the P-Chain unbonding period:
1. sLUX holders share slashing risk. If a delegated validator is slashed, totalAssets decreases and the exchange rate drops.
2. The validator selection set is updated by governance only. No single entity can redirect delegation.
3. The 14-day unbonding period prevents bank-run scenarios and matches the P-Chain security model.
4. The StakingPool contract is non-upgradeable. Migration requires deploying a new pool via governance.
github.com/luxfi/standard/contracts/staking/StakingPool.sol |Copyright (C) 2024-2026, Lux Partners Limited. All rights reserved.
Licensed under the MIT License.