Operator Permissions

Node Operators

The Node implements the ERC-7540 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.

Last updated