區塊鏈技術現狀

區塊鏈技術現狀

(重點研究了EOS和DAG的共識機制和體系設計)

區塊鏈的開放對象範圍一般可以分爲三類:(1)公有區塊鏈,(2)聯盟區塊鏈,(3)私有鏈,對於私有鏈僅僅使用區塊鏈的總賬技術進行記賬,公司或者個人獨享這個區塊鏈的寫入權限,私鏈的特徵是交易速度快,數據不公開,交易成本低,甚至爲零,目前傳統金融巨頭都在嘗試;而對於聯盟鏈,由於某個羣體內部指定多個預選的節點爲記賬人,每個塊的生成由所有的預選節點共同決定,其他介入節點可以參與交易,但不過問記賬過程,其他任何人可以通過該區塊鏈開放的API進行限定查詢,聯盟鏈需要通過授權才能加入和退出;而公有區塊鏈是所有個體和團體都可以發送交易,且交易能夠獲得區塊鏈的有效確認,任何人都可以參與共識過程。

本次調研從公鏈開始,因爲比特幣和以太坊的平臺相對爲大家比較熟悉,所以我就跳過,直接從被叫做區塊鏈3.0的EOS講起,涉及它的共識機制和賬戶模型,接下來是DAG,是一種比較特殊的數據機構以及共識機制的構造方式,最後是聯盟鏈,因爲之前做過一次Fabric的調研,具體細節就不再展開,主要介紹另外一些聯盟鏈的信息。

EOS

區塊鏈2.0的痛點:

區塊鏈經歷了大致三個階段,1.0時代代表的是去中心化賬本,2.0時代是代表智能合約,3.0時代則是代表了行業的應用。早期的區塊鏈技術應用單一,僅僅用作保證去中心化的數字貨幣交易可信性的技術方案之一,但是事實上它具有很多優良的特性,決定了它能夠被更加深入的應用,例如:(1)保證信息共享且真實可信,(2)交易費用低,(3)鏈上操作不可逆,(4)用戶信息匿名;所以有了以太坊爲代表的2.0時代,但是2.0時代也存在短板,體現在以下方面:(1)調用合約產生費用昂貴,(2)交易處理不公平,(3)網絡堵塞交易速度低,(4)不支持浮點數以及代碼修改,爲了解決這些問題,EOS的項目被提上日程。

EOS的相關特性:

1、支持百萬數量級別的用戶;2、免費使用;3、簡單的升級以及漏洞修復;4、較低的延遲性;5、強大的串行性能;6、強大的並行性能

EOS的共識機制:

EOS使用的共識機制是DPOS(委託股權證明),DPOS由五個部分組成:Token、區塊鏈、社區、計算機和規則,在整一個系統裏面,Token代幣的持有者以Token爲選票,通過投票選出它認可的節點,選出的節點根據一定的規則來運行區塊鏈計算機網絡,這種機制類似於委員會的機制,選民通過選票來選出運行系統的代表委員,而在這裏的選票就是代幣,在EOS系統裏面,最終會選出21個主節點,它們有權利生產區塊,也就是說整一個系統的區塊生產者,也就是礦工,簡稱BP。

一開始的EOS使用的是傳統的DPOS,這裏採用隨機的BP出塊順序,出塊速度是3秒/塊,每一個BP的出塊都代表了對之前整條鏈進行一次信息確認。因爲交易需要得到全網2/3以上BP的確認,也就是說在EOS上,需要14個主節點BP對區塊進行確認纔算是不可逆,因此交易不可逆需要45秒((14+1)*5=45)。

這樣的速度不夠快,因此EOS採用了拜占庭的機制,採用了BFT—DPOS的共識機制,在這樣的機制下,BP生產出新的區塊依然像全網絡廣播,其他BP接收到新的區塊時,立即對這個區塊進行驗證,並且將驗證完成的簽名區塊立即返回給出塊BP,不需要等到輪到自己出塊再確認,因此在生產新的區塊並廣播全網後,在收到全網2/3的BP確認後,這個區塊就是不可逆的,這使得交易的不可逆確認縮短爲3秒,消耗的時間主要是等待生產區塊的時間。

這個變化過程可以從下圖看出:
在這裏插入圖片描述

