Developer Docs
Search
K

Oracle

Oracle contract relying on Chainlink for price

Methods

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns

Name
Type
Description
_0
bytes32
undefined

EMERGENCY_ADMIN

function EMERGENCY_ADMIN() external view returns (bytes32)

Returns

Name
Type
Description
_0
bytes32
undefined

GOVERNANCE

function GOVERNANCE() external view returns (bytes32)

Returns

Name
Type
Description
_0
bytes32
undefined

assetToOracles

function assetToOracles(address) external view returns (uint24 heartBeat, contract AggregatorV3Interface aggregator, bool isVaultAsset, int256 fixedPrice)

Parameters

Name
Type
Description
_0
address
undefined

Returns

Name
Type
Description
heartBeat
uint24
undefined
aggregator
contract AggregatorV3Interface
undefined
isVaultAsset
bool
undefined
fixedPrice
int256
undefined

getPrice

function getPrice(address asset, int256 balance) external view returns (int256 price)
Get latest Chainlink price, except if a fixed price is defined for this asset
Use this getter for assets which are ERC-4626 vaultsPass the balance to account for slippage in the ERC4626 contract

Parameters

Name
Type
Description
asset
address
Address of asset to fetch price for
balance
int256
Balance is only being used by getPrice if asset is a ERC-4626 token. 1e18

Returns

Name
Type
Description
price
int256
undefined

getRoleAdmin

function getRoleAdmin(bytes32 role) external view returns (bytes32)
Returns the admin role that controls role. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

Name
Type
Description
role
bytes32
undefined

Returns

Name
Type
Description
_0
bytes32
undefined

gracePeriod

function gracePeriod() external view returns (uint256)

Returns

Name
Type
Description
_0
uint256
undefined

grantRole

function grantRole(bytes32 role, address account) external nonpayable
Grants role to account. If account had not been already granted role, emits a {RoleGranted} event. Requirements: - the caller must have role's admin role. May emit a {RoleGranted} event.

Parameters

Name
Type
Description
role
bytes32
undefined
account
address
undefined

hasRole

function hasRole(bytes32 role, address account) external view returns (bool)
Returns true if account has been granted role.

Parameters

Name
Type
Description
role
bytes32
undefined
account
address
undefined

Returns

Name
Type
Description
_0
bool
undefined

isEmergencyAdmin

function isEmergencyAdmin(address account) external view returns (bool)

Parameters

Name
Type
Description
account
address
undefined

Returns

Name
Type
Description
_0
bool
undefined

isGovernor

function isGovernor(address account) external view returns (bool)

Parameters

Name
Type
Description
account
address
undefined

Returns

Name
Type
Description
_0
bool
undefined

renounceRole

function renounceRole(bytes32 role, address account) external nonpayable
Revokes role from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role, emits a {RoleRevoked} event. Requirements: - the caller must be account. May emit a {RoleRevoked} event.

Parameters

Name
Type
Description
role
bytes32
undefined
account
address
undefined

revokeRole

function revokeRole(bytes32 role, address account) external nonpayable
Revokes role from account. If account had been granted role, emits a {RoleRevoked} event. Requirements: - the caller must have role's admin role. May emit a {RoleRevoked} event.

Parameters

Name
Type
Description
role
bytes32
undefined
account
address
undefined

sequencerUptimeFeed

function sequencerUptimeFeed() external view returns (contract AggregatorV3Interface)

Returns

Name
Type
Description
_0
contract AggregatorV3Interface
undefined

setFixedPrice

function setFixedPrice(address asset, int256 fixedPrice) external nonpayable
Set a fixed prices for assets which do not require a price feed (i.e. UA)
The decimals price must be 18 even if the original price feed is different, e.g. USDC/USD chainlink oracle decimals is 8 but if we set it a fixed price it must be 18 decimals.

Parameters

Name
Type
Description
asset
address
Address of asset to set a fixed price for
fixedPrice
int256
Price to choose as the fixed price. 18 decimals

setGracePeriod

function setGracePeriod(uint256 newGracePeriod) external nonpayable
Set grace period, i.e. a period that must be elapsed after the sequencer is back to fetch new price

Parameters

Name
Type
Description
newGracePeriod
uint256
Value of the new grace period. In seconds

setHeartBeat

function setHeartBeat(address asset, uint24 newHeartBeat) external nonpayable
Update the heartBeat parameter of an oracle. To be used only if Chainlink updates this parameter

Parameters

Name
Type
Description
asset
address
Address of asset to update the heartBeat from
newHeartBeat
uint24
Value of the new heartBeat. In seconds

setOracle

function setOracle(address asset, contract AggregatorV3Interface aggregator, uint24 heartBeat, bool isVault) external nonpayable
Add or update an oracle address

Parameters

Name
Type
Description
asset
address
Address of the asset to add an oracle for
aggregator
contract AggregatorV3Interface
Address of the Chainlink oracle
heartBeat
uint24
Minimum update frequency (in seconds)
isVault
bool
Whether the asset provided is a ERC-4626 vault

