Skip to main content

BondManager

Git Source

Inherits: Policy, RolesConsumer

Title: Olympus Bond Manager

Olympus Bond Manager (Policy) Contract

State Variables

MINTR

MINTRv1 public MINTR

TRSRY

TRSRYv1 public TRSRY

bondCallback

IBondCallback public bondCallback

fixedExpiryAuctioneer

IBondAuctioneer public fixedExpiryAuctioneer

fixedExpiryTeller

IBondFixedExpiryTeller public fixedExpiryTeller

gnosisEasyAuction

IEasyAuction public gnosisEasyAuction

ohm

OlympusERC20Token public ohm

fixedExpiryParameters

FixedExpiryParameters public fixedExpiryParameters

batchAuctionParameters

BatchAuctionParameters public batchAuctionParameters

Functions

constructor

constructor(
Kernel kernel_,
address fixedExpiryAuctioneer_,
address fixedExpiryTeller_,
address gnosisEasyAuction_,
address ohm_
) Policy(kernel_);

configureDependencies

Define module dependencies for this policy.

function configureDependencies() external override returns (Keycode[] memory dependencies);

Returns

NameTypeDescription
dependenciesKeycode[]- Keycode array of module dependencies.

requestPermissions

Function called by kernel to set module function permissions.

function requestPermissions() external view override returns (Permissions[] memory requests);

Returns

NameTypeDescription
requestsPermissions[]- Array of keycodes and function selectors for requested permissions.

createFixedExpiryBondMarket

Creates a market on the Bond Protocol contracts to auction off OHM bonds

function createFixedExpiryBondMarket(uint256 capacity_, uint48 bondTerm_)
external
onlyRole("bondmanager_admin")
returns (uint256 marketId);

Parameters

NameTypeDescription
capacity_uint256The budget of OHM to payout through OHM bonds
bondTerm_uint48How long should the OHM be locked in the bond

createBatchAuction

Creates a bond token using Bond Protocol and creates a Gnosis Auction to sell it

function createBatchAuction(uint96 capacity_, uint48 bondTerm_)
external
onlyRole("bondmanager_admin")
returns (uint256 auctionId);

Parameters

NameTypeDescription
capacity_uint96The amount of OHM to use in the OHM bonds
bondTerm_uint48How long should the OHM be locked in the bond

closeFixedExpiryBondMarket

Closes the specified bond protocol market to prevent future purchases

function closeFixedExpiryBondMarket(uint256 marketId_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
marketId_uint256The ID of the Bond Protocol auction

settleBatchAuction

Settles the Gnosis Auction to find the clearing order and allow users to claim their bond tokens

function settleBatchAuction(uint256 auctionId_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
auctionId_uint256The ID of the Gnosis auction

setFixedExpiryParameters

Sets the parameters that will likely be consistent across Bond Protocol market launches

function setFixedExpiryParameters(
uint256 initialPrice_,
uint256 minPrice_,
uint48 auctionTime_,
uint32 debtBuffer_,
uint32 depositInterval_,
bool capacityInQuote_
) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
initialPrice_uint256The initial ratio of OHM to OHM bonds that the bonds will sell for
minPrice_uint256The minim ratio of OHM to OHM bonds that the bonds will sell for
auctionTime_uint48How long should the auctioning of the bond tokens last (should be less than planned bond terms)
debtBuffer_uint32Variable used to calculate maximum capacity (should generally be set to 100_000)
depositInterval_uint32Desired frequency of purchases
capacityInQuote_bool

setBatchAuctionParameters

Sets the parameters that will likely be consistent across Gnosis Auction launches

function setBatchAuctionParameters(
uint48 auctionCancelTime_,
uint48 auctionTime_,
uint96 minPctSold_,
uint256 minBuyAmount_,
uint256 minFundingThreshold_
) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
auctionCancelTime_uint48How long should users have to cancel their bids (should be less than auctionTime_)
auctionTime_uint48How long should the auctioning of the bond tokens last (should be less than planned bond terms)
minPctSold_uint96What percent of capacity is the minimum acceptable level to sell (2 decimals, i.e. 50 = 50%)
minBuyAmount_uint256Minimum purchase size (in OHM) from a user
minFundingThreshold_uint256Minimum funding threshold

setCallback

Sets the bond callback policy for use in minting upon Bond Protocol market purchases

function setCallback(IBondCallback newCallback_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
newCallback_IBondCallbackThe bond callback address to set

emergencyShutdownFixedExpiryMarket

Blacklists the specified market to prevent the bond callback from minting more OHM on purchases

function emergencyShutdownFixedExpiryMarket(uint256 marketId_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
marketId_uint256The ID of the Bond Protocol auction to shutdown

emergencySetApproval

Increases a contract's allowance to spend the Bond Manager's OHM

This shouldn't be needed but is a safegaurd in the event of accounting errors in the market creation functions

function emergencySetApproval(address contract_, uint256 amount_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
contract_addressThe contract to give spending permission to
amount_uint256The amount to increase the OHM spending permission by

emergencyWithdraw

Sends OHM from the Bond Manager back to the treasury

function emergencyWithdraw(uint256 amount_) external onlyRole("bondmanager_admin");

Parameters

NameTypeDescription
amount_uint256The amount of OHM to send to the treasury

Events

BondProtocolMarketLaunched

event BondProtocolMarketLaunched(uint256 marketId, address bondToken, uint256 capacity, uint48 bondTerm);

GnosisAuctionLaunched

event GnosisAuctionLaunched(uint256 marketId, address bondToken, uint96 capacity, uint48 bondTerm);

Errors

BondManager_TermTooShort

error BondManager_TermTooShort();

BondManager_InitialPriceTooLow

error BondManager_InitialPriceTooLow();

BondManager_DebtBufferTooLow

error BondManager_DebtBufferTooLow();

BondManager_AuctionTimeTooShort

error BondManager_AuctionTimeTooShort();

BondManager_DepositIntervalTooShort

error BondManager_DepositIntervalTooShort();

BondManager_DepositIntervalTooLong

error BondManager_DepositIntervalTooLong();

BondManager_CancelTimeTooLong

error BondManager_CancelTimeTooLong();

BondManager_MinPctSoldTooLow

error BondManager_MinPctSoldTooLow();

Structs

FixedExpiryParameters

struct FixedExpiryParameters {
uint256 initialPrice;
uint256 minPrice;
uint48 auctionTime;
uint32 debtBuffer;
uint32 depositInterval;
bool capacityInQuote;
}

BatchAuctionParameters

struct BatchAuctionParameters {
uint48 auctionCancelTime;
uint48 auctionTime;
uint96 minPctSold;
uint256 minBuyAmount;
uint256 minFundingThreshold;
}