Tendermint 是分布式一致性软件。即使有1/3的机器叛变了, 也能保证其余机器上的数据一致。容忍机器以任意方式失败的能力, 包括变得恶意, 被称为拜占庭容错(BFT)。该理论被提出来数十年了,由于bitcoin和ethereum”区块链技术”的成功,才变得流行起来。区块链用点对点和加密认证技术组成了一个现代化BFT实例。Tendermint包含了两个主要的组件:区块链共识引擎和通用应用层接口。共识引擎叫Tendermint Core,确保每一台机器上的交易列表相同。应用层接口名字是ABCI,提供能为任何语言处理交易的接口。与其他区块链的解决方案(内置的状态机预先打包块)不同,如ethereum的基于世界状态树的键值对存储、bitcoin的脚本语言处理。开发人员可以在任何开发环境下用任何语言通过实现ABCI应用层来复制Tendermint状态机。
共识算法
Tendermint 是一个易于理解的,大部分模块采用异步通信的,拜占庭容错共识协议。该协议可用一个简单的状态机表示,如下图:
协议参加者称为验证节点;他们轮流打包出块并集体对该块打包。在每一个高度上只允许一个块commit。在一个块无法在该轮被提交的情况下,协议会移动到下一轮,并且新的验证节点会propose一个该高度的块。需要两轮投票才能commit一个块;这两轮投票我们称为“pre-vote“ 和 “pre-commit“。在每一轮投票中需要超过2/3的验证节点对同一个块pre-commit才能最后的块commit。
验