区块链技术软件开发实践:分布式系统一致性共识原理FLP、Paxos拜占庭Raft算法

合集下载

兄弟连区块链技术培训区块链共识算法(4)分布式一致性算法Pa

兄弟连区块链技术培训区块链共识算法(4)分布式一致性算法Pa

兄弟连区块链技术培训区块链共识算法(4)分布式一致性算法Paxos# 分布式一致性算法PaxosPaxos是一种基于消息传递的分布式一致性算法,由Leslie Lamport(莱斯利·兰伯特)于1990提出。

是目前公认的解决分布式一致性问题的最有效算法之一。

### 要解决的问题及应用场景Paxos算法要解决的问题,可以理解为:一个异步通信的分布式系统中,如何就某一个值(决议)达成一致。

而此处异步通信是指,消息在网络传输过程中存在丢失、超时、乱序现象。

其典型应用场景为:在一个分布式系统中,如果各节点初始状态一致,而且每个节点执行相同的命令序列,那么最后就可以得到一个一致的状态。

为了保证每个节点执行相同的命令序列,即需要在每一条指令上执行一致性算法(如Paxo s算法),来保证每个节点指令一致。

### 概念定义Proposal:为了就某一个值达成一致而发起的提案,包括提案编号和提案的值。

涉及角色如下:* Proposer:提案发起者,为了就某一个值达成一致,Proposer可以以任意速度、发起任意数量的提案,可以停止或重启。

* Acceptor:提案批准者,负责处理接收到的提案,响应、作出承诺、或批准提案。

* Learner:提案学习者,可以从Acceptor处获取已被批准的提案。

### 约定Paxos需要遵循如下约定:* 1、一个Acceptor必须批准它收到的第一个提案。

* 2、如果编号为n的提案被批准了,那么所有编号大于n的提案,其值必须与编号为n的提案的值相同。

### 算法描述阶段一:准备阶段* 1、Proposer选择一个提案编号n,向Acceptor广播Prepare(n)请求。

* 2、Acceptor接收到Prepare(n)请求,如果编号n大于之前已经响应的所有Prepare请求的编号,那么将之前批准过的最大编号的提案反馈给Proposer,并承诺不再接收编号比n小的提案。

区块链中的一致性算法分析

区块链中的一致性算法分析

区块链中的一致性算法分析区块链技术已经成为近年来备受瞩目的新兴技术,而其中最为核心的一项技术就是所谓的“共识算法”。

共识算法作为保障区块链系统安全性和有效性的基础,对于整个区块链系统的稳定运行和发展至关重要。

本文将重点分析区块链中的一致性算法,探讨其原理、分类以及应用。

一、一致性算法原理区块链中的一致性算法是指在分布式系统中,通过相互通信和交互,使得各节点对系统状态达成一致的过程。

即是多个节点在交互中达成一致的某个方案,使得各节点在加入和退出系统时都能够满足一定的安全性要求。

一致性算法除了满足安全性要求之外,还应当具备高效性、可靠性、可扩展性等要求。

二、一致性算法分类针对一致性算法,目前通常分为两大类:权威证明和工作证明。

其中权威证明又细分为拜占庭将军问题算法和特定制度的一致性算法,而工作证明又分为工作量证明算法和权益证明算法。

1. 拜占庭将军问题算法拜占庭将军问题算法是一种具有防攻击防欺诈、保持系统稳定运行的经典算法,通常运用在分布式系统中来防止欺诈行为的出现。

在拜占庭将军问题中,各节点必须达成一致的决策,防止敌对方的干扰。

这种算法主要是通过加密技术,在多个节点之间完成信息传递,然后根据各个节点收到的信息,达成共识决策。

2. 特定制度的一致性算法特定制度的一致性算法指的是只在特定情况下才可以启用的共识算法。

例如,区块链EOS的DPoS算法就是只在链上代币持有者的投票下达成共识的特定制度算法。

在这种算法中,EOS持有者可以通过投票方式,选举产生区块的节点,由此达成链上的共识。

3. 工作量证明算法工作量证明算法是最为常见的一种共识算法,它的核心原理是要求参与网络维护的节点必须完成某种复杂的工作任务,以此证明其拥有足够的计算能力和贡献价值。

以比特币等加密货币为例,它的共识算法就是采用了一种称为“Hashcash”的工作量证明算法。

4. 权益证明算法权益证明算法是一种无需完成特定工作任务,而是需要拥有足够的加密代币或其他数字资产的算法。

简述paxos 算法原理

简述paxos 算法原理

简述paxos 算法原理Paxos算法是一种用于分布式系统中的一致性算法。

在分布式系统中,多个进程需要协作完成某些任务,然而由于网络延迟、进程崩溃等问题,会导致进程之间出现不一致的情况。

Paxos算法就是为了解决这个问题而被提出的。

Paxos算法中有三种参与角色:Proposer、Acceptor和Learner。

Proposer是发起提案的角色,Acceptor是接受提案的角色,Learner是学习提案的角色。

在算法中,Proposer通过向Acceptor提出提案来达成一致性,Acceptor接受提案或者拒绝提案,Learner则通过接收Acceptor的提案来学习提案。

Paxos算法的流程如下:1. Proposer向Acceptor提出提案。

2. Acceptor判断是否接受提案,如果Acceptor已经接受了其他提案,则拒绝该提案,否则接受该提案,并向所有Learner发送该提案。

3. Learner接收到提案后,判断是否已经接收到过该提案,如果没有,则接受该提案。

4. 如果有Learner接受了该提案,则Acceptor会将该提案标记为已经接受,否则Acceptor会将该提案标记为未接受。

5. 如果有超过半数的Acceptor接受了该提案,则该提案被确定,否则重新执行第一步。

Paxos算法的正确性得到了证明,即只要有超过半数的Acceptor 接受了一个提案,那么该提案就会被确定,从而达成一致性。

Paxos算法的优点是在网络延迟和进程崩溃的情况下仍然能够保证分布式系统的一致性,缺点是算法较为复杂,实现难度较高。

在分布式系统中,一致性算法是非常重要的,Paxos算法是其中比较著名的一种。

随着分布式系统的广泛应用,Paxos算法的应用也越来越广泛,如Google的Chubby分布式锁服务就是基于Paxos 算法实现的。

