MissionControl

📄 View Source Codearrow-up-right

Overview

MissionControl is the central configuration hub for Ripe Protocol, storing all operational parameters, permissions, and behavioral rules. Every critical protocol decision - from asset deposits to liquidation strategies - is determined by configuration data stored here and accessed through its extensive query interface.

Core Responsibilities:

  • Global Configuration: Protocol-wide permissions, user limits, and operational rules

  • Asset Configuration: Per-asset settings for deposits, debt terms, LTVs, and liquidations

  • Delegation System: User permission grants for borrowing, withdrawals, and rewards

  • Rewards Configuration: Points allocation across borrowers, stakers, voters, and depositors

  • Advanced Features: Priority vaults, stability pools, bond markets, and dynamic rates

MissionControl implements read-only access for queries with writes restricted to Switchboard-registered contracts. Extensive bundling functions package related configurations for efficient consumption, while automatic asset registration and validation ensure data integrity across the protocol. It serves all major protocol components including CreditEngine, AuctionHouse, PriceDesk, and vault systems.

Architecture & Modules

MissionControl is built using a modular architecture that provides foundational department functionality:

Addys Module

  • Location: contracts/modules/Addys.vy

  • Purpose: Provides protocol-wide address resolution and validation

  • Key Features:

    • Access to all protocol contract addresses

    • Validation that only Switchboard-registered contracts can modify configurations

    • Centralized address management

  • Exported Interface: Address utilities via addys.__interface__

DeptBasics Module

  • Location: contracts/modules/DeptBasics.vy

  • Purpose: Provides department-level basic functionality

  • Key Features:

    • Pause mechanism for emergency stops

    • Department interface compliance

    • No minting capabilities (disabled for MissionControl)

  • Exported Interface: Department basics via deptBasics.__interface__

Module Initialization

System Architecture Diagram

Data Structures

Configuration Bundles

TellerDepositConfig Struct

Complete deposit operation configuration:

TellerWithdrawConfig Struct

Complete withdrawal operation configuration:

BorrowConfig Struct

Complete borrowing operation configuration:

GenLiqConfig Struct

Complete general liquidation configuration:

AssetLiqConfig Struct

Asset-specific liquidation configuration:

RewardsConfig Struct

Complete rewards system configuration:

Utility Structures

VaultData Struct

Vault identification and information:

PriceConfig Struct

Price oracle configuration:

PurchaseRipeBondConfig Struct

Bond market configuration:

State Variables

Global Configuration

  • genConfig: cs.GenConfig - Protocol-wide operational settings

  • genDebtConfig: cs.GenDebtConfig - Global debt and liquidation parameters

  • hrConfig: cs.HrConfig - Human resources configuration

  • ripeBondConfig: cs.RipeBondConfig - Bond market settings

Asset Management

  • assetConfig: HashMap[address, cs.AssetConfig] - Asset-specific configurations

  • assets: HashMap[uint256, address] - Asset registry (index to address)

  • indexOfAsset: HashMap[address, uint256] - Asset index lookup

  • numAssets: uint256 - Total registered assets

User Configuration

  • userConfig: HashMap[address, cs.UserConfig] - User-specific settings

  • userDelegation: HashMap[address, HashMap[address, cs.ActionDelegation]] - Delegation permissions

Rewards System

  • rewardsConfig: cs.RipeRewardsConfig - Rewards distribution settings

  • totalPointsAllocs: TotalPointsAllocs - Global point allocation tracking

Vault Configuration

  • ripeGovVaultConfig: HashMap[address, cs.RipeGovVaultConfig] - Governance vault settings

  • priorityLiqAssetVaults: DynArray[cs.VaultLite, PRIORITY_VAULT_DATA] - Priority liquidation vaults

  • priorityStabVaults: DynArray[cs.VaultLite, PRIORITY_VAULT_DATA] - Priority stability vaults

Access Control

  • canPerformLiteAction: HashMap[address, bool] - Lite action permissions

  • underscoreRegistry: address - Underscore registry address

  • trainingWheels: address - Training wheels contract address

  • shouldCheckLastTouch: bool - One-action-per-block enforcement

Price Configuration

  • priorityPriceSourceIds: DynArray[uint256, MAX_PRIORITY_PRICE_SOURCES] - Priority oracle IDs

