Skip to main content

OlympusHeart

Olympus Heart

Olympus Heart (Policy) Contract

The Olympus Heart contract provides keeper rewards to call the heart beat function which fuels Olympus market operations. The Heart orchestrates state updates in the correct order to ensure market operations use up to date information.

Methods

ROLES

function ROLES() external view returns (contract ROLESv1)

Returns

NameTypeDescription
_0contract ROLESv1undefined

activate

function activate() external nonpayable

Turns the heart on and resets the beatAccess restricted

This function is used to restart the heart after a pause

active

function active() external view returns (bool)

Status of the Heart, false = stopped, true = beating

Returns

NameTypeDescription
_0boolundefined

beat

function beat() external nonpayable

Beats the heartOnly callable when enough time has passed since last beat (determined by frequency variable)This function is incentivized with a token reward (see rewardToken and reward variables).

Triggers price oracle update and market operations

changeKernel

function changeKernel(contract Kernel newKernel_) external nonpayable

Function used by kernel when migrating to a new kernel.

Parameters

NameTypeDescription
newKernel_contract Kernelundefined

configureDependencies

function configureDependencies() external nonpayable returns (Keycode[] dependencies)

Define module dependencies for this policy.

Returns

NameTypeDescription
dependenciesKeycode[]- Keycode array of module dependencies.

deactivate

function deactivate() external nonpayable

Turns the heart offAccess restricted

Emergency stop function for the heart

frequency

function frequency() external view returns (uint256)

Heart beat frequency, in seconds

Returns

NameTypeDescription
_0uint256undefined

isActive

function isActive() external view returns (bool)

Easily accessible indicator for if a policy is activated or not.

Returns

NameTypeDescription
_0boolundefined

kernel

function kernel() external view returns (contract Kernel)

Returns

NameTypeDescription
_0contract Kernelundefined

lastBeat

function lastBeat() external view returns (uint256)

Timestamp of the last beat (UTC, in seconds)

Returns

NameTypeDescription
_0uint256undefined

requestPermissions

function requestPermissions() external view returns (struct Permissions[] permissions)

Function called by kernel to set module function permissions.

Returns

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

resetBeat

function resetBeat() external nonpayable

Unlocks the cycle if stuck on one side, eject functionAccess restricted

reward

function reward() external view returns (uint256)

Reward for beating the Heart (in reward token decimals)

Returns

NameTypeDescription
_0uint256undefined

rewardToken

function rewardToken() external view returns (contract ERC20)

Reward token address that users are sent for beating the Heart

Returns

NameTypeDescription
_0contract ERC20undefined

setRewardTokenAndAmount

function setRewardTokenAndAmount(contract ERC20 token_, uint256 reward_) external nonpayable

Sets the reward token and amount for the beat functionAccess restricted

Parameters

NameTypeDescription
token_contract ERC20- New reward token address
reward_uint256- New reward amount, in units of the reward token

withdrawUnspentRewards

function withdrawUnspentRewards(contract ERC20 token_) external nonpayable

Withdraws unspent balance of provided token to senderAccess restricted

Parameters

NameTypeDescription
token_contract ERC20undefined

Events

Beat

event Beat(uint256 timestamp_)

Parameters

NameTypeDescription
timestamp_uint256undefined

RewardIssued

event RewardIssued(address to_, uint256 rewardAmount_)

Parameters

NameTypeDescription
to_addressundefined
rewardAmount_uint256undefined

RewardUpdated

event RewardUpdated(contract ERC20 token_, uint256 rewardAmount_)

Parameters

NameTypeDescription
token_contract ERC20undefined
rewardAmount_uint256undefined

Errors

Heart_BeatAvailable

error Heart_BeatAvailable()

Heart_BeatStopped

error Heart_BeatStopped()

Heart_InvalidParams

error Heart_InvalidParams()

Heart_OutOfCycle

error Heart_OutOfCycle()

KernelAdapter_OnlyKernel

error KernelAdapter_OnlyKernel(address caller_)

Parameters

NameTypeDescription
caller_addressundefined

Policy_ModuleDoesNotExist

error Policy_ModuleDoesNotExist(Keycode keycode_)

Parameters

NameTypeDescription
keycode_Keycodeundefined