这不仅是去中心化预言机所面临的问题,也是以太坊生态中潜藏的单点故障。

原文标题:《解析 | 以太坊矿池拒绝打包攻击》
撰文:Yuheng 与 Yuyi,NEST Research 研究组

与单纯基于可信任第三方的中心化预言机不同,NEST 分布式预言机希望能够让尽可能多的链上用户参与到价格转换关系确定的过程中来,从而进一步提升预言机输出数据结果的可靠性以及整个预言机系统的安全性。

而正是因为这种特性,分布式预言机往往会遇到数据无法得到有效验证的问题,比如有恶意矿工提供恶意报价来影响价格。为了解决这种问题,NEST 设计了报价—吃单的提交验证机制,即允许验证者根据报价的价格进行交易得到报价者所抵押的资产,并重新提出一个报价进行修正。通过这种方式,NEST 分布式预言机能够在一定程度上有效地对恶意报价进行限制,同时也能够及时地对恶意报价进行修正。

然而,这种针对于价格修正方式的顺利运行基于的是吃单交易以及新的报价交易能够在验证期内及时地出现在链上的新区块当中。众所周知,目前整个区块链网络中的矿工群体早已不是像最开始那样单独工作了,为了保证收益的稳定性,矿工们会组织在一起形成矿池来达到算力的整合,因为在工作量证明(PoW)的共识下,更大的算力也就代表着获得收益的概率越高。

矿池的出现所引发的本质问题是其对交易打包权的垄断。因为在公有链中只有挖到区块的矿工或者矿池能够决定下一个区块中应该包含哪些交易,而矿池相较于单一的个体矿工又往往具有压倒性的算力优势,在这种情况下那些具有算力规模更大的矿池会选择打包一些对自己有利的或者交易费较高的交易,即使这些交易可能并不是最先被公布到链上的。

而当这种情况出现在 NEST 分布式预言机中时,则会导致提交的新报价无法在验证期内得到及时地验证,最终会导致 NEST 输出错误的价格数据,从而使得部分矿池捕捉到套利机会,进而威胁到整个 DeFi 生态的环境安全。本文接下来会具体介绍这种针对 NEST 分布式预言机的矿池拒绝打包攻击的详细内容。

攻击流程及分析

为了方便讲解这种攻击方式,我们首先假设所有参与挖矿的成员都是矿池(单一的矿工也可以被当做一个算力很小的矿池),各个矿池具有不同大小的算力占比,且彼此之间都知道各自的算力占比。

首先在发动攻击之前,恶意矿池可以通过闪电贷等方式预先囤积好之后用于套利的加密货币。例如,恶意矿池会预先囤积大量的 ETH,紧接着操纵 ETH 和 USDT 之间的价格比例来实现套利。

接下来,恶意矿池会向 NEST 提出一个报价,该报价会和当前的实际市场价格存在着巨大的差别。由于该报价和实际市场价格之间存在着巨大的差别,也就代表着存在着巨大的套利空间。因此在持续时间为 S 个区块的验证期内,根据 NEST 本身的吃单验证的协议,必然会有验证者提出吃单的交易并对该报价进行最合理的修正以获得最大的收益。

而此时,在组装每一个验证期的区块时,所有的挖矿矿池面对着两个相同抉择,将该交易打包进自己组装的下一个正在组装区块当中(或者自己对于这个报价进行吃单并重新报价)或者不将该报价打包进下一个正在组装的区块中(或者不提出这个吃单交易)。由于各个矿池都知道彼此之间的算力占比以及彼此之间所能够采取的策略选择,因此在验证期内,每个矿池是否选择对该报价进行修正实际上可以看成所有矿池所一起进行的多次相互独立的完全信息静态博弈。而能够决定整博弈最终结果的,也就是所谓的纳什均衡点,则是每个参与者在各种决策组合情况下的收益,因为每个参与者都会选择在各种情况下自己收益都最大化的决策。囚徒困境就是一种典型的完全信息静态博弈。

解析 | 以太坊矿池拒绝打包攻击

如果一个矿池选择对于该报价进行修正,那么很明显该矿池能够立即得到收益,我们假设修正报价对应的收益为 a。而如果一个矿池不选择对于一个报价进行修正,看似该矿池无法立刻得到收益,但是该矿池也可以根据该恶意报价所涉及到的加密货币进行囤积,最终在报价成立之后进行套利,我们可以设这个最终的收益为 b 并且通常有 b > a 。

但是我们需要注意到,在区块链中只有挖到新区块的矿池能够获得记账权,也就是说即使一个矿池选择立刻修正该恶意报价,它也只能在一定概率下获得 a 的收益,并且这个概率是和该矿池的算力成正比的,因此我们可以将一个矿池选择修正报价的收益表示为 Pia。同样的如果不修正报价,在报价成立之后,一个矿池所能够得到的收益也为 Pib。但是由于一旦报价被修正,那么之后的博弈也就不再存在,意味着所有的矿池都不会获得 b 收益,因此实际上在验证期矿池决定每个区块的交易内容时,其所考虑的两种收益实际如下:

解析 | 以太坊矿池拒绝打包攻击

其中 T 代表矿池的决策,Y 代表修改该报价,N 代表不修改该报价;Pn 代表接下来所有验证期区块都不会出现修改报价的概率。

在组装验证期内对应的每一个区块时,所有的矿池都会比较这两种收益来选择自己的决策。最后根据自己的算力占比,以及两种收益 a、b 之间的比例关系选择是否对于该报价进行修正,从而最终达到纳什均衡状态。

分析总结

正如上述所说,矿池有可能会凭借着自身算力的优势对于报价的修正更新进行延迟和阻碍,从而利用 NEST 预言机进行套利。但是这也不仅仅是 NEST 预言机所面临的问题,实际上整个区块链的去中心化理念都在受到矿池这一现象的冲击,因此如何解决好矿池所带来的问题,是我们在走向真正的去中心化道路中不可避免的一个挑战。