​ (圖片一:傳統的DPOS,等待區塊確認)
在這裏插入圖片描述

​ (圖片二:BFT—DPOS,收到足夠多簽名就行)

爲了繼續挖掘EOS的性能,EOS又做了一定的修改,它將原本的出塊速度3秒改爲0.5秒,極大提升了系統性能,但是這樣做的缺點就是帶來了網絡延遲問題,由於網絡延遲的問題,可能0.5秒的確認時間會導致下一個出塊的節點還沒有收到上一個出塊節點的區塊即產生了新的節點,從而導致區塊鏈分叉,也就是分叉的概率會大大增大,針對這個問題,EOS設計了原先的出塊順序爲BP商定後的確定順序,這樣如果兩個網絡延遲比較低的BP會相鄰出塊,儘量避免區塊鏈分叉,同時爲了增強這個問題的性能,它們設計每個BP生產區塊時,連續生產12個區塊,也就是擁有6秒的連續出塊時間,這樣使得只有最後一個或者兩個區塊可能因爲網絡延遲被下一個BP忽略,但能保證前列的區塊能夠有效傳遞給下一個BP。

總結一下,現有的BFT—DPOS的機制就是,每一個區塊擁有6秒的出塊時間(連續生產12個區塊),生產出來後立即對全網進行廣播,區塊生產者儀表生產新的區塊,一邊接受其他BP對於上一個區塊的確認,大部分情況下,交易會在一秒內確認(也就是達到不可逆狀態),該時間包含了0.5秒的區塊生產和0.5秒的其他BP的確認,如下:
在這裏插入圖片描述

EOS系統規定,一旦區塊達到不可逆狀態(2/3BP確認),就無法在此之前進行分叉,從而保證交易永久可信,另外,即使多數BP想要分叉區塊鏈,也只能以相同的速度(0.5秒)與主鏈競爭,就算主鏈只剩下一個見證人,分叉鏈也永遠不會追上主鏈,保證系統的穩定。

超級節點的競選:

超級節點就是我們上面說到的BP,也就是系統生產區塊,打包交易信息的節點,他們負責的事務:(1)收集網絡裏的交易,(2)驗證交易並且把它們打包到塊,(3)廣播區塊給其他節點,通過驗證後將區塊添加到自己本地區塊鏈上;因爲採用了BFT-DPOS的共識機制,很好解決了延遲和吞吐量低的痛點,但是當然爲了提升整一個網絡的效率,就需要減少節點,但是減少節點會對網絡安全性造成傷害,例如,如果委員會的委員太少,那麼它們可以聯合起來爲所欲爲的可能性就會很高。EOS設計者的想法,就是建立21個超級節點,它們各自組織自身的EOS社區,而超級節點也會以現實中的城市一樣去競爭發展,這個方法能夠以有限的中心化實現廣義的去中心化,並且以EOS獲得極快的交易速度與容錯能力。

至於EOS上面超級節點的產生是根據全網用戶持有的EOS token投票實現的,不同於以太坊的POA一個節點一票的形式,EOS是根據持幣的數量來決定手裏的票數,因爲POA的場景是私鏈或者聯盟鏈,與大規模的公鏈是不同的。節點被選舉成功後,POA是沒有確定數量限制的,但是EOS限制了只有21個,每次投票結束後,排名前21位的節點勝任,並且這些超級節點必須有很高的性能要求與運維能力以及社區規模,如果某個節點出塊出現了問題,一定規則下回丟棄而重新選。

持幣者投票:

EOS上凡是有Token的持有者都可以進行投票,投票流程:

(1)EOS Token抵押:持有者要獲得選票,需要將手裏的EOS Token抵押,轉換成相應的CPU和帶寬資源,可以投選票數與抵押的可用資源相等,抵押的EOS會被鎖定,不再具有轉賬和交易的功能,如果想要取消抵押並贖回,需要等到72小時後才能到賬。

(2)一票30投,委託代理:獲得的選票最多可以投給30個不同的節點,假如你有一個EOS Token代幣,你可以將這一票投給一個節點,也可以投給30個節點,這些節點就會得到一票,如果想要改變主意,可以立即改投,更改會在下一輪的區塊開始時生效(21*6秒)還有一種投票的方式就是委託代理,也就是你可以把投票權利給指定的代理人,他幫你投。

