PriceProviderAggregator

Overview

License: MIT

contract PriceProviderAggregator is Initializable, AccessControlUpgradeable

The PriceProviderAggregator contract is the contract that provides the functionality of getting the latest price from different price providers.

Contract that provides the functionality of getting the latest price from different price providers.

Events info

SetTokenAndPriceProvider

event SetTokenAndPriceProvider(address indexed token, address indexed priceProvider)

Emitted when the price provider is set to a token.

Parameters:

NameTypeDescription

token

address

The address of the token whose price provider is set.

priceProvider

address

The address of the price provider.

SetPriceOracle

event SetPriceOracle(address indexed priceOracle)

Emitted when the priceOracle is set.

Parameters:

NameTypeDescription

priceOracle

address

The address of priceOracle contract.

SetPrimaryLendingPlatform

event SetPrimaryLendingPlatform(address indexed newPrimaryLendingPlatform)

Emitted when the primary lending platform address is set.

Parameters:

NameTypeDescription

newPrimaryLendingPlatform

address

The new address of the primary lending platform.

ChangeActive

event ChangeActive(address indexed priceProvider, address indexed token, bool active)

Emitted when the active status of a token changes.

Parameters:

NameTypeDescription

token

address

The address of the token whose active status has changed.

active

bool

The new active status of the token.

Constants info

MODERATOR_ROLE (0x797669c9)

bytes32 constant MODERATOR_ROLE = keccak256("MODERATOR_ROLE")

State variables info

priceOracle (0x2630c12f)

contract IPriceOracle priceOracle

primaryLendingPlatform (0x92641a7c)

contract IPrimaryLendingPlatform primaryLendingPlatform

tokenPriceProvider (0xa33540f1)

mapping(address => address) tokenPriceProvider

Modifiers info

onlyModerator

modifier onlyModerator()

Modifier to check if the caller has the MODERATOR_ROLE.

Functions info

initialize (0xc4d66de8)

function initialize(address newPriceOracle) public initializer

This function should only be called once during contract deployment. Initializes the contract by setting up the access control roles and assigning the default and moderator roles to the contract deployer.

Parameters:

NameTypeDescription

newPriceOracle

address

The address of the new PriceOracle contract.

setTokenAndPriceProvider (0x072f27b0)

function setTokenAndPriceProvider(
    address token,
    address priceProvider
) public onlyModerator

Sets price provider to token and its corresponding price provider.

Requirements:

  • The caller must be the moderator.

  • token cannot be the zero address.

  • priceProvider cannot be the zero address.

Parameters:

NameTypeDescription

token

address

the address of token.

priceProvider

address

the address of price provider. Should implement the interface of PriceProvider.

setPriceOracle (0x530e784f)

function setPriceOracle(address newPriceOracle) external onlyModerator

Sets new priceOracle contract. Requirements:

  • The caller must be the moderator.

  • newPriceOracle cannot be the zero address.

Parameters:

NameTypeDescription

newPriceOracle

address

The address of new PriceOracle contract.

setPrimaryLendingPlatform (0xe801734a)

function setPrimaryLendingPlatform(address plp) external onlyModerator

Sets the address of the primary lending platform contract.

Parameters:

NameTypeDescription

plp

address

The address of the primary lending platform contract.

Requirements:

  • plp cannot be the zero address. |

changeActive (0x3651084e)

function changeActive(
    address priceProvider,
    address token,
    bool active
) public onlyModerator

Allows the moderator to change the active status of a price provider for a specific token.

Requirements:

  • The caller must be the moderator.

  • The token's current price provider must match the provided price provider address.

Parameters:

NameTypeDescription

priceProvider

address

The address of the price provider to change the active status for.

token

address

The address of the token to change the active status for.

active

bool

The new active status to set for the price provider.

updateMultiFinalPrices (0x1e5f85e6)

function updateMultiFinalPrices(address[] memory token) external

Calculates and update multiple the final TWAP prices of a token.

Parameters:

NameTypeDescription

token

address[]

The token array needs to update the price.

getTokensUpdateFinalPrices (0xef290120)

function getTokensUpdateFinalPrices(
    address projectToken,
    address actualLendingToken,
    bool isBorrow
) public view returns (address[] memory tokens)

This function is called when performing operations using token prices, to determine which tokens will need to update their final price.

Parameters:

NameTypeDescription

projectToken

address

Address of the project token.

actualLendingToken

address

Address of the lending token.

isBorrow

bool

Whether getting the list of tokens for updateFinalPrices is related to the borrowing operation or not.

Return values:

NameTypeDescription

tokens

address[]

Array of tokens that need to update final price.

getPrice (0x41976e09)

function getPrice(
    address token
)
    public
    view
    returns (
        uint8 priceDecimals,
        uint64 timestamp,
        uint256 collateralPrice,
        uint256 capitalPrice
    )

Returns the most recent TWAP price or non-TWAP price of a token.

Formula: price = priceMantissa / (10 ** priceDecimals)

Parameters:

NameTypeDescription

token

address

The address of the token.

Return values:

NameTypeDescription

priceDecimals

uint8

The decimals of the price.

timestamp

uint64

The last updated timestamp of the price.

collateralPrice

uint256

The collateral price of the token.

capitalPrice

uint256

The capital price of the token.

getEvaluation (0x81fd01ea)

function getEvaluation(
    address token,
    uint256 tokenAmount
)
    external
    view
    returns (uint256 collateralEvaluation, uint256 capitalEvaluation)

returns the most TWAP price or non-TWAP price in USD evaluation of token by its tokenAmount

Parameters:

NameTypeDescription

token

address

the address of token to evaluate

tokenAmount

uint256

the amount of token to evaluate

Return values:

NameTypeDescription

collateralEvaluation

uint256

the USD evaluation of token by its tokenAmount in collateral price

capitalEvaluation

uint256

the USD evaluation of token by its tokenAmount in capital price

getMostEvaluation (0x894b23cd)

function getMostEvaluation(
    address token,
    uint256 tokenAmount
)
    external
    view
    returns (uint256 collateralEvaluation, uint256 capitalEvaluation)

returns the last stored TWAP price in USD evaluation of token by its tokenAmount

Parameters:

NameTypeDescription

token

address

the address of token to evaluate

tokenAmount

uint256

the amount of token to evaluate

Return values:

NameTypeDescription

collateralEvaluation

uint256

the USD evaluation of token by its tokenAmount in collateral price

capitalEvaluation

uint256

the USD evaluation of token by its tokenAmount in capital price

Last updated