Skip to main content
Legacy architecture. Mellow-LRT is an earlier generation of Mellow vault infrastructure, documented for existing deployments. Core Vaults are Mellow’s current vault architecture.

Overview

The ManagedRatiosOracle contract provides ratio management for underlying tokens within a vault. It allows updating and retrieving target ratios for the vault’s assets using a 96-bit fixed-point precision system.

Key Features

  • Ratio Management: Sets and retrieves target ratios for vault tokens.

Error Definitions

  • InvalidLength: Raised if the number of ratios doesn’t match the number of underlying tokens or if data is absent.
  • InvalidToken: The token hash does not match the stored ratios data hash.
  • InvalidCumulativeRatio: The cumulative sum of ratios does not match the expected value.

Constants

  • Q96: Fixed-point scaling constant (2^96) used for precise ratio calculations.

Methods:

  1. Ratio Management
    • updateRatios(address, bool, uint128[]): Updates the target ratios for a specific vault.
      • vault: The address of the vault.
      • isDeposit: A boolean indicating whether the ratios are for a deposit or a withdrawal.
      • ratiosX96: An array of ratios, each with 96-bit precision.
      • Errors:
        • InvalidLength: The number of ratios does not match the number of tokens.
        • InvalidCumulativeRatio: Cumulative ratio sum does not match Q96.
    • getTargetRatiosX96(address, bool): Retrieves the target ratios for a given vault.
      • vault: The address of the vault.
      • isDeposit: A boolean indicating whether the ratios are for a deposit or a withdrawal.
      • Errors:
        • InvalidLength: Data is missing.
        • InvalidToken: The stored token hash does not match the current hash.
Data Structures
  • Data
    • tokensHash (bytes32): Keccak256 hash of the tokens array to ensure consistency.
    • ratiosX96 (uint128[]): An array of ratios with 96-bit precision.

Event

  • ManagedRatiosOracleUpdateRatios(address, bool, uint128[]): Emitted when the target ratios are updated for a vault.
    • vault: The address of the vault.
    • isDeposit: A boolean indicating whether the ratios are for a deposit or a withdrawal.
    • ratiosX96: An array of updated target ratios.