本文內容僅供參考學習,非投資建議。

點擊此處下載PANews App ,隨時隨地閱讀更多區塊鏈即時快訊和深度好文。


原文標題:研究|談談Avalanche及其未來

Avalanche共識協議

一條鏈最基本的任務就是確保網絡安全性,這涉及到的東西就是共識。所以我們在了解Avalanche的時候,首先需要介紹的就是Avalanche的共識協議。

一個通用的共識引擎

首先需要明確的一點,Avalanche原本是一個通用共識協議。我們所熟悉的“Avalanche”去中心化平台實際上是該共識協議+一系列配套設施組成的。而Avalanche共識協議本身用一句話概括的話就是“通過不斷反復對網絡中的節點進行抽樣,收集他們對某個提議/交易的響應,達成最終共識。

所以本質上,Avalanche是為有關聯的交易提供一個Partial Order, 形成沒有衝突的交易集合。

當然,這樣的敘述過於抽象,所以我們不妨舉個例子來看下這個共識是什麼樣子。

假設在一個房間裡擠滿了人,他們試圖就午餐吃什麼這一問題達成共識(當然,我們為了簡單,在此假設午餐只有兩種選擇,披薩和烤肉)。通常來說,有些人最初喜歡披薩,有些人最初喜歡烤肉。我們的目標就是最後確定要吃哪一種。這時候,每個人都會隨機詢問房間裡的一部分人,問午餐想吃哪一個,如果超過一半的人選擇了披薩,那麼他也會選擇披薩,反之就是燒烤。因為每個人都在重複這個過程,所以每一輪都會越來越多的人有了相同的偏好,經過足夠多的回合,就會達成最終的共識。

我們用稍微條理的方式來看下這個過程:

我們假設房間裡有n個人,他們在決定吃什麼之前,會每次隨機問k個人的偏好,每次有大於等於α人數給予同一個回應的時候,本次詢問結束,進入下一輪,一直到連續β次的詢問輪次得到的結果一致,則最後吃什麼也就確定了。

這也解釋了這種共識之所以成立的一個原理,由隨機抽樣引起的偏好隨機變化會導致網絡對一個選擇的偏好,這會導致網絡對該選擇的偏好更多,直到它變得不可逆,然後節點才能做出決定。我們可以發現這個過程本身就和比特幣的概率最終性確認的過程很像,後面我們會詳細來說這個事情。

而對於整個共識的形象化體驗,可以去其demo網站玩一玩:

https://tedyin.com/archive/snow-bft-demo/#/snow

上述就是對於共識過程的一個簡單概覽。但是,如果想要深入了解Avalanche是如何發展到現在的,就需要回顧下它的歷史發展過程。所以接下來,我們就來看下Avalanche的共識發展史。

共識協議歷史發展

Slush

一開始,Avalanche提出的協議並不是叫雪崩,而是叫Slush,採用UTXO模型。這個協議實現了我們上述達成“中午吃啥”這個共識的基本功能。其過程用人話來說就是:

1. 一開始每個人都沒有偏好,不知道吃披薩還是燒烤。

2. 由於某些觸發條件,比如節點收到交易,其有了偏好,並且開始多次隨機選取一組很小的樣本k個人去詢問,過程和前麵類似。

3. 但是不同的是,在這個過程中,沒有偏好的人被有偏好的人詢問時,自己會變成詢問人的偏好,比如我沒想法,但是有個人過來問我:“我今天吃披薩,你想吃啥”。那麼我就也會選擇吃披薩。如果我本身有偏好,比如我愛燒烤,我就會回復自己的偏好給詢問人。

4. 如果每次有超過α的人回復了同一種偏好給我,而我本身的偏好和這個大多數偏好不同,那麼這個我也會改變成大多數偏好。然後重複詢問過程,一直到詢問X輪為止,才會決定最終的偏好。這個X是為了不讓這個過程無限重複下去的一個保險。

從這個過程中我們可以發現Slush的特點:

只會記錄當前輪次的狀態,不會記錄歷史狀態,進而會有最後的拜占庭問題。

詢問樣本小,不用和其他鏈一樣詢問所有節點,效率高的概率最終性。

反复抽樣,放大隨機擾動,完成最終性確認最重要的特點。

但是,如果遇到惡意節點故意改變自己的偏好來和大眾偏好不同,擾亂平衡的話,那麼整個網絡的安全性將大大降低。由此可見,Slush是一種非拜占庭協議,即無法容忍惡意節點的存在。

Snowflake

由於Slush本身的特點並不足以支撐起一個安全的網絡共識,所以Avalanche在其基礎推出了升級版的協議,snowflake,雪花協議。其新加入了一個counter功能,讓每個節點來記錄自己當前偏好的可信度, 即每次詢問其他節點後,如果收到大於α的統一偏好回复,節點的counter就會給該偏好+1 ,反之則重置為0。當counter到達閾值β時,節點就接受當前偏好,不再改變。這樣的好處是節點不需要等x輪結束才能確定自己的偏好,受到惡意節點信息干擾的效果也會減少。這樣,snowflake成了拜占庭容錯協議。

不過,其依舊有個問題,Snowflake 可以保證對最小的狀態做出很強的保證(盡可能少的詢問就可以確定結果),但是其狀態記錄也是較為短暫的,counter的值在每次偏好變化的時候都會被reset,同時,這種狀態的保留也只是針對節點本身的狀態,而不是對整個網絡的歷史狀態進行保留。說白了就是沒法做整個網絡的狀態歷史比較,,依舊會有安全問題。所以為了解決這個問題,Avalanche又對協議做出了改進, 同時也是整Avalanche未來的基石---snowball。

Snowball

雪球協議的改進其實說起來也很簡單。既然雪花和slush都無法保留長久的狀態,那麼為什麼不讓網絡保存多種狀態,然後新加一個變量用來判斷哪個才是正確的狀態呢?所以Snowball引入了一個confidence counter。這樣的話,每次詢問成功(對方和我一樣的偏好),就會讓confidence counter+1,如果遇到對方和我的偏好不一樣,那就比誰的偏好confidence counter高,選高的。這樣提高了協議共識結果的可靠性,也提升整個網絡的安全性。當然,這樣看的話Snowball已經可以達到我們的安全目的了,不過Avalanche並不會局限於此,於是其推出了我們現在看到的最終協議---Avalanche。

Avalanche

Avalanche在snowball上引入了動態並且僅限追加的DAG(有向無環圖)結構來提高自己的效率和安全性。我們直接用一張圖來看下Avalanche DAG結構:

圖片來源:https://docs.avax.network/

從上圖中我們看到,所謂的“動態並且僅限追加的DAG “,其實就是新的節點(DAG裡的節點,不是我們認為參與共識的節點)只能在後面追加,而不能在已有節點之前添加。

同時這裡需要明確裡面的一個概念,就是祖先和後輩。在一個節點之後追加的任何與它有聯繫的節點都是其後輩,而它自己就是祖先。按照上圖來說的話,bcde都是a的後輩,de是c的後輩,但是e不是d的後輩。

但是,可以看到,如果用交易組成DAG的話,會發現這種結構沒有處理“衝突交易”,也就是類似雙花的問題。所以Avalanche做出了規定:衝突交易集中只能有一個交易可以被包含在DAG中,每個節點都只能偏好衝突集中的一個交易。當然,這裡不止是交易,是所有衝突的提議。

知道這個概念,我們就可以去了解下Avalanche新增的另一個特點----傳遞投票,給後輩投票,同時也相當於給它的所有祖先投票。這也是高效解決衝突交易(比如雙花)的一種方式。

舉例來說,假設我們目前運行著一個有以下參數的Avalanche網絡,每次隨機選取的樣本數為k=4,單次通過閾值α=3,需要連續成功的次數是β=4。

我們先來看下正常情況下這個網絡是如何工作的:這時候,如果我收到了一筆交易Y,並且把這筆交易廣播到被選中的樣本節點,詢問偏好的時候,結果應該是這些節點會有個多數偏好,如下:

圖片來源:https://docs.avax.network/

可以看到,它得到了三個yes和一個no。這意味著它在這輪詢問中獲得了肯定,所以這筆交易的合法性更新成true。而該節點更新的DAG如下:

圖片來源:https://docs.avax.network/

這裡先看幾個變量的定義,Chit, 本次詢問該交易的合法性,confidence ,該交易的可信度, consecutive success 是連續幾輪獲得合法性的記錄。這裡面chit是布爾值,只有真假,confidence是只要該交易在一輪詢問中被確認合法,自己本身會+1,同時其祖先也會+1,一直傳遞到確認了最終性的祖先。 consecutive successes則是連續幾輪確認合法就一直+1,一旦出現非法或無結果的輪次,就會歸零。祖先同理。

現在,我們可以回到這個例子本身,我們發現這個DAG是由V ,W, X, Y四筆交易組成。雖然本輪詢問的是交易Y,但是因為V,W,X都是其祖先節點,所以按照avalanche裡的“給後輩投票也相當於給祖先投票”的思路,其祖先節點會在各自的confidence, consecutive success上各加1,變成如圖裡的樣。同時,因為需要連續成功的次數β=4,我們可以看到交易V的β已經是4了,所以交易V的最終性被確認,不會參與下一輪的打分。

如果這時候發生了一筆衝突交易Y',情況會變得怎麼樣呢?

圖片來源:https://docs.avax.network/

我們依舊按照之前的過程,但是假設Y'被大家否決了,那麼按照我們說的幾個參數的更新規則,這次我的DAG會變成什麼樣?如下:

圖片來源:https://docs.avax.network/

各個值的更新規則和上一輪一樣,這裡就不再贅述。這裡主要注意的是Tx W,因為其新的後輩Y'是衝突交易而且被拒絕,會導致它的consecutive success歸零,同時confidence -1.

所以,我們可以看到,通過DAG這種數據結構,其最終性確認的效率很高,同時因為沒有採用單一的狀態復制機,而是由節點各自維護自己的狀態機,獨立狀態轉換,但是又可以最終同步,所以其安全性很高。

到此,我們已經分析了Avalanche整個協議的發展歷程和特點。現在可以做一下簡單的總結。

共識小結

1. 用BTC的機制,做了公鏈的事情(利用consecutive success+ confidence作為最終性確認的手段,避免了PoW效率較低的問題)。同時分離了共識層和應用層,性能和擴展性都提升了非常多。

2. 兩大創新,subsamlping(其共識投票並不是全部節點參與,而是每次隨機選取節點參與)& transitive voting(給後輩投票同時也是給祖先),無論網絡規模多大都能做到高速響應和最終性確認。所以,其推出的subnet具有很大的可行性。我們會在後面講

3. 缺點也是有,處理不了鏈下交易,或者說很難處理鏈下交易。

當然。前面的都是他們理論上是怎麼設計共識的,最終我們還得落實到技術實現上。這一點Avalabs本身對設計進行了一些優化。我們來簡單看下。

Avalanche工程實現上的優化

引入頂點

如果完全按照白皮書中的設計來,被選中的節點需要對每筆交易進行投票確認,這在出現大量交易的時候勢必會影響網絡整體的效率。所以為了減少這種情況的出現,在工程實現的時候,Avalabs引入了“頂點”的概念,就和區塊一樣。

具體來說,節點在收到新交易的時候,不會直接把交易廣播到網絡中進行詢問,而是會把交易打包到“頂點” Vertex中。每個Vertex可以包含大量交易,而每輪被選中的節點現在成了對Vertices投票,而這個投票本身就被視作了對vertices裡包含的所有交易進行投票。這樣Avalanche DAG的節點就是由一個個包含了大量交易的頂點組成。而不是單個交易。

同時,在真正的詢問中,節點問的不是說“你喜歡這個頂點嗎?”,而是“比起這個頂點,你更喜歡哪個頂點?”,這樣其他節點返回的都是他們認為更加合法的交易集,省去了該節點的排序,直接更新DAG的結果就行。進一步提高效率。尤其是它並沒有刪除非法頂點這個操作,而是讓其無效,這和比特幣還有以太坊是不一樣的。比特幣和以太坊是會刪除不良區塊。

如果一個頂點包含惡意交易,那麼整個頂點都會被拒絕。該頂點裡其他合法交易會被打包到下一個頂點裡。同時,因為最終性的確認並不是出一個頂點就確認一個,而是有一定的延遲性,所以包含非法交易的節點及其所有後代節點都會被拒絕。而其中躺槍的合法交易將會被打包到下一個頂點,被重新投票。

與算法匹配的節點質押模型

我們都知道Avalanche用的也是PoS的方式來讓節點參與安全維護,但是我們也看到了Avalanche的機制是隨機抽樣詢問,而不是全部節點詢問。這就提出一個問題,不同質押數量的節點在這個機制裡會有什麼樣的不同。 Avalanche的答案很簡單:

節點質押的數量越多,其被隨機選中當做被詢問的對象的可能性就越高。被選中的越多,回應的越快,又是良性節點,就會獲得豐厚的獎勵。

除了節點質押和委託質押都是有鎖定時間這一點外(節點1~2年,委託2週~1年),Avax還規定了節點接受的委託質押數量不能超過自己質押數量的倍數,同時還規定了一個上限。不過,我們都知道,治理嘛,參數當然是隨時可以調整的。所以具體的數值我們也就不說了。

整體架構

