1. 概述
????????最早的GHOST協(xié)議作為比特幣的交易處理能力擴容解決方案;Vitalik在以太坊紫皮書描述的POS共識協(xié)議Casper,也是基于GHOST POW協(xié)議的POS變種。后來有人提出用DAG的拓撲結(jié)構(gòu)來存儲區(qū)塊,改變區(qū)塊的鏈式存儲結(jié)構(gòu),變成DAG的網(wǎng)狀拓撲可以并發(fā)寫入。在區(qū)塊打包時間不變的情況下,網(wǎng)絡中可以并行打包N個區(qū)塊,網(wǎng)絡中的交易就可以容納N倍。
兩種同步策略
? ? ? ? 1. 同步持久化策略
? ? ? ? 2. 異步持久化策略:一致性不可控
2. IOTA
????????Tangle是一種革命性的新型無區(qū)塊分布式分類帳,在IOTA體系中轉(zhuǎn)賬無需手續(xù)費,交易速度快。但是由于異步通信以及鏈結(jié)構(gòu)的問題, 一些交易可能遲遲得不到驗證,并且隨著網(wǎng)絡的增大可用性會降低。IOTA體系中沒有區(qū)塊的概念,交易的驗證都是通過網(wǎng)絡其他交易發(fā)起者進行驗證的。IOTA網(wǎng)絡中想要發(fā)起交易必須為網(wǎng)絡貢獻交易驗證從而使網(wǎng)絡能夠持續(xù)運行。

發(fā)起交易基本上需要三步:
? ? ? ? 1. 構(gòu)建交易集和輸入簽名
? ? ? ? 2. 找到兩個沒有確認過的交易,驗證其有效性
? ? ? ? 3. 為交易集中的每筆交易做少量的PoW(抵御女巫攻擊和批量交易攻擊)
????????在IOTA系統(tǒng)中,網(wǎng)絡中的每位參與者都能進行交易并且積極參與共識。更具體點說,你直接定位了兩筆交易(主交易和分支交易),且間接在子tangle中定位其它交易。通過這種方式,驗證就能同步進行,網(wǎng)絡能夠保持完全去中心化,不需要礦工傳遞信任,也不需要支付交易手續(xù)費。
????????IOTA通過引入中心化的Validation對交易進行最終確認,只有Validation確認過的交易才算確認成功。Validation代碼沒有開源,沒有具體細節(jié)。一些人認為Validation如果撤銷,僅靠IOTA本身的共識很難保證安全。
3. byteball
????????Byteball中沒有區(qū)塊的概念,也沒有區(qū)塊容量的問題。相反,每一個新的交易都通過包含和簽名它們的哈希來參考更早(父母交易)的一個或幾個交易。交易中的鏈接形成了一個DAG(有向無環(huán)圖)

????????Byteball引入(12個)見證人和主鏈來達成共識,從而對交易進行排序。凡是被超過一半見證人直接或間接確認的單元視為合法單元。主鏈是沿著子-父鏈接到一個單鏈,可以把所有單元都關聯(lián)到一起。從如何一個頂點開始都可以構(gòu)造一個主鏈,以相同規(guī)則在兩個不同的頂點選擇主鏈,兩條主鏈一旦相交會在之后完全重合,重合部分稱為穩(wěn)定主鏈。所有單元要么在穩(wěn)定主鏈上,要不從穩(wěn)定主鏈沿著DAG通過少量跳躍可以到達。

