區(qū)塊鏈已經(jīng)進(jìn)入DAG時代?DAG也許是真正的區(qū)塊鏈3.0
從15年開始,區(qū)塊鏈概念被單拎出來,這之前區(qū)塊鏈還只是比特幣技術(shù)里的一個數(shù)據(jù)結(jié)構(gòu),中本聰白皮書里把block和chain連一起的時候也只是a chain of blocks 。隨著以太坊去中心化計算機(jī)的概念提出來,很多人開始把以太坊稱作區(qū)塊鏈2.0,而比特幣被歸到了區(qū)塊鏈1.0。至于區(qū)塊鏈3.0,市場上為了搶奪區(qū)塊鏈3.0的冠名權(quán)打的不可開交,沒準(zhǔn)會是DAG。
DAG(Directed acyclic graph),有向無環(huán)圖,是計算機(jī)領(lǐng)域一個常用的數(shù)據(jù)結(jié)構(gòu),因為獨特的拓?fù)浣Y(jié)構(gòu)所帶來的一些特性,經(jīng)常被用到處理動態(tài)規(guī)劃,導(dǎo)航中尋求最短路徑,數(shù)據(jù)壓縮等場景中。
第一次提出DAG跟區(qū)塊鏈結(jié)合是在Nxt社區(qū),可以發(fā)現(xiàn)DAG最初出現(xiàn)就是為了解決區(qū)塊鏈的效率問題。比特幣的效率一直比較低,基于工作量證明共識下的出塊機(jī)制是一個原因,由于鏈?zhǔn)降拇鎯Y(jié)構(gòu),整個網(wǎng)絡(luò)中同時只能有一條鏈,導(dǎo)致出塊無法并發(fā)執(zhí)行。社區(qū)有人提出DAG的拓?fù)浣Y(jié)構(gòu)來存儲區(qū)塊,這個時候更多還是類似側(cè)鏈的解決思路,不同的鏈條存儲不同類型的交易,這樣降低出現(xiàn)雙花的可能,在之后某個節(jié)點需要合并的時候,幾個分支再歸并到一個區(qū)塊。
簡單介紹下,目前比特幣區(qū)塊鏈存儲結(jié)構(gòu)如下,每個區(qū)塊存儲著當(dāng)前時間段所有的交易,礦工一直在拼命爭奪某個時段交易的打包權(quán)利,把當(dāng)前時間段所有的交易打成一個區(qū)塊。目前比特幣網(wǎng)絡(luò)平均出塊時間在10分鐘。
比特幣區(qū)塊鏈存儲結(jié)構(gòu)
而Nxt社區(qū)提出,改變區(qū)塊的鏈?zhǔn)酱鎯Y(jié)構(gòu),變成區(qū)塊DAG。在區(qū)塊打包時間不變的情況下,網(wǎng)絡(luò)中可以并行的打包N個區(qū)塊,網(wǎng)絡(luò)中的交易就可以容納N倍。
Nxt社區(qū)提出的DAG of blocks
發(fā)現(xiàn)這個時候DAG跟區(qū)塊鏈的結(jié)合還是停留在側(cè)鏈的思路,不同類型的交易可以并行在不同的鏈條進(jìn)行,達(dá)到提升性能的目的。這時候的DAG還是有區(qū)塊的概念。
我們發(fā)現(xiàn)不管是最近異軍突起的ITC,風(fēng)頭正盛的IOTA,還是備受矚目的Byteball,都提出了blockless無區(qū)塊的概念。不管是比特幣還是以太坊,我們總會提到出塊速度這樣的概念,比特幣每十分鐘才出一個塊,6個出塊確認(rèn)就要一個小時,以太坊好很多,但是出塊速度也要十幾秒。為什么一定需要區(qū)塊呢?
15年社區(qū)有提出DAGCoin的概念,DagCoin: a cryptocurrency without blocks。這里把區(qū)塊和交易融合到了一起。我們回想下比特幣網(wǎng)絡(luò)中區(qū)塊和交易的概念,很多筆交易先打包到區(qū)塊中,區(qū)塊和區(qū)塊之間通過prehash來維護(hù)全網(wǎng)的交易順序。而DAGCoin的思路,讓每一筆交易直接參與維護(hù)全網(wǎng)的交易順序。這樣交易被發(fā)起后直接跳過打包區(qū)塊的階段,直接融入全網(wǎng),如此達(dá)到所謂的blockless效果。這樣確實連打包交易出塊的時間都省去了,如前文提到的,DAG最初跟區(qū)塊鏈的結(jié)合就是為了解決效率問題,現(xiàn)在不用打包確認(rèn),交易發(fā)起后直接進(jìn)入確認(rèn)網(wǎng)絡(luò),理論上效率自然提高很多。
自此,以blockless獨樹一幟的DAG區(qū)塊鏈雛形基本形成。又以IOTA和Byteball在市場上的表現(xiàn)最為耀眼,而近期最吸睛的,無疑是以黑馬之姿亮相市場的ITC。
DAG系的區(qū)塊鏈有些概念很有趣,了解這些概念更容易理解DAG技術(shù)。
1 從概率的角度來看雙花問題
在比特幣網(wǎng)絡(luò)中,通過UTXO模型,一個用戶對自己可以解鎖的UTXO只能發(fā)起一次轉(zhuǎn)賬,如此解決雙花問題。比特幣白皮書中也有提到,有可能多個礦工會同時解決哈希難題,獲得同一時間段的交易打包權(quán)就是出塊權(quán),會有臨時分叉的可能性。從這個角度來看,比特幣網(wǎng)絡(luò)中所謂的"global ledger state"也是一個不確定的狀態(tài)。某一筆交易狀態(tài)的確認(rèn)是由其后掛靠交易的數(shù)量決定的,其后掛靠的交易越多,交易狀態(tài)回滾的概率越低,這筆交易越安全。
2 網(wǎng)絡(luò)寬度
IOTA的tangle網(wǎng)絡(luò)
DAG網(wǎng)絡(luò)一個重要的問題就是解決網(wǎng)絡(luò)寬度,DAG網(wǎng)絡(luò)中,每筆交易被確認(rèn),需要鏈接到已經(jīng)在網(wǎng)絡(luò)中存在的并且比較新的交易,如果都選擇網(wǎng)絡(luò)中比較早的交易,會導(dǎo)致網(wǎng)絡(luò)寬度過寬,新的交易難以得到確認(rèn)。理想的狀態(tài)是,新的交易發(fā)起時,選擇網(wǎng)絡(luò)中已經(jīng)存在的并且比較新的交易做鏈接確認(rèn),這樣網(wǎng)絡(luò)的寬度保持在一定范圍,能讓新的交易有足夠快的確認(rèn)時間。
那么DAG究竟有哪些特點,居然讓ITC市值快速攀升,上線僅一個月價格漲幅一度超過552%。
1.交易速度快
如上文提到,由于DAG摒棄了區(qū)塊概念,交易直接進(jìn)入全網(wǎng)中,所以交易速度預(yù)期比基于pow和pos的需要出塊的區(qū)塊鏈會快不少。
2.無需挖礦
DAG把交易確認(rèn)的環(huán)境直接下放給交易本身,無需由礦工打包成區(qū)塊后同意交易順序。所以DAG網(wǎng)絡(luò)中沒有礦工的角色。
3.極低手續(xù)費
在DAG網(wǎng)絡(luò)中,不會出現(xiàn)類似比特幣和以太坊因為礦工的激勵機(jī)制帶來的價格競爭。適合小額高頻交易。
作為國內(nèi)首個基于DAG結(jié)構(gòu)的區(qū)塊鏈項目,ITC的發(fā)展已經(jīng)引起了很多關(guān)注,目前已吸引FBG、連接資本、ChainFunder等眾多專注區(qū)塊鏈技術(shù)的專業(yè)投資機(jī)構(gòu),相信接下來對DAG的技術(shù)討論也會變多。從技術(shù)角度來看,DAG給我們提供了完全不一樣的區(qū)塊鏈實現(xiàn),高性能和無手續(xù)費這些點確實引人注目。隨著社區(qū)對DAG技術(shù)的進(jìn)一步完善和發(fā)展,也許,DAG會是真正的區(qū)塊鏈3.0呢。