1. 程式人生 > >有向無環圖(DAG)技術:超越區塊鏈的分散式賬本

有向無環圖(DAG)技術:超越區塊鏈的分散式賬本

一、起源

DAG(Directed Acyclic Graph,有向無環圖)是一種資料結構,最早提出在區塊鏈中加入DAG概念作為演算法,是在2013年的bitcointalk論壇,被稱作為“Ghost協議”,這一提議也是為了解決當時比特幣的擴容問題。後來,在NXT社群,又有人提出了DAG of block,將DAG的拓撲結構用來儲存區塊,解決效率問題。那時對於DAG的應用,還停留在類似於側鏈的一個認識。

眾所周知,擴充套件性是當前區塊鏈技術急需解決的難點之一。談到擴充套件性,首當其衝的便是區塊鏈的擴容問題,當區塊鏈上的交易頻繁時,區塊鏈的效能也呈會線性下滑。參考以太坊的容量,僅僅一個加密貓遊戲就讓區塊鏈不堪重負,造成了巨大擁堵。所以,如何有效地擴容,成為了當下區塊鏈技術的一大重點。

在PoW演算法的區塊鏈中尤其如此,由於PoW機制是將交易資料打包成區塊,在由算力高的節點進行記賬,這種演算法相對於PoS速度較慢,交易量上升更加會影響到整體的確認速度,以比特幣為例,一開始比特幣區塊鏈大小為1M,後來交易量的上升使得社群不得不考慮擴容方案,還因此引發了擴容之爭與分叉事件。

PoS在確認速度上大為改善,但仍然難以跟上需求。

同時,PoW和PoS演算法都有趨向於中心化的理論風險,當擁有的算力或者代幣達到了一定數量時,區塊鏈就會變得中心化。

DAG也是一種分散式賬本技術,與區塊鏈不同。因為區塊鏈是由區塊組成的一條單鏈,而DAG則是由交易組成的網路。但本質上,兩者卻有著很大的相似之處。DAG中的交易,就可以看做是一個個“區塊”,只不過這些區塊也可以作為節點,形成一個複雜交織的網路拓撲結構。

DAG與PoW、PoS相比,DAG有著更加高的效能,甚至可以說交易越多、節點越多,處理速度越快。

  • 工作原理

DAG技術如何在作為一個分散式賬本進行應用呢?IOTA是應用DAG技術較為知名的一個專案,它將DAG進行了改進,並提出Tangle(纏結)方案。這裡以IOTA作為例子來說明DAG的執行原理。

在DAG的網路中,每一個節點都可以是交易者和驗證者,因為DAG中的交易處理,正是由交易節點本身來共同完成。

而且,IOTA的Tangle賬本在保證高速處理交易的同時,並不需要支付交易費用。不過,這並不代表上面的交易時免費的,這是因為在這個賬本中,每一筆交易的發起都需要線驗證另外兩筆隨機交易,並將自己發起的交易指向這兩筆交易,這樣在區塊鏈上礦工所承擔的責任就分配給了所有的交易者。

DAG這種處理交易的方式,可稱作為非同步處理模式。

Tangle賬本是建立在DAG網路拓撲結構上的去中心化賬本,利用這一結構,所有點都能成為“礦工”,而且每個節點所承擔的交易數量並不會超負荷,這樣就使得交易量越大效率越高。

如果像IOTA一樣,將其運用於微小交易,那麼可參與的節點將會更多。區塊鏈承擔的交易量每秒可以萬計算,而理論上DAG卻能夠達到每秒以億計算。

  • 優缺點

DAG的優點非常明顯,它沒有區塊鏈需要擔憂的擴容問題,因為隨著交易量和使用者的增長,它的處理速度只會更加快速;同時無交易費這一點可以迅速提升交易量,增強去中心化。

更強的效能和更高程度的去中心化,是DAG領先於區塊鏈,以及重大創新的部分。然而,DAG也有著很大的隱患。

在安全性上,DAG要比PoW脆弱得多。在PoW共識機制中,算力達到51%,才能夠發起攻擊;而攻擊DAG,以Tangle為例,發起一筆交易驗證兩筆交易,理論上來說,只要達到34%的算力,就能夠攻擊整個DAG網路了。

而且,因為每個人都能處理交易,如果一個擁有高算力的節點通過發起巨量的交易,從而獲得更多驗證權,就很容易降低DAG網路的效率,甚至發起攻擊;而無交易費使得發起和驗證的成本為零,同時海量的節點更增加了這種攻擊風險。

此外,在掌握高算力的情況下,也很容易出現“雙花”現象,“雙花”即雙重花費,指一筆錢花了兩次。攻擊者可以同時發起兩筆交易,利用非同步處理資料和節點間的資訊差來達到這個目的。

DAG作為區塊鏈的一個有力競爭者,有著極大的創新之處,但同時也具有明顯的缺陷。不過,作為一個年輕的資料結構,DAG可以結合更多的新技術來揚長避短。目前使用這一技術的專案,有知名的“DAG三駕馬車”IOTA、位元組雪球、NANO。

目前,有越來越多的DAG專案正在發展,有樂觀者認為DAG才是真正的區塊鏈3.0,也有人認為區塊鏈才是更加完善的去中心化賬本。不可否認的是,DAG的確是區塊鏈在去中心化和拓展問題上的強勁對手。

文章來源:BB財經(www.bbcaijing.cn),如有侵權請聯絡刪除!