????????給每個直接位于主鏈上的單元做索引,沿著主鏈序號遞增。對于不在主鏈的單元,賦值為第一個直接或者間接引用該單元的主鏈單元。擁有較小的編號的單元被認為是更早生成的,發(fā)生沖突時較小的單元有效。
????????當獲得新單元時,每個節(jié)點會持續(xù)追蹤自身的主鏈(MC),由于網(wǎng)絡延遲,每個節(jié)點的主鏈可能會不一樣。但是MC中足夠老的部分會保持不變,未來回溯時會回溯到某個單元,這個單元及其之前的所有MC單元都是穩(wěn)定的,隨著新單元的不斷加入,穩(wěn)定點的擴展方式一致,所有節(jié)點達成共識(Byteball用數(shù)學證明了這個結(jié)論)。穩(wěn)定點擴展的本質(zhì)是在當前穩(wěn)定點的某一條子鏈的路徑上出現(xiàn)了超過一半的見證人(最優(yōu)父單元選擇算法),就可以確定穩(wěn)定點能夠朝著當前子鏈擴展。
4、HashGraph
????????HashGraph 則是有向無環(huán)圖(DAG)的一種,采用柱狀的交易事件排序機制。HashGraph共識的目的就是在各個節(jié)點的本地將這樣一個有向無環(huán)圖中各個頂點進行排序。

????????Gossip about Gossip:本質(zhì)上意味著向本次傳播附加一些額外的信息,即兩者之間互相通信傳播內(nèi)容的兩個哈希。通過使用這些信息,就可以創(chuàng)建Hashgraph。例如上圖最下方,E收到B的消息之后,創(chuàng)建新的event E2,然后將E1和E2(E所知道的且C沒有的所有數(shù)據(jù))同時發(fā)送給隨機選擇的C,此時C生成一個新的event C2。隨著時間的推移就會生成上圖的形狀。
????????Virtual Voting:節(jié)點并不需要發(fā)送實際投票。每個節(jié)點本地存有一張Hashgraph。如果兩個節(jié)點的Hashgraph相同,就能用同樣的方法計算出所有event的排序。隨著時間的推移,時間較老的event就會達成一致。Hashgraph節(jié)約了帶寬并且無需工作量證明即可實現(xiàn)共識。
????????具體細節(jié)概念不展開。
5、Conflux
????????Conflux共識機制以及實驗數(shù)據(jù)是在比特幣源代碼框架下實現(xiàn),沿用比特幣的POW機制。Conflux 的理念設計是可以容許不同區(qū)塊同時生成,并運用基于DAG概念的排序算法來避免分叉的問題。利用GHOST協(xié)議不通過最長鏈來選main chain,而是選擁有子樹區(qū)塊最多的那條鏈。不同于之前先確定交易順序,再確定區(qū)塊順序的設計思路,conflux是先把區(qū)塊順序算出來,再決定要保留哪些交易。

????????1)樂觀地處理并發(fā)塊
????????2)將塊組織成有向無環(huán)圖(DAG)
????????3)首先同意所有塊的所有交易(假設交易不會相互沖突)
????????4)然后從約定的塊順序派生交易訂單(懶惰地解決交易沖突)
????????具體細節(jié)概念不展開。
6、需要注意的問題:
1. 同步通信/異步通信
??? 異步通信導致的交易時長不可控。
2. 節(jié)點一致性
??? 異步通信導致節(jié)點間賬本的不一致性。
3. 女巫攻擊和影子鏈
??? DAG允許并行交易的特性導致攻擊者可能暗中生成影子鏈進行攻擊。交易免手續(xù)費容易導致女巫攻擊。
4. 智能合約
????不存在全局排序機制,導致系統(tǒng)支持的操作類型受限,難以實現(xiàn)圖靈完備的智能合約體系。需要一個機構(gòu)確保智能合約的運行,主鏈和Coordinator實現(xiàn)類似的效果。
????DAG異步通信在運行智能合約時,節(jié)點間可能會出現(xiàn)偏差。
5. 網(wǎng)絡傳輸數(shù)據(jù)量
????DAG結(jié)構(gòu)在全網(wǎng)N個節(jié)點時,每一個消息都需要在設備間進行點對點通信,共需要N*N次數(shù)據(jù)發(fā)送。大量節(jié)點接入后,網(wǎng)絡傳輸數(shù)據(jù)量會出現(xiàn)大幅增長