Tendermint共识协议详解

本文为万向区块链技术中心研究组撰写。

 

1. Tendermint简介

Tendermint被设计用于构建各种分布式应用,易于理解和使用,并且高效。


Tendermint基于状态机副本复制技术,适用于区块链的账本存储。它是BFT(拜占庭容错)的,能够容许不超过1/3 的拜占庭节点的存在,也就是说,在这个前提下,系统能够保证所有正常节点拥有相同的交易列表,并按相同的顺序执行交易,最终得到相同的状态。


Tendermint 包含两个主要的模块:

(1)共识引擎称作Tendermint Core, 用于保证各节点按相同的顺序记录相同的交易列表。

(2)应用接口称作Application BlockChain Interface,简称 ABCI 。ABCI允许开发者使用任意的编程语言和开发环境编写应用逻辑,例如交易的处理逻辑等。

 

通过将共识引擎与应用逻辑解耦,Tendermint 可以用于构建各种分布式应用,包括各种区块链等。例如
Cosmos、 Ethermint 和 Hyperledger Burrow 等都基于 Tendermint 共识引擎而构建。

 

2. Tendermint共识算法

本部分详细介绍Tendermint共识算法。 Tendermint共识算法属于拜占庭容错类的共识算法,在拜占庭节点数不超过 1/3的情况下,能够保证共识的安全性(safety)。严格来说,由于系统中 validator节点的投票权(voting power)可能不一样,因此,容错性更准确地说,是指拜占庭节点的投票权不超过 1/3。


2.1. Tendermint共识算法

2.1.1. 系统模型

系统中,节点分为两种类型:validator和非validator节点。

validator节点参与共识,也就是对区块(包含一批交易)进行共识,包括propose区块,对提议的区块进行投票。而非validator节点不参与共识,但会帮助传播区块和投票消息,以及相互同步状态等。

节点之间不一定两两相连,和一个节点直接相连的那些节点称作peers。

无论是validator节点,还是非validator节点,都包含与共识过程相关的一些状态,如区块链当前高度height,round,以及step等。

节点之间运行gossip协议,相互同步共识状态和区块链状态信息。

 

2.1.2. 状态机概览

2.1.2.1. 算法主体流程

Tendermint算法主流程如下所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值