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