DAG(有向無環(huán)圖)是不同于主流區(qū)塊鏈的一種分布式賬本技術(shù),把同步記賬提升為異步記賬,被不少人認(rèn)為可以解決傳統(tǒng)區(qū)塊鏈的高并發(fā)問題,是區(qū)塊鏈從容量到速度的一次革新。
DAG:Directed Acyclic Graph,中文意為「有向無環(huán)圖」。DAG原本是計(jì)算機(jī)領(lǐng)域一種常用數(shù)據(jù)結(jié)構(gòu),因?yàn)?的拓?fù)浣Y(jié)構(gòu)所帶來的優(yōu)異特性,經(jīng)常被用于處理動(dòng)態(tài)規(guī)劃、導(dǎo)航中尋求短路徑、數(shù)據(jù)壓縮等多種算法場(chǎng)景。
DAG技術(shù)的起源
早在區(qū)塊鏈中引入DAG概念作為共識(shí)算法是在2013年,bitcointalik.org由ID為avivz78的以色列希伯來大學(xué)學(xué)者提出,也就是GHOST協(xié)議,作為比特幣的交易處理能力擴(kuò)容解決方案;Vitalik在以太坊紫皮書描述的POS共識(shí)協(xié)議Casper,也是基于GHOST POW協(xié)議的POS變種。
后來NXT社區(qū)有人提出用DAG的拓?fù)浣Y(jié)構(gòu)來存儲(chǔ)區(qū)塊,解決區(qū)塊鏈的效率問題。區(qū)塊鏈只有一條單鏈,打包出塊無法并發(fā)執(zhí)行。如果改變區(qū)塊的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),變成DAG的網(wǎng)狀拓?fù)淇梢圆l(fā)寫入。在區(qū)塊打包時(shí)間不變的情況下,網(wǎng)絡(luò)中可以并行打包N個(gè)區(qū)塊,網(wǎng)絡(luò)中的交易就可以容納N倍。
Nxt社區(qū)提出的DAG of blocks
2015年9月,Sergio Demian Lerner發(fā)表了 《DagCoin: a cryptocurrency without blocks》一文,提出了DAG-Chain的概念,把DAG網(wǎng)絡(luò)從區(qū)塊打包這樣粗粒度提升到了基于交易層面,但DagCoin本身是一篇論文,沒有代碼實(shí)現(xiàn)。
DagCoin的思路,讓每一筆交易都直接參與維護(hù)全網(wǎng)的交易順序。交易發(fā)起后,直接廣播全網(wǎng),跳過打包區(qū)塊階段,達(dá)到所謂的Blockless。這樣省去了打包交易出塊的時(shí)間。如前文提到的,DAG初跟區(qū)塊鏈的結(jié)合就是為了解決效率問題,現(xiàn)在不用打包確認(rèn),交易發(fā)起后直接廣播網(wǎng)絡(luò)確認(rèn),理論上效率得到了質(zhì)的飛躍。DAG進(jìn)一步演變成了*拋棄區(qū)塊鏈的一種解決方案。
一句話來概括:DAG是面向未來的新一代區(qū)塊鏈,從圖論拓?fù)淠P秃暧^看,從單鏈進(jìn)化到樹狀和網(wǎng)狀、從區(qū)塊粒度細(xì)化到交易粒度、從單點(diǎn)躍遷到并發(fā)寫入,這是區(qū)塊鏈從容量到速度的一次革新。
DAG技術(shù)的優(yōu)勢(shì)
傳統(tǒng)區(qū)塊鏈和DAG的區(qū)別,簡單的說:
1)單元:區(qū)塊鏈組成單元是Block,DAG組成單元是TX(交易);
2)拓?fù)洌簠^(qū)塊鏈?zhǔn)怯葿lock區(qū)塊組成的單鏈,只能按出塊時(shí)間同步依次寫入,好像單核單線程CPU;DAG是由交易單元組成的網(wǎng)絡(luò),可以異步并發(fā)寫入交易,好像多核多線程CPU;
3)粒度:區(qū)塊鏈每個(gè)區(qū)塊單元記錄多個(gè)用戶的多筆交易,DAG每個(gè)單元記錄單個(gè)用戶交易。
那么相比于比特幣等傳統(tǒng)的區(qū)塊鏈,這種機(jī)制有什么好處?
數(shù)據(jù)結(jié)構(gòu):通過DAG,每一筆交易就可以看作是一個(gè)區(qū)塊,沒有容量限制的問題,每一個(gè)區(qū)塊有多個(gè)指向,拓展性強(qiáng),因此能夠?qū)崿F(xiàn)數(shù)字貨幣較高的交易吞吐量(通過平行驗(yàn)證)。并且參與者越多,整個(gè)系統(tǒng)也會(huì)變得越來越安全和快速,確認(rèn)時(shí)間會(huì)縮短,交易也完成的越來越快。
共識(shí)機(jī)制:區(qū)塊鏈中添加下一個(gè)區(qū)塊需要多方進(jìn)行競(jìng)爭(zhēng),并獲取區(qū)塊獎(jiǎng)勵(lì)或交易手續(xù)費(fèi)。正因如此,共識(shí)和交易生成是分離開的,并且由網(wǎng)絡(luò)的一小部分人來完成,通常會(huì)設(shè)置較高門檻(就像比特幣一樣),這樣會(huì)導(dǎo)致進(jìn)一步的中心化(算力壟斷)。
在DAG系統(tǒng)中,交易者本身就是礦工,網(wǎng)絡(luò)中的每位參與者都能進(jìn)行交易并且積極參與共識(shí)。通過這種方式,驗(yàn)證就能同步進(jìn)行,網(wǎng)絡(luò)能夠保持*去中心化,不需要礦工傳遞信任,也不需要支付交易手續(xù)費(fèi)。
DAG的速度快,吞吐量高,但作為一個(gè)很年輕的數(shù)據(jù)結(jié)構(gòu),DAG技術(shù)的優(yōu)勢(shì)和創(chuàng)新速度已經(jīng)嶄露頭角,越來越多后繼基于DAG的創(chuàng)新項(xiàng)目和DAPP正*的迅速涌現(xiàn)。