當前位置:首頁 » 區塊鏈知識 » 區塊鏈防止sybil攻擊

區塊鏈防止sybil攻擊

發布時間: 2023-06-02 14:39:37

區塊鏈如何保證使用安全

區塊鏈項目(尤其是公有鏈)的一個特點是開源。通過開放源代碼,來提高項目的可信性,也使更多的人可以參與進來。但源代碼的開放也使得攻擊者對於區塊鏈系統的攻擊變得更加容易。近兩年就發生多起黑客攻擊事件,近日就有匿名幣Verge(XVG)再次遭到攻擊,攻擊者鎖定了XVG代碼中的某個漏洞,該漏洞允許惡意礦工在區塊上添加虛假的時間戳,隨後快速挖出新塊,短短的幾個小時內謀取了近價值175萬美元的數字貨幣。雖然隨後攻擊就被成功制止,然而沒人能夠保證未來攻擊者是否會再次出擊。

當然,區塊鏈開發者們也可以採取一些措施

一是使用專業的代碼審計服務,

二是了解安全編碼規范,防患於未然。

密碼演算法的安全性

隨著量子計算機的發展將會給現在使用的密碼體系帶來重大的安全威脅。區塊鏈主要依賴橢圓曲線公鑰加密演算法生成數字簽名來安全地交易,目前最常用的ECDSA、RSA、DSA 等在理論上都不能承受量子攻擊,將會存在較大的風險,越來越多的研究人員開始關注能夠抵抗量子攻擊的密碼演算法。

當然,除了改變演算法,還有一個方法可以提升一定的安全性:

參考比特幣對於公鑰地址的處理方式,降低公鑰泄露所帶來的潛在的風險。作為用戶,尤其是比特幣用戶,每次交易後的余額都採用新的地址進行存儲,確保有比特幣資金存儲的地址的公鑰不外泄。

共識機制的安全性

當前的共識機制有工作量證明(Proof of Work,PoW)、權益證明(Proof of Stake,PoS)、授權權益證明(Delegated Proof of Stake,DPoS)、實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)等。

PoW 面臨51%攻擊問題。由於PoW 依賴於算力,當攻擊者具備算力優勢時,找到新的區塊的概率將會大於其他節點,這時其具備了撤銷已經發生的交易的能力。需要說明的是,即便在這種情況下,攻擊者也只能修改自己的交易而不能修改其他用戶的交易(攻擊者沒有其他用戶的私鑰)。

在PoS 中,攻擊者在持有超過51%的Token 量時才能夠攻擊成功,這相對於PoW 中的51%算力來說,更加困難。

在PBFT 中,惡意節點小於總節點的1/3 時系統是安全的。總的來說,任何共識機制都有其成立的條件,作為攻擊者,還需要考慮的是,一旦攻擊成功,將會造成該系統的價值歸零,這時攻擊者除了破壞之外,並沒有得到其他有價值的回報。

對於區塊鏈項目的設計者而言,應該了解清楚各個共識機制的優劣,從而選擇出合適的共識機制或者根據場景需要,設計新的共識機制。

智能合約的安全性

智能合約具備運行成本低、人為干預風險小等優勢,但如果智能合約的設計存在問題,將有可能帶來較大的損失。2016 年6 月,以太坊最大眾籌項目The DAO 被攻擊,黑客獲得超過350 萬個以太幣,後來導致以太坊分叉為ETH 和ETC。

對此提出的措施有兩個方面:

一是對智能合約進行安全審計,

二是遵循智能合約安全開發原則。

智能合約的安全開發原則有:對可能的錯誤有所准備,確保代碼能夠正確的處理出現的bug 和漏洞;謹慎發布智能合約,做好功能測試與安全測試,充分考慮邊界;保持智能合約的簡潔;關注區塊鏈威脅情報,並及時檢查更新;清楚區塊鏈的特性,如謹慎調用外部合約等。

數字錢包的安全性

數字錢包主要存在三方面的安全隱患:第一,設計缺陷。2014 年底,某簽報因一個嚴重的隨機數問題(R 值重復)造成用戶丟失數百枚數字資產。第二,數字錢包中包含惡意代碼。第三,電腦、手機丟失或損壞導致的丟失資產。

應對措施主要有四個方面:

一是確保私鑰的隨機性;

二是在軟體安裝前進行散列值校驗,確保數字錢包軟體沒有被篡改過;

三是使用冷錢包;

四是對私鑰進行備份。

㈡ 九種常見的攻擊區塊鏈的方式