setSequencerUptimeFeed

function setSequencerUptimeFeed(contract AggregatorV3Interface newSequencerUptimeFeed) external nonpayable
Set sequencer uptime feed, i.e. an oracle like contract telling whether the L2 sequencer is up or not

Parameters

Name
Type
Description
newSequencerUptimeFeed
contract AggregatorV3Interface
Address of the sequencerUptimeFeed contract

supportsInterface

function supportsInterface(bytes4 interfaceId) external view returns (bool)
See {IERC165-supportsInterface}.

Parameters

Name
Type
Description
interfaceId
bytes4
undefined

Returns

Name
Type
Description
_0
bool
undefined

Events

AssetGotFixedPrice

event AssetGotFixedPrice(address asset, int256 fixedPrice)
Emitted when an asset got a fixed price when requesting an oracle

Parameters

Name
Type
Description
asset
address
undefined
fixedPrice
int256
undefined

GracePeriodUpdated

event GracePeriodUpdated(uint256 newGracePeriod)
Emitted when grace period is updated

Parameters

Name
Type
Description
newGracePeriod
uint256
undefined

HeartBeatUpdated

event HeartBeatUpdated(address asset, uint24 newHeartBeat)
Emitted when oracle heart beat is updated

Parameters

Name
Type
Description
asset
address
undefined
newHeartBeat
uint24
undefined

OracleUpdated

event OracleUpdated(address asset, contract AggregatorV3Interface aggregator, bool isVault)
Emitted when oracle heart beat is added or updated

Parameters

Name
Type
Description
asset
address
undefined
aggregator
contract AggregatorV3Interface
undefined
isVault
bool
undefined

RoleAdminChanged

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Parameters

Name
Type
Description
role indexed
bytes32
undefined
previousAdminRole indexed
bytes32
undefined
newAdminRole indexed
bytes32
undefined

RoleGranted

event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

Name
Type
Description
role indexed
bytes32
undefined
account indexed
address
undefined
sender indexed
address
undefined

RoleRevoked

event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

Name
Type
Description
role indexed
bytes32
undefined
account indexed
address
undefined
sender indexed
address
undefined

SequencerUptimeFeedUpdated

event SequencerUptimeFeedUpdated(contract AggregatorV3Interface newSequencerUptimeFeed)
Emitted when sequencer uptime feed is updated

Parameters

Name
Type
Description
newSequencerUptimeFeed
contract AggregatorV3Interface
undefined

Errors

Oracle_AggregatorZeroAddress

error Oracle_AggregatorZeroAddress()
Emitted when the proposed aggregator address is equal to the zero address

Oracle_AssetZeroAddress

error Oracle_AssetZeroAddress()
Emitted when the proposed asset address is equal to the zero address

Oracle_DataNotFresh

error Oracle_DataNotFresh()
Emitted when the latest round's data is older than the oracle's max refresh time

Oracle_GracePeriodNotOver

error Oracle_GracePeriodNotOver()
Emitted when Zksync sequencer hasn't been back up for long enough

Oracle_IncorrectGracePeriod

error Oracle_IncorrectGracePeriod()
Emitted when proposed grace period doesn't fit in the defined bounds

Oracle_IncorrectHeartBeat

error Oracle_IncorrectHeartBeat()
Emitted when the proposed heart beat is less than 1 sec second

Oracle_InvalidRoundPrice

error Oracle_InvalidRoundPrice()
Emitted when the latest round's price is invalid

Oracle_InvalidRoundTimestamp

error Oracle_InvalidRoundTimestamp()
Emitted when the latest round is incomplete

Oracle_SequencerDown

error Oracle_SequencerDown()
Emitted when Zksync sequencer is down

Oracle_SequencerUptimeFeedZeroAddress

error Oracle_SequencerUptimeFeedZeroAddress()
Emitted when the proposed sequencer uptime feed address is equal to the zero address

Oracle_UnsupportedAsset

error Oracle_UnsupportedAsset()
Emitted when owner tries to set fixed price to an unsupported asset

PRBMathSD59x18__AbsInputTooSmall

error PRBMathSD59x18__AbsInputTooSmall()
Emitted when the input is MIN_SD59x18.

PRBMathSD59x18__MulInputTooSmall

error PRBMathSD59x18__MulInputTooSmall()
Emitted when one of the inputs is MIN_SD59x18.

PRBMathSD59x18__MulOverflow

error PRBMathSD59x18__MulOverflow(uint256 rAbs)
Emitted when the intermediary absolute result overflows SD59x18.

Parameters

Name
Type
Description
rAbs
uint256
undefined

PRBMath__MulDivFixedPointOverflow

error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
Emitted when the result overflows uint256.

Parameters

Name
Type
Description
prod1
uint256
undefined

PRBMath__MulDivOverflow

error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
Emitted when the result overflows uint256.

Parameters

Name
Type
Description
prod1
uint256
undefined
denominator
uint256
undefined
Last modified 8mo ago