(3)投票權重衰減:爲了推動治理,希望EOS用戶根據節點的發展更新他們的投票,爲此引入了時長一年的投票權重半衰期的機制,這個機制規定從投票一週後開始,如果用戶在一週後不再重新投票,它的選票權重就會衰減,一年後會降低至原來的50%,如果用戶重新投票,就會恢復權重,在每一輪區塊生產時,系統會根據每一個節點的選票數和每張選票的權重得到各個節點的選票值,根據排名篩選出前21個節點作爲系統的超級節點。

超級節點的治理:

超級節點的定位就是POW中的礦工,他們都是收集網絡中的交易信息並打包成塊,不同的是EOS的超級節點不需要完成工作量證明就可以直接廣播區塊,讓其他節點驗證。

在EOS中,每生產252個區塊爲一個區塊週期,也就是每一個超級節點在一個區塊週期中應該產生12個區塊,而每個區塊出塊時間0.5秒;每個區塊週期開始時,EOS會根據投票得到21個超級節點,約定產生一個區塊產生的順序,這些節點按照這個順序進行出塊,如果一個節點沒有在指定時間出塊(每隔0.5秒出一個區塊),那麼這個區塊就會被跳過,並在區塊鏈上留下時間戳間隔,如果一個節點在最近24個小時內都沒有產生區塊,那麼它會被移出超級節點候選名單。

一旦一個節點完成區塊生產並且通過其他節點的驗證,它就可以添加這個區塊到鏈上,並獲得新的代幣作爲獎勵,所有超級節點的期望獎勵中位數決定了系統最終會產生多少新代幣,但是每年產生的新代幣數量不能超過代幣總量的5%。

EOS的賬戶體系:

賬戶體系是EOS上的亮點之一,實現了基於角色的權限管理以及賬戶恢復功能,使得用戶可以靈活得以一種組織化的方式管理賬戶,最大化資產安全性。

基於角色的多層級賬戶體系:

常見的區塊鏈系統賬戶是一對公私鑰,賬戶名就是公鑰,而EOS中的賬戶名由用戶自定義的12位可讀標識符,而且一般賬戶下面包含多對公私鑰,每對可以自定義擁有不同的權限,通過權限配置可以實現該賬戶只被個體控制或者被一個組織控制,這個賬戶是傳統公鑰所代表的單一權限的更高層抽象集合。

一般的常見區塊鏈項目,一般由於只有一對公私鑰,因此代幣會直接放在公鑰,如果私鑰被盜取代幣就可以直接轉走,但是在EOS賬戶內,代幣是放在賬戶裏,公鑰裏面放的是帶權重的鑰匙,轉走賬戶裏面的代幣需要每個擁有轉賬權限的鑰匙的權重之和達到設定的閾值纔可以進行。EOS上的所有交易行爲都是通過賬戶來完成的,通過賬戶執行任意操作時,EOS系統首先會驗證操作者是否達到足夠的權限,驗證這個操作纔會生效。

EOS上,每個賬戶創建時一般由個體擁有,通過單一公私鑰便能夠進行所有操作,後續可以根據需要配置權限,將賬戶擴展成組織賬戶,由多對公私鑰共同控制,甚至可以爲組織外部個體或者組織分配部分操作權限,從而實現極其靈活的組織管理方式。

賬戶權限管理:

EOS上任意賬戶都自帶兩個原生權限:owner和active權限,owner代表賬戶所有權,這個權限可以進行所有操作,包括更改owner權限,可以由一對或者多對EOS公私鑰或者另一賬戶的某權限實現權限控制,因此,代表着owner權限的EOS公私鑰最重要,需要冷儲藏。active是活躍權限,能進行除更改owner權限以外的所有操作,也是通過一對或多對EOS公私鑰或者另一賬戶的某權限實現權限控制的。

EOS支持將A賬戶的某一個操作權限分配給他人所擁有的公私鑰對或者賬戶B,從而實現基於角色的權限管理。

