區(qū)塊鏈的基本數(shù)據(jù)結(jié)構(gòu)解析
分布式分類賬技術(shù)是一種強大的、顛覆性的創(chuàng)新,可以改變我們的社會,提高應(yīng)用的生產(chǎn)力。根據(jù)著名的N. Virt公式“算法+數(shù)據(jù)結(jié)構(gòu)=程序”,每個計算機程序的主要成分是算法+數(shù)據(jù)結(jié)構(gòu)。
區(qū)塊鏈?zhǔn)且环N分散式結(jié)構(gòu)的系統(tǒng),其中鏈表充當(dāng)事務(wù)塊的基本數(shù)據(jù)結(jié)構(gòu)。關(guān)于哪些事務(wù)塊應(yīng)該附加到它的決策是由共識算法決定的。有時,選擇基本數(shù)據(jù)結(jié)構(gòu)比選擇特定的共識算法對速度、吞吐量、可伸縮性和事務(wù)成本的影響大得多。
大多數(shù)現(xiàn)有的區(qū)塊鏈解決方案甚至在增加資源的情況下也無法擴展其吞吐量,因為它們基于鏈表數(shù)據(jù)結(jié)構(gòu),并添加了一些安全性,使其成為不可變的和僅追加的。研究人員和實踐者得出結(jié)論,事務(wù)存儲最自然的數(shù)據(jù)結(jié)構(gòu)是有向無環(huán)圖(DAG)——一種沒有有向循環(huán)的有限有向圖。嚴(yán)格地說,基于DAG的分布式賬本本身并不是區(qū)塊鏈,但是具有這種結(jié)構(gòu)的項目由于能夠克服區(qū)塊鏈設(shè)計的限制而越來越受歡迎。讓我們按照時間順序討論現(xiàn)有的基于DAG的方法。
IOTA DAG
IOTA發(fā)布了一種名為Tangle的基于DAG的技術(shù)。這個概念被用來解決物聯(lián)網(wǎng)限制下的可伸縮性問題。同時,通過設(shè)置用戶的困難度,構(gòu)造了一個利用權(quán)值水平的臨時現(xiàn)場來實現(xiàn)交易的一致性。為了解決重復(fù)支出和寄生蟲攻擊的問題,他們使用馬爾科夫鏈蒙特卡羅提示選擇算法,根據(jù)累積交易權(quán)的大小隨機選擇提示。然而,如果一個事務(wù)與另一個事務(wù)發(fā)生沖突,仍然需要檢查所有過去的事務(wù)歷史來查找沖突。
Byteball DAG
Byteball使用名為bytes的內(nèi)部支付系統(tǒng)。這用于支付向分布式數(shù)據(jù)庫添加數(shù)據(jù)的費用。每個存儲單元相互鏈接,其中包括一個或多個早期存儲單元的哈希值。特別是,共識排序是通過選擇一個主鏈組成的,主鏈被確定為由最多根組成的根。大多數(shù)根通過主鏈的一致時間來檢測雙重支出。費用是根據(jù)字節(jié)大小收取的,在確定根的過程中需要搜索和更新所有單位的列表。
Hedera Hashgraph
Hashgraph是一個異步的基于數(shù)據(jù)挖掘的分布式分類賬。每個節(jié)點由它自己的祖先連接,并通過八卦協(xié)議隨機通信已知事件。此時,任何一個著名節(jié)點都可以由“看到”和“強烈看到”關(guān)系確定在每一輪迅速達成共識。他們指出,如果超過2/3的節(jié)點對某一事件達成一致意見,則將分配該事件的一致意見位置。
Phantom協(xié)商算法是基于廣泛DAG操作的Lachesis協(xié)議。此圖的節(jié)點是事件,這些事件包含關(guān)于事務(wù)、它們的作者和定義事件拓撲順序的Lamport時間戳的信息。流程的狀態(tài)可以從其初始狀態(tài)以及一直到當(dāng)前狀態(tài)的操作或事件序列中獲得。如果事件塊被2n/3節(jié)點控制(已知),則共識算法將事件塊追加到DAG?;诔杀竞瘮?shù)的某種機制選擇了圖形中附加事件塊的位置。
Perlin DAG
Perlin使用DAG一致性協(xié)議提供了可伸縮分布式賬本協(xié)議。valanche聲稱,它不需要選舉任何形式的領(lǐng)導(dǎo)人(因此沒有領(lǐng)導(dǎo)人),而是簡單地“引導(dǎo)”所有節(jié)點達成共識。這種方法部分是通過DAG的亞穩(wěn)態(tài)機制實現(xiàn)的。亞穩(wěn)性本質(zhì)上是指系統(tǒng)被設(shè)計來帶來一個答案(即所有節(jié)點都以同一種方式投票),因此不會保持平衡(因為如果系統(tǒng)保持平衡,就無法達成一致意見)的概念。這些協(xié)議在拜占庭式對手面前提供了強大的安全保證概率,同時它們的并發(fā)特性使它們能夠?qū)崿F(xiàn)高吞吐量和可伸縮性。
Enecuum Hyperdag
我們自己的方法Hyperdag將Nakamoto的區(qū)塊鏈推廣為一個DAG塊,它采用了一些使用DAG的其他解決方案的最佳實踐。與Hashgraph類似,DAG是擴散性的,可以在決定哪些事務(wù)有效且可靠時最大限度地利用附加歷史記錄。使用Hyperdag存儲事務(wù)可以創(chuàng)建只包含同構(gòu)事務(wù)的分支(區(qū)塊鏈)。每個分支本質(zhì)上是一個單獨的區(qū)塊鏈,同時也是整個系統(tǒng)的一部分。
每個分支可以為新塊的創(chuàng)建和確認設(shè)置自己的特定規(guī)則。節(jié)點不需要復(fù)制和存儲所有輔助的以太坊分支。Hyperdag支持創(chuàng)建獨立的分支機構(gòu),在這些分支機構(gòu)中,可以定制規(guī)則來解決許多潛在的業(yè)務(wù)問題,包括以低廉和快速處理大量交易的能力。此外,該解決方案允許集成來成功解決可伸縮性問題。