Constants

  • MAX_VAULTS_PER_ASSET: uint256 = 10 - Maximum vaults per asset

  • MAX_PRIORITY_PRICE_SOURCES: uint256 = 10 - Maximum priority price sources

  • PRIORITY_VAULT_DATA: uint256 = 20 - Maximum priority vault entries

  • HUNDRED_PERCENT: uint256 = 100_00 - 100.00% in basis points

Inherited State Variables

From DeptBasics:

  • isPaused: bool - Department pause state

  • canMintGreen: bool - Set to False

  • canMintRipe: bool - Set to False

Constructor

__init__

Initializes MissionControl with RipeHq reference and default configurations.

Parameters

Name
Type
Description

_ripeHq

address

RipeHq contract address

_defaults

address

Defaults contract for initial configurations (optional)

Returns

Constructor does not return any values

Access

Called only during deployment

Example Usage

Example Output: Contract deployed with no minting capabilities, asset registry initialized at index 1, default configurations loaded if provided

Global Configuration Functions

setGeneralConfig

Updates the protocol's global operational configuration.

Parameters

Name
Type
Description

_config

cs.GenConfig

New general configuration

Returns

Function does not return any values

Access

Only callable by Switchboard-registered contracts

Example Usage

setGeneralDebtConfig

Updates global debt and liquidation parameters.

Parameters

Name
Type
Description

_config

cs.GenDebtConfig

New debt configuration

Returns

Function does not return any values

Access

Only callable by Switchboard-registered contracts

Example Usage

setHrConfig

Updates human resources configuration.

Parameters

Name
Type
Description

_config

cs.HrConfig

New HR configuration

Access

Only callable by Switchboard-registered contracts

setRipeBondConfig

Updates bond market configuration.

Parameters

Name
Type
Description

_config

cs.RipeBondConfig

New bond configuration

Access

Only callable by Switchboard-registered contracts

Asset Configuration Functions

setAssetConfig

Updates configuration for a specific asset, automatically registering it if new.

Parameters

Name
Type
Description

_asset

address

Asset address

_config

cs.AssetConfig

Asset configuration

Returns

Function does not return any values

Access

Only callable by Switchboard-registered contracts

Example Usage

deregisterAsset

Removes an asset from the registry.

Parameters

Name
Type
Description

_asset

address

Asset address to deregister

Returns

Type
Description

bool

True if successfully deregistered

Access

Only callable by Switchboard-registered contracts

Example Usage

User Configuration Functions

setUserConfig

Updates a user's personal configuration settings.

Parameters

Name
Type
Description

_user

address

User address

_config

cs.UserConfig

User configuration

Access

Only callable by Switchboard-registered contracts or Teller

Example Usage

setUserDelegation

Sets delegation permissions allowing another address to act on behalf of a user.

Parameters

Name
Type
Description

_user

address

User granting delegation

_delegate

address

Address receiving delegation

_config

cs.ActionDelegation

Delegation permissions

Access

Only callable by Switchboard-registered contracts or Teller

Example Usage

Rewards Configuration Functions

setRipeRewardsConfig

Updates the Ripe token rewards distribution configuration.

Parameters

Name
Type
Description

_config

cs.RipeRewardsConfig

Rewards configuration

Access

Only callable by Switchboard-registered contracts

Example Usage

Vault Configuration Functions

setRipeGovVaultConfig

Configures governance vault parameters for a specific asset.

Parameters

Name
Type
Description

_asset

address

Asset address

_assetWeight

uint256

Voting weight of asset

_shouldFreezeWhenBadDebt

bool

Freeze when bad debt exists

_lockTerms

cs.LockTerms

Lock duration parameters

Access

Only callable by Switchboard-registered contracts

setPriorityLiqAssetVaults

Sets priority vaults for liquidation asset processing.

Parameters

Name
Type
Description

_priorityLiqAssetVaults

DynArray[cs.VaultLite, PRIORITY_VAULT_DATA]

Priority vault list

Access

Only callable by Switchboard-registered contracts

setPriorityStabVaults

Sets priority vaults for stability pool operations.

Parameters

Name
Type
Description

_priorityStabVaults

DynArray[cs.VaultLite, PRIORITY_VAULT_DATA]

Priority stability vault list

Access

Only callable by Switchboard-registered contracts

Access Control Functions

setCanPerformLiteAction

Grants or revokes permission for lite actions.

Parameters

Name
Type
Description

_user

address

User address