整體架構這塊其實不用我多說,大家應該得挺多的。其結構主要是官方推出的三個子網。結構圖大家也見過很多次了,我就簡單貼一下:

圖片來源:https://docs.avax.network/

這裡需要說明的是有幾點:

1. Snowman是在Avalanche consensus基礎上為智能合約進行過優化的鏈,本身的共識還是Avalanche consensus protocol。所以並沒有單獨說明。

2. 可以說說子網subnet,也叫專用節點驗證網絡:

Avalanche最近在強推子網。其最關鍵的一點就是關於高度可定制以及安全性的問題。一個節點可以擔任多個子網的節點,自由選擇,同時子網也可以設立自己的門檻,例如硬件要求,質押數量等。但是,無論如何,子網節點必須也是主網的節點。同時Avalanche推薦第三方子網的gas fee和官方官方gas fee一樣,都是固定值或者是0。

子網同時也是Avalanche無限拓展性的重要因素。因為每個節點都可以參與多個子網。只要節點自己的硬件條件沒有問題,則整個網絡的速度會隨著子網的增加,例如一個節點支持一個子網1000TPS的速度,他支持三個子網的話,整個網絡就變成了3000的TPS。同時,因為成為子網節點的前提必須是主網節點,理論上說,子網越多,avalanche越安全,而主網節點越多,能直接為子網服務的節點也就越多,減少了子網門檻,雙方互相促進,形成一個正向循環。

子網之間的資產理想條件下可以無縫快速轉移,但是因為目前的第三方子網太少,所以具體情況還要觀察。同時各個子網如何設計自己的代幣經濟激勵節點來參與也是需要研究的事情。

有人會說這樣是不是就能說子網是不是都是共享安全性?個人認為這種說法是有問題的。因為雖然節點可以共享,但是每個子網具體有哪些節點,每個子網自己的規則都是不同的,比如惡意節點是slash? 還是只是退回撤掉節點資格(Avalanche主網是後者)?這都是問題。但是這並不是說子網的安全性完全沒有保障。這裡面牽扯到諸多博弈,例如如果一個子網的規則是節點資格被撤銷影響該節點在其他子網裡的功能,那麼節點在作惡的時候就要考慮很多因素了。更別說,成為節點還得KYC/AML

目前主要流量都在C鏈,defi和NFT都離不開他。不過看這三個官方子網的關係,還是得結合生態來看。所以我們來直接看下Avalanche的生態。

生態現狀

這個其實沒啥好說的,各種數據網站上都有,我這邊就直接貼一下defilima的數據。

基本數據

截止到4月11日,Avalanche有186個項目。而根據deflima, 現在AVALANCHE的TVL是14.88 b(大約以太坊的十分之一), 比其最高峰時期23.88b下降不少。而且可以直觀的看到,目前整個生態最重要的應用是Aave。其實這不難理解,,我們都知道一條公鏈裡最重要的基礎設施就是defi基礎施設,dex ,借貸,收益聚合器等。而以太坊上的老牌項目本身的體量已經很大,市場教育也做的較為出色,尤其是老牌項目基本都是DeFi項目,既然本身已經是市場龍頭,為什麼不直接利用他,這樣的成本可是比自己從頭搭建這些基礎施設要小的多。

圖片來源:https://defillama.com/chain/Avalanche

所以不止是Aave,整個Avalanche裡體量排行在前的項目都是我們較為熟悉的DeFi,或者是老DeFi的分叉,還有就是上面說的收益類產品。當然這個圖裡的項目很多不止在Avalanche裡,但是哪怕如此,點開每個項目裡的TVL分佈,依舊是這個排名。

圖片來源:https://defillama.com/chain/Avalanche

我們可以看到,目前Avalanche上交易量排名前十位的基本都是P2E的東西。

Avalanche的未來?

看完基本的數據,我們現在可以思考一個問題:如果Avalanche只是和其他公鏈一樣,沒有自己的生態特色,那麼如何才能持續的發展自己呢?尤其是目前這些項目都還是用的C鏈,並沒有用到自己特色的subnet,那麼Avalanche是否可以利用自己的subnet這個特色去做些什麼呢?

為了解決這個問題,我們需要先考慮下一條公鏈想要一直保持競爭力,應該做什麼?這個答案說起來很簡單:

