Q23 · 预言机与安全
什么是预言机?原理是什么?
⚡ 速记答案(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 位小数
}
}面试技巧:回答时先给出核心结论,再展开细节。如果有实际项目经验,一定要结合具体案例说明。