@hypotenuselabs/ts-chainlink-datafeed
Version:
Typescript library for interacting with Chainlink datafeeds
1,210 lines (1,106 loc) • 21.8 kB
Markdown
# ⭐️ ts-chainlink-datafeed ⭐️
This TypeScript project provides a ChainLink datafeed library that can be used to retrieve data from any EVM chain on http://data.chain.link.
## 🚀 Use cases
1. You want to read a single data feed like ETH/USD on Ethereum/Polygon/Arbitrum etc?
```typescript
import { polygonDataFeeds } from "@hypotenuselabs/ts-chainlink-datafeed";
import { createPublicClient, http } from "viem";
import { polygon } from "viem/chains";
const RPCUrl = "https://your-rpc-url.com"; // https://chainlist.org for a list of public RPCs
const callClient = createPublicClient({
transport: http(RPCUrl), // can also use websocket(RPCUrl) for websocket RPCs
chain: polygon,
batch: {
multicall: true,
},
});
// All possible data feeds for Polygon
const EthUSD = polygonDataFeeds["ETH / USD"];
const ethUsdDataFeed = new ChainLinkDataFeed({
chain: polygon,
contractAddress: EthUSD,
viemClient: publicClient,
});
setInterval(() => {
console.log(
await ethUsdDataFeed.getLatestRoundData(true)
);
}, 5000) // You can use this to update the price every 5 seconds
/**
* {
* roundId: 36893488147426144869n,
* answer: '2379.44', // $2379.44
* time: 2024-01-10T13:08:43.000Z,
* description: 'ETH / USD'
* }
*/
```
2. You want to subscribe to a single data feed for ETH/USD on Ethereum/Polygon/Arbitrum etc?
```typescript
// You can use the same RPC public client setup as above.
const ethUsdFeed = polygonDataFeeds["ETH / USD"];
subscribeToChainLinkPriceUpdates({
feedAddresses: [...ethUsdFeed],
publicClient: callClient,
onLogsFunction: (arrayOfLogs) =>
arrayOfLogs.forEach((log) => {
// every time there is an update on chain, this function will be called
console.log(`Asset: ${log.description}`); // ETH / USD - The description of the data feed
console.log(`Decimals: ${log.decimals}`); // The number of decimals the answer uses
console.log(`🔘 Round ID: ${log.roundId}`); // The roundId of the answer
console.log(`📈 Answer: ${log.current}`); // The price of the asset without decimals
console.log(`⏰ Time: ${log.updatedAt}`); // The time the answer was last updated
}),
});
```
More detailed examples can be found in the [example folder](./example).
3. You want to subscribe to multiple data feeds on a single chain?
```typescript
const feeds = [
polygonDataFeeds["ETH / USD"],
polygonDataFeeds["BTC / USD"],
polygonDataFeeds["LINK / USD"],
polygonDataFeeds["UNI / USD"],
polygonDataFeeds["USDC / USD"],
polygonDataFeeds["USDT / USD"],
polygonDataFeeds["WBTC / USD"],
polygonDataFeeds["wstETH-stETH Exchange Rate"],
]
subscribeToChainLinkPriceUpdates({
feedAddresses: feeds,
publicClient: callClient,
onLogsFunction: (arrayOfLogs) =>
arrayOfLogs.forEach((log) => {
// every time there is an update on chain, this function will be called
console.log(`Asset: ${log.description}`); // ETH / USD - The description of the data feed
console.log(`Decimals: ${log.decimals}`); // The number of decimals the answer uses
console.log(`🔘 Round ID: ${log.roundId}`); // The roundId of the answer
console.log(`📈 Answer: ${log.current}`); // The price of the asset without decimals
console.log(`⏰ Time: ${log.updatedAt}`); // The time the answer was last updated
}),
});
```
More detailed examples can be found in the [example folder](./example).
4. You want to subscribe to multiple data feeds on multiple chains?
```typescript
import { polygon, ethereum } from "viem/chains";
const ethereumClient = createPublicClient({
transport: http(ethereumRpcUrl), // can also use websocket(RPCUrl) for websocket RPCs
chain: ethereum,
batch: {
multicall: true,
},
});
const ethereumFeeds = [
ethereumDataFeeds["ETH / USD"],
ethereumDataFeeds["BTC / USD"],
]
subscribeToChainLinkPriceUpdates({
feedAddresses: feeds,
publicClient: polygonClient,
onLogsFunction: (arrayOfLogs) =>
arrayOfLogs.forEach((log) => {
// every time there is an update on chain, this function will be called
console.log(`Asset: ${log.description}`); // ETH / USD - The description of the data feed
console.log(`Decimals: ${log.decimals}`); // The number of decimals the answer uses
console.log(`🔘 Round ID: ${log.roundId}`); // The roundId of the answer
console.log(`📈 Answer: ${log.current}`); // The price of the asset without decimals
console.log(`⏰ Time: ${log.updatedAt}`); // The time the answer was last updated
}),
});
const polygonClient = createPublicClient({
transport: http(polygonRpcUrl), // can also use websocket(RPCUrl) for websocket RPCs
chain: polygon,
batch: {
multicall: true,
},
});
const polygonFeeds = [
polygonDataFeeds["ETH / USD"],
polygonDataFeeds["BTC / USD"],
]
subscribeToChainLinkPriceUpdates({
feedAddresses: feeds,
publicClient: polygonClient,
onLogsFunction: (arrayOfLogs) =>
arrayOfLogs.forEach((log) => {
// every time there is an update on chain, this function will be called
console.log(`Asset: ${log.description}`); // ETH / USD - The description of the data feed
console.log(`Decimals: ${log.decimals}`); // The number of decimals the answer uses
console.log(`🔘 Round ID: ${log.roundId}`); // The roundId of the answer
console.log(`📈 Answer: ${log.current}`); // The price of the asset without decimals
console.log(`⏰ Time: ${log.updatedAt}`); // The time the answer was last updated
}),
});
```
More detailed examples can be found in the [example folder](./example).
5. You want to subscribe to data feeds in a React application?
```typescript
import { createPublicClient, fallback, http } from "viem";
import { Row } from "./@/components/Row";
import { polygon } from "viem/chains";
import {
polygonDataFeeds,
useDataFeed,
} from "@hypotenuselabs/ts-chainlink-datafeed";
const PolygonRPCList = [
"https://1rpc.io/matic",
]
const transports = fallback(PolygonRPCList.map((rpc) => http(rpc)));
const polygonClient = createPublicClient({
transport: transports,
chain: polygon,
batch: {
multicall: true,
},
});
export default function App() {
const polygon = useDataFeed({
viemClient: polygonClient,
chainDataFeeds: polygonDataFeeds,
feedsToSubscribeTo: Object.keys(polygonDataFeeds),
});
const feed = Object.values(polygon);
const length = Object.keys(polygonDataFeeds).length;
return (
<main className="max-w-[1080px] m-auto my-10">
<Row
chainName={`Polygon - As prices update onchain, they will be displayed below. Total feeds: ${length}`}
feeds={feed}
/>
</main>
);
}
```
See [datafeeds-example-site repo](https://github.com/thevolcanomanishere/datafeeds-example-site) and a live running example at [https://chainlink-datafeeds-example-taupe.vercel.app/](https://chainlink-datafeeds-example-taupe.vercel.app/)
## 📋 Features
- Get the latest price of any asset featured on [Chainlink](https://data.chain.link/).
- Redundant RPC support so that you never miss a price update.
- No reliance on 3rd party APIs like CoinGecko or CoinMarketCap.
- Supports Ethereum, Polygon, Arbitrum, Xdai, Harmony, Moonriver, Celo, Bsc, Optimism, Avalanche, Fantom, Base, Moonbeam, Metis, Scroll and [more](./src/dataFeeds).
## 🛠️ Setup
```bash
# Yarn
yarn add @hypotenuselabs/ts-chainlink-datafeed
# NPM
npm install @hypotenuselabs/ts-chainlink-datafeed
```
## 🛜 RPCs
You can get multiple RPCs for each chain from [Chainlist](https://chainlist.org/). If you create a fallback provider, you can have a redundant list of RPCs incase one fails or is slow to respond. The [example](./example/) has some code to help with this. You can use both http and websocket RPCs.
You can distribute requests [round robin](https://avinetworks.com/glossary/round-robin-load-balancing/) by installing `@ponder/utils`.
```typescript
import { loadBalance } from "@ponder/utils";
const polygonRpcList = [
"https://public.stackup.sh/api/v1/node/polygon-mainnet",
"https://polygon.gateway.tenderly.co",
];
const transports = loadBalance(
polygonRpcList.map((rpc) => useWebsocketOrHttpTransport(rpc))
);
const polyCallClient = createPublicClient({
name: "PolyCall",
transport: transports,
chain: polygon,
});
```
## 📦 Supported Chains - Extracting a feed
You can get a single feed by importing the chain feed constant that you need and selecting the feed you want. For example, if you want the ETH / USD feed on Polygon, you would do the following:
```typescript
import { polygonDataFeeds } from "@hypotenuselabs/ts-chainlink-datafeed";
const EthUSD = polygonDataFeeds["ETH / USD"];
// 0xF9680D99D6C9589e2a93a78A04A279e509205945
```
## 🧵 Custom Chains
If you are using a chain that does not have a chain configuration in Viem, you can easily create your own. See [this example for Scroll](./example/scroll.ts).
## 🤖 Chainlink Contract Address Scaper
By running the `updateAllFeeds` command in the `package.json`, you can update all of the datafeed helper constants automatically. This function will load up a Chrome browser in headless mode and scrape all of the contract addresses for every single listed feed on the official Chainlink website.
## 📋 TODO
- [x] React hook
- [ ] Add support for retrieving the price on a certain day
- [ ] Add support for retrieving the price at a certain block
- [ ] Add support for retrieving the price at a certain time range
## 🧑⚖️ License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Included Chainlink Feeds
### Ethereum Mainnet
- 1INCH / ETH
- 1INCH / USD
- AAVE / ETH
- AAVE / USD
- ALCX / ETH
- AMPL / ETH
- AMPL / USD
- ANKR / USD
- APE / ETH
- APE / USD
- ARB / USD
- ARKB Reserves
- AUD / USD
- AVAX / USD
- Azuki Floor Price / ETH
- BADGER / ETH
- BAL / ETH
- BAL / USD
- BAT / ETH
- BEANZ Official Floor Price
- BNB / USD
- Bored Ape Yacht Club Floor Price / ETH
- BTC / ETH
- BTC / USD
- C3M / EUR
- CacheGold PoR USD
- CAD / USD
- CAKE / USD
- Calculated XSUSHI / ETH
- CBETH / ETH
- CHF / USD
- CloneX Floor Price
- CNY / USD
- COMP / ETH
- COMP / USD
- Consumer Price Index
- CoolCats Floor Price
- CRV / ETH
- CRV / USD
- CRVUSD / USD
- Cryptoadz Floor Price
- CryptoPunks Floor Price / ETH
- CSPX / USD
- CVX / ETH
- CVX / USD
- DAI / ETH
- DAI / USD
- Doodles Floor Price
- DPI / ETH
- DPI / USD
- ENJ / ETH
- ENS / USD
- ETH / BTC
- ETH / USD
- ETHx / ETH
- EUR / USD
- EURR Reserves
- ezETH / ETH
- Fast Gas / Gwei
- FDUSD / USD
- FIL / ETH
- FRAX / ETH
- FRAX / USD
- FTM / ETH
- FTT / ETH
- FXS / USD
- GBP / USD
- GBPT PoR
- GHO / USD
- GRT / ETH
- GRT / USD
- HBTC PoR
- HIGH / USD
- IB01 / USD
- IBTA / USD
- IMX / USD
- JPY / USD
- KNC / ETH
- KNC / USD
- KRW / USD
- LDO / ETH
- LINK / ETH
- LINK / USD
- LTC / USD
- LUSD / USD
- MANA / ETH
- MATIC / USD
- MAVIA / USD
- MAYC Floor Price
- MIM / USD
- MKR / ETH
- MKR / USD
- MLN / ETH
- Moonbirds Floor Price
- Nexus wETH Reserves
- NZD / USD
- OHMv2 / ETH
- Otherdeed for Otherside Floor Price
- PAX / ETH
- PAXG / ETH
- PERP / ETH
- Pudgy Penguins Floor Price
- PYUSD / USD
- RDNT / USD
- REN / ETH
- RETH / ETH
- RPL / USD
- RSETH / ETH
- RSR / USD
- SAND / USD
- SGD / USD
- SHIB / ETH
- SHV / USD
- SNX / ETH
- SNX / USD
- SOL / USD
- SPELL / USD
- STBT PoR
- STETH / ETH
- STETH / USD
- STG / USD
- SUSD / ETH
- SUSHI / ETH
- SUSHI / USD
- Swell ETH PoR
- SWETH / ETH
- SXP / USD
- Total Marketcap / USD
- TRY / USD
- TUSD / ETH
- TUSD / USD
- TUSD Reserves
- UNI / ETH
- UNI / USD
- USDC / ETH
- USDC / USD
- USDD / USD
- USDP / USD
- USDT / ETH
- USDT / USD
- USDV / USD
- VeeFriends Floor Price
- WBTC / BTC
- WBTC PoR
- WING / USD
- World of Women Floor Price
- XAG / USD
- XAU / USD
- XCN / USD
- YFI / ETH
- YFI / USD
- ZRX / ETH
- ZRX / USD
### Arbitrum Mainnet
- 1INCH / USD
- AAPL / USD
- AAVE / USD
- ADA / USD
- AMZN / USD
- APE / USD
- ARB / USD
- ATOM / USD
- AUD / USD
- AVAX / USD
- AXL / USD
- AXS / USD
- BAL / USD
- BNB / USD
- Bored Ape Yacht Club Floor Price / ETH
- BRL / USD
- BTC / ETH
- BTC / USD
- BTC-USD Total Marketcap
- CAD / USD
- CAKE / USD
- CBETH / ETH
- cbETH-ETH Exchange Rate
- CHF / USD
- CNY / USD
- COMP / USD
- CRV / USD
- CRVUSD / USD
- CVX / USD
- DAI / USD
- DODO / USD
- DOGE / USD
- DOT / USD
- ETH / USD
- ETH-USD Total Marketcap
- ETHx / ETH
- EUR / USD
- EURC / USD
- FRAX / USD
- frxETH-ETH Exchange Rate High
- frxETH-ETH Exchange Rate Low
- FTM / USD
- FXS / USD
- GBP / USD
- gmARB / USD
- gmBTC / USD
- gmETH / USD
- GMX / USD
- GNS / USD
- GOOGL / USD
- IOTX / USD
- JOE / USD
- JPY / USD
- KNC / USD
- KRW / USD
- LDO / USD
- LINK / ETH
- LINK / USD
- LTC / USD
- LUSD / USD
- MAGIC / USD
- MATIC / USD
- META / USD
- MIM / USD
- MKR / USD
- MSFT / USD
- NEAR / USD
- NFT Blue Chip Total Market Cap-USD
- OHM Index
- OHMv2 / USD
- OP / USD
- PAXG / USD
- PENDLE / USD
- PEPE / USD
- PHP / USD
- RDNT / USD
- RETH / ETH
- rETH-ETH Exchange Rate
- RPL / USD
- RSR / USD
- SEK / USD
- sFRAX / FRAX Exchange Rate
- sfrxETH-frxETH Exchange Rate
- SGD / USD
- SNX / USD
- SOL / USD
- SPELL / USD
- SPY / USD
- StaFi Staked ETH rETH-ETH Exchange Rate
- STETH / ETH
- STETH / USD
- STG / USD
- SUSHI / USD
- swETH / ETH Exchange Rate
- TAO / USD
- TBTC / USD
- TIA / USD
- Total Marketcap USD
- TRY / USD
- TSLA / USD
- TUSD / USD
- UNI / USD
- USDC / USD
- USDD / USD
- USDT / USD
- WBTC / BTC
- WBTC / USD
- weETH / eETH Exchange Rate
- WOO / USD
- WSTETH / ETH
- wstETH-stETH Exchange Rate
- WTI / USD
- XAG / USD
- XAI / USD
- XAU / USD
- XRP / USD
- YFI / USD
### BNB Chain Mainnet
- 1INCH / USD
- AAPL / USD
- AAVE / USD
- ADA / BNB
- ADA / USD
- ALPACA / USD
- ALPHA / BNB
- AMZN / USD
- ATOM / USD
- AUD / USD
- AVAX / USD
- AXS / USD
- BAND / BNB
- BAND / USD
- BCH / BNB
- BCH / USD
- BETH / USD
- BNB / USD
- BRL / USD
- BSW / USD
- BTC / BNB
- BTC / ETH
- BTC / USD
- C98 / USD
- CAKE / BNB
- CAKE / USD
- Calculated BNBx / USD
- Calculated SAVAX / USD
- CFX / USD
- CHF / USD
- CHR / USD
- COIN / USD
- COMP / USD
- CRV / USD
- DAI / BNB
- DAI / USD
- DF / USD
- DODO / USD
- DOGE / USD
- DOT / BNB
- DOT / USD
- EOS / BNB
- EOS / USD
- ETH / BNB
- ETH / USD
- EUR / USD
- FB / USD
- FDUSD / USD
- FET / USD
- FIL / USD
- FRAX / USD
- FTM / USD
- FXS / USD
- GBP / USD
- GME / USD
- GMT / USD
- GOOGL / USD
- HIGH / USD
- ICP / USD
- INJ / USD
- INR / USD
- JPM / USD
- JPY / USD
- KAVA / USD
- KLAY / USD
- KNC / USD
- LINA / USD
- LINK / BNB
- LINK / USD
- LIT / USD
- LTC / BNB
- LTC / USD
- MASK / USD
- MATIC / USD
- MIM / USD
- MRNA / USD
- MS / USD
- MSFT / USD
- MXN / USD
- NEAR / USD
- NFLX / USD
- NULS / USD
- NVDA / USD
- ONG / USD
- ONT / USD
- PAXG / USD
- PFE / USD
- PHP / USD
- QQQ / USD
- RDNT / USD
- REEF / USD
- SGD / USD
- SHIB / USD
- SOL / USD
- SPELL / USD
- SPY / USD
- SUSHI / USD
- SXP / USD
- TRX / USD
- TSLA / USD
- TUSD / USD
- TWT / BNB
- UNI / BNB
- UNI / USD
- USDC / BNB
- USDC / USD
- USDD / USD
- USDT / BNB
- USDT / USD
- VET / USD
- WIN / USD
- WING / USD
- WOO / USD
- WTI / USD
- XAG / USD
- XAU / USD
- XLM / USD
- XRP / BNB
- XRP / USD
- XTZ / BNB
- XTZ / USD
- XVS / BNB
- XVS / USD
- YFI / BNB
- YFI / USD
- ZAR / USD
### Gnosis Chain Mainnet
- 1INCH / USD
- AAVE / USD
- ALPHA / USD
- AVAX / USD
- BAL / USD
- BNB / USD
- BTC / USD
- CHF / USD
- COMP / USD
- CREAM / USD
- CRV / USD
- DAI / USD
- DOGE / USD
- DOT / USD
- ETH / USD
- EUR / USD
- FTT / USD
- GNO / USD
- GRT / USD
- JPY / USD
- LINK / DAI
- LINK / USD
- MKR / USD
- MXN / USD
- PERP / USD
- REN / USD
- SNX / USD
- SOL / USD
- STETH / USD
- SUSHI / USD
- UMA / USD
- UNI / USD
- USDC / USD
- USDT / USD
- WBTC / USD
- wstETH-ETH Exchange Rate
- XAU / USD
- YFI / USD
- ZIL / USD
### Polygon Mainnet
- 1INCH / USD
- AAPL / USD
- AAVE / ETH
- AAVE / USD
- ADA / USD
- AGEUR / USD
- ALCX / USD
- ALGO / USD
- ALPHA / USD
- AMZN / USD
- ANT / USD
- APE / USD
- AUD / USD
- AVAX / USD
- AXS / USD
- BADGER / ETH
- BADGER / USD
- BAL / ETH
- BAL / USD
- BAT / USD
- bC3M Reserves
- BCH / USD
- bCSPX Reserves
- bIB01 Reserves
- bIBTA Reserves
- BNB / USD
- BOND / USD
- BRL / USD
- BTC / ETH
- BTC / USD
- BTC-USD Total Marketcap
- CAD / USD
- Calculated MaticX / USD
- Calculated stMATIC / USD
- CBETH / ETH
- CEL / USD
- CGT PoR (ETH)
- CHF / USD
- CHZ / USD
- CNY / USD
- COMP / USD
- COPW Reserves
- CRV / ETH
- CRV / USD
- CVX / USD
- DAI / ETH
- DAI / USD
- DASH / USD
- DGB / USD
- DODO / USD
- DOGE / USD
- DOGE-USD Total Marketcap
- DOT / USD
- DPI / ETH
- ENJ / USD
- EOS / USD
- ETC / USD
- ETH / USD
- ETH-USD Total Marketcap
- EUR / USD
- FARM / USD
- FB / USD
- FIL / USD
- FRAX / USD
- FTM / USD
- FTT / USD
- FXS / USD
- GBP / USD
- GHST / ETH
- GHST / USD
- GNS / USD
- GOOGL / USD
- GRT / USD
- HBAR / USD
- ibBTC PricePerShare
- ICP / USD
- ILS / USD
- INR / USD
- JPY / USD
- KAVA / USD
- KLAY / USD
- KNC / USD
- KRW / USD
- LINK / ETH
- LINK / MATIC
- LINK / USD
- LTC / USD
- MANA / USD
- MATIC / ETH
- MATIC / USD
- MIM / USD
- MKR / ETH
- MKR / USD
- MLN / ETH
- MSFT / USD
- MXN / USD
- NZD / USD
- OGN / USD
- OHM Index
- OHMv2 / USD
- OM / USD
- OMG / USD
- PAXG / USD
- PHP / USD
- PLN / USD
- QNT / USD
- QUICK / USD
- SAND / USD
- SEK / USD
- SGD / USD
- SHIB / USD
- SLP / USD
- SNX / USD
- SOL / USD
- SPY.US
- STORJ / USD
- SUSHI / ETH
- SUSHI / USD
- THB / USD
- THETA / USD
- TRUMATIC-MATIC Exchange Rate
- TRX / USD
- TRY / USD
- TSLA / USD
- TUSD / USD
- UMA / USD
- UNI / ETH
- UNI / USD
- USDC / ETH
- USDC / USD
- USDT / ETH
- USDT / USD
- WBTC / ETH
- WBTC / USD
- WOO / USD
- WSTETH / ETH
- wstETH-stETH Exchange Rate
- XAG / USD
- XAU / USD
- XLM / USD
- XMR / USD
- XPT / USD
- XRP / USD
- XTZ / USD
- YFI / ETH
- YFI / USD
- ZEC / USD
### Avalanche Mainnet
- AAVE / USD
- AAVE.e PoR
- ADA / USD
- ALPHA / USD
- APE / USD
- AVAX / USD
- AXS / USD
- BAT / USD
- BTC / USD
- BTC.b PoR
- CAKE / USD
- Calculated SAVAX / USD
- CHF / USD
- CHZ / USD
- COMP / USD
- COQ / USD
- CRV / USD
- CVX / USD
- DAI / USD
- DAI.e PoR
- DOT / USD
- ETH / USD
- EUR / USD
- EURC / USD
- FIL / USD
- FRAX / USD
- FTM / USD
- FXS / USD
- GMX / USD
- Ion Digital Total Reserve
- JOE / USD
- JPY / USD
- KNC / USD
- LINK / AVAX
- LINK / USD
- LINK.e PoR
- MANA / USD
- MATIC / USD
- MIM / USD
- MKR / USD
- NEAR / USD
- QI / USD
- SAND / USD
- SNX / USD
- SPELL / USD
- SUSHI / USD
- TRY / USD
- TUSD / USD
- UNI / USD
- USDC / USD
- USDC.e PoR
- USDT / USD
- USDT.e PoR
- WBTC / USD
- WBTC.e PoR
- WETH.e PoR
- WOO / ETH
- wstETH-stETH Exchange Rate
- XAU / USD
- YFI / USD
### Fantom Opera
- AAVE / USD
- ALPACA / USD
- BNB / USD
- BTC / USD
- Calculated sFTMX / USD
- CHF / USD
- CREAM / USD
- CRV / USD
- DAI / USD
- ETH / USD
- EUR / USD
- FRAX / USD
- FTM / USD
- GMX / USD
- LINK / FTM
- LINK / USD
- MIM / USD
- OHM Index
- SNX / USD
- SPELL / USD
- SUSHI / USD
- USDC / USD
- USDT / USD
- WBTC / USD
- YFI / USD
### Linea Mainnet
- AAVE / USD
- ARB / USD
- BTC / USD
- DAI / USD
- ETH / USD
- EUR / USD
- LINK / ETH
- LINK / USD
- MATIC / USD
- USDC / USD
- USDT / USD
- WSTETH / USD
### Metis Mainnet
- AAVE / USD
- BTC / USD
- DAI / USD
- ETH / USD
- LINK / USD
- METIS / USD
- USDC / USD
- USDT / USD
### Moonriver Mainnet
- AAVE / USD
- BNB / USD
- BTC / USD
- DAI / USD
- DOT / USD
- ETH / USD
- FRAX / USD
- FTM / USD
- KSM / USD
- LINK / USD
- MIM / USD
- MOVR / USD
- USDC / USD
- USDT / USD
- WBTC / USD
### Optimism Mainnet
- AAVE / USD
- ADA / USD
- ALGO / USD
- APE / USD
- APT / USD
- ARB / USD
- ATOM / USD
- AUD / USD
- AVAX / USD
- AXS / USD
- BAL / USD
- BCH / USD
- BLUR / USD
- BNB / USD
- BONK / USD
- BRL / USD
- BTC / USD
- CBETH / ETH
- COMP / USD
- CRV / USD
- CVX / USD
- DAI / USD
- DOGE / USD
- DOT / USD
- DYDX / USD
- EOS / USD
- ETC / USD
- ETH / BTC
- ETH / USD
- EUR / USD
- FET / USD
- FIL / USD
- FLOW / USD
- FRAX / USD
- FTM / USD
- FXS / USD
- GBP / USD
- GMX / USD
- GRT / USD
- ICP / USD
- IMX / USD
- INJ / USD
- INR / USD
- JPY / USD
- JTO / USD
- JUP / USD
- KNC / USD
- LDO / USD
- LINK / ETH
- LINK / USD
- LTC / USD
- LUSD / USD
- MATIC / USD
- MAV / USD
- MEME / USD
- MKR / USD
- NEAR / USD
- ONE / USD
- OP / USD
- ORDI / USD
- PENDLE / USD
- PEPE / USD
- PERP / USD
- PYTH / USD
- RETH / ETH
- rETH-ETH Exchange Rate
- RNDR / USD
- RPL / USD
- RUNE / USD
- SAND / USD
- SEI / USD
- sFRAX / FRAX Exchange Rate
- sfrxETH / frxETH-Exchange-Rate
- SHIB / USD
- SNX / USD
- SOL / USD
- STETH / USD
- STRK / USD
- SUI / USD
- SUSD / USD
- SUSHI / USD
- TBTC / USD
- TIA / USD
- Total Marketcap USD
- TRX / USD
- UNI / USD
- USDC / USD
- USDT / USD
- WAVES / USD
- WBTC / USD
- WLD / USD
- WSTETH / ETH
- WSTETH / USD
- wstETH-stETH Exchange Rate
- XAG / USD
- XAU / USD
- XLM / USD
- XMR / USD
- XRP / USD
- XTZ / USD
- YFI / USD
### Scroll Mainnet
- AAVE / USD
- AVAX / USD
- BNB / USD
- BTC / USD
- CRV / USD
- DAI / USD
- DOGE / USD
- ETH / USD
- LINK / ETH
- LINK / USD
- RETH / ETH
- SOL / USD
- STETH / USD
- STG / USD
- USDC / USD
- USDT / USD
- WSTETH / ETH
- wstETH-stETH Exchange Rate
### Base Mainnet
- APT / USD
- AXL / USD
- CBETH / ETH
- CBETH / USD
- cbETH-ETH Exchange Rate
- COMP / USD
- DAI / USD
- ETH / USD
- LINK / ETH
- LINK / USD
- OP / USD
- RETH / ETH
- RSR / USD
- sfrxETH-frxETH Exchange Rate
- SNX / USD
- SOL / USD
- STETH / ETH
- STG / USD
- USDC / USD
- USDT / USD
- WBTC / USD
- wstETH-ETH Exchange Rate
- wstETH-stETH Exchange Rate
- YFI / USD
### Moonbeam Mainnet
- ATOM / USD
- BNB / USD
- BRL / USD
- BTC / USD
- CAKE / USD
- DAI / USD
- DOT / USD
- ETH / USD
- FRAX / USD
- GLMR / USD
- LINK / USD
- USDC / USD
- USDT / USD
- WBTC / USD
### Celo Mainnet
- BTC / USD
- CELO / USD
- CUSD / USD
- ETH / USD
- EUR / USD
- LINK / USD
- USDC / USD
- USDT / USD