feat: chainlink addresses for hyperevm and monad#195
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughAdds support for two new blockchain networks (HyperEVM and Monad) to the Chainlink oracle feed system by creating new configuration data files, wiring them into the index, and extending the endpoint definitions and chainlink oracle mappings. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes
Possibly related PRs
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Tip 📝 Customizable high-level summaries are now available in beta!You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
scripts/generate-chainlink-data.ts(1 hunks)src/constants/oracle/chainlink-data/arbitrum.json(61 hunks)src/constants/oracle/chainlink-data/base.json(21 hunks)src/constants/oracle/chainlink-data/hyperevm.json(1 hunks)src/constants/oracle/chainlink-data/index.ts(3 hunks)src/constants/oracle/chainlink-data/mainnet.json(26 hunks)src/constants/oracle/chainlink-data/monad.json(1 hunks)src/constants/oracle/chainlink-data/polygon.json(3 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
scripts/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Smart-contract scripts and artifacts belong in
scripts/
Files:
scripts/generate-chainlink-data.ts
**/*.{ts,tsx,js,jsx,css,scss}
📄 CodeRabbit inference engine (AGENTS.md)
Run
pnpm format(Prettier) before pushing with 2-space indentation, 100-character width, single quotes, and Tailwind-aware class ordering
Files:
scripts/generate-chainlink-data.tssrc/constants/oracle/chainlink-data/index.ts
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
ESLint (Airbnb + Next.js) enforces hook safety and import hygiene
Files:
scripts/generate-chainlink-data.tssrc/constants/oracle/chainlink-data/index.ts
src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use camelCase for helper function names (e.g.,
formatApr)
Files:
src/constants/oracle/chainlink-data/index.ts
src/constants/**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use SCREAMING_SNAKE_CASE for shared constants
Files:
src/constants/oracle/chainlink-data/index.ts
🧬 Code graph analysis (1)
src/constants/oracle/chainlink-data/index.ts (1)
src/constants/oracle/chainlink-data/types.ts (1)
ChainlinkOracleEntry(1-11)
🔇 Additional comments (12)
scripts/generate-chainlink-data.ts (1)
40-47: New hyperevm/monad endpoints fit existing patternKeys and URLs plug cleanly into the existing
ENDPOINTS+fetchAndProcessDataloop; no extra changes needed.src/constants/oracle/chainlink-data/base.json (2)
24-34: New/updated Base feeds follow existing schemaThe added SVR feeds, new asset feeds (
SYND,MAMO,AVNT,USDai,yBTC, etc.), and category tweaks (deprecating,new) all match the existing JSON structure and patterns in this file. No structural issues from a consumer’s perspective.Also applies to: 57-67, 167-177, 222-232, 365-375, 585-595, 733-733, 782-792, 848-858, 1091-1100, 1107-1107, 1313-1313, 1377-1386, 1421-1430, 1465-1474, 1509-1518, 1531-1540, 1558-1558, 1564-1573, 1729-1738, 1783-1783
782-792: I apologize, but I'm encountering persistent issues cloning the repository, which prevents me from accessing thesrc/constants/oracle/chainlink-data/base.jsonfile to verify the concerns raised in the review comment.To complete this verification, I would need to:
- Examine lines 782-792 to confirm the
gho-usd-svrentry's actualbaseAssetandquoteAssetvalues- Review line 1313 to inspect the
ceth-reservesentry and itspath/ensrelationship- Search all
*-usd-svrentries (USDC, USDT, EURC, BTC, AAVE, ETH) to establish the pattern the reviewer referenced- Determine intentionality of the ENS/path mismatch
Without repository access, I cannot validate whether:
- The
gho-usd-svrquote asset should indeed be "USD" instead of "GHO"- The
ceth-reservestoteth-reservespath mapping with mismatched ENS naming is intentionalsrc/constants/oracle/chainlink-data/arbitrum.json (1)
9351-9359: Checkfragsol-sol-exchange-ratequote assetFor
path: "fragsol-sol-exchange-rate",quoteAssetis"USD". Other*-sol-exchange-ratefeeds here use the underlying token (e.g.quoteAsset: "SOL"), not USD. Please confirm this against the Chainlink spec; it may needquoteAsset: "SOL"or a different path.src/constants/oracle/chainlink-data/index.ts (1)
4-18: HyperEVM and Monad wiring intoCHAINLINK_ORACLESlooks fineNew entries for
SupportedNetworks.HyperEVMandSupportedNetworks.Monadcorrectly plug in the JSON datasets so existing helpers (getAllOracles,isChainlinkOracle,getChainlinkOracle) will work for these networks.src/constants/oracle/chainlink-data/polygon.json (1)
46-56: Newybtc-btcanddola-usdfeeds look consistentBoth entries have sensible
baseAsset/quoteAsset, thresholds, andfeedCategoryvalues within the existing enum. No issues spotted.Also applies to: 189-199
src/constants/oracle/chainlink-data/hyperevm.json (1)
1-266: Hyperevm oracle entries are structurally soundJSON structure matches
ChainlinkOracleEntryshape and base/quote assets mostly line up with paths. Aside from the KHYPE typo noted separately, nothing else stands out.src/constants/oracle/chainlink-data/mainnet.json (5)
47-54: Missing network configuration for HyperEVM and Monad.The PR objectives mention adding support for two new networks, but this mainnet.json only shows Ethereum mainnet data. Where are the HyperEVM and Monad configuration files?
Also applies to: 113-121, 244-254, 409-419, 475-485, 519-529, 608-617, 651-661, 684-694
984-984: Path changed for uscc-nav from "uscc-nav" to "uscc-nav-per-share".This change at line 984 could break consuming code that references the old path. Confirm this is backward-compatible or that callers have been updated.
1279-1288: New SVR entries with null ens field.The new shared SVR feeds at lines 1279–1288 and 1366–1376 correctly use
nullfor ens (shared feeds don't have ENS names). This looks intentional and correct.Also applies to: 1366-1376
1888-1888: Threshold changed for wbtc-btc from "1" to "0.5".Line 1888 shows the threshold decreased. Confirm this stricter tolerance is intentional and safe.
2823-2823: Path updated for ustb-nav-per-share remains consistent.Line 2823 shows the path is already "ustb-nav-per-share"—no change. This is consistent with the uscc-nav path change at line 984.
| "ens": null, | ||
| "path": "syrupusdc-usdc-exrate-deprecated-mainnet-production", | ||
| "path": "susdu-usdu-streams-exchangerate-mainnet-production", | ||
| "proxyAddress": "", | ||
| "threshold": 0, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "SyrupUSDC", | ||
| "quoteAsset": "USDC", | ||
| "baseAsset": "sUSDu ", | ||
| "quoteAsset": "USDU", | ||
| "isSVR": false |
There was a problem hiding this comment.
Trim trailing space in sUSDu baseAsset
baseAsset has a trailing space ("sUSDu "). This will break any symbol-based lookups or comparisons.
- "baseAsset": "sUSDu ",
+ "baseAsset": "sUSDu",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "ens": null, | |
| "path": "syrupusdc-usdc-exrate-deprecated-mainnet-production", | |
| "path": "susdu-usdu-streams-exchangerate-mainnet-production", | |
| "proxyAddress": "", | |
| "threshold": 0, | |
| "feedCategory": "medium", | |
| "baseAsset": "SyrupUSDC", | |
| "quoteAsset": "USDC", | |
| "baseAsset": "sUSDu ", | |
| "quoteAsset": "USDU", | |
| "isSVR": false | |
| "ens": null, | |
| "path": "susdu-usdu-streams-exchangerate-mainnet-production", | |
| "proxyAddress": "", | |
| "threshold": 0, | |
| "feedCategory": "medium", | |
| "baseAsset": "sUSDu", | |
| "quoteAsset": "USDU", | |
| "isSVR": false |
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/arbitrum.json around lines 2853 to 2860,
the baseAsset string contains a trailing space ("sUSDu ") which will break
symbol lookups; remove the trailing whitespace so the value is "sUSDu" (ensure
no other invisible whitespace characters remain), save the JSON, and run a quick
validation or linter to confirm the file remains valid JSON and that other
entries are unaffected.
| { | ||
| "ens": "ab-usd", | ||
| "heartbeat": 86400, | ||
| "path": "ab-usd", | ||
| "proxyAddress": "0x3d9145b5804E13Bc14d19c3DDbd3DA8fD02b5034", | ||
| "threshold": 0.5, | ||
| "feedCategory": "new", | ||
| "baseAsset": "AB", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, |
There was a problem hiding this comment.
feedCategory values new / deprecating don’t match the TS type
src/constants/oracle/chainlink-data/types.ts defines:
feedCategory: 'low' | 'medium' | 'high' | 'custom';Several updated entries here now use feedCategory: "new" or "deprecating" (e.g. ab-usd, deusd-usd, anon-usd, btc-usd-marketcap, usdx-usd, eth-usd-marketcap, plus multiple others, and similar values in hyperevm.json).
Either:
- extend the union in
ChainlinkOracleEntryto include these new states, and audit downstream logic, or - keep
feedCategorywithin the existing enum and represent lifecycle state (new/deprecating) via a separate field.
Right now the type and the JSON disagree, which can mislead callers relying on the union.
Also applies to: 4852-4861, 6905-6915, 7860-7868, 8019-8027, 9164-9173, 9383-9392
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/arbitrum.json around lines 4433-4443 (and
similarly at 4852-4861, 6905-6915, 7860-7868, 8019-8027, 9164-9173, 9383-9392),
feedCategory has values "new"/"deprecating" that don't match the TypeScript
union; to fix, revert feedCategory values in these JSON entries to one of the
existing allowed values ('low'|'medium'|'high'|'custom') and add a new field
lifecycle (e.g. "lifecycle": "new" | "deprecating") to represent lifecycle
state, then update src/constants/oracle/chainlink-data/types.ts to add
lifecycle?: 'new' | 'deprecating' to ChainlinkOracleEntry (or a shared type),
and run a quick search to update any code that reads feedCategory to ensure it
uses the new lifecycle field where appropriate.
| "ens": "lhype-khype-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "lhype-khype-exchange-rate", | ||
| "proxyAddress": "0xcDEE7075894A95aF6Fde29E49A428901FF5E2202", | ||
| "threshold": 0.05, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "LHYPE", | ||
| "quoteAsset": "KYHYPE", | ||
| "isSVR": false |
There was a problem hiding this comment.
🧩 Analysis chain
Script executed:
#!/bin/bash
# Search for KYHYPE and KHYPE in the hyperevm.json file
echo "=== Searching for KYHYPE occurrences ==="
rg -n "KYHYPE" src/constants/oracle/chainlink-data/hyperevm.json
echo ""
echo "=== Searching for KHYPE occurrences (without extra Y) ==="
rg -n "KHYPE" src/constants/oracle/chainlink-data/hyperevm.json
echo ""
echo "=== Searching for khype pattern (lowercase) ==="
rg -n "khype" src/constants/oracle/chainlink-data/hyperevm.jsonRepository: antoncoding/monarch
<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>
KYHYPE vs KHYPE token cryptocurrency
<web_search_result>
Short answer: KHYPE is a real token — Kinetiq Staked HYPE, a liquid‑staking derivative of HYPE (tradeable and reward‑bearing). "KYHYPE" is not a widely listed token symbol — it appears in Chainlink/feeds changelogs as a data‑feed label (LHYPE / KYHYPE) rather than as a standalone token — so it’s likely a price‑feed identifier or internal symbol, not a different ERC token. If you mean a specific on‑chain token called KYHYPE, send the contract address and I’ll look it up. Sources: Kinetiq/kHYPE docs, CoinGecko price page for Kinetiq Staked HYPE, Chainlink changelog. [1][2][3]
Sources
[1] Kinetiq — kHYPE (protocol/token overview).
[2] CoinGecko — Kinetiq Staked HYPE (KHYPE) market page.
[3] Chainlink dev changelog (mentions LHYPE / KYHYPE data feed).
</web_search_result>
Chainlink LHYPE KYHYPE feed specification
<web_search_result>
Here are the Chainlink feed specifications I found for LHYPE and KHYPE (HyperEVM network):
- LHYPE / STHYPE — Exchange Rate feed
- Network: HyperEVM Mainnet.
- Product name: LHYPE/STHYPE-ExRate-DF-Hyperliquid-001.
- Feed type: Exchange Rate (custom).
- Trigger: Deviation threshold 0.05% (heartbeat shown on feed page).
- Contract (standard) address: 0x223d...9541.
- ENS: lhype-sthype-exchange-rate.data.eth.
Source: Chainlink Data Feeds. [1]
- KHYPE-HYPE — Exchange Rate feed
- Network: HyperEVM Mainnet.
- Product name: KHYPE/HYPE-ExRate-DF-Hyperliquid-001.
- Feed type: Exchange Rate (custom).
- Trigger: Deviation threshold 0.05%.
- Contract (standard) address: 0x272d...0eCB.
- ENS: khypehype-exchange-rate.data.eth.
Source: Chainlink Data Feeds. [2]
- KHYPE / USD — Reference Price feed
- Network: HyperEVM Mainnet.
- Product name: KHYPE/USD-RefPrice-DF-Hyperliquid-001.
- Feed type: Reference Price (Medium Market Risk listed).
- Trigger: Deviation threshold 0.5% (heartbeat shown on feed page).
- Contract (standard) address: 0xC66B...9bcc.
- ENS: khype-usd.data.eth.
Source: Chainlink Data Feeds. [3]
Notes: the data.chain.link pages above show the full feed metadata (oracles list, exact contract addresses, product IDs, and live update/heartbeat settings). If you want the exact full contract addresses, ABI, decimals, or a direct link to any of these feed pages, tell me which feed and I’ll fetch the full address/ABI and link.
Sources:
[1] LHYPE / STHYPE feed (Chainlink Data Feeds).
[2] KHYPE-HYPE feed (Chainlink Data Feeds).
[3] KHYPE / USD feed (Chainlink Data Feeds).
</web_search_result>
Confirm typo: KYHYPE should be KHYPE
Official Chainlink Data Feeds for HyperEVM show no feed using KYHYPE as a quote asset. The actual feeds use KHYPE (Kinetiq Staked HYPE) or STHYPE, not KYHYPE. The path "lhype-khype-exchange-rate" confirms this should be a LHYPE/KHYPE pair, making the "quoteAsset": "KYHYPE" entry incorrect.
Change "quoteAsset": "KYHYPE" to "quoteAsset": "KHYPE".
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/hyperevm.json around lines 179 to 187,
the quoteAsset value is misspelled as "KYHYPE"; update the "quoteAsset" field to
"KHYPE" to match the path "lhype-khype-exchange-rate" and official Chainlink
feed naming conventions, ensuring the JSON key remains quoted and the file stays
valid JSON.
| if (chainId === SupportedNetworks.HyperEVM) { | ||
| return `https://data.chain.link/feeds/hyperliquid/mainnet/${ens}` | ||
| } | ||
| if (chainId === SupportedNetworks.Monad) { | ||
| return `https://data.chain.link/feeds/monad/mainnet/${ens}`; | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
Script executed:
#!/bin/bash
# Read the specific file section to verify current state
sed -n '62,67p' src/constants/oracle/chainlink-data/index.tsRepository: antoncoding/monarch
<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>
Chainlink data.chain.link feed URL structure for Hyperliquid HyperEVM and Monad networks documentation
<web_search_result>
Pattern: https://data.chain.link/feeds/{publisher}/{network}/{pair-slug}
Examples:
- Hyperliquid (HyperEVM): https://data.chain.link/feeds/hyperliquid/hyperliquid/usdh-usd (see USDH / USD). [1]
- Monad (Monad network): https://data.chain.link/feeds/monad/monad/mon-usd (see MON / USD). [2]
Notes:
- {publisher} is the feed publisher/group (e.g., hyperliquid, monad).
- {network} is the network identifier shown on data.chain.link (e.g., hyperliquid → HyperEVM Mainnet).
- {pair-slug} is the feed slug (asset-asset, lowercased, with dashes), e.g. usdh-usd, mon-usd.
Reference: Chainlink Data Feeds pages. [3]
Sources:
[1] https://data.chain.link/feeds/hyperliquid/hyperliquid/usdh-usd
[2] https://data.chain.link/feeds/monad/monad/mon-usd
[3] https://docs.chain.link/data-feeds
</web_search_result>
Based on the web search results, I've discovered a critical issue with the URL prefixes in the code:
The Chainlink data.chain.link feed URLs in the code are incorrect.
According to Chainlink's documentation, the correct URL structure is:
https://data.chain.link/feeds/{publisher}/{network}/{pair-slug}
Where:
- Hyperliquid (HyperEVM):
feeds/hyperliquid/hyperliquid/{pair}(NOTfeeds/hyperliquid/mainnet/{pair}) - Monad:
feeds/monad/monad/{pair}(NOTfeeds/monad/mainnet/{pair})
The code currently uses mainnet as the network identifier, but Chainlink uses the actual network names (hyperliquid and monad). These incorrect URLs will not resolve to valid Chainlink data feeds.
Unfortunately, I was unable to verify the semicolon formatting issue directly due to repository access constraints. However, this secondary formatting concern is now overshadowed by the URL correctness problem.
Fix the network identifiers in the feed URLs: replace mainnet with the correct network names (hyperliquid for HyperEVM and monad for Monad).
The current URLs will not work with Chainlink's actual data feed structure. Update lines 62-67 to use the correct network identifiers according to Chainlink's documentation, then run pnpm format to ensure consistent formatting.
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/index.ts around lines 62 to 67, the
Chainlink feed URLs use "mainnet" as the network segment but must use the actual
network names; update the two return strings to replace
"/feeds/hyperliquid/mainnet/" with "/feeds/hyperliquid/hyperliquid/" and
"/feeds/monad/mainnet/" with "/feeds/monad/monad/"; after changing the URL
strings, run pnpm format to fix formatting/semicolons.
| { | ||
| "ens": "ustb-nav-aave-llamaguard", | ||
| "heartbeat": 97200, | ||
| "path": "ustb-nav-aave-llamaguard", | ||
| "proxyAddress": "0xde49c7B5C0E54b1624ED21C7D88bA6593d444Aa0", | ||
| "threshold": 1e-7, | ||
| "feedCategory": "", | ||
| "baseAsset": "", | ||
| "quoteAsset": "", | ||
| "isSVR": false | ||
| }, |
There was a problem hiding this comment.
Several entries have empty baseAsset, quoteAsset, and feedCategory—verify intentional.
Entries like ustb-nav-aave-llamaguard (lines 415-417), uscc-nav-aave-llamaguard (lines 481-483), usyc-nav-aave-llamaguard (lines 613-615), and jaaa-nav-aave-llamaguard (lines 657-659) lack asset and category data. Are these placeholders, or should they be populated?
Also applies to: 475-485, 608-617, 651-661
| [ | ||
| { | ||
| "ens": "usdt-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usdt-usd", | ||
| "proxyAddress": "0x1a1Be4c184923a6BFF8c27cfDf6ac8bDE4DE00FC", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "USDT", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "avax-usd", | ||
| "heartbeat": 3600, | ||
| "path": "avax-usd", | ||
| "proxyAddress": "0xb0c0202E6d8b978f9b6FE6B5e50ebD6FD7A962a1", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "AVAX", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "sui-usd", | ||
| "heartbeat": 3600, | ||
| "path": "sui-usd", | ||
| "proxyAddress": "0x69E075202802B5a90661AfDb4aDC117Eef8a59DF", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "SUI", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "smon-mon-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "smon-mon-exchange-rate", | ||
| "proxyAddress": "0x056d0eF95A4e046D028b00E6eC00bB4A8b1eBb96", | ||
| "threshold": 0.5, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "SMON", | ||
| "quoteAsset": "MON", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "sol-usd", | ||
| "heartbeat": 3600, | ||
| "path": "sol-usd", | ||
| "proxyAddress": "0x16F8008c3e89f62e5e2b909Ce70999370D38F4F2", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "SOL", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "cbbtc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "cbbtc-usd", | ||
| "proxyAddress": "0x3dDc1bAE752aaEe31b577bF844c799C349A1d6BD", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "CBBTC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "dot-usd", | ||
| "heartbeat": 3600, | ||
| "path": "dot-usd", | ||
| "proxyAddress": "0xc40F902d11b11BF243283AF537A4Fc617344B2C7", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "DOT", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "rseth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "rseth-usd", | ||
| "proxyAddress": "0x7422d308f0Aeb0c7816402Ff4E68078c2549435b", | ||
| "threshold": 0.05, | ||
| "feedCategory": "high", | ||
| "baseAsset": "RSETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "wbtc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "wbtc-usd", | ||
| "proxyAddress": "0x2D1Df1bD061AAc38C22407AD69d69bCC3C62edBD", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "WBTC", | ||
| "quoteAsset": "BTC", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "pol-usd", | ||
| "heartbeat": 3600, | ||
| "path": "pol-usd", | ||
| "proxyAddress": "0x519dC0fBb6f4fa37F59Dc17CC60eF4d95cd8D001", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "POL", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "weeth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "weeth-usd", | ||
| "proxyAddress": "0x42dd36b9D6938dccff8Fe4E9770589aBa614FCBB", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "weETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "ltc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "ltc-usd", | ||
| "proxyAddress": "0xF29B907b292fb27e07f06331E4e92Ea7288a6001", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "LTC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "gmon-mon-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "gmon-mon-exchange-rate", | ||
| "proxyAddress": "0xf97dfEd6Aa4cc387aBC5d47F0062A91CB4E4A755", | ||
| "threshold": 0.05, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "GMON", | ||
| "quoteAsset": "MON", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "solvbtc-btc-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "solvbtc-btc-exchange-rate", | ||
| "proxyAddress": "0x8CAeDe99D5253457E3bd7A52697C99d00549D04A", | ||
| "threshold": 0.01, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "solvBTC", | ||
| "quoteAsset": "BTC", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "mon-usd", | ||
| "heartbeat": 3600, | ||
| "path": "mon-usd", | ||
| "proxyAddress": "0xBcD78f76005B7515837af6b50c7C52BCf73822fb", | ||
| "threshold": 0.02, | ||
| "feedCategory": "new", | ||
| "baseAsset": "MON", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "bera-usd", | ||
| "heartbeat": 3600, | ||
| "path": "bera-usd", | ||
| "proxyAddress": "0x92929c1b04C6b4AbD6c2C34111d447d972cACA71", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "BERA", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "eth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "eth-usd", | ||
| "proxyAddress": "0x1B1414782B859871781bA3E4B0979b9ca57A0A04", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "ETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "earnausd-ausd-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "earnausd-ausd-exchange-rate", | ||
| "proxyAddress": "0x66608681545aaa50D9ebdBd9542fEeA4e49B85da", | ||
| "threshold": 0.05, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "EarnAUSD", | ||
| "quoteAsset": "AUSD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "usdc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usdc-usd", | ||
| "proxyAddress": "0xf5F15f188AbCB0d165D1Edb7f37F7d6fA2fCebec", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "USDC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "link-usd", | ||
| "heartbeat": 3600, | ||
| "path": "link-usd", | ||
| "proxyAddress": "0x5c266b5c655664d6c99a13fF0d7F1F7eaF4Ac9ba", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "LINK", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "wsteth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "wsteth-usd", | ||
| "proxyAddress": "0xe6cd21b31948503dB54A07875999979722504B9A", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "WSTETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "usr-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usr-usd", | ||
| "proxyAddress": "0x5A96Af6E7c9aA17901D9E2f00feafAFc7655B19F", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "USR", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "uni-usd", | ||
| "heartbeat": 3600, | ||
| "path": "uni-usd", | ||
| "proxyAddress": "0x8Cc589634A0B5959Fb29fc1111CFf26356b11918", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "UNI", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "near-usd", | ||
| "heartbeat": 3600, | ||
| "path": "near-usd", | ||
| "proxyAddress": "0x921cB0E4f2397454240CcdB27596217CE4e65090", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "NEAR", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "pyusd-usd", | ||
| "heartbeat": 3600, | ||
| "path": "pyusd-usd", | ||
| "proxyAddress": "0xb368d0CF937A6843fb68f1CD0056C835B4Cf3F70", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "PYUSD", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "hype-usd", | ||
| "heartbeat": 3600, | ||
| "path": "hype-usd", | ||
| "proxyAddress": "0xf62D24B17181305B22E520fB14384eB86b9C6944", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "HYPE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "ezeth-eth-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "ezeth-eth-exchange-rate", | ||
| "proxyAddress": "0xdA0Da3272575e3fed2Bd61Bc63DB776516e808F2", | ||
| "threshold": 0.5, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "EZETH", | ||
| "quoteAsset": "ETH", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "apr-usd", | ||
| "heartbeat": 3600, | ||
| "path": "apr-usd", | ||
| "proxyAddress": "0x7bFEB91472503F927539B6ED0A328dfb091F61Cc", | ||
| "threshold": 0.05, | ||
| "feedCategory": "new", | ||
| "baseAsset": "APR", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "ausd-usd", | ||
| "heartbeat": 3600, | ||
| "path": "ausd-usd", | ||
| "proxyAddress": "0xE20751C7B5867bCBef815ffc1b284c3f412a9e13", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "AUSD", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "usde-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usde-usd", | ||
| "proxyAddress": "0x6b5902EABcE27C23FC97ea136504395b4d22C1FD", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "USDE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "ezeth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "ezeth-usd", | ||
| "proxyAddress": "0xC38c1843751941019EdE3B8E041EE1bD14575B44", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "EZETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "aave-usd", | ||
| "heartbeat": 3600, | ||
| "path": "aave-usd", | ||
| "proxyAddress": "0x2a954d493eE80BcC7cDeF56DB6fC6edC6758CA5d", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "AAVE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "xag-usd", | ||
| "heartbeat": 3600, | ||
| "path": "xag-usd", | ||
| "proxyAddress": "0x29bEb7e730f09D33417357dbed020B549fdF7db4", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "XAG", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "cake-usd", | ||
| "heartbeat": 3600, | ||
| "path": "cake-usd", | ||
| "proxyAddress": "0x6156c406B7672b4720B7A2E637F32fc68E55930c", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "CAKE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "ada-usd", | ||
| "heartbeat": 3600, | ||
| "path": "ada-usd", | ||
| "proxyAddress": "0xA7cd3368eBC801df68812d46AB6b3F47d4BF37ea", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "ADA", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "cro-usd", | ||
| "heartbeat": 3600, | ||
| "path": "cro-usd", | ||
| "proxyAddress": "0xfDa103bb79FbB958eD270F828ca2506D046cAC91", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "CRO", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "shmon-mon-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "shmon-mon-exchange-rate", | ||
| "proxyAddress": "0x54a1020D118B9BeF3F3A4ec8E24AeEc9DFdBe4c3", | ||
| "threshold": 0.5, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "shMON", | ||
| "quoteAsset": "MON", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "op-usd", | ||
| "heartbeat": 3600, | ||
| "path": "op-usd", | ||
| "proxyAddress": "0x3B59380FdCf2fd414F1675D76AF5F20FB92663a7", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "OP", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "sei-usd", | ||
| "heartbeat": 3600, | ||
| "path": "sei-usd", | ||
| "proxyAddress": "0x251eD64BD39e8fceB708b483D18Ee34bf4040aE8", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "SEI", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "bnb-usd", | ||
| "heartbeat": 3600, | ||
| "path": "bnb-usd", | ||
| "proxyAddress": "0xEB58Fa36e5715fc1Bdb9959E0Ae01803B7432882", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "BNB", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "steth-usd", | ||
| "heartbeat": 3600, | ||
| "path": "steth-usd", | ||
| "proxyAddress": "0xad7AF5c6d78Ef5f4d3c4133593047d9E2A8BDa8d", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "STETH", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "arb-usd", | ||
| "heartbeat": 3600, | ||
| "path": "arb-usd", | ||
| "proxyAddress": "0xcD22c0012480987F6F81F1099E74954B75666361", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "ARB", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "tia-usd", | ||
| "heartbeat": 3600, | ||
| "path": "tia-usd", | ||
| "proxyAddress": "0x31938934512dFFf3c410a6D07CeAF5F38B66BFee", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "TIA", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "btc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "btc-usd", | ||
| "proxyAddress": "0xc1d4C3331635184fA4C3c22fb92211B2Ac9E0546", | ||
| "threshold": 0.02, | ||
| "feedCategory": "low", | ||
| "baseAsset": "BTC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "usd1-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usd1-usd", | ||
| "proxyAddress": "0xa63564f2A626f69130C1CCA87f984351B26Cf2f1", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "USD1", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "usds-usd", | ||
| "heartbeat": 3600, | ||
| "path": "usds-usd", | ||
| "proxyAddress": "0xa16212CD5b330583B346167fA91E138d41AEe8CC", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "USDS", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "doge-usd", | ||
| "heartbeat": 3600, | ||
| "path": "doge-usd", | ||
| "proxyAddress": "0x1c747D909102bfCdb305C54bDdDBdA3eF588B1d0", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "DOGE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "solvbtc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "solvbtc-usd", | ||
| "proxyAddress": "0xd447F67Dc94f234dFA1a3921C08330CecA06a1dC", | ||
| "threshold": 0.05, | ||
| "feedCategory": "high", | ||
| "baseAsset": "solvBTC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "shib-usd", | ||
| "heartbeat": 3600, | ||
| "path": "shib-usd", | ||
| "proxyAddress": "0x68f23F7820B8528FBd1039B235923d8FB2590985", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "SHIB", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "apt-usd", | ||
| "heartbeat": 3600, | ||
| "path": "apt-usd", | ||
| "proxyAddress": "0x714de9941991c7Cec93efA6cB63469bD6bFE1258", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "APT", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "lbtc-usd", | ||
| "heartbeat": 3600, | ||
| "path": "lbtc-usd", | ||
| "proxyAddress": "0x3D160cBa91B35BC295295Cb790080E9be9A46811", | ||
| "threshold": 0.05, | ||
| "feedCategory": "medium", | ||
| "baseAsset": "LBTC", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "susde-usd", | ||
| "heartbeat": 3600, | ||
| "path": "susde-usd", | ||
| "proxyAddress": "0xB7E7A36A0Fc6543C10f4F9B60E942F1b628f2a13", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "SUSDE", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "xau-usd", | ||
| "heartbeat": 3600, | ||
| "path": "xau-usd", | ||
| "proxyAddress": "0x61dD33A34E47a181EE02e42eE0546a3DA808f1B4", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "XAU", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "s-usd", | ||
| "heartbeat": 3600, | ||
| "path": "s-usd", | ||
| "proxyAddress": "0x1Bd7CEBABA5C2c40D44b83A08F42A3377447dDFe", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "S", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "aprmon-mon-exchange-rate", | ||
| "heartbeat": 86400, | ||
| "path": "aprmon-mon-exchange-rate", | ||
| "proxyAddress": "0xc744776cAF11982a4c632121E0f6E2543f42FA47", | ||
| "threshold": 0.05, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "aprMON", | ||
| "quoteAsset": "MON", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "aave-network-emergency-count-monad", | ||
| "heartbeat": 86400, | ||
| "path": "aave-network-emergency-count-monad", | ||
| "proxyAddress": "0x4C24fFe2Cb6dE5C55ef0cA8905c13b8508994D4b", | ||
| "threshold": 1e-7, | ||
| "feedCategory": "custom", | ||
| "baseAsset": "", | ||
| "quoteAsset": "", | ||
| "isSVR": false | ||
| }, | ||
| { | ||
| "ens": "xrp-usd", | ||
| "heartbeat": 3600, | ||
| "path": "xrp-usd", | ||
| "proxyAddress": "0x979211Dfbc0738559B778a6a58a5b1bbbBe720f9", | ||
| "threshold": 0.05, | ||
| "feedCategory": "low", | ||
| "baseAsset": "XRP", | ||
| "quoteAsset": "USD", | ||
| "isSVR": false | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
Script executed:
#!/bin/bash
# Find all chainlink-data JSON files to compare structure
find src/constants/oracle/chainlink-data -type f -name "*.json" | head -20Repository: antoncoding/monarch
<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>
Script executed:
#!/bin/bash
# List files in chainlink-data directory to find comparable files
ls -la src/constants/oracle/chainlink-data/ 2>/dev/null || echo "Path may differ"
# Try alternate search
find . -name "*.json" -path "*/chainlink*" -type f 2>/dev/null | head -10Repository: antoncoding/monarch
<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>
Chainlink feedCategory values oracle feeds monad
<web_search_result>
Here’s what you’re likely after.
-
Common Chainlink Data Feed "category" (feedCategory) values (as shown on the official Data Feeds site): Asset Token, Commodity, Crypto, Equity, ETF, Fiat, Index, Macroeconomics, Money Market Fund, Proof of Reserve, Stablecoin, Stablecoin Stability Assessment, Tokenized Fund, Tokenized Treasury Fund. [1]
-
Chainlink Data Feeds (including price feeds and new MVR/Rate/Volatility feeds) are available on Monad (testnet earlier and mainnet live). See the Monad feed listings (e.g., MON / USD) on the Chainlink feeds site and the Chainlink changelog about Monad integration. [1][2]
Sources:
- Chainlink Data Feeds listing (categories & per-network feeds). [1]
- Chainlink changelog: Data Feeds on/expanded to Monad. [2]
</web_search_result>
wbtc-usd quote asset price feed convention
<web_search_result>
Short answer:
- The quote-asset convention for a WBTC–USD price feed is USD as the quote (i.e., price = USD per 1 WBTC). Feeds are named like WBTC/USD, WBTC-USD or WBTC_USD depending on provider. [1][2]
Important integration details (check these on-chain or in the feed docs before using):
- Decimals vary by feed — many Chainlink USD feeds return prices with 8 decimals but this is not universally guaranteed. Always call decimals() (or read the feed metadata) and scale accordingly. Do not assume a fixed precision. [1][3]
- Some integrations wrap or rescale feed answers (e.g., convert to 18‑decimals) — inspect the adapter/contract code you rely on. [3][4]
References:
[1] Chainlink WBTC / USD price feed page (feed metadata & naming).
[2] Example market/display sites showing pair convention (CoinGecko: WBTC / USD).
[3] Audit / integration notes demonstrating that Chainlink USD feeds often use 8 decimals but you must read decimals() and handle per‑feed scaling.
[4] Adrastia / oracle docs recommending verifying quote token and decimals before integration.
</web_search_result>
Based on my web search, I can now verify the concerns:
WBTC-USD Quote Asset Issue: CONFIRMED
The web search confirms that Chainlink WBTC/USD price feeds should have USD as the quote asset, not BTC. The naming convention wbtc-usd clearly indicates USD as the quote. This is indeed a data anomaly that needs fixing.
FeedCategory Values: Context Clarified
The official Chainlink feedCategory values are: Asset Token, Commodity, Crypto, Equity, ETF, Fiat, Index, Macroeconomics, Money Market Fund, Proof of Reserve, Stablecoin, Stablecoin Stability Assessment, Tokenized Fund, Tokenized Treasury Fund.
However, this JSON file uses custom values: "low", "medium", "high", "custom", and "new". These appear to be internal severity/priority classifications rather than Chainlink's official categories. The "new" value for mon-usd and apr-usd likely flags recently added feeds.
Fix wbtc-usd quote asset from "BTC" to "USD".
The entry for wbtc-usd incorrectly specifies "quoteAsset": "BTC". Per Chainlink conventions and the feed naming (wbtc-usd), the quote asset should be "USD". This matches the pattern of all other -usd feeds in the file.
The feedCategory values ("low", "medium", "high", "custom", "new") appear to be custom internal severity classifications. Verify that all consumers of this JSON properly handle the "new" category alongside the standard values.
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/monad.json lines 1-628, the wbtc-usd
entry incorrectly sets "quoteAsset": "BTC"; change that value to "USD" so the
feed matches the naming convention and other -usd entries; also scan other
entries for similar mismatches and, if applicable, confirm consumers tolerate
the custom feedCategory values ("low","medium","high","custom","new") but do not
change those here.
Summary by CodeRabbit
Release Notes
New Features
Updates
✏️ Tip: You can customize this high-level summary in your review settings.