LiquidityVault¶
The single user-facing contract in the Vault-K-NO system. All investor interactions, position management, pricing, and redemption logic are contained within this contract.
Design Rationale¶
Pricing and risk logic are intentionally internalized — there are no separate pricer or risk manager contracts. This design choice:
- Reduces cross-contract call overhead and gas costs
- Simplifies the audit surface to a single contract
- Eliminates state inconsistency between modules
Sections¶
| Section | Contents |
|---|---|
| State Variables | All storage variables and their types |
| Core Functions | deposit, requestWithdraw, processWithdrawals, cancelWithdraw |
| Position Management | openPosition, closePosition, writeOff, rebasePosition, reclaimSlot, emergencyLiquidate |
| Pricing Functions | Internal NAV, gap, and curve calculation logic |
| View Functions | All read-only query functions |
| Access Control | Who can call what |
| Events | All emitted events with parameters |
Quick Reference¶
contract LiquidityVault {
// Configuration
IERC20 public asset; // USDC
address public houseBuffer;
address public governance;
// Vault state
uint256 public totalShares;
uint256 public idleReserve;
uint256 public redeemedToday;
uint256 public dayStart;
// Position registry
Position[4] public positions;
// Withdrawal queue
mapping(uint256 => Request) public queue;
uint256 public nextRequestId;
uint256 public nextProcessId;
// Constants
uint256 constant dailyCapBps = 200;
uint256 constant liquidityFeeBps = 50;
uint256 constant reserveTargetBps = 1500;
uint256 constant MAX_POSITIONS = 4;
uint256 constant REBASE_COOLDOWN = 7 days;
uint256 constant PAUSE_GAP_BPS = 1500;
uint256 constant MAX_TOPUP_BPS = 1000;
}