共识算法比较Tendermint的BFT与EOS的dPoS

这项技术深入研究由Chjango Unchained编写。本文比较了不同的共识系统,它们为EOS和Tendermint提供了关于每种基础技术以及它们有什么样的独特地类似证明(PoS)能力。

在由单个组织运行的传统分布式系统中,信任和安全由防火墙,信息安全团队和硬件安全来提供,以确保恶意行为者不会破坏分布式数据库的一致性。

区块链系统需要一种不同的架构,其中信任机制在许多组织之间分配,但我们必须容忍系统中的对抗角色。区块链系统的设计是安全模型,博弈论,计算机科学和机构声誉之间的权衡。

比特币的Nakamoto共识放弃了传统的分布式系统对传统拜占庭容错(BFT)设计中终结性的保证,以换取开放式的准入安全模型。这需要成本。如果恶意行为者可以控制50.1%的hashpower,系统根本不提供任何保证。在25%时,游戏理论机制中由于自私的挖掘而开始不稳定,并且概率收敛变得不稳定。这些攻击中的每一个都从根本上改变了轻客户端证明所需的假设,这些假设使得区块链方法在互联网上能够扩散。

Cosmos和EOS是进一步权衡的研究。Cosmos依靠对正式拜占庭容错的严格保证,以建立对模棱两可的强有力的惩罚,并建立一系列保证,扩展到整个区块链的互联网。EOS在很大程度上依赖于机构声誉,以达到中本共识与计算机科学研究表明的可能共识之间的形式共识。让我们仔细来看看。

Tendermint

Tendermint开源项目诞生于2014年,旨在解决比特币的工作证明共识算法的速度,可扩展性和环境问题。通过使用和改进1988年在麻省理工学院开发的经过验证的BFT算法,Tendermint团队是第一个在概念上展示股权证明加密货币的公司,它解决了第一代股权证明加密货币所遭受的无关紧要问题。比如NXT和BitShares1.0。

Tendermint Core是一种拜占庭容错(BFT)共识引擎,可以抵御双重攻击,并且能够容忍网络中一组高达1/3的拜占庭角色。Tendermint应用程序区块链接口(ABCI)平台是一个适用于区块链应用程序开发人员的工具包。该工具包与任何编程语言兼容,允许对仅运行业务逻辑的去中心化应用程序进行更高级别的开发,而无需在共识层上进行更低级别的修补。Ethermint等平台建立在Tendermint ABCI平台之上。

另一个建立在Tendermint ABCI之上的项目是Cosmos Network,它被设计为“区块链互联网”。Cosmos设想了一个可互操作的多链网络,它提供了在独立区块链(称为区域)之间无信任地交换加密资产的方法,通过称为Cosmos Hub的主集线器链。为了使区块链开发人员尽可能轻松,Cosmos还附带了一个名为Cosmos-SDK的工具包,使开发人员可以使用即插即用模块轻松创建自定义区块链。

EOS

EOS将自身作为一种用于为消费者构建的企业分布式应用解决方案的操作系统。

与以太坊一样,EOS是一个支持智能合约的托管平台,适用于开源项目和面向消费者的去中心化应用程序。与以太坊相比,EOS承诺通过权衡分权来实现更好,更具可扩展性的系统。其共识系统称为Delegated-of-Stake,或dPoS,是一个联盟区块链,由一组称为排名代表的主节点验证。与作为分布式全球超级计算机的以太坊虚拟机不同,EOS承诺构建“去中心化操作系统”。

主要特点一览

作为同步机制的区块链必须解决缺乏现时的通用问题。因此,Tendermint像所有容错系统一样,假定部分节点同步网络。这是与EOS的重要区别,EOS仅在完全同步的机器中具有容错性。EOS和Tendermint都运行在委托证明的个人变体上。但是,每个协议都以非常不同的方式定义委托“delegate”。

EOS dPoS(democracy-as-proof-of-stake 委托股权证明)

EOS将“delegators委托人”定义为区块链民主选举的区块验证者;该术语与“block validators块验证器”可互换使用。有一小组21个“delegates”充当网络中的主节点。代表的“job”是在扩展链条之外签署和验证交易。这些代表被EOS代币的利益相关者投票选为“office”。Daniel Larimer选择在EOS中任命21名代表的原因是因为任何更多都不利于利益相关者的关注,从而导致选民做出糟糕的决定。

