如何通过闪电贷操纵预言机价格?

  • NESTFANS
  • 更新于 2020-11-19 16:01
  • 阅读 2459

DeFi解决预言机问题提高抗攻击性能才是抵制闪电贷恶意攻击的根本所在,才能进入主流金融世界。

作者:知鱼 | NestFans论坛

描述:近期 DeFi 生态中发生了连续五次闪电贷操纵预言机价格的事故,这究竟是技术问题还是机制问题?

正文:

从今年二月份到现在,闪电贷攻击频频发生。前几日,知名白帽子 Sam Sun 在推特发文,具体阐述了 DeFi 为何频繁发生价格预言机操纵攻击的问题。北京时间 11 月 15 日凌晨,又一次操纵预言机价格的攻击,去中心化金融协议 Value DeFi 遭遇闪电贷攻击,攻击者通过复杂的方式从Value 协议的金库中转移走了大约 700 万美元,随后归还了 200 万美元,并附上了一条带有嘲讽意味的信息:“你们真的懂闪电贷吗?”。而在攻击发生前一日,Value DeFi 公开宣称自己是DeFi 领域最安全的协议,并且能够抵抗闪电贷攻击。就在笔者撰文的此刻,一则新闻出现,又一次闪电贷攻击,使得去中心化共享经济协议 Origin Protocol 损失 700 万美元。仅仅三周时间,Harvest Finance、Akropolis、Value DeFi、Cheese Bank 和 Origin Protocol 这五个 DeFi 协议接连遭到闪电贷攻击,均为百万美元级别以上,最终都是要投资者买单,至此,我们不得不认真去审视闪电贷操纵价格预言机的问题。

闪电贷是什么?

在 DeFi 的世界中,闪电贷是可以让任何人无需许可、无需抵押,便可立即借出一大笔资金,在DeFi 各协议之间进行操作套利,但在一个区块内必须还回去,否则交易回滚,取消此次任务的执行。这相当于,闪电贷可以让任何人在短时间拥有巨量资金从而具备操纵市场的能力,像巨鲸一样游走在各个 DeFi 协议之间。简单来说,就是你可以只消耗一点 gas 费,无需做任何抵押,便可以拥有巨额资金, 并在 1 个区块(13秒)时间内归还资金。

为什么会有闪电贷?

早期在 DeFi 的借贷中,是需要超额质押,才能借到一笔钱,资金利用率很低。随着 DeFi 生态的繁荣,智能合约之间可以互相支持调用,闪电贷也由此诞生。最早讨论闪电贷(flash loans)的是 Aave 协议,第一笔 flash loans 也来自 Aave 协议。

其初衷是为了提升资金利用率,确保用户无需抵押来实现快速借贷。虽然闪电贷极大的提高了加密资金的利用率,但也同时埋下了一些安全隐患。

一笔链上交易可以做很多事情,使得用户可以在借款和还款间加入其它链上操作,这就存在了作恶的空间,攻击者可以恶意的利用闪电贷借入、交换、存入并再次借入大量的 Token,人为地在 算法定价的 DEX (Uniswap)里操纵该 Token 的市场价格,这就出现了目前常见的闪电贷攻击。

应以区块链的视角去看待闪电贷

我们探讨闪电贷的问题,需要从本质上去探讨,从区块链的本质来探讨。在区块链的世界里,是假定每个人都是作恶者,就像中本聪创建比特币网络,连自己都假定为作恶者,才能保证系统的安全和去中心化。所以,闪电贷在某种意义上,是让每一个人都有机会成为“超级作恶者“,这是有必要的。如果这些“超级作恶者”成功作恶,直接的证明了 DeFi 协议的脆弱性,DeFi 是不成立的,是需要进行革新和改进的。因为,这种成功也间接证明了一个真实的“巨鲸”进行此类攻击也是可以完成攻击的,如果 DeFi 生态连这一关都过不了,何谈系统安全性,如何去承载万亿美金市值的加密市场呢?所以面对闪电贷,DeFi 科学家们需要解决的真正问题是:闪电贷到底攻击的是什么?是技术问题还是机制问题?

闪电贷攻击并不是 DeFi 生态中真正的系统性根源风险,究其本质在于 Oracle(预言机)攻击,据 samczsun.com 网站研究人员发布的报告,在 2020 年,针对价格 Oracle 操纵行为非常多,迄今为止已导致逾 3000 万美元损失,而且没有放缓的迹象。该报告还指出,多年来基于可重入性的攻击已经减少,而基于价格 Oracle 操纵的攻击现在正在上升。这并不是简单的代码漏洞,其本质其实是机制的漏洞,换句话讲就是:遭受闪电贷攻击不是技术问题,而是底层逻辑的机制问题。

关于预言机的探讨

