区块链时代的拜占庭容错:Tendermint(一)

当前位置:首页 > 币圈百科 > 区块链时代的拜占庭容错:Tendermint(一)

区块链时代的拜占庭容错:Tendermint(一)

2022-11-15币圈百科255

Tendermint是一个分布式系统状态复制引擎,用于在多台机器上安全一致地复制应用程序。所谓安全,就是即使多达1/3的机器出现任何故障,Tendermint依然可以正常工作。一致性意味着每台正常的机器都有相同的事务日志,并计算相同的状态。一致性复制是分布式系统中的一个基本原则,它在广泛的应用程序(从货币到选举到基础设施规划等)的容错能力中起着极其重要的作用。).Tendermint的设计简单易用,易于理解,性能优异,适合广泛的分布式应用。

Text

分布式共识系统已经成为现代互联网基础设施中的一个关键组件,它正在帮助每一个主要的互联网应用。本章介绍了理解和讨论这些系统所必需的背景材料。

复制状态机

用于研究和实现分布式共识的最常见的范式是复制状态机范式,在这种范式中,某个状态机在几个进程之间复制,这样无论某些进程是否失败,这些进程看起来都像一个单一的状态机。状态机由一些列输入驱动,这些列输入称为事务。每个事务都可能导致状态转换,并根据其是否有效返回结果。更正式地说,事务是对数据库的原子操作,这意味着它要么完成,要么根本不发生,并且不能返回到中间状态。状态转换逻辑由状态机的状态转换功能决定,它将事务和当前状态映射到新状态和返回值。状态转换功能有时被称为应用逻辑。共识协议负责对事务进行排序,并将相应的事务日志复制到每个进程。使用确定性状态转移函数意味着给定相同的事务日志,每个进程将计算出相同的结果。

复制如图所示的状态机架构。

如图所示:一个复制状态机在多台机器之间复制一个事务日志和结果状态。从事务客户端接受,运行共识协议,在事务日志中排序,最后执行它以获得最新状态。在图中,每个菱形代表一台机器,其中虚线代表机器之间的通信用于执行订购交易的一致协议。Tendermint的目标是创建一个通用的、高性能的、安全的和健壮的复制状态机。

异步

容错复制状态机的目的是在为上层提供服务时协调网络中计算机的同步,而不管是否有失效节点。保持同步意味着成功复制事务日志;提供有用的服务意味着在处理新事务时保持状态机的可用性。传统系统的这些方面分别称为安全性和活性。通俗地说,安全就是不发生任何不好的事情;意味着可用性好的东西终于发生了。违反安全性意味着存在两个或更多有效且竞争的事务日志。违反活跃度意味着网络无响应。通过接受所有交易,可以很容易地满足可用性。不接受任何交易就可以轻松满足安全性。因此,状态机复制算法可以看作是两者之间的一种平衡。通常,在提交新事务之前,流程需要为来自其他流程的信息设置一个阈值。 在同步环境中,我们假设网络消息的最大延迟或处理器时钟的最大速度,通过轮流坐庄的方式提出新的事务,并进行大多数投票。如果提议者在同步假设的区间内没有提出任何提议,则跳过提议者这一轮。在异步环境中,如果没有网络延迟或处理器速度的假设,权衡将变得更加困难。事实上,所谓的FLP不可能性结果证明了某些异步进程之间的分布式一致性的不可能性(单个进程可能会崩溃)。这种证明意味着存在协议的有效实现,因为过程可能失败,但过程只是在某个时间崩溃,从而阻止了达成共识。因此,我们无法保证达成共识。通常,协议中的同步是通过管理某些事务中使用的超时来实现的。在异步环境中,消息可以任意延迟,依靠同步来确保安全性可能会导致事务日志分叉。依靠同步来保证系统的可用性,会造成共识性断电,服务无法响应。前者通常被认为更严重,因为协调冲突日志可能是一项艰巨或不可能的任务。实际上,只有当消息延迟可以很好地定义和控制时,才会使用同步解决方案,例如在飞机上的控制器之间或使用同步原子钟的数据中心之间。因此,尽管有许多有效的同步解决方案,但计算机网络的总体不可靠性太大,如果不显著增加额外成本,就无法投入实际使用。基本上有两种方法可以克服FLP的不可能性。第一种是采用更强的同步假设——即使是相当弱的假设也足够了,比如最终崩溃的唯一进程被怀疑崩溃,正确的进程不受影响。这种方法一般利用领导者,领导者起着特殊的协作作用,考虑到超时和失败后可以跳过。事实上,这样的领导选拔机制很难成功运作。克服FLP的第二个方法是使用不确定性——包括随机化元素,这样达成共识的概率接近1。虽然第二种方法更智能,并且近年来一些高级加密技术在速度上有所提高,但是依赖于随机化的方法通常较慢。

广播和共识

为了让一个进程将其状态复制到其他进程,它必须拥有基本通信原语的权限,以允许它传播或传输信息。最有用的原语之一是可靠广播。广播(RBC)是一种满足以下特征的广播原语。对于消息M,有:有效性)-如果一个正确的进程广播M,则最终成功传达M协议)-如果一个正确的进程成功传达M,则所有进程最终传达M完整性)-m只传递一次,由发送方以广播的形式发出。本质上,除此之外,更有用的原语是原子广播(ABC),它满足可靠广播(RBC)和另一个属性:全序)——如果正确的进程P和Q分别传递M和M’,P在M’之前传递M,那么Q在M’之前传递M。原子广播是一种可靠的广播,其中的值是相同的。请注意,这实际上复制了事务日志。 一般来说,这个问题可以称为共识,共识原语的标准定义满足以下条件:终结性——每个正确的进程最终可以做出一个决策完整性——每个正确的进程最多只能做出一次决策一致性——如果一个进程做出v1的决策,另一个进程做出v2的决策,那么v1=v2有效——如果一个正确的进程做出v的决策,至少有一个进程提出v直观上,共识和原子广播看起来很像。主要区别在于,原子广播本身作为协议是蓑衣网小编2022连续的,但共识预计会终止。也就是说,每一个都可以还原为另一个。通过确定第一个原子广播的值,可以将共识简化为原子广播。原子广播可以通过依次运行许多共识协议的实例来简化为共识。然而,有一些微妙的考虑,特别是在处理拜占庭失败时。将参数空间中原子传播的完整描述归结为共识仍然是一个开放的研究课题。从历史上看,虽然大多数用例实际上都需要原子广播,但使用最广泛的算法是被称为Paxos的共识算法,该算法由Leslie Lamport在20世纪90年代提出并被证明是正确的。Paxos同时赋予并混淆了共识科学。一方面,它提供了第一个真实世界的、实用的、容错的一致性算法;另一方面,很难理解和解释。算法的具体实现利用其特殊技术从Paxos建立原子广播,使得这种生态难以操纵、理解和利用。不幸的是,几乎没有任何工作可以让人们更容易理解如何改进框架,尽管有人试图描述解决方案中的各种困难。2013年,Ongaro和Ousterhout发表了Raft,这是一种状态机复制算法,其主要设计动机是可理解性。从一个共识算法开始,并试图建立原子广播,Raft的设计首先考虑事务日志,寻求正交分量,这些分量组合在一起提供最终的原子广播,尽管没有以这种方式描述。Paxos是工业领域的主要共识算法,如亚马逊、谷歌等公司在工业领域拓展了高可用的全球互联网服务。Paxos consensus位于应用程序堆栈的底部,为资源管理和分配提供一致的界面。与其他面向用户的高可用性应用相比,Paxos consensus运行的时间尺度较慢。Raft自问世以来就被广泛采用,尤其是在开源社区。它有许多主流语言的实现,是大多数项目的支柱。Raft和Paxos在设计上的主要区别是首先关注事务日志,而不是单个值。特别是,它允许领导者持续提交事务,直到他离任,此时领导层选举生效。在某种程度上,这类似于区块链采用的方法,尽管它的主要优点是可以容忍不同类型的故障。