paxos算法原理

paxos算法原理

paxos算法原理Paxos算法是目前分布式系统常用的一种协议,主要用于解决分布式系统中的一致性问题。

其基本原理是通过多轮投票的方式,确保系统中的每个节点都可以达成一致的结果。

Paxos算法主要分为三个阶段:提议(Proposal)、投票(Vote)和批准(Accept)。

下面我们将分别介绍每个阶段的具体过程。

1. 提议阶段:在提议阶段,节点必须先提出一个提议,该提议包含一个唯一标识符(Proposal ID)和提议的内容(Value)。

节点将提议发送给其他节点,并等待响应。

2. 投票阶段:在投票阶段,每个节点可以对提议进行投票。

如果节点A接收到提议,它首先会检查提议的ID是否大于该节点之前已经接受的最大提议ID。

如果是,则继续,否则,拒绝该提议。

如果该节点接受了该提议,则它将对该提议进行投票,并将投票发送给其他节点。

节点必须要等待收到大多数节点的投票后才能进入下一个阶段。

3. 批准阶段:在批准阶段,节点会检查是否已经收到了大多数节点的投票。

如果是,则该节点将对提案进行批准,否则,它将拒绝该提议。

如果一个节点批准了提议,那么它将会发送一个通知给其他节点,告诉它们该提议已经被批准了。

通过上述三个阶段,Paxos算法可以确保系统中的每个节点都可以达成一致的结果。

在实际应用中,由于网络延迟等原因,可能会出现网络分区的情况。

当网络分区发生时,Paxos算法会根据情况进行相应的处理,确保整个系统的一致性。

总之,Paxos算法是一种解决分布式系统中一致性问题的有效方法。

虽然其实现方式较为复杂,但它已经成为了现代分布式系统中的事实标准之一,值得我们深入学习和研究。

分布式系统原理介绍

分布式系统原理介绍

分布式系统原理介绍分布式系统是指由多个自治的计算机节点组成,通过网络相互协作完成任务的系统。

它通过将计算和数据分布到不同的节点上,以提高系统的整体性能、可靠性和可扩展性。

分布式系统的原理包括以下几个方面:1. 通信和消息传递:分布式系统通过网络进行节点间的通信和消息传递,例如采用TCP/IP协议栈进行数据传输。

通信过程中需要考虑消息的传输可靠性、顺序性和效率。

2. 一致性和共识:由于存在多个节点,分布式系统需要解决数据一致性和共识问题。

一致性指的是节点间数据的一致性,共识指的是节点间对某个决策达成一致。

常见的解决方案包括Paxos算法、Raft算法和拜占庭容错算法等。

3. 负载均衡:分布式系统中的节点负责处理特定的任务或请求,负载均衡的原理是将任务或请求均匀地分配给各个节点,以避免某个节点过载而导致性能下降。

常见的负载均衡算法有轮询、最小连接数和最少响应时间等。

4. 容错和故障恢复:分布式系统需要具备容错能力,即当出现节点故障时能够自动转移任务或请求到其他可用节点上,从而保证系统的可用性和可靠性。

容错的实现方式包括备份、冗余和自动故障检测与恢复等。

5. 数据一致性和事务处理:数据一致性是分布式系统中的一个重要问题,因为节点间的数据副本可能会存在不同的一致性级别。

分布式系统需要提供事务处理机制来确保数据在不同节点上的一致性,典型的有两阶段提交(2PC)和基于日志的复制等。

6. 可扩展性和弹性:分布式系统需要具备良好的可扩展性和弹性,即能够根据负载或数据量的增长,方便地添加或删除节点,以提高系统的性能和容量。

同时,系统需要自动适应节点的增减,并能够动态调整任务的分配策略。

总之,分布式系统原理涉及到通信和消息传递、一致性和共识、负载均衡、容错和故障恢复、数据一致性和事务处理、可扩展性和弹性等多个方面。

了解这些原理有助于我们设计和构建高效可靠的分布式系统。

PaxosRaft分布式一致性算法原理剖析及其在实战中的应用

PaxosRaft分布式一致性算法原理剖析及其在实战中的应用

PaxosRaft分布式一致性算法原理剖析及其在实战中的应用1. Paxos算法原理剖析:Paxos算法是由Lamport在1989年提出的分布式一致性算法,它解决了分布式系统中多个节点达成一致的问题。

Paxos算法分为三个阶段:提议(Proposal)、承诺(Promise)和接受(Accept)。

在提议阶段,一个节点向所有其他节点发出提议,其他节点可以接受或拒绝该提议。

在承诺阶段,节点会向提出提议的节点发送承诺,表示它会接受该提议。

在接受阶段,提出提议的节点收到足够的承诺后,可以向所有节点发送接受请求,其他节点收到请求后会接受该提议。

2. Paxos算法在实战中的应用:Paxos算法在实战中有广泛应用,主要用于解决分布式系统中多节点之间的一致性问题。

例如,ZooKeeper分布式协调服务就使用了Paxos算法来实现数据的一致性和可靠性。

Paxos算法还可以应用于数据库复制、分布式锁、分布式事务等场景中。

3. Raft算法原理剖析:Raft算法是由Diego Ongaro和John Ousterhout在2024年提出的一种分布式一致性算法,它简化了Paxos算法的理解和实现。

Raft算法将分布式系统中的节点划分为三个角色:领导者(Leader)、跟随者(Follower)和候选人(Candidate)。

Raft算法通过选举机制,保证一个唯一的领导者能够产生。

领导者负责处理客户端的请求,并将结果复制到其他节点,从而实现一致性。

4. Raft算法在实战中的应用:Raft算法在实战中也有广泛的应用。

例如,Elasticsearch使用Raft算法来实现分布式日志存储系统中的一致性复制。

Kubernetes容器编排系统也使用Raft算法来选举和管理集群中的控制节点。

Raft算法还可以应用于分布式存储系统、分布式计算系统等领域。

总结起来,PaxosRaft是两种常用的分布式一致性算法,它们在实战中都有广泛的应用。

paxos算法的原理

paxos算法的原理

paxos算法的原理Paxos算法:一致性协议的原理与实现Paxos算法是分布式系统中最为重要的一致性协议之一。

它被广泛应用于现代分布式数据库、分布式文件系统和分布式计算框架中。