除了兩個原生權限外,EOS還支持自定義權限,active權限可以看做擁有除了更改owner權限外的所有owner權限,例如轉賬、投票、購買ram等權限,我們可以將active的部分權限分配給一個自定義的權限voting,單獨通過voting權限所對應的私鑰對投票操作進行簽名就可以完成投票操作。這樣做的目的就是可以把部分操作權限分配給第三方,避免直接給出active權限的私鑰,從而實現靈活和安全的組織管理方式。

在多主體共同控制某一權限的情況下,EOS是通過權重和閾值來實現判斷是否擁有這個操作權限:因爲賬戶會給每個主體分配不同權重,以及某個權限的閾值,只有當某些人擁有的公私鑰數量對應的權重之和不低於該權限的閾值,才能擁有這個權限,並進行操作,如下:
在這裏插入圖片描述

要實現publish這個操作,需要閾值爲2纔可以操作,因此@bob或者@stacy可以單獨進行操作,而如果是第三個賬戶就不可以,他需要與其他人的權限和達到2一起簽名交易纔可以操作。

強制延遲消息執行策略:

時間是安全的重要問題,基於時間的安全性在人們使用某些應用程序時更爲重要。在消息包含在區塊後,EOS系統支持開發人員指定某些消息在應用前必須等待一小段時間,在此期間可以取消該操作,例如支付一杯咖啡可以在幾秒內確認且不再被撤回,而買房子可以設定72小時後才清算,保證了資產安全。

密鑰丟失或被盜後的恢復:

EOS允許恢復被盜竊的密鑰。這在比特幣和以太坊上是不可能的,在比特幣和以太坊上一旦密鑰丟失,那麼整一個賬戶會隨之丟失,EOS提供了密鑰被盜取恢復的方法,賬戶所有者可以使用過去30天內活躍的任何其批准的賬戶恢復合作伙伴的密鑰,重置賬戶的所有者密鑰,沒有賬戶所有者的配合,賬戶恢復合作伙伴無法重置賬戶的控制權。

對於黑客而言,由於已經控制了賬戶,不用恢復,同時恢復的操作會暴露它的身份,所以對於它們來說恢復沒有所得。這個過程與簡單的多重簽名交易不同,通過多重簽名另一個實體會成爲執行交易的一方,而恢復過程中,恢復合作伙伴參與恢復過程,無權參與日常交易,極大降低所有參與者要付出的成本與法律責任。

網絡資源Token化:

帶寬和日誌存儲:

用戶發送一筆交易信息後,區塊生產者需要將交易打包生成區塊,然後將區塊通過網絡同步給其他生產者,這個過程需要消耗一定網絡帶寬資源,而帶寬資源由交易信息在區塊中所佔的字節數決定,這種方式類似於手機流量,每發送一筆交易就消耗一點帶寬資源,如果資源消耗存儲爲0,那麼無法發送交易信息,獲取帶寬資源的方式有兩種:

(1)如果用戶持有Token,可以直接將Token抵押給EOS系統賬戶,系統會根據抵押Token佔全網抵押Token的比例,分配給用戶對應帶寬資源,比如,用戶擁有1%的抵押Token,那麼佔有全網1%的帶寬資源,因爲帶寬是可以回收的,因此用戶可以取消抵押,換回Token,鎖定期爲3天。

(2)如果用戶賬戶沒有Token,可以從其他用戶手中租賃帶寬資源。

計算和計算積壓(CPU):

當用戶調用智能合約時,區塊生產者需要根據智能合約地址查找合約代碼,然後代碼加載到內存運行,這個過程需要消耗CPU算力,CPU計算資源由運行智能合約所消耗的時間決定,用戶每次調用智能合約都會消耗計算資源,如果消耗爲0無法執行合約,CPU也是跟上面的抵押機制進行購買,取消抵押鎖定期3天。

狀態存儲器(RAM):

RAM是運行時的內存,EOS中,用於存儲賬戶的狀態信息需要內存,RAM的買賣實質上是抵押EOS Token到系統賬戶,而不是直接交易,而購買RAM是抵押EOS得到RAM的使用權限,至於出售RAM,是釋放自己所佔用的RAM,從系統賬戶中取回EOS,和網絡帶寬不同,RAM的交易是有0.5%手續費,並且不能出租給其他人,只能自己使用,抵押或者取回RAM是即時的,沒有延遲期,RAM的價格是有一種bancor算法,買的人越多,價格越高。

EOS中的智能合約:(待擴展)

(1)內聯通信,(2)延期溝通

EOS的腳本與虛擬機:(待擴展)

(1)模式定義的消息,(2)模式定義的數據庫,(3)身份驗證與應用程序分離,(4)虛擬機獨立架構

DAG:

隨着區塊鏈的發展,它暴露的問題還是挺多的,例如吞吐量、擴展性低等缺點,嚴重阻礙落地,因此也有一些人提出了新的結構——DAG;就是有向無環圖,在區塊鏈中它是一種存儲數據的方式,“有向”指的是所有數據順着同一方向存儲,“無環”則是指數據結構間不構成循環,目前的DAG項目有IOTA和Byteball等等,他們利用DAG成功構建長期穩定的公有鏈證明了這項技術的先進性和良好的性能。下面我會從IOTA、Byteball、Hashgragh這三種基於DAG的區塊鏈進行介紹。

IOTA的共識機制:

IOTA是一種新型的加密貨幣系統,可以用於創建全球範圍內基於現有硬件的物聯網系統中的一種貨幣,它所採用的數據結構是Trangle:

Trangle確認規則:

Trangle是IOTA的數據結構,每一筆交易在Trangle中用一個頂點表示,因此可以說區塊鏈是每一個區塊存一筆交易,當有新的頂點(也就是交易)加入Trangle時,它需要選擇兩個已經存在的頂點作爲自己的父親頂點(也就是要驗證之前的這兩筆交易),並往這個數據結構中添加兩條新的有向邊,如下圖:
在這裏插入圖片描述

在Trangle中沒有被確認的交易,被叫做tip,也就是沒有子節點的節點都是tip,交易的確認分爲完全確認和部分確認,完全確認的定義是:被所有tip直接或者間接驗證的交易就是被最終確認的交易,Trangle隨着時間的擴展,一段時間後,早期的交易深度會達到足夠大,使得任意一筆新加入的交易都能夠直接或者間接的對其進行再次驗證,因此可以說這些完全確認交易具有高度的確定性,但是由於網絡原因,節點不可能擁有全局視角下的Trangle,完全確認通常很難達成,因此爲了讓節點能夠確認交易,規定一筆交易被一定比例(80%)的tip驗證就可以視爲確認,也就是用部分確認來代替完全確認,更進一步,用戶可以根據交易對方的身份,選擇一筆交易的確認級別,比如一筆交易的價值很小或者交易對方是一個可以信任的朋友時,可以選擇75%或者更低的確認比例。

輕量化的POW:

IOTA發送交易沒有手續費,爲了防止DDos攻擊,同時避免算力的過多浪費,IOTA要求用戶在發起交易之前需要做一個輕量化的POW,這裏的POW跟比特幣一樣,用戶將交易內容和所選的兩個父親節點的hash打包,添加一個隨機數Nounce計算出一個hash值,直到滿足要求之後再將交易發送出去,這樣可以防止惡意用戶無代價發送垃圾交易,造成網絡擁堵。

其他用戶在驗證父節點的合法性時,首先驗證它的工作量證明是否符合要求。因此當用戶想要發起一筆交易是,他應該按照以下步驟進行:(1)選擇兩筆交易作爲父親交易,通常是tip交易,(2)檢查這兩個交易是否衝突或者驗證了帶有衝突的交易,(3)在發送交易之前,需要做一個輕量化的POW計算,在Trangle中出現分叉時,用戶需要做出選擇,選擇的依據不再是最長鏈原則,而是最大工作量原則,工作量最多的分叉視爲唯一合法分叉。

蒙特卡洛馬爾科夫鏈:

IOTA想要構造的是一個沒有中心的系統,因此不會存在個人或者集體要求用戶在發送交易是採用何種父親頂點,所以需要蒙特卡洛馬爾科夫鏈MCMC,遵守這種算法的用戶的交易會得到快速確認,而不遵守的交易不容易得到確認。

