摘要:在中,系統(tǒng)的吞吐率瓶頸已不再是共識機制本身,而在于網(wǎng)絡(luò)帶寬以及每個節(jié)點局部的計算處理能力。我們先來簡單的看一下比特幣中的共識機制是如何工作的。這個協(xié)議通過使用工作量證明以及最長鏈規(guī)則來讓所有的機器節(jié)點對區(qū)塊鏈的狀態(tài)達(dá)成共識。
Conflux項目的CTO 伍鳴在Odaily星球日報與36Kr集團共同主辦的2018 P.O.D New BlockTrend新區(qū)勢區(qū)塊鏈峰會上就《Scaling Nakamoto Consensus to Thousands of Transactions per Second》(將中本聰共識的吞吐率提升到每秒數(shù)千次交易)發(fā)表演講,對于基于POW機制的擴容提出了新見解。
伍鳴從中本聰共識機制的工作原理出發(fā),指出簡單的在共識機制中增大區(qū)塊容量以及提高出塊率的方式并不可取,這兩種方式均會使區(qū)塊在網(wǎng)絡(luò)上傳播的延時相對變長,從而在賬本中產(chǎn)生很多分叉,不僅浪費計算和網(wǎng)絡(luò)的資源,也危害了安全性。
對此,伍鳴介紹,Conflux利用區(qū)塊鏈中交易少沖突的特點,樂觀的處理并發(fā)塊,且將區(qū)塊通過父邊和引用邊組織成有向無環(huán)圖(DAG),同時創(chuàng)新的將Ghost規(guī)則和Epoch的概念相結(jié)合,從而使參與協(xié)議的機器節(jié)點能夠在一致的賬本結(jié)構(gòu)中決定一致的交易全序。Ghost規(guī)則保證的了主鏈的選擇無法被逆轉(zhuǎn),DAG和Epoch幫助確定一致的交易全序。通過這樣的技術(shù),Conflux能夠在防治雙花攻擊的同時將分叉上的區(qū)塊變?yōu)橛行亩嵘行^(qū)塊的比例,進(jìn)而能夠?qū)⒐溝到y(tǒng)的吞吐率提升到每秒上千次交易,且能夠在分鐘級別的延時內(nèi)確認(rèn)交易。在Conflux中,系統(tǒng)的吞吐率瓶頸已不再是共識機制本身,而在于網(wǎng)絡(luò)帶寬以及每個節(jié)點局部的計算處理能力。
以下為伍鳴博士的演講實錄:
大家好,今天很高興有機會給大家介紹一下我們的Conflux項目,它是一個創(chuàng)新的公鏈系統(tǒng),它主要的優(yōu)勢特點是能夠?qū)⒒诠ぷ髁孔C明的中本聰共識機制的吞吐率提升到每秒上千條交易的量級。
我們先來看一下問題的背景。現(xiàn)如今,區(qū)塊鏈和數(shù)字貨幣在業(yè)界已經(jīng)產(chǎn)生了相當(dāng)大的影響力。也有越來越多的人開始關(guān)注它。以比特幣為代表的區(qū)塊鏈技術(shù)已經(jīng)發(fā)展成為一可以個在互聯(lián)網(wǎng)級別上支持安全的,一致的,分布式的交易賬本的平臺。這個平臺進(jìn)而帶動了金融科技,供應(yīng)鏈,和醫(yī)療健康等應(yīng)用領(lǐng)域的技術(shù)創(chuàng)新。全球的數(shù)字貨幣市場也支撐著千億美元的市值。
然而,盡管如此,性能和效率問題仍然是現(xiàn)有的區(qū)塊鏈系統(tǒng)一個很大的痛點。這使得現(xiàn)有的區(qū)塊鏈的用戶體驗很糟糕,比如很長的處理延遲,以及高昂的交易費用。同時也限制了在區(qū)塊鏈系統(tǒng)上開發(fā)更有意義的應(yīng)用的能力。我們都知道,比特幣每秒可以處理大概7個交易,以太坊是每秒30個交易。而像visa這樣的中心化的交易服務(wù)可以支持每秒上千個交易的吞吐率。
我們先來簡單的看一下比特幣中的共識機制是如何工作的。在這個協(xié)議里面,交易是被打包到區(qū)塊里面的。所有的區(qū)塊形成了一個鏈,這個鏈表示了交易的歷史紀(jì)錄。每一個參與這個協(xié)議的機器節(jié)點都會想要去產(chǎn)生一個新的區(qū)塊并在該區(qū)塊里打包新的交易,并且通過將前一個區(qū)塊的哈希值存入新區(qū)塊的頭部信息來將新區(qū)快鏈在區(qū)塊鏈的尾部。這個協(xié)議通過使用工作量證明以及最長鏈規(guī)則來讓所有的機器節(jié)點對區(qū)塊鏈的狀態(tài)達(dá)成共識。同時,它維持了一個很慢的全網(wǎng)的平均出塊率以及相對較小的區(qū)塊大小。
假設(shè)圖中是一個區(qū)塊鏈的當(dāng)前的狀態(tài),假設(shè)一個攻擊者想要逆轉(zhuǎn)區(qū)塊n-2中的一個交易,他就會想要從區(qū)塊n-3后面引入一個分叉來使區(qū)塊n-2變得無效。但是與此同時,所有的誠實的節(jié)點都會遵循最長鏈規(guī)則從而將他們新產(chǎn)生出來的區(qū)塊鏈在最長鏈的尾部。由于系統(tǒng)維持了很低的出塊率和較小的塊大小,網(wǎng)絡(luò)延遲相對于出塊時間來講是比較小的,所以這些誠實的節(jié)點所產(chǎn)生的區(qū)塊基本上就是順序的。這樣的話,只要誠實節(jié)點的總算力超過50%,攻擊者就不能夠使他自己產(chǎn)生的鏈成為最長鏈。
但有人接下來可能會問,是不是可以通過增加出塊率或者增大區(qū)塊的大小來提高系統(tǒng)的吞吐率?簡單的在中本聰共識機制里面這樣去做是有問題的。因為不論是增大塊的大小還是增加出塊率都會使得區(qū)塊產(chǎn)生的時間和區(qū)塊在網(wǎng)絡(luò)上傳播的延遲相比變得相對較小。這就使得一個新塊在產(chǎn)生以后還來不及傳播到全網(wǎng)就會有其他的節(jié)點產(chǎn)生另外的新塊,于是就在區(qū)塊鏈上產(chǎn)生了分叉。雖然整個系統(tǒng)最終會收斂到某一個最長的分叉上,但是出塊率和塊大小越大的話,分叉的情況就會越發(fā)嚴(yán)重,分叉也會進(jìn)一步出現(xiàn)在已有的分叉上。所以最終區(qū)塊鏈的賬本就發(fā)展成這個樣子,就是有很多的分叉。
這帶來兩個問題。第一,這些分叉浪費了網(wǎng)絡(luò)和計算資源,因為只有最長鏈中的區(qū)塊才被認(rèn)為是有效的。第二,它危害了安全性,因為整個區(qū)塊鏈里的最長鏈變短了,這使得攻擊者只需要少于50%的算力就可以產(chǎn)生出惡意的最長鏈了。
那接下來我們來看一下Conflux是如何解決這個問題的?我們注意到,在比特幣中的這種基于鏈的共識機制里,它本質(zhì)上對交易的執(zhí)行順序有一個嚴(yán)格的限制,也就是交易的執(zhí)行順序要和他們所在的區(qū)塊的產(chǎn)生的順序是一致的。比如在這個例子中,如果區(qū)塊1是在區(qū)塊0之后產(chǎn)生的,它隱含的意思是說,區(qū)塊1中的交易都要發(fā)生在區(qū)塊0的后面。同樣當(dāng)區(qū)塊2產(chǎn)生在區(qū)塊0后面,它也隱含了相同的意思。所以假如后面的區(qū)塊3,4,5,鏈在了區(qū)塊1的后面,區(qū)塊2就會被丟掉,因為我們無法確定它的交易應(yīng)該怎么去排序。
但是我們?nèi)绻屑?xì)觀察的話,實際上區(qū)塊鏈的系統(tǒng)里面,很多的交易是沒有沖突,所以它們可以按任意的順序執(zhí)行,只要所有的參與節(jié)點都同意一個順序就可以了。那么基于這樣一個觀察,我們Conflux的主要的核心想法就是這樣的。我們首先樂觀的處理這些可能并發(fā)的區(qū)塊,然后我們把這些區(qū)塊組織成有向無環(huán)圖,也就是DAG。接下來我們讓所有的機器節(jié)點首先假設(shè)所有的交易相互之間都沒有沖突,從而決定一個一致的區(qū)塊順序。然后他們再根據(jù)區(qū)塊的順序進(jìn)一步?jīng)Q定所有交易的執(zhí)行順序,最后再依照這個交易的順序去解決交易的沖突問題。
接下來我們用一個具體的例子來說明這個想法。假設(shè)這個圖上顯示的是Conflux的賬本在某一時刻的狀態(tài)。每個區(qū)塊都有一個指向它的父親區(qū)塊的parent邊。那么這些區(qū)塊和它們的parent邊,就構(gòu)成了一個樹形結(jié)構(gòu)。除了指向父親的邊以外,每一個區(qū)塊還可以有多個引用邊。這個引用邊主要是記錄和表達(dá)區(qū)塊之間的happens-before關(guān)系。比如,如果一個機器節(jié)點在產(chǎn)生區(qū)塊E的時候,它已經(jīng)有了區(qū)塊D,而且這個時候,D也沒有任何一個其他區(qū)塊引用了它。那么這個節(jié)點可以給E加上一個引用D的邊來表示D是在E之前產(chǎn)生的。
有了這些邊的定義,這個賬本結(jié)構(gòu)就定下來了,這個結(jié)構(gòu)會在全網(wǎng)節(jié)點進(jìn)行廣播,所以,所有的節(jié)點最終都會得到一個一致的賬本。那么有了一致的賬本以后,所有的節(jié)點如何去決定一個一致的區(qū)塊全序呢?我們的核心想法是,首先,這些節(jié)點先在DAG中決定一個一致的主鏈,然后,再根據(jù)這個主鏈來決定一個一致的區(qū)塊的全序。
為了決定主鏈,Conflux使用了Ghost規(guī)則。具體來說就是,我們從創(chuàng)世塊開始,迭代的去從孩子區(qū)塊中選擇下一個在主鏈上的區(qū)塊。選擇的規(guī)則是挑選擁有最大子樹的孩子區(qū)塊。比如,區(qū)塊A和區(qū)塊B是創(chuàng)世區(qū)塊的兩個孩子區(qū)塊。A的子樹有6個區(qū)塊,B的子樹有5個區(qū)塊。所以我們選擇區(qū)塊A作為緊接著創(chuàng)世區(qū)塊的主鏈區(qū)塊。相應(yīng)的我們根據(jù)相同的規(guī)則,將區(qū)塊C,E,H,都選進(jìn)了主鏈。
為了產(chǎn)生一個新的區(qū)塊,一個機器節(jié)點首先選擇主鏈上的最后一個區(qū)塊作為新區(qū)塊的父親,然后這個新區(qū)塊再把所有已經(jīng)收到但還沒有被其他區(qū)塊所引用的區(qū)塊引用起來。
這里之所以使用Ghost規(guī)則而不是最長鏈規(guī)則來選主鏈,是因為Ghost規(guī)則中所有的區(qū)塊,包括那些在分叉上的區(qū)塊,都會對主鏈的選擇做出貢獻(xiàn)。這樣的話,就保證了只要攻擊者的算力沒有超過50%, 就無法改變由誠實節(jié)點確定的主鏈。
現(xiàn)在我們有了讓所有機器節(jié)點對主鏈產(chǎn)生共識的機制。那接下來,這些節(jié)點如何對區(qū)塊的全序達(dá)成共識呢?為了做到這一點,我們引入一個Epoch的概念。在主鏈上的每一個區(qū)塊就確定了一個Epoch。在分叉上的區(qū)塊屬于哪個Epoch,是由第一個產(chǎn)生在它之后的主鏈區(qū)塊所在的Epoch決定的。比如,區(qū)塊D屬于Epoch E,因為D最先被E引用,所以產(chǎn)生在E之前,但是D并不產(chǎn)生在C之前。
所以,在Conflux中,我們首先按照Epoch的順序來給區(qū)塊排個序。然后在每一個Epoch內(nèi)部,我們再按照拓?fù)渑判騺泶_定區(qū)塊的順序。如果出現(xiàn)平局的情況,我們再根據(jù)區(qū)塊的哈希值來打破平局。所以這個圖中的區(qū)塊排好序以后就是這樣的。接下來我們要為交易排序,Conflux首先按照區(qū)塊的順序去給交易排序。然后在每個區(qū)塊內(nèi)部,我們就按照交易在區(qū)塊里所在的位置來排就可以了。
交易可能會沖突。比如這個例子里面的交易2和交易3。因為交易2執(zhí)行過以后,賬戶X里面就沒有足夠的余額來完成交易3了,因為在這個交易的全序里面,交易3是發(fā)生在交易2之后的,所以我們會讓交易3變?yōu)闊o效。另一種情況是,相同的交易有可能被不同的節(jié)點打包到不同的并發(fā)區(qū)塊里,比如交易4。 在這種情況下,Conflux只會接受在全序中出現(xiàn)的第一個這樣的交易,而把后面的重復(fù)交易無效掉。
那么接下來一個問題是Conflux如何能夠防止雙花攻擊。我們首先來看一下一個攻擊者如何能夠逆轉(zhuǎn)在賬本中的一個交易,比如交易4。為了做到這一點,一個攻擊者需要產(chǎn)生一個交易4的雙花交易,打包到一個區(qū)塊里面,并且將這個區(qū)塊在區(qū)塊的全序中插入到區(qū)塊B的前面。但攻擊者很難做到這一點,主要有兩個原因。第一個就是除非攻擊者能夠改變主鏈,不然他不能夠逆轉(zhuǎn)交易,因為交易的順序是由主鏈來決定的。比如一個攻擊者想把一個塊插在靠前的位置,他能做就是在一個很早的Epoch里面的區(qū)塊后面接著產(chǎn)生新塊。但是只要這個塊不在主鏈上,它就最終還是會屬于一個很晚的Epoch。因為當(dāng)一個誠實的新塊產(chǎn)生以后,它會通過引用邊把這個攻擊者的區(qū)塊給拉到新的Epoch里面。
第二個原因就是,如果攻擊者沒有超過50%的算力,他就沒有辦法改變主鏈。為什么是50%呢。我這里給出一個直觀的解釋。假設(shè)區(qū)塊A是一個主鏈上的塊,一個攻擊者想要用區(qū)塊A’來取代A在主鏈上的位置。那么所有攻擊者產(chǎn)生的塊都會在A’的子樹下面,然而所有誠實的節(jié)點所產(chǎn)生的塊都會在A的子樹下面,這樣的話,攻擊者就需要超過50%的算力才能讓A’的子樹超過A的子樹。根據(jù)理論的分析,A’能夠取代A的概率是隨著時間的增加而指數(shù)下降的。
因此,一個交易的確認(rèn)就包含以下幾步。用戶首先對攻擊者的算力比例以及他所能承受的風(fēng)險有一個假設(shè)。給定這個假設(shè),Conflux首先找到這個交易所屬的Epoch,然后找到和這個Epoch相應(yīng)的主鏈區(qū)塊。最后再檢查這個主鏈區(qū)塊被逆轉(zhuǎn)的概率是否小于用戶所能承受的風(fēng)險。如果小于,則該交易可以確認(rèn)。
這個圖概括的展示了Conflux系統(tǒng)架構(gòu)。 所有參加Conflux協(xié)議的機器節(jié)點由一個p2p的網(wǎng)絡(luò)連接起來,他們通過Gossip的方式在網(wǎng)絡(luò)中傳播交易和區(qū)塊。每個機器節(jié)點,維護(hù)一個交易池,交易池里面緩存著將要打包的交易。另外每個機器節(jié)點同時也在不停的運行Conflux的共識協(xié)議。
接下來我們再簡要的看一些實驗結(jié)果。我們搭建了Conflux的一個原型系統(tǒng),然后在Amazom EC2上運行1萬個Conflux節(jié)點來做實驗。為了模擬公網(wǎng)上真實網(wǎng)絡(luò)環(huán)境,我們限制每個節(jié)點的網(wǎng)絡(luò)帶寬是20Mbps。在實驗中我們調(diào)整不同的區(qū)塊大小和出塊率。我們測量了系統(tǒng)的吞吐率和交易延遲,并且和比特幣以及Ghost的協(xié)議進(jìn)行了比較。
這個藍(lán)色線是Conflux,可以看到區(qū)塊越大、出塊率越高,Conflux的吞吐率就可以線性的增加,但是比特幣和Ghost就做不到。這是因為這時比特幣和Ghost的區(qū)塊利用率會大幅下降。
最后總結(jié)一下。Conflux利用了優(yōu)化處理并發(fā)區(qū)塊的想法,使得公鏈系統(tǒng)的吞吐率達(dá)到每秒上千次的交易,以及分鐘級別的確認(rèn)時間。在Conflux的交易里面,整個系統(tǒng)的吞吐率瓶頸已經(jīng)不在共識機制上,而是在網(wǎng)絡(luò)帶寬或每個節(jié)點的計算能力上。
謝謝。
本文部分內(nèi)容經(jīng)授權(quán)轉(zhuǎn)載自“36氪”和“Odaily星球日報”
Conflux在團隊成員的組成方面有著巨大的優(yōu)勢:團隊成員均有著專業(yè)的研究背景,豐富的從業(yè)經(jīng)驗和編程大賽獲獎經(jīng)歷。
Conflux是由中國唯一圖靈獎獲得者姚期智教授所領(lǐng)導(dǎo)的團隊。姚期智院士是世界著名的計算機科學(xué)家。因為其對計算機理論研究的重要貢獻(xiàn),包括基于復(fù)雜性的偽隨機數(shù)生成理論,密碼學(xué)和通信復(fù)雜性,在2000年獲得了圖靈獎。此外,包括聯(lián)合創(chuàng)始人,首席技術(shù)官,核心系統(tǒng)工程開發(fā)師,算法工程師等技術(shù)團隊成員,大部分都是“姚班”出來的。并且?guī)缀跛腥硕加袊H信息學(xué)競賽,ACM-ICPC,Code Jam等編程大賽金牌的經(jīng)歷。Conflux團隊在技術(shù)人員配置方面,有著無與倫比的優(yōu)勢。而在未來的發(fā)展中,還會不斷擴充壯大這一核心優(yōu)勢。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17846.html
摘要:在中,系統(tǒng)的吞吐率瓶頸已不再是共識機制本身,而在于網(wǎng)絡(luò)帶寬以及每個節(jié)點局部的計算處理能力。我們先來簡單的看一下比特幣中的共識機制是如何工作的。這個協(xié)議通過使用工作量證明以及最長鏈規(guī)則來讓所有的機器節(jié)點對區(qū)塊鏈的狀態(tài)達(dá)成共識。 showImg(https://segmentfault.com/img/bVbk0h4?w=1200&h=777);Conflux項目的CTO 伍鳴在Odail...
摘要:在中,系統(tǒng)的吞吐率瓶頸已不再是共識機制本身,而在于網(wǎng)絡(luò)帶寬以及每個節(jié)點局部的計算處理能力。我們先來簡單的看一下比特幣中的共識機制是如何工作的。這個協(xié)議通過使用工作量證明以及最長鏈規(guī)則來讓所有的機器節(jié)點對區(qū)塊鏈的狀態(tài)達(dá)成共識。 showImg(https://segmentfault.com/img/bVbk0h4?w=1200&h=777);Conflux項目的CTO 伍鳴在Odail...
摘要:月日圣誕夜,伍鳴博士做客火星財經(jīng)創(chuàng)始學(xué)習(xí)群,分享了使用結(jié)構(gòu)提升中本聰共識的吞吐率。為什么傳統(tǒng)的基于的中本聰共識機制的吞吐率非常低下總結(jié)來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經(jīng)創(chuàng)始學(xué)習(xí)群」,分享了Conflux: 使用 DAG 結(jié)構(gòu)提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...
閱讀 2452·2021-11-22 09:34
閱讀 3063·2021-10-25 09:43
閱讀 1975·2021-10-11 10:59
閱讀 3361·2021-09-22 15:13
閱讀 2323·2021-09-04 16:40
閱讀 418·2019-08-30 15:53
閱讀 3186·2019-08-30 11:13
閱讀 2602·2019-08-29 17:30