For the complete documentation index, see llms.txt. This page is also available as Markdown.

BondBooster

📄 View Source Code

Overview

BondBooster is a dynamic discount mechanism that incentivizes strategic bond purchases in the Ripe Protocol. It allows authorized users to purchase Ripe bonds at boosted rates during designated time periods, creating targeted incentives for protocol participants.

Core Functions:

  • Boost Configuration: Manages individual boost settings (ratios, limits, expiration) for authorized users

  • Usage Tracking: Monitors boost consumption to enforce limits and prevent abuse

  • Validation & Limits: Enforces protocol-wide and per-user constraints on boost ratios and usage

The contract implements time-based expiration, unit-based consumption tracking, configurable limits, batch operations, and comprehensive event logging to ensure controlled bond distribution while incentivizing strategic participation.

Architecture & Modules

BondBooster is built using a modular architecture with the following components:

Addys Module

  • Location: contracts/modules/Addys.vy

  • Purpose: Provides protocol-wide address resolution

  • Key Features:

    • Access to BondRoom address for permission validation

    • Switchboard validation for configuration updates

  • Exported Interface: Address utilities via addys.__interface__

DeptBasics Module

  • Location: contracts/modules/DeptBasics.vy

  • Purpose: Provides department-level functionality

  • Key Features:

    • Department interface compliance

    • No minting capabilities (boost only affects ratios)

  • Exported Interface: Department basics via deptBasics.__interface__

Module Initialization

System Architecture Diagram

Data Structures

BoosterConfig Struct

Individual user boost configuration:

State Variables

Public State Variables

  • config: HashMap[address, BoosterConfig] - Maps user addresses to boost configurations

  • unitsUsed: HashMap[address, uint256] - Tracks units consumed per user

  • maxBoostRatio: uint256 - Protocol-wide maximum boost ratio

  • maxUnits: uint256 - Protocol-wide maximum units per user

  • minLockDuration: uint256 - Minimum lock duration for boosts

Constants

  • MAX_BOOSTERS: uint256 = 50 - Maximum boosters in batch operations

Constructor

__init__

Initializes BondBooster with global limits.

Parameters

Name
Type
Description

_ripeHq

address

RipeHq registry address

_maxBoostRatio

uint256

Maximum allowed boost ratio

_maxUnits

uint256

Maximum units per user

_minLockDuration

uint256

Minimum lock duration for boosts

Returns

Constructor does not return any values

Access

Called only during deployment

Example Usage

Example Output: Contract deployed with boost system ready

Query Functions

getBoostRatio

Gets the current boost ratio for a user.

Parameters

Name
Type
Description

_user

address

User to check

_units

uint256

Units being requested (currently unused)

Returns

Type
Description

uint256

Boost ratio (0 if no boost or expired)

Access

Public view function

Example Usage

Example Output: Returns configured boost ratio or 0

isValidBooster

Validates a boost configuration.

Parameters

Name
Type
Description

_config

BoosterConfig

Configuration to validate

Returns

Type
Description

bool

True if configuration is valid

Access

Public view function

Example Usage

Usage Tracking Functions

addNewUnitsUsed

Records units consumed during bond purchase.

Parameters

Name
Type
Description

_user

address

User who consumed units

_newUnits

uint256

Units to add to consumption

Access

Only callable by BondRoom contract

Example Usage

Configuration Management Functions

setBondBooster

Sets boost configuration for a single user.

Parameters

Name
Type
Description

_config

BoosterConfig

Boost configuration

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • BondBoostModified - Contains user, ratio, max units, and expiry

Example Usage

setManyBondBoosters

Batch sets boost configurations.

Parameters

Name
Type
Description

_boosters

DynArray[BoosterConfig, 50]

List of configurations

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • BondBoostModified - One per configuration

  • ManyBondBoostersSet - Summary event

Example Usage

removeBondBooster

Removes boost configuration for a user.

Parameters

Name
Type
Description

_user

address

User to remove boost

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • BondBoostRemoved - Contains user address

Example Usage

removeManyBondBoosters

Batch removes boost configurations.

Parameters

Name
Type
Description

_users

DynArray[address, 50]

Users to remove

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • BondBoostRemoved - One per user removed

setMaxBoostAndMaxUnits

Updates global boost limits.

Parameters

Name
Type
Description

_maxBoostRatio

uint256

New maximum boost ratio

_maxUnitsAvail

uint256

New maximum units per user

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • MaxBoostAndMaxUnitsSet - Contains new limits

Example Usage

setMinLockDuration

Updates the minimum lock duration for boosts.

Parameters

Name
Type
Description

_minLockDuration

uint256

New minimum lock duration

Access

Only callable by Switchboard-registered contracts

Events Emitted

  • MinLockDurationSet - Contains new minimum lock duration

Example Usage

Validation Logic

Configuration Validation

A boost configuration is valid if:

  1. User address is not empty

  2. Boost ratio is between 1 and maxBoostRatio

  3. Expiration block is in the future

  4. Max units allowed is between 1 and maxUnits

Usage Validation

A user can receive boost if:

  1. They have a valid configuration

  2. Configuration hasn't expired

  3. They haven't exceeded their unit limit

Key Mathematical Functions

Boost Application

When BondRoom applies boost:

Where boostRatio of 20000 = 2x multiplier

Unit Consumption

Units typically represent Green tokens spent:

Security Considerations

  1. Permission Control: Only Switchboard can set configurations

  2. BondRoom Authority: Only BondRoom can update usage

  3. Limit Enforcement: Global and per-user limits prevent abuse

  4. Expiration: Time-based expiry prevents perpetual boosts

  5. Zero Prevention: Validates against zero values

Last updated