预言机(Oracle)
简而言之 预言机是把链外数据(通常是资产价格)传入区块链、供智能合约使用的服务。预言机出问题,会造成真实的资金损失。
区块链只能看到记录在链上的内容。智能合约无法自己查询 ETH 兑美元的价格、一场比赛的结果,或者天气。预言机就是这座桥梁:它是一种服务或网络,负责读取外部世界的数据并写入链上,供合约使用。
在 DeFi 中,最常见的用途是提供价格数据。借贷协议用预言机价格判断一笔贷款何时抵押不足、可以被清算。永续合约平台用它来标记仓位价格并触发清算。有些预言机是去中心化网络,由许多独立节点各自上报数值,网络再发布聚合结果,通常是中位数。另一些则直接取自 DEX 流动性池的价格,有时会在一段时间窗口内取平均,这称为时间加权平均价格(TWAP)。取平均能让短暂的价格尖峰更难被利用,但并不能消除风险:资金足够的攻击者可以在多个区块内维持被扭曲的价格,而流动性薄的池子仍可能被拉离真实市场很远。
预言机之所以和你有关,是因为合约会照单全收它收到的任何数字。好的协议会加入各种保护措施,例如拒绝波动过大的价格、拒绝过期数据、在第二个价格源之间切换备用,或者暂停借款,但这些措施只能覆盖设计者预想到的情况。历史上有多起攻击就是利用闪电贷在流动性薄的池子里推高价格,让协议读到被扭曲的价格,于是攻击者借出的资金远超抵押品的真实价值。流动性浅的小币种最容易被操纵,因此对允许用这类代币做抵押借款的协议要保持警惕。
要查清项目的价格从哪里来。成熟的预言机网络通常比单个小池子的现货价格更难被篡改,但仅看节点数量并不能说明问题。要看底层数据源是否相互独立、价格背后有多少真实流动性,以及数值是如何聚合的,因为许多节点如果都在照搬同一个薄弱的市场,上报的依然是错误的价格。还要看谁控制着预言机的设置:如果单个管理员钱包就能更换价格源,那它实际上就能决定价格。




