GNSPriceAggregator

Facet #10: Price aggregator (does the requests to the Chainlink DON, takes the median, and executes callbacks)

constructor

constructor() public

initializePriceAggregator

function initializePriceAggregator(address _linkToken, contract IChainlinkFeed _linkUsdPriceFeed, uint24 _twapInterval, uint8 _minAnswers, address[] _nodes, bytes32[2] _jobIds, uint8[] _collateralIndices, struct IPriceAggregator.LiquidityPoolInput[] _gnsCollateralLiquidityPools, contract IChainlinkFeed[] _collateralUsdPriceFeeds) external

Initializes price aggregator facet

Parameters

Name
Type
Description

_linkToken

address

LINK token address

_linkUsdPriceFeed

contract IChainlinkFeed

LINK/USD price feed address

_twapInterval

uint24

TWAP interval (seconds)

_minAnswers

uint8

answers count at which a trade is executed with median

_nodes

address[]

_jobIds

bytes32[2]

chainlink job ids (market/lookback)

_collateralIndices

uint8[]

collateral indices

_gnsCollateralLiquidityPools

corresponding GNS/collateral liquidity pool values

_collateralUsdPriceFeeds

contract IChainlinkFeed[]

corresponding collateral/USD chainlink price feeds

updateLinkUsdPriceFeed

function updateLinkUsdPriceFeed(contract IChainlinkFeed _value) external

Updates LINK/USD chainlink price feed

Parameters

Name
Type
Description

_value

contract IChainlinkFeed

new value

updateCollateralUsdPriceFeed

function updateCollateralUsdPriceFeed(uint8 _collateralIndex, contract IChainlinkFeed _value) external

Updates collateral/USD chainlink price feed

Parameters

Name
Type
Description

_collateralIndex

uint8

collateral index

_value

contract IChainlinkFeed

new value

updateCollateralGnsLiquidityPool

function updateCollateralGnsLiquidityPool(uint8 _collateralIndex, struct IPriceAggregator.LiquidityPoolInput _liquidityPoolInput) external

Updates collateral/GNS liquidity pool

Parameters

Name
Type
Description

_collateralIndex

uint8

collateral index

_liquidityPoolInput

new values

updateTwapInterval

function updateTwapInterval(uint24 _twapInterval) external

Updates TWAP interval

Parameters

Name
Type
Description

_twapInterval

uint24

new value (seconds)

updateMinAnswers

function updateMinAnswers(uint8 _value) external

Updates minimum answers count

Parameters

Name
Type
Description

_value

uint8

new value

addOracle

function addOracle(address _a) external

Adds an oracle

Parameters

Name
Type
Description

_a

address

new value

replaceOracle

function replaceOracle(uint256 _index, address _a) external

Replaces an oracle

Parameters

Name
Type
Description

_index

uint256

oracle index

_a

address

new value

removeOracle

function removeOracle(uint256 _index) external

Removes an oracle

Parameters

Name
Type
Description

_index

uint256

oracle index

setMarketJobId

function setMarketJobId(bytes32 _jobId) external

Updates market job id

Parameters

Name
Type
Description

_jobId

bytes32

new value

setLimitJobId

function setLimitJobId(bytes32 _jobId) external

Updates lookback job id

Parameters

Name
Type
Description

_jobId

bytes32

new value

getPrice

function getPrice(uint8 _collateralIndex, uint16 _pairIndex, struct ITradingStorage.Id _tradeId, struct ITradingStorage.Id _orderId, enum ITradingStorage.PendingOrderType _orderType, uint256 _positionSizeCollateral, uint256 _fromBlock) external virtual

Requests price from oracles

Parameters

Name
Type
Description

_collateralIndex

uint8

collateral index

_pairIndex

uint16

pair index

_tradeId

trade id

_orderId

order id

_orderType

enum ITradingStorage.PendingOrderType

order type

_positionSizeCollateral

uint256

position size (collateral precision)

_fromBlock

uint256

block number from which to start fetching prices (for lookbacks)

fulfill

function fulfill(bytes32 _requestId, uint256 _priceData) external

Fulfills price request, called by chainlink oracles

Parameters

Name
Type
Description

_requestId

bytes32

request id

_priceData

uint256

price data

