主页 > 官网imtoken钱包苹果版下载 > 区块链共识算法比较:Casper vs Tendermint

区块链共识算法比较:Casper vs Tendermint

本文约8200字+,阅读(观看)需46分钟

股权证明的漫长道路

权益证明的定义请参考理解权益证明。

1982年,拜占庭将军问题首先由Lamport、Shostak和Pease提出。 Cosmos 的 Ethan Buchman 是这样描述的:“这是一个在妥协的通信网络中实现分布式协议的问题,即在不可靠的环境中构建可靠系统的问题”。 从 1982 年到 1999 年,没有人能够创建一个可以解决拜占庭将军问题的系统。 一直以来,拜占庭将军问题都与计算无关,因为那个时候互联网演变成基于云的中心化计算模型,需要解决的只是容错。

因此,容错算法开始流行,例如1998年发明的Paxos算法和2013年发明的Raft算法被广泛使用。 1999 年发明的实用拜占庭容错 (PBFT) 尚未在学术界以外得到采用。 直到2008年中本聪将网络规模的分布式拜占庭容错(BFT)算法设计到区块链方案中,拜占庭容错才得以推广。 当这个原型出现时,系统研究界的人们开始构思将学术界的“奇迹”应用到现实世界的想法。

2011 年,BitcoinTalk 论坛组织了一场关于权益证明 (PoS) 概念的讨论。 最初的 PoS 协议,例如点点币,并没有取得令人满意的结果。 第一个真正提出将 BFT 研究应用于 PoS 公共区块链环境的是 Jae Kwon,他于 2014 年创建了 Tendermint。

当时,PoS 研究做了一个很大的假设:假设系统中的节点集合在很长一段时间内是静态和稳定的。 在区块链环境中完全不现实。 Jae Kwon 的重大突破是使 Tendermint 能够使用块、哈希链接、动态验证器集和循环领导选举将 BFT 研究应用到复制状态机(区块链)领域。

在 Tendermint 环境中,出现了大量的共识算法(Honeybadger、Ouroboros、Tezos、Casper),它们都包含 BTF 研究的元素和在区块链上其他模块中观察到的元素。

为权益证明所做的所有研究都指向一个重要问题:我们能否在不耗尽物质稀缺资源的情况下实现工作量证明 (PoW) 级别的安全性? 这个问题可以转化为:PoS 的投票权是以链上货币计价的,而不是以算力计价的。 区块链的 POS 共识问题比可扩展性、运行 PoW 挖矿的高开销成本以及环境外部性问题更广泛地被讨论,刺激了大量资源涌入 PoS 安全研究。

本文主要讨论加密货币中使用权益证明的三种主要 PoS 协议的特点:由 Vlad Zamfir 领导的 Casper the Friendly Ghost (CTFG) 和由 Vitalik Buterin 领导的 Casper the Friendly Finality Gadget (CFFG) 和 Jae Kwon 领导的研究嫩薄荷。

股权证明的陷阱

1 不感兴趣

起初,在有几种不同的方式来描述股权证明的一般陷阱的时候,提出了无利害关系。 Jae Kwon 于 2014 年 5 月以“错误选择谬误”的不幸名称首次提到这个问题。 2014 年 7 月,Vitalik 普及了比特币开发人员描述为“无抵押”问题的确切定义。 该问题提出了这样一种情况,即验证者可以通过在给定高度为多个冲突块投票而免费地有效违反安全性。

简单的 PoS 实现非常容易受到这些攻击。 灾难性的是,因为没有激励来鼓励每个人总是专注于一条独特的链,而每一个激励都必须同时在冲突的链上重复,所以为了获得更多的区块奖励,经济上最优的策略变成了投票给尽可能多的分支尽可能。 下图显示了它:

比特币是什么算法_比特币挖矿采用的算法_比特币共识算法

比特币是什么算法_比特币共识算法_比特币挖矿采用的算法

在简单的 PoS 设计中,竞争链上的预期投票数高于单个链上的预期投票数。

