在點對點和分布式區塊鏈中,拜占庭問題經常被用來比較節點如何獲得* * *知識的問題。通用是指對各個節點達成統壹的作戰計劃,即做到* * *識,正確封裝和驗證分塊數據,防止惡意節點(叛徒將軍)破壞區塊鏈的運行。
顧名思義,就是能夠解決拜占庭問題,使每個節點達到* * *知識,解決* * *知識問題的機制,也叫* * *知識算法。在各種* * *識別算法中,壹直存在壹個“不可能三位壹體”的問題。這個三角指的是“安全”、“去中心化”和“速度”,也就是說,速度、安全和去中心化很難同時保證,三者往往顧此失彼。
目前* * *知識的算法有幾十種,計算機行業壹直處於研究階段,並不是說任何算法都是完美的。
我們先來看兩個算法,pBET和POW,它們有多安全,多分散,多快速。
實用拜占庭容錯是* * *識別的早期算法。pBFT的原則之壹就是少數服從多數。節點之間互相傳遞關於決策的消息,誰同意決策,誰的人數就多。所以在這個系統中,安全性隨著誠實節點的數量而增加。誠實節點同意正確的決策,拒絕惡意節點的錯誤決策。只要惡意節點的數量少於總數的1/3,就可以保證達到* * *識。
獲得* * *知識可以簡化為四個步驟:
PBFT使用投票機制以循環方式選舉領導節點。
領導者發起決策並將其廣播給輔助節點。
包括領導節點和輔助節點在內的所有節點都發送響應。
什麽時候?當+1節點發送相同的響應時,該響應被認為是有效的。
如果領導者有惡意行為,可以被大部分節點刪除。
按照少數服從多數的原則。理論上只要惡意節點數小於1/2,那麽為什麽PBFT算法的容錯數要滿足惡意節點數小於總數的1/3的要求呢?
因為PBFT算法不僅需要支持容錯節點,還需要支持容錯惡節點。假設集群中的節點數為n,有問題的節點為f,有問題的節點中,既可以是故障節點,也可以是惡節點,或者只是故障節點,也可以只是惡節點。那麽會出現以下兩種極端情況:
(1)這F個有問題的節點既是故障節點,又是邪惡節點,所以根據少數服從多數的原則,集群中的正常節點只需要比F個節點多壹個節點,即f+1個節點,正確節點的數量就會比故障節點的數量多,所以集群可以達到* * *識,即節點總數為F+(F+650)。
(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。我只是選擇壹個節點,根據它的決策,其他所有節點同步它的決策。這樣就省去了在所有節點進行通信,然後計算節點數量的耗時操作。
那麽,哪個節點封裝塊就非常重要了。如果是惡意節點呢?打包的節點必須是必需的。哪個節點有權打包?那就是解決復雜的數學問題,俗稱挖曠。節點必須花費大量的計算能力和電力來贏得壹次打包塊的權利。這個成本限制了黑客的女巫攻擊。
如果包塊的權利真的被黑客搶了,可能是什麽問題?
(1)偷糖橙
黑客可以從壹個屬於另壹個用戶的、不受她控制的地址偷壹個糖橙嗎?答案是否定的,即使這壹輪是黑客包裝的區塊鏈上的下壹個區塊,她也無法盜取別人的比特幣。要做到這壹點,黑客需要發起壹個有效的交易,將比特幣轉移到他的地址。這就需要黑客偽造比特幣主人的簽名,但如果數字簽名機制是安全的,她就做不到。只要背後的加密基礎紮實,她就不可能輕易盜取比特幣。
(2)拒絕服務攻擊
讓我們考慮另壹次攻擊。假設黑客不喜歡壹個叫Bob的用戶,黑客可以決定她不會把Bob發起的任何交易放到她提議的塊中。換句話說,她拒絕向鮑勃提供服務。雖然這是黑客可以進行的有效攻擊,但幸運的是,這只是壹個小問題。如果Bob的交易沒有放入黑客打包的下壹個塊,Bob只需要等到下壹個誠實節點發起塊,他的交易記錄就會放入這個塊。所以這其實不是壹個有效的攻擊。
換句話說,黑客花了很多錢拿到這個包,但它並不能起到有效的攻擊。由於懲罰惡意節點和獎勵誠實節點的機制,實現了* *知識。
盡管有所改善,戰俘也帶來了其他問題。工作量證明所有節點都需要解決復雜的數學問題,會消耗大量的能量,也就是所謂的挖匡耗電。而且解決復雜數學問題的時間也不短,大概10分鐘。
從不可能三位壹體的角度來看,POW是高度去中心化的,也是安全的,只是速度還是慢了點,但至少不會因為pBFT這樣的節點多了而呈指數級增長。
* * *識別有各種算法。糖橙的POW並不是真的要解決分布式* * *識別的問題,也無法完美應用到其他場景。但是解決了在貨幣體系這個特定場景下,糖橙的* * *知識問題。粉末在糖橙中非常有效。