“你需要2/3多数才能拥有真实性的制度。最初BitShares从100开始。对这100人的监督不够,因为没有足够的选民注意力来决定。将其降低到21可以降低系统成本。网络必须向每个运行完整节点的人付费。“ - Daniel Larimer

Vitalik Buterin将EOS描述为一个联盟链,它删除了“Merkle证据和任何其他保护措施,允许普通用户审计系统执行的任何部分,除非他们想亲自运行一个完整的节点。”这是不切实际的,因为依靠用户来运行完整节点以便能够审计拜占庭(或简称疏忽)委托人而没有像Merkle证明这样的内置客户端验证机制使协调问题难以解决。

没有所述内置机制,就必须严重依赖额外协议手段,甚至成为共识问题。EOS dPoS依赖于其利益相关者外在地准确评估委托人的表现,以(有希望)做出关于雇用和解雇其代表的合理决定(毕竟这是一个民主)。此外,像Cosmos中的重要协议更改是通过治理实现的。

EOS使用代币投票实现权力发放,利益相关者拥有的EOS代币越多,其投票权就越大。EOS代币还可以用作staking vehicles,代替企业和企业运行其去中心化应用程序(dApps)的交易费用。这种替代费用结构在可用性方面存在其他问题,但背景超出了本文的范围。

最后不可逆块(LIB)

根据Daniel Larimer在他的Steemit上的说法,LIB“是一个已被2/3或更多当选区块生产者确认的区块。没有节点会自动切换到不在LIB之上的fork。“

在理论上可能会使用此LIB细节来破坏网络中止的活跃性的边缘情况。

Cosmos共识

Cosmos还使用“delegated委托”的Proof-of-Stake共识机制。但是,术语“delegated”在Cosmos的上下文中使用的方式不同。与EOS不同,“validator”负责验证交易并将新块提交给区块链。验证者通过广播加密签名参与共识协议,加密签名充当投票以扩展区块链。“delegator”是指某人想要委托某些代币(例如Cosmos Hub的ATOM),以便为他们选择的验证人提供投票权,以便他们可以获得一部分阻止奖励。

要成为验证者并拥有一定数量的投票权,你必须锁定预定数量的令牌。这可以是自筹资金,也可以通过让他们“delegate”你的股权从其他赌注代币持有人那里获得投票权。代表们正在使用他们选择的验证器将他们的投注代币(ATOM)置于危险境地。它们可能会丢失这些令牌,具体取决于验证器是否符合协议规定。

在块验证间隔(称为循环)期间,验证器集被定义为签署同意提交下一个块的事务的验证器集。此验证器集是动态的,随着验证器加入或退出共识过程而更改。至少需要4个验证器,但运行Tendermint的共识协议可以具有的验证器数量没有上限。 Cosmos Hub将有100个,但随着时间的推移,这将根据预定的时间表自动增加到300个验证器。此参数也可以通过治理进行更改。

即时区块终结

每个区块链都是最终的。根据验证器的数量,Tendermint中的块结束可在1秒内完成。通常,块结束时间约为3秒。

没有任何股权关系的问题

在股权证明共识系统中,没有任何利害关系的问题是可怕的,因为留下未解决的问题允许拜占庭行为者在网络内偷窃,不收取任何费用,惩罚或后果。

Tendermint的保税交易

Tendermint通过使用称为“bond deposits债券存款”的基于证券存款的抵押品解决了无关紧要的问题。为了解锁这些债券存款,用户必须首先解锁它们,允许它们在一段时间内“thaw解冻”,预计在两到三个月之间,在所谓的无约束时期。

这使得所有轻型客户端(移动电话和未与区块链以恒定速率同步的用户)可以了解验证器集将如何变化。如果没有这种无约束的时期,他们很容易受到区块链似乎已经从之前的验证器集中做出某些事情的攻击,但实际上验证器集已经很久了,他们已经卖掉了他们的代币。

EOS中的抵押

在EOS中,协议不存在此类财务惩罚。相反,作为“collateral抵押”,排名代表将在他们被判犯有不法行为的情况下失去声誉;拜占庭角色所面临的经济激励几乎没有。DPoS假设丧失排名代表“job”的机会成本加上竞选(获得选举)的沉没成本的组合大于执行双重支出攻击所获得的资金。令人瞩目的是,缺乏明确定义的协议内惩罚使得EOS网络容易受到攻击,因为暂时是无关紧要的问题仍未得到解决。

