從0開始學區塊鏈:DAG共識算法?

在先前的四篇關於共識算法的文章裡,其實主流的共識算法專員大致都講了一下,原本計劃是這篇開始講些關於虛擬機或者區塊鏈存儲相關的東西了,但是後來仔細想了一下,專員還是想把市面上基本上有的共識算法先系統性的聊一下。

然後專員就想到了Hashgraph、xdag以及iota這幾個項目,這幾個項目有一個共同點,他們都是用了基於DAG的共識算法,專員也曾經聽到過一種說法,說POW,POS也好,還是最近特別火的DPOS也好都是基於區塊的共識算法,屬於區塊鏈2.0的共識算法,但是DAG且不一樣,他確拋棄了傳統的區塊的概念,採用了基於交易的共識算法,也就是我們今天要說的DAG算法

說這個之前,專員也要向大家介紹一個東西,想必讀過《數據結構》這門課的,學計算機相關專業的同志們,都知道一個數據結構-----“圖”。

而DAG的中文翻譯過來的意思就是說“有向無環圖”。如下圖所示就是其中一種“有向無環圖”

大家學過計算機的應該會知道,沒學過也沒啥大問題,專員來解釋一下就好了,在圖論中,圖分為有向圖和無向圖兩大類,何為有向圖,很簡單就是像上圖一樣的,只能單方向的行走,換到現實中也就是我們所說的單行線,比如4能到3,但是3無法到4,3只能到6或2;而無向圖,其實就是在每個節點的連接中是沒有方向的,只要連接便可互通。

其次,在DAG中,還有一個形容詞叫“無環”,無環很簡單的就是說所有節點無法構成一個環路,比如說如上圖所示,4能到3,3能到6,6缺不能到4,這樣就沒辦法構成一個互通的環,無環圖其實就是說在整個連通圖中,所有的節點都沒辦法構成一個環。而這樣,在有向無環圖中總可以從一個節點出發,都存在一條有向邊指向這組頂點中的另一個,這個就是我們說的有效路徑。

因此我們可以想象,DAG有向無環圖,其實有以下的特點:

1. 不斷前進,不會後退。

2. 時而分叉,但也會聚合。

而其實,所有所謂的基於DAG的共識算法,便是運用了這種思想,是一種基於圖的現方式,之所以不允許有向環的出現,是因為DAG可以保證節點交易的順序,可以通過上面介紹過的有效路徑來找到那根主鏈。如果出現了有向環,那系統就亂了。

假如說沒有有向環的話,DAG中可能會出現多條有效路徑連接各個頂點。如下圖所示

從0開始學區塊鏈:DAG共識算法?

總能找到一個最長的主鏈,也就是我們所說的最長的有效路徑。而DAG也做到了我們所謂的“Blockless”的模式,我們針對交易也無需再進行等待出塊,所有的共識都是基於交易,在DAG中將交易作為基本單元進行存儲,

當然,其實DAG也會存在雙花的可能性,也是上面我們提到過的特性“分叉”引起的,但它在確認最長的有效路徑以後會自動恢復。同時,DAG也是異步共識,也是大大提升了所謂的交易性能,也就是TPS的問題。

但是我們可以想象一個問題,再所謂的搞TPS的性能之下,我們何時才能知道一個最長的有效路徑的確認,其實也就是說,DAG作為一個謠言式的廣播算法,何時才能真正的確認一個交易被真正的寫入,也就是說交易時長如何控制

第二,也是就是網絡傳輸數據量大幅度增加,需要不斷的進行通信來進行有效路徑的更新迭代

因此其實,專員覺得,DAG作為一個新的共識算法,的確解決了很多一部分傳統的共識算法所不能解決的一些列問題,但是本身也是有部分問題的存在的,可能還是需要去不斷的探索和研究,

但是技術一直都是在發展的,我們需要做的就是對技術保持一顆敬畏之心,堅信區塊鏈的發展,專員也會不斷的對各種區塊鏈技術進行研究和學習,也會爭取更大家做更深入的分享以及探討。


分享到:


相關文章: