主頁 > 區塊鏈 > 區塊鏈技術第3次學習總結--區塊鏈共識機制綜述

區塊鏈技術第3次學習總結--區塊鏈共識機制綜述

2021-04-26 11:06:16 區塊鏈

通過前面的學習我們知道,區塊鏈技術是一些技術的精妙組合,換言之,區塊鏈可以被看作是一種使用已有技術的創新性整合應用,

我們可以認為智能合約是區塊鏈原創的,但其實智能合約概念早在1995年就由Nick Szabo首次提出了,只不過到區塊鏈才真正實作,

有人說區塊鏈有四大核心技術,分別是:分布式存盤,共識機制,智能合約和密碼學,還有一種說法,區塊鏈有八大核心技術:區塊+鏈,

Hash函式,共識機制,智能合約,P2P,Merkle樹,加密演算法,發行和激勵機制,

無論是哪一種說法,業界公認共識機制是區塊鏈的核心技術,是區塊鏈的技識訓石,區塊鏈是一個分布式賬本,其顯著特征是去中心化,

(注意:有些區塊鏈系統是弱中心化,就是有弱中心結點,)區塊鏈的去中心化就是靠共識機制來實作的,

密碼學是區塊鏈的骨架,而共識機制是區塊鏈的靈魂,可以毫不夸張的講,學習區塊鏈就必須掌握共識機制,

簡單一點說:在資料處理和統籌結點時,都需要共識機制來保障系統的正確運行,


共識機制解決了如下問題:

1.維護系統的運作順序與公平性

2.通過獎懲維護系統的穩定運行

下面,我們就從零開始,來學習區塊鏈的共識機制,

我們通過回答以下問題,來從淺入深地了解共識機制的本質和原理,

1.什么是共識?

2.為什么區塊鏈系統需要共識?

3.由誰來達成共識?

4.什么時候需要共識?

5.什么是共識機制?它和共識演算法有什么區別和聯系?

6.如何達成共識?

7.有哪些主要的共識機制?

8.共識機制如何分類?

9.各種共識機制的對比與評價

10.區塊鏈開發者如何選擇共識機制?

我們逐一尋找這些問題的答案,

1. 什么是共識?

一般來說,所謂共識就是一個問題或一件事務的所有或者大多數參與者達成的統一意見與看法, 比如一個公司召集董事開董事會,某個提案通過了,叫達成共識,

如果意見不統一,對某提案的投票沒有超過一定數量,無法通過某個提案,這就叫無法達成共識,國家與國家之間就某個問題進行的雙邊談判也一樣,可能形成共識,也

可能無法達成共識,

有一種對共識的誤解,就是認為共識等同于"同意","肯定",這樣理解是錯誤的,不準確的,對某事務形成統一意見就叫達成共識,比如對某一提案,所有人都說Yes,這是

達成共識,所有人都說No, 這也叫“達成共識”, 大多數情況下,達成共識不需要所有參與方都統一意見,往往是大多數(達到一定比例)參與者意見一致就認為達成共識了,

這個比例不是統一的也不是固定的,

2.為什么區塊鏈系統需要共識

為什么分布式區塊鏈系統需要共識機制,而傳統的C/S或B/S架構的中心服務器系統不需要共識機制?這就好比現實世界中,如果一個組織有一個最高領匯入,那么一切的決策

由這個最高領導者決定,下屬去執行就可以了,這個時候是最容易達成共識的,因為領導的決策就是共識,把中心服務器安裝在機房的那種傳統的軟體系統,資料增刪改查由系統

管理員和超級用戶決定,普通用戶基本上無權決定什么,也就不需要共識機制了,

但是,在區塊鏈這種分布式系統中,所有結點都是平等的,都有話語權,例如,在需要WaKuang的區塊鏈中,任何一個礦工結點都有權打包發布一個區塊,那么問題就來了,該把打包

權授予給誰?究竟系統認為誰挖出的區塊是合法的?哪個礦工可以得到獎勵?Alice轉給Bob的某筆交易是否是合法有效的?這些都需要參與運行的結點之間達成共識,否則,

各執一詞,就會爭執不休,系統就沒辦法正常作業了,

3.由誰來達成共識

前面我們舉了幾個例子,都是參與會談的人或者組織機構達成共識,我們可能會看到這樣的描述:......Kuang工之間需要達成共識....,其實,在區塊鏈系統里面,通過共識機制,讓所有結點

通過演算法達成共識,而不是參與區塊鏈的人之間達成“共識”,這就通過機制保證了共識的真實姓,注意:是由機器(結點)達成共識,不是人達成共識,

4.什么時候需要共識?

  • Kuang工打包記賬的時候
  • 分叉的時候
  • 獎勵 懲罰的時候
  • 總之:任何改變區塊鏈狀態的時候都需要共識