Paxos算法的核心思想是通过多个节点之间的互相协作,达成一个共识决策。

本文将详细介绍Paxos算法的原理与实现。

一、Paxos算法的基本概念Paxos算法的基本概念包括三个角色:Proposer、Acceptor和Learner。

其中Proposer是提出提案的节点,Acceptor是接受或拒绝提案的节点,Learner是学习最终决策的节点。

在Paxos算法中,Proposer和Acceptor的数量都可以是任意的,但Learner的数量通常是固定的。

Paxos算法包含两个阶段:准备阶段和提交阶段。

在准备阶段中,Proposer向Acceptor发送一个提案,Acceptor接受提案并返回一个承诺,表示它会接受更高编号的提案。

如果Acceptor已经承诺接受了一个更高编号的提案,那么它会拒绝当前提案。

在提交阶段中,Proposer会根据Acceptor的承诺,发送一个最终提案,并且Acceptor会接受该提案,并将它广播给所有Learner。

二、Paxos算法的实现Paxos算法的实现涉及到很多细节问题,下面将详细介绍如何实现Paxos算法。

1.提案编号的生成在Paxos算法中,每个提案都需要一个唯一的编号。

为了保证编号的唯一性,通常采用以下方式生成编号:(1)每个Proposer维护一个自己的编号,编号的初始值为0;(2)每次Proposer提出一个提案时,都会将自己的编号加上一个固定值(例如100)作为提案编号;(3)如果一个Proposer的提案被Acceptor接受了,那么它会更新自己的编号为当前提案编号加上固定值。

2. Acceptor的状态维护Acceptor需要维护以下状态:(1)最高提案编号:表示Acceptor当前接受的最高提案编号。

分布式系统中的分布式共识算法

分布式系统中的分布式共识算法

分布式系统中的分布式共识算法分布式系统是由多个节点组成的计算机系统,这些节点分布在不同的地理位置并通过网络进行通信。

在分布式系统中,节点之间的一致性是非常重要的,因为节点需要达成共识以实现一致的状态。

为了实现分布式系统中的共识,分布式共识算法被广泛应用。

这些算法旨在确保节点能够就某个值或决策达成一致,即使在存在节点故障或网络不可靠的情况下也能保持一致。

以下将介绍几种常见的分布式共识算法。

一、拜占庭容错算法拜占庭容错算法是一种能够应对拜占庭将军问题的分布式共识算法。

拜占庭将军问题是指在分布式系统中,存在恶意节点发送错误信息以干扰共识过程的情况。

拜占庭容错算法通过使用密钥、签名和消息验证等技术来解决这个问题,确保节点能够正确达成共识。

二、Paxos算法Paxos算法是一种常用的分布式共识算法,它通过多次消息交换和轮次投票的方式来实现共识。

在Paxos算法中,节点分为提议者和接受者两种角色,提议者提出一个值,并通过多次投票逐渐达成共识。

Paxos算法能够容忍节点故障和消息丢失等问题,具有很强的容错性。

三、Raft算法Raft算法是一种相对简单易懂的分布式共识算法,它通过选举、复制日志和安全提交等阶段来实现共识。

与Paxos算法相比,Raft算法的设计更加模块化,容易理解和实现。

它将节点分为领导者、跟随者和候选人三种角色,通过选举机制确保系统中只有一个领导者,并且保证领导者的日志会被正确复制和提交。

四、Bitcoin共识算法Bitcoin共识算法也被称为工作量证明(Proof of Work,PoW)算法,它是比特币网络中使用的一种分布式共识算法。

在Bitcoin共识算法中,节点通过解决数学难题来进行工作量证明,从而获得产生区块的权利。

其他节点可以通过验证这些区块的有效性来达成共识。

PoW算法被广泛应用于许多区块链系统中。

以上介绍了几种常见的分布式共识算法,它们在不同的场景和应用中有着不同的适用性和性能。

兄弟连区块链培训教程Go语言区块链共识算法(1)分布式一致性算法Raft

兄弟连区块链培训教程Go语言区块链共识算法(1)分布式一致性算法Raft

兄弟连Go语言区块链培训教程区块链共识算法(1)分布式一致性算法Raft很多人喜欢Go语言,其实是因为Go语言有其独特的语言属性在支撑着其在编程语言界的发展,今天兄弟连Go语言+区块链培训老师给大家介绍一下关于Go语言区块链共识算法(1)分布式一致性算法Raft,下面我们一起来看一下吧。

# 分布式一致性算法RaftPaxos自1990年提出以后,相当长时间内几乎已成为分布式一致性算法的代名词。

但因其难以理解和实现,目前知名实现仅有Chubby、Zookeeper、libpaxos几种,其中Zookeeper使用的ZAB对Paxos做了大量改进。

为此,2013年斯坦福的Diego Ongaro、John Ousterhout,提出了新的更易理解和实现的一致性算法,即Raft。

Raft和Paxos均只要保证n/2+1节点正常,即可服务。

相比Paxos,其优势即为易于理解和实现。

Raf将算法分解为:选择领导者、日志复制、安全性等几个子问题。

它的流程即为:开始时在集群中选举出Leader负责日志复制的管理,Leader接收来自客户端的事务请求(日志),并将它们复制给集群中的其他节点,然后通知集群中的其他节点提交日志,Leader负责保证其他节点与它的日志同步。

当Leader宕机时,集群其他节点重新发起选举,选出的新的Leader。

### 角色Raft涉及三种角色:* Leader:即领导者,负责处理来自客户端的请求,管理日志复制、以及与Follower保持心跳以维持其领导者地位。

* Follower:即追随者,负责响应来自Leader的日志复制请求,响应来自Candidate的选举请求。

初始时所有节点均为Follower。

* Candidate:即候选者,负责发起选举投票,Raft启动后或Leader宕机后,一个节点从Follower转为Candidate,并发起选举,选举成功后,由Candidate转为Leader。

分布式一致性系统算法

分布式一致性系统算法

分布式一致性系统算法1. Paxos算法Paxos算法是分布式一致性领域的经典算法,它由Leslie Lamport 在1998年提出。

Paxos算法通过一个Leader选举过程和协商过程来实现一致性。

在Paxos算法中,节点通过协商达成一致的过程中,最终会选出一个Leader节点来决定最终的结果。