九種常見的攻擊區塊鏈的方式,很多人都知道區塊鏈這個東西,也都知道區塊鏈是會被人攻擊的,很多人不知道有哪鏈臘些可以攻擊區塊鏈的方式,下面跟著小編一起來看看吧,希望能幫到你。
九種常見的攻擊區塊鏈的方式
1、日蝕攻擊-一個節點將選擇「x」個節點作為訪問區塊鏈的基礎,該節點從這「x」個節點獲取區塊鏈的數據。
如果攻擊者可以使得此節點選擇的「x」個節點都為攻擊者可控制的節點,就可以使得被攻擊節點處在一個「孤立」的狀態。被攻擊節點將從主網中被隔離出來,完全由攻擊者控制。
2、女巫攻擊-這里的「女巫」並不是指擁有魔法的女人,而是出自一部美國電影《Sybil》,劇中的主人公擁有16重人棚亮滑格,扮演著16個不鍵好同的角色。而女巫攻擊就是指同一節點偽裝成不同節點發起的一種攻擊。
攻擊者通過偽造的身份,使少量節點偽裝成大量節點,進而影響整個網路。攻擊者可能利用女巫攻擊進行雙花、實現51%攻擊等,並且要實施日蝕攻擊,一般都會先進行女巫攻擊。
3、異形攻擊-異形攻擊又稱為「地址污染」。
當不同公鏈使用兼容的握手協議時,我們稱這些公鏈為同類鏈。攻擊者將同類鏈的節點數據加入被攻擊的公鏈節點中,當被攻擊的公鏈節點進行通信並互換地址池時,就會污染其他正常節點的地址池,並持續污染整個公鏈網路,導致公鏈通信性能下降,最終造成節點阻塞等現象。
4、自私挖礦_區塊鏈的共識機制決定著節點會認同最長鏈才是真實有效的。攻擊者可以在當前最新區塊上持續挖礦但不進行廣播,從而隱藏自己挖出的區塊。
當攻擊者節點隱藏的區塊長於已在鏈上的公布的最長區塊時再進行廣播,從而成為最長鏈,使得原先的最長鏈進行回滾,從而實現雙花等攻擊。
5、挖礦木馬_攻擊者通過上傳惡意程序到公開網路或者製作蠕蟲病毒等方式將挖礦程序傳播到他人計算機上。
利用他人計算機資源和電力進行挖礦,獲取挖礦利益。被攻擊的計算機會消耗大量的資源,導致電腦卡頓,使用壽命減短。
6、51%算力攻擊_51%算力攻擊是區塊鏈最著名的攻擊方式之一。
在一個POW共識的區塊鏈網路中,算力即是權力。當超過50%的算力都由一人控制時,此人就可以任意的撤銷和阻止交易,進而實現雙花。
7、時間劫持攻擊_一個節點是通過其他節點時間的中位值來確定時間的。
如果攻擊者將一個惡意的節點列表置入被攻擊節點的對等節點列表中,就可以控制此節點的時間,例如通過日蝕攻擊。
8、芬尼攻擊_如果攻擊者可以隱藏一個包含自己交易的區塊,就可能實現一筆雙花。
當一個交易所或其他機構接受0確認的交易時,攻擊者可以向其進行轉賬,花費其隱藏區塊中已經花費的資金,在新交易的區塊廣播前,將隱藏的區塊廣播。
因為所隱藏的區塊時間更早,所以在後面進行的花費將被回滾,從而實現雙花。
9、種族攻擊_此類型攻擊是「芬尼攻擊」的分支,攻擊者將同時進行兩筆交易,花費同一筆資金,一筆轉給支持0確認的商家進行提現;一筆轉賬給自己,並給予更高的gas。
節點會優先處理gas更高的交易,所以後一筆交易將不會被執行。通常攻擊者會連入與被攻擊商家較近的節點進行操作,使得商家優先收到最終不被執行的交易。

㈢ 拜占庭問題與共識演算法

「拜占庭將軍問題」(Byzantine Generals Problem)是一個經典難題,這個難題是這樣描述的:拜占庭是東羅馬帝國的首都,它的軍隊分成多個師,每個師都由一個將軍統領。這些將軍通過信使進行交流,來達成一個共同作戰方案,有些將軍可能是叛徒,想故意破壞這個過程,這會造成那些忠誠的將軍也無法達成一個統一的作戰計劃。這個難題在於如何讓那些忠誠的將軍在這樣的情況下達成統一作戰方案,而避免那些叛徒對作戰方案的誤導。

在點對點、分布式的區塊鏈中,常常用拜占庭問題來比喻節點如何達成共識的問題。將軍即對應著一個個節點,達成統一作戰方案即達成共識,正確的打包與驗證區塊數據,防止惡意節點(叛徒將軍)破壞區塊鏈的運行。

顧名思義,就是能夠解決拜占庭問題,使各個節點達成共識,解決共識問題的各種機制也被稱為共識演算法。在各種各樣的共識演算法中,又一直存在一個「不可能三角」的難題,這三角是指「安全性」、「去中心化」和「速度」,也就是說難以同時保證速度、安全性和去中心化程度,三者之間往往會顧此失彼。

現在各種共識演算法算起來有好幾十種,計算機界也一直處於研究階段,並沒有說哪種演算法已經完美。
下面盤點一下講解pBET和POW兩種演算法,以及它們的「安全性」、「去中心化」和「速度」如何。

實用拜占庭容錯是一種較早的共識演算法。pBFT的一個原則,就是少數服從多數。節點通過在相互傳遞有關決策的消息,誰的決策贊同的人數多,就採用誰的。所以在這個系統中,安全性隨著誠實節點的數量而增加。誠實節點同意正確的決策,拒絕惡意節點的錯誤決策,只要惡意節點的數量少於總數的1/3,就能保證達成共識。

達成共識可以簡化為四步:

pBFT 使用投票機制以循環方式選舉領導節點。
領導者發起決策並將其廣播給輔助節點。
所有節點,包括領導節點和輔助節點,都發送響應。
當 ⅔ + 1 個節點發送相同的響應時,該響應被認為是有效的。

如果領導者有惡意行為,它可以被大多數節點刪除。

按少數服從多數的原則。那按理來說,只要惡意節點的數量少於1/2就夠了啊,那麼為什麼PBFT演算法的容錯數量要滿足惡意節點的數量少於總數的1/3呢?

因為 PBFT 演算法的除了需要支持容錯故障節點之外,還需要支持容錯作惡節點。假設集群節點數為 N,有問題的節點為 f。有問題的節點中,可以既是故障節點,也可以是作惡節點,或者只是故障節點或者只是作惡節點。那麼會產生以下兩種極端情況:

(1)這f 個有問題節點既是故障節點,又是作惡節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,正確節點的數量就會比故障節點數量多,那麼集群就能達成共識,即總節點數為f+(f+1)=n,也就是說這種情況支持的最大容錯節點數量是 (n-1)/2。
(2)故障節點和作惡節點都是不同的節點。那麼就會有 f 個作惡節點和 f 個故障節點,當發現節點是作惡節點後,會被集群排除在外,剩下 f 個故障節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。所以,所有類型的節點數量加起來就是 f+1 個正常節點,f個故障節點和f個作惡節點,即 3f+1=n。

結合上述兩種情況,因此PBFT演算法支持的最大容錯節點數量是(n-1)/3,即少於1/3。

pBFT的優缺點
pBFT 系統不需要高計算資源或大量能源來運行。pBFT 在節點少的時候可以快速達成共識,因為所有節點都在不斷地相互通信。一旦節點就決策達成一致,交易就完成了。

然而,pBFT的缺點也很明顯:頻繁的通信使它只能在節點數量有限的網路中正常工作。隨著每個新節點加入網路,通信開銷呈指數增長,響應所需的時間也隨之增加。

pBFT 網路也容易受到女巫(Sybil)攻擊,女巫就是惡意黑客製造的不同節點,黑客可以控制多個節點,使其超過1/3,那系統將無法達成正確的共識。

從不可能三角的角度來看,由此可見pBFT在節點少的時候速度快,但安全性差,去中心化低;節點多了又會導致速度很慢。

中本聰設計了POW共識機制來解決上面pBFT這個經典共識的可擴展性問題。

上面說到,pBFT通過不斷廣播然後計算節點的消息數,時間花費過長。POW是怎麼做的:我不要計算節點數是否超過2/3,我直接選一個節點,按它的決策,其他節點全部同步它的決策。這樣就省去在全節點通信然後計算節點數的費時操作。

那麼,對於哪個節點來打包區塊,那就很重要,萬一是惡意節點呢?必須對打包的節點進行要求,哪個節點有權力進行打包呢?那就是解決復雜的數學問題,俗稱挖kuang。節點必須花費大量算力和電費來爭取某次打包區塊的權力。這樣的成本就限制了黑客的女巫攻擊。

如果打包區塊的權力真的被黑客搶到了,那可能會有什麼問題?

(1)竊取冰糖橙
黑客能夠竊取屬於另一個用戶,不受她控制的地址里的冰糖橙嗎?答案是否定的。即使這一輪是由黑客打包區塊鏈上的下一個區塊,她也不可能竊取別人的比特幣。這么做的話,黑客需要發起一筆有效的交易來轉移比特幣到自己的地址。這就要求黑客偽造比特幣擁有者的簽名,然而如果數字簽名機制是安全的,她是無法辦到的。只要背後的密碼學基礎是牢靠的,她就無法輕易竊取比特幣。
(2)拒絕服務攻擊
讓我們來考慮另一種攻擊。假設黑客不喜歡叫鮑勃的某個用戶,黑客可以決定她不把鮑勃發起的任何交易放進她所提議的區塊里。換言之,她拒絕提供服務給鮑勃。盡管這是黑客可以開展的有效的攻擊,但幸好這不過是個小問題。如果鮑勃的交易沒有被放進黑客所打包的下一個區塊,鮑勃只要等到下一個誠實節點發起區塊的時候,他的交易記錄就會被放進這個區塊里。所以這其實也不算是一個有效的攻擊。

也就是說,黑客花費重大成本取得的打包,但並不能起到有效的攻擊。由於對惡意節點進行懲罰、對誠實節點進行獎勵這樣的機制下,共識就達成了。

盡管有所改進,POW也引入了其他問題。工作量證明需要所有節點解決復雜的數學問題,這會消耗大量的能源,就是大家所熟知的挖kuang耗費電力。並且解決復雜的數學問題的時間也要求不短,10分鍾左右。

從不可能三角的角度來看,POW去中心化高,安全性高,但速度還是慢,但至少已經不會像pBFT那樣由於節點多導致花費時間呈指數增長。

共識演算法各式各樣,冰糖橙的POW並不是真正去解決分布式共識問題,它不能完美的套用到其他場景。但它在貨幣系統的這個特定場景下解決了冰糖橙的共識問題。POW在冰糖橙里運行得非常好。

㈣ 區塊鏈安全性主要通過什麼來保證

區塊鏈技術是一種分布式記錄技術,它通過對數據進行加密和分布式存儲,來保證數據的安全性和可靠性。
主要通過以下幾種方式來保證區塊鏈的安全性:
1.加密技術:區塊鏈採用的是對稱加密和非對稱加密演算法,可以有效保護數據的安全。
2.分布式存儲:區塊鏈的數據不是集中存儲在單一節點上,而是分散存儲在網路中的各個節點上,這有效防止了數據的篡改和丟失。
3.共識機制:區塊鏈通常採用共識機制來確認交易的合法性,這有助於防止惡意交易的發生。
4.合約機制:區塊鏈可以通過智能合約來自動執行交易,這有助於防止操縱交易的發生。
區塊鏈技術在實現安全性的同時,也帶來了一些挑戰。例如,區塊鏈的安全性可能受到漏洞的攻擊,或者因為私鑰泄露而導致資產被盜。因此,在使用區塊鏈技術時,還需要注意身份認證、密碼安全等方面的問題,以確保區塊鏈的安全性。
此外,區塊鏈技術的安全性也可能受到政策、法規等方面的影響。例如,在某些國家和地區,區塊鏈技術可能會受到審查和限制,這也可能會對區塊鏈的安全性產生影響。
總的來說,區塊鏈技術的安全性主要通過加密技術、分布式存儲、共識機制和合約機制等方式來保證,但是還需要注意其他方面的挑戰和影響因素。

㈤ 共識機制評價標准

區塊鏈上採用不同的共識機制,在滿足一致性和有效性的同時會對系統整體性能產生不同影響。綜合考慮各個共識機制的特點,從以下4個維度評價各共識機制的技術水平:

1)安全性。即是否可以防止二次支付、自私挖礦等攻擊,是否有良好的容錯能力。以金融交易為驅動的區塊鏈系統在實現一游姿態致性的過程中,最主要的安全問題就是如何防止和檢測二次支付行為。自私挖礦通過採用適當的策略發布自己產生的區塊,獲得更高的相對收益,是一種威脅比特幣系統安全性和公平性的理論攻擊方法。此外,Eclipse攻擊控制目標對象的網路通信,形成網路分區,阻隔交易傳播。Sybil攻擊通過生產大量無意義的節點影響系統安全性。

2)神源擴展性。即是否支持網路節點擴展。擴展性是區塊鏈設計要考慮的關鍵因素之一。根據對象不同,擴展性又分為系統成員冊散數量的增加和待確認交易數量的增加兩部分。擴展性主要考慮當系統成員數量、待確認交易數量增加時,隨之帶來的系統負載和網路通信量的變化,通常以網路吞吐量來衡量。

3)性能效率。即從交易達成共識被記錄在區塊鏈中至被最終確認的時間延遲,也可以理解為系統每秒可處理確認的交易數量。與傳統第三方支持的交易平台不同,區塊鏈技術通過共識機制達成一致,因此其性能效率問題一直是研究的關注點。比特幣系統每秒最多處理7筆交易,遠遠無法支持現有的業務量。

4)資源消耗。即在達成共識的過程中,系統所要耗費的計算資源大小,包括CPU、內存等。區塊鏈上的共識機制藉助計算資源或者網路通信資源達成共識。以比特幣系統為例,基於工作量證明機制的共識需要消耗大量計算資源進行挖磯提供信任證明完成共識。

㈥ 區塊鏈的安全法則

區塊鏈的安全法則,即第一法則:
存儲即所有
一個人的財產歸屬及安全性,從根本上來說取決於財產的存儲方式及定義權。在互聯網世界裡,海量的用戶數據存儲在平台方的伺服器上,所以,這些數據的所有權至今都是個迷,一如你我的社交ID歸誰,難有定論,但用戶數據資產卻推高了平台的市值,而作為用戶,並未享受到市值紅利。區塊鏈世界使得存儲介質和方式的變化,讓資產的所有權交付給了個體。
拓展資料
區塊鏈系統面臨的風險不僅來自外部實體的攻擊,也可能有來自內 部參與者的攻擊,以及組件的失效,如軟體故障。因此在實施之前,需 要制定風險模型,認清特殊的安全需求,以確保對風險和應對方案的准 確把握。
1. 區塊鏈技術特有的安全特性
● (1) 寫入數據的安全性
在共識機制的作用下,只有當全網大部分節點(或多個關鍵節點)都 同時認為這個記錄正確時,記錄的真實性才能得到全網認可,記錄數據才 允許被寫入區塊中。
● (2) 讀取數據的安全性
區塊鏈沒有固有的信息讀取安全限制,但可以在一定程度上控制信 息讀取,比如把區塊鏈上某些元素加密,之後把密鑰交給相關參與者。同時,復雜的共識協議確保系統中的任何人看到的賬本都是一樣的,這是防 止雙重支付的重要手段。
● (3) 分布式拒絕服務(DDOS)
攻擊抵抗 區塊鏈的分布式架構賦予其點對點、多冗餘特性,不存在單點失效的問題,因此其應對拒絕服務攻擊的方式比中心化系統要靈活得多。即使一個節點失效,其他節點不受影響,與失效節點連接的用戶無法連入系統, 除非有支持他們連入其他節點的機制。
2. 區塊鏈技術面臨的安全挑戰與應對策略
● (1) 網路公開不設防
對公有鏈網路而言,所有數據都在公網上傳輸,所有加入網路的節點 可以無障礙地連接其他節點和接受其他節點的連接,在網路層沒有做身份驗證以及其他防護。針對該類風險的應對策略是要求更高的私密性並謹慎控制網路連接。對安全性較高的行業,如金融行業,宜採用專線接入區塊鏈網路,對接入的連接進行身份驗證,排除未經授權的節點接入以免數據泄漏,並通過協議棧級別的防火牆安全防護,防止網路攻擊。
● (2) 隱私
公有鏈上交易數據全網可見,公眾可以跟蹤這些交易,任何人可以通過觀察區塊鏈得出關於某事的結論,不利於個人或機構的合法隱私保護。 針對該類風險的應對策略是:
第一,由認證機構代理用戶在區塊鏈上進行 交易,用戶資料和個人行為不進入區塊鏈。
第二,不採用全網廣播方式, 而是將交易數據的傳輸限制在正在進行相關交易的節點之間。
第三,對用 戶數據的訪問採用許可權控制,持有密鑰的訪問者才能解密和訪問數據。
第四,採用例如「零知識證明」等隱私保護演算法,規避隱私暴露。
● (3) 算力
使用工作量證明型的區塊鏈解決方案,都面臨51%算力攻擊問題。隨 著算力的逐漸集中,客觀上確實存在有掌握超過50%算力的組織出現的可 能,在不經改進的情況下,不排除逐漸演變成弱肉強食的叢林法則。針對 該類風險的應對策略是採用演算法和現實約束相結合的方式,例如用資產抵 押、法律和監管手段等進行聯合管控。

㈦ 區塊鏈科普指南:什麼是51%攻擊

在加密世界中,當一個人或一群人控制了50% + 1的網路單元時,就會發生51% 的攻擊。沒有人說50% + 1單位,所以簡稱為51%攻擊。

當一個團隊設法控制鏈接到一個特定區塊鏈的網路的大部分,它被認為對它有絕對的權力控制整個區塊鏈,這意味著交易的完整性和安全性不能再得到保證。

區塊鏈如何抵禦51% 的攻擊?

加密貨幣有不同的方式可以保護自己免受51% 的攻擊。毫無疑問,最為人所知的是,全球擁有龐大的礦商網路,其中包括數萬甚至數十萬人,這使得控制這一網路極為昂貴。

