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
  • Node Reserve Management
  • Overview
  • Reserve Configuration
  • Reserve Mechanics
  • Asset Requirements
  • Reserve Calculations
  • Impact on Operations
Edit on GitHub
  1. Managing a Node

Reserve Management

Node Reserve Management

Overview

Each Node maintains a reserve of its underlying asset (e.g., USDC) to:

  • Process user withdrawals without incurring cost or slippage to interact with component protocols

  • Enable efficient rebalancing as excess reserve is allocated to underlying components per the strategy timing and percentage allocations.

  • Pay protocol and management fees

Reserve Configuration

Initial Setup

// During Node deployment
function deployFullNode(
    // ... other params ...
    uint64 targetReserveRatio,  // e.g., 0.1e18 for 10%
    // ... other params ...
)

Updating Reserve Target

function updateTargetReserveRatio(uint64 targetReserveRatio_) 
external onlyOwner onlyWhenNotRebalancing

Important:

  • Must be less than 100% (1e18)

  • Combined with component allocations must total 100% or startRebalance()will revert

  • Cannot update during rebalance window

Reserve Mechanics

Asset Requirements

  • The Reserve asset is Node's underlying node.asset()per ERC-4626 specifications

  • All node components must use same underlying asset as the reserve asset

Reserve Calculations

Pending Redemptions

When using a value for the reserve in calculations, the Node and all other protocol contracts will first subtract the asset value of any Node shares that are pending redemptions.

function getCashAfterRedemptions() public view returns (uint256) {
    uint256 balance = IERC20(asset).balanceOf(address(this));
    uint256 exitingAssets = convertToAssets(sharesExiting);
    return balance >= exitingAssets ? balance - exitingAssets : 0;
}

Claimable Redemptions

When an redeemRequest is made claimable for users the value of the redemption is transferred to the Escrow contract and is no longer calculated as part of the reserve

Impact on Operations

Rebalancing

  • Router's invest() function will revert if Node's reserve is below targetReserveRatio

  • Each investment attempt checks current reserve against target before proceeding

  • When components are liquidated, assets return to reserve for redemptions or reinvestment

Fee Payment

  • Management fees are deducted from reserve and split between Node owner and protocol

  • Protocol execution fee is taken from reserve before each component investment

  • Both fee types will revert if reserve balance insufficient to pay full amount

Redemptions

  • Rebalancer attempts to fulfill redemptions from reserve first

  • If reserve insufficient, follows liquidationQueue to determine which components to exit

  • Must process components in queue order - cannot skip to more liquid components

Swing Pricing

  • When reserve is below targetReserveRatio, withdrawals receive progressively worse pricing (up to maxSwingFactor penalty)

  • When reserve is below target, deposits receive better pricing for helping restore the reserve level

  • No swing pricing applied when reserve is at or above target ratio

  • All calculations handled by Quoter contract based on current reserve vs target ratio

PreviousReserve vs Component FulfillmentNextFees Configuration

Last updated 2 months ago