_canDo

bool

Permission to grant or revoke

Access

Only callable by Switchboard-registered contracts

setTrainingWheels

Updates the training wheels contract address.

Parameters

Name
Type
Description

_trainingWheels

address

Training wheels contract address

Access

Only callable by Switchboard-registered contracts

setUnderscoreRegistry

Updates the underscore registry address.

Parameters

Name
Type
Description

_underscoreRegistry

address

Underscore registry address

Access

Only callable by Switchboard-registered contracts

setPriorityPriceSourceIds

Sets the priority order for price sources.

Parameters

Name
Type
Description

_priorityIds

DynArray[uint256, MAX_PRIORITY_PRICE_SOURCES]

Ordered list of price source IDs

Access

Only callable by Switchboard-registered contracts

setShouldCheckLastTouch

Enables or disables one-action-per-block enforcement.

Parameters

Name
Type
Description

_shouldCheck

bool

Whether to enforce one-action-per-block

Access

Only callable by Switchboard-registered contracts

Asset Query Functions

isSupportedAsset

Checks if an asset is registered in the protocol.

Parameters

Name
Type
Description

_asset

address

Asset address to check

Returns

Type
Description

bool

True if asset is supported

Access

Public view function

Example Usage

isSupportedAssetInVault

Checks if an asset is supported in a specific vault.

Parameters

Name
Type
Description

_vaultId

uint256

Vault ID

_asset

address

Asset address

Returns

Type
Description

bool

True if asset is supported in vault

Access

Public view function

getNumAssets

Returns the number of registered assets.

Returns

Type
Description

uint256

Number of registered assets

Access

Public view function

getFirstVaultIdForAsset

Returns the first vault ID that supports an asset.

Parameters

Name
Type
Description

_asset

address

Asset address

Returns

Type
Description

uint256

First vault ID (0 if no vaults support asset)

Access

Public view function

Teller Configuration Functions

getTellerDepositConfig

Returns complete configuration for deposit operations.

Parameters

Name
Type
Description

_vaultId

uint256

Target vault ID

_asset

address

Asset to deposit

_user

address

User making deposit

Returns

Type
Description

TellerDepositConfig

Complete deposit configuration bundle

Access

Public view function

Example Usage

getTellerWithdrawConfig

Returns complete configuration for withdrawal operations.

Parameters

Name
Type
Description

_asset

address

Asset to withdraw

_user

address

User owning the funds

_caller

address

Address initiating withdrawal

Returns

Type
Description

TellerWithdrawConfig

Complete withdrawal configuration bundle

Access

Public view function

Borrowing Configuration Functions

getDebtTerms

Returns debt terms for a specific asset.

Parameters

Name
Type
Description

_asset

address

Collateral asset address

Returns

Type
Description

cs.DebtTerms

Debt parameters including rates and LTV

Access

Public view function

getBorrowConfig

Returns complete borrowing configuration.

Parameters

Name
Type
Description

_user

address

User to borrow for

_caller

address

Address initiating borrow

Returns

Type
Description

BorrowConfig

Complete borrowing configuration bundle

Access

Public view function

maxLtvDeviation

Returns the maximum allowed LTV deviation.

Returns

Type
Description

uint256

Maximum LTV deviation in basis points

Access

Public view function

getRepayConfig

Returns repayment configuration for a user.

Parameters

Name
Type
Description

_user

address

User address

Returns

Type
Description

RepayConfig

Repayment configuration

Access

Public view function

Liquidation Configuration Functions

getGenLiqConfig

Returns complete general liquidation configuration.

Returns

Type
Description

GenLiqConfig

Complete liquidation configuration with priority vaults

Access

Public view function

Example Usage

getAssetLiqConfig

Returns asset-specific liquidation configuration.

Parameters

Name
Type
Description

_asset

address

Asset address

Returns

Type
Description

AssetLiqConfig

Asset-specific liquidation configuration

Access

Public view function

getGenAuctionParams

Returns general auction parameters.

Returns

Type
Description

cs.AuctionParams

Default auction parameters

Access

Public view function

getRedeemCollateralConfig

Returns configuration for collateral redemption.

Parameters

Name
Type
Description

_asset

address

Asset to redeem

_recipient

address

Recipient address

Returns

Type
Description

RedeemCollateralConfig

Collateral redemption configuration

Access

Public view function

getLtvPaybackBuffer