Paxos算法的基本过程如下:-提议阶段:节点将自己的提议发送给其他所有节点,并等待大多数节点的回复。

-接受阶段:节点收到足够多的回复后,将自己的提议转换为接受状态,并将接受状态广播给所有节点。

-学习阶段:当大多数节点都接受了一些提议后,该提议就变为了决定。

Paxos算法的优点是能够容忍节点的故障和网络延迟,但是它的实现较为复杂,对于初学者来说比较难以理解。

2. Raft算法Raft算法是一个相对简单易懂的分布式一致性算法,由Diego Ongaro和John Ousterhout在2024年提出。

Raft算法将一致性问题抽象为Leader选举和日志复制两个子问题,并通过这两个子问题实现分布式一致性。

Raft算法的基本过程如下:- Leader选举:节点通过互相发送心跳消息来选举出一个Leader,Leader负责处理所有的客户端请求。

- 日志复制:Leader将自己的日志更新广播给其他节点,并等待大多数的节点回复确认。

一旦大多数节点接受了该日志项,Leader将该日志项应用到自己的状态机,并将结果发送给其他节点。

Raft算法的优点是易于理解和实现,并且在Leader故障和网络分裂的情况下能够保证一致性。

但是相对于Paxos算法而言,Raft的性能稍逊一筹。

3.拜占庭容错算法拜占庭容错算法是一种面向分布式系统中存在恶意节点的容错算法,它能够使分布式系统在存在多个恶意节点的情况下依然能够保持一致性。

拜占庭容错算法由Miguel Castro和Barbara Liskov在1999年提出。

拜占庭容错算法的基本思想是,通过让各个节点相互之间进行多次通信、相互验证和重复执行,来确保最终的决策具有一致性。

区块链分布式系统面临一致性问题及共识算法的理论知识解析

区块链分布式系统面临一致性问题及共识算法的理论知识解析

区块链分布式系统面临一致性问题及共识算法的理论知识解析共识机制已经成为了目前区块链系统性能提升的关键瓶颈。

单一的共识算法均存在各种问题,如PoW算法存在消耗大量计算资源及性能低下的问题,PoS或DPoS存在“富豪统治”问题,融合多种共识算法优势的想法正受到越来越广泛的关注。

分布式系统面临的挑战区块链是一个分布式系统,分布式系统碰到的第一个问题就是一致性问题。

在分布式系统中,一致性是指:对于系统中的多个服务节点,给定一系列操作,在协议(往往通过某种共识算法)保障下,试图使得他们对处理结果达成某种程度的一致。

如果一个分布式系统无法保证处理结果一致的话,那任何建立于其上的业务系统都无法正常工作。

分布式系统面临的主要挑战包括:
1)资源受限:节点间的通信需要通过网络,而网络存在带宽限制和时延,节点也无法做到瞬间响应和高吞吐。

2)故障的独立性:系统的任何一个模块都可能发生故障,如节点之间的网络通讯是不可靠的,随时可能发生网络故障或任意延迟;节点的处理可能是错误的,甚至节点自身随时可能宕机。

3)不透明性:分布式系统中任何组件所在的位置、性能、状态、是否故障等情况对于其它组件来说都是不可见的、也无法预知的。

4)并发:分布式系统的目的,是为了更好的共享资源。

同步调用会让系统阻塞,因此节点间通信通常设计成异步的。

5)缺乏全局时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。

紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个一致的全局时间的概念。

这是通过网络发送消息作为唯一的通信方式这一事实带来的直接结果。

区块链共识算法总结(PBFT,Raft,PoW,PoS,DPoS,Ripple)

区块链共识算法总结(PBFT,Raft,PoW,PoS,DPoS,Ripple)

区块链共识算法总结(PBFT,Raft,PoW,PoS,DPoS,Ripple)⽬录正⽂ 近⼏天对区块链中⼏种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进⾏了总结。

尽量使⽤简单易懂语⾔,篇幅较⼤,想了解的可以只读每个算法介绍中前边的原理。

本篇⽂章主要参考《区块链技术指南》,⾸先表⽰感谢! ---Begin--- 区块链架构是⼀种分布式的架构。

其部署模式有公共链、联盟链、私有链三种,对应的是去中⼼化分布式系统、部分去中⼼化分布式系统和弱中⼼分布式系统。

在分布式系统中,多个主机通过异步通信⽅式组成⽹络集群。

在这样的⼀个异步系统中,需要主机之间进⾏状态复制,以保证每个主机达成⼀致的状态共识。

然⽽,异步系统中,可能出现⽆法通信的故障主机,⽽主机的性能可能下降,⽹络可能拥塞,这些可能导致错误信息在系统内传播。

因此需要在默认不可靠的异步⽹络中定义容错协议,以确保各主机达成安全可靠的状态共识。

所谓共识,简单理解就是指⼤家都达成⼀致的意思。

其实在现实⽣活中,有很多需要达成共识的场景,⽐如开会讨论,双⽅或多⽅签订⼀份合作协议等。

⽽在区块链系统中,每个节点必须要做的事情就是让⾃⼰的账本跟其他节点的账本保持⼀致。

如果是在传统的软件结构中,这⼏乎就不是问题,因为有⼀个中⼼服务器存在,也就是所谓的主库,其他的从库向主库看齐就⾏了。

在实际⽣活中,很多事情⼈们也都是按照这种思路来的,⽐如企业⽼板发布⼀个通知,员⼯照着做。

但是区块链是⼀个分布式的对等⽹络结构,在这个结构中没有哪个节点是“⽼⼤”,⼀切都要商量着来。

所以在区块链系统中,如何让每个节点通过⼀个规则将各⾃的数据保持⼀致是⼀个很核⼼的问题,这个问题的解决⽅案就是制定⼀套共识算法,实现不同账本节点上的账本数据的⼀致性和正确性。

这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定⽹络中选择记账节点的机制,以及如何保障账本数据在全⽹中形成正确、⼀致的共识。

区块链的工作原理讲解

区块链的工作原理讲解

区块链的工作原理讲解
区块链的工作原理主要涉及到以下几个方面:
1. 分布式网络:区块链是由多个参与节点组成的去中心化网络。

每个节点都保存了完整的区块链副本,并且通过网络进行通信和交互。

