Algorand是一個基于隨機算法的公有鏈項目, 由MIT著名的密碼學專家、圖靈獎獲得者Micali教授及其團隊提出,其動機是為了解決區塊鏈中由去中心化、安全性以及交易性能三個方面所組成的“不可能三角”難題。該問題也被稱為“三元悖論” ,一般認為在現有區塊鏈技術中這三個方面無法同時滿足,最多只能滿足其中兩個要素。Algorand其本質是通過密碼學的方法,來做一個隨機數發生器來隨機決定下一個區塊的生成者是誰。如果這個隨機數發生器是完全隨機的,也就是說,任何人(包括上個區塊的發布者)都無法預測下一個的發布者是誰,那么其實這就是一個可用的共識算法了。
在Algorand算法里提出并解決了三個問題,第一個是隨機數發生器,第二個是隨機出來的提案者如何在不泄露自己身份的情況下證明自己,第三個是如何應對不在線的節點。Algorand采用了PoS(Proof of Stake)共識機制的分組方式——包括提案組和驗證組,以解決PoW共識機制所帶來的高能耗問題,并希望同時提升交易性能。
在Algorand方案中,首先每個新區塊是由一個獨立的隨機生成的提案組產生多個提案塊,其成員隨機選擇,期望值為26人。然后再由多個隨機組成的驗證組逐步經多次驗證達成共識。這里驗證組的個數一般為12組甚至更多,而每組包含2000~4000成員。每個提案組和驗證組都是從所有用戶的集合中隨機選出,以強化去中心化程度。而用戶的賬戶余額將會影響被選中的概率,并且給予每一個被選中用戶一個優先級別(priority)以及擁有此優先級的證明。被提議的多個區塊隨后將在全網內通過八卦協議(gossip)傳播,到達下一組進行驗證和共識,直到最終唯一確認,最后唯一獲選的區塊加上各驗證組共識組員簽名信息上鏈。
Algorand的獨特創新是VRF(可驗證隨機函數)和加密抽簽,整體方案具有后驗性。具體而言,用戶是唯一知道自己是否成為某組(某輪的提案組或某步的驗證組)成員的人,他人無法事先獲知,只能等其廣播后驗證,惡意攻擊者甚至無法事先知道組成員是誰,因此不能對他們進行賄賂或發起拒絕服務攻擊,組員間也無法共謀,提高了系統的安全性。
但分析其具體工作機制后,我們發現有以下問題:
1) 簽名數據龐大,造成存儲浪費并影響性能。Algorand使用VRF來確定提案組與驗證組,這個方式充分發揮了VRF的可驗證性優勢,且后驗優勢使得Algorand的共識體系更安全。但是,Algorand進入驗證階段,采用的是一種可擴展的拜占庭容錯算法,即BA*算法,參與節點通過VRF秘密抽簽選出。這一設計使Algorand在驗證前必須等待憑證(VRF prove)到來,才能知曉參與節點。而且,由于使用了可擴展的拜占庭容錯算法,使得Algorand的驗證組規模必須比較大(2000~4000人),這將導致簽名數據異常龐大。根據我們的估算,在平均每組3000個驗證節點的規模下,每組的簽名數據長達126KB,加上其它信息,通知信息約300K,每塊的簽名數據可達2000*64*12=1M(共12組,每組3000人,至少2/3達成共識。ed25519簽名數據長度是64。),遠超一般門限簽名幾十個字節,嚴重浪費存儲和容量(因每塊存儲的交易量將被占用,不存儲簽名又會影響安全),不僅造成存儲浪費,而且更影響性能。
2) 算法對于網絡帶寬要求極大,個人用戶很難參與,嚴重影響去中心化特性。如下圖所示,對照來自于Algorand論文中的公開測試數據,在實驗環境中,Algorand需要讓區塊達到10M大小,才能達到125倍比特幣的性能(約10M-1M=9M,每M存儲的交易數為1萬,則基于Algorand的測試數據,有90000/50=1800TPS,約為比特幣的100多倍)。10M區塊大小意味著要求節點的網絡帶寬峰值至少需要80M才能承載,這對目前一般用戶非常困難,影響了系統的效率和去中心化特性。

3) 節點網絡規模受限,網絡通訊不經濟并影響性能。當網絡規模太小時,將無法組成所需的提案組和驗證組,影響系統正常工作。而網絡規模太大時,提案塊(假設大小2M,去除簽名的1M,有效交易存儲空間為1M)和驗證信息(大小約300K)無法快速傳播到后繼驗證節點,也會影響系統性能。
Algorand即使在驗證環境也需要等待5*10=50s以上(包括等待潛在提案者的時間延遲及其特殊的拜占庭算法),加上其提案傳播時間10秒,至少需要60秒才能完成一次出塊上鏈。假設一個有效存儲1M(去除簽名后)的塊包含1萬筆交易,則其TPS為10000/60=167。我們預估在全網真實環境下,這個結果會更糟。假設每個驗證組成員為3000個,每次驗證組成員不重復(一般12組甚至更多),則至少需要12*3000=36000個節點。根據下圖所示,一個2M的塊,要傳播到3000個節點,需要36秒,如傳播到36000個節點,可能需要45秒左右甚至更長才能到達第一驗證組。驗證信息(大小300K)需要9秒左右才能傳播3000個節點,如傳播到36000個節點,可能需要12秒或更久,到達下一驗證組。而其一般要11步或更多才能完成驗證,再加上最后一步,這樣就驗證就需要12*(11+1)=144秒。整個過程需要189秒,其性能僅約53TPS,離項目方宣稱的1000TPS差之甚遠。

4) 賬本數據存儲相對較大。如前所述,因其采用多步BA共識算法,其簽名占據巨大存儲空間,雖然提高了安全性,但影響了性能,也浪費了賬本存儲空間,制約了賬本系統的存儲容量和系統規模。
5) 不具有強的輸出公平性保證。保證公平性(Bias-resistance)能夠確保協議的輸出不被敵手操縱。然而Algorand為了選擇提案者使用了一個有些偏向的隨機性,使得那些需要真正隨機均勻分布的應用不適合采用該協議。
總的來說,我們認為Algorand的VRF和加密抽簽后驗性給出了一個解決“三角悖論”的很好設計思想,但其在驗證環節的設計更偏單純的學術化理想化,導致其對網絡流量、有效通訊數據等實際工程落地思考不夠,嚴重影響了公鏈運行性能、節點網絡規模、賬本存儲容量和去中心化程度。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。