分叉问责制

只有在给定状态下设置的验证器中至少有1/3的验证器串通时,才能使用Proof-of-Stake协议中的分支。为了阻止恶意分叉的风险,必须采取一些协议内保护措施。

Tendermint

Tendermint中的Fork责任通过识别在链中引起恶意分叉的人来确认其验证者的责任。那些被判有罪的人被他们的债券存款被摧毁而被罚款。这相当于一个重要的支付惩罚,其中在给定状态期间网络中所有赌注硬币的1/3都是没收的。如果发生硬分叉,负责造成它的一方将被“slashed”。

从1/3恶意行为者的hardfork中恢复,额外的协议手段是必要的。利益相关者协调离线允许他们进行重组提议,使他们能够在大量验证人员同意少数不良行为者在一定高度上选择链条时分叉区块链。

EOS(TaPos)

EOS处理分叉有些不同。它利用了一种名为Transactions-as-Proof-of-Stake或TaPoS的概念。它要求每个交易都有一个最近的块头的相应hash。哈希做了两件事:它可以防止重放攻击,因为具有缺失哈希的fork上的交易假定fork是伪造的,并且它向网络发信号通知特定用户及其赌注代币在特定链上。

不幸的是,TaPoS只能解释远程攻击(这是EOS网络能够从中恢复的攻击)。然而,重要的是,它忽略了近期的块结束,这使得网络容易受到分区的影响,例如,并非所有交易都被看到。代表未见证的有效交易因此没有相应的哈希值会导致这些交易在这种近期情况下成为孤儿。

CAP定理

否则称为’Brewer定理’,CAP定理指出在分布式系统中同时满足3个以上保证中的2个不可能性:一致性,可用性和分区容差。

面对DDoS,Tendermint会停止运行。EOS保持运行,但分叉和分叉,使得状态不一致,攻击者可利用这些状态。Tendermint优先考虑可用性的一致性;在EOS中,情况恰恰相反。

结束

由于需要拜占庭式容错来维持开放,无权限和去中心化的系统,因此保证网络具有审查能力至关重要。我们希望分散协议及其各自的区块链足够安全,以至于状态代理无法操纵数据,即使它们能够暂时对其进行DDoS操作。如果本地代理(或一般的恶意行为者)决定禁止访问这些开放系统,我们需要可靠的安全性,而不是手动波浪式技术。

没有人攻击现场网络的说法远不是说它是防黑客的。这就是为什么当声称网络安全时,强调使用数学证明来验证网络是否安全的原因。鉴于流入每个顶级市场上限加密货币的资金数量,专门的攻击者肯定会嗅出并利用边缘情况下的漏洞。鉴于此,即使dPoS(Democracy-as-of-Stof-of-Stake)中的0.0001%边缘情况也意味着它不是防黑客的。

我们通过分布式系统安全分析工具Jepsen.io审核了Tendermint Core,结果客观地验证了Tendermint BFT没有违反其声明的保证:https://jepsen.io/analyses/tendermint-0-10-2

最后,随着研究人员构建协议向上和向前移动到Web3.0空间,我们承认当前的证明方法确实有一些弱点。

股权证明的陷阱:

  • 选民冷漠:对代币投票的依赖使其成为共识问题。从历史上看,采用人工投票机制进行治理的权力下放机构的参与率均低于10%。[见:DAO投票EIP186投票,2014年的Bitshares dPoS投票。]
  • 投票集中化的偏见:Buterin归因于公共偏见导致的博弈论的崩溃。“因为每个选民只有很小的机会影响结果,他们正确投票的动机比社会最优激励要低几千倍。这意味着像每个人都把钱币交给交易所和交易所代表用户投票的情况,用户并不真正关心交易所如何用他们的钱投票,这很可能会发生。“
  • 激励错位:代币持有者和网络用户是两类不同的人。代币持有者被激励推高代币价格,而且通常情况下,那些高价位的人可能会导致不稳定的价格增长,而不必为用户带来强大的系统效用。

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。

汇智网原创翻译,转载请标明出处。这里是原文共识算法比较Tendermint的BFT与EOS的dPoS