这个分布式网络保证了区块链的去中心化特性和数据的高度可靠性。

2. 共识机制:区块链利用共识机制来解决节点之间的信任问题,确保所有节点对于区块链上的交易和数据的一致性。

常见的共识机制包括工作量证明(PoW)、权益证明(PoS)、拜占庭
容错等。

通过共识机制,区块链网络可以达成对交易和数据的共同认可,并将其添加到区块链中。

3. 区块链结构和区块:区块链由一个个区块组成,每个区块包含了一批交易记录和一些元数据,比如时间戳和前一区块的哈希值。

区块链上的每个区块都通过哈希算法与前一区块链接在一起,形成一个不可篡改的链式结构。

4. 验证和加密:为了确保区块链上的交易和数据的真实性和完整性,区块链使用了加密算法对其进行加密和签名。

每个区块中的交易都被验证,并通过数字签名来确保其不可修改和来自有效的参与者。

5. 去中心化应用:区块链不仅仅是一个存储和传输数据的技术,还可以支持去中心化应用的开发和运行。

通过智能合约等技术,开发者可以在区块链上构建各种应用,如数字货币、供应链管
理、投票系统等。

这些去中心化应用可以在区块链上实现可信任和可验证的交互,提高安全性和透明度。

总而言之,区块链的工作原理是基于分布式网络、共识机制、加密和验证等技术,通过链式结构和去中心化应用来实现交易和数据的可信任和可提供性,进而打破传统中心化的信任机制,为各个行业带来创新和变革。

区块链的运行原理有哪些

区块链的运行原理有哪些

区块链的运行原理有哪些区块链的运行原理主要包括去中心化、分布式共识和密码学。

1. 去中心化区块链是一种去中心化的系统,没有中央权威机构来管理和控制数据。

相反,数据保存在网络中的每个节点上,每个节点都有权参与数据的管理和验证。

这种去中心化的特性使得区块链拥有更高的透明性和可信度。

2. 分布式共识为了确保区块链网络中的数据一致性,区块链采用了分布式共识机制。

具体来说,区块链中的每个参与节点通过算法来达成共识,即对数据的添加和修改达成一致意见。

常见的共识算法包括工作量证明(PoW)、权益证明(PoS)、拜占庭容错等。

共识机制保证了区块链网络中数据的一致性和可靠性。

3. 密码学密码学在区块链中扮演着重要的角色。

区块链使用了非对称加密算法来实现数据的加密和验证。

对称加密算法用于加密数据,而非对称加密算法则用于实现数字签名和验证。

通过使用密码学技术,区块链能够保证数据的安全性和私密性。

区块链的运行过程可以简单描述为以下几个步骤:1. 数据添加当用户想要添加新的数据到区块链时,他首先会将待添加的数据进行加密,然后生成一个唯一的数字签名。

数字签名的生成过程使用了非对称加密算法,确保了数据的私密性和真实性。

然后,用户将加密后的数据连同签名一起发送给网络中的节点。

2. 数据验证一旦节点收到了用户发送的数据,它会首先验证该数据的真实性。

节点会通过解密数字签名来验证数据是否被篡改过。

如果验证成功,则节点进一步检查该数据是否符合区块链的规则和格式。

若数据验证通过,节点将该数据添加到候选区块中。

3. 共识达成在区块链中,参与节点需要达成共识来决定哪个节点可以添加新的数据到区块链中。

共识的机制可以是工作量证明(PoW)或权益证明(PoS)等。

其中,PoW 是一种基于计算能力的共识机制,参与节点需要通过解决一个复杂的数学问题来获得添加数据的权利。

而PoS则是基于参与节点所持有的数字资产数量来分配添加数据的权利。

4. 区块生成和链扩展一旦共识达成,可以开始生成新的区块。

区块链共识算法PBFT(拜占庭容错)PAXOSRAFT简述

区块链共识算法PBFT(拜占庭容错)PAXOSRAFT简述

区块链共识算法PBFT(拜占庭容错)PAXOSRAFT简述区块链共识算法是指在分布式网络中,通过一致的方式来确定交易的有效性和先后顺序的算法。

在区块链技术中,共识机制是保证数据一致性、安全性和可靠性的关键因素之一、下面将分别介绍PBFT(拜占庭容错)、PAXOS和RAFT三种较为经典的共识算法。

1. PBFT(Practical Byzantine Fault Tolerance,拜占庭容错):PBFT是一种具有拜占庭容错性质的共识算法,它能够在遇到最多f个拜占庭节点(即恶意节点)的情况下仍然能够保证一致性。

PBFT算法可以分为四个阶段:提议、预备、提交和检验。

在PBFT中,系统中的节点按照顺序提出提议,并通过互相模拟和验证达成一致,最终选择一个提议作为全局一致的结果。

PBFT算法的主要优点是快速、高效,适用于节点数量较少(通常不超过几十个)的系统。

2.PAXOS:PAXOS是一种常用的分布式一致性算法,它能够在一个拜占庭节点和多个正确节点组成的系统中,保证数据的一致性。

PAXOS算法将分布式系统分为提议者(Proposer)、学习者(Learner)和接受者(Acceptor)三个角色。

PAXOS算法通过多个阶段的信息交互和投票,最终选择一个提议作为全局一致的决策。

PAXOS算法的主要特点是安全性和可扩展性,但其实现难度较大,对于理解和部署相对复杂的场景而言,比较适用。

3.RAFT:RAFT是一种简单易理解的共识算法,它将一致性问题分解为多个相对独立的子问题,通过选举机制和日志复制来保证数据的一致性。

RAFT算法将节点划分为领导者(Leader)、跟随者(Follower)和候选者(Candidate)三个角色。

在RAFT中,领导者负责处理客户端请求,并将结果复制给其他节点,然后通过选举机制保持领导者的一致性。

RAFT算法相较于PAXOS算法,具有更易理解、实现和调试的特点,适用于中等规模的系统。

paxos算法原理

paxos算法原理

paxos算法原理Paxos算法是一种分布式一致性算法,用于解决分布式系统中的一致性问题。

它是由Leslie Lamport在1998年首次提出,并被广泛使用在许多分布式系统中,如分布式存储系统和分布式数据库。

一致性问题在分布式系统中是非常重要的,因为在系统的不同节点上可能存在多个副本,这些副本需要保持一致,以避免数据丢失和错误。

Paxos算法的目标是确保系统的一致性,即使在出现故障和网络延迟的情况下也能够正常工作。

Paxos算法的基本原理是通过多个提案者(proposer)和多个接受者(acceptor)之间的通信来达成一致。

每个提案者都可以提出一个提案,而每个接受者可以接受或拒绝这个提案。

Paxos算法由三个阶段组成:准备(prepare)、承诺(promise)和接受(accept)。

首先,在准备阶段,提案者向所有的接受者发送一个准备请求,请求一个提案编号(proposal number)。

每个接受者根据自己维护的状态来决定是否接受这个请求。

如果接受者接受了准备请求,它会通过发送一个承诺响应来回复提案者,并在响应中包含接受者之前见过的最大提案编号。

如果接受者拒绝了准备请求,它会简单地忽略这个请求。

然后,在承诺阶段,如果提案者收到了足够多的承诺响应,它就可以准备一个提案,并将这个提案发送给所有的接受者。

提案者在发送提案时还包含它收到的承诺响应中的最大提案编号,以确保提案的编号是最大的。

每个接受者在收到提案后,会根据自己维护的状态来决定是否接受这个提案。

如果接受者接受了提案,它会通过发送一个接受响应来回复提案者。

最后,在接受阶段,如果提案者收到了足够多的接受响应,它就可以确定这个提案已经被接受,并将这个提案广播给所有的接受者。

当接受者收到提案后,它会根据自己维护的状态来决定是否接受这个提案。

如果接受者接受了提案,它会将这个提案应用到自己的状态中。

这样,系统中的所有节点就能达成一致。

需要注意的是,Paxos算法中的每个角色可以是多个节点,这些节点之间通过消息传递来进行通信。

分布式系统的核心问题一致性与共识

分布式系统的核心问题一致性与共识

分布式系统的核⼼问题⼀致性与共识区块链系统是⼀个分布式系统,⽽分布式系统的⾸要问题是⼀致性的保障。

⼀致性 定义:⼀致性(consistency),早期也叫agreement,是指对于分布式系统中的多个服务节点,给定⼀系列操作,在约定协议的保障下,试图使得他们对处理结果达成“某种程度”的认同。

⼀致性并不代表结果正确与否,⽽是系统对外呈现的状态⼀致与否;例如,所有节点都达成失败状态也是⼀种⼀致。

将可能引发不⼀致的并⾏操作进⾏串⾏化是现代分布式系统处理⼀致性问题的的基础思路。

事件的先后顺序⼗分重要,这也是解决分布式系统领域很多问题的核⼼秘诀:把多件事情进⾏排序,并且这个顺序还得是⼤家都认可的。

共识算法 共识(consensus)在很多时候会与⼀致性(consistency)术语放在⼀起讨论。

严谨地讲,两者的含义并不完全相同。

⼀致性往往指分布式系统中多个副本对外呈现的数据的状态。

共识则描述了分布式系统中多个节点之间,彼此对某个状态达成⼀致结果的过程。

因此,⼀致性描述的是结果状态,共识则是⼀种⼿段。

达成某种共识并不意味着就保障了⼀致性。

在实践中,要保障系统满⾜不同程度的⼀致性,核⼼过程往往需要通过共识算法来达成。

共识算法解决的是对某个提案(proposal)⼤家达成⼀致意见的过程。

提案的含义在分布式系统中⼗分宽泛,⽐如多个事件发⽣的顺序、某个键对应的值、谁是领导等等。

可以认为任何可以达成⼀致的信息都是⼀个提案。

对于分布式系统来讲,各个节点通常都是相同的确定性状态机模型,从相同的初始状态开始接收的相同顺序的指令,则可以保证相同的结果状态。

因此,系统中多个节点最关键的是对多个事件的顺序进⾏共识,即排序。

问题 可惜的是现实中不存在这样的“理想”系统,问题⼀般包括:(1)出现故障(crash或fail-stop,即不响应)但不会伪造信息的情况称为“⾮拜占庭错误”(non-byzantine fault)或“故障错误”(Crash Fault);(2)伪造信息恶意响应的情况称为“拜占庭错误”(Byzantine Fault)。

区块链技术的分布式共识机制

区块链技术的分布式共识机制

区块链技术的分布式共识机制区块链技术作为一种新兴的分布式账本技术,被广泛认可为未来的核心技术之一。

在区块链中,分布式共识机制被视为保证数据的一致性和可信度的关键。

本文将介绍区块链技术中常用的分布式共识机制,包括工作量证明(Proof-of-Work,简称PoW)、权益证明(Proof-of-Stake,简称PoS)、权益份额证明(Proof-of-Stake,简称DPoS)和拜占庭容错(Byzantine Fault Tolerance,简称BFT)。

一、工作量证明(PoW)工作量证明是最早被比特币采用的分布式共识机制,它要求节点通过解决一道数学难题来证明自己的工作量,并有权添加新的区块到区块链中。

在该机制下,算力较大的节点往往能更容易地解决问题,从而获得记账的权利。

但是,PoW机制存在着能源消耗大、网络拥堵、算力集中等问题。

二、权益证明(PoS)相较于PoW,权益证明将记账权和参与节点的权益挂钩。

根据持有的数字货币数量,节点的记账权重也不同。

该机制下,节点无需消耗大量能源来解决难题,而是通过抵押一定数量的数字货币来获得记账的权利。

权益证明机制降低了能源的消耗,并且减少了对算力的依赖,但同时也使持币量较多的节点拥有更大的权力,可能导致权力集中的问题。

三、权益份额证明(DPoS)权益份额证明是在权益证明的基础上进行改进,旨在解决权益证明机制中权力集中的问题。

该机制通过选举出一定数量的记账节点,这些节点会根据持币者的支持率获得记账的权利。

并且,选举的过程是由持币者投票决定的,使得节点的选举更为去中心化。

DPoS机制的优势在于保证了较快的交易速度和更高的可扩展性,但同时也面临着被恶意节点攻击的可能性。

四、拜占庭容错(BFT)拜占庭容错是一种高度健壮的分布式共识机制,它能够容忍一定数量的拜占庭错误节点,并保证系统的安全性和可用性。

