技術分享 | 破解有關DAG的三大誤解

買賣虛擬貨幣

Steven Pu

Follow

Dec 26· 5 min read

本文的靈感來源於Taraxa見面會、AMA以及其他社羣活動中觀眾提出的問題。

前言

Taraxa採用的是Zohar和Sompolinsky最先提出的區塊DAG拓撲結構。但是,最近我們注意到,每次介紹專案時,聽眾似乎總會對DAG是什麼或者其與區塊鏈技術的關係產生很多誤解。

本文我們會針對一些常見問題進行解答,希望能夠幫助大家消除一些誤解。

誤解1: DAG有別於區塊鏈

簡單來說,DAG和區塊鏈是完全不同的概念,因此根本不能放在一起比較。我們來看看他們到底是什麼。

DAG(有向無環圖)是應用於資料結構的數學模型。它由與單向邊相連的頂點組成,且沒有一條路線是從某個頂點開始沿著這些邊走最後再回到同一頂點的——也就是說,它是非迴圈的。

本質上,DAG是一種低階資料結構,可用於對多種型別的資料進行建模(尤其是具有依賴關係的網路),例如對電子表格單元格的依賴,數位電路的組合邏輯,亦或是諸如貝葉斯網路的因果系統。DAG資料結構具有許多有趣的數學屬性,有助於簡化與這些型別資料相關的問題。

而關於區塊鏈的更多資訊,可以閱讀我之前寫的文章“什麼是區塊鏈?”。不過,區塊鏈本質上是一個網路化系統,它能夠讓實體提交語句,就現實達成一致,並複製記錄。雖然這些功能本身各自並沒有獨特之處,但結合起來就能創造出一些有趣的屬性,而這些屬性在區塊鏈技術中是獨一無二的,例如不可變性以及有保證的排序等。

這樣一來,我們立馬就能看出這兩者是不匹配的。DAG是資料結構,而區塊鏈是系統。或者說,DAG是一個抽象模型,而區塊鏈是一個應用程式。將這兩者放在一起比較,就好比將三角形與摩天大樓進行比較。在設計摩天大樓時或許會在幾何計算中用到三角形的概念,但兩者根本不同,所以無法進行比較。

那麼,這個誤解從何而來?這是因為在區塊鏈的設計中,基於DAG的拓撲結構與基於單鏈的拓撲是完全不同的。DAG只是組建區塊鏈資料結構的一種替代方式。

Taraxa也採用了區塊DAG的拓撲結構,下圖是我們白皮書中的一張圖解。

區塊鏈系統中的單鏈結構區塊vs區塊DAG拓撲

但是,所有采用DAG拓撲的區塊鏈都一樣嗎?這就引出了關於DAG的第二大誤解。

誤解2: 所有基於DAG的區塊鏈系統都是一樣的

我們經常會遇到一些社羣成員,他們對同樣採用DAG拓撲的另一個區塊鏈系統也有所瞭解,於是他們就會將另一個系統的所有特徵疊加到Taraxa上,包括一些技術缺陷或挑戰。

在這裡,我們簡要介紹下其他幾個採用DAG拓撲結構的早期區塊鏈專案,以及它們與Taraxa設計上的不同。

IOTA可能是第一個向市場展現了區塊鏈技術如何讓物聯網裝置受益的專案,同時他們還提出了一種截然不同的共識演算法來利用DAG。IOTA透過隨機進入DAG來驗證交易,這個方法最終使得網路要依賴於中央協調者來維持順序和正確性,否則該網路將無法正確處理雙花等問題。而Taraxa的排序機制定義很明確,且不依賴於中心化協調。

Byteball(位元組雪球)採用的是沒有區塊的DAG拓撲結構。該專案與眾不同之處在於其共識功能,也就是在DAG內尋找主鏈從而確定排序,並透過定期快照(ball)來限制排序的計算複雜性。但是,它需要依靠12位“受信任”的見證人,所以被認為是高度中心化的。同樣的,Taraxa的排序機制已經很好的實現了去中心化。

Nano和IOTA或Byteball不太一樣。在這個專案裡,每個帳戶都有其自己的鏈(區塊格),每個鏈的排序由鏈的所有者確定,且每個交易都需要分成收款-付款兩筆款項並由雙方分別記錄。從某種意義上說,Nano是一個您可以在不同鏈上的交易之間繪製有方向的邊的“DAG”,但它在結構上與IOTA或Byteball有很大不同。不過,Nano的塊格結構設計高度最佳化了代幣交易,而非智慧合約。相比之下,Taraxa則具備通用的併發智慧合約系統,可在交易處理期間最大化垂直併發。

那麼為什麼要採用DAG,或者說Taraxa為什麼要完全採用區塊DAG呢?

誤解3: DAG區塊鏈是物聯網的最佳拍檔

Taraxa的主要目標是讓物聯網生態系統變得更可信、更自主、更有價值。但是,這與其區塊DAG拓撲關係並不大。

Taraxa之所以選擇塊DAG拓撲,是因為它能夠在不犧牲安全性的情況下提高吞吐量(更多資訊請參見之前寫的文章“單鏈的艱難權衡”和“區塊DAG與PoS”)。區塊DAG的結構具有包容性,它能夠接受所有分支,所以提高了總吞吐量。而安全性難題則是透過檢視每個區塊用來指向多個父塊的指標(pointer)來解決——指標作為投票會轉化為一個權重評級,稱為GHOST規則。透過此規則,我們可以計算出區塊DAG中的一條錨定鏈,然後根據錨定鏈上每個錨定塊推出的時間來建立一個確定的順序。

所以,區塊DAG是因其高吞吐的特性而被選用為拓撲結構,但這絕不意味著它就是物聯網或任何其他用例的“理想選擇”——它確實適用於所有用例,因為沒有用例會需要低吞吐。但與此同時,物聯網資料的錨定(在我們物聯網應用中是很關鍵的用例)確實需要很高的吞吐量,而區塊DAG拓撲結構就很適合構建高吞吐量的區塊鏈系統。

希望這篇文章能夠幫助大家解除一些對DAG和區塊鏈的常見誤解。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;