最热门的共识机制盘点:Tendermint还是Casper?
摘要: Tendermint更适合有信任基础的公有/私有链结合的企业级区块链。 Casper更适合无信任基础的去中心化区块链。
POW被广泛诟病的耗能问题(挖矿成本高)和POS被广泛诟病的“无利害关系“(“nothing at stake“)问题促使许多区块链行业的前驱在不断地研究和创造新的共识机制。当前最火的两个共识机制之一,Tendermint和Casper就是为了解决这些问题的产物。那么到底什么是Tendermint和Casper?它们各有什么优劣?新的区块链项目又应该怎么从中选择适合自己的共识机制?本文我们一起来看一看这些问题。
Tendermint是什么?
Tendermint属于拜占庭容错算法,它针对PBFT(实用拜占庭容错算法)做了优化,只需要有两轮投票即可达成共识。第一个真正提出将BFT研究应用到PoS公有区块链环境中是Jae Kwon,他在2014年创造了Tendermint。先简单介绍一下Tendermint算法的流程。 Tendermint的状态转换如下图(来自Tendermint wiki):
简单地说,Tendermint里面对高度为h的块共识的每一轮包括3个步骤:Propose(提议),Prevote(预投票),Precommit(预提交)。当在某一轮达成共识(收到大于2/3的Precommit投票)后,就会进入对下一个高度的共识,从第0轮开始 。 Tendermint中有个很重要的概念:PoLC,全称为Proof of Lock Change,表示在某个特定的高度和轮数(height,round),对某个块或nil(空块)超过总结点2/3的Prevote投票集合,简单来说PoLC就是Prevote的投票集。Tendermint中的参与者叫做 “验证人”(validator)。他们轮流对交易区块进行提议,并对这些区块进行投票。区块会被提交到链上,每一个块占据一个高度h。当然提交块可能会失败,如果失败就会开始下一轮的提交。 要想成功提交一个块,需要有两个阶段的投票:预投票和预提交。在同一轮提交中,只有超过2/3 的验证人对同一个块进行了预提交,这个块才能被提交到链上。假设少于1/3的验证者是拜占庭,Tendermint保证安全永远不会被破坏。也就是说验证者(2/3以上)永远不会在同一个高度提交冲突的区块。因此,基于Temdermint的区块链永远不会分叉。
Casper是什么?
Casper是以太坊从POW转型到POS的一个优化版POS共识机制,以太坊的核心贡献者V神有意通过Casper来硬分叉以太坊以实现这个转型。Casper有两个版本,CFFG和CTFG,笔者将在未来的文章里面对这两者进行详细的分解。总的来说,Casper要求验证人(validators)将保证金中的大部分对共识结果进行下注。而共识结果又通过验证人的下注情况形成:验证人必须猜测其他人会赌哪个块胜出,同时也下注这个块。如果赌对了,他们就可以拿回保证金外加交易费用,也许还会有一些新发的货币;如果下注没有迅速达成一致,他们只能拿回部分保证金。因此数个回合之后验证人的下注分布就会收敛。此外如果验证人过于显著的改变下注,例如先是赌某个块有很高概率胜出,然后又改赌另外一个块有高概率胜出,他将被严惩。这条规则确保了验证人只有在非常确信其他人也认为某个块有高概率胜出时才以高概率下注。Casper通过这个机制来确保不会出现下注先收敛于一个结果然后又收敛到另外一个结果的情况,只要验证人足够多。验证人对每一个高度h上的每一个候选块独立下注,给每个块指定一个胜出概率并公布。通过反复下注,对于每个高度h验证人会选出唯一的一个胜出块,这个过程也决定了交易执行的顺序。如果一个验证人在某个高度公布的概率分布总和大于100%,或者公布了小于0%的概率,或者对一个无效块指定了大于0%的概率,Casper将罚没他的保证金。
Tendermintvs. Casper
一句话来讲,Tendermint是一个基于轮次的投票机制,而Casper是一个基于赌博的投注机制。首先,Tendermint和Casper都能有效地解决“无利害关系“问题,V神2014年1月引入的“slasher”概念可以在协议内惩罚以减轻这个问题,后来JaeKwon在同一年通过Tendermint的第一个迭代也解决了这个问题。
在解决远程攻击问题上,Casper和Tendermint采用一种简单的锁定机制(Tendermint中俗称“冻结”,Casper中俗称保证金)来锁定一段时间(几周甚至几个月),以防止任何恶意联合验证者违反安全。在CFFG算法中,一个分叉选择规则永远只能修改最终块之后的块来阻止远程攻击。通过使用时间戳,在CFFG中的长距离分叉试图修改比最终块还要更早的块的时候会被协议直接忽略掉。
还有一个问题是卡特尔形式(Cartel Formation),卡特尔形式指的是在任意经济框架下的寡头垄断问题,数字货币经济体系当然也不例外会有这类问题。Tendermint没有任何协议内的手段,而是依靠协议外的管理方法来与寡头垄断验证者进行对抗,基本原理是:用户最终将不可避免地注意到卡特尔的形成,在协议以外的生活中出到对此进行传播然后放弃或者投票重新组织受到攻击的区块链。然而,在Casper的体系里面,CTFG协议明确使用了内审激励机制来打击卡特尔形式,这也是当前共识机制当中唯一一个协议内部自带防卡特尔形式的一种模式。
CAP理论下的Tendermint vs. Casper
CAP定理指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partitiontolerance(分区容错性),三者不可得兼。● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)●可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性P是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。
Tendermint协议中绝大部分是异步的(前面部分也有弱同步的),并且验证者只有在接收到了超过2/3验证者的消息时才会处理。正是因为这样,所以Tendermint需要大多数的验证者可以100%正常运行,如果1/3或更多的验证者离线或脱机,网路就会停止运行了。从CAP理论来看,Tendermint的设计决策确实是把一致性C和分区容错性P地位放在了实用性A之上。在现实世界上有相当高的可能性是,系统真的会停止运行,参与者将会需要在协议外组织在某种软件上更新后重启系统。
而Casper强调的是在链上同步,所以Casper的设计选择了实用性A和分区容错性P多于一致性C。Casper对Tendermint的核心优势在于网络随时可以容纳更多数量的验证者。因为Tendermint中的区块在创建的时候就需要最终化,所以区块的确认时间应该短一点才可行。但是为了达到短区块时间,Tendermint PoS能够容纳的验证者数量就有了限制。由于CTFG和CFFG到在区块创建的时候都不需要安全性,所以可以容纳验证者的数量会更加的多一点,比如Tendermint只能容纳100个左右的验证者,而Casper则没有这个限制。
总得来说,Tendermint假设的是区块链的参与者在绝大多数时候不会作恶,因此验证者相应的惩罚机制比Casper轻,所以Tendermint更适合参与者们都相对可信的区块链,比如公有/私有链结合的企业级区块链。然而Casper假设的是区块链的参与者都是不可信的,所以相比Tendermint而言设计了非常严厉的惩罚机制,因而更适合去中心化无信任基础的区块链。当然,两者都还有问题,还远不是完美的共识机制,Code is Law, 期待未来我们能共同见证更完善的机制。
评论(0)
Oh! no
您是否确认要删除该条评论吗?