Skip to content

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;
}