function claimBackLink() external

Claims back LINK tokens, called by gov fund

getLinkFee

function getLinkFee(uint8 _collateralIndex, address _trader, uint16 _pairIndex, uint256 _positionSizeCollateral) external view returns (uint256)

Returns LINK fee for price request

Parameters

Name
Type
Description

_collateralIndex

uint8

collateral index

_trader

address

trader address

_pairIndex

uint16

pair index

_positionSizeCollateral

uint256

position size in collateral tokens (collateral precision)

getCollateralPriceUsd

function getCollateralPriceUsd(uint8 _collateralIndex) external view returns (uint256)

Returns collateral/USD price

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

getUsdNormalizedValue

function getUsdNormalizedValue(uint8 _collateralIndex, uint256 _collateralValue) external view returns (uint256)

Returns USD normalized value from collateral value

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

_collateralValue

uint256

collateral value (collateral precision)

getCollateralFromUsdNormalizedValue

function getCollateralFromUsdNormalizedValue(uint8 _collateralIndex, uint256 _normalizedValue) external view returns (uint256)

Returns collateral value (collateral precision) from USD normalized value

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

_normalizedValue

uint256

normalized value (1e18 USD)

getGnsPriceUsd

function getGnsPriceUsd(uint8 _collateralIndex) external view virtual returns (uint256)

Returns GNS/USD price based on GNS/collateral price

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

getGnsPriceUsd

function getGnsPriceUsd(uint8 _collateralIndex, uint256 _gnsPriceCollateral) external view returns (uint256)

Returns GNS/USD price based on GNS/collateral price

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

_gnsPriceCollateral

uint256

GNS/collateral price (1e10)

getGnsPriceCollateralIndex

function getGnsPriceCollateralIndex(uint8 _collateralIndex) external view virtual returns (uint256)

Returns GNS/collateral price

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

getGnsPriceCollateralAddress

function getGnsPriceCollateralAddress(address _collateral) external view virtual returns (uint256)

Returns GNS/collateral price

Parameters

Name
Type
Description

_collateral

address

address of the collateral

getLinkUsdPriceFeed

function getLinkUsdPriceFeed() external view returns (contract IChainlinkFeed)

Returns the link/usd price feed address

getTwapInterval

function getTwapInterval() external view returns (uint24)

Returns the twap interval in seconds

getMinAnswers

function getMinAnswers() external view returns (uint8)

Returns the minimum answers to execute an order and take the median

getMarketJobId

function getMarketJobId() external view returns (bytes32)

Returns the market job id

getLimitJobId

function getLimitJobId() external view returns (bytes32)

Returns the limit job id

getOracle

function getOracle(uint256 _index) external view returns (address)

Returns a specific oracle

Parameters

Name
Type
Description

_index

uint256

index of the oracle

getOracles

function getOracles() external view returns (address[])

Returns all oracles

getCollateralGnsLiquidityPool

function getCollateralGnsLiquidityPool(uint8 _collateralIndex) external view returns (struct IPriceAggregator.LiquidityPoolInfo)

Returns collateral/gns liquidity pool info

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

getCollateralUsdPriceFeed

function getCollateralUsdPriceFeed(uint8 _collateralIndex) external view returns (contract IChainlinkFeed)

Returns collateral/usd chainlink price feed

Parameters

Name
Type
Description

_collateralIndex

uint8

index of collateral

getPriceAggregatorOrder

function getPriceAggregatorOrder(bytes32 _requestId) external view returns (struct IPriceAggregator.Order)

Returns order data

Parameters

Name
Type
Description

_requestId

bytes32

index of collateral

getPriceAggregatorOrderAnswers

function getPriceAggregatorOrderAnswers(struct ITradingStorage.Id _orderId) external view returns (struct IPriceAggregator.OrderAnswer[])

Returns order data

Parameters

Name
Type
Description

_orderId

order id

getChainlinkToken

function getChainlinkToken() external view returns (address)

Returns chainlink token address

getRequestCount

function getRequestCount() external view returns (uint256)

Returns requestCount (used by ChainlinkClientUtils)

getPendingRequest

function getPendingRequest(bytes32 _id) external view returns (address)

Returns pendingRequests mapping entry (used by ChainlinkClientUtils)

Last updated