在這種情況下,區塊鏈通常是自動保護的,因為接管加密貨幣所需的資源要重要得多,而且一旦網路得到控制,攻擊不一定涵蓋費用。

不需要太多的細節,我們只想說,可以添加額外的安全機制,目的是使這種攻擊不可能發生。這可以通過使用一個具有多個控制項的系統來實現,這有時會將這種攻擊的需求從計算能力的51% 提高到75% 、90% ,有時甚至是99% 。

在其他情況下,一些區塊鏈已經選擇授權交易驗證的有信譽的集中參與者,以避免這種攻擊。然而,一些純粹主義者不喜歡這個想法,因為它違背了區塊鏈的宗旨,即分散交易。

我們真的應該擔心51% 的攻擊嗎?

比特幣自誕生以來從未遭受過51% 的攻擊,也不太可能遭受這樣的攻擊。這個網路如此龐大,以至於做這件事的成本會高得驚人。

此外,當一個區塊鏈正在經歷一個51% 的攻擊變得清晰時,幾乎可以肯定的是,所有令牌持有者將決定立即出售他們的資產,這將導致資產的價值損失。所以,從數學上來說,一群人試圖控制一種加密貨幣是沒有多大意義的。

為了了解實施51% 攻擊所需的資源,有一個不錯的小網站叫做 Crypto51,它可以讓你找出實施這種攻擊所需的散列速率和每小時的美元成本。

對51%攻擊的結論

我們希望您現在有一個更好的理解的概念,51% 的攻擊和他們如何工作。正如你所看到的,他們需要巨大的資源,可能仍然不值得麻煩。

51% 的攻擊,理論上,是工作證明(PoW)系統的一個主要問題。然而,在實踐中,一旦一個區塊鏈已經足夠發達,風險接近於零。

對於新的或小盤數字貨幣,再一次,沒有真正的利益為黑客進行這樣的攻擊,因為加密貨幣的價格可以下降到0非常快,防止該組收獲經濟利益。

㈧ 共識演算法系列之一:私鏈的raft演算法和聯盟鏈的 pbft 演算法

對數據順序達成一致共識是很多共識演算法要解決的本質問題
Fabic的pbft演算法實現
現階段的共識演算法主要可以分成三大類:公鏈,聯盟鏈和私鏈
私鏈,所有節點可信
聯盟鏈,存在對等的不信任節點
私鏈:私鏈的共識演算法即區塊鏈這個概念還沒普及時的傳統分布式系統里的共識演算法,比如 zookeeper 的 zab 協議,就是類 paxos 演算法的一種。私鏈的適用環境一般是不考慮集群中存在作惡節點,只考慮因為系統或者網路原因導致的故障節點。

聯盟鏈:聯盟鏈中,經典的代表項目是 Hyperledger 組織下的 Fabric 項目, Fabric0.6 版本使用的就是 pbft 演算法。聯盟鏈的適用環境除了需要考慮集群中存在故障節點,還需要考慮集群中存在作惡節點。對於聯盟鏈,每個新加入的節點都是需要驗證和審核的。

公鏈:公鏈不僅需要考慮網路中存在故障節點,還需要考慮作惡節點,這一點和聯盟鏈是類似的。和聯盟鏈最大的區別就是,公鏈中的節點可以很自由的加入或者退出,不需要嚴格的驗證和審核。

在公有鏈中用的最多的是pow演算法和pos演算法,這些演算法都是參與者的利益直接相關,通過利益來制約節點誠實的工作,解決分布式系統中的拜占庭問題。拜占庭容錯演算法是一種狀態機副本復制演算法,通過節點間的多輪消息傳遞,網路內的所有誠實節點就可以達成一致的共識。

使用拜占庭容錯演算法不需要發行加密貨幣,但是只能用於私有鏈或者聯盟鏈,需要對節點的加入進行許可權控制;不能用於公有鏈,因為公有鏈中所有節點都可以隨意加入退出,無法抵擋女巫攻擊(sybil attack)

raft 演算法包含三種角色,分別是:跟隨者( follower ),候選人(candidate )和領導者( leader )。集群中的一個節點在某一時刻只能是這三種狀態的其中一種,這三種角色是可以隨著時間和條件的變化而互相轉換的。

raft 演算法主要有兩個過程:一個過程是領導者選舉,另一個過程是日誌復制,其中日誌復制過程會分記錄日誌和提交數據兩個階段。raft 演算法支持最大的容錯故障節點是(N-1)/2,其中 N 為 集群中總的節點數量。

國外有一個動畫介紹raft演算法介紹的很透徹,鏈接地址為: http://thesecretlivesofdata.com/raft/ 。這個動畫主要包含三部分內容,第一部分介紹簡單版的領導者選舉和日誌復制的過程,第二部分內容介紹詳細版的領導者選舉和日誌復制的過程,第三部分內容介紹的是如果遇到網路分區(腦裂),raft 演算法是如何恢復網路一致的。

pbft 演算法的提出主要是為了解決拜占庭將軍問題
要讓這個問題有解,有一個 十分重要的前提 ,那就是 信道必須是可靠的 。如果信道不能保證可靠,那麼拜占庭問題無解。關於信道可靠問題,會引出兩軍問題。兩軍問題的結論是,在一個不可靠的通信鏈路上試圖通過通信以達成一致是基本不可能或者十分困難的。
拜占庭將軍問題最早是由 Leslie Lamport 與另外兩人在 1982 年發表的論文《The Byzantine Generals Problem 》提出的, 他證明了在將軍總數大於 3f ,背叛者為f 或者更少時,忠誠的將軍可以達成命令上的一致,即 3f+1<=n 。演算法復雜度為 o(n^(f+1)) 。而 Miguel Castro (卡斯特羅)和 Barbara Liskov (利斯科夫)在1999年發表的論文《 Practical Byzantine Fault Tolerance 》中首次提出 pbft 演算法,該演算法容錯數量也滿足 3f+1<=n ,演算法復雜度為 o(n^2)。