IOTA中,希望每一個用戶都能夠選擇tip進行驗證,也就是選擇新的交易進行確認要比選擇老的交易好,對於那些去確認老交易的頂點,叫做”懶惰“頂點,因爲發送這些交易的用戶沒有更新數據讓自己擁有最新的Trangle,並且沒有驗證新的交易,MCMC算法的目的就是要讓”懶惰“的交易不容易得到確認,並且越”勤奮“的交易能夠越快得到確認,這樣就能夠增加交易的確認效率,這樣設計有利於Trangle的健康發展。

在MCMC算法中,選擇父親頂點的過程從創世點出發,遞歸選擇當前頂點的子頂點,從而一步步往延伸方向進行查找直到找到tip,就是被選擇的父親頂點,在遊走的過程中會遇到某個頂點存在多個子頂點,此時不同子頂點被選中的概率不同,MCMC算法就是爲每一個子頂點的概率設計一個計算方法:爲了確定不同子頂點被選的概率,爲每一個頂點引入一個屬性:累加權重,如果一個頂點被n個頂點驗證,它的累加權重就是n+1,累加權重越大的節點被選擇的概率越大,可以設定不同的規則來確定累加權重與被選擇概率之間的具體關係,例如正比關係。

那麼累加權重怎麼確保“懶惰”節點不容易被選中?懶惰的節點所在的路徑上的節點的累加權重都比較小,因爲懶惰節點的存在使得路徑變短,根據規則,節點被選擇的概率與累加權重正比,因此被選擇的概率就變小了,

雙花問題:

雙花在IOTA中可以是攻擊者付款給商家得到商品後,攻擊者簽發了另外一筆雙花的交易,攻擊者同時發送大量較小的交易區去驗證這筆雙花交易,在目前階段,考慮整個IOTA網絡中到的節點數量和交易數量較少,一旦某個惡意用戶擁有較大的算力後,就能夠與整個IOTA網絡抗衡,從而雙花攻擊成功,因此前期引入中心化的仲裁者來幫助共識的達成,凡是被“仲裁者”直接或者間接驗證過的交易就是完全確認交易,但是隨着網絡擴大,就可以去除“仲裁者”使得其去中心化。

Byteball共識機制:

單元確認規則:

ByteBall的區塊結構也是DAG,同樣是一個單元一個交易,連接各個單元的有向邊就是表明他們之間的引用關係,這個和IOTA類似。但是不同的是,Byteball引入了見證人和主鏈來實現共識,從而對交易進行排序,見證人是一類特殊的用戶,他們由社區選舉而產生,每一個用戶可以選擇12個見證人組成自己的見證人列表,見證人往往需要具備以下條件:(1)擁有一個公衆都知道的真實ID,可以是人或機構,(2)在社區有較高的知名度,(3)可信,(4)系統出錯,願意犧牲,(5)保證7*24在線時間,滿足條件的個人或者機構可以提出申請,讓自己成爲新的見證人,同時說服用戶,讓他們被選舉成功。在Byteball中,用戶發出新單元時,要求相同地址發佈的所有單元應當直接或者間接包含該地址之前所有的單元,也就是相同的地址的所有單元連通,並且一筆交易可以同時驗證多筆交易,同時設定單元兼容規則,單元兼容定義:如果兩個單元的見證人列表的差別最多隻有一項,就是單元兼容,Byteball要求新發出的單元只能引用與自己兼容到的單元;在Byteball中,凡是超過一半的見證人直接或者間接確認的單元就是被視爲合法單元。

主鏈:

主鏈是在指定用戶所建DAG圖中沿着子-父鏈接找到一個單鏈,可以把單元都關聯在一起。我們從任一個頂點開始,可以構建一個主鏈,如果以相同的規則在兩個不同的頂點選擇主鏈,這兩條主鏈在回溯過程中一旦相交,它們會在交點之後完全重合,重合部分稱爲穩定主鏈。最壞的情況是兩個主鏈在創世單元相交。所有的單元要麼直接在這條穩定主鏈上,要麼從穩定主鏈的單元上沿着DAG的邊緣通過少量跳躍達到,因此穩定主鏈可以在兩個衝突的無序單元之間建立總序。首先,給直接位於穩定主鏈上的單元做個索引,創世單元的索引是0,創世單元的子單元索引爲1,以此類推,沿着穩定主鏈給主鏈上的所有單元分配索引,對於不在穩定主鏈上的單元,我們找到第一個直接或者間接引用此單元的的主鏈單元,這樣就給每一個單元分配了一個主鏈索引。然後,給定兩個單元,擁有較小主鏈索引的單元就被認爲是更早生成的,如果兩個單元的主鏈索引相同並且存在衝突,則擁有較小哈希值的單元有效。

