從區塊鏈到DAG:擺脫中介

在這篇文章中,我將向您介紹DAG(有向無環圖)及其在分散式帳本中的應用,並將其與區塊鏈進行比較。

從區塊鏈到DAG:擺脫中介

DAG 在加密貨幣領域並不是什麼新鮮事。 您可能聽說過它是區塊鏈可擴展性問題的解決方案。 但今天我們不會談論可擴展性,而是談論加密貨幣與其他事物的不同之處:去中心化、缺乏中介機構和審查制度阻力。

從區塊鏈到DAG:擺脫中介

我還將向您展示 DAG 實際上更具抗審查性,並且沒有中間人可以存取帳本。

從區塊鏈到DAG:擺脫中介

在我們熟悉的區塊鏈中,用戶無法直接存取帳本本身。 當你想將交易添加到分類帳時,你必須「要求」區塊生產者(也稱為「礦工」)來執行此操作。 礦工決定將哪些交易添加到下一個區塊中,哪些不添加。 礦工擁有對區塊的獨佔存取權,並有權決定誰的交易將被接受並包含在分類帳中。

礦工是你和分散式帳本之間的中間人。

從區塊鏈到DAG:擺脫中介

在實務中,通常少數礦池集體控制網路一半以上​​的算力。 對於比特幣來說,有四個礦池,對於以太坊來說,有兩個礦池。 如果他們串通,他們可以阻止任何他們想要的交易。

從區塊鏈到DAG:擺脫中介

在過去的幾年裡,已經提出了許多區塊鏈的變體,其不同之處在於選擇區塊生產者的原則。 但區塊生產者本身並沒有去任何地方,他們仍然「站在柵欄上」:每筆交易都必須經過區塊生產者,如果他不接受,那麼該交易實際上就不存在。

從區塊鏈到DAG:擺脫中介

這是區塊鏈不可避免的問題。 如果我們想解決這個問題,我們必須從根本上改變設計並完全擺脫區塊和區塊生產者。 我們將連接交易本身,包括每個交易中先前幾個交易的雜湊值,而不是建立區塊鏈。 結果,我們得到了一個數學上稱為有向無環圖的結構——DAG。

現在每個人都可以直接存取註冊表,無需中介。 當您想要將交易新增至分類帳時,只需新增即可。 您選擇多個父交易,新增數據,簽署交易並將其發送給網路上的對等點。 準備好。 沒有人阻止你這樣做,所以你的交易已經在分類帳上了。

這是在沒有中介的情況下將交易添加到分類帳的最去中心化、最不受審查的方式。 因為每個人都只是將自己的交易加入到註冊表中,而無需徵求任何人的許可。

從區塊鏈到DAG:擺脫中介

DAG 可以被視為註冊管理機構演進的第三階段。 首先是集中式註冊中心,其中一方控制對它們的存取。 然後是區塊鏈,它已經有幾個控制器在分類帳中記錄交易。 最後,DAG 中根本沒有控制器;使用者直接加入交易。

從區塊鏈到DAG:擺脫中介

現在我們有了這種自由,它不應該導致混亂。 我們必須就註冊表的狀態達成一致。 這種協議或共識通常意味著在兩件事上達成一致:

  1. 發生了什麼?
  2. 這是按照什麼順序發生的?

我們可以輕鬆回答第一個問題:一旦正確建立的交易被加入到分類帳中,它就已經發生了。 和時期。 有關此資訊可能會在不同時間到達所有參與者,但最終所有節點都會收到此交易並知道它發生了。

如果是區塊鏈,礦工將決定發生什麼。 無論礦工決定將什麼內容包含在區塊中,都會發生什麼。 他沒有包含在塊中的所有事情都不會發生。

在區塊鏈中,礦工也解決了第二個共識問題:秩序。 他們可以按照自己的意願對區塊內的交易進行排序。

如何確定 DAG 中交易的順序?

從區塊鏈到DAG:擺脫中介

正因為我們的圖是有向的,所以我們已經有了一些順序。 每筆交易都引用一個或多個先前的父交易。 父母又指他們的父母,依此類推。 父母顯然出現在孩子交易之前。 如果任何事務可以透過父子連結轉換到達,我們就可以準確地知道該事務鏈中事務之間的順序。

從區塊鏈到DAG:擺脫中介

但交易之間的順序並不總是僅根據圖表的形狀來確定。 例如,當兩個事務位於圖的平行分支上。

從區塊鏈到DAG:擺脫中介

