1. 概述
????????最早的GHOST協(xié)議作為比特幣的交易處理能力擴容解決方案蜗顽;Vitalik在以太坊紫皮書描述的POS共識協(xié)議Casper陆赋,也是基于GHOST POW協(xié)議的POS變種搪缨。后來有人提出用DAG的拓撲結(jié)構(gòu)來存儲區(qū)塊,改變區(qū)塊的鏈?zhǔn)酱鎯Y(jié)構(gòu),變成DAG的網(wǎng)狀拓撲可以并發(fā)寫入狭瞎。在區(qū)塊打包時間不變的情況下柬采,網(wǎng)絡(luò)中可以并行打包N個區(qū)塊欢唾,網(wǎng)絡(luò)中的交易就可以容納N倍。
兩種同步策略
? ? ? ? 1. 同步持久化策略
? ? ? ? 2. 異步持久化策略:一致性不可控
2. IOTA
????????Tangle是一種革命性的新型無區(qū)塊分布式分類帳粉捻,在IOTA體系中轉(zhuǎn)賬無需手續(xù)費礁遣,交易速度快。但是由于異步通信以及鏈結(jié)構(gòu)的問題肩刃, 一些交易可能遲遲得不到驗證祟霍,并且隨著網(wǎng)絡(luò)的增大可用性會降低。IOTA體系中沒有區(qū)塊的概念盈包,交易的驗證都是通過網(wǎng)絡(luò)其他交易發(fā)起者進行驗證的沸呐。IOTA網(wǎng)絡(luò)中想要發(fā)起交易必須為網(wǎng)絡(luò)貢獻交易驗證從而使網(wǎng)絡(luò)能夠持續(xù)運行。
發(fā)起交易基本上需要三步:
? ? ? ? 1. 構(gòu)建交易集和輸入簽名
? ? ? ? 2. 找到兩個沒有確認過的交易呢燥,驗證其有效性
? ? ? ? 3. 為交易集中的每筆交易做少量的PoW(抵御女巫攻擊和批量交易攻擊)
????????在IOTA系統(tǒng)中崭添,網(wǎng)絡(luò)中的每位參與者都能進行交易并且積極參與共識。更具體點說叛氨,你直接定位了兩筆交易(主交易和分支交易)滥朱,且間接在子tangle中定位其它交易。通過這種方式力试,驗證就能同步進行徙邻,網(wǎng)絡(luò)能夠保持完全去中心化,不需要礦工傳遞信任畸裳,也不需要支付交易手續(xù)費缰犁。
????????IOTA通過引入中心化的Validation對交易進行最終確認,只有Validation確認過的交易才算確認成功。Validation代碼沒有開源帅容,沒有具體細節(jié)颇象。一些人認為Validation如果撤銷,僅靠IOTA本身的共識很難保證安全并徘。
3. byteball
????????Byteball中沒有區(qū)塊的概念遣钳,也沒有區(qū)塊容量的問題。相反麦乞,每一個新的交易都通過包含和簽名它們的哈希來參考更早(父母交易)的一個或幾個交易蕴茴。交易中的鏈接形成了一個DAG(有向無環(huán)圖)
????????Byteball引入(12個)見證人和主鏈來達成共識,從而對交易進行排序姐直。凡是被超過一半見證人直接或間接確認的單元視為合法單元倦淀。主鏈?zhǔn)茄刂?父鏈接到一個單鏈,可以把所有單元都關(guān)聯(lián)到一起声畏。從如何一個頂點開始都可以構(gòu)造一個主鏈撞叽,以相同規(guī)則在兩個不同的頂點選擇主鏈,兩條主鏈一旦相交會在之后完全重合插龄,重合部分稱為穩(wěn)定主鏈愿棋。所有單元要么在穩(wěn)定主鏈上,要不從穩(wěn)定主鏈沿著DAG通過少量跳躍可以到達均牢。
????????給每個直接位于主鏈上的單元做索引糠雨,沿著主鏈序號遞增。對于不在主鏈的單元膨处,賦值為第一個直接或者間接引用該單元的主鏈單元。擁有較小的編號的單元被認為是更早生成的砂竖,發(fā)生沖突時較小的單元有效真椿。
????????當(dāng)獲得新單元時,每個節(jié)點會持續(xù)追蹤自身的主鏈(MC)乎澄,由于網(wǎng)絡(luò)延遲突硝,每個節(jié)點的主鏈可能會不一樣。但是MC中足夠老的部分會保持不變置济,未來回溯時會回溯到某個單元解恰,這個單元及其之前的所有MC單元都是穩(wěn)定的,隨著新單元的不斷加入浙于,穩(wěn)定點的擴展方式一致护盈,所有節(jié)點達成共識(Byteball用數(shù)學(xué)證明了這個結(jié)論)。穩(wěn)定點擴展的本質(zhì)是在當(dāng)前穩(wěn)定點的某一條子鏈的路徑上出現(xiàn)了超過一半的見證人(最優(yōu)父單元選擇算法)羞酗,就可以確定穩(wěn)定點能夠朝著當(dāng)前子鏈擴展腐宋。
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 的理念設(shè)計是可以容許不同區(qū)塊同時生成,并運用基于DAG概念的排序算法來避免分叉的問題崇摄。利用GHOST協(xié)議不通過最長鏈來選main chain擎值,而是選擁有子樹區(qū)塊最多的那條鏈。不同于之前先確定交易順序逐抑,再確定區(qū)塊順序的設(shè)計思路鸠儿,conflux是先把區(qū)塊順序算出來,再決定要保留哪些交易厕氨。
????????1)樂觀地處理并發(fā)塊
????????2)將塊組織成有向無環(huán)圖(DAG)
????????3)首先同意所有塊的所有交易(假設(shè)交易不會相互沖突)
????????4)然后從約定的塊順序派生交易訂單(懶惰地解決交易沖突)
????????具體細節(jié)概念不展開进每。
6、需要注意的問題:
1. 同步通信/異步通信
??? 異步通信導(dǎo)致的交易時長不可控命斧。
2. 節(jié)點一致性
??? 異步通信導(dǎo)致節(jié)點間賬本的不一致性田晚。
3. 女巫攻擊和影子鏈
??? DAG允許并行交易的特性導(dǎo)致攻擊者可能暗中生成影子鏈進行攻擊。交易免手續(xù)費容易導(dǎo)致女巫攻擊国葬。
4. 智能合約
????不存在全局排序機制肉瓦,導(dǎo)致系統(tǒng)支持的操作類型受限遭京,難以實現(xiàn)圖靈完備的智能合約體系。需要一個機構(gòu)確保智能合約的運行泞莉,主鏈和Coordinator實現(xiàn)類似的效果哪雕。
????DAG異步通信在運行智能合約時,節(jié)點間可能會出現(xiàn)偏差鲫趁。
5. 網(wǎng)絡(luò)傳輸數(shù)據(jù)量
????DAG結(jié)構(gòu)在全網(wǎng)N個節(jié)點時斯嚎,每一個消息都需要在設(shè)備間進行點對點通信,共需要N*N次數(shù)據(jù)發(fā)送。大量節(jié)點接入后,網(wǎng)絡(luò)傳輸數(shù)據(jù)量會出現(xiàn)大幅增長