首先我們先來思考一個問題,為什麼 pbft 演算法的最大容錯節點數量是(n-1)/3,而 raft 演算法的最大容錯節點數量是(n-1)/2 ?

對於raft演算法,raft演算法的的容錯只支持容錯故障節點,不支持容錯作惡節點。什麼是故障節點呢?就是節點因為系統繁忙、宕機或者網路問題等其它異常情況導致的無響應,出現這種情況的節點就是故障節點。那什麼是作惡節點呢?作惡節點除了可以故意對集群的其它節點的請求無響應之外,還可以故意發送錯誤的數據,或者給不同的其它節點發送不同的數據,使整個集群的節點最終無法達成共識,這種節點就是作惡節點。

raft 演算法只支持容錯故障節點,假設集群總節點數為n,故障節點為 f ,根據小數服從多數的原則,集群里正常節點只需要比 f 個節點再多一個節點,即 f+1 個節點,正確節點的數量就會比故障節點數量多,那麼集群就能達成共識。因此 raft 演算法支持的最大容錯節點數量是(n-1)/2。

對於 pbft 演算法,因為 pbft 演算法的除了需要支持容錯故障節點之外,還需要支持容錯作惡節點。假設集群節點數為 N,有問題的節點為 f。有問題的節點中,可以既是故障節點,也可以是作惡節點,或者只是故障節點或者只是作惡節點。那麼會產生以下兩種極端情況:

第一種情況,f 個有問題節點既是故障節點,又是作惡節點,那麼根據小數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。也就是說這種情況支持的最大容錯節點數量是 (n-1)/2。
第二種情況,故障節點和作惡節點都是不同的節點。那麼就會有 f 個問題節點和 f 個故障節點,當發現節點是問題節點後,會被集群排除在外,剩下 f 個故障節點,那麼根據小數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。所以,所有類型的節點數量加起來就是 f+1 個正確節點,f個故障節點和f個問題節點,即 3f+1=n。
結合上述兩種情況,因此 pbft 演算法支持的最大容錯節點數量是(n-1)/3

pbft 演算法的基本流程主要有以下四步:

客戶端發送請求給主節點
主節點廣播請求給其它節點,節點執行 pbft 演算法的三階段共識流程。
節點處理完三階段流程後,返回消息給客戶端。
客戶端收到來自 f+1 個節點的相同消息後,代表共識已經正確完成。
為什麼收到 f+1 個節點的相同消息後就代表共識已經正確完成?從上一小節的推導里可知,無論是最好的情況還是最壞的情況,如果客戶端收到 f+1 個節點的相同消息,那麼就代表有足夠多的正確節點已全部達成共識並處理完畢了。

3.演算法核心三階段流程
演算法的核心三個階段分別是 pre-prepare 階段(預准備階段),prepare 階段(准備階段), commit 階段(提交階段)

流程的對比上,對於 leader 選舉這塊, raft 演算法本質是誰快誰當選,而 pbft 演算法是按編號依次輪流做主節點。對於共識過程和重選 leader 機制這塊,為了更形象的描述這兩個演算法,接下來會把 raft 和 pbft 的共識過程比喻成一個團隊是如何執行命令的過程,從這個角度去理解 raft 演算法和 pbft 的區別。

一個團隊一定會有一個老大和普通成員。對於 raft 演算法,共識過程就是:只要老大還沒掛,老大說什麼,我們(團隊普通成員)就做什麼,堅決執行。那什麼時候重新老大呢?只有當老大掛了才重選老大,不然生是老大的人,死是老大的鬼。

對於 pbft 演算法,共識過程就是:老大向我發送命令時,當我認為老大的命令是有問題時,我會拒絕執行。就算我認為老大的命令是對的,我還會問下團隊的其它成員老大的命令是否是對的,只有大多數人 (2f+1) 都認為老大的命令是對的時候,我才會去執行命令。那什麼時候重選老大呢?老大掛了當然要重選,如果大多數人都認為老大不稱職或者有問題時,我們也會重新選擇老大。
四、結語
raft 演算法和 pbft 演算法是私鏈和聯盟鏈中經典的共識演算法,本文主要介紹了 raft 和 pbft 演算法的流程和區別。 raft 和 pbft 演算法有兩點根本區別:

raft 演算法從節點不會拒絕主節點的請求,而 pbft 演算法從節點在某些情況下會拒絕主節點的請求 ;
raft 演算法只能容錯故障節點,並且最大容錯節點數為 (n-1)/2 ,而 pbft 演算法能容錯故障節點和作惡節點,最大容錯節點數為 (n-1)/3 。

pbft演算法是通過投票來達成共識,可以很好的解決包括分叉等問題的同時提升效率。但僅僅比較適合於聯盟鏈私有鏈,因為兩兩節點之間通信量是O(n^2)(通過優化可以減少通信量),一般來說不能應用於超過100個節點。
pbft有解的前提是 信道必須是可靠的 ,存在的問題是 可擴展性(scalability)差

部分來自: https://blog.csdn.net/kojhliang/article/details/80270223
區塊鏈在設計上就是為了BFT

㈨ 區塊鏈中女巫攻擊問題

何為女巫攻擊?

解釋一: 大規模的p2p系統面臨著有問題的和敵對的節點的威脅,為了應付這種威脅,很多系統採用了冗餘。然而,如果一個有惡意的實體模仿了多個身份,他就可以控制橘虛核系統的很大一部分,破壞了系統的冗餘策略。我們把這種模仿多個身份的攻擊定義為女巫攻擊(Sybil Attack)。

解釋二: 女巫攻擊是在P2P網路中,因為節點隨時加入退出等圓掘原因,為了維持網路穩定,同一份數據通常需要備份到多個分布式節點上,這就是 數據冗餘機制 。 女巫攻擊是攻擊數據冗餘機制的一種有效手段。譽鋒 如果網路中存在一個惡意節點,那麼同一個惡意節點可以具有多重身份,就如電影里的女主角都可以分裂出16個身份,那麼惡意節點比它還能分。這樣,原來需要備份到多個節點的數據被欺騙地備份到了同一個惡意節點(該惡意節點偽裝成多重身份),這就是女巫攻擊。

總而言之就是 分身詐騙術

如何解決這種攻擊?

1.幹活 你即便分身千千萬,唯有真心能幹活。分心是虛幻的,沒有力氣,pow證明。

2.發身份證 可靠第三方公安局給你發身份證,沒有身份證都是分身妖怪(根據某一個可靠的第三方進行身份驗證)

3.熟人社會 你遷戶口到一個新的村子裡,必須得到村子裡,大部分人的認證,這就是中國傳統社會的身份認證方法。群眾的眼睛就是火眼金睛,照出一切妖魔鬼怪。(新加入的節點都需要獲得當前網路中所有可靠節點的認證,這種方法採用了隨機密鑰分發驗證的公鑰體系的認證方式,需要獲得網路中大多數節點的認證才能加入)

㈩ 在公鏈項目早期,為什麼PoW是一個更好選擇

在傳統的互聯網公司或金融機構中,如果一家公司,在一年之內,被委託的交易結算的總量為萬億美元的話,這家公司要麼擁有可靠的技術和雄厚的資本,要麼就是其它大公司及政府為其信用來做背書。而比特幣卻在沒有政府或公司背書的情況下,在過去一年內支持了相當於一萬億美元的交易。這是因為比特幣的工作量證明(PoW)機制確保了全世界的比特幣礦工以點對點的方式去分布式地維護賬本,且保證了其正確性和不可篡改性。

實際上,PoW 協議並不完美,它在運行過程中需要消耗大量的能量來計算哈希函數的結果,以保護區塊鏈系統不被攻擊。很多人認為這是一種「無用的能源消耗」。為了避免這種消耗,股權證明協議(PoS)便作為替代方案被提出。包括以太坊在內的幾個著名的項目也開始探索股權證明協議(PoS), 甚至有人認為,PoS協議在未來將完全取代PoW協議。

但是,在對PoS 協議進行了深入的技術剖析之後,我們會發現:在一個公鏈項目的早期階段,PoS 協議會帶來很多問題,而這些問題在PoW協議下是可以避免。首先,使用PoS協議啟動主網的公鏈項目,會不可避免地存在共識中心化的問題,因為主網上線的時候股權分布往往是相對集中的。此外,純 PoS 協議還面臨著遠程攻擊(Long Range attack)的威脅。最嚴重的遠程攻擊會導致新加入的節點必須信任一些中心化的網站給出的信息,而這會導致 PoS 公鏈成為一個本質上中心化的網路。去使用PoW協議啟動主網的區塊鏈則可以實現分散的共識,從而避免這些問題。當PoW公鏈經過一段時間的發展,股權分布相對分散以後,還可以選擇PoW/PoS復合機制。

除此之外,還有一點值得注意的是,很多人誤以為比特幣的擴容問題是PoW機制的局限性造成的。我們經常在媒體網站或白皮書中看到這樣的句子,「比特幣因為使用了PoW機制,所以只能處理每秒3-7筆交易」。而事實上,經過適當的設計,例如,GHOST, Conflux 這樣的PoW演算法可以顯著提高出塊效率,達到每秒處理數千筆交易,且每筆交易都能得到全網節點的驗證。

PoW v.s. PoS:如何確定投票權

關於PoW和PoS之間的主要區別,就是在於如何確定區塊鏈共識中的投票權。 在PoW中,系統中的投票權與節點的計算能力成正比。每秒可以計算哈希函數次數越多,節點就越有可能贏得區塊鏈中下一個區塊的出塊權。而在PoS中,系統的投票權與持有的股權比例成正比。節點擁有資金越多,能為確定的下一個區塊投的票數就越多。

在公鏈早期階段,股權中心化將導致共識中心化

對於一個公有鏈來說,其上線初期往往是股權最集中的時候。在主網上線伊始,創始塊中分配的幣絕大多數屬於項目方和私募投資人,而這些人的數量往往非常有限。對於PoW共識機制,初始股權的集中不會帶來安全性問題,因為它的出塊和安全性不依賴於股權持有的分散,而是依賴於算力的分散。對於使用反 ASIC 礦機的挖礦演算法的公有鏈來說,任何人只要擁有顯卡和網路就可以成為礦工,這有助於促進更多人參與挖礦,實現早期算力的分散。只要超過50%的算力來自於誠實的礦工,區塊鏈中的交易就是安全不可逆轉的。

然而,在PoS共識機制下,股權集中會導致共識協議的參與者集中。區塊鏈的出塊權只能由少數在創世塊中擁有股權的玩家決定。如果這些人合謀對區塊鏈進行攻擊,則完全可以成功的實現雙花攻擊(Double spending attack). 盡管開發者和投資人出於利益考慮不會進行這樣的攻擊來摧毀他們自己的公鏈,但PoS公鏈也無可避免的在主網上線後就被這些人壟斷和支配。更糟的是,如果出塊可以獲得大量獎勵和交易費用,這些壟斷者就會將大量股權牢牢控制在自己的手裡,使得PoS公鏈成為一個本質上由巨頭控制的網路。