為了解決這種情況下的歧義,我們依靠所謂的訂單提供者。 我們也稱他們為「證人」。 這些是普通用戶,其任務是不斷有序地向網路發送交易,即以便可以透過沿著父子連結的轉換來到達它們之前的每個事務。 訂單提供者是值得信賴的用戶,整個網路都依賴他們不違反這條規則。 為了 理性地 為了信任他們,我們要求每個訂單提供者都是已知的(非匿名)個人或組織,如果違反規則,就會失去一些東西,例如基於信任的聲譽或業務。

從區塊鏈到DAG:擺脫中介

訂單提供者由使用者選擇,每個使用者在發送到網路的每筆交易中都包含其可信任提供者的清單。 此清單由 12 家提供者組成。 這個數字足夠小,足以讓一個人驗證每個人的身份和聲譽,並且足以確保網路在少數訂單提供者出現不可避免的問題時繼續運作。

此提供者清單因使用者而異,但相鄰事務的清單可能最多有一個提供者不同。

從區塊鏈到DAG:擺脫中介

現在我們有了訂單提供者,我們可以將他們的交易隔離到 DAG 中,並圍繞他們創建的訂單對所有其他交易進行排序。 可以創建這樣的演算法(參見。 歐位元組白皮書 了解技術細節)。

但整個網路的訂單無法立即確定;我們需要時間讓訂單提供者發送足夠數量的交易來驗證過去交易的最終訂單。

而且,由於順序僅由提供者的交易在 DAG 中的位置決定,因此網路上的所有節點遲早都會收到所有交易,並就交易的順序得出相同的結論。

從區塊鏈到DAG:擺脫中介

因此,我們對我們認為發生的事情達成了一致:最終進入 DAG 的任何交易都發生了。 我們也對事件的順序達成了一致:這要么從交易關係中顯而易見,要么從訂單提供者發送的交易順序推斷出來。 所以我們有共識。

從區塊鏈到DAG:擺脫中介

我們在 Obyte 中有這個版本的共識。 儘管對 Obyte 帳本的存取完全是去中心化的,但關於交易順序的共識仍然是中心化的,因為10 個提供者中有 12 個由創建者(Anton Churyumov)控制,其中只有兩個是獨立的。 我們正在尋找願意成為獨立訂單提供者之一的候選人,以幫助我們分散帳本的訂單。

最近,出現了第三個願意安裝和維護訂單提供者節點的獨立候選人——尼科西亞大學。

從區塊鏈到DAG:擺脫中介

現在我們如何控制雙花?

根據規則,如果發現兩筆交易花費了同一個幣,則所有交易最終順序中最先出現的交易獲勝。 第二個被共識演算法失效。

從區塊鏈到DAG:擺脫中介
如果可以在花費相同代幣的兩個交易之間建立順序(透過父子連接),那麼所有節點都會立即拒絕這種雙花嘗試。

從區塊鏈到DAG:擺脫中介

如果從兩個此類交易之間的父關係中看不到訂單,則它們都被接受到分類帳中,並且我們需要使用訂單提供者等待它們之間達成共識並建立訂單。 那麼較早的一筆交易獲勝,第二筆交易無效。

從區塊鏈到DAG:擺脫中介

即使第二筆交易變得無效,它仍然保留在註冊表中,因為它已經有後續交易引用它,這沒有違反任何規定,並且不知道該交易將來會變得無效。 否則,我們將不得不刪除良好後續交易的父交易,這將違反網路的主要原則 - 任何正確的交易都會被接受到分類帳中。

從區塊鏈到DAG:擺脫中介

這是一條非常重要的規則,可以讓整個系統抵禦審查嘗試。 

讓我們想像一下,所有訂單提供者串通一氣,試圖「審查」一筆特定交易。 他們可以忽略它,並且永遠不會選擇它作為其交易的“父項”,但這還不夠,該交易仍然可以間接包含為網路上任何未串通的用戶發出的其他交易的父項。 隨著時間的推移,這樣的交易會從普通用戶那裡得到越來越多的子孫重孫,像滾雪球一樣增長,而所有約定的訂單提供者也將不得不忽略這些交易。 最終,他們將不得不審查整個網絡,這無異於破壞。

從區塊鏈到DAG:擺脫中介

這樣,即使訂單提供者之間存在勾結,DAG 仍然能夠抵抗審查,從而超越了抵抗審查的區塊鏈,在這種區塊鏈中,如果礦工決定不包含任何交易,我們就無能為力。 這源自於 DAG 的主要屬性:參與註冊完全獨立且無中介,交易不可逆轉。

來源: www.habr.com

添加評論