5.什么是共識機制?它和共識演算法有什么區別和聯系

區塊鏈中的共識機制是所有結點都必須遵守的規則,就好像現實世界的“法律”,如果還不能理解,就把區塊鏈中的共識機制和網路中的協議做個類比,把它理解成區塊鏈中的一種“協議”,

所有的共識演算法必須具備三個基本要求:

1.一致性 (safety):所有參與共識的誠實的節點,得到的計算結果是相同的,而且是符合共識協議的,

2. 終局性 (liveness):所有參與共識的誠實的節點,最終可以達成一致性結果,

3. 容錯性 (fault tolerance):在共識演算法

注意:共識機制不等于共識演算法,共識機制由共識演算法來實作,比如:PoW共識機制由PoW共識演算法來實作,

一個共識機制可能由一到多個演算法來實作它,目前我們看到的共識機制大部分都由一種共識演算法來實作,

6.如何達成共識?

前面我們看到了,面對面坐在一起協商談判都很難達成共識,更何況區塊鏈是分布式的,彼此不信任的結點之間要達成共識就更困難,

所以需要借助共識機制在物理上分散的各個彼此互不信任的結點之間達成共識,

7.有哪些主要的共識機制?

7.1 作業量證明(PoW)

作業量證明(POW,Proof-of-Work)是一個用于阻止拒絕服務攻擊和類似垃圾郵件等服務錯誤問題的協議,它在 1993 年被 Cynthia Dwork 和 Moni Naor 提出,它能夠幫助分布式系統達到拜占庭容錯,
作業量證明可以簡單理解為一份證明,用來確認你做了一定量的作業,

在數字貨幣系統中,作業量證明主要通過計算來猜測一個亂數(nonce),使它拼湊交易資料后的內容的Hash值滿足一個規定的上限,由于Hash值在數學上主要采用群舉法碰撞所得,需要進行大量的計算,只要能提出滿足要求的亂數的礦工就被認為付出了一定的作業量,可以獲得這個區塊的獎勵,

哈希運算是一種最常見的作業量證明機制,該機制主要利用哈希運算的復雜度,通過給定的初始值,進行簡單的值遞增運算,利用哈希演算法求解,直到找到滿足條件的碰撞值,不同的哈希演算法求得的碰撞值長度不同,所需作業量和安全性能也不同,碰撞值的長度越長,則所需的作業量越大,對于同一個哈希演算法,可以設定哈希值前N位為0的個數來調節運算難度,

優點:完全去中心化,安全性高,所有節點可參與,節點自由進出,每個節點是公平的,被攻擊成功的可能性小,

缺點:先確認后共識,需要耗費大量的算力,造成能源浪費,交易吞吐量有限,確認時間長,

典型應用專案:位元幣,萊特幣,以太坊(前兩階段Frontier前言、Homestead家園為POW;第三階段Metropolis大都會為casper,類似POW+POS;第四階段Serenity為POS)

注意:中心化和去中心化各有優劣,考慮到位元幣的誕生就是反對中心化的,這里我把中心化看做缺點,去中心化看做優點

7.2 PoS

PoS即權益證明,最早由Sunny King于2012年創立的PPC采用,它可以解決上面提到的浪費算力的問題,

簡單來說,它選舉Kuang工的規則是:誰有錢誰更有可能獲得記賬權,

回到乒乓球比賽的例子,也就是誰比分最高,讓誰來記,這樣鼓勵積極比賽的人,

這樣的好處:

1. 不需要算題,所以節約能源,

2. 攻擊者需要更高的成本,因為他需要購買大量的代幣才能獲得51%的篡改權,

7.3 委托權益證明機制(DPoS)

請參考其它資料,

7.4 分布式共識演算法

分布式一致性演算法有很多,主要是Paxos演算法及衍生的Raft演算法,由此演化出分布式共識演算法,在此只談談實用拜占庭容錯演算法PBFT.

實用拜占庭容錯演算法(Practical Byzantine Fault Tolerance)剛開始是在MIT的Miguel 和 Barbara Liskov在1999年的學術論文中提出的,他們的本意是為設計一個低延遲存盤系統設計系統,將演算法復雜度由指數級降低到多項式級,使得拜占庭容錯演算法在實際系統應用中變得可行,

可見分布式共識演算法并不是區塊鏈出現之后才有的,也不是專門為區塊鏈而設計的,實際上早在區塊鏈技術出現之前就已經有了很多分布式一致性演算法的研究成果,所以有人說區塊鏈是建立在已有

技術研究基礎之上的一種創新型應用,

要理解實用拜占庭容錯演算法,就需要先了解什么是拜占庭將軍問題.

拜占庭將軍問題是圖靈獎大牛 Leslie Lamport 為描述分布式系統一致性問題( Distributed Consensus )在論文中抽象出來一個例子.