拜占庭容错

区块链被称为“信任机器”,因为它蓑衣网小编2022通过在共享数据库上分散责任来降低交易对手风险。比特币以其抵御任何攻击和恶意行为的能力而闻名。传统上,容忍恶意行为的共识协议被称为拜占庭容错。使用了“拜占庭”一词,这个词来源于拜占庭将军面临的类似问题。这些将军试图互相协调进攻罗马,使用唯一的信使,其中一个可能是叛徒。在崩溃时,进程可能会停止。在拜占庭故障中,故障节点可以做任何事情。崩溃更容易处理,因为没有进程会欺骗其他进程。一个只有崩溃的系统可以用简单多数法则来操作,所以通常可以同时容忍将近一半的系统故障。如果系统可以容忍的故障数是F,那么系统至少要有2f 1个进程。拜占庭断层更复杂。在一个有2f 1进程的系统中,如果F是拜占庭的,这些拜占庭节点可以合作对另一个f 1进程说任何话。 比如我们试图达成一个单比特的共识,f=1,那么我们有N=3个进程,A,B,C,其中C是拜占庭,如图2.2所示。c可以告诉A这个值是0,告诉B这个值是1。如果A同意是0,B同意是1,那么他们都会认为自己获得了多数并提交,从而违反了安全条件。所以拜占庭系统的容错能力比非拜占庭系统小。

如上图,一个拜占庭式的过程C告诉了A一件事,B又告诉了B另一件事,导致他们对网络得出了不同的结论。给你。简单多数投票导致了安全违规,这源于一个单一的拜占庭过程。实际上可以证明拜占庭断层的上限是f。通过推算得到的,因此很难正式验证。过程演算是一种为并发计算提供了有条理的基础原理的模型系列。最通常的演算方法,Communicating Sequential Processes(CSP)构成了许多现代编程语言的理论基础。比如Go语言,在设计中包含了并发原语。我们可以使用一个正式的逻辑来表达一个过程可能满足的属性。举例来说,模态Hennessy–Milner逻辑可以表示,在某些或所有形式的动作发生后,一个进程将满足其他一些逻辑表达式。通过将更复杂的运算方法添加到逻辑中,可以建立正式的系统,可以很容易地描述分布式系统的重要属性,比如安全性、可用性和本地化等。通过π-calculus编写的系统可以被正式验证,以满足使用模型检查软件的相关属性。当我们使用π-calculus来详细说明Tendermint算法时,我们会使用相关的正式逻辑,以及相应的属性验证,以备将来的工作。

?Tendermint的需求

比特币及其衍生物的成功,特别是以太坊和他们的关于安全,自治,分布式,对任意代码的容错执行的前景引起了事实上每一个主要的金融机构的兴趣。特别地,出现了对两种种区块链技术:一方面是公链,被亲切地称为Big Dad公链(Big Bad Public Blockchains),其协议被内建经济激励通过原生货币(native currency)的方式所支配。另一方面是所谓的私有链,更准确的被称为“联盟链”( consortia blockchains),通过哈希树的使用,数字签名,p2p网络和加强的问责制,其对传统共识和拜占庭算法有一定的提高。就像现代社会的基础设施持续的去中心化或者正如商业的跨组织本质,对透明,问责和高性能的拜占庭系统的需求越来越多,这个系统支持的应用程序从财政到域名注册到电子投票和与治理的高级机制协作和未来的演进。Tendermint这个解决方案对联盟或者跨组织逻辑进行了优化,但是足够灵活来容纳任何人,从私有企业到全球货币,并且性能足够高来与主要的,非拜占庭容错的,共识解决方案竞争例如 etcd, consul, and zookeeper,于此同时提供了更强的恢复性,安全保证,对应用开发者的灵活性。

本文节选自:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》原文作者:Ethan Buchman译者:饶云坤校对:傅晓波

区块链时代的拜占庭容错:Tendermint(一) | 分享给朋友: