国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談asch系統的共識機制與容錯性

Gu_Yan / 2988人閱讀

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

0 前言

我曾分析了DPOS算法的漏洞并且模擬了一個簡單的攻擊的方法,然后實現了一個簡化的PBFT算法模型試圖去修復該漏洞,并且對比了效果。

隨后在正式的產品中實現了完整版的算法,并且部署了10臺機器進行了測試。測試的結果在安全性方面完全符合預期,即經過頻繁的重啟、不按常規的廣播區塊、少數受托人聯合作弊的情況下,整個系統依然不會分叉;但是在性能方面,不太理想,在沒有任何交易的情況下,網路流量的峰值(廣播區塊的瞬間)達到了1.5Mbps。

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

我們之前分析過,DPOS的主要問題在于受托人的權力過高,而其他節點對區塊的有效性驗證過于簡單,這就很容造成一個局面,即不同內容、但相同高度的區塊共存于網絡中的不同節點,也就是所謂的分叉,進而造成雙重支付。

PBFT算法的本質則是讓每一個節點都盡可能知道其他節點的決策,并以此來確定自己的決策。

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

2.1 序列化方法

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

另外json的字段信息和冗余的分隔符所占的字節數也不少。

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

2.2 算法流程

AC0.5的流程為
廣播一個待確認區塊
收集選票(以廣播的形式)
收集確認信息(以廣播的形式)
確認區塊
AC1.0的流程為
propose (廣播一個區塊的元信息及當前generator的ip信息)
collect votes (其他節點采用一對一的方式直接將選票發送給當前generator)
commit and broadcast(廣播一個已經確認的區塊并攜帶投票信息)
通過對比可以發現,AC0.5需要三次廣播,AC1.0僅需要兩次廣播,并且在propose環節,只廣播了區塊的元信息,不包括交易信息,只廣播元信息有個好處,可以防止在區塊無法達成共識的情況下白白浪費流量,因為如果連元信息都無法通過,那就沒必要廣播交易信息了。
2.3 廣播協議

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

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

這個改動很小,但是參數的設置卻是非常需要經驗的,我們做過了大量的測試后,認為sqrt(N)可以達到比較理想的效果,一次廣播需要的通訊次數略高于N * sqrt(N)。

除此之外,我們還實現了一個基于一致性哈希的廣播算法,性能達到了極致,算法復雜度降低到了O(N), 但是這個算法需要更多的測試,其穩定性和可靠性也不如更簡單的隨機算法。

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

3 容錯性

關于容錯性,我認為可以從內因和外因兩個方面來說。

從內因的角度來說,系統應該能容忍正常節點出錯,這些錯誤主要是指服務器宕機、硬件錯誤、網絡擁塞等。Asch系統能夠容忍最多1/3的受托人節點同時出錯,假如某個受托人的節點出錯了,那輪到該受托人生產區塊的時候,就會缺失一個,并順延到下一個10秒。假如超過1/3節點同時出錯,那么系統將暫停工作,等到足夠的節點恢復正常后,系統就可以立即恢復正常。

假如1/3以上的節點永遠無法恢復(這種情況是存在的,比如他們的密鑰丟了),那么系統必須要通過一次軟件升級來恢復,并且這個升級不強制所有節點執行,只要部分節點升級,區塊生產恢復正常后,通過受托人投票把那些不正常的節點撤銷掉,系統就恢復如常了。

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

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

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

分叉指的是在社區成員團結一致的情況下系統因為bug或被攻擊造成的不一致性,而分裂是指社區成員因觀念分化造成軟件走向不同的方向。
分叉強調的是系統的bug和不一致性,強調了物的因素,分叉后系統可能還是一個系統,并且是很可能被復原的;而分裂則是強調了人為的因素,一旦社區分裂,則系統一分為二,變成兩個系統。

從這個角度來說,asch對于分叉可以做到事前的預防和事后的修復,但無法應對社區的分裂,任何一個區塊鏈系統也無法解決分裂的問題,包括比特幣和任何一個聲稱可以避免分叉的PBFT系統。

關于側鏈和區塊鏈開發的問題,歡迎加群:485979564,一起討論交流

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86539.html

相關文章

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

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

    int64 評論0 收藏0
  • 有了lisk,為什么我們還要做一個Asch?

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

    xuhong 評論0 收藏0
  • 區塊鏈側鏈技術優勢

    摘要:解決生產力問題我們在中為側鏈提供了一套模板,或者說腳手架,也可以叫做開發框架,側鏈的大部分底層功能都是寫好的,開發者只需要關心具體的業務邏輯,在這一點上,與以太坊的開發難度相當。 asch使用的是不同于以太坊和比特幣的側鏈架構,dapp是運行在側鏈上的,每套側鏈對應一個dapp。 側鏈的獨立性側鏈架構的好處是代碼和數據獨立,不增加主鏈的負擔,避免數據過度膨脹,實際上是一種天然的分片機制...

    Jackwoo 評論0 收藏0
  • 區塊鏈共識算法

    摘要:沒有哪種共識機制是完美的,各共識機制都有其優缺點,有些共識機制就是為了解決一些特定問題而生區塊鏈中的共識算法分為驗證池,工作證明。網絡延遲有可能使某些代表沒能及時廣播他們的區塊,而這將導致區塊鏈分叉。 沒有哪種共識機制是完美的,各共識機制都有其優缺點,有些共識機制就是為了解決一些特定問題而生 區塊鏈中的共識算法分為:POW、POS、DPOS、PBFT、POOL驗證池 1、POW:Pro...

    Jrain 評論0 收藏0
  • 漫談共識機制

    摘要:更多區塊鏈知識共識機制是區塊鏈領域的核心概念,無共識,不區塊鏈。是比特幣采用的共識算法,從誕生起運行至今,表現穩健,是史上最成功的共識算法,沒有之一。挖到礦的礦工同時得到一筆算法賦予的獎勵,也就是一些比特幣。 更多區塊鏈知識 共識機制是區塊鏈領域的核心概念,無共識,不區塊鏈。 區塊鏈作為一個分布式系統,可以由不同的人或機構,將安裝了區塊鏈軟件的計算機(簡稱節點)加入到網絡里,然后共同計...

    Wuv1Up 評論0 收藏0

發表評論

0條評論

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