在拜占庭容错的机制下,节点通过相互通信进行信息传播和一致性决策,从而达成共识。

从分布式一致性到共识机制(三)拜占庭问题

从分布式一致性到共识机制(三)拜占庭问题

从分布式⼀致性到共识机制(三)拜占庭问题分布式⼀致性问题,区块链⾥体现就是共识问题。

共识机制就是在⼀个群体中的个体通过某种⽅式达成⼀致性的⼀种机制,⽐如在⼀个团队、或者⼀个公司⾥的个体意见不⼀致时,就需要有⼀个领导,由领导来做决定,保证团队达成共识。

⽬前的共识算法,主要有基于算⼒的POW,基于股权的POS和基于投票的DPOS算法,以及著名的拜占庭容错算法。

⼀、共识机制团队⾥的共识机制延伸到普通的分布式系统⾥⾯,就是系统需要有⼀个master,系统的所有决定都由master来达成共识,在分布式系统⾥⾯master的选举其实就是基于某种共识机制达成共识。

到了区块链中,由于区块链是⼀种去中⼼化的分布式系统,所以区块链中是没有类似于团队⾥的领导,以及分布式系统中的master的⾓⾊,这样就需要有某种共识机制,以便保证系统⼀致性。

实际上当节点之间的通信⽹络不可靠的情况下,系统是⽆法达成共识的,具体原因请参考“两军问题"。

即使在⽹络通信可靠的情况下,⼀个可扩展的分布式系统的共识问题也是⽆解的。

这个结论被称为”FLP不可能性原理“。

⼀般的把故障(不响应)即信道不可靠的情况称为”⾮拜占庭错误“,恶意响应(即系统被攻击)称为”拜占庭错误“。

⼆、拜占庭将军问题拜占庭将军问题是⼀个共识问题: ⾸先由Leslie Lamport与另外两⼈在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。

核⼼描述是军中可能有叛徒,却要保证进攻⼀致,由此引申到计算领域,发展成了⼀种容错理论。

论⽂地址:⼀群将军想要实现某⼀个⽬标(⼀致进攻或者⼀致撤退),但是单独⾏动⾏不通,必须合作,达成共识;由于叛徒的存在,将军们不知道应该如何达到⼀致。

1.两军问题和TCP协议拜占庭将军问题中并不去考虑通信兵是否会被截获或⽆法传达信息等问题,即消息传递的信道绝⽆问。

Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的⽅式达到⼀致性是不可能的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分布式系统一致性与共识的原理1一致性问题一致性问题是分布式领域最为基础也是最重要的问题。

如果分布式系统能实现“一致”,对外就可以呈现为一个完美的、可扩展的“虚拟节点”,相对物理节点具备更优越性能和稳定性。

这也是分布式系统希望能实现的最终目标。

1.1定义与重要性定义一致性(c o n s i s t e n c y),早期也叫a g r ee m e n t,是指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得它们对处理结果达成“某种程度”的认同。

理想情况下,如果各个服务节点严格遵循相同的处理协议,构成相同的处理状态机,给定相同的初始状态和输入序列,则可以保障在处理过程中的每个环节的结果都是相同的。

那么,为什么说一致性问题十分重要呢?举个现实生活中的例子,多个售票处同时出售某线路上的火车票,该线路上存在多个经停站,怎么才能保证在任意区间都不会出现超售(同一个座位卖给两个人)的情况呢?这个问题看起来似乎没那么难,现实生活中经常通过分段分站售票的机制。

然而,为了支持海量的用户和避免出现错误,存在很多设计和实现上的挑战。

特别在计算机的世界里,为了达到远超普通世界的高性能和高可扩展性需求,问题会变得更为复杂。

注意一致性并不代表结果正确与否,而是系统对外呈现的状态一致与否;例如,所有节点都达成失败状态也是一种一致。

1.2问题与挑战看似强大的计算机系统,实际上很多地方都比人类世界要脆弱得多。

特别是在分布式计算机集群系统中,如下几个方面很容易出现问题:·节点之间的网络通信是不可靠的,包括消息延迟、乱序和内容错误等;·节点的处理时间无法保障,结果可能出现错误,甚至节点自身可能发生宕机;·同步调用可以简化设计,但会严重降低分布式系统的可扩展性,甚至使其退化为单点系统。

仍以火车票售卖问题为例,愿意动脑筋的读者可能已经想到了一些不错的解决思路,例如:·要出售任意一张票前,先打电话给其他售票处,确认下当前这张票不冲突。

即通过同步调用来避免冲突;·多个售票处提前约好隔离的售票时间。

比如第一家可以在上午8点到9点期间卖票,接下来一个小时是另外一家……即通过令牌机制来避免冲突;·成立一个第三方的存票机构,票集中存放,每次卖票前找存票机构查询。

此时问题退化为中心化单点系统。

当然,还会有更多方案。

实际上,这些方案背后的思想,都是将可能引发不一致的并行操作进行串行化。

这实际上也是现代分布式系统处理一致性问题的基础思路。

只是因为现在的计算机系统应对故障往往不够“智能”,而人们又希望系统可以更快更稳定地工作,所以实际可行的方案需要更加全面和更加高效。

注意这些思路都没有考虑请求和答复消息出现失败的情况,同时假设每个售票处的售票机制是正常工作的。

1.3一致性要求规范地说,分布式系统达成一致的过程,应该满足:·可终止性(t e r m i n a t i o n):一致的结果在有限时间内能完成;·约同性(a g r ee m e n t):不同节点最终完成决策的结果是相同的;·合法性(v a li d i t y):决策的结果必须是某个节点提出的提案。

可终止性很容易理解。

有限时间内完成,意味着可以保障提供服务(li v e n e ss)。

这是计算机系统可以被正常使用的前提。

需要注意,在现实生活中这点并不是总能得到保障的。

例如取款机有时候会出现“服务中断”;拨打电话有时候是“无法连接”的。

约同性看似容易,实际上暗含了一些潜在信息。

决策的结果相同,意味着算法要么不给出结果,任何给出的结果必定是达成了共识的,即安全性(safety)。

挑战在于算法必须要考虑的是可能会处理任意的情形。

凡事一旦推广到任意情形,往往就不像看起来那么简单。

例如现在就剩一张某区间(如北京-->南京)的车票了,两个售票处也分别刚通过某种方式确认过这张票的存在。