在工作量证明中,矿工在多条链上挖矿的“惩罚”是他们必须拆分他们的算力(一种非常稀缺的资源)。 在现代非退化 PoS 设计中,必须将此成本内置到协议中以模仿物理 PoW 挖掘的局限性。

Vitalik Buterin 在 2014 年 1 月引入的“slasher”概念或协议内惩罚可以减轻这种攻击。 Jae Kwon 在同一年将这种方法更进一步,这是实施 Tendermint 共识协议的第一个迭代进展。 严酷性和允许这种惩罚的条件对所有非退化 BFT 协议都有帮助,甚至被本文提出的三个共识采用。

2次远程攻击

远程攻击源于用户必须提取保证金的权利。 这产生了一个根本性问题比特币共识算法,因为这意味着攻击者可以从任意距离构建分叉而不用担心被切断。 一旦债券被解绑,在一定高度区块前不进行远距离投票的激励就会被移除。 换句话说,当超过 2/3 的验证者解绑时,他们可以恶意创建包含前一组验证者的第二条链,这可能导致任意交易。

这对于权益证明协议来说是非常致命的,因为安全模型必然是“主观的”。 当参与网络需要大量的社会信息时,安全模型就被称为“主观的”。 新节点加入网络后,他们可能会对网络的当前状态得出不同的结论,因为他们的决定是基于主观信息,即社会声誉。 相反,工作量证明的安全模型必须是“客观的”,因为当前的网络状态总是工作量最大的状态,新节点对网络状态的结论总是相同的,因为它们的决策是基于客观信息。

弱主观模型下纠正PoS的远程攻击,需要接入后续网络中的新节点:

Casper(s) 和 Tendermint 采用简单的锁定机制(在“Tendermint”中通常称为“冻结”)来锁定股份一段时间(几周到几个月后“解冻”),以防止任何恶意联合验证者违反安全 。 在CFFG算法中,一个分叉选择规则只能永远修改最后一个块之后的块,防止远程攻击。 通过使用时间戳,CFFG 中试图修改比最终区块更早的区块的远程分叉将被协议简单地忽略。

卡特尔形式

第三,最后一个障碍是任何具有任意价值的经济体都面临着真正的寡头垄断问题,即使是原生加密货币也是如此。

“加密货币的中心化程度令人难以置信,采矿权也是如此。 寡头垄断竞争是许多现实世界市场的常态。 少数相对富有的验证者之间的协调要比大量相对贫穷的验证者之间的协调容易得多。 在我们的案例中,卡特尔形式是完全可以预料到的。”

比特币挖矿采用的算法_比特币共识算法_比特币是什么算法

- Vlad Zamfir,Casper 的历史第 4 章

Tendermint 依靠额外的协议治理方法来对抗寡头垄断验证者。 虽然在审查方面没有商定的措施,但依靠带外社会信息来解决卡特尔形成的基本原理是,最终用户将不可避免地注意到卡特尔的形成,社会将对此进行八卦,然后放弃或投票重组被攻击的区块链。

到目前为止,Vlad 的 Casper 协议是唯一明确使用共识审查激励来打击卡特尔的模型。

概述

权益证明算法的实现方式有很多种,但权益证明设计的两个主要原则是基于链的 PoS 和基于拜占庭容错 (BFT) 的 PoS。 Tendermint 是基于拜占庭容错的 PoS 设计,CTFG 是基于链的 PoS 设计,CFFG 是两者的混合。

计算机科学中的 CAP 理论返回了在分布式数据系统中不可能提供超过 2/3 的保证:可用性、一致性、分区容错性。 基于链的 PoS 算法倾向于选择高可用性而不是高一致性,因为高可用性意味着所有的交易都可以被处理,但是以全网状态复制的一致性为代价。 相反,基于BFT,会倾向于选择高一致性。

1BTF 基于权益证明

拜占庭容错共识算法源于 30 多年的丰富研究。 Tendermint (2014) 是 Castro 和 Liskov 在 1999 年引入的实用拜占庭容错 (PBFT) 算法的第一个 PoS 改编。基于 BFT 的 PoS 协议伪随机安排验证者在多轮投票中提议区块。 然而,提交和最终确定区块取决于多数——所有验证者的 2/3 签署了提交的区块。 在区块最终确定之前可能需要几轮签名。 BFT 系统只能容忍 1/3 的故障,包括故障或恶意攻击。

2Tendermint核心

Tendermint主要包括两大主要技术:区块链共识引擎和通用应用接口。 被称为 Tendermint 核心模块的共识引擎确保相同的交易在每台机器上以相同的顺序记录。 应用程序接口,称为应用程序区块链接口 (ABCI),允许以任何编程语言编写的程序处理交易。

在核心模块中,Tendermint 基于轮询投票机制工作,这也是共识协议的原则。 一轮分为 3 个处理步骤:验证者提出一个区块,发送一个提交意图,签署并提交一个新区块。 这种机制为原子广播提供了一个安全的状态复制机,增加了一个责任层——安全故障可以完全归因于 Tendermint。

Tendermint 共识算法从一组验证器开始。 验证者维护区块链的完整副本,并可以使用他们的公钥来识别验证者。 他们轮流在每个新的区块高度提出一个区块。 每轮投票只能有一个验证者提出一个区块,并且必须用验证者对应的私钥进行签名,这样如果出现问题,可以找到负责的验证者。 然后剩下的验证者需要对每个提案进行投票,投票需要用自己的私钥签名。 这些组成一个回合。 但是,由于网络的异步性,提交一个新区块可能需要好几轮。

比特币挖矿采用的算法_比特币是什么算法_比特币共识算法

比特币共识算法_比特币挖矿采用的算法_比特币是什么算法

验证者可能由于多种原因而无法提交区块:当前提案可能下线,或者网络可能遇到延迟。 Tendermint 允许跳过验证者(即当轮到验证者出块但验证者没有出块时)。 在进入下一轮投票之前,验证者等待一小段时间来接收提议者(本轮产生区块的验证者)提议的整个区块。 这种对超时的依赖使 Tendermint 成为一种弱同步协议,而不是异步协议。 然而,协议的其余部分是异步的,验证者只有在收到超过 2/3 的验证者集的消息时才处理交易。 因此,Tendermint 要求大多数验证器 100% 正常运行。 如果 1/3 或更多的验证者离线或离线,网络将停止运行。

假设不到 1/3 的验证者是拜占庭式的,Tendermint 保证永远不会违反安全性——也就是说,验证者(超过 2/3)永远不会在同一高度提交冲突的区块。 因此比特币共识算法,基于 Temdermint 的区块链永远不会分叉。

到目前为止,Tendermint 的设计决策确实将安全性和不变性置于灵活性之上。 在现实世界中,系统实际上停止运行的可能性相当大,参与者需要在协议之外组织的某种软件更新后重新启动系统。

在加密货币社区中只有少数人理解 Casper 及其价值的时候,Tendermint 为 Casper 研究奠定了基础。 这个见解是:如果一条链本身是高度容错的,那么你可以依靠这条链来很好地决定谁生产区块,但如果这条链本身不可靠,那么你就卡住了。 先有鸡还是先有蛋的问题没有了,这是之前所有其他共识算法的灾难。

这种设计决策被认为不如以太坊和比特币等可用性优先的协议。 比特币的权衡是这样的:如果其网络分裂,比特币将失去其在各种攻击情况下的安全保证。 这其实是一个不可修改的理论,就是当你的置信区间是100%的时候,那么你是在走一条正确的链,你会用这条链来选择谁来生产下一个区块,但是一旦你转移到了一条不安全的链上,没有明确的路径可以让您回到正确的链。

Tendermint 的显式属性

基于链的权益证明

