成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Bystack的高TPS共識算法

zero / 976人閱讀

摘要:第一類模式是在公鏈項目中運用的最廣泛應用的共識算法,比特幣長達年的運行已充分證明的安全性與穩(wěn)定性。此時當前區(qū)塊已是合法區(qū)塊但是未獲得最終確認,類似于比特幣未獲得個塊確認存在回滾的可能性。

共識算法是分布式系統(tǒng)保證節(jié)點數(shù)據(jù)狀態(tài)一致性的方法,在區(qū)塊鏈的共識算法分POW(工作量證明)和POS(權(quán)益證明)兩大類。第一類POW模式是在公鏈項目中運用的最廣泛應用的共識算法,比特幣長達10年的運行已充分證明POW的安全性與穩(wěn)定性。POW的特性是將去中心化與安全性發(fā)揮到了極致,但卻犧牲了性能。 如比特幣的峰值TPS為3.87, 平均每筆交易被打包入塊需要10分鐘;比原鏈的峰值TPS為36.32,平均每筆交易被打包入塊需要2.5分鐘。第二類的POS模式是由通過算法來選擇出塊共識節(jié)點,多用于聯(lián)盟鏈和一些追求高TPS的新公鏈項目中。POS的特性是通過支持更小的出塊間隔來達到最優(yōu)的性能,但卻犧牲了部分的安全性與去中心化。

Bystack是一個基于主側(cè)鏈架構(gòu)的區(qū)塊鏈BaaS平臺,將區(qū)塊鏈分為Layer1和Layer2兩層。

Layer1既比原鏈的主鏈,由POW算法保證最高級別的資產(chǎn)安全與去中心化。Layer1的TPS問題則通過跨鏈技術(shù)將資產(chǎn)轉(zhuǎn)移到Layer2上來解決.

側(cè)鏈(既Layer2)使用創(chuàng)新的BBFT共識算法使單條側(cè)鏈的TPS達到20000以上,多條側(cè)鏈配合可使TPS線性增長。

在未達到節(jié)點帶寬與性能瓶頸的前提下,TPS = 區(qū)塊交易數(shù) *每秒確認的區(qū)塊數(shù)。由于區(qū)塊可以容納的最大交易數(shù)可以通過簡單的修改代碼參數(shù)實現(xiàn),所以提高每秒確認的區(qū)塊數(shù)就成了提高TPS的關(guān)鍵方式。如比原鏈的每個區(qū)塊最大可容納5500筆左右的交易,在主鏈上因為平均每150秒出一個塊的POW特性所以TPS是36.32.但上在側(cè)鏈如將每秒進入最終確認的區(qū)塊數(shù)提高到5個則可輕易的將TPS達到25000以上。

DPOS的問題

傳統(tǒng)的DPOS共識算法如EOS已經(jīng)完全可以做到支持每秒2個區(qū)塊的出塊速度,但卻有一個等待最終確認的問題。
因為一個傳統(tǒng)的DPOS區(qū)塊獲得最終確認的依據(jù)是所有超級節(jié)點都在此塊之后出過至少一個子塊。這意味著假設有21個超級節(jié)點,每個節(jié)點每輪出6個塊,平均每個出塊時間為0.5秒。那么一個區(qū)塊獲得最終確認的時間需要60秒。

BFT的問題

基于BFT的POS因為BFT的特性所有每個塊在產(chǎn)出之后可以得到快速的最終確認,但是卻難以獲得較高的TPS.
原因是BFT每個區(qū)塊分為三個狀態(tài),產(chǎn)生,預最終狀態(tài)與最終確認狀態(tài)。
狀態(tài)的改變是依靠收集到2/3節(jié)點的簽名,而簽名產(chǎn)生的效率依賴網(wǎng)絡的延遲。假設部分超級節(jié)點在美國,部分在中國那么通信的延遲大約為200毫秒。
那一個區(qū)塊從產(chǎn)生到最終確認至少需要600毫秒的限制。所以在BFT的共識算法中網(wǎng)絡延遲成為了高TPS的瓶頸。

DPOS BBFT共識算法

