這不僅是去中心化預言機所面臨的問題,也是以太坊生態中潛藏的單點故障。

原文標題:《解析 | 以太坊礦池拒絕打包攻擊》
撰文: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 預言機所面臨的問題,實際上整個區塊鏈的去中心化理念都在受到礦池這一現象的衝擊,因此如何解決好礦池所帶來的問題,是我們在走向真正的去中心化道路中不可避免的一個挑戰。