I went through the documentation of Chainlink data feeds and saw we can get the latest price using latestRoundData() function from AggregatorV3Interface.

The documentation states the price update happens in two threshold, 'Deviation' and 'Heartbeat'. So the deviation for 'ETH/USD' is 0.5% and 1 hour heartbeat time.

But I see Pancakeswap.finance's prediction game uses Chainlink oracle to get latest price of 'BNB/USD' in real-time. But the deviation is not as near as 1% (as mentioned in https://docs.chain.link/docs/binance-smart-chain-addresses/) and it updates price in real-time even less than a minute.

May I know how to update price in real-time?

do we use keepers that keep a watch every second? or is using 'fluxmonitor' (as mentioned here Timed Chainlink oracle call) a good solution?

or is there a way to get price every time there is a price change (even in cents)?

1 Answer 1


In the explanation about the Decentralized Data Model, the Aggregation Parameters said:

"Each aggregation round triggers based on one of these parameters. The first condition that is met triggers an update to the data".

The parameters for 'BNB/USD' in Binance Smart Chain are:

  • Deviation Threshold: 1%
  • Heartbeat Threshold: 1m

So the update are occurring because the off-chain values deviate by more than 1%.

But if the price doesn't change 1% in less than 1 minute, once a minute the price will be updated.

  • Hi, but that seems to be not the case at pancakeswap.finance prediction game. Say current BNB/USD price is $455, 1% of $455 is $4.55, but the price change occurs even the price change by $0.10 and that happens everytime in less than 10 = 20 seconds. Checkout pancakeswap.finance/prediction.
    – toddash
    Jan 9 at 2:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.