Harmony 是基於分片技術的新一代高性能公鏈,已經在 2 月份發佈測試網絡,並剛於 4 月 11 日在北京舉辦了名爲「區塊鏈的未來」的社區見面活動。鏈聞早前報道過,其於 4 月 3 號宣佈通過向香港的風險投資機構 Lemniscap、澳大利亞的 BCA 基金、新加坡的 UniValues Associates 和美國的 Consensus Capital 出售 26 億枚代幣(總共 210 億枚),完成其首輪 1800 萬美金融資。

Zilliqa 是第一個使用安全分片技術將吞吐量擴展到每秒數千個交易的高吞吐量公鏈平臺。其在測試網中實現了每秒 2828 筆交易(TPS)的速度。 Zilliqa 致力於通過支持高吞吐量的 DApp,以滿足企業諸如如電子廣告,支付的業務擴展需求。本文將帶你一探究竟,同是使用分片技術的項目,Harmony 與 Zilliqa 有何不同。

原文標題:《高性能公鏈 Harmony 助力去中心化經濟》
原文作者:Rohit Chatterjee
翻譯:Harmony 團隊

一文讀懂 Harmony 與 Zilliqa 兩個分片項目的不同Rohit Chatterjee,商業諮詢機構 Keystone Strategy 合夥人

目前而言,雖然走入現實技術和應用的區塊鏈正慢慢被普羅大衆接受,但離其廣泛應用顯然還有相當一段長的路要走,這其中,最大的一個障礙就是區塊鏈本身的響應速度問題。越來越多的商家開始接觸、瞭解並接受用比特幣和以太坊等虛擬貨幣支付進行交易的概念,但如果真要將虛擬貨幣當成一種正規且通用的支付手段,並佔據跨境交易市場,它的性能和相應的技術基礎就需要達到 Visa 和 Mastercard 等這些人們早已習慣的傳統支付方式正面競爭的水平。

從現有的事實看,區塊鏈還太落後了。目前區塊鏈的性能還無法滿足這一要求,比特幣每秒只能處理不到 10 筆交易,以太坊哪怕在最高峯時每秒也只能處理不到 40 筆交易,相比之下,Visa 每秒處理的交易可達 2000~5000 筆,差距顯而易見。

目前多個區塊鏈項目已經在嘗試用不同手段解決區塊鏈的性能問題。以太坊提出了自己的擴容方案——以太坊 2.0,但目前開發進度非常緩慢,擴容升級遙遙無期。在區塊鏈領域,爲了提升性能,通常需要犧牲其安全性或去中心化程度,這就是大家常說並被廣爲接受的區塊鏈「不可能三角」理論。分片技術作爲最新的擴容方案,是唯一一個突破不可能三角的方向。區塊鏈的分片簡單來講,就是分而治之,將整個區塊鏈賬本橫向切分爲更小的賬本。其實,傳統的中心化信息系統早已經開始使用分片技術,但直到近期,這一技術纔開始被區塊鏈世界所重視。

Zilliqa 可能是大家第一個想到的區塊鏈分片項目。被稱作「高性能公鏈」的 Zilliqa 在測試網中實現了每秒 2828 筆(TPS)的速度。需要注意的是,在分片系統中,TPS 交易速度(TPS)會隨節點數量的增加而增加,Zilliqa 的這個 TPS 數值是在 3600 個節點中獲得的。在過去的一段時間裏,除了 Zilliqa 還有一些新項目也在利用分片技術開發高性能區塊鏈。其中最令人期待的項目之一便是在過去一年裏潛心開發的公鏈 Harmony。作爲下一代的開放式高性能公鏈,Harmony 的願景是無縫鏈接數十億人的經濟運轉。爲了達到這個目標,Harmony 在區塊鏈協議層、網絡層和系統層都做了大量創新。

是什麼讓 Harmony 團隊在衆多公鏈項目中脫穎而出?讓我們來深度剖析一下 Harmony 與 Zilliqa 等項目到底有何不同。

State Sharding 狀態分片技術

