專訪 | 那篇“懟”Algorand的論文說了啥?來聽作者解釋

文章 技術 大學 比特幣 荷蘭 Twitter Another 區塊鏈 Odaily星球日報 2019-07-10

Odaily星球日報出品

作者 | 王也

專訪 | 那篇“懟”Algorand的論文說了啥?來聽作者解釋

6月24日,知名比特幣投資人李笑來在微博上發文“我是真不知道Algorand是什麼,也看不懂他們都在說什麼...誰給我講講?”

李笑來還配了幾張微信聊天截圖,截圖的內容大概就是剛剛進行過荷蘭拍賣的,由圖靈獎得主創辦的明星公鏈Algorand被一位來自美國大學的教授質疑Algorand存在嚴重的、基礎性錯誤。

人紅是非多。6月18日,Algorand剛剛進行完第一輪荷蘭拍賣,但是上線二級市場後幣價暴跌,還被很多人diss為“圖靈獎級別資金盤”。市場上Algorand爭議太多,就連笑來老師都出來送瓜了。

質疑Algorand的論文作者是來自美國北卡羅來納大學夏洛特分校(UNC Charlotte)計算機與信息學院王永革教授,同時也是公鏈項目SperaX的聯合創始人兼首席科學家,王永⾰教授提出的RLCE後量⼦算法成為美國標準技術研究院NIST的候選標準。

近日,Odaily星球日報就其發佈的論文獨家採訪了王永革,王永革向我們詳細分析了論文中提到的對Algorand的質疑之處。

王永革表示,早在今年5月份,他就已經發布了這篇題目為“Another Look at ALGORAND”的論文,王永革對Odaily星球日報稱,從沒想到過自己的論文會被拿出來做惡意解讀,這完全曲解了自己對Algorand的正面觀點和改進意見。

6月26日,王永革通過媒體對外聲明,“最近網絡上以各種方式傳播的所謂“由王永革教授撰寫的一篇論文提出了Algorand項目嚴重的、基礎性錯誤”的說法,是對他該篇論文的誤讀和炒作。”

王永革稱,他在2019年5月正式公佈了題目為“Another Look at ALGORAND”的論文,從學術角度對Algorand項目提出了幾點商榷意見,包括理論上存在分叉可能,以及Algorand中的拜占庭協議過於複雜,有優化空間等,不過,“該論文內容被廣泛誤讀”。

王永革向Odaily星球日報重申自己並非對Algorand這個項目有意見,恰恰相反,他對Algorand十分欣賞,並認為Algorand是當前最優秀的公鏈項目之一。之所以發表文章,也是因為當初對Algorand提出的抵抗分叉機制感到好奇,並認為有進一步優化的可能性,所以純粹出於學術討論的立場發表的該文章。

王永革解釋稱,其論文中提出的Algorand在理論上存在分叉可能,實際是PoS共識普遍存在的無代價模擬攻擊(costless simulation attack)問題。任何採用PoS共識的公鏈在理論上均存在這樣的風險;至於Algorand中的拜占庭協議過於複雜的問題,已經注意到Algorand團隊從最初設計到最終實現的過程中,進行了很多改進,作出了優化。王永革教授表示,稱該論文“提出了Algorand項目嚴重的、基礎性錯誤”的說法,“顯然是對該論文的誤讀和炒作”,並對這樣的行為感到很氣憤。

王永革稱自己在推特上公開發布這個論文之前就已經給Algorand創立者,也是圖靈獎得主Silvio Micali教授以及Algorand首席科學家陳婧女士發送過這份論文,遵守了學術界的規矩,但是後來卻沒有得到對方的迴應。

後來在接受我們的採訪中,王永革聲明,他從未說過Algorand系統是完全錯誤的,而他的論文也是針對Algorand 2017年發佈在arXiv的文章做出探討。

王永革這篇論文對Algorand質疑的地方主要分為三點:

一、Algorand理論上存在分叉的可能性

首先,王永革認為Algorand提出的零分叉是不可能的。王永革表示,所有的PoS共識都存在無代價模擬攻擊(“costless simulation attack” or “nothing at stake attack”)的問題。Andrew Poelstra在他2014年的文章“A Treatise on Altcoins”中已經注意到了這個問題。 王永革說,Algorand和別的採用PoS共識的公鏈一樣,在理論上存在分叉的風險。

