You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polygon主网智能合约如何获取Chainlink已验证USD配对代币价格喂料?

核心思路

Polygon主网的Chainlink Feed Registry已完整适配大量代币的USD价格喂料查询,可直接通过合约调用完成代币准入验证与喂料地址获取,无需自行维护喂料地址列表。

具体实现步骤

1. 导入Chainlink接口并初始化Feed Registry

Polygon主网的Feed Registry合约固定地址为0x47Fb2585D2C56Fe188D0E6ec628a38b74fCeeeDf,在合约中导入对应接口并完成初始化:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
import "@chainlink/contracts/src/v0.8/interfaces/FeedRegistryInterface.sol";

contract TokenPriceValidator {
    FeedRegistryInterface public immutable feedRegistry;
    // Polygon主网Chainlink定义的USD基准地址
    address public constant USD = 0x0000000000000000000000000000000000000348;

    constructor() {
        feedRegistry = FeedRegistryInterface(0x47Fb2585D2C56Fe188D0E6ec628a38b74fCeeeDf);
    }
}

2. 验证代币是否存在已验证USD喂料

添加函数通过Feed Registry查询代币与USD的配对喂料,若返回非零地址则说明存在有效验证喂料:

function hasValidUSDPriceFeed(address token) public view returns (bool) {
    AggregatorV3Interface feed = feedRegistry.getFeed(token, USD);
    return address(feed) != address(0);
}

仅当此函数返回true时,才允许该代币被添加。

3. 查询代币的USD价格喂料地址

在验证通过后,直接获取对应喂料地址,用于后续价格查询:

function getUSDPriceFeed(address token) public view returns (address) {
    require(hasValidUSDPriceFeed(token), "Token has no verified USD feed");
    return address(feedRegistry.getFeed(token, USD));
}

关键注意事项

  • Polygon主网Feed Registry已收录主流及大部分合规代币的USD验证喂料,覆盖范围满足常规需求
  • 若getFeed返回零地址,说明该代币无Chainlink官方验证的USD价格喂料,需拒绝准入
  • 确保合约使用的Chainlink接口版本(推荐v0.8)与Polygon Feed Registry兼容

内容的提问来源于stack exchange,提问作者Keerthana Ramalingam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:52:07