你聽說過DAG(Directed Acyclic Graph,有向無環圖)嗎?有人稱它為下一代區塊鏈技術,認為它能解決區塊鏈的短板還能大規模應用。準確地說,區塊鏈屬於分布式帳本技術,DAG也是一種分布式帳本技術。
一些人認為DAG為全球性的去中心化解決方案奠定了技術基礎,因此也有人稱DAG為「區塊鏈3.0」。有一些區塊鏈項目也使用了DAG協議,DAG有什麼特別之處呢?今天的萬向區塊鏈小課堂就給大家講講這個知識點。
為了更好地理解它與區塊鏈的不同,讓我們先來複習下區塊鏈是如何工作的?
區塊鏈是如何工作的?
區塊鏈是一個帳本。這個帳本像其它資料庫一樣,包含用戶間的交易信息。作為一個帳本,區塊鏈記錄的信息類似於「張三在2020年7月1日下午5:30:23給李四轉了10000元」,或者更精確地描述應該是「10000元在這個時間點從這個錢包地址轉到了那個錢包地址」。區塊鏈是透明的,因此每個人都能看到交易的歷史記錄,只是我們看不到交易的地址屬於哪個用戶。
網絡中的所有計算機都是節點,每個節點都有一份這個帳本的副本。節點必須就一個交易達成一致——如果大多數節點同意,則記錄該交易。在以PoW為共識機制的鏈中(如比特幣區塊鏈),礦工成功計算出密碼學謎題後,就能夠添加一個塊。有關此交易的信息被哈希加密後傳遞到下一個塊,如果有人想更改記錄,則必須相應地更改以前的記錄。每個記錄都依賴於前一個記錄,以此形成一個鏈。每個塊都有自己的哈希,它也依賴於前一個塊哈希。
對公有鏈來說,去中心化至關重要,生態系統裡的用戶越多,網絡越安全。
什麼是DAG?
「DAG」中文譯名為有向無環圖,雖然它在區塊鏈領域相對較新,但它是計算機科學和數學中相當常見的結構。從名字可以看出,"有向"指的是有方向,準確的說應該是同一個方向,"無環"則指夠不成閉環。
在DAG中,沒有區塊的概念,它的組成單元是一筆筆的交易,每個單元記錄的是單個用戶的交易,這樣就省去了打包出塊的時間(也就是不需要挖礦)。驗證手段則依賴於後一筆交易對前一筆交易的驗證,換句話說,你要想進行一筆交易,就必須要驗證前面的交易,具體驗證幾個交易,根據不同的規則來進行。不同於區塊鏈的同步記帳,DAG可以異步並發地寫入很多交易。把同步記帳提升為異步記帳,被不少人認為可以解決傳統區塊鏈的高並發問題。
DAG技術具有以下特點:
1、交易速度快,DAG實現的局部處理和並行結算可以使得交易速度大幅度提升。
2、拓展性強,因為各個節點無需等待同步其他的節點的數據就可計算使得記帳節點很容易答覆延展,因此DAG很適用於物聯網類項目。
3、作惡難度更大,相比於鏈式結構,在DAG中惡意修改的難度會大很多,因為DAG擁有著很多的出度和入度,假如要修改某一個節點,那麼對應的出入度都要進行修改。
但是,DAG也有劣勢:
1、交易時長不可控。DAG的驗證規則是後面的交易驗證前面的交易,這就很容易出現最後的交易遲遲無法被驗證的情況,尤其是在整個網絡發展的初期節點數量比較少的情況下,造成交易時長無法預測。
2、不支持強一致性。DAG異步記錄機制在提高了擴展性的同時也帶來了一致性的不可控問題。區塊鏈是同步操作的驗證機制,能夠保證較高的一致性。但是DAG作為異步操作,它不存在一個全局的排序機制,在運行智能合約時,這就很可能會出現節點間所存儲的數據在運行一段時間以後出現偏差的情況。
那麼,DAG會取代區塊鏈嗎?
DAG技術並不新鮮,但是應用到去中心化帳本領域卻是近幾年的事情,它沒有像區塊鏈一樣經歷過十餘年的安全驗證,這也阻礙了它的大規模部署。但DAG能夠解決區塊鏈諸如可擴展性的問題,不同的分布式帳本技術都仍有不少發展空間,這更多取決於相應的應用場景更適合哪個技術。