Algorand 聲稱自己解決了區塊鏈中的分叉問題,使其成為一個可以持續「進化」的公鏈。由於區塊鏈的去中心化設計,每個節點都必須保持一致,這使得單純的系統升級在區塊鏈上很難做到,每當改變規則,很容易導致系統分叉。但 Algorand 卻是幾乎不會出現分叉的分佈式賬本,因為其分叉的概率低至1/10^18 ,這相當於如果每一秒出一個塊,那麼從宇宙大爆炸到現在 Algorand 只會分叉一次。交易能在幾秒鐘內得到確認,通過 Algorand 的轉賬資金立即可用。

對於網絡不在強同步的情況下(即兩個區域因網絡延遲問題提議了兩個區塊),Algorand 網絡將會出現分叉。白皮書中提到這不影響 Algorand 的安全性,但會影響 Algorand 網絡內的活躍度。在給定的 S 時間內,因為不同分叉區塊上的委員會成員將擁有不同的區塊信息,也就意味著他們不會計算彼此對區塊公證時的投票數,因此沒有足夠的票數將達到人數閥值,BA*將無法在更多的分叉區塊上達到共識。而此時 Algorand 將會提出一個所有用戶都統一的分支,並且運用 BA*共識來使用戶確認是否應該切換到此分支。在全網弱同步的情況下,若時間超過 S,Algorand 網絡就完成不可逆的分叉,不能恢復。這裡的 S 只是一個係數,具體參數並未提及。

Algorand的共識機制在許可環境(permissioned environments)下和無需許可環境(permissionless environments)下都可以正常運行,在許可環境下只需要保證全網 2/3 的節點是誠實節點,在無需許可環境下需要保證全網2/3的資產(token)掌握在誠實節點手中,在這兩種情況下,Algorand網絡產生分叉的概率將被降低到小於 1/10^9(Algorand 2017年的文章中寫到的是1/10^12 - 1/10^18 )。

在論文中,王永革認為,Algorand的這兩種假設沒法保證這種小概率的分叉特性。Algorand的文章認為,只要惡意節點控制的節點數不超過總結點數的1/3,惡意節點就沒法惡意分叉。但是王永革舉出了一個反例:惡意節點可以通過控制某些特定的不超過1/3的節點而輕易的分叉。

“Algorand的2017文章有一個定理:如果任何時候惡意節點總數(或惡意財產總值)小於總節點數(或總財產)的1/3,那麼惡意節點是沒法對Algorand發起分叉攻擊的。這個定理是不對的。”王永革說道。

王永革進一步解釋,假如在區塊鏈高度100的時候,Algorand鏈上所有的財產集中在兩百個用戶手中。這些用戶可以表示為P1, P2, …, P200。在鏈增長的過程中,新的用戶會加入,同時這兩百個用戶可能會把他們的Algorand財產全部出售。

此外假定在區塊高度300的時候,鏈上已經有700個用戶了。在這個時候,用戶P1, P2, …, P200的數目已經小於總用戶數的1/3了(他們所持有的財產總值也遠遠小於Algorand總財產的1/10)。根據Algorand的2017文章的數學模型和定理,如果這些用戶P1, P2, …, P200在區塊高度300的時候變為惡意的,他們是沒法對Algorand的主鏈發起分叉攻擊的。但事實是:如果這些用戶在區塊高度300之前,已經幾乎售完了他們手上的Algorand財產,他們對Algorand的主鏈已經沒興趣了。

所以他們可以從區塊高度100開始,生成一條新鏈。因為這些用戶組成了區塊高度100 的所有用戶。所以他們可以非常快速的生成一條假鏈。他們的這條假鏈可以很快的生成並很快超過主鏈的長度。到這個時候,新加入的用戶,是沒法辨別那個鏈是主鏈的。換句話說,在區塊高度300的時候,不超過總節點數1/3的惡意節點(或者總財產值不超過1/3的惡意財產)P1, P2, …, P20可以分叉Algorand主鏈。這與Algorand的2017文章的定理是矛盾的。