穩定點擴展:(待補充)

當獲得新單元時,每一個節點會持續追蹤自身的當前主鏈,因爲他們將要基於當前的所有無子單元構建新單元,因爲網絡的原因,不同節點的主鏈不同,可能看到的是不同的非穩定單元集合。穩定點擴展的本質是在當前穩定點的某一條子鏈路徑上出現超過一半的見證人是,就可以確定穩定點能夠朝着當前子鏈擴展。

雙花問題(待補充):

如果大多數見證人與攻擊者合謀,攻擊者將影子鏈發送給超過一半的見證人,這些惡意見證人在影子鏈上發佈單元,則攻擊者有可能攻擊成功。

Hashgraph共識機制:(待補充)

Hashgraph 是一種數據結構和共識算法,具有高吞吐量和異步拜占庭容錯( ABFT )的特點,使得 Hashgraph 在公鏈和私有鏈領域都有潛在的使用價值,並且,在保證去中心化的同時不需要繁重的工作量證明。

Hashgraph用的是gossip protocol,原理簡單說來就是消息像八卦一樣告訴自己的鄰居,鄰居再告訴他的鄰居,這樣一直廣播出去,直到全網都知道這個消息,過程如下:

  • 1.Hashgraph中的每個節點都可以將新創建的交易和從其他人那裏接收到的交易的簽名信息(event)傳播給其他隨機選擇的鄰居。(如何定義鄰居呢?)
  • 2.這些鄰居將收到的事件與從其他節點收到的信息聚合成一個新事件,然後將其發送給其他隨機選擇的鄰居。
  • 這個過程一直持續到所有節點都知道在開始時創建或接收的信息。

由於八卦協議的快速收斂性,每條新信息都可以快速到達網絡中的每個節點。gossip protocol的傳播歷史可以通過有向圖來說明,每個節點維護一個圖,表示每次交易的轉發者/序列。一些重要的概念:Hashgraph假設:不到1/3的節點是拜占庭節點(作弊節點,延遲節點,丟消息節點),那麼如何確認交易呢:每個節點可以根據是否有超過全網2/3的節點(也就是目擊者)來確定交易是否有效。因爲FLP不可能定理:在網絡可靠且存在節點失效的異步分佈式系統中,不存在一個可以解決一致性問題的確定性算法;在異步系統中,即使在僅有一個故障節點的簡單情況下,不可能存在確定性的共識協議。在有拜占庭節點或惡意節點的場景下,共識協議要麼是非確定性異步(典型的PoW),要麼是確定性非完全異步(典型的PBFT)。PBFT(實用拜占庭容錯)大大優化了消息傳播的複雜度(節點通信基本都是同步的),但是實際使用中差不多也就支持到100個節點就是極限了,因此BFT算法只適用於非公鏈場景。Hashgraph對共識定義做了一些放寬,本來應該在有限輪通信之後,會取得共識,Hashgraph是在極小概率下共識算法可能會無限執行,但這一概率幾乎爲0.Hashgraph的共識算法是非確定性的,但那是能保證最終確定性,同時因爲所有節點都是對等節點,避免了潛在的DDOS攻擊風險。

幾種聯盟鏈的介紹:

corda:

Corda是R3聯盟推出的金融聯盟“類區塊鏈”技術架構。Corda中同樣是用交易組成賬本,但並沒有區塊,這個和傳統區塊鏈結構是個很大的不同。交易僅在參與方和公證人間傳播。公證人是交易雙方共同選擇出來的,具有高度可信的特徵。公證人負責驗證數據的有效性和驗證數據唯一性。由於Corda選擇了最高安全性的公證人模式,因此在跨賬本消息處理上,變得較爲簡單。僅需選取不同賬本的交叉公證人或者強行指向同一個驗證人且讓其賬本同步即可安全的驗證跨賬本消息。