我們不要忘了,區塊鏈的核心價值是什麼?是去中心化的共識協議,保證了區塊鏈系統中每筆交易的正確性、不可篡改性。如果共識協議無法保證參與者的分散,區塊鏈就無法做到無需信任的安全性,那麼區塊鏈和傳統的分布式系統相比就沒有任何優勢了,甚至傳統的分布式系統能做得更經濟更高效。因此,公鏈項目在早期使用PoW, 是避免共識中心化,保護區塊鏈核心價值的明智選擇。

「長程攻擊」與「主觀依賴」問題

在一個公有鏈中,一個攻擊者如果擁有當下足夠多的算力或股權,無疑是可以打破公有鏈安全性完成攻擊的。但是在PoS 公鏈中,如果攻擊者獲得了一些賬戶的私鑰,這些私鑰在歷史上某一時刻控制了超過51%的股權,也可以完成攻擊,這種攻擊的方式被稱為長程攻擊(Long Range Attack)。

在長程攻擊中,攻擊者首先獲得一些私鑰,只要這些私鑰在歷史上曾經獲得了足夠多的股權,便可以從這一時刻開始分叉進行51% 攻擊,製造一條分叉鏈出來。而 PoS 的出塊不需要進行工作量證明,攻擊者可以短時間內讓重寫歷史的分叉鏈追趕上原本的主鏈,從而造成PoS鏈的分叉和防篡改性被打破。

攻擊者能夠取得這些私鑰不是天方夜譚。如果PoS公鏈的早期投資人在二級市場將持有的代幣賣掉後,將賬戶私鑰賣給攻擊者,攻擊者就可以從創世塊進行長鏈攻擊,從而可以打破一個鏈的安全性。如果一些投資者追求短期收益而非價值投資,攻擊者從他們手裡獲得私鑰就成為了一個可能的事情。

而為了應對長程攻擊,則有各種各樣的解決方案被提出:例如使用密鑰演化演算法更新密鑰,以避免密鑰被盜。但是如果早期投資者一開始就決定通過出售私鑰獲利,那麼他完全可以保留密鑰種子以繞開這一限制。還有一些解決方案基於這樣一個事實:如果攻擊者挖了一條完全不同的鏈,長期在系統中運行的節點或許有能力探測出這種異常。但是,這些方案依然存在如下問題:

PoS 長程攻擊造成的分叉與 PoW 的分叉有所不同。PoW 的分叉鏈難以獲得比特幣全網算力,比特幣礦工很容易從總算力中辨別誰是真正的比特幣。鑒於PoS共識協議在實際運行時,絕大多數股權持有者只是區塊鏈的使用者,並不會一直運行一台伺服器。攻擊者只要在一個歷史節點擁有了相當與PoS實際參與者的股權比例,就可以製造出一條難以辨別的分叉鏈出來。配合女巫攻擊(Sybil Attack),攻擊者可以從區塊歷史和節點數量上都獲得和被攻擊主鏈接近的水平,令新加入的節點無法區分,只能通過人工指定的方式選擇。這樣新參與者必須咨詢受信任節點來安全地加入系統,這一問題被稱為「主觀依賴」(Weak Subjectivity)

無利害攻擊

無利害攻擊(Nothing at Stake)是另一種PoS攻擊方式。當一個 PoS 鏈因為網路延遲、長程攻擊或其他原因出現分叉時,PoS 礦工可以選擇在兩個分叉的鏈上同時出塊,以獲取最大收益。而這違反了共識協議。

在PoW 鏈中,如果一個礦工想同時在多個分叉上挖礦,就必須將自己的算力分散在多個分叉上,所有分叉上分配的算力總和不會超過礦工擁有的總算力。對於多數礦工而言,將自己的全部算力投入到協議指定的鏈上是最優的選擇。

然而,在PoS 多個分叉上同時出塊所帶來的額外成本可以忽略不計,而選擇同時出塊可以保證無論哪一條分叉鏈最終勝出都可獲得收益。如果礦工遵守共識協議,只在協議指定的鏈上挖礦。一旦這個鏈被丟棄,礦工將會失去挖礦獎勵。只追求挖礦收益最大化的礦工會在兩邊同時參與,不惜因此打破協議——這會導致鏈長時間維持分叉的狀態。

與長程攻擊不同,精巧的激勵機制設計可以避免這一攻擊。但無利害攻擊依然表明讓PoS鏈正確地運行是一件很困難的事情。

總結

雖然PoS 具有節省能源等優勢,從而很多項目表示將採用PoS。但我們在分析區塊鏈安全性假設後發現,避免了計算「無用的哈希」之後會引入很多攻擊情形,而且目前沒有很完美的解決方案。誠然PoS有能源效率的優勢,但也帶來了很多安全性威脅。在PoS很好地解決這些威脅之前,PoW消耗的能源,就像和平時期國家軍隊用掉的軍費一樣,阻擋了很多潛在的威脅。最重要的是,其中許多威脅在區塊鏈項目早期顯得尤其致命。這也是我們為什麼相信新的公鏈項目應該從PoW開始。

熱點內容
基於eth開發的oc幣 發布:2025-09-11 17:03:14 瀏覽:263
比特幣2017年會漲到 發布:2025-09-11 16:53:53 瀏覽:179
ltc和bch的區別 發布:2025-09-11 16:25:15 瀏覽:3
改變ethtrunk的模式 發布:2025-09-11 16:20:05 瀏覽:720
肺結核可以去疾控中心看嗎 發布:2025-09-11 15:48:02 瀏覽:683
多少t可以挖一個btc 發布:2025-09-11 15:38:52 瀏覽:400
全球區塊鏈企業專利排行榜 發布:2025-09-11 15:32:51 瀏覽:111
王團長區塊鏈日記chat 發布:2025-09-11 15:05:27 瀏覽:352
通證經濟和幣圈的區別 發布:2025-09-11 14:42:24 瀏覽:338
小米招聘區塊鏈6萬 發布:2025-09-11 14:41:15 瀏覽:65