王永革特別指出,他的以上攻擊,是無代價模擬攻擊對Algorand攻擊的一個特例。所有的基於PoS共識的區塊鏈是沒法預防這種攻擊的。要想防止無代價模擬攻擊,我們必須引入別的機制。比如SperaX是用可信硬件來擊敗這種攻擊的。

二、“大部分節點是誠實節點”,這種假設是不切實際的

在Algorand網絡裡,所有參與共識投票的用戶都是祕密地得知他們的身份,投票後他們的身份被暴露,雖然敵手可以馬上腐蝕(corrupt)他們,但是他們發送的消息已經無法被撤回,另外在消息生成後,用於簽名的臨時祕鑰會立刻被銷燬,使得敵手在該輪無法再次生成任何合法消息。

Algorand假設全網超過2/3的節點是誠實的,而且,他們假設所有的誠實節點在完成任務之後都會銷燬這個臨時密鑰。

王永革認為這種假設是不可行的,他認為在一個分佈式網絡中,尤其是在一個無需許可環境下,去假設一個節點足夠誠實是不現實的。如果一個節點被給予足夠多的好處,他是可以被“賄賂”的。一個原本誠實的節點最終也可能“叛變”,這就是“賄賂攻擊”(bribery attack)。

王永革分析道,雖然一個惡意攻擊者沒辦法提前知道要去腐蝕(corrupt)哪個用戶,但是它可以公開明碼標價它收買一個區塊提議者(block proposer)和區塊驗證者( verifiers)的協議。他會鼓勵那些區塊提議者(block proposer)和區塊驗證者( verifiers)在提出他們的區塊建議之前或投票之前先和他這個惡意攻擊者聯繫。通過這種方式,這些惡意節點就可以確認要去腐蝕的目標用戶。這種情況下,區塊提議人和區塊驗證者就會成為這些惡意節點的擁躉。

王永革認為Algorand這種假設大部分用戶是誠實節點的設想在現實世界中是不切實際的。每一個在區塊鏈網絡中的節點都想把自己的利益最大化(幾乎沒有人會拒絕這一點),被選中的區塊提議者和區塊驗證者在得到足夠多的“賄賂”的前提下是可以“叛變”的。而且,對於參與共識投票的用戶來說,系統並沒有給他們足夠的經濟激勵來確保他們去銷燬臨時密鑰,與直接銷燬這個臨時密鑰相比,他們更傾向於把這個臨時密鑰賣掉。

三、Algorand中的拜占庭協議存在優化空間

Algorand 通過「即時提議與確認(Immediate Propose and Agree)」來形成共識。這是一種「超快速拜占庭協議(Byzantine Agreement,BA*)」。拜占庭協議是普遍運用於區塊鏈的通訊協議模式。Algorand 的共識機制分成兩個步驟,分別是提議和達成共識。

實用拜占庭容錯算法(Practical Byzantine Fault Tolerance,PBFT)是首個實用的在異步分佈式網絡中實現拜占庭容錯的共識算法。算法應用於一個分佈式文件拷貝系統。系統中共有 3f+1 個複製節點,其中最多 f 個拜占庭錯誤節點。系統中的每個複製節點都運行一個有限狀態機的副本,並且支持若干種操作。

PBFT 算法包含一個三階段的協議,分別是預準備、準備、確認。預準備和準備階段是保證所有正常節點按照相同的順序執行所有有效的用戶請求,而 BA*可以完成即時提議與確認。

王永革認為Algorand中的拜占庭協議過於複雜,實現成本過高,存在優化地空間。

王永革認為可以通過簡單的方法達到相應的效果,假設在相同的網絡環境下,就可以通過“多數票決:(majority vote)來達到同樣的效果。

王永革稱Algorand團隊似乎也已經認識到一點了,在項目後來實踐的過程中,Algorand並沒有按照他們2017年文章提出的拜占庭協議進行。王永革表示這一點與Algorand的安全性無關,只是他給Algorand的一個建議。

參考資料:

《一文讀懂 Algorand 算法,徹底消除區塊鏈「不可能三角」》

《Another Look at ALGORAND》

相關推薦

推薦中...