Returns the LTV payback buffer.

Returns

Type
Description

uint256

LTV payback buffer in basis points

Access

Public view function

getAuctionBuyConfig

Returns configuration for auction purchases.

Parameters

Name
Type
Description

_asset

address

Asset being auctioned

_recipient

address

Purchase recipient

Returns

Type
Description

AuctionBuyConfig

Auction purchase configuration

Access

Public view function

Stability Pool Configuration Functions

getStabPoolClaimsConfig

Returns configuration for stability pool claims.

Parameters

Name
Type
Description

_claimAsset

address

Asset being claimed

_claimer

address

User claiming rewards

_caller

address

Address initiating claim

_ripeToken

address

Ripe token address

Returns

Type
Description

StabPoolClaimsConfig

Stability pool claims configuration

Access

Public view function

getStabPoolRedemptionsConfig

Returns configuration for stability pool redemptions.

Parameters

Name
Type
Description

_asset

address

Asset to redeem

_recipient

address

Recipient address

Returns

Type
Description

StabPoolRedemptionsConfig

Stability pool redemption configuration

Access

Public view function

Rewards Query Functions

getClaimLootConfig

Returns configuration for loot (rewards) claiming.

Parameters

Name
Type
Description

_user

address

User claiming rewards

_caller

address

Address initiating claim

_ripeToken

address

Ripe token address

Returns

Type
Description

ClaimLootConfig

Loot claiming configuration

Access

Public view function

getRewardsConfig

Returns complete rewards system configuration.

Returns

Type
Description

RewardsConfig

Complete rewards configuration with point allocations

Access

Public view function

getDepositPointsConfig

Returns deposit points configuration for an asset.

Parameters

Name
Type
Description

_asset

address

Asset address

Returns

Type
Description

DepositPointsConfig

Deposit points configuration

Access

Public view function

Price and Bond Configuration Functions

getPriceConfig

Returns price oracle configuration.

Returns

Type
Description

PriceConfig

Price configuration with stale time and priority sources

Access

Public view function

getPriceStaleTime

Returns the maximum allowed price age.

Returns

Type
Description

uint256

Price stale time in seconds

Access

Public view function

getPurchaseRipeBondConfig

Returns bond market configuration for a user.

Parameters

Name
Type
Description

_user

address

User address

Returns

Type
Description

PurchaseRipeBondConfig

Complete bond market configuration

Access

Public view function

getDynamicBorrowRateConfig

Returns dynamic borrow rate configuration.

Returns

Type
Description

DynamicBorrowRateConfig

Dynamic rate parameters

Access

Public view function

Priority Data Functions

getPriorityPriceSourceIds

Returns the priority order of price sources.

Returns

Type
Description

DynArray[uint256, MAX_PRIORITY_PRICE_SOURCES]

Ordered list of price source IDs

Access

Public view function

getPriorityLiqAssetVaults

Returns priority vaults for liquidation asset processing.

Returns

Type
Description

DynArray[cs.VaultLite, PRIORITY_VAULT_DATA]

Priority liquidation vaults

Access

Public view function

getPriorityStabVaults

Returns priority vaults for stability pool operations.

Returns

Type
Description

DynArray[cs.VaultLite, PRIORITY_VAULT_DATA]

Priority stability vaults

Access

Public view function

Utility Functions

doesUndyLegoHaveAccess

Checks if an underscore lego contract has full access to a user's account.

Parameters

Name
Type
Description

_wallet

address

User wallet address

_legoAddr

address

Lego contract address

Returns

Type
Description

bool

True if lego has full access

Access

Public view function

Example Usage

Security Considerations

  1. Write Access Control: Only Switchboard-registered contracts can modify configuration data

  2. Asset Registration: Assets are automatically registered when first configured, ensuring data integrity

  3. Delegation System: Fine-grained delegation permissions with explicit action-level controls

  4. No Minting Capability: MissionControl cannot mint GREEN or RIPE tokens

  5. Configuration Validation: Asset indices start at 1 to allow 0 to indicate "not found"

  6. Priority Vault Limits: Maximum limits on priority vaults prevent unbounded gas consumption

  7. Pause Mechanism: Inherits pause capability from DeptBasics for emergency stops

  8. Training Wheels: Optional training wheels contract for additional operational controls

  9. Underscore Integration: Dedicated registry support for underscore protocol integration

Last updated