NashPoint
NashPoint
  • Introduction
    • Introduction To Nashpoint
    • Current Features & Capabilities
    • Post Launch Roadmap
  • User Documentation
    • Node Contract Overview
    • Node Owner & Rebalancer Roles
    • Portfolio Management
    • Rebalancing & Strategy Execution
    • User Deposits & Shares
    • Asynchronous Redemptions
      • Two Step Process
    • Swing Pricing
    • Processing User Redemptions
    • Management & Execution Fees
  • Developer Documentation
    • Overview
    • Role-Based Access Control
    • Smart Contract Architecture
  • Routers
    • ERC-4626 Router
    • ERC-7540 Router
    • Router Tolerance
  • Creating A Node
  • Asynchronous Redemptions
  • Managing a Node
    • Adding & Removing Components
    • Updating Component Allocations
    • Rebalance Window & Cooldown
    • Rebalancing a Node
    • Managing Rebalancers
    • Processing User Redemptions
      • Reserve vs Component Fulfillment
    • Reserve Management
    • Fees Configuration
    • Liquidation Queue Configuration
    • Max Deposit Limits
    • Operator Permissions
    • Emergency Controls
  • Upgrading a Node
    • Adding Quoters & Routers
    • Custom Router Development
    • Multi-Tier Permissioning
  • Cached Data & Gas Efficiency
  • Swing Pricing Calculations
  • Adding Routers and Components - Step by Step Guide
  • Node Execute Function
  • Resources
    • FAQ
    • Glossary
    • Supported Networks & Protocols
    • Deployments
    • Audits
    • GitHub
    • Telegram
    • NashPoint
  • Node Strategies
    • Test Node A
Powered by GitBook
On this page
Edit on GitHub
  1. Managing a Node

Liquidation Queue Configuration

Liquidation Queue

The liquidation queue determines the order in which components must be liquidated by the Rebalancer when processing redemptions. This enforces a predictable liquidation strategy and enables Node Owners to prioritize components based on liquidity costs, withdrawal delays, and other risk factors.

Configuration

Node owners set the queue order:

function setLiquidationQueue(address[] calldata newQueue) external onlyOwner

Requirements:

  • All addresses must be active components

  • No duplicate components

  • No zero addresses

  • Can be updated any time

Queue Enforcement

Components are checked against queue order via:

function enforceLiquidationOrder(address component, uint256 assetsToReturn) external view

This validates that no component earlier in the queue has sufficient assets to fulfill the redemption.

Router Implementations

ERC4626 Components

function fulfillRedeemRequest(address node, address controller, address component) external returns (uint256) {
    // Validate queue order
    INode(node).enforceLiquidationOrder(component, assetsRequested);

    // Liquidate full component balance if needed
    uint256 componentShares = IERC4626(component).balanceOf(address(node));
    
    // Execute immediate withdrawal
    assetsReturned = _liquidate(node, component, componentShares);
}

ERC7540 Components

function fulfillRedeemRequest(address node, address controller, address component) external returns (uint256) {
    // Validate queue order
    INode(node).enforceLiquidationOrder(component, assetsRequested);

    // Can only process already-claimable assets
    uint256 maxClaimableRedeemRequest = IERC7540Redeem(component).claimableRedeemRequest(0, node);
    uint256 maxClaimableAssets = IERC7575(component).convertToAssets(maxClaimableRedeemRequest);

    // Execute withdrawal of available assets
    assetsReturned = _executeAsyncWithdrawal(node, component, MathLib.min(assetsRequested, maxClaimableAssets));
}

Key differences:

  • ERC4626: Immediate withdrawals of full component balance

  • ERC7540: Only processes already-claimable assets

  • Both follow same queue order enforcement

  • Both revert if earlier component has sufficient balance

Example

For queue [A, B, C] where A is ERC7540 and B, C are ERC4626:

  1. Must check A's claimable balance first

  2. Can only use B if A's claimable balance insufficient

  3. Can only use C if both A and B insufficient

  4. Pending (non-claimable) balances in A don't block using B or C

This ensures predictable liquidation behavior while accommodating different component withdrawal mechanics.

PreviousFees ConfigurationNextMax Deposit Limits

Last updated 2 months ago