亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

淺談asch系統(tǒng)的共識(shí)機(jī)制與容錯(cuò)性

Gu_Yan / 3075人閱讀

摘要:從外因的角度來說,系統(tǒng)應(yīng)該能夠容忍黑客攻擊受托人作弊的情況。這里的黑客攻擊不是說,造成的后果最多是部分服務(wù)器宕機(jī),我們已經(jīng)歸到內(nèi)因里去了,這里的黑客攻擊主要是指通過入侵拿到部分受托人密鑰并獲取權(quán)限,然后利用這些權(quán)限獲利。

0 前言

我曾分析了DPOS算法的漏洞并且模擬了一個(gè)簡單的攻擊的方法,然后實(shí)現(xiàn)了一個(gè)簡化的PBFT算法模型試圖去修復(fù)該漏洞,并且對(duì)比了效果。

隨后在正式的產(chǎn)品中實(shí)現(xiàn)了完整版的算法,并且部署了10臺(tái)機(jī)器進(jìn)行了測(cè)試。測(cè)試的結(jié)果在安全性方面完全符合預(yù)期,即經(jīng)過頻繁的重啟、不按常規(guī)的廣播區(qū)塊、少數(shù)受托人聯(lián)合作弊的情況下,整個(gè)系統(tǒng)依然不會(huì)分叉;但是在性能方面,不太理想,在沒有任何交易的情況下,網(wǎng)路流量的峰值(廣播區(qū)塊的瞬間)達(dá)到了1.5Mbps。

其實(shí)這個(gè)流量也不算離譜,為了安全性,付出一些帶寬的代價(jià)也算合理,但我們認(rèn)為還有很大的優(yōu)化空間,而且asch作為一個(gè)開發(fā)平臺(tái),平臺(tái)底層的效率和穩(wěn)定性是很重要的,帶寬方面的優(yōu)化是很有必要的,我們立刻著手去做了。截止到8月9號(hào),系統(tǒng)已升級(jí)到0.9.5版本,在49個(gè)節(jié)點(diǎn)組成的testnet中,帶寬的峰值在600kbps左右。
帶寬統(tǒng)計(jì)
下面我們會(huì)對(duì)比下這幾個(gè)版本共識(shí)算法的差異和基本原理。為了方便起見,我們把最初實(shí)現(xiàn)的dpos with pbft算法稱為AC0.5(AC即asch consensus),優(yōu)化后的版本稱為AC1.0。
1 AC0.5與DPOS

我們之前分析過,DPOS的主要問題在于受托人的權(quán)力過高,而其他節(jié)點(diǎn)對(duì)區(qū)塊的有效性驗(yàn)證過于簡單,這就很容造成一個(gè)局面,即不同內(nèi)容、但相同高度的區(qū)塊共存于網(wǎng)絡(luò)中的不同節(jié)點(diǎn),也就是所謂的分叉,進(jìn)而造成雙重支付。

PBFT算法的本質(zhì)則是讓每一個(gè)節(jié)點(diǎn)都盡可能知道其他節(jié)點(diǎn)的決策,并以此來確定自己的決策。

因此,PBFT帶來額外的流量消耗就可以理解了,其根源也找到了。在AC0.5算法中,這個(gè)額外的流量或者說“其他節(jié)點(diǎn)的決策”指的就是每個(gè)節(jié)點(diǎn)對(duì)下一個(gè)區(qū)塊的投票信息,投票信息主要內(nèi)容有4個(gè)部分,即區(qū)塊高度、區(qū)塊ID、簽名、公鑰,其中區(qū)塊高度和區(qū)塊ID的長度可以忽略不計(jì),簽名的長度為64字節(jié),公鑰的長度為32字節(jié),一個(gè)區(qū)塊達(dá)成共識(shí)需要全部受托人總數(shù)的2/3的投票,在asch系統(tǒng)中受托人總數(shù)為101人,也就是說需要至少67個(gè)投票。一個(gè)區(qū)塊的大小大約是200字節(jié),相當(dāng)于2個(gè)投票的大小,因此AC0.5中流量消耗是原始DPOS的30多倍(在沒有交易的空block情況下,如果有交易則交易不會(huì)消耗額外的流量)。
2 AC1.0做了哪些改進(jìn)

2.1 序列化方法

AC0.5中服務(wù)器之間的消息傳遞使用json格式,二進(jìn)制字段則是轉(zhuǎn)化為hex編碼后再進(jìn)行傳輸,投票中的二進(jìn)制字段包括公鑰和簽名,之前我們算的是100字節(jié),轉(zhuǎn)化為hex編碼后則翻1倍,變成200字節(jié)了。

另外json的字段信息和冗余的分隔符所占的字節(jié)數(shù)也不少。

AC1.0對(duì)這一點(diǎn)做了改進(jìn),使用了protobuf作為序列化方法,效果很不錯(cuò),帶寬降為原來的60%左右。
consensus proto

2.2 算法流程

AC0.5的流程為
廣播一個(gè)待確認(rèn)區(qū)塊
收集選票(以廣播的形式)
收集確認(rèn)信息(以廣播的形式)
確認(rèn)區(qū)塊
AC1.0的流程為
propose (廣播一個(gè)區(qū)塊的元信息及當(dāng)前generator的ip信息)
collect votes (其他節(jié)點(diǎn)采用一對(duì)一的方式直接將選票發(fā)送給當(dāng)前generator)
commit and broadcast(廣播一個(gè)已經(jīng)確認(rèn)的區(qū)塊并攜帶投票信息)
通過對(duì)比可以發(fā)現(xiàn),AC0.5需要三次廣播,AC1.0僅需要兩次廣播,并且在propose環(huán)節(jié),只廣播了區(qū)塊的元信息,不包括交易信息,只廣播元信息有個(gè)好處,可以防止在區(qū)塊無法達(dá)成共識(shí)的情況下白白浪費(fèi)流量,因?yàn)槿绻B元信息都無法通過,那就沒必要廣播交易信息了。
2.3 廣播協(xié)議

AC0.5使用的廣播協(xié)議為最樸素也最粗暴的gossip算法,即隨機(jī)選取一定數(shù)量的相鄰節(jié)點(diǎn)然后將消息廣播給它們, 這個(gè)一定數(shù)量固定為100. 任何一個(gè)節(jié)點(diǎn)在收到一條信息后,會(huì)計(jì)算這個(gè)消息的hash,如果發(fā)現(xiàn)沒有收到過,就會(huì)繼續(xù)廣播給它的相鄰節(jié)點(diǎn)。也就是說一輪廣播需要進(jìn)行100 * N次通訊,在N小于100的情況下,相當(dāng)于復(fù)雜度為O(N^2), 在這里N為整個(gè)網(wǎng)絡(luò)的節(jié)點(diǎn)個(gè)數(shù)。

AC1.0把這個(gè)固定數(shù)量改為sqrt(N), 也就是說假如有100個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)只需要廣播給10個(gè)相鄰節(jié)點(diǎn)。

這個(gè)改動(dòng)很小,但是參數(shù)的設(shè)置卻是非常需要經(jīng)驗(yàn)的,我們做過了大量的測(cè)試后,認(rèn)為sqrt(N)可以達(dá)到比較理想的效果,一次廣播需要的通訊次數(shù)略高于N * sqrt(N)。

除此之外,我們還實(shí)現(xiàn)了一個(gè)基于一致性哈希的廣播算法,性能達(dá)到了極致,算法復(fù)雜度降低到了O(N), 但是這個(gè)算法需要更多的測(cè)試,其穩(wěn)定性和可靠性也不如更簡單的隨機(jī)算法。

算法的demo版本在這里,有興趣的可以研究下。
gossip topology

3 容錯(cuò)性

關(guān)于容錯(cuò)性,我認(rèn)為可以從內(nèi)因和外因兩個(gè)方面來說。

從內(nèi)因的角度來說,系統(tǒng)應(yīng)該能容忍正常節(jié)點(diǎn)出錯(cuò),這些錯(cuò)誤主要是指服務(wù)器宕機(jī)、硬件錯(cuò)誤、網(wǎng)絡(luò)擁塞等。Asch系統(tǒng)能夠容忍最多1/3的受托人節(jié)點(diǎn)同時(shí)出錯(cuò),假如某個(gè)受托人的節(jié)點(diǎn)出錯(cuò)了,那輪到該受托人生產(chǎn)區(qū)塊的時(shí)候,就會(huì)缺失一個(gè),并順延到下一個(gè)10秒。假如超過1/3節(jié)點(diǎn)同時(shí)出錯(cuò),那么系統(tǒng)將暫停工作,等到足夠的節(jié)點(diǎn)恢復(fù)正常后,系統(tǒng)就可以立即恢復(fù)正常。

假如1/3以上的節(jié)點(diǎn)永遠(yuǎn)無法恢復(fù)(這種情況是存在的,比如他們的密鑰丟了),那么系統(tǒng)必須要通過一次軟件升級(jí)來恢復(fù),并且這個(gè)升級(jí)不強(qiáng)制所有節(jié)點(diǎn)執(zhí)行,只要部分節(jié)點(diǎn)升級(jí),區(qū)塊生產(chǎn)恢復(fù)正常后,通過受托人投票把那些不正常的節(jié)點(diǎn)撤銷掉,系統(tǒng)就恢復(fù)如常了。

從外因的角度來說,系統(tǒng)應(yīng)該能夠容忍黑客攻擊、受托人作弊的情況。這里的黑客攻擊不是說DDOS,DDOS造成的后果最多是部分服務(wù)器宕機(jī),我們已經(jīng)歸到內(nèi)因里去了,這里的黑客攻擊主要是指通過入侵拿到部分受托人密鑰并獲取權(quán)限,然后利用這些權(quán)限獲利。獲利的手段無非是廣播多個(gè)版本的區(qū)塊,在短時(shí)間內(nèi)造成分叉,然后進(jìn)行雙重支付。在asch系統(tǒng)中,黑客必須要同時(shí)獲得1/3以上節(jié)點(diǎn)的密鑰,才能夠發(fā)動(dòng)連續(xù)攻擊,使網(wǎng)絡(luò)的分叉持續(xù)下去,否則系統(tǒng)將通過最長鏈同步算法迅速消除分叉,分叉之間的差距不會(huì)超過1個(gè)區(qū)塊高度,也就是說2次確認(rèn)以上的交易基本上不可能被回滾了。

從現(xiàn)有的使用DPOS算法的系統(tǒng)來看,包括bitshares、crypti、lisk在內(nèi),這些系統(tǒng)出現(xiàn)的分叉都是內(nèi)因造成的,甚至大多數(shù)是算法實(shí)現(xiàn)上的bug所導(dǎo)致的。黑客攻擊DPOS的案例還沒有聽說過,雖然存在理論上的漏洞,但要想真正的攻擊,需要高超的技術(shù)和昂貴的資源,成本和收益不對(duì)等,因此也不會(huì)有人去攻擊,當(dāng)一個(gè)DPOS系統(tǒng)的市值慢慢增大,我們可以繼續(xù)提高受托人節(jié)點(diǎn)的數(shù)量,進(jìn)一步提高攻擊的成本,因此外因的風(fēng)險(xiǎn)基本可以忽略。

最后,我想解釋一下分叉這個(gè)詞,分叉來源于英文的fork,fork根據(jù)上下文的不同,我認(rèn)為可以翻譯成兩種意思,一個(gè)是分叉,另一個(gè)是分裂。

分叉指的是在社區(qū)成員團(tuán)結(jié)一致的情況下系統(tǒng)因?yàn)閎ug或被攻擊造成的不一致性,而分裂是指社區(qū)成員因觀念分化造成軟件走向不同的方向。
分叉強(qiáng)調(diào)的是系統(tǒng)的bug和不一致性,強(qiáng)調(diào)了物的因素,分叉后系統(tǒng)可能還是一個(gè)系統(tǒng),并且是很可能被復(fù)原的;而分裂則是強(qiáng)調(diào)了人為的因素,一旦社區(qū)分裂,則系統(tǒng)一分為二,變成兩個(gè)系統(tǒng)。

從這個(gè)角度來說,asch對(duì)于分叉可以做到事前的預(yù)防和事后的修復(fù),但無法應(yīng)對(duì)社區(qū)的分裂,任何一個(gè)區(qū)塊鏈系統(tǒng)也無法解決分裂的問題,包括比特幣和任何一個(gè)聲稱可以避免分叉的PBFT系統(tǒng)。

關(guān)于側(cè)鏈和區(qū)塊鏈開發(fā)的問題,歡迎加群:485979564,一起討論交流

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/86539.html

相關(guān)文章

  • 有了lisk,為什么我們還要做一個(gè)Asch?

    摘要:事實(shí)上,已經(jīng)成功了一半目前在區(qū)塊鏈領(lǐng)域融資金額排行第二,僅次于以太坊。以上這些,就是我們經(jīng)過深思熟慮后,雖有以太坊等珠玉在前,但我們依然要做一個(gè)同類型的產(chǎn)品的原因。 0 前言 首先要聲明一點(diǎn),我們和我們的一些朋友都是lisk的投資人和支持者,我們也相信lisk會(huì)成功。 事實(shí)上,lisk已經(jīng)成功了一半,目前在區(qū)塊鏈領(lǐng)域融資金額排行第二,僅次于以太坊。 那為什么我們還要做一個(gè)類似的Asch...

    int64 評(píng)論0 收藏0
  • 有了lisk,為什么我們還要做一個(gè)Asch?

    摘要:事實(shí)上,已經(jīng)成功了一半目前在區(qū)塊鏈領(lǐng)域融資金額排行第二,僅次于以太坊。以上這些,就是我們經(jīng)過深思熟慮后,雖有以太坊等珠玉在前,但我們依然要做一個(gè)同類型的產(chǎn)品的原因。 0 前言 首先要聲明一點(diǎn),我們和我們的一些朋友都是lisk的投資人和支持者,我們也相信lisk會(huì)成功。 事實(shí)上,lisk已經(jīng)成功了一半,目前在區(qū)塊鏈領(lǐng)域融資金額排行第二,僅次于以太坊。 那為什么我們還要做一個(gè)類似的Asch...

    xuhong 評(píng)論0 收藏0
  • 區(qū)塊鏈側(cè)鏈技術(shù)優(yōu)勢(shì)

    摘要:解決生產(chǎn)力問題我們?cè)谥袨閭?cè)鏈提供了一套模板,或者說腳手架,也可以叫做開發(fā)框架,側(cè)鏈的大部分底層功能都是寫好的,開發(fā)者只需要關(guān)心具體的業(yè)務(wù)邏輯,在這一點(diǎn)上,與以太坊的開發(fā)難度相當(dāng)。 asch使用的是不同于以太坊和比特幣的側(cè)鏈架構(gòu),dapp是運(yùn)行在側(cè)鏈上的,每套側(cè)鏈對(duì)應(yīng)一個(gè)dapp。 側(cè)鏈的獨(dú)立性側(cè)鏈架構(gòu)的好處是代碼和數(shù)據(jù)獨(dú)立,不增加主鏈的負(fù)擔(dān),避免數(shù)據(jù)過度膨脹,實(shí)際上是一種天然的分片機(jī)制...

    Jackwoo 評(píng)論0 收藏0
  • 區(qū)塊鏈共識(shí)算法

    摘要:沒有哪種共識(shí)機(jī)制是完美的,各共識(shí)機(jī)制都有其優(yōu)缺點(diǎn),有些共識(shí)機(jī)制就是為了解決一些特定問題而生區(qū)塊鏈中的共識(shí)算法分為驗(yàn)證池,工作證明。網(wǎng)絡(luò)延遲有可能使某些代表沒能及時(shí)廣播他們的區(qū)塊,而這將導(dǎo)致區(qū)塊鏈分叉。 沒有哪種共識(shí)機(jī)制是完美的,各共識(shí)機(jī)制都有其優(yōu)缺點(diǎn),有些共識(shí)機(jī)制就是為了解決一些特定問題而生 區(qū)塊鏈中的共識(shí)算法分為:POW、POS、DPOS、PBFT、POOL驗(yàn)證池 1、POW:Pro...

    Jrain 評(píng)論0 收藏0
  • 漫談共識(shí)機(jī)制

    摘要:更多區(qū)塊鏈知識(shí)共識(shí)機(jī)制是區(qū)塊鏈領(lǐng)域的核心概念,無共識(shí),不區(qū)塊鏈。是比特幣采用的共識(shí)算法,從誕生起運(yùn)行至今,表現(xiàn)穩(wěn)健,是史上最成功的共識(shí)算法,沒有之一。挖到礦的礦工同時(shí)得到一筆算法賦予的獎(jiǎng)勵(lì),也就是一些比特幣。 更多區(qū)塊鏈知識(shí) 共識(shí)機(jī)制是區(qū)塊鏈領(lǐng)域的核心概念,無共識(shí),不區(qū)塊鏈。 區(qū)塊鏈作為一個(gè)分布式系統(tǒng),可以由不同的人或機(jī)構(gòu),將安裝了區(qū)塊鏈軟件的計(jì)算機(jī)(簡稱節(jié)點(diǎn))加入到網(wǎng)絡(luò)里,然后共同計(jì)...

    Wuv1Up 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<