BondBooster
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.vyPurpose: Provides protocol-wide address resolution
Documentation: See Addys Technical Documentation
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.vyPurpose: Provides department-level functionality
Documentation: See DeptBasics Technical Documentation
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 configurationsunitsUsed: HashMap[address, uint256]- Tracks units consumed per usermaxBoostRatio: uint256- Protocol-wide maximum boost ratiomaxUnits: uint256- Protocol-wide maximum units per userminLockDuration: uint256- Minimum lock duration for boosts
Constants
MAX_BOOSTERS: uint256 = 50- Maximum boosters in batch operations
Constructor
__init__
Initializes BondBooster with global limits.
Parameters
_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
_user
address
User to check
_units
uint256
Units being requested (currently unused)
Returns
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
_config
BoosterConfig
Configuration to validate
Returns
bool
True if configuration is valid
Access
Public view function
Example Usage
Usage Tracking Functions
addNewUnitsUsed
Records units consumed during bond purchase.
Parameters
_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
_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
_boosters
DynArray[BoosterConfig, 50]
List of configurations
Access
Only callable by Switchboard-registered contracts
Events Emitted
BondBoostModified- One per configurationManyBondBoostersSet- Summary event
Example Usage
removeBondBooster
Removes boost configuration for a user.
Parameters
_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
_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
_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
_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:
User address is not empty
Boost ratio is between 1 and maxBoostRatio
Expiration block is in the future
Max units allowed is between 1 and maxUnits
Usage Validation
A user can receive boost if:
They have a valid configuration
Configuration hasn't expired
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
Permission Control: Only Switchboard can set configurations
BondRoom Authority: Only BondRoom can update usage
Limit Enforcement: Global and per-user limits prevent abuse
Expiration: Time-based expiry prevents perpetual boosts
Zero Prevention: Validates against zero values
Last updated