共識技術分析系列三:Avalanche共識演算法
一、Avalanche簡介
它論文地址見:https://ipfs.io/ipfs/QmUy4jh5mGNZvLkjies1RWM4YuvJh5o2FYopNPVYwrRVGV。
它的研究團隊是Team Rockets,共識演算法取名叫“Avalanche”,能非常形象地描述該協議的共識過程,就和雪崩一樣,開始是隨機崩塌(隨機樣本結果統計),最後大面積崩塌(即共識形成)。它的核心理念是通過不斷反覆對網路中的節點進行抽樣並收集它們對某個提議的響應,最後可以把所有的誠實節點導向到同一個共識結果。
“亞穩態”是Avalanche協議的一個主要原理,它是通過傳遞“信任閾值”來達成共識;這種信任閾值可通過網路傳播,結構化處理以及相互驗證;與傳統的基於八卦(Gossip )的共識協議的顯著區別在於亞穩態通過法定節點數量傳播資訊,而不是通過單個節點之間互相傳播資訊,從而保持整體較低的通訊成本。它用DAG 結構來記錄所有的交易,用BFT 來做信任閾值的共識。
作者聲稱這個協議可以達到 1300 tps,交易也只需要 4 秒的確認延遲。
二、可能存在的問題
1. 隨機抽樣達到的是非確定性共識
隨機數對於區塊鏈技術來說很關鍵。 本質上,分散式賬本的核心問題就是隨機選擇出塊人的問題,這個隨機性要能被全網確認,並且不能被操控,也不能被預測,否則惡意節點可以通過操控這個隨機數從而達到操控整個鏈。在Avalanche中,隨機抽樣是非常關鍵的,但是對怎麼隨機抽樣卻沒有像Algorand那樣詳細地描述,隨機抽到樣本的整體代表性也沒有詳細的理論論證,因此其所達成的共識只是一種概率性的共識,並非確定性共識。
2. 衝突交易不受保護
如果使用者不小心將一筆交易傳送了兩次,Avalanche 是無法在這兩種交易之間做出選擇的,會直接導致這筆錢丟失,這點被Avalanche 當成能抵禦”雙花”攻擊來做宣傳,但是實際應用中,使用者無任何主觀惡意下,不小心將一筆交易點選兩次傳送的情況還是會經常發生,如果直接將使用者資金丟失的話,每次傳送交易都得非常小心並等待系統回覆才行,這將大大降低交易的速度。
3. 需要大量礦工的支援
隨機抽樣所達到的共識必須依賴大量的礦工節點支援才能算是有效,並且這些礦工節點還得時刻保持線上,以便被隨機抽取到,這在現實的自由網路下是不太現實的,如果採用雲伺服器的方式,整個網路運作成本將會非常高。
4. 節點的動態加入和退出如何處理 ?
如果用伺服器來跟蹤各礦工節點狀態,則必然導致中心化的問題,如果不跟蹤,那就只能從以前參與的樣本節點裡選,某節點被選中的時候,它很有可能已經不線上了,網路延遲很高的情況下,抽樣失敗的機率是非常高的,是否需要重新抽樣 ? 最後的結果很有可能陷入一種不安全共識的狀態。
總體來說,該共識演算法不能稱其為新演算法,其論文描述的主要是工程實現上的改良,它似乎想聚當前熱點技術於一身(如隨機取樣、聚合簽名、BFT、DAG等),但是核心還是BFT+聚合簽名,設計時更多依賴理想狀態,完全沒考慮實際的網路狀況,特別是在當前幣圈熊市的情況下,任何基於大數隨機原則的共識都是不太現實的。