摘要:月日圣誕夜,伍鳴博士做客火星財經創始學習群,分享了使用結構提升中本聰共識的吞吐率。為什么傳統的基于的中本聰共識機制的吞吐率非常低下總結來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。
12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經創始學習群」,分享了“Conflux: 使用 DAG 結構提升中本聰共識的吞吐率”。
嘉賓簡介:
Conflux CTO:伍鳴博士
本科畢業于中國科技大學,中科院計算機系統結構博士,曾為微軟亞洲研究院(MSRA)系統研究組的高級研究員,研究方向包括分布式事務處理系統、圖計算引擎和人工智能平臺。近年來在多個系統領域的頂級會議(如 SOSP、OSDI、NSDI、ATC等)中發表論文,并擔任過 OSDI、ASPLOS、HotDep等會議的程序委員會委員。
伍鳴博士坦言,目前存在的一些基于PoW的區塊鏈系統所能提供的交易吞吐率都非常低,由此帶來很多問題,包含用戶體驗糟糕、交易費用高昂,并進一步限制了在區塊鏈系統上開發更有意義的應用的能力。
在此背景下,Conflux通過有向無環圖技術(DAG)與中本聰共識(比特幣的共識機制)的結合,在不犧牲去中心化和安全性的前提下,提高基于工作量證明(PoW)的區塊鏈系統的吞吐率。
以下為伍鳴博士直播的詳細內容(由Conflux和火星財經整理)
第一部分:行業背景眾所周知,當前區塊鏈領域面臨的最大的一個問題之一,就是效率的問題。業界已經存在的一些基于PoW的區塊鏈系統(例如比特幣、以太坊)所能提供的交易吞吐率都非常的低。比特幣的極限速度是平均每秒處理大概7個交易,以太坊是每秒30個交易,遠遠低于像Visa這樣的中心化的交易服務可以支持每秒上千個交易的吞吐率。
效率低會帶來很多問題:
首先,效率低使得現有的區塊鏈的用戶體驗很糟糕,比如交易被加入區塊需要等很長時間。
其次,吞吐率有限使得交易費用高昂。
更進一步,交易費用高昂限制了在區塊鏈系統上開發更有意義的應用的能力。
為了提高效率,大體有以下這么幾個思路:
1.依然采用中本聰共識,但調整協議參數。通過調整出塊時間和區塊大小來提高效率。如萊特幣(2.5 min/1MB block), BCH (10min/32MB block)。但有研究表明,無論這兩個參數如何調整,提高吞吐率必然以降低安全性為代價,在第二部分,我將為大家分析這其中的原因。
2.基于中本聰共識的思想,使用 DAG 技術改造。這可以在不犧牲去中心化和安全性的前提下,大幅提高吞吐效率。
3.使用 PoS 或 dPoS 機制。dPoS算法如 EOS 很大程度上犧牲了去中心化,有不小的爭議。而 PoS 算法也存在股權集中、難以應對長程攻擊(Long Range Attack)等去中心化或安全性問題。
4.使用分片 (Sharding), 狀態通道 (State Channel) 等側鏈或鏈下解決方案。其中一部分被有些人稱為 Layer 2。 這些方案與 Conflux 目前的解決方案是正交的,它們在嘗試從另一個角度解決吞吐率問題,對吞吐率的提高是可以效果疊加或優勢互補的。例如,提升全節點的吞吐率的技術可以幫助使用分片技術的系統減少跨鏈交易所造成的性能瓶頸,也可以完成更多的狀態通道結算交易。
第二部分:中本聰共識機制為何吞吐率低下為什么傳統的基于PoW的中本聰共識機制的吞吐率非常的低下?總結來說,為了安全,不得不如此。
在公有鏈中,為了能讓參與網絡協議的機器節點對交易的執行達成共識,礦工挖出區塊以后需要在P2P網絡中進行廣播,以便讓所有的機器獲得一致的賬本結構。每個礦工會根據最長鏈規則,選擇將新挖出的區塊接在它所看到的最長鏈的末尾。也就是所有誠實的節點,會共同延長這個最長的主鏈。這樣,如果惡意的節點沒有>50%的算力就不可能逆轉主鏈。
然而,如果網絡延遲比較大,使得一個新塊在產生以后還來不及傳播到全網就會有其他的節點產生另外的新塊,就會在區塊鏈上產生了大量分叉。
下面讓我們用一個圖片,來展示了發生分叉后區塊鏈賬本的樣子。
這些分叉帶來兩個問題。第一,分叉的區塊最終被丟棄,這浪費了網絡和計算資源。第二,分叉同時也危害了安全性,如果大量誠實節點生成的區塊因為分叉被丟棄,攻擊者只需要少于50%的算力就可以產生出惡意的最長鏈了。
因此,在比特幣或以太坊中,為了保證安全性,它們需要保持一個很長的出塊時間(即很低的出塊速率),或者維持很小區塊大小以減小區塊在網絡中廣播的延遲,以此來減少分叉出現的頻率,但同時也因此大大降低了系統的吞吐率。
提高吞吐率會引發分叉,而不同分叉上的兩個區塊是競爭關系。它們爭奪后續挖出的確認區塊,來讓自己所在的分支成為最長鏈,失敗者則被丟棄。誠實節點挖出來的區塊之間這種無意義的競爭,為攻擊者帶來了可乘之機。為了提高安全性,比特幣選擇了降低出塊速度,盡量避免這種情況出現。
那么,如果我們選擇了另一個思路,即通過允許每個區塊選擇多個區塊作為自己的父親或祖先,哪怕在出塊速度很快的時候,也可以避免誠實區塊之間無意義的競爭。這樣,就繞開了中本聰共識中安全與效率兩難的困境。
在這種思路下,整個網絡將構成有向無環圖結構(DAG)。下一步要考慮的是,不同的區塊中的交易,應該以什么順序執行?這時,我們通過設計一個安全的有向無環圖拓撲排序算法,每個節點只需要在自己本地的 DAG 上執行一遍這個算法,就可以獲得一個區塊的執行順序,這個算法應該保證:
稍后,我將以 Conflux 為例,來看一下怎么樣設計這個安全的拓撲排序算法。
DAG 技術有很多了,比如說 Spectre和 Phantom 算法,這是設計思路與我們最接近的算法,都是采用 DAG 角度優化 PoW 鏈的效率。但遺憾的是,Spectre 無法對所有區塊排一個序出來,這導致它上面無法跑智能合約。而Phantom 被我們發現有漏洞。
同時,還有一些基于 DAG 的算法,與今天講的內容相比,形似但非神似,比如說雪崩共識,Hashgraph. 這些算法本質上都是聯盟鏈的算法。與通過“股權質押”的方式,將聯盟鏈算法轉換成PoS 公鏈算法。但聯盟鏈轉換成PoS公鏈算法的過程存在安全性問題。比較為人熟知的一些針對PoS的攻擊有,無利害攻擊(Nothing-at-Stake Attack)和長程攻擊(Long-Range Attack)。
第三部分:使用PoW+DAG提高區塊鏈吞吐量實例分析-Conflux 的機制設計接下來我們以Conflux為例,具體從技術細節的角度看一下,利用DAG提高吞吐量的思路是怎么實現的。
在Conflux中,每個區塊包含兩種邊,父邊和引用邊。父邊和引用邊共同構成一個有向無環圖。去掉引用邊,所有父邊又構成了一棵樹。在挖礦環節,礦工要監聽 P2P 網絡中廣播的區塊,并在本地維護一個有向無環圖結構的區塊賬本。礦工在挖礦時,新區塊父邊和引用邊的選擇,需要遵循以下的規則:
1.在父邊構成的樹中,依據 Ghost 規則選擇一條主鏈。具體來說,從創世塊開始,迭代地去從孩子區塊中選擇下一個在主鏈上的區塊。選擇的規則是挑選擁有最大子樹的孩子區塊。新區塊的父邊,應當指向主鏈中最后一個區塊。
2.此外,對于那些既沒有父邊,也沒有引用邊指向的區塊,我們稱為“葉子區塊”,新區塊的引用邊要指向所有剩下的葉子區塊。
有了這些邊的定義,這個賬本結構就定下來了,區塊被廣播后,所有的節點最終都會得到一個結構一致的有向無環圖,即一個一致的賬本。
那么有了一致的賬本以后,所有的節點如何去決定一個安全的、一致的區塊排序呢?我們的核心想法是,首先,這些節點先在DAG中決定一個一致的主鏈,然后,再根據這個主鏈來決定一個一致的區塊的排序。
下面,讓我們用一個例子來看下如何決定一個一致的區塊排序。
主鏈的選取同樣遵循 Ghost 規則,剛剛在選父邊的時候我提到過這個規則。我們根據這一規則,我們將區塊C,E,H,都選進了主鏈。
根據我們剛剛講的選邊規則。新區塊的父邊應當指向 H, 同時 K 是葉子區塊。所以新區塊的引用邊應當指向 K.(注意:H 的引用邊指向了 G, 所以 G 不是葉子區塊)。
現在我們有了讓所有節點對主鏈產生共識的機制。那接下來,這些節點如何對區塊的全序達成共識呢?為了做到這一點,我們引入一個Epoch的概念。在主鏈上的每一個區塊就確定了一個Epoch。在分叉上的區塊屬于哪個Epoch,是由第一個產生在它之后的主鏈區塊所在的Epoch決定的。比如,區塊D屬于Epoch E,因為D最先被E引用,所以產生在E之前,但是D并不產生在C之前。按照這個規則,我們可以得到一個一致的排序,如下圖所示。
所以,在Conflux中,我們首先按照Epoch的順序來給區塊排個序。然后在每一個Epoch內部,我們再按照拓撲排序來確定區塊的順序。如果出現平局的情況,我們再根據區塊的哈希值來打破平局。所以這個圖中的區塊排好序以后就是這樣的。接下來我們要為交易排序,Conflux首先按照區塊的順序去給交易排序。然后在每個區塊內部,我們就按照交易在區塊里所在的位置來排就可以了。
最后,我們來看一下,交易如果發生重復或沖突怎么解決。我們再用一個例子來解釋一下:
這個例子里面的交易2和交易3發生了沖突。因為交易2執行過以后,賬戶X里面就沒有足夠的余額來完成交易3了,因為在這個交易的全序里面,交易3是發生在交易2之后的,所以我們會讓交易3變為無效。另一種情況是,相同的交易有可能被不同的節點打包到不同的并發區塊里,比如交易4。在這種情況下,Conflux只會接受在全序中出現的第一個這樣的交易,而把后面的重復交易無效掉。
問答環節:
Q1:Conflux 如何與PoS 公鏈項目對比?
A1:我們都知道,保證安全性是公鏈系統最核心的要求,因為公鏈本身就是在構建一個可信的系統。PoS雖然減少了PoW中挖礦所需要消耗的資源,但同時它也引入了很多新的攻擊情形和安全性威脅,而且目前沒有很完美的解決方案。比較為人熟知的一些針對PoS的攻擊有,無利害攻擊(Nothing-at-Stake Attack)和長程攻擊(Long-Range Attack)。出于這個原因,Conflux堅持采用基于POW的共識機制,通過引入DAG的技術來打破共識機制的性能瓶頸。這是我們原型測試系統實際跑出來的結果。
Q2: Conflux 一筆交易能多久確認?
A2: 在沒有壞人攻擊的情況下,5s 一個 4MB 大小的區塊,確認時間約 8 分鐘。在有 30% 算力攻擊的情況下,確認時間約 16 分鐘。
Q3:Conflux的TPS能跑到多少 ?
A3:在談論和對比 TPS 的時候,我們需要注意區分測試 TPS 的實驗設定。例如在比特幣中,每一個區塊都需要廣播給所有礦工,每一筆交易都被所有人驗證過,我們稱之為一個交易得到的“全節點驗證”。在一些 Sharding方案的實驗中,所有的交易被分成 30 份, 每個節點可能只驗證其中一份。這樣的交易稱為“部分節點驗證”。很顯然,“部分節點驗證”交易的總 TPS 是可以成倍于 “全節點驗證” 的。
Conflux 在共識層面可以做到 4000-6000 TPS 的“全節點驗證”, 如果考慮合約執行、狀態讀寫等因素,實際部署可能會低一些。Sharding 技術是共識層技術一個很好的補充,Conflux 有計劃在未來實現 Sharding, 提供更高的 “部分節點驗證” TPS, 為用戶提供多種選擇。
Q4: Conflux的roadmap和相關時間計劃是怎樣的?
A4: 我們計劃在春節后測試網上線,預計明年Q3主網上線。
Q5:Conflux會有代幣發行嗎?還是挖礦?
A5:Conflux沒有ERC20,主網上線之后會有挖礦。
Q6: 那這里會不會涉及到PoW,或者挖礦的算力? 另外這里的主要難點是什么?面臨的主要技術問題是什么?
A6: Conflux 是基于中本聰共識做的改進,是一個PoW 共識機制,當然會有挖礦。
這里主要的難點是為DAG的賬本設計高效的一致的排序算法。這個算法要能保證好人之間達成一致,還能夠抵抗各種復雜的攻擊情形。
Q7: Conflux是如何預防雙花攻擊的?
A7: 這個問題回答起來比較復雜,先來看一個圖
在這個圖中,我們首先來看一下一個攻擊者如何能夠逆轉在賬本中的一個交易,比如交易4。為了做到這一點,一個攻擊者需要產生一個交易4的雙花交易,打包到一個區塊里面,并且將這個區塊在區塊的全序中插入到區塊B的前面。
但攻擊者很難做到這一點,主要有兩個原因。第一個就是除非攻擊者能夠改變主鏈,不然他不能夠逆轉交易,因為交易的順序是由主鏈來決定的。比如一個攻擊者想把一個塊插在靠前的位置,他能做就是在一個很早的Epoch里面的區塊后面接著產生新塊。但是只要這個塊不在主鏈上,它就最終還是會屬于一個很晚的Epoch。因為當一個誠實的新塊產生以后,它會通過引用邊把這個攻擊者的區塊給拉到新的Epoch里面。
第二個原因就是,如果攻擊者沒有超過50%的算力,他就沒有辦法改變主鏈。
Q8: Conflux的CTPS有測試數據嗎?
A8: CTPS是指確認交易的TPS。我們實驗中測出來的TPS實際上就是確認交易的TPS。大概在4000~6000。
Q9: 挖礦的話,對于挖礦設備具體有什么要求呢?
A9: 我們會選擇GPU友好的POW算法,所以使用GPU設備就可以了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11949.html
摘要:月日圣誕夜,伍鳴博士做客火星財經創始學習群,分享了使用結構提升中本聰共識的吞吐率。為什么傳統的基于的中本聰共識機制的吞吐率非常低下總結來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經創始學習群」,分享了Conflux: 使用 DAG 結構提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...
摘要:月日圣誕夜,伍鳴博士做客火星財經創始學習群,分享了使用結構提升中本聰共識的吞吐率。為什么傳統的基于的中本聰共識機制的吞吐率非常低下總結來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經創始學習群」,分享了Conflux: 使用 DAG 結構提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...
摘要:在中,系統的吞吐率瓶頸已不再是共識機制本身,而在于網絡帶寬以及每個節點局部的計算處理能力。我們先來簡單的看一下比特幣中的共識機制是如何工作的。這個協議通過使用工作量證明以及最長鏈規則來讓所有的機器節點對區塊鏈的狀態達成共識。 showImg(https://segmentfault.com/img/bVbk0h4?w=1200&h=777);Conflux項目的CTO 伍鳴在Odail...
閱讀 3070·2023-04-25 16:50
閱讀 904·2021-11-25 09:43
閱讀 3512·2021-09-26 10:11
閱讀 2518·2019-08-26 13:28
閱讀 2531·2019-08-26 13:23
閱讀 2419·2019-08-26 11:53
閱讀 3566·2019-08-23 18:19
閱讀 2987·2019-08-23 16:27