【区块链基础知识系列】 第9课 一文诠释什么是DAG
一、什么是DAG?
有向無環圖(Direct Acyclic Graph或DAG)是可以說是近幾年區塊鏈項目的技術熱點之一。不少業內人士都認為這項技術有可能在根本上解決區塊鏈的擴容問題,因此相關的項目都有較高的熱度。然而,由于其更高的技術門檻和開發難度,采用這項技術的區塊鏈項目仍然非常少。目前上線的DAG公鏈,相對成熟的IOTA,Byteball和Nano。
首先簡單和Blockchain比較一下。下面這張圖是一條典型的blockchain:
下面是一個DAG的大概模樣:
DAG:Directed Acyclic Group,中文譯為"有向無環圖"。如果一個有向圖從任意頂點出發,都無法經過若干條邊回到該點,則這個圖是一個有向無環圖。DAG不一定能轉化成為樹,但是樹一定是一個DAG。所以Blockchain可以被認為是DAG的一個特殊樹形結構。
在區塊鏈的應用上,DAG圖的每個頂點代表在某一個時間新挖出的區塊。一般的線性區塊鏈是DAG的一種特殊情況,也即每個時間段整個系統只能產生一個區塊。不同的是,DAG允許不同節點按自己的節奏生成區塊,只需要每個區塊選擇一個或多個區塊作為自己的子塊。DAG本身是一個已經在大規模應用的技術,包括Big Data, Apache Spark之類。所以從基本結構上可以看出來,相對傳統的Blockchain技術,DAG的網絡延展性和吞吐量都可以做到非常大。
不過DAG技術在區塊鏈里應用的時候, 其實各家的技術實現都會有一點點區別。包括IOTA,Byteball和Nano,算是目前主要的幾種模式。不過在大概在區塊鏈里的實現中, 共同的一點是一條transcation(交易)被分為send(送出)和receive(收回)兩條記錄來異步處理,所以就避免了區塊這個問題。和BCH之類不同,目前要做1GB block。未來1TB block避免了區塊的臃腫,也減少了block producer的時間。DAG的尾端可以平行增加任意多的新數據,因此天生具有很強的交易吞吐量。這一點是完勝線性區塊鏈。
二、DAG常見問題
DAG異步處理數據的特征導致攻擊者可能利用節點間的信息差進行雙花。如果兩個頂點間沒有明確的父子關系,攻擊者可以分別在只看到這兩個頂點中的一個的不同節點處,對同一筆存款進行雙花。
第二就是影子鏈的問題,DAG允許多重并行交易的特征。攻擊者可能暗中讓多節點共謀生成一條高權重的影子鏈,并且時不時地將影子鏈跟主鏈進行對接以逃避檢測算法。這樣子在極端情況下,影子鏈可以代替主鏈作為全網共識。
第三點,目前DAG的模式,導致很多邊緣節點的交易,可能沒法得到足夠多的確認。
除了這三點,還有很多安全問題,比如IOTA也是多次被攻擊。
三、安全問題
目前上線的DAG公鏈,相對成熟的IOTA,Byteball和Nano。
Byteball本身指定了12個見證人節點,由見證人來確定主鏈選擇,來防止影子鏈問題。同時它要求從創始塊開始確定一條所有參與者公認的主鏈,而將其他的頂點看做是附屬在這條主鏈上。每一條主鏈對應著一種不同的主觀上的時間順序,從而對應著不同的雙花交易的確認。
IOTA的方式有些區別。把主鏈的概念以tangle(扭結)的形式來描述。扭結實際上代表厚度任意的主鏈。在新頂點產生的時候,每個新頂點會選擇2個舊頂點作為父頂點,并進行PoW挖礦。IOTA在確定扭結時,按照所有的父頂點關系進行權重計算,給予較多子頂點支持的父頂點更多的權重。 IOTA對于影子鏈攻擊的防范主要是通過算法來排除和概率計算,不過這個算法并沒有很好的理論證明。
Nano的DAG架構比較特別,每個賬戶是一條單獨的鏈。這些鏈只有每當有發送或者接受轉賬時會更新相關交易的信息,這樣每條鏈都只處理跟自己賬戶有關的交易。Nano采用的共識是DPoS+PoW。交易出現爭議就用DPoS解決爭端,用PoW來抵御垃圾交易。一般交易所就一個Nano錢包賬戶,進出的交易量比較大,導致交易所必須進行大量的PoW挖礦。目前的解決方案是Nano會手動免除交易所的PoW挖礦。
這三條公鏈,Byteball可以實現有限的智能合約,主要是針對各種支付場景;IOTA應該會在年內由第三方實現;Nano只做支付。
此外,另一個已經上交易所并聲稱支持智能合約的DAG公鏈是Constellation。Constellation已經上線測試。應該是使用的交易序列,來支持智能合約的實現。同時其智能合約使用的是Scala語言。
四、總結
總的來說, DAG結構目前只適合特定方向的應用場景,自身也有非常多的問題需要解決,共識機制也才剛剛開始完善,很有發展空間。目前我覺得對DAG做進一步的優化是一個趨勢,即所謂的路由。我個人認為在一個網絡里,路由最重要,路由最主要的作用一個是防止環路,一個是找到最優路徑。有了路由,整個網絡才能比較優化地處理更大的數據量,更加穩定和安全.
由于IOTA是為了規模應用而建立的,因此出于安全原因,采用了一種自主的和臨時性的共識機制:協調器。每隔兩分鐘,IOTA基金會創建一筆里程碑(milestone)交易,所有經它確認的交易立即被認為具有100%的確認置信度。協調器在IOTA網絡早期發展階段充當了一種保護機制,直到完整的Tangle分布式共識算法開始發揮作用時,IOTA基金會將關閉協調器,讓Tangle完全依靠自身來演變和發展。這將在迭代階段發生,當網絡成熟到可以擺脫協調員時,網絡本身也會立即變得更加效率。
總結
以上是生活随笔為你收集整理的【区块链基础知识系列】 第9课 一文诠释什么是DAG的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教你发行自己的以太坊ERC20 T
- 下一篇: 区块链技术应用的关键问题和挑战