DAG(有向無環(huán)圖)技術是區(qū)塊鏈領域的技術熱點之一。DAG技術相比于原來的區(qū)塊+鏈的數據結構有更快的交易速度以及更強的可擴展性,但由于其技術門檻和開發(fā)難度較高,在DAG技術上深耕的項目并不多見。我們希望能通過對具體項目原理的解析向讀者呈現出DAG技術的全貌,本期選定了XDAG作為分析案例。
作者:王帆 陳泓伊 指導:譚瑩 本期受訪者:XDAG核心開發(fā)者Frozen 支持機構(排名不分先后): 星球日報、火星財經、金色財經、陀螺財經、金牛財經、嘻哈財經、耳朵財經、零壹財經、巴比特、榮格財經、金塔財經、幣圈邦德、區(qū)塊財經、鏈條ChainHeadline 在圖論中,如果一個有向圖從任意頂點出發(fā)無法經過若干條邊回到該點,則這個圖是一個有向無環(huán)圖。 圖和樹一樣,都是一種數據結構,圖可以分為有向圖和無向圖,對有向圖進一步約束則形成有向無環(huán)圖,有向圖由有限個頂點和有向邊組成,每條有向邊都從一個頂點指向另一個頂點,無環(huán)則指的是從任意一個頂點出發(fā)都不能通過這些有向邊回到原來的頂點。. 01 .什么是DAG
因為有向圖中一個點經過兩種路線到達另一個點未必形成環(huán),因此有向無環(huán)圖未必能轉化成樹,但任何有向樹均為有向無環(huán)圖。
在XDAG的網絡中,其實是一個個動態(tài)的“局域網”的組合,所有的交易用戶隸屬于不同的“局域網”,不同的“局域網”聯合起來構成整個XDAG的網絡?!熬钟蚓W”建立的基礎是具有驗證交易(挖礦)能力的節(jié)點(這個節(jié)點可以是單個礦工,也有可能是礦場或礦池),當用戶發(fā)起交易時,會將交易發(fā)送到自己所在“局域網”的礦工,礦工會驗證數字簽名、資產余額、數據格式、數據完整性等信息,當遇到無效交易后,便會進行標記,然后礦工會打包確認好的信息并向全網發(fā)送,其他“局域網”的礦工收到后會驗證自己收到的這個數據包是不是合法的,如果都沒有問題,那么這些交易就會被承認。
在XDAG的網絡,主節(jié)點組成主鏈,主鏈是所有節(jié)點難度加和最高的一條。和比特幣網絡一樣,所有的交易都需要排序,那么也就是所有的節(jié)點是需要排序的,主節(jié)點的功能就是確定順序,除此之外,主節(jié)點還負責記錄挖礦收益,在XDAG中,每64s出一個塊,出塊同時獎勵礦工1024個xdag,但是主節(jié)點不記錄其他任何交易,因此可以將主節(jié)點看成是一個空塊,而其他的節(jié)點才負責記錄交易。主節(jié)點的產生需要挖礦,交易節(jié)點是系統(tǒng)自動生成。
DAG相比于區(qū)塊鏈來說,其實是圖和鏈的區(qū)別,對于鏈而言,無法只處理一個局部,因為鏈的入度和出度只有一個,不能把鏈上的節(jié)點拆成好幾個節(jié)點去處理,但是對于圖卻可以,因為圖可以有多個出度,那么可以同時處理多個出度連接的節(jié)點。
對于鏈式網絡而言,不是節(jié)點的處理能力不強,只是鏈式結構不能并行計算,浪費的時間其實主要為等待時間:一個是發(fā)起交易,需要將交易同步所有節(jié)點,另一個是當有一個節(jié)點確認,需要向全網同步。對于DAG而言則不存在這樣的問題,錢包發(fā)起交易時不需要等待自己之前有多少交易,只需要經歷局部校驗、全網廣播、其他局部校驗,相當于是把交易確認分散化,每一個節(jié)點都在做類似于拼圖的工作,把自己的和別人確認的交易拼接起來。
因此總結發(fā)現DAG有著以下幾個優(yōu)勢:
3.1交易速度塊
DAG實現的局部處理和并行結算可以使得交易速度大幅度提升。
3.2.拓展性強
因為各個節(jié)點無需等待同步其他的節(jié)點的數據就可計算使得記賬節(jié)點很容易答復延展,因此DAG很適用于物聯網類項目,例如機器微支付。
3.3.作惡難度更大
相比于鏈式結構,在DAG中惡意修改的難度會大很多,因為DAG擁有著很多的出度和入度,假如要修改某一個節(jié)點,那么對應的出入度都要進行修改。
盡管在前文中闡述了諸多DAG的優(yōu)點,但事實上,DAG也有自身的缺陷,DAG類項目也在各自使用不同的技術手段進行解決。
4.1 交易時長不可控
DAG本質是一種異步通訊,異步通訊所帶來最大的問題在于一致性不可控,在DAG模型中則在于交易確認時間完全未知。當然,某種程度上同樣可以認為在鏈式模型中,一個區(qū)塊被超過2/3以上節(jié)點數接受才算全網最終確認,因此最終確認時間同樣無法準確判斷。針對以上問題,XDAG采用了POW+64s固定出塊的方式。
4.2 網絡傳輸數據量大幅度增加
鏈式結構中僅僅賬本節(jié)點記賬,大量的錢包節(jié)點僅僅向一個賬本節(jié)點通訊即可,因此全網絡賬本節(jié)點的數量遠遠小于錢包節(jié)點。在這種情況下,所有的數據同步均在賬本節(jié)點之間完成,假設網絡中有M個賬本節(jié)點,每一條記錄在網絡中傳輸的次數為M+1。
DAG結構,在全網存在N個設備節(jié)點時(N成千上萬倍大于M),每一個消息都需要在設備間進行點對點通訊,因此對于任何消息的發(fā)送,網絡中都會存在N^2次數據發(fā)送(每一個節(jié)點都嘗試將信息發(fā)送給其他鄰居節(jié)點)。在未來DAG接入大量的物聯網節(jié)點后,這會對于記賬節(jié)點產生很高的要求。
4.3 影子鏈攻擊
DAG 允許多重并行交易的特征,導致攻擊者可能暗中生成一條影子鏈,并且時不時地將影子鏈跟主鏈進行對接以逃避檢測算法。極端情況下,這條影子鏈有可能代替主鏈成為全網的共識。XDAG本身機制決定了不會出現影子鏈攻擊,Byteball則是通過見證人模式來解決。
4.4 智能合約開發(fā)難度大
DAG的異步操作使得在運行智能合約時,節(jié)點間所存儲的數據在運行一段時間后可能出現偏差,從現實情況來看,目前還沒有能真正基于DAG網絡開發(fā)出智能合約的項目。
5.1 XDAG
XDAG是一個可實現每秒成千上萬筆交易的去中心化支付系統(tǒng),也是目前唯一一個DAG+POW項目,具有高性能和高安全性。XDAG項目是一個完全由社群驅動的項目,目前擁有三位核心開發(fā)者,約三萬社區(qū)成員。近期社區(qū)的幾位核心開發(fā)者對于舊版本進行了大量的優(yōu)化,已于上周上線新版本,并且針對原程序的c語言版本,開發(fā)者正在著力開發(fā)C++,Go,Python版本,預計在一兩個月內完成。
XDAG當前價格:約0.488元
挖礦規(guī)則:總共挖礦160年,每四年減半,前一個四年每年挖出4億;每64s出一個塊,一個塊獎勵1024的xdag。
礦池介紹:目前XDAG有三個比較老牌的大型礦池,分別是胖池、vspool、飛池, 在XDAG發(fā)展初期,由于國內礦池頻繁遭遇DDOS,廣大礦工不得已出海挖礦,限于網速以及礦池費率等因素,收益不理想。抱著給國內礦工提供更加穩(wěn)定,透明的服務信念,胖子決定搭建一個屬于國內人的專屬礦池(胖池)。胖池采用高防主機,針對國內礦工進行線路優(yōu)化及調整,能承受18T流量攻擊,費率公開透明,有著完善的界面和查詢功能,并支持微信公眾號掉線提醒收益查詢等。
5.2 IOTA
IOTA是一種開源性的底層基礎協(xié)議,是一個專為物聯網設計的新型交易結算和數據轉移層,使用基于DAG的Tangle技術,社區(qū)成員或者相關企業(yè)可以自發(fā)的在協(xié)議之上開發(fā)相應的軟件應用,代表性的應用案例如下:Qubic、Elaadn、data.iota.org、IoTipBot。
5.3 Byteball
Byteball是一種基于DAG技術的新型數字資產平臺,通過設置轉賬前必須包含之前的交易記錄來防止雙花,采用新型的見證人模式來保證主鏈選擇過程的安全性,因為存在見證人,Byteball會收取手續(xù)費用來獎勵,從這個角度出發(fā),Byteball不適用于物聯網和小額交易領域。
5.4 Nano
一種基于區(qū)塊點陣(BlockLattice)結構的新型加密貨幣,具有無交易手續(xù)費、瞬時交易的特性,其中每個賬戶都有自己的區(qū)塊鏈,允許其異步地更新到網絡的其余部分,從而以極小的資源開銷獲得快速的交易確認。
隨著社區(qū)對DAG技術的認知和普及、開發(fā)人員逐漸變多、DAG技術的完善和發(fā)展,DAG項目的優(yōu)勢會逐漸凸顯,其性能優(yōu)越和擴展性強對現有的區(qū)塊鏈項目是一個巨大沖擊,從技術角度來看,DAG帶給我們的是一場新的區(qū)塊鏈實驗。
編輯: 陳文洋
【轉載須知】
1、本報告為Jingdata旗下專業(yè)的數據研究分析機構【鯨準研究院】原創(chuàng)作品,受《著作權法》保護,依法享有匯編權及注釋權;
2、轉載請留言后臺,取得授權后方可轉載;
3、禁止商用轉載,禁止二次編輯轉載。
聯系客服