基于链的权益证明模仿了工作量证明共识算法。 在这个股权证明协议中,该协议允许伪随机选择的验证者生成一个新块。 新区块是与前一个区块的哈希连接(包括前一个区块的哈希值)。 在最长链的父块上。 基于链的 PoS 在很大程度上依赖于同步网络,通常优先考虑可用性而不是一致性。 Casper(s) 是对 Tendermint 的核心理念的改编,适用于支持活跃性而非安全性的环境。

1CFFG

CTFG 是一个明确的 PoS 构建,但 CFFG 是一个 PoS 叠加在现有的以太坊 PoW 提案机制上——由 Vitalik Buterin 领导的 PoW 和 PoS 的融合。

比特币和以太坊的 PoW 共识协议都不会做出“最终”决定,并且区块可能会重组到过去的某个区块高度。 当一个块没有机会再次修改时,它被称为“最终确定”。 因为工作量证明不提供这种修改保证,所以它被认为是共识不安全的。 相反,随着我们不断加长链条,区块的最终确定概率越来越高。 为了给以太坊区块链增加期望的最终性和51%的攻击抵抗力,CFFG实现的逻辑完美地提供了这个效果。

比特币挖矿采用的算法_比特币共识算法_比特币是什么算法

CFFG 将分阶段推出,以保守的方式逐步将以太坊的 PoW 安全模型过渡到 PoS 安全模型。 Casper 的第一次迭代将实现这里讨论的混合 PoW/PoS 协议,而 Casper 的最后一次迭代很可能会吸取 CFFG 和 CTFG 的教训,朝着完整的 PoS 协议发展。

CFFG 是基于链的 PoS 和基于 BFT 的 PoS 的混合体,因为它吸收了两者的思想。 它的模块化覆盖设计使得更新当前的 PoW 链变得更加容易,因为它是将系统升级到完全不同的共识模型的一种更保守的方法。

Casper 的应用程序逻辑存在于智能合约中。 要成为 Casper 中的验证者,您必须拥有 ETH,并将 ETH 作为杠杆权益存储在 Casper 智能合约中。 Casper 第一次迭代中的区块提议机制将被保留:它仍然使用中本聪的 PoW 共识,矿工可以创建区块。 但为了最终确定区块,Casper 的 PoS 覆盖层取得了控制权,并拥有自己的验证者,他们在 PoW 矿工之后投票。

Casper 的 PoS 共识中最重要的部分之一是检查点。 Casper 以 50 个区块为增量评估最终性,称为检查点,每个 50 个区块的片段称为一个纪元。 这个过程是由验证者在每个时期发送投票消息触发的。

一个周期前完成检查点需要 2 个周期或两轮投票才能完成。 例如,当超过 2/3 的验证者(即大多数)投票给检查点 c 时,则称该检查点已被“判断”。 下一个周期,当大多数人投票支持检查点 c 时,会发生两件事:c 被判断并且 c 被最终确定。 周期 c 也代表最后一个确定周期 (LFE)。

回顾一下,区块的最终确定需要两个条件:

在理想的实现中,块的最终确定遵循以下步骤:

2/3 票赞成区块 1 → 试验区块 1 → 2/3 票赞成区块 2 → 敲定区块 1,其中区块 2 是区块 1 的子区块。

比特币是什么算法_比特币共识算法_比特币挖矿采用的算法

当检查点最终确定时,验证者将获得报酬。 但是,如果有两个最终检查点在同一高度分叉,那么就会违反安全性。 此时达到减持条件,至少会减持1/3的保证金。 当安全性遭到破坏时,错误归属证明可以作为交易广播给 PoW 矿工。 然后 PoW 将这个证明交易形成一个区块进行挖矿,提交这个证明的验证者将获得发现者的费用。 发生这种情况时,签署冲突区块的有罪验证者将在两条链上被淘汰。

现在,如果矿工进行暴力攻击,会发生什么? Casper 的最终区块链现在可以防止 PoW 攻击者以 51% 或更多的计算能力重写超过最新检查点的历史。 因此,Casper 协议提供了安全性。 与CTFG不同,因为CFFG是不同proposal机制的叠加,Casper不能保证liveness,因为liveness取决于proposal机制。

