Tendermint共识算法

1 Abstract

区块链作为一个去中心化的分布式记账本,最近几年取得了飞速发展。究其原因,去中心化让其更加可靠,去信任化让其更加安全。从根本而言,区块链是个大型的分布式数据库系统,在这个分布式系统中有着众多的参与节点,我们现在探究的就是如何让众多参与节点达成一个一致性结果。
共识算法可以分为两类,一类是Byzantine Fault Tolerance,也就是我们俗称的拜占庭容错算法,比较有代表性的有PBFT,PoW,PoS等。另一类是Fail-Stop Failure,也就是非拜占庭容错的共识算法,比较有代表性的有Paxos,Raft等。
今天我们着重介绍的是基于拜占庭容错的一个十分经典的共识算法----Tendermint[^1]

2 Introduction

图片来自网络
算法分为共识阶段(加粗)和非共识阶段(非加粗)

NewHeigth->Propose->Prevote->Precommit->Commit

算法规定三个共识阶段是一个Round,一个块的提交可能要经过多个Round,从图中我们也可以看出,其分为多个阶段。

参与节点分为Validator节点Non-Validator节点Validator节点是负责参与共识的节点。

作为一种拜占庭容错算法,算法才用了2/3这个条件去限制整个过程,这种方式与PBFT类似。

A set of +2/3 of prevotes for a particular block or at (H,R) is called a proof-of-lock-change or PoLC for short.

from:https://github.com/tendermint/tendermint/wiki/Byzantine-Consensus-Algorithm

PoLC(Proof of Lock Change)表示的是在某个高度轮数(height,Round),对某个块的Prevote投票集合超过2/3,也就是Prevote的投票集。正是有了它的存在让Validator节点永远不可能在同一高度提交冲突块。详细的解释将会在第三部分中的Prevote阶段介绍。

3 Algorithm Details

首先,创世区块高度(Height=0),通过Round Robin[^2]随机选取一个Validator节点作为Proposal一个Block的节点,然后剩下的Validator节点对其进行投票。
下面分NewHeigth->Propose->Prevote->Precommit->Commit阶段阐述整个共识过程。

这里谈一下我自己的一点儿理解
Prevote和Pre

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值