2022 年 7 月 2 日
ccryptoo 1 1653272052

深度研究 | 全面整理 Avalanche:subnet 對雪崩協議未來的影響

本文將對公鏈 Avalanche 整個脈絡進行整理,尤其是關於其 subnet 對 Avalanche 未來的影響。
(背景補充: Defi 科普 | 一文了解雪崩協議 Avalanche (AVAX),7天漲幅超過200%

 

Avalanche 共識協議

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

一個通用的共識引擎

首先需要明確的一點,Avalanche 原本是一個通用共識協議。我們所熟悉的「Avalanche」去中心化平台實際上是該共識協議 + 一系列配套設施組成的。

Avalanche 共識協議本身用一句話概括的話就是「透過不斷反覆對網路中的節點進行抽樣,收集他們對某個提議/交易的響應,達成最終共識」。

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

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

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

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

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

這也解釋了這種共識之所以成立的一個原理,由隨機抽樣引起的偏好隨機變化會導致網路對一個選擇的偏好,這會導致網路對該選擇的偏好更多,直到它變得不可逆,然後節點才能做出決定。

我們可以發現這個過程本身就和比特幣的概率最終性確認的過程很像,後面我們會詳細來說這個事情。

而對於整個共識的形象化體驗,可以訪問其 demo 網站

上述就是對於共識過程的一個簡單概覽。但是,如果想要深入了解 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 結構:

ccryptoo 1 1653272053
圖片來源:https://docs.avax.network/

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

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

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

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

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

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

ccryptoo 1 1653272053 1
圖片來源:https://docs.avax.network/

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

ccryptoo 1 1653272054
圖片來源: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’,情況會變得怎麽樣呢?

ccryptoo 1 1653272054 1
圖片來源:https://docs.avax.network/

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

ccryptoo 1 1653272055
圖片來源:https://docs.avax.network/

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

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

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

共識小結

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

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

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

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

Avalanche 工程實現上的優化

引入頂點

如果完全按照白皮書中的設計來,被選中的節點需要對每筆交易進行投票確認,這在出現大量交易的時候勢必會影響網路整體的效率。

所以為了減少這種情況的出現,在工程實現的時候,Avalabs 引入了「頂點」的概念,就和區塊一樣。

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

這樣 Avalanche DAG 的節點就是由一個個包含了大量交易的頂點組成。而不是單個交易。

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

如果一個頂點包含惡意交易,那麽整個頂點都會被拒絕。該頂點裡其他合法交易會被打包到下一個頂點裡。

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

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

我們都知道 Avalanche 用的也是 PoS 的方式來讓節點參與安全維護,但是我們也看到了 Avalanche 的機制是隨機抽樣詢問,而不是全部節點詢問。

這就提出一個問題,不同質押數量的節點在這個機制裡會有什麽樣的不同。Avalanche 的答案很簡單:

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

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

整體架構

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

ccryptoo 1 1653272055 1
圖片來源:https://docs.avax.network/

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

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

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

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

子網同時也是 Avalanche 無限拓展性的重要因素。因為每個節點都可以參與多個子網。只要節點自己的硬體條件沒有問題,則整個網路的速度會隨著子網的增加,例如一個節點支持一個子網 1,000 TPS 的速度,他支持三個子網的話,整個網路就變成了 3,000 的 TPS。

同時,因為成為子網節點的前提必須是主網節點,理論上說,子網越多,avalanche 越安全,而主網節點越多,能直接為子網服務的節點也就越多,減少了子網門檻,雙方互相促進,形成一個正向循環。

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

有人會說這樣是不是就能說子網是不是都是共享安全性?個人認為這種說法是有問題的。因為雖然節點可以共享,但是每個子網具體有哪些節點,每個子網自己的規則都是不同的,比如惡意節點是 slash?

還是只是退回撤掉節點資格(Avalanche主網是後者)?這都是問題。但是這並不是說子網的安全性完全沒有保障。這裡面牽扯到諸多博弈,例如如果一個子網的規則是節點資格被撤銷影響該節點在其他子網裡的功能,那麽節點在作惡的時候就要考慮很多因素了。更別說,成為節點還得 KYC/AML。

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

生態現狀

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

基本數據

截止到 4 月 11 日,Avalanche 有 186 個項目。而根據 defillama, 現在 AVALANCHE 的 TVL 是 14.88 b(大約以太坊的十分之一), 比其最高峰時期 23.88b 下降不少。

而且可以直觀的看到,目前整個生態最重要的應用是 Aave。其實這不難理解,我們都知道一條公鏈裡最重要的基礎設施就是 DeFi 基礎施設,DEX 、借貸、收益聚合器等。

以太坊上的老牌項目本身的體量已經很大,市場教育也做的較為出色,尤其是老牌項目基本都是 DeFi 項目,既然本身已經是市場龍頭,為什麽不直接利用他,這樣的成本可是比自己從頭搭建這些基礎施設要小的多。

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

所以不止是 Aave,整個 Avalanche 裡體量排行在前的項目都是我們較為熟悉的 DeFi,或者是老 DeFi 的分叉,還有就是上面說的收益類產品。

當然這個圖裡的項目很多不止在 Avalanche 裡,但是哪怕如此,點開每個項目裡的 TVL 分布,依舊是這個排名。

ccryptoo 1 1653272057
圖片來源: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 並不能需要其特色的 subnet 功能(以太坊以及其他鏈或者 Avalanche 本身的 c 鏈就足夠滿足 PFP 的要求)。

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

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

更何況,現在有一些霸王級 GameFi ,比如 DeFi Kingdom,本身的體量就可以頂的上小型公鏈。其本身的互動需求也能頂得上一些小公鏈。同時,如何更好的利用自己這龐大的體量也是困擾他們的問題。這時候 Avalanche 的 subnet 出現了。任何人都可以創建自己的「區塊鏈」並且兼容 EVM,移植成本很低。

一旦這樣做,自己 GameFi 裡的代幣本身就成了一種底層資產(交互費用直接用自己的代幣就可以),讓自己代幣的價值捕獲能力超越遊戲本身。其 Game-fi 本身也有了變成生態/ xverse 的可能性,尤其是理論上 subnet 之間的資產可以無縫轉移,這代表通過 subnet 建立的 xverse 的互操作性遠遠比其他區塊鏈上的項目要高,最終形成一個獨立而又互通的生態,構築自己的競爭壁壘。

我想 Avalanche 本身也是這麽考慮的,比如其在 3 月 8 號推出的 Avalanche multiverse (提供當時大約 2.9 億美元的 AVAX(400 萬個)的獎勵激勵子網的成長),而 3 月上線的第一個 subnet 就是 dfk,同時獲得了 1,500 萬的 Avalanche multiverse 資助。

上線後,DFK 確實把自己的 JEWEL 變成了 subnet 的手續費,同時發行了新的代幣,CRYSTAL 作為遊戲內的通用資產。最近也有消息說,螃蟹也準備上 Avalanche ,所以我們可以拭目以待,看看最後 Avalanche 會變成什麽樣。

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

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

對比 polkadot 和 cosmos

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

ccryptoo 1 1653272057 1

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

總結

今天的總結比較簡單。Avalanche 繼承了比特幣概率最終性確認的機制,但是又從底層設計上加入了自己的特色,尤其是子網的引入增添了它的「自下而上」的特性。

這種氣質更加貼合我對複雜系統的看法:我們始終處在一個複雜系統裡,而一個複雜系統勢必是由下而上形成的。

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

參考文獻:https://docs.avax.network/

📍