fabric:

Hyperledger Fabric是IBM 推出的企業級區塊鏈開源架構方案。Fabric定義了鏈、Peer、通道、共識服務的概念。鏈代表了賬本和對應的共識服務。一個Peer可以擁有多個邏輯賬本,並且可以參與多條鏈。通道是將Peer連接共識服務的虛擬通信方式。共識服務既是可信的與鏈無關的公共服務。Fabric的擴展性上主要得益於Peer可以參與多個賬本。Fabric強調Peer的隔離性,如Peer之間的事務隔離、賬本隔離。同時也有不支持跨鏈路由,不支持跨鏈事務,跨鏈只讀的特點。

Cosmos:

Cosmos是Interchain Foundation的跨鏈開源項目。Cosmos是專注於解決跨鏈資產轉移的區塊鏈網絡。網絡主要由兩部分組成,Cosmos Hub和若干個Zone。每個Zone可以看做是單獨的區塊鏈空間。每個Zone會和Hub保持狀態同步。Hub通過去中心化的驗證人組來保證安全性,驗證人組有罰金託管機制,它是唯一的多資產中心賬本,並負責保證各類資產在不同Zone轉移的同時,資產總量不變。Hub既是中繼鏈。Zone之間的跨鏈通信主要是通過與Hub之間的IBC協議來實現。Zone1向Zone2做跨鏈消息時,Zone1先生成消息包,並將其證明發布在Hub上,接下來Hub會生成Zone1的跨鏈消息包已在Hub上的存在證明的證明發佈於Zone2,接下來Zone2收妥消息包,並給出證明發佈於Hub上,最後,Hub再給出Zone2的收妥證明的證明發佈於Zone2。完成整個跨鏈消息傳遞。

PolkaDot

PolkaDot是Web3基金會的跨鏈協議開源項目。由Parity團隊的Gavin Wood主導開發。PolkaDot是未來Web3.0時代的基礎設施之一,是一個未來“區塊鏈互聯網”的基礎協議。PolkaDot協議強調解決當前區塊鏈技術的伸縮性和隔離性問題,以提供衆多異構區塊鏈系統之間去信任、去中心化的通用的互訪問性、互操作性爲目標。PolkaDot與Cosmos的不同在於,Cosmos專注於跨鏈價值轉移,而PolkaDot則是更爲通用更具備普適性的跨鏈協議,遠景更爲宏大。PolkaDot Platfrom是對PolkaDot協議的一個實現。它是中繼鏈實現模式。它把通過PolkaDot進行跨鏈交互的區塊鏈稱爲平行鏈。可以認爲中繼鏈是多個平行鏈的集合。中繼鏈上分爲不同的驗證人組來形成共識網絡,同時每個平行鏈也擁有自己的驗證人組,該平行鏈的驗證人組也參與到中繼鏈的鍛造中。平行鏈的收集人負責收集執行平行鏈中的跨鏈消息組成候選塊,並提交給驗證人。驗證人組會對候選區塊進行驗證和發佈。中繼鏈通過隊列的機制將跨鏈消息在不同的平行鏈之間進行轉移,通過中繼鏈的區塊鍛造達成消息的跨鏈傳遞和跨鏈狀態同步。

InterLedger

InterLedger是由Ripple公司主導發起的跨賬本價值傳輸開放協議。InterLedger不是區塊鏈,它是連接各類賬本的支付標準、統一協議。IntrLedger專注於跨賬本間資金流動領域。各類賬本通過去信任的第三方“連接器”來互相連接。InterLedger協議是哈希鎖定的實現模式。它會爲交易參與的雙方實現資金的鎖定與託管。當交易雙方達成交易共識時,跨賬本的資金流動馬上原子性發生。

安鏈

由衆安科技推出的企業級區塊鏈產品。其中提出了鏈路由,定義了多區塊鏈之間的通信協議、路由協議,同時在其之上維護區塊鏈間的網絡拓撲地圖。目標是解決區塊鏈之間的連接與分發問題。鏈路由可以多層次組合構成分層網絡結構。簡而言之,鏈路由僅支持多鏈路由,不支持跨鏈互操作。

性能比較可以參考下圖:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章