節點之間數據傳輸問題解決后,數據存儲問題接踵而至。在中心化存儲系統中,中心機構負責數據存儲的完整性和準確性,而在分布式存儲系統中,各節點記錄、儲存數據可能會出現以下問題:1)信息在記錄和存儲時被惡意篡改;2)信息無效、損壞或丟失,比如,由于通信網絡無法正常工作,導致部分節點沒有收到信息;3)信息傳送延遲,由于各節點的地理位置、網絡狀況不同,不同節點對某一條信息收到的時間不同。
這些情況的存在,導致各節點對信息的記錄和存儲無法達成一致。解決方案是各節點向其他所有節點傳遞將要儲存的信息內容,各節點根據收到的消息采用少數服從多數的原則來確定數據存儲的一致性,但這一過程仍可能存在惡意節點向其他節點傳輸錯誤節點以破壞一致性,這就是著名的“拜占庭將軍問題”。
“拜占庭將軍問題”是分布式系統達成一致性的重要難題,由Leslie Lamport等科學家于1982年提出。基本思想如下:拜占庭帝國各軍隊分別駐扎在相隔很遠的營地,只能靠信使傳遞消息,由于至少一半以上的軍隊同時攻擊才能能夠攻下帝國,將軍們需要就是否攻擊敵軍達成共識。軍隊中可能存在叛徒,叛徒可能擅自變更進攻意向或進攻時間,以破壞將軍之間的共識。
例如,共有11名將軍,其中有一名反叛者,如果5名將軍選擇“進攻”,另外5名選擇“撤退”,反叛者在收到這些消息后,向選擇進攻的將軍發送“進攻”消息,向選擇撤退的將軍發送“撤退”消息。由于反叛者的存在使得將軍無法形成共識,5名將軍選擇“進攻”,5名將軍選擇“撤退”,結果必然是失敗。
對標到分布式存儲系統中,各營地駐扎的軍隊即是各個節點,節點之間要對某一信息達成共識,需要向其他節點傳送自己記錄的信息,達到半數以上認可的信息即可作為統一的儲存信息。但在此過程中,可能存在惡意破壞一致性的節點。例如,某個節點,向網絡中一半節點發送“A”信息的同時,向另一半節點發送“B”信息,使得盡管只有一個惡意節點,系統也無法形成統一的數據庫。因此,需要一種機制以保證即使存在惡意節點,其他節點依然能夠達成一致結果。
因此,共識機制是
區塊鏈技術的核心問題。目前,主流區塊鏈的共識機制主要有三種,分別為拜占庭容錯機制、工作量證明、權益證明。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。