验证者被激励聚集在权威链上,因为如果他们继续在不同的链上投票,他们将受到惩罚。 slasher 2.0 的形成使得验证者不仅会因为双重投票而受到惩罚,还会因为在错误的链上投票而受到惩罚。 但是,这也造成了“气馁”的困境,因为验证者担心如果出现分裂,自己又不确定哪个是权威的,那么错误的选票就会减少,所以他选择退出投票。

比特币是什么算法_比特币挖矿采用的算法_比特币共识算法

CFFG 的显式属性

2CTFG

CTFG 是 Vlad Zamfir 的 Correctly Constructed (CBC) 共识协议,致力于在现实环境中对抗寡头垄断。 CTFG 是工作量证明中 GHOS 或 GHOST 协议的 PoS 改编版,其分叉选择规则。 CTFG 背后的指导设计原则基于加密经济学,使用旨在实现评估安全性的正式方法。 与上面详述的 CFFG 混合协议不同,CTFG 是一个纯粹的权益证明概念。

“Casper 最初是一个简单的‘友好幽灵’,是 GHOST 对 PoS 的改编,对卡特尔‘友好’成为‘非卡特尔’验证者的完善激励机制。”

-Vlad Zamfir,Casper 的历史第 5 章

与工作量证明类似,CTFG 在一致性和可用性方面做出了权衡。 特别是,当块未最终确定时,它们在链中越深越安全。 CTFG 有点类似于 CFFG,链头的处理总是比块的终结快得多。

Casper 的 PoS 提议机制与 Tendermint 的提议机制最大的不同在于,相比于伪随机选择领导者,前者的验证者可以根据他们看到的区块来提议区块。

Casper 提供的一个独特功能是可参数化的安全阈值。 类似于比特币中使用 6 次确认来确定一个经济最终状态,CTFG 中的“评估安全”提供了一个功能,即验证者可以具有不同于其他验证者的安全阈值。 Casper 的设计目标是允许验证者选择自己的容错阈值,同时在网络中保持 PoS 的低开销。

Casper 相对于 Tendermint 的核心优势在于网络可以随时容纳一定数量的验证者。 因为 Tendermint 中的块在创建时需要完成,所以块的确认时间应该更短。 为了实现较短的出块时间,需要限制 Tendermint PoS 可以容纳的验证者数量。 由于 CTFG 和 CFFG 在创建区块时不需要安全性,因此以太坊网络可以容纳比 Cosmos 可以容纳的 100 个验证者多一点的验证者。

CTFG 的显式属性

未来的工作

公链在产品上的运行是一个比较新的技术。 迄今为止,该范例中唯一被证明是不可破坏的安全模型是工作量证明。 PoS的设计空间还很大,对工程权衡的理解还远远不够,因为PoS是一个研究前沿,没有足够的数据。 不用说,要达到最优的 PoS 共识算法,我们还有很多未来的工作要做。

Tendermint 的改进可能是新的提案机制,或者将 Tendermint 的多轮投票过程压缩为单轮投票。

未来工作的第二个领域可能是使用更先进的密码学来使区块头签名更小一些。 因为我们正在通过 Cosmos 构建“区块链互联网”,所以将轻客户端证明从一条链转移到另一条链是我们工作的核心。 从这个角度来看,使用更先进的密码学将块头的大小减少 30 倍或更多是非常有益的。 目前,在 100 个验证人的情况下,Tendermint 的区块头接近 4KB,而且都是由验证人签名的。 我们可以使用高级加密技术将 100 个签名从 3.2KB 减少到 64 字节。

还有一些方法可以优化 p2p 层,这样我们就可以显着减少需要敲定区块的点对点流量。 在以后的工作中,不仅要压缩区块头中的数据量,还要减少发送给对等体的数据量。 通过这种方式,Tendermint 还可以在 Cosmos 网络的初始阈值 100 个验证器之上添加更大的验证器集。