Tendermint的学习

简介

什么是Tendermint?

Tendermint是一个基于pBFT(实用拜占庭容错)共识机制生成的状态机,可用于在多台机器安全一致地复制一个应用。安全指的是即使有多达 1/3 的机器出现任意故障的情况下, Tendermint 仍然能够正常工作,这叫拜占庭容错。一致指的是每一个正常工作的机器都会有着同样的交易日志,计算相同的状态,这就是区块链的特性。所以,用Tendermint实现的区块链有高速和易用的特点。它主要有两部分:Tendermint Core是实现共识机制部分,ABCI(Application Blockchain Interface)是一个支持多种语言写智能合约的程序接口。使用Tendermint,各种去中心化应用可以很容易的搭建底层区块链。 现在Tendermint主要使用在Cosmos这个项目上。

主要文档
https://tendermint.readthedocs.io/en/master/introduction.html#consensus-overview

代码
Tendermint Core: https://github.com/tendermint/tendermint
ABCI: https://github.com/tendermint/abci

什么是Cosmos?
Cosmos想做成一个区块链的互联网。只要是通过任何能快速达成终极共识的机制做成的区块链,都可以加入Cosmos,在这个平台上实现链与链之间的交易。Cosmos支持各种能快速达到终极共识的区块链。BFT就是这样一种链。Tendermint是它的主选,Cosmos中心链(Cosmos Hub)就是通过他来实现。

Tendermint共识算法。

Tendermint实现的是POS权益证明,每个生成的区块需要每个Validator投票决定。根据持币量不同有不同的投票权重,也加入了对作恶节点的经济惩罚机制。

Tendermint使用的pBFT来对协议达成共识。这个算法分三步,propose,prevote,precommit。(这和Zilliqa是类似的。)

propose阶段
参加协议的节点(Validator)轮流提出一个区块发给所有其他节点。

prevote阶段
所有节点对区块验证并进行投票。超过2/3的节点同意。去第三步,超过1/3的反对,回到第一步,由新的Validator提出新区块。

precommit阶段
所有节点通知Validator自己同意使用新节点。超过2/3的节点同意,区块就正式生效并加到链上。

Tendermint vs. Casper

另外一个知名的POS,叫Casper共识。这是选定的将来在以太坊上实现的POS共识。Tendermint和Casper最大的区别是:
Tendermint使用pBFT,所以每次选出来的块都有最终确定性,不会有分叉,这样能达到共识安全。但是也有达不成共识使得链停滞不前的隐患。
Casper考虑更多的是可用性而非一致性,所以使用的是基于链的权益证明,它每次选出来块都是最长的链上的一个块,然后进行投票。这样还是会有分叉的存在。当然Casper还在不断发展中,也为了配合以太坊的逐步升级做了一些调整。现在是一个PoW和PoS的混合体。将来会慢慢发展成一个真正的POS协议。

总结一下,所有的pBFT算法,都是由单一的节点发起新区块,区块的最终决定还是要投票决定。但是发起节点不固定,这样就不会成为外部攻击目标。如果发起节点固定,那就成了dPOS,类似EOS那种。dPOS的区块发起节点是一个超级节点,要抵押很多的代币,才能得到这个权益。他们都是不差钱的金主,也有足够的资金和足够的理由来保护他们的节点服务器不受外部攻击。

你可能感兴趣的:(Tendermint的学习)