“招商引資,吸引人流,吸引外部資金”。換成我們區塊鏈的話就是,“吸引資金,拉高TVL,增強整體生態的流動性”。傳統思路是引入更多DeFi項目,但是現在的defi用戶都很聰明,這樣吸引的資金和人都較為短期(吃完開局紅利就撤走,TVL降速較快, 這點可以從Avalanche的TVL變化裡可以看出來),而新人想要加入DeFi的門檻並不低, 比如計劃LP 損益, 計算staking風險和收益等。而普通的PFP NFT,第一對於項目方運營要求高,第二是哪怕真有什麼優秀的PFP項目出來,其帶來的流動性又不如DeFi。加上現在絕大多數的PFP並不能需要其特色的subtnet功能(以太坊以及其他鍊或者Avalanche本身的c鏈就足夠滿足PFP的要求)。

這時候我們就可以看到Game-fi就是一個非常好的切入點。現在的絕大多數GAME-FI本質上是DeFi,通過遊戲化的交互,完成LP提供,stake(購買遊戲NFT,道具等)過程。既能有較好的流動性,又能有一個合理的“理由”鎖定資金。而且,通過子網和Game-fi的結合,能形成一個雙贏的局面:

對於現在的game-fi來說。無論可玩性好與壞,遊戲的成分有多少,其鏈上交互對比其他應用來說都不是一個量級的。尤其是最近出現的一些有傳統遊戲影子的game-fi,其對於公鏈性能的要求很高。而Avalanche這種1~2秒就可以最終性確認並且還能定制VM的公鏈就是理想的選擇。尤其是如何提現體現

Avalanche subnet的優勢Game-fi相對而言就是試錯成本最小的一種形式。

更何況,現在有一些霸王級Game-fi,比如DeFi Kingdom, 本身的體量就可以頂的上小型公鏈。其本身的交互需求也能頂得上一些小公鏈。同時,如何更好的利用自己這龐大的體量也是困擾他們的問題。這時候Avalanche的subnet出現了。任何人都可以創建自己的“區塊鏈”並且兼容EVM,移植成本很低。一旦這樣做,自己Game-fi裡的代幣本身就成了一種底層資產(交互費用直接用自己的代幣就可以),讓自己代幣的價值捕獲能力超越遊戲本身。其Game-fi本身也有了變成生態/xverse的可能性,尤其是理論上subnet之間的資產可以無縫轉移,這代表通過subnet建立的xverse的互操作性遠遠比其他區塊鏈上的項目要高,最終形成一個獨立而又互通的生態,構築自己的競爭壁壘。

我想Avlanche本身也是這麼考慮的,比如其在3月8號推出的Avalanche multiverse (提供當時大約2.9億刀的AVAX(400w個)的獎勵激勵子網的增長),而3月上線的第一個subnet就是dfk,同時獲得了1500w的Avalanche multiverse資助。上線後,DFK確實把自己的JEWEL變成了subnet的手續費,同時發行了新的代幣,CRYSTAL作為遊戲內的通用資產。最近也有消息說,螃蟹也準備上Avalanche去搞一搞了,所以我們可以拭目以待,看看最後Avalanche會變成什麼樣。

還有一點很重要,即使子網用的代幣不是AVAX,但是因為子網的節點必須同時也是主網節點,代幣節點必須購買AVAX,隨著子網增多,節點也越來越多,配合上AVAX的mint/burn機制,其AVAX代幣本身的價值捕獲不會衰減很多。

可以看到,Avalanche要想保持長久的競爭力,就要合理的發揮自己子網的優勢,是否會形成不同於其他鏈獨樹一幟的x-verse chain,我們可以拭目以待。

對比polkadot和cosmos

簡單對比下三者網絡本身的特點:

圖片來源:CYC整理

關於Cosmos和Polkadot的詳細對比,我在最近的文章中已經講過了,詳細內容可以點擊《異構雙王》這篇文章看看。

而Avalanche的設計範式是一種更加貼合區塊鏈原生的東西。確保自由的同時,還強調互操作性,而且其子網和主網的關係注定它的擴展性和效率不會隨著體量增大而衰減的很快,比起一些公鏈,其提升效率的方案是確實可行的。

總結

今天的總結比較簡單。 Avalanche繼承了比特幣概率最終性確認的機制,但是又從底層設計上加入了自己的特色,尤其是子網的引入增添了它的“自下而上“的特。這種氣質更加貼合我對複雜系統的看法:我們始終處在一個複雜系統裡,而一個複雜系統勢必是由下而上形成的。

但是,這並不是說什麼樣的應用都適合有自己的子網,只是Avalanche給了你更多的選擇罷了。如果能發揮自己subnet的優勢,我個人相信Avalanche會發展出一些很好玩的東西。

參考文獻

https://docs.avax.network/