Integration Guide
Price feeds are a crucial component in the decentralized finance (DeFi) ecosystem, allowing for a wide range of financial activities such as lending, borrowing, trading, and derivatives. Price feeds enable dapps to access accurate and updated pricing data in a secure and trustless manner.
EO price feeds aggregate information from many different data source and are published on-chain for easy consumption by dApps. This guide shows you how to read and use EO price feeds using Solidity.
Reading EO price feeds on EVM-compatible blockchains follows a consistent format for both queries and responses across different chains.
EO follows Chainlink's AggregatorV3Interface, allowing a smooth transition between blockchain oracle providers.
Prerequisites
You have a basic understanding of smart contract development.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;
interface IEOFeedAdapter {
function decimals() external view returns (uint8);
function description() external view returns (string memory);
function version() external view returns (uint256);
function getRoundData(uint80 _roundId)
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}
contract EOCLConsumerExample {
IEOFeedAdapter public _feedAdapter;
/**
* Network: Holesky
* EOFeedAdapter: 0xDD8387185C9e0a173702fc4a3285FA576141A9cd
* Feed Symbol: BTC
*/
constructor() {
_feedAdapter = IEOFeedAdapter(0xDD8387185C9e0a173702fc4a3285FA576141A9cd);
}
function getPrice() external view returns (int256 answer) {
(, answer,,,) = _feedAdapter.latestRoundData();
}
function usePrice() external {
int256 answer = this.getPrice();
// Do something
// .............
}
}
Edit/Deploy using Remix by clicking here.
The code has the following elements:
An interface named
IEOFeedAdapter
defines several functions for accessing data from an external source.These functions include retrieving the decimals, description, and version of the data feed, as well as fetching round data and the latest round data.
The constructor initializes a public variable named
_feedAdapter
, which is of typeIEOFeedAdapter
. It sets_feedAdapter
to connect to a specificEOFeedAdapter
contract deployed on the Holesky network at address0xDD8387185C9e0a173702fc4a3285FA576141A9cd
. This adapter is designated for theBTC
feed.The
getPrice()
function retrieves the latest price data from the_feedAdapter
by calling thelatestRoundData()
function. It returns the answer, which represents the latest price of theBTC
feed.The
usePrice()
function internally callsgetPrice()
to fetch the latest price , illustrating how the price could be parsed and used.
Contact [email protected] for more details on deployments and usage.
Last updated