一個可靠的計算機系統必須能夠應付出現故障的組件給系統的不同部分發送互相沖突的資訊的情況,

這種情況可以用一群拜占庭將軍圍攻一個城市的例子來做個比喻,這些將軍駐扎在城市的各個方向,互相之間只能用信使來通信,大家必須達成一個共同的作戰計劃,但是,這些將軍中是有叛徒的,叛徒會傳送自相矛盾的資訊來迷惑大家,BFT 的目標就是如何讓大家最終能夠達成共識,

準確的說,所謂 BFT ,也就是拜占庭容錯,指的就是在系統上有一些惡意組件不斷發送錯誤資訊的情況下讓系統依舊正常運行的能力,實作 BFT 有多種演算法,其中一種最為常見的叫 PBFT

pBFT 模型下,有一個節點會被當做主節點,而其他節點都是備份節點,系統內的所有節點都會相互通信,最終目標是大家能以少數服從多數的原則達成資料的共識,如果主節點出現明顯的撒謊跡象,其他的節點也可以聯合起來更換主節點,

每一個共識程序分下面這四步:

第一步,客戶端發一個請求給主節點去執行某個操作,
第二步,主節點廣播這個請求到各個備份節點,
第三步,所有節點執行操作并把結果回傳給客戶端,
第四步,當客戶端收到 f + 1 個來自不同節點的相同的結果后,程序結束,f 代表可能撒謊的節點的最大值,
從第四步也可以看出,只要客戶端能保證多數人認可了一個相同的結果,這個結果就是最終的共識了,具體的數學論證我們不展開,但是有這樣一個結論:pBFT 模式能夠作業的前提是系統上撒謊的節點不能超過總節點數的三分之一,

優點和缺點
PBFT 被用在區塊鏈領域做共識演算法,所以我們最后就來討論一下它跟最常用的 POW 演算法對比起來,有哪些優缺點,

先說優點,首先,pBFT 無需等待確認,PBFT 中發一個交易,不需要像位元幣的 POW 演算法那樣,去等待六次確認,如果一個區塊通過 pBFT 演算法被系統認可了,那么這個區塊就是最終區塊了,不會被撤銷,因為各個節點達成共識是在同一時刻決定的,所以用 pBFT 維護的區塊鏈不會跟 POW 那樣分叉,所以也就不用等待確認以保證當前區塊所在的鏈是最長鏈了,其次,pBFT 不用耗能,因為 PBFT 是無需挖礦的,所以每一次共識程序也就不會像 POW 那樣去耗費大量電能了,總之,pBFT 高效而節能,

但是 PBFT 也有明顯的缺點,首先,最大的缺點是節點數不能太多,因為要保證各個節點間的頻繁的通信,所以整個共識網路不能太大,這樣就讓整個網路不可能像 POW 那樣做到全球范圍的去中心化了,其次,PBFT 不能防止女巫攻擊,POW 之所以要耗能,很大一個原因就是要防止女巫攻擊,女巫攻擊指的是,一個惡意用戶用各種方法偽造多個賬戶來進行共識程序,POW 是通過巨大的金錢消耗來增加偽造一個新賬戶的難度,而 PBFT 就沒有這一層保證了,所以 pBFT 比較適合有準入許可的聯盟鏈,不太適合做無準入門檻的公鏈.

8.共識機制如何分類?

共識機制的分類有多種分類方式,

  • 根據共識演算法解決問題的方式,我們可以大致將其分為兩類:

基于證明是一類,如POW、POS、DPOS;

基于投票的有PBFT、PAXOS、RAFT;

9.各種共識機制的對比與評價

各種共識機制都各有優缺點和適合的場景,下面我們就用表格的形式對現有的一些主流共識機制做一個總結,

簡單一點說:

POW (作業量證明):安全、去中心化,去信任化;但速度低,共識時間長,耗能大;
POS (權益證明):共識時間短,耗能小;但效率低下,易產生馬太效應,帶來中心化;
DPOS (委托權益證明):出塊時間很短,效率相對更高,

10.區塊鏈開發者如何選擇共識演算法?

根據前面對各種共識機制優點與缺點的對比分析,可以根據鏈的型別選擇適合的區塊鏈演算法,開發者也可以自己創造一種共識機制,下面這張圖僅供參考,

總結:區塊鏈是一個信任機器,信任由共識產生,而具體的共識機制包括PoW、PoS、DPoS、PBFT等等,具體選擇哪一種方法,與專案和應用有關,不應一概而論

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/280256.html

標籤:區塊鏈

上一篇:天空中的大海--Kubernetes網路模型--鋪墊篇②

下一篇:后端實習の準備:小白從零學習Go語言第四天

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more