Q23 · 预言机与安全

什么是预言机?原理是什么?

预言机Chainlink喂价

⚡ 速记答案(30 秒)

  • 预言机(Oracle):把链下数据安全带上链的中间件
  • 原理:多个数据源 / 节点从外部世界拉数据 → 聚合(去极值、平均)→ 提交到链上喂价合约
  • 典型场景:喂价格(币价、汇率)、比赛结果、天气等
  • 项目:Chainlink、Band、Pyth 等

📖 详细讲解

预言机问题


区块链是封闭系统,无法直接获取外部数据(价格、天气、比赛结果)。


预言机解决的核心问题:如何安全可靠地将链下数据带到链上


Chainlink 工作原理


1. 多个独立节点从不同数据源获取数据
2. 节点将数据提交到聚合合约
3. 聚合合约去除异常值,计算中位数/平均值
4. 更新链上价格
5. DeFi 协议读取价格进行清算/交易

攻击风险


• 价格操纵攻击

• 闪电贷攻击

• 节点串谋


面试要点


• Chainlink 的去中心化程度

• 不同预言机的设计权衡

• 如何在 DeFi 中安全使用预言机

💻 代码示例

读取 Chainlink 喂价
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract PriceConsumer {
    AggregatorV3Interface internal priceFeed;

    constructor() {
        // ETH/USD 价格 Feed (Ethereum Mainnet)
        priceFeed = AggregatorV3Interface(
            0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
        );
    }

    function getLatestPrice() public view returns (int) {
        (
            /* uint80 roundID */,
            int price,
            /* uint startedAt */,
            /* uint timeStamp */,
            /* uint80 answeredInRound */
        ) = priceFeed.latestRoundData();
        return price; // 8 位小数
    }
}
💡
面试技巧:回答时先给出核心结论,再展开细节。如果有实际项目经验,一定要结合具体案例说明。