1. 程式人生 > >簡介 以太坊 2.0 核心 之 共識機制的改變

簡介 以太坊 2.0 核心 之 共識機制的改變

作者:林冠巨集 / 指尖下的幽靈

部落格:http://www.cnblogs.com/linguanh/

GitHub : https://github.com/af913337456/

掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8


目錄

  • 前序
  • 以太坊 2.0 參與者
  • 區塊的生命週期
  • 優化共識演算法
  • 2.0 共識的流程

前序

以太坊區塊鏈領域中的一個應用,為公鏈應用,是後者的真子集

本文將從一個區塊的生命週期的角度去介紹以太坊 2.0相比於1.X做了哪些不同,主要的點在於共識演算法的改變。

BTW:本人技術書籍《區塊鏈以太坊DApp開發實戰》現已出版並可網購了,適合初中級區塊鏈技術相關研發人員閱讀。


以太坊 2.0 參與者

注意目前2.0版本還沒正式上線,部分功能還在開發中,它的整體架構圖如下圖所示:

包含但不限於引入了以下的新技術點名詞

  1. 信標鏈,它將管理著參與共識的驗證者。含有但不限於:
    • 管理驗證者。
      • 普通地址抵押 ETH 參與成為驗證者
      • 因各種原因而自己退出驗證者
      • 因懲罰而踢出驗證者
    • 提供隨機性。
      • 隨機分配驗證者去某條分片鏈
      • 隨機選擇輪到提議的驗證者
      • ...
    • 跟蹤和更新驗證者的抵押款。
      • 投票了成功的區塊而獲獎勵
      • 不去投票、曠工而被處罰,我們稱之為"quadratic leak(二次洩漏)"
      • 作惡操作而被懲罰
    • 跨聯,將整個分片鏈系統連線在一起。
      • 當,不同的交易
        被分配到不同的區塊,區塊在不同的分片鏈中時,由信標鏈負責它們資料/通訊的一致,比如合約的呼叫
    • 響應與之相連的驗證者客戶端軟體。
      • 屆時,人人可以使用終端裝置下載信標鏈軟體而成為驗證者,參與管理2.0生態。
  2. 驗證者,參與 2.0 出塊生態的角色,普通以太坊地址通過向指定的智慧合約抵押 32 個ETH,成為驗證者。
  3. 分片鏈,擁有多條,它將管理將被打包的交易,驗證者會被隨機分配到這裡,生成塊,再排隊等待,去投票塊或拒絕塊。
  4. EWASM,分片上的虛擬機器系統,為 EVM 的升級版。下圖是其 github 專案主頁。
  5. ...

區塊的生命週期

基於以太坊 1.8.11版本原始碼。請注意這個前提,所屬版本稱號為:大都會 之 上章 --- 拜占庭

首先我們來看下以太坊 1.8.11區塊生命週期圖解。一目瞭然地,如下圖所示。一個很明顯的點是:以太坊挖礦演算法還是PoW 算力挖礦。這也是導致了出塊時間最嚴重的地方,要增加出塊的速度,優化共識演算法是一個主要的點。

優化共識演算法

以太坊PoW 演算法進行修改在早前已經是以太坊團隊宣告過的一個舉措。本來的程序計劃是:

PoW --> (PoW + PoS) --> PoS

關於PoW共識演算法的通俗講解見我這篇文章:區塊鏈的共識演算法:整體介紹 及 分叉 的通俗講解

關於PoS共識演算法的通俗講解見我這篇文章:區塊鏈的共識演算法:PoS 及其 例子 程式碼 實現


目前的,已經發布了的君士旦丁堡版本,本身是以為是轉為PoS共識的了,無奈依然是PoW

2.0 版本是以太坊現在規劃中的最後一個版本: Serenity(寧靜),正是在這個版本,以太坊團隊將明確要引入新的共識機制,一起參與實現這項修改的角色正是本文的 以太坊 2.0 參與者 小節所提到的那些。

由於以太坊公鏈一開始採用的是PoW 共識機制 已經運行了很久。它不同於一些新生的公鏈,在一開始的時候可以挑選效能更好的共識演算法,在前人吃螃蟹者 --- 比特幣公鏈的基礎上,它也採用了 PoW。因此發展到現在,隨著部署在它上面的 DApp 原來越多,且要考慮支援要求交易速度更高的應用時,它必須要升級了。

現在升級,就需要考慮更多的問題,比如說:

  1. 依然要保持去中心化,因為這是區塊鏈的核心特性之一。
  2. 有效對抗共識中心化的威脅,比如 PoW 要考慮的算力中心化。
  3. 區塊共識的成本性考慮,比如算力對電力的資源的消耗。
  4. 對於舊共識機制的節點陣營,是否會導致硬分叉鏈的誕生。
  5. 與前區塊鏈的區塊資料嵌接性。
  6. 提高出塊與交易打包的吞吐性。
  7. 區塊被驗證的速度。
  8. ...

對於第六點,因為出塊成功的效率直接影響了交易被打包成功的效率,從而交易成功的速度也跟隨著而改變。

2.0 共識的流程

組合前面小節 以太坊 2.0 參與者 談到的各個角色,以太坊 2.0 的共識機制,目前看來是符合 PoS 模式的,為什麼是目前看來?因為2.0還沒釋出,所以在這之前一切都有變數。

在區塊的生命流程中的進行共識的一個步驟可以細分為下圖。

圖中有兩個重要的隨機:

  1. 隨機分配驗證者到分片鏈。從驗證者集合中,挑選各個部分的驗證者分配到某一條分片鏈中。
  2. 隨機提議驗證者。被提議的驗證者提議自己所在分片鏈生產的區塊,供其它分片鏈的驗證者進行投票。投票可以投認可票,也可以投拒絕票。

注:叔塊的概念目前不確認是否還會存在以太坊2.0 中,故 暫時不在圖中作出。

最後,大家可以看下一些暫定到時可以執行與信標鏈進行通訊的客戶端軟體: