[区块链] 一文读懂实用拜占庭容错(PBFT)算法

新闻来源    2018年09月30日 14:09

在区块链中有一个著名的问题,就是拜占庭将军问题,对于拜占庭将军问题,网上的文章已经多得不要不要了,今天和大家分享的是其相关的实用拜占庭容错算法,一起来看看吧。

实用拜占庭容错算法( Practical Byzantine Fault Tolerance )刚开始是在 MIT 的 Miguel 和 Barbara Liskov 在 1999 年的学术论文中提出的,他们的本意是为设计一个低延迟存储系统设计系统,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行,主要是为了应用于不需要大交易量但需要处理许多事件的数字资产平台,每个节点都可以发布公钥,这是被允许的。节点将签名所有通过节点的消息,以验证其准确性。当得到一定数量的签名想用,此交易就被认定为有效。

PBFT 算法的运作步骤为:

(1)取一个副本作为主节点,其他的副本作为备份;




(2)用户端向主节点发送使用服务操作的请求;

(3)主节点通过广播将请求发送给其他副本;

(4)所有副本执行请求并将结果发回用户端;

(5)用户端需要等待 F+1 个不同副本节点发回相同的结果,作为整个操作的最终结果。

PBFT 对每个副本节点提出了两个限定条件:

( 1 )所有节点必须是确定性的。也就是说,在给定状态和参数相同的情况下,操作执行的结果必须相同;

( 2 )所有节点必须从相同的状态开始执行。

PBFT 算法包含三个重要阶段,分别是预准备( pre-prepare )、准备(prepare)和确认(commit),pre-prepare 阶段和 prepare 阶段用来把在同一个 view 里发送的请求给确定下序列,就是排好序,让各个 replicas 节点都认可这个序列,照序执行。prepare 阶段和 commit 阶段用来确保那些已经达到 commit 状态的请求即使在发生 view change 后在新的 view 里依然保持原有的序列不变

PBFT 算法存在的问题:

· 计算效率依赖于参与协议的节点数量,不适用于节点数量过大的区块链系统,扩展性差。

· 系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私有链环境。

· PBFT 算法要求总节点数 n>=3f+1(其中,f 代表作恶节点数)。系统的失效节点数量不得超过全网节点的 1/3,容错率相对较低。

另外 PBFT 算法有一个弱点,其不能很好的存贮记录其交易信息,黑客能够截取一些失效的副本,这会让信息外漏。

本质上来说,拜占庭容错方案就是少数服从多数。目前有一些机构正在关注实用拜占庭容错算法,比如中国 ChinaLedger 联盟和 HyperLedger 联盟就在研究探讨其的实际应用。迅雷发布的迅雷链也是使用的这一共识算法。

原文链接: https://www.kg.com/article/495651121931620352


新闻来源


CryptoCurrencyCNYChange 1hChange 24hChange 7d
Bitcoin260,413 0.72 % 2.30 % 6.62 %
Ethereum19,387 1.04 % 2.39 % 9.49 %
Tether6.300 0.51 % 0.76 % 0.72 %
Binance Coin2,839.8 0.37 % 4.66 % 8.02 %
USD Coin6.450 0.19 % 0.45 % 0.44 %
Cardano14.22 0.42 % 4.87 % 0.22 %
Solana120.65 1.27 % 1.81 % 28.37 %
XRP6.950 0.74 % 0.44 % 13.05 %
Terra135.52 0.04 % 1.40 % 47.29 %
Polkadot186.24 0.08 % 15.21 % 37.87 %
Dogecoin2.050 0.07 % 5.76 % 12.58 %
Avalanche263.57 1.24 % 9.58 % 126.95 %
Shiba Inu0.00005447 2.36 % 8.57 % 35.74 %
Binance USD6.490 0.38 % 0.60 % 0.69 %
Polygon6.530 0.79 % 0.08 % 13.45 %
Cosmos136.82 0.59 % 0.43 % 7.91 %
Crypto.com Coin1.460 0.20 % 4.39 % 9.05 %
TerraUSD6.410 0.64 % 0.67 % 0.54 %
Wrapped Bitcoin219,027 0.89 % 1.38 % 3.42 %
Chainlink159.12 0.87 % 1.57 % 4.71 %
Near91.56 0.11 % 6.96 % 68.08 %
Dai6.440 0.16 % 0.37 % 0.52 %
Litecoin2,003.2 1.07 % 7.23 % 35.68 %
Algorand11.89 1.63 % 5.73 % 6.03 %
TRON0.4254 0.04 % 0.43 % 3.05 %
Fantom17.49 0.68 % 2.96 % 5.51 %
Bitcoin Cash6,714.1 0.17 % 13.74 % 49.71 %
Uniswap259.87 1.14 % 12.19 % 0.43 %
OKB116.24 1.75 % 9.87 % 78.32 %
FTX Token487.26 3.93 % 19.20 % 58.37 %