儘管都是打着分片技術的期號,但 Harmony 和 Zilliqa 的分片技術顯然有所差異。Zilliqa 僅對網絡和交易進行了分片,而 Harmony 則在這一基礎上,進一步對區塊鏈狀態進行了分片處理。簡而言之,Zilliqa 是將網絡節點分到不同的分片,每個分片包含幾百個節點 (即網絡分片),這使得不同的交易可以被各分片同時處理(即交易分片)。然而,爲了能夠處理跨片交易,每個分片的每個節點都需要存儲區塊鏈的整個賬本數據,這使得某些性能差的節點無法參加到網絡中,進而減弱去中心化。

相比之下,Harmony 對區塊鏈的賬本數據也做了進行了分片處理(即狀態分片),團隊將這種在分片技術中各方面突破的總和方案命名爲「深度分片」。深度分片,是包括對網絡、交易和狀態的多層分片,同時在網絡層的數據傳輸協議中,利用糾刪碼技術對區塊數據進行分片,使廣播者的網絡壓力很小,再加上引入 Kademlia 路由協議,讓區塊數據能通過最短路徑傳輸到目的地,在此基礎上,還可以允許小節點的加入,最大限度地保證了去中心化程度。

PBFT Consensus Mechanism/PBFT 共識機制

Zilliqa 的共識機制被稱爲 PBFT(實用拜占庭容錯)協議。在這一協議裏,一個節點被選爲「領導者」,其餘節點作爲「驗證者」。每一次共識過程包括兩個階段:prepare (準備)和 commit (確認)。在每個階段,領導者向所有驗證者廣播一個提議,所有驗證者收到提議後,再反過來將自己的投票意見廣播給其他人,最後每個驗證者都要計算所有收到的其他投票。這個過程導致總消息複雜度爲 O(n*n),這裏 n 是總節點數。通過簡單的計算可知,這種算法在幾百個節點的網絡中並不實用。

一文讀懂 Harmony 與 Zilliqa 兩個分片項目的不同FBFT 共識機制

Harmony 在 PBFT 算法的基礎上進行了大量改良,創造出 FBFT 算法(快速拜占庭算法)。在這個新的算法中,驗證者不用廣播他們的投票,只需通過數字簽名的方式把投票發給領導者即可,領導者把收到的數字簽名合成爲一個數據量位 O(1) 的多重簽名,再廣播出去,這使得整個共識過程的消息複雜度從 O(n*n) 驟降到 O(n)。

此外,驗證者的選取是通過 PoS 抵押代幣的機制完成的,想要成爲驗證者的節點需要抵押一定數量的代幣纔有權參與共識。PoS 相比於 PoW 有節能高效的特點,在這點上,基於 PoS 的 Harmony 要比基於 PoW 的 Zilliqa 具有更多優勢。抵押代幣越多的節點,被選爲領導者的機率越大,但恰恰因爲抵押代幣越多,他們纔不會輕易作惡,因爲一旦被網絡檢查到,他們的抵押代幣將會被全部沒收。

Distributed Randomness Generation/ 分佈式隨機數生成

分片區塊鏈系統通常需要一個隨機的節點分配過程,目的是避免單一分片受到攻擊。這就需要生成一個隨機數來實現隨機的分片過程。隨機數本身需要具有完全不可預測,不可干擾的特性,這樣惡意節點就無法知道它將被分配到哪個分片。此外,這個隨機數的產生過程還需要快速並且可驗證。

在這個問題上,我們先看看 Harmony 白皮書裏提到的其他幾個分片項目方案的做法。項目 Omniledger 採用的分佈式隨機數產生協議叫 RandHound,協議中會把所有參與的節點劃分成若干組,我們以 c 代表組數。這個協議的弱點在於它的複雜度爲 O(n_c_c),對於節點衆多的區塊鏈系統來說,如此高的複雜度會使協議速度極慢。RapidChain 作爲比 Omniledger 更新的分片項目設計,採用了基於 Verifiable Secret Sharing(VSS) 的分佈式隨機數產生協議。雖然這個協議比 RandHound 快很多,但它並不安全,容易受到攻擊者的干擾和阻礙。大家熟知的項目 Algorand 用到了 Verifiable Random Function(VRF) 作爲隨機數,雖然它是基於密碼學裏重要的技術,但它不是分佈式的協議,任何單一節點都可以獨自完成隨機數過程。最後以太坊 2.0 採用了 Verifiable Delay Function(VDF) 的最新技術,可以大大提高分佈式隨機數協議的安全性。

一文讀懂 Harmony 與 Zilliqa 兩個分片項目的不同_基於 VRF 和 VDF 的安全隨機數生成協議 _

正因爲看到了以上幾種路徑的缺點,Harmony 的分佈式隨機數產生協議巧妙地結合了 VRF (可驗證隨機函數)+和 VDF (可驗證延遲函數)的密碼學特性。在這一協議裏,所有驗證者分別利用 VRF 計算自己的隨機數,併發給領導者。領導者收集一定數量的 VRF 隨機數結果,將他們合併之後,把結果進行 VDF 計算,最後產生的結果作爲最終的隨機數。這樣的過程保證了惡意節點無法提前預測或干擾隨機數的結果,並且整個過程複雜度爲 O(n),可以在短時間內完成最終隨機數的生成。

Kademlia Cross-shard Communication/ 基於 Kademlia 協議的跨片通信

對基於分片的區塊鏈系統來說,尤爲重要的一點在於如何處理跨片交易。Zilliqa 依賴於它的主鏈來進行跨片間的交易處理。Omniledger 的跨片交易需要靠用戶在片間傳遞消息。RapidChain 依靠片內節點的互相通信來實現跨片交易。Harmony 採用了類似於 RapidChain 的設計,利用片內節點自行相互通信,但不止如此,Harmony 還引入了 Kademlia 路由協議,這讓本來爲 O(n) 的通信複雜度降低爲 O(log(n)),大大減小了跨片交易的網絡開銷。

在 Kademlia 路由協議中,每個節點維護一個記錄到其他分片距離的路由表。這個距離是根據分片 ID 的不同計算得到的。當一個分片內的節點需要發消息給另一個分片,他不會盲目地廣播這個消息給全網,而是根據路由表發給離目的地距離最短的分片的節點。有了這個高效的路由協議,消息只會經過 O(log(n)) 的分片就能抵達目標分片,而無需涉及所有 O(n) 的分片。

Beacon Chain/ 信標鏈

Harmony 的分片架構包含一條信標鏈和多條分片鏈,每條分片鏈分別存儲一部分賬本信息。信標鏈本質上也是一個分片,但其具有兩個特殊功能:1、運行分佈式隨機數協議;2、接受節點的抵押代幣。此外,信標鏈對提升整個系統的安全性也能起到至關重要的作用。在每條分片的新區塊被確認後,通過 Kademlia 路由協議,新區塊的區塊頭將被髮送給信標鏈。信標鏈驗證這個區塊頭的合法性之後,會把它添加到自己的鏈內,並廣播給全網。這樣,每個分片都可以輕鬆維護其他分片的區塊頭序列,方便對其他分片的信息做 Merkle 驗證。

一文讀懂 Harmony 與 Zilliqa 兩個分片項目的不同信標鏈與分片鏈雙層結構

有了信標鏈的保護,攻擊者必須同時攻陷分片鏈和信標鏈纔有可能進行雙花攻擊。不止如此,由於信標鏈在分片鏈區塊頭的廣播中起到了中樞的作用,所導致的網絡開銷僅爲 O(n) 的量級。設想一下,如果沒有信標鏈的幫助,每個分片都需要分別廣播它的區塊頭,那麼總體網絡開銷將是 O(n*n),這極有可能造成網絡阻塞,而通過信標鏈,Harmony 則巧妙地避免了這個問題。

Parting Thoughts/ 總結

可以看出,Harmony 願景遠大,而一個遠大宏大的願景是成功改變世界的起點開始。在測試網中,Harmony 利用 44,000 個節點跑出了驚人的 118,000TPS 的數據。誠然,好的技術也需要有好的落地場景和市場來檢驗,Harmony 團隊在市場開發這方面也毫不遜色,相信他們會在不久的將來開拓出自己的市場。除此之外更重要的是,Harmony 是一個關注社羣建設的項目,他們的開發者一直在 Telegram 和 Discord 上積極回答社羣問題,並聽取建議。

最後聲明,這篇文章的撰寫主要基於 Harmony 的白皮書裏的內容,強烈推薦讀者親自看看他們的白皮書,可以學到很多分片技術的要點。白皮書地址:https://harmony.one/whitepaper

來源鏈接:hackernoon.com