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
  • Types of Fees
  • Fee Descriptions
  • Setting and Reading Fees
  • Fee Calculations and Distribution
  • Management Fee Collection
Edit on GitHub
  1. Managing a Node

Fees Configuration

Types of Fees

  1. Management Fee - Set by Node owner, charged on total assets

  2. Protocol Management Fee - Set by Registry owner, determines protocol's share of management fees

  3. Execution Fee - Set by Registry owner, charged on component investments

Fee Descriptions

Management Fee

An annual fee charged on the Node's total assets. The Node owner sets this rate and designates a fee recipient address. This fee is split between the Node owner and the protocol according to the protocol management fee ratio.

Protocol Management Fee

Determines what percentage of each Node's management fees go to the protocol. For example, if a Node charges 1% management fee and the protocol fee is 20%, then 0.2% goes to the protocol and 0.8% to the Node owner.

Execution Fee

A fee charged whenever assets are invested into components. This fee goes entirely to the protocol and is automatically deducted by Routers during investment operations. Not charged on withdrawals or redemptions.

Setting and Reading Fees

Node Owner Controls

// Set management fee rate
function setAnnualManagementFee(uint64 newAnnualManagementFee)
// Set fee recipient
function setNodeOwnerFeeAddress(address newNodeOwnerFeeAddress)

Registry Owner Controls

// Set protocol's share of management fees
function setProtocolManagementFee(uint64 newProtocolManagementFee)
// Set execution fee rate
function setProtocolExecutionFee(uint64 newProtocolExecutionFee)
// Set protocol fee recipient
function setProtocolFeeAddress(address newProtocolFeeAddress)

Fee Calculations and Distribution

Management Fee Collection

Management fees are calculated and collected by calling payManagementFees(), which can be executed by the Node owner or rebalancer outside of rebalance windows:

feeForPeriod = (annualManagementFee * totalAssets * timeSinceLastPayment) / (SECONDS_PER_YEAR * WAD)
protocolShare = feeForPeriod * protocolManagementFee / WAD
nodeOwnerShare = feeForPeriod - protocolShare

The calculated amounts are:

  1. Deducted from Node's reserve

  2. Protocol share sent to protocol fee address

  3. Remaining amount sent to Node owner fee address

Management Fee Collection

The payManagementFees() function:

function payManagementFees() external onlyOwnerOrRebalancer onlyWhenNotRebalancing returns (uint256 feeForPeriod)

Access Control

  • Can be called by Node owner or whitelisted rebalancer

  • Must be called outside rebalance window

  • Requires valid fee recipient addresses set for both Node owner and protocol

Function Behavior

  1. Updates totalAssets cache

  2. Calculates fee based on time since last payment:

    feeForPeriod = (annualManagementFee * cacheTotalAssets * (block.timestamp - lastPayment)) / (SECONDS_PER_YEAR * WAD)
  3. Splits fee between protocol and Node owner:

    protocolFeeAmount = feeForPeriod * protocolManagementFee / WAD
    nodeOwnerFeeAmount = feeForPeriod - protocolFeeAmount
  4. Updates lastPayment timestamp

  5. Transfers fees from reserve to recipients

  6. Reduces cacheTotalAssets by fee amount

Will revert if reserve balance insufficient to pay full fee amount.

Execution Fee Collection

Execution fees are automatically deducted during component investments:

executionFee = investmentAmount * protocolExecutionFee / WAD
finalInvestment = investmentAmount - executionFee

The Router:

  1. Calculates fee amount

  2. Deducts from investment amount

  3. Transfers fee to protocol address

  4. Proceeds with reduced investment

All fees require sufficient reserve balance and valid fee recipient addresses. Fee rates must be less than 100% (1e18).

PreviousReserve ManagementNextLiquidation Queue Configuration

Last updated 2 months ago