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

買賣虛擬貨幣

市場上 Algorand 爭議太多,就連笑來老師都出來送瓜了。

文 | 王也  運營 | 蓋遙  編輯 | 盧曉明

出品 | Odaily星球日報(ID:o-daily)

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》

創文章,轉載/內容合作/尋求報道請聯絡 [email protected];未經授權嚴禁轉載,違規轉載法律必究。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;