Max Deposit Limits

Maximum Deposit Limits

Maximum deposit limits protect Nodes from excessive capital inflows that could impact strategy execution. Each Node enforces a configurable maximum deposit size that applies to all depositors, and automatically prevents deposits when pricing data is stale. This ensures fair and accurate pricing for depositors and incentivizes rebalancers to rebalance the Node in order to accept deposits.

Default Setting

In Node.sol, set during initialization:

function initialize(address escrow_) external onlyOwner {
    // ... other initialization
    maxDepositSize = 10_000_000 * 10 ** decimals();  // 10M units
    // ...
}

Configuration

Node owner can update:

function setMaxDepositSize(uint256 newMaxDepositSize) external onlyOwner {
    if (newMaxDepositSize > 1e36) revert ErrorsLib.ExceedsMaxDepositLimit();
    maxDepositSize = newMaxDepositSize;
    emit EventsLib.MaxDepositSizeSet(newMaxDepositSize);
}

Implementation

Deposit limits are enforced through ERC4626 max functions:

function maxDeposit(address /* controller */ ) public view returns (uint256 maxAssets) {
    return isCacheValid() ? maxDepositSize : 0;
}

function maxMint(address /* controller */ ) public view returns (uint256 maxShares) {
    return isCacheValid() ? convertToShares(maxDepositSize) : 0;
}

Key behaviors:

  • Returns 0 if cache is invalid (prevents deposits with stale pricing)

  • Cache validity checked via:

    function isCacheValid() public view returns (bool) {
        return (block.timestamp < lastRebalance + rebalanceWindow + rebalanceCooldown);
    }
  • Deposit and mint functions revert if amount exceeds max

  • Applied uniformly to all depositors

  • No minimum deposit size enforced

Last updated