SuperAPI AI 工具集

chainlink-data-feeds

编程与开发

查看项目

更新于 10-15 18:13

技能介绍

用途

该技能用于在 Hedera 网络上读取 Chainlink Data Feeds(价格馈送),适用于智能合约中对 AggregatorV3 价格馈送进行读取与校验的场景,尤其是 Hedera 测试网(链 ID 296)与主网(链 ID 295)。

工作模式

采用 push feed 模式:Chainlink 聚合器在链下更新,链上读取方调用 latestRoundData(),并且必须拒绝不完整、非正数或过期的轮次。

数据流向为:Chainlink DON → AggregatorV3Interface feed → 消费者调用 latestRoundData()。

消费者可以选择将 feed 包装在本地接口之后,这是可选项。不要假定某个项目特定的适配器名称。

主要能力与校验要点

快速参考中的各部分角色:

  • AggregatorV3Interface:latestRoundData() 与 decimals()。
  • 轮次完整性:answeredInRound >= roundId 且 updatedAt != 0。
  • 价格:answer > 0(feed 通常是有符号 int256)。
  • 新鲜度:将 block.timestamp - updatedAt 与最大过期时间比较。
  • 精度:将 feed 的 decimals 归一化到消费者使用的精度(常见为 18)。
  • 交易对标识:若对交易对键做哈希,优先使用规范的大写符号(HBAR、USD)。

Hedera 链 ID:测试网 296,主网 295。

参见 references/hedera-feeds.md 了解 Hedera feed 地址的来源,参见 references/examples.md 了解读取与归一化示例。

关键原则:先完整性,再新鲜度

绝不要从未缺失或未完成的轮次返回价格。以下条件应 revert:

  • answeredInRound < roundId:聚合器尚未完成该轮次。
  • updatedAt == 0:没有成功的更新。
  • answer <= 0:无效或非正数价格。
  • block.timestamp - updatedAt > maxStaleness:对本消费者而言已过期。

示例代码(保持原样):

(uint80 roundId, int256 answer,, uint256 updatedAt, uint80 answeredInRound) =
    feed.latestRoundData();

if (answeredInRound < roundId || updatedAt == 0) revert IncompleteRound();
if (answer <= 0) revert InvalidPrice();
if (block.timestamp - updatedAt > maxStaleness) revert StalePrice(updatedAt, maxStaleness);

关键原则:使用 Hedera feed,而非以太坊地址

不要将以太坊主网的聚合器地址复制到 Hedera。应查找链 295 / 296 的 Hedera 专属 Data Feed 地址,并在上主网前重新核对文档。

若使用交易对映射,应为仅构造函数(constructor-only)设置,除非项目明确支持部署后更新。

精度归一化

feed.decimals() 通常为 8。在做算术运算前,转换为应用使用的精度:

uint256 price = normalizeToScale(uint256(answer), feed.decimals(), /* target */ 18);

保持转换舍入方式明确(通常向下取整)。不要将原始聚合器单位与 18 位小数金额混用。

清单

在 Hedera 上实现或审查 Chainlink 读取时:

  • feed 地址取自 Hedera Data Feeds 文档(而非以太坊)。
  • 在使用 answer 之前进行 latestRoundData 完整性检查。
  • 非正数价格应 revert。
  • 强制实施过期时间上限。
  • 将 decimals 归一化到消费者精度。
  • 链 ID 为 295 或 296(或项目文档记录的 Hedera 网络)。

参考

  • references/examples.md — latestRoundData 与归一化示例。
  • references/hedera-feeds.md — Hedera 聚合器地址的来源。

限制

资料未提供 Hedera 具体 feed 地址、各项目的收费或价格信息、除上述校验外的其他功能,以及具体网络部署步骤。