Bystack的共識算法是基于DPOS和BBFT算法特性的全新混合共識算法,
通過將出塊與BBFT簽名異步進行的模式使得算法同時具有高TPS與快速最終確認的特性。在BBFT共識算法由全網(wǎng)用戶投票選出n個共識節(jié)點進行出塊。共識節(jié)輪流成為出塊節(jié)點,當成為出塊節(jié)點的共識節(jié)點將會以s秒一個塊的速度連續(xù)出m個區(qū)塊。當區(qū)塊產(chǎn)生之后將直接廣播至全網(wǎng),
但出塊節(jié)點不會等待獲取2/3的其他共識節(jié)點簽名而是繼續(xù)在當前塊的基礎上出下一個塊。此時當前區(qū)塊已是合法區(qū)塊但是未獲得最終確認,類似于比特幣未獲得6個塊確認存在回滾的可能性。當其他共識節(jié)點收到區(qū)塊并且驗證通過之后將會對區(qū)塊進行簽名并廣播到全網(wǎng),當一個區(qū)塊獲得超過2/3的簽名時就進入了最終確認狀態(tài)。

TPS

實現(xiàn)高TPS的核心點是每個共識節(jié)點連續(xù)出m個區(qū)塊。因為當每個節(jié)點只出一個塊的話那么下一個共識節(jié)點出塊需要等待上一個共識節(jié)點出的塊,這里就需要考慮一個網(wǎng)絡延遲帶來的問題。如果把出塊間隔設置小于網(wǎng)絡延遲的,那會有大概率共識節(jié)點在出塊時未收到上一個塊造成分叉的狀態(tài)。但當m設為一個稍大的數(shù)則可以將tps提升到帶寬與節(jié)點性能的極限。
假設當m=20,
當下一個共識節(jié)點出塊時因為網(wǎng)絡延遲未收到最后1個塊但卻收到了之前的19個塊,節(jié)點會接在上一輪第19個塊之后出塊。區(qū)塊鏈會進入瞬間的分叉狀態(tài)但會根據(jù)最長鏈原則在2個塊之后全網(wǎng)狀態(tài)統(tǒng)一。雖然損失了1個區(qū)塊的TPS,
但任保證了出塊間隔小于網(wǎng)絡延遲情況下的高出塊率。

異步BFT

在BBFT的設計中出塊與與共識節(jié)點的BFT簽名是并行進行來抵消因網(wǎng)絡延遲收集BFT簽名對出塊效率的影響。但不同于經(jīng)典BFT算法中有產(chǎn)生,預最終狀態(tài)與最終確認三個狀態(tài),
BBFT根據(jù)區(qū)塊鏈的特性改造使算法只有一個最終確認狀態(tài)。
但添加了兩個額外的限制條件:第一個是當一個共識節(jié)點對相同高度的兩個不同區(qū)塊進行簽名既發(fā)生欺詐;第二個是當一個共識節(jié)點對相同時間的兩個不同區(qū)塊進行簽名既發(fā)生欺詐。通過這種方式的改造減少了共識節(jié)點之間的通信次數(shù),從而降低了區(qū)塊獲得最終確認所花費的時間。同時BBFT還有區(qū)塊獲得直接確認與間接確認兩種。第一種直接確認既區(qū)塊獲得了超過2/3的共識節(jié)點簽名。第二種間接確認是一個區(qū)塊未獲得2/3的共識節(jié)點簽名,但其子塊獲得了超過2/3共識節(jié)點的簽名,BBFT則會認為此區(qū)塊間接的獲得了最終確認的狀態(tài)。

容災容錯

支持只剩單共識節(jié)點存活的情況下支撐整個網(wǎng)絡的運行到下一輪共識節(jié)點替換,但出塊速度會下降為正常情況的1/n.
用戶可在此期間更改投票替換超級節(jié)點,在下一輪共識節(jié)點替換時網(wǎng)絡既恢復正常狀態(tài)。

支持1/3的共識節(jié)點作惡的情況下網(wǎng)絡正常運行,當超過1/3的共識節(jié)點作惡區(qū)塊將長時間不能進入最終確認功能直至網(wǎng)絡運行到下一輪共識節(jié)點被替換。當超過1/2的共識節(jié)點作惡,惡意節(jié)點將控制網(wǎng)絡。

BBFT共識出塊情景分析

以下案例假設 n = 5, m = 3, s = 1,區(qū)塊高度 = 100,時間戳為= 1557148900,?

輪到3號共識節(jié)點準備出第一個塊

完美狀態(tài)?

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3.? 3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

5.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

區(qū)塊C得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

4號節(jié)點成功收到區(qū)塊A, B, C并都處于最終狀態(tài),在此鏈的基礎上繼續(xù)連續(xù)出

4號節(jié)點出高度為104, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)


達到毫秒級最終確認,無回滾發(fā)生, 只有在網(wǎng)絡延遲低與共識節(jié)點穩(wěn)定的時候產(chǎn)生

