{"api":"prices","method":"Chainlink decentralized oracle feeds read directly on-chain via RPC; no centralized price API. Every feed address is validated on-chain (description() + latestRoundData()) before it ships.","staleness_model":{"formula":"stale = staleness_seconds > heartbeat_seconds × grace_factor","grace_factor":1.25,"grace_factor_basis":"The heartbeat is when a posting round STARTS, not when it lands — an OCR committee still has to agree, submit and get included, and we compare a server clock against a block timestamp. The slack is published so you can recompute the verdict at 1.0 (or anything else) from the same three numbers.","unknown_heartbeat":"A feed with heartbeat_seconds: null reports stale: null, never false — an unknown cadence is not a verdict.","feeds_with_known_heartbeat":28,"feeds_without_known_heartbeat":0},"heartbeat_source":{"name":"Chainlink reference data directory (the feed metadata behind data.chain.link)","urls":{"base":"https://reference-data-directory.vercel.app/feeds-ethereum-mainnet-base-1.json","ethereum":"https://reference-data-directory.vercel.app/feeds-mainnet.json"},"fetched_at":"2026-08-09","matched_feeds":28,"total_feeds":28,"note":"heartbeat_seconds and deviation_threshold_percent are Chainlink's published values, not measured or inferred by us. An entry is accepted only when its proxyAddress is our aggregator address AND its name matches the description() we read off that contract; anything else is published as null and the API returns stale: null for that feed rather than a guess. The heartbeat is NOT readable on-chain — heartbeat()/timeout()/maxAnswerAge() all revert on these OCR2 aggregators (probed 2026-08-09), which is why it is sourced from this file and dated."},"limitations":["Prices are oracle mid-values on a heartbeat/deviation update model — NOT tick-by-tick exchange data.","heartbeat_seconds is the LONGEST a feed goes without posting; it also posts early on a deviation_threshold_percent move. Silence inside the heartbeat is healthy, not a fault.","History granularity = the feed's update cadence (irregular), not fixed intervals/candles.","USD quote only; a pair may resolve on Ethereum or Base (see each feed's chain).","Not trading advice; oracle feeds can lag fast-moving markets."],"counts":{"feeds":28,"pairs":22,"chains":2},"pairs":["1INCH","AAVE","APE","AVAX","BNB","BTC","CBETH","COMP","CRV","DAI","ETH","GRT","LINK","MKR","POL","SNX","SOL","SUSHI","UNI","USDC","USDT","YFI"],"feeds":[{"pair":"BTC","chain":"base","decimals":8,"description":"BTC / USD","address":"0x64c911996D3c6aC71f9b455B1E8E7266BcbD848F","heartbeat_seconds":1200,"deviation_threshold_percent":0.1},{"pair":"cbETH","chain":"base","decimals":8,"description":"CBETH / USD","address":"0xd7818272B9e248357d13057AAb0B417aF31E817d","heartbeat_seconds":1200,"deviation_threshold_percent":0.15},{"pair":"DAI","chain":"base","decimals":8,"description":"DAI / USD","address":"0x591e79239a7d679378eC8c847e5038150364C78F","heartbeat_seconds":86400,"deviation_threshold_percent":0.3},{"pair":"ETH","chain":"base","decimals":8,"description":"ETH / USD","address":"0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70","heartbeat_seconds":1200,"deviation_threshold_percent":0.15},{"pair":"LINK","chain":"base","decimals":8,"description":"LINK / USD","address":"0x17CAb8FE31E32f08326e5E27412894e49B0f9D65","heartbeat_seconds":86400,"deviation_threshold_percent":0.5},{"pair":"USDC","chain":"base","decimals":8,"description":"USDC / USD","address":"0x7e860098F58bBFC8648a4311b374B1D669a2bc6B","heartbeat_seconds":86400,"deviation_threshold_percent":0.3},{"pair":"USDT","chain":"base","decimals":8,"description":"USDT / USD","address":"0xf19d560eB8d2ADf07BD6D13ed03e1D11215721F9","heartbeat_seconds":86400,"deviation_threshold_percent":0.3},{"pair":"1INCH","chain":"ethereum","decimals":8,"description":"1INCH / USD","address":"0xc929ad75B72593967DE83E7F7Cda0493458261D9","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"AAVE","chain":"ethereum","decimals":8,"description":"AAVE / USD","address":"0x547a514d5e3769680Ce22B2361c10Ea13619e8a9","heartbeat_seconds":3600,"deviation_threshold_percent":1},{"pair":"APE","chain":"ethereum","decimals":8,"description":"APE / USD","address":"0xD10aBbC76679a20055E167BB80A24ac851b37056","heartbeat_seconds":86400,"deviation_threshold_percent":2},{"pair":"AVAX","chain":"ethereum","decimals":8,"description":"AVAX / USD","address":"0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7","heartbeat_seconds":86400,"deviation_threshold_percent":2},{"pair":"BNB","chain":"ethereum","decimals":8,"description":"BNB / USD","address":"0x14e613AC84a31f709eadbdF89C6CC390fDc9540A","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"BTC","chain":"ethereum","decimals":8,"description":"BTC / USD","address":"0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c","heartbeat_seconds":3600,"deviation_threshold_percent":0.5},{"pair":"COMP","chain":"ethereum","decimals":8,"description":"COMP / USD","address":"0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5","heartbeat_seconds":3600,"deviation_threshold_percent":1},{"pair":"CRV","chain":"ethereum","decimals":8,"description":"CRV / USD","address":"0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"DAI","chain":"ethereum","decimals":8,"description":"DAI / USD","address":"0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9","heartbeat_seconds":3600,"deviation_threshold_percent":0.25},{"pair":"ETH","chain":"ethereum","decimals":8,"description":"ETH / USD","address":"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419","heartbeat_seconds":3600,"deviation_threshold_percent":0.5},{"pair":"GRT","chain":"ethereum","decimals":8,"description":"GRT / USD","address":"0x86cF33a451dE9dc61a2862FD94FF4ad4Bd65A5d2","heartbeat_seconds":86400,"deviation_threshold_percent":2},{"pair":"LINK","chain":"ethereum","decimals":8,"description":"LINK / USD","address":"0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c","heartbeat_seconds":3600,"deviation_threshold_percent":0.5},{"pair":"MKR","chain":"ethereum","decimals":8,"description":"MKR / USD","address":"0xec1D1B3b0443256cc3860e24a46F108e699484Aa","heartbeat_seconds":3600,"deviation_threshold_percent":1},{"pair":"POL","chain":"ethereum","decimals":8,"description":"MATIC / USD","address":"0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"SNX","chain":"ethereum","decimals":8,"description":"SNX / USD","address":"0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"SOL","chain":"ethereum","decimals":8,"description":"SOL / USD","address":"0x4ffC43a60e009B551865A93d232E33Fce9f01507","heartbeat_seconds":86400,"deviation_threshold_percent":2},{"pair":"SUSHI","chain":"ethereum","decimals":8,"description":"SUSHI / USD","address":"0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7","heartbeat_seconds":86400,"deviation_threshold_percent":1},{"pair":"UNI","chain":"ethereum","decimals":8,"description":"UNI / USD","address":"0x553303d460EE0afB37EdFf9bE42922D8FF63220e","heartbeat_seconds":3600,"deviation_threshold_percent":1},{"pair":"USDC","chain":"ethereum","decimals":8,"description":"USDC / USD","address":"0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6","heartbeat_seconds":82800,"deviation_threshold_percent":0.25},{"pair":"USDT","chain":"ethereum","decimals":8,"description":"USDT / USD","address":"0x3E7d1eAB13ad0104d2750B8863b489D65364e32D","heartbeat_seconds":86400,"deviation_threshold_percent":0.25},{"pair":"YFI","chain":"ethereum","decimals":8,"description":"YFI / USD","address":"0xA027702dbb89fbd58938e4324ac03B58d812b0E1","heartbeat_seconds":86400,"deviation_threshold_percent":1}]}