共識機制算法
所謂共識,就是指你們都打成一致的意思。在生活中也有許多須要達成共識的場景,好比開會討論,雙方或多方簽定一份協議,在區塊鏈系統中,每一個節點必需要作的事情就是讓本身的帳本跟其餘節點保持一致,若是是在傳統的軟件結構中,這幾乎就不是問題,由於一箇中心服務器的存在,也就是所謂的主庫,其餘從庫向主庫看齊就好,在實際生活中,不少事情人們也是按照這邏輯來的。好比企業老闆發佈了一個通知,員工照着作,可是區塊鏈是一個分佈式的對等網絡結構,在這個結構中沒有哪一個節點是「老大」,一切都要商量着來,在區塊鏈系統中,如何讓每個節點經過一個規則將各自節點的數據保持一致是一個很核心的問題,這個問題的解決方案就是制定一套共識算法。服務器
共識算法其實就是一種規則,每一個節點都按這個規則去確認各節點的數據,咱們暫且拋開算法的原理,先來想想在生活中咱們會如何解決這個問題,假設一羣人開會,這羣人沒有一個領導,你們各抒己見,到最後如何統一一個最終的結果出來呢?實際處理的時候,咱們通常在某個時間段選出一我的來發表意見,那個負責彙總你們的內容,而後發佈完整的意見,其餘人投票表決,每一個人都有機會來彙總表達,最後票數最多的按最終意見,這種思路就是一種共識算法了,然而在實際過程當中,若是人數多並數量是肯定的,那還好處理些,若是人數不少而且數量不可肯定,那麼很難讓每一個人去發表意見再投票了,這樣效率過低了,咱們須要一個機制選出一個表明的人,在共識算法中就是篩選出具備表明性的節點。網絡
如何篩選呢?其實就是設置一組條件,就像咱們篩選運動員同樣,給一組指標讓你們完成,誰能更好的完成指標,誰就有機會被選上。在區塊鏈系統中,存在着多種這樣的篩選方案,好比PoW(Proof of Work)工做量證實、PoS(Proof of Stake)權益證實、DPoS(Delegate Proof of Stake)委託權益證實、PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯算法等,各類不一樣的算法,其實就是不一樣的遊戲玩法,這裏暫且不進行算法的過程詳述,你們只要知道這些都是一些篩選算法就好了。區塊鏈系統就是經過這種篩選算法或者共識算法來使用網絡中各個節點的帳本數據打成一致的。分佈式