理想狀態(tài)

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

4.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

4號節(jié)點成功收到區(qū)塊A, B, C但只有A,

B處于最終確認狀態(tài),在此鏈的基礎上繼續(xù)連續(xù)出塊

4號節(jié)點出高度為104, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)

區(qū)塊C得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)


達到秒級最終確認,無回滾發(fā)生,但因收集共識節(jié)點對區(qū)塊的確認簽名,導致最終確認的延遲。
但由于所有區(qū)塊已成功傳遞到下一個出塊共識節(jié)點,所以不影響出塊

出塊共識節(jié)點異常狀態(tài)

時間戳為155714890, 無新塊產(chǎn)生

時間戳為155714891, 無新塊產(chǎn)生

時間戳為155714892, 無新塊產(chǎn)生

4號節(jié)點未收到任何區(qū)塊,輪到挖礦后出高度為101,

時間戳為155714893區(qū)塊A廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)


達到秒級最終確認,無回滾發(fā)生,因共識節(jié)點down機導致全網(wǎng)3秒內(nèi)無節(jié)點出塊。造成的影響是減慢了全網(wǎng)的出塊速度,當單節(jié)點長期down機需要等待下一次投票時重新選出新一輪的共識節(jié)點可修復

網(wǎng)絡延遲異常1

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3.? 3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

5.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

區(qū)塊C得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

4號節(jié)點成功收到區(qū)塊A, B但C區(qū)塊由于延遲問題暫未收到

4號節(jié)點出高度為103, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)

由于2/3的共識節(jié)點已最終確認區(qū)塊C, D無法獲得最終確認

4號節(jié)點收到區(qū)塊C與C的最終確認信息, 回滾區(qū)塊D, 切換鏈至區(qū)塊C

4號節(jié)點出高度為104, 時間戳為155714894區(qū)塊E,廣播至全網(wǎng)

區(qū)塊E得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)


達到秒級最終確認,有回滾在所有沒收到區(qū)塊C的節(jié)點中發(fā)生,造成的影響是減慢了1個塊的出塊速度

網(wǎng)絡延遲異常2

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3.? 3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

5.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

4號節(jié)點成功收到區(qū)塊A, B但C區(qū)塊由于延遲問題暫未收到

4號節(jié)點出高度為103, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)

區(qū)塊D得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3號節(jié)點收到區(qū)塊D與D的最終確認信息, 回滾區(qū)塊C, 切換鏈至區(qū)塊D

4號節(jié)點出高度為104, 時間戳為155714894區(qū)塊E,廣播至全網(wǎng)

區(qū)塊E得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)


達到秒級最終確認,有回滾在所有認同區(qū)塊C的節(jié)點中發(fā)生,造成的影響是減慢了1個塊的出塊速度

網(wǎng)絡延遲異常3?

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3.? 3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

5.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

4號節(jié)點成功收到區(qū)塊A, B但C區(qū)塊由于延遲問題暫未收到

4號節(jié)點出高度為103, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)

區(qū)塊D得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3號節(jié)點收到區(qū)塊D與D的最終確認信息, 回滾區(qū)塊C, 切換鏈至區(qū)塊D

4號節(jié)點出高度為104, 時間戳為155714894區(qū)塊E,廣播至全網(wǎng)

區(qū)塊E得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)


達到秒級最終確認,有回滾在所有認同區(qū)塊C的節(jié)點中發(fā)生,造成的影響是減慢了1個塊的出塊速度

網(wǎng)絡延遲異常4?

3號節(jié)點出高度為101, 時間戳為155714890區(qū)塊A,廣播至全網(wǎng)

區(qū)塊A得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

3.? 3號節(jié)點出高度為102, 時間戳為155714891區(qū)塊B,廣播至全網(wǎng)

區(qū)塊B得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

5.? 3號節(jié)點出高度為103, 時間戳為155714892區(qū)塊C,廣播至全網(wǎng)

4號節(jié)點成功收到區(qū)塊A, B但C區(qū)塊由于延遲問題暫未收到

4號節(jié)點出高度為103, 時間戳為155714893區(qū)塊D,廣播至全網(wǎng)

區(qū)塊C, D各獲得50%的共識節(jié)點投票,網(wǎng)絡進入分叉狀態(tài)

4號節(jié)點出高度為104, 時間戳為155714894區(qū)塊E,廣播至全網(wǎng)

區(qū)塊E得到超過2/3的節(jié)點確認,進入最終確認狀態(tài)