DeFi 生态现在需要认清一个现实,价格预言机是 DeFi 生态最为重要的底层基础设施!如果预言机问题解决不了,那么代码质量再好的 DeFi 协议也都只是空中楼阁。

如果想要在链上形成一个庞大的 DeFi 市场,首先第一步就是要在链上生成价格。但是区块链无法在链上自动生成价格信息,需要依赖外部设施写入价格信息,所以,“写”这个动作就至关重要,如何让价格信息以去中心化的方式直接在区块链上生成出来,便是预言机要做的事情。

现在市面上的预言机如 Chainlink、Band 等都属于间接预言机,只是数据的搬运工,把数据上传到链上,靠的是信誉节点喂价。接入各交易所API,各节点间进行验证达成某种公允价格,上传到链上供 DeFi 生态使用,这是非常危险的。去中心化的 Oracle 网络,在多个交易所中接入 API 存在交易量和流动性差异,本身就加大了 Oracle 攻击风险。而且闪电贷系统攻击也证实了,这种低成本的上传价格数据,不是在整个市场上进行验证的价格给 DeFi 协议使用是不负责任的。就像 Sam Sun 所讲:“如果选择使用这些解决方案,你现在已将信任委派给第三方,你的用户也只能这样做”。这不是代码技术问题,这是经济逻辑和底层逻辑的问题,“写”这个动作或者“写”进去的数据没有得到全市场验证。

我们来看一下 NEST 预言机的解决方案

NEST 预言机方案采用了逆向验证的新思路,报价矿工要拿真金白银去参与报价,而不仅仅上传价格数据到链上合约中,在承担风险以及付出报价手续费的情况下,有成本的价格输出才是值得考量的,并且需要经过市场区块验证。有关 NEST 预言机的具体运行机制,我们以 ETH/USDT 价格为例进行说明:

1、任意参与者可以将自己认可的价格传入到报价合约,比如 1 ETH = 400 USDT,然后将这两种资产按照价格比例,打入到报价合约里,初始是30ETH 的规模,并收取 ETH 规模的 0.3% 作为手续费,进行挖矿,获得 NEST 激励;

2、打进去后,等待 T0 时间(目前是 25 个区块,5 分钟左右),这个时间周期内任何人可以用报价者的价格去买走 ETH 或者 USDT,如果 T0 内没有人成交,则该报价被系统录用,有人成交则该价格无效。超过这一时间,资产即可取回;

3、如果有人愿意与报价者成交,那么他成交的同时,也要按照上述标准报一个新的价格进去,这样就在初始报价 P0 后面形成 p1、p2 … 价格链。

4、成交者的报价规模,是他成交规模的 beta 整数倍,其中 beta > 1,这意味着价格链一定会随着规模的扩大而最终终止(停机),并且作恶者的成本几何级增长,从而对抗攻击行为。

5、NEST 价值:挖矿手续费及使用预言机需要支付一定的 ETH 费用,统一到分红合约,分配给所有的流通 NEST 持有人。

这样的 NEST 分布式价格事实预言机方案在具体结果上的表现为:其数据具备准确性、灵敏性、抗攻击性,而且能够对数据进行直接验证,且验证者可以是任意第三方,没有门槛限制;此外,NEST 预言机网络系统是高度分布式的,任何人都可以成为报价矿工,参与报价挖矿,自由进入或退出。在 NEST 报价机制里面,你用真金白银去写入的价格,要交给全市场验证,只有活过 25 个区块的价格数据才会被 NEST 预言机系统录入,仅仅这一点,闪电贷攻击就无法实现,因为闪电贷必须在一个区块内及时还款,若想操控 NEST 预言机,几乎不可能。

最后,我们对当前的预言机现状和发展趋势做一个小结:

1、中心化的预言机方案必然存在着中心化系统风险,且无法摆脱。

2、价格数据上链的本质不是往链上“上传”数据信息,而是要在链上形成(生成)价格事实;不管是中心化的上传价格信息,还是以去中心化的方式上传,都意味着链下价格事实先于链上产生。而真正的预言机系统,应该要做到链下价格事实同步产生于链上。

3、NEST 分布式价格事实预言机给出了一个开创性的预言机方案,其独特之处在于:直接在链上形成一个价格事实,而其他间接预言机系统则只是往链上传了一个价格事实,这是本质差异!

4、此外,预言机价格形成的成本和信用规模,要能够支撑远超过该规模的 DeFi ,才是正确的预言机;NEST 分布式价格事实预言机产生的每一条数据都是矿工用真金白银去验证的,且其链式结构具备高抗攻击性。

希望更多的 DeFi 生态科学家正视预言机问题,共同参与预言机这一基础设施的建设,和维护基础设施的网络安全,促进 DeFi 生态繁荣发展,使其具备能够承载万亿美金市场的可能性。

点赞 0
收藏 2
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
NESTFANS
NESTFANS
公众号:NESTFANS