getPriceNoOlderThan
Get the price object with a published timestamp from before than age
seconds in the past.
Description
This method returns the latest price object for the requested price feed ID, if it has been updated sufficiently recently.
The caller provides an age
argument that specifies how old the price can be.
The price object contains the following fields:
price
: The latest price of the price feed.conf
: The confidence level of the price feed.expo
: The exponent of the price feed.publishtime
: The time when the price feed was last updated.
Sample price
object:
{
price: 123456789n,
conf: 180726074n,
expo: -8,
publishTime: 1721765108n
}
The price
above is in the format of price * 10^expo
. So, the price
in above
mentioned sample represents the number 123456789 * 10(-8) = 1.23456789
in
this case.
Error Response
The above method can return the following error response:
StalePrice
: The on-chain price has not been updated within the lastgetValidTimePeriod()
seconds. Try callingupdatePriceFeeds()
to update the price feed with the latest price.PriceFeedNotFound
: The requested price feed has never received a price update or does not exist. Try callingupdatePriceFeeds()
to update the price feed.
Arguments
The ID of the price feed you want to read
Maximum age of the on-chain price in seconds.
import "@pythnetwork/pyth-sdk-solidity/IPyth.sol";
import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol";
// Ethereum
address contractAddress = 0x4305FB66699C3B2702D4d05CF36551390A4c69C6
IPyth pyth = IPyth(contractAddress);
bytes32 priceId = /* <id> */;
uint256 age = /* <age> */;
PythStructs.Price memory currentBasePrice = pyth.getPriceNoOlderThan(priceId, age);