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

Operator Permissions

PreviousMax Deposit LimitsNextEmergency Controls

Last updated 2 months ago

Node Operators

The Node implements the operator system to allow delegation of redemption management. Operators can request and claim redemptions on behalf of share owners.

Setting Operators

function setOperator(address operator, bool approved) external returns (bool) {
    if (msg.sender == operator) revert ErrorsLib.CannotSetSelfAsOperator();
    isOperator[msg.sender][operator] = approved;
    emit OperatorSet(msg.sender, operator, approved);
    return true;
}

Operator Permissions

Operators can:

  • Request redemptions for owner

  • Withdraw/claim assets for owner

function _validateController(address controller) internal view {
    if (controller == address(0)) revert ErrorsLib.ZeroAddress();
    if (controller != msg.sender && !isOperator[controller][msg.sender]) 
        revert ErrorsLib.InvalidController();
}

Usage Example

// Owner approves operator
node.setOperator(operatorAddress, true);

// Operator can then manage redemptions
function requestRedeem(uint256 shares, address controller, address owner) external {
    // Operator can call with controller = owner
}

function withdraw(uint256 assets, address receiver, address controller) external {
    // Operator can claim with controller = owner
}

Note: Operators cannot be set as self, and permissions can be revoked by setting approved to false.

ERC-7540