一文了解波卡的共識原理
PolkaWorld
2020-07-07 08:35
本文约3056字,阅读全文需要约12分钟
本文介紹了區塊鏈系統中共識的基本原理,共識如何與Substrate 框架中的runtime 交互,以及框架中可用的共識引擎。

編者按:本文來自PolkaWorld(ID:gh_6c4c2038ddba),Odaily經授權轉載。

),Odaily經授權轉載。

),Odaily經授權轉載。

mdnice編輯器

),Odaily經授權轉載。

  • mdnice編輯器

  • 區塊鏈節點使用共識引擎在區塊鏈狀態上達成統一。本文介紹了區塊鏈系統中共識的基本原理,共識如何與Substrate 框架中的runtime 交互,以及框架中可用的共識引擎。

  • mdnice編輯器

區塊鏈runtime 是一個狀態機[1]。它有一些內部狀態和狀態轉換功能,允許它從當前狀態轉換到未來狀態。在大多數runtime 中,有些狀態具有到多個未來狀態的有效轉換,但必須選擇一個轉換。

一些初始狀態,叫做“創世”

mdnice編輯器

最終(當前)狀態

mdnice編輯器

  • Aura (Round Robin)

  • mdnice編輯器

  • PoW

在中心化系統中,中心化的權限通過按照他們看到的順序記錄狀態轉換,在相互排斥的備選方案中進行選擇,並在發生衝突時選擇競爭備選方案中的第一個。在去中心化系統中,節點將看到不同順序的交易,因此它們必須使用更精細的方法來排除交易。更複雜的是,區塊鍊網絡力求容錯,這意味著即使某些參與者不遵守規則,系統也應繼續提供共識的數據。

mdnice編輯器

Substrate 提供多種區塊構造算法,還允許你創建自己的:

BABE (基於插槽)

mdnice編輯器

分叉選擇規則是一種算法,它獲取一個區塊鏈並選擇“最佳”鏈,從而選擇應該擴展的鏈。 Substrate 通過SelectChain 展現了這個概念。

mdnice編輯器

最長鏈規則

mdnice編輯器

GHOST 規則

PoW

mdnice編輯器

區塊生產

在像比特幣這樣的PoW 系統中,任何節點都可以在任何時候生成一個塊,只要它解決了計算密集的問題。解決這個問題需要CPU 時間,因此礦工只能根據計算資源的比例生成塊。

插槽

Substrate 提供了一個PoW 塊生產引擎。

mdnice編輯器

插槽

mdnice編輯器

基於插槽的共識算法必須有一組已知的驗證人,這些驗證人可以生成塊。時間被分配到不同的插槽中,在每個插槽中只有一些驗證人可以產生塊。在每個插槽中,驗證人可以編寫塊的細節因引擎而異。 Substrate 提供Aura 和Babe,這兩個都是基於插槽的區塊生產引擎。

最終性

任何系統中的用戶都想知道他們的交易何時完成,區塊鏈也不例外。在一些傳統的系統中,最終性發生在收據被移交或文件被簽署時。

在使用最終性小工具的系統中,必須修改分叉選擇規則以考慮最終性遊戲的結果。例如,節點將選擇包含最近完成的塊的最長鏈,而不是選擇最長鏈的周期。

Aura

mdnice編輯器

BABE

mdnice編輯器

mdnice編輯器

mdnice編輯器

PoW

mdnice編輯器

GRANDPA

mdnice編輯器

mdnice編輯器

mdnice編輯器

為了適應這些共識特徵,Substrate 有一個DigestItem 的概念,一個從節點的外部(共識所在的地方)傳遞到runtime 的消息,反之亦然。

了解更多

mdnice編輯器

  • BABE Research[7]

  • GRANDPA Research[8]

了解更多

了解更多

原文:https://substrate.dev/

mdnice編輯器

PolkaWorld
作者文库