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;
}