所謂共識,就是指大家都達成一致的意思。在生活中也有很多需要達成共識的場景,比如開會討論,雙方或多方簽訂一份合作協議等。在區塊鏈系統中,每個節點必須要做的事情就是讓自己的賬本跟其他節點的賬本保持一致。如果是在傳統的軟件結構中,這幾乎就不是問題,因為有一個中心服務器存在,也就是所謂的主庫,其他的從庫向主庫看齊就行了。在實際生活中,很多事情人們也都是按照這種思路來的,比如企業老板發布了一個通知,員工照著做。但是區塊鏈是一個分布式的對等網絡結構,在這個結構中沒有哪個節點是“老大”,一切都要商量著來。在區塊鏈系統中,如何讓每個節點通過一個規則將各自的數據保持一致是一個很核心的問題,這個問題的解決方案就是制定一套共識算法。
共識算法其實就是一個規則,每個節點都按照這個規則去確認各自的數據。我們暫且拋開算法的原理,先來想一想在生活中我們會如何解決這樣一個問題:假設一群人開會,這群人中并沒有一個領導或者說老大,大家各抒己見,那么最后如何統一出一個決定出來呢?
實際處理的時候,我們一般會在某一個時間段中選出一個人來發表意見,那個人負責匯總大家的內容,然后發布完整的意見,其他人投票表決,每個人都有機會來做匯總發表,最后誰的支持者多就以誰的最終意見為準。這種思路其實就算是一種共識算法了。然而在實際過程中,如果人數不多并且數量是確定的,那還好處理些,如果人數很多而且數量也不固定,那我們就很難讓每個人都去發表意見然后再來投票決定了,這樣效率就太低了。我們需要通過一種機制篩選出最有代表性的人,在共識算法中就是篩選出具有代表性的節點。
如何篩選呢?其實就是設置一組條件,就像我們篩選運動員,篩選尖子生一樣,給一組指標讓大家來完成,誰能更好地完成指標,誰就能有機會被選上。在區塊鏈系統中,存在著多種這樣的篩選方案,比如PoW(Proof of Work,工作量證明)、PoS(Proofof Stake,權益證明)、DPoS(Delegate Proof of Stake,委托權益證明)、PBFT(Practical Byzantine Fault Tolerance,實用拜占庭容錯算法)等,各種不同的算法,其實就是不同的游戲玩法,限于篇幅,這里暫不進行算法過程的詳述,大家只要知道這些都是一種篩選算法就行了。區塊鏈系統就是通過這種篩選算法或者說共識算法來使得網絡中各個節點的賬本數據達成一致的。
如果您想深入了解更多的區塊鏈的知識,馭凡教育“區塊鏈項目管理咨詢師” 課程是您的最佳選擇。