这时,两家售票处几乎同时分别来了一个乘客要买这张票,从各自“观察”看来,自己一方的乘客都是先到的……这种情况下,怎么能达成对结果的共识呢?看起来很容易,卖给物理时间上率先提交请求的乘客即可。

然而,对于两个来自不同位置的请求来说,要判断在时间上的“先后”关系并不是那么容易。

两个车站的时钟可能是不一致的;可能无法记录下足够精确的时间;更何况根据相对论的观点,并不存在绝对的时空观。

可见,事件发生的先后顺序十分重要,这也是解决分布式系统领域很多问题的核心秘诀:把多件事情进行排序,而且这个顺序还得是大家都认可的。

最后一个合法性看似绕口,但是其实比较容易理解,即达成的结果必须是节点执行操作的结果。

仍以卖票为例,如果两个售票处分别决策某张票出售给张三和李四,那么最终达成一致的结果要么是张三,要么是李四,而绝对不能是其他人。

1.4带约束的一致性从前面的分析可以看到,要实现绝对理想的严格一致性(strictc o n s i s t e n c y)代价很大。

除非系统不发生任何故障,而且所有节点之间的通信无需任何时间,这个时候整个系统其实就等价于一台机器了。

实际上,越强的一致性要求往往会造成越弱的处理性能,以及越差的可扩展性。

一般来讲,强一致性(s t r o n g c o n s i s t e n c y)主要包括下面两类:·顺序一致性(s e q u e n t i a l c o n s i s t e n c y):L e s li e L a m po r t在1979年的经典论文《H o w t o M a k e a M u l t i p r o c e ss o r C o m p u t e r T h a t C o rr e c t l y E x e c u t e s M u l t i p r o c e ss P r og r a m s》中提出,是一种比较强的约束,保证所有进程看到的全局执行顺序(t o t a l o r d e r)一致,并且每个进程看自身的执行顺序(l o c a l o r d e r)跟实际发生顺序一致。

例如,某进程先执行A,后执行B,则实际得到的全局结果中就应该为A在B前面,而不能反过来。

同时所有其他进程在全局上也应该看到这个顺序。

顺序一致性实际上限制了各进程内指令的偏序关系,但不在进程间按照物理时间进行全局排序;·线性一致性(li n e a r i z a b ili t y c o n s i s t e n c y):M a u r i c e P.H e r li h y与J e a nn e tt e M.W i n g在1990年的经典论文《L i n e a r i z a b ili t y:A C o rr e c t n e ss C o n d i t i o n f o r C o n c u rr e n t O b j e c t s》中共同提出,在顺序一致性前提下加强了进程间的操作排序,形成唯一的全局顺序(系统等价于是顺序执行,所有进程看到的所有操作的序列顺序都一致,并且跟实际发生顺序一致),是很强的原子性保证。

但是比较难实现,目前基本上要么依赖于全局的时钟或锁,要么通过一些复杂算法实现,性能往往不高。

实现强一致性往往需要准确的计时设备。

高精度的石英钟的漂移率为10-7,最准确的原子震荡时钟的漂移率为10-13。

G oog l e曾在其分布式数据库S p a nn e r中采用基于原子时钟和G P S的“T r u eT i m e”方案,能够将不同数据中心的时间偏差控制在10ms以内。

方案简单粗暴而且有效,但存在成本较高的问题。

由于强一致性的系统往往比较难实现,而且很多时候,实际需求并没有那么严格需要强一致性。

因此,可以适当地放宽对一致性的要求,从而降低系统实现的难度。

例如在一定约束下实现所谓最终一致性(e v e n t u a l c o n s i s t e n c y),即总会存在一个时刻(而不是立刻),让系统达到一致的状态。

大部分Web系统实现的都是最终一致性。

相对强一致性,这一类在某些方面弱化的一致性都笼统称为弱一致性(w e a k c o n s i s t e n c y)。

2共识算法共识(c o n s e n s u s)在很多时候会与一致性(c o n s i s t e n c y)术语放在一起讨论。

严谨地讲,两者的含义并不完全相同。

一致性往往指分布式系统中多个副本对外呈现的数据的状态。

如前面提到的顺序一致性、线性一致性,描述了多个节点对数据状态的维护能力。

而共识则描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程。

因此,一致性描述的是结果状态,共识则是一种手段。

达成某种共识并不意味着就保障了一致性。

实践中,要保障系统满足不同程度的一致性,核心过程往往需要通过共识算法来达成。

共识算法解决的是对某个提案(p r opo s a l)大家达成一致意见的过程。

提案的含义在分布式系统中十分宽泛,如多个事件发生的顺序、某个键对应的值、谁是领导……等等。

可以认为任何可以达成一致的信息都是一个提案。

对于分布式系统来讲,各个节点通常都是相同的确定性状态机模型(又称为状态机复制问题,state- m a c h i n e r e p li c a t i o n),从相同初始状态开始接收相同顺序的指令,则可以保证相同的结果状态。

因此,系统中多个节点最关键的是对多个事件的顺序进行共识,即排序。

2.1问题与挑战实际上,如果分布式系统中各个单节点都能保证以十分“理想”的性能(瞬间响应、超高吞吐)无故障地运行,节点之间通信瞬时送达,则实现共识过程并不十分复杂,简单地通过广播进行瞬时投票和应答即可。

可惜的是,现实中这样的“理想”系统并不存在。

不同节点之间通信存在延迟(光速物理限制,通信处理延迟),并且任意环节都可能存在故障(系统规模越大,发生故障可能性越高)。

如通信网络会发生中断、节点会发生故障、甚至存在恶意节点故意要伪造消息,破坏系统的正常工作流程。

一般地,把出现故障(c r a s h或f a il-s t op,即不响应)但不会伪造信息的情况称为“非拜占庭错误”(non-byzantine fault)或“故障错误”(CrashF a u l t);伪造信息恶意响应的情况称为“拜占庭错误”(B y z a n t i n eF a u l t),对应节点为拜占庭节点。

2.2常见算法根据解决的是非拜占庭的普通错误情况还是拜占庭错误情况,共识算法可以分为Crash Fault Tolerance(CFT)类算法和Byzantine Fault Tolerance (BFT)类算法。

相关文档
最新文档