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
_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
_value
contract IChainlinkFeed
new value
updateCollateralUsdPriceFeed
function updateCollateralUsdPriceFeed(uint8 _collateralIndex, contract IChainlinkFeed _value) external
Updates collateral/USD chainlink price feed
Parameters
_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
_collateralIndex
uint8
collateral index
updateTwapInterval
function updateTwapInterval(uint24 _twapInterval) external
Updates TWAP interval
Parameters
_twapInterval
uint24
new value (seconds)
updateMinAnswers
function updateMinAnswers(uint8 _value) external
Updates minimum answers count
Parameters
_value
uint8
new value
addOracle
function addOracle(address _a) external
Adds an oracle
Parameters
_a
address
new value
replaceOracle
function replaceOracle(uint256 _index, address _a) external
Replaces an oracle
Parameters
_index
uint256
oracle index
_a
address
new value
removeOracle
function removeOracle(uint256 _index) external
Removes an oracle
Parameters
_index
uint256
oracle index
setMarketJobId
function setMarketJobId(bytes32 _jobId) external
Updates market job id
Parameters
_jobId
bytes32
new value
setLimitJobId
function setLimitJobId(bytes32 _jobId) external
Updates lookback job id
Parameters
_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
_collateralIndex
uint8
collateral index
_pairIndex
uint16
pair index
_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
_requestId
bytes32
request id
_priceData
uint256
price data
claimBackLink
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
_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
_collateralIndex
uint8
index of collateral
getUsdNormalizedValue
function getUsdNormalizedValue(uint8 _collateralIndex, uint256 _collateralValue) external view returns (uint256)
Returns USD normalized value from collateral value
Parameters
_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
_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
_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
_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
_collateralIndex
uint8
index of collateral
getGnsPriceCollateralAddress
function getGnsPriceCollateralAddress(address _collateral) external view virtual returns (uint256)
Returns GNS/collateral price
Parameters
_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
_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
_collateralIndex
uint8
index of collateral
getCollateralUsdPriceFeed
function getCollateralUsdPriceFeed(uint8 _collateralIndex) external view returns (contract IChainlinkFeed)
Returns collateral/usd chainlink price feed
Parameters
_collateralIndex
uint8
index of collateral
getPriceAggregatorOrder
function getPriceAggregatorOrder(bytes32 _requestId) external view returns (struct IPriceAggregator.Order)
Returns order data
Parameters
_requestId
bytes32
index of collateral
getPriceAggregatorOrderAnswers
function getPriceAggregatorOrderAnswers(struct ITradingStorage.Id _orderId) external view returns (struct IPriceAggregator.OrderAnswer[])
Returns order data
Parameters
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
Was this helpful?