4號節(jié)點出高度為105, 時間戳為155714895區(qū)塊E,廣播至全網(wǎng)


達到秒級最終確認(極端情況分鐘級發(fā)生概率和比特幣回滾6區(qū)塊差不多),有回滾在所有認同區(qū)塊C的節(jié)點中發(fā)生,造成的影響是減慢了1個塊的出塊速度.
此異常情況的極限狀態(tài)是兩條鏈各站約50%的算力并且發(fā)生持續(xù)競爭,直到稍占共識優(yōu)勢的鏈先進入了了最終確認狀態(tài)。

參數(shù)對網(wǎng)絡的影響

1.
共識節(jié)點的個數(shù)其實代表了區(qū)塊鏈網(wǎng)絡的容錯率,n越大則單點故障對網(wǎng)絡造成的影響越小。但n的數(shù)量增大會導致BFT對區(qū)塊簽名數(shù)量要求的增加,會消耗更多的資源與延緩區(qū)塊進入最終確認狀態(tài)所需要的時間

2.
每個節(jié)點連續(xù)出塊的個數(shù)是為了在考慮到網(wǎng)絡延遲的情況下仍可以保證高速出塊的方法。
當連續(xù)出塊個數(shù)足夠時出塊時間理論上可達毫秒級。核心點就是當下一個出塊共識節(jié)點有網(wǎng)絡延遲未收到最后的3個區(qū)塊,但之前的m-3個區(qū)已收到,可在m-3基礎上繼續(xù)出塊。但m過大會導致單共識節(jié)點故障時長時間不出塊

3.
出塊間隔時間明面上是高tps的保證,理論上當出塊間隔為200毫秒時比Bytom的tps可達25000。但s設置的過小可能導致區(qū)塊最終確認時間的延長。

論文鏈接:https://github.com/bystackcom...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24693.html

相關(guān)文章

  • BBFT共識算法深度解析丨Bystack是如何實現(xiàn)單條側(cè)鏈 20000+TPS

    摘要:第一類模式是在公鏈項目中運用的最廣泛應用的共識算法,比特幣長達年的運行已充分證明的安全性與穩(wěn)定性。此時當前區(qū)塊已是合法區(qū)塊但是未獲得最終確認,類似于比特幣未獲得個塊確認存在回滾的可能性。 showImg(https://segmentfault.com/img/bVbtamO?w=1000&h=600); 共識算法是分布式系統(tǒng)保證節(jié)點數(shù)據(jù)狀態(tài)一致性的方法,在區(qū)塊鏈的共識算法分POW(工...

    novo 評論0 收藏0
  • Conflux伍鳴:用DAG結(jié)構(gòu)提升中本聰共識的吞吐率

    摘要:月日圣誕夜,伍鳴博士做客火星財經(jīng)創(chuàng)始學習群,分享了使用結(jié)構(gòu)提升中本聰共識的吞吐率。為什么傳統(tǒng)的基于的中本聰共識機制的吞吐率非常低下總結(jié)來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經(jīng)創(chuàng)始學習群」,分享了Conflux: 使用 DAG 結(jié)構(gòu)提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...

    Anshiii 評論0 收藏0
  • Conflux伍鳴:用DAG結(jié)構(gòu)提升中本聰共識的吞吐率

    摘要:月日圣誕夜,伍鳴博士做客火星財經(jīng)創(chuàng)始學習群,分享了使用結(jié)構(gòu)提升中本聰共識的吞吐率。為什么傳統(tǒng)的基于的中本聰共識機制的吞吐率非常低下總結(jié)來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經(jīng)創(chuàng)始學習群」,分享了Conflux: 使用 DAG 結(jié)構(gòu)提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...

    Meils 評論0 收藏0
  • Conflux伍鳴:用DAG結(jié)構(gòu)提升中本聰共識的吞吐率

    摘要:月日圣誕夜,伍鳴博士做客火星財經(jīng)創(chuàng)始學習群,分享了使用結(jié)構(gòu)提升中本聰共識的吞吐率。為什么傳統(tǒng)的基于的中本聰共識機制的吞吐率非常低下總結(jié)來說,為了安全,不得不如此。這樣,就繞開了中本聰共識中安全與效率兩難的困境。 12月25日圣誕夜,Conflux CTO伍鳴博士做客「火星財經(jīng)創(chuàng)始學習群」,分享了Conflux: 使用 DAG 結(jié)構(gòu)提升中本聰共識的吞吐率。 嘉賓簡介: showImg(h...

    k00baa 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<