BondVault
Source: contracts/peripherals/BondVault.sol · Guide: bonds · Upgradeable (UUPS proxy)
Functions that change state
Function
Who can call
Also
grantRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)initialize(address admin, address _reserveToken, uint64 _reserveWindow)Once, when the proxy is initialised
lendToPayoutPool(uint256 amount)Checked inside the function
recordPurchase(uint256 bondId, uint256 principal, uint256 faceValue, uint64 maturity)onlyRole(BOND_ROLE)renounceRole(bytes32 role, address account)Only the account renouncing its own role
repayFromPayoutPool(uint256 amount)Checked inside the function
repayReserve()Checked inside the function
revokeRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)roll(uint256 oldBondId, uint256 newBondId, uint256 newFaceValue, uint64 newMaturity)onlyRole(BOND_ROLE)setBackstops(address _treasury, address _assurancePool, address _payoutPool)onlyRole(OPERATOR_ROLE)setEncumbranceSource(address source, bytes32 kind)onlyRole(OPERATOR_ROLE)setReserveTerms(uint64 window, uint256 floorBps)onlyRole(OPERATOR_ROLE)settle(uint256 bondId, address to)onlyRole(BOND_ROLE)settleEarly(uint256 bondId, address to, uint256 presentValue)onlyRole(BOND_ROLE)upgradeTo(address newImplementation)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)upgradeToAndCall(address newImplementation, bytes data)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)payable
withdrawDeployable(uint256 amount, address to)onlyRole(TREASURY_ROLE)Read functions
Anyone can call these; they change nothing.
Function
Returns
assurancePool()address
BOND_ROLE()bytes32
collateralKind()bytes32
coversNearTermMaturities()bool
DEFAULT_ADMIN_ROLE()bytes32
deployableExcess()uint256
encumbranceSource()address
faceDueWithin(uint64 window)uint256 due
getRoleAdmin(bytes32 role)bytes32
hasRole(bytes32 role, address account)bool
held()uint256
lentToPayoutPool()uint256
MAX_RESERVE_FLOOR_BPS()uint256
MIN_RESERVE_FLOOR_BPS()uint256
minReserveBps()uint256
obligations(uint256)uint256 principal, uint256 faceValue, uint64 maturity, bool settled
OPERATOR_ROLE()bytes32
outstandingBonds()uint256[]
outstandingCount()uint256
owedToReserve()uint256
payoutPool()address
proxiableUUID()bytes32
requiredReserve()uint256
reserveToken()address
reserveWindow()uint64
supportsInterface(bytes4 interfaceId)bool
totalFaceOutstanding()uint256
totalFaceSettled()uint256
totalPrincipal()uint256
TREASURY_ROLE()bytes32
treasury()address
treasuryAvailable()uint256
uncoveredNearTerm()uint256
Events
Event
AdminChanged(address previousAdmin, address newAdmin)BackstopsUpdated(address treasury indexed, address assurancePool indexed, address payoutPool indexed)BeaconUpgraded(address beacon indexed)DeployableWithdrawn(address to indexed, uint256 amount)DrewFromReserve(uint256 amount, uint256 owed)DrewFromTreasury(uint256 amount)EncumbranceSourceUpdated(address source indexed, bytes32 kind)Initialized(uint8 version)LentToPayoutPool(uint256 amount, uint256 outstanding)PurchaseRecorded(uint256 bondId indexed, uint256 principal, uint256 faceValue, uint64 maturity)RepaidFromPayoutPool(uint256 amount, uint256 outstanding)RepaidReserve(uint256 amount, uint256 owed)ReserveTermsUpdated(uint64 window, uint256 minReserveBps)RoleAdminChanged(bytes32 role indexed, bytes32 previousAdminRole indexed, bytes32 newAdminRole indexed)RoleGranted(bytes32 role indexed, address account indexed, address sender indexed)RoleRevoked(bytes32 role indexed, address account indexed, address sender indexed)Rolled(uint256 oldBondId indexed, uint256 newBondId indexed, uint256 rolledPrincipal, uint256 newFaceValue, uint64 newMaturity)Settled(uint256 bondId indexed, address to indexed, uint256 faceValue)SettledEarly(uint256 bondId indexed, address to indexed, uint256 presentValue, uint256 faceValue)Upgraded(address implementation indexed)Errors
Error
BondVaultAlreadySettled(uint256 bondId)BondVaultBondExists(uint256 bondId)BondVaultBondPledged(uint256 bondId)BondVaultInsufficientFunds(uint256 held, uint256 required)BondVaultInvalidAddress()BondVaultReserveFloorOutOfBounds(uint256 bps)BondVaultUnknownBond(uint256 bondId)BondVaultWouldBreachReserve(uint256 deployable, uint256 requested)