imtoken下载官网app|bft

作者: imtoken下载官网app
2024-03-07 17:19:55

什么是 BFT? - 知乎

什么是 BFT? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册拜占庭什么是 BFT?关注者4被浏览11,319关注问题​写回答​邀请回答​好问题​添加评论​分享​2 个回答默认排序小孔5176​ 关注BFT( Byzantine Fault Tolerance)称为 拜占庭容错。拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。拜占庭将军问题拜占庭容错技术来源于拜占庭将军问题。 拜占庭将军问题是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性问题(DistributedConsensus)在论文中抽象出来一个著名的例子。拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题的.我们将拜占庭将军问题简化成了,所有忠诚的将军都能够让别的将军接收到自己的真实意图,并最终一致行动;而形式化的要求就是,“一致性”与“正确性”。一致性:每个忠诚的将军必须收到相同的命令值vi(vi是第i个将军的命令)正确性:如果第i个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的vi相同。Lamport 对拜占庭将军的问题的研究表明,当 n > 3m 时,即叛徒的个数 m 小于将军总数的 n 的 1/3 时,通过口头同步通信(假设通信是可靠的),可以构造同时满足“一致性”和“正确性”的解决方法,即将军们可以达成一致的命令。拜占庭容错系统区块链网络的记账共识和拜占庭将军的问题是相似的。参与共识记账的每一个节点相当于将军,节点之间的消息传递相当于信使,某些节点可能由于各种原因而产生错误的信息传递给其他节点。通常这些发生故障的节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n ≥ 3m + 1),拜占庭容错系统需要满足如下两个条件:所有非拜占庭节点使用相同的输入信息,产生同样的结果。在区块链系统中,可以理解为,随机数相同、区块算法相同、原账本相同的时候,计算结果相同。如果输入的信息正确,那么所有非拜占庭节点必须接收这个消息,并计算相应的结果。在区块链系统中,可以理解为,非拜占庭节点需要对客户的请求进行计算并生成区块。另外,拜占庭容错系统需要达成如下两个指标:安全性:任何已经完成的请求都不会被更改,它可以在以后请求看到。在区块链系统中,可以理解为,已经生成的账本不可篡改,并且可以被节点随时查看。灵活性:可以接受并且执行非拜占庭客户端的请求,不会被任何因素影响而导致非拜占庭客户端的请求不能执行。在区块链系统中,可以理解为,系统需要持续生成区块,为用户记账,这主要靠挖矿的激励机制来保证。在分析拜占庭问题的时候,假设信道是可信的。拓展开来,在拜占庭容错系统,普遍采用的假设条件包括:拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;节点之间的错误是不相关的;节点之间通过异步网络连接,网络中的消息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;节点之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和破坏信息的完整性。转自黎跃春区块链博客发布于 2018-06-11 16:37​赞同 8​​添加评论​分享​收藏​喜欢收起​WEB3研究院️专注于WEB3.0以及AIGC的科技财经类媒体

独家分享​ 关注证明者如何在Aleo BFT获取奖励?92 播放 · 1 赞同发布于 2023-05-11 10:56· 25 次播放​赞同 1​​添加评论​分享​收藏​喜欢收起​​

深入理解异步拜占庭共识 - 知乎

深入理解异步拜占庭共识 - 知乎首发于Decentralized Mind切换模式写文章登录/注册深入理解异步拜占庭共识背着超人飞铲屎官/区块链/Ph.D.区块链技术的兴起让人们开始关注拜占庭共识协议(以下简称 BFT 协议)。在种类繁多的 BFT 协议中,异步 BFT 协议的鲁棒性最强,能够应对极端的网络环境。然而如何设计一种高效的异步 BFT 协议一直是学术界和工业界面临的难题。一直到 2016 年 Andrew Miller 等人提出了 Honey Badger BFT(简称 HB-BFT)才让人们看到异步 BFT 协议可以落地的潜力。近期比较火的 Dumbo(中文名”小飞象“)在 HB-BFT 的基础上进一步优化,极大提高了共识速度。本文主要以 HB-BFT[1] 和 Dumbo[2] 为例,深入探讨异步拜占庭共识所涉及的关键技术。网络假设拜占庭共识协议的设计和工程实现很大程度上依赖于对底层网络的假设。主要的网络假设有:同步(synchronous)网络假设网络中的消息能够在一个已知的时间 Δ 内到达,这是一种非常理想的假设,实际的工程实践中很难保证这一假设成立。半同步(partially synchronous)网络假设在一个 GST(global stabilization time)事件之后,消息在 Δ 时间内到达。随着网络技术的发展,这种假设已经能符合我们生活中遇到多绝大多数网络情况,而且设计和实现这类协议的难度不高,因此很多常见的协议比如 Paxos、Raft、PBFT 等都是基于半同步网络假设设计的共识协议。这些协议虽然能够保证在任何网络情况下系统的一致性,但在异步网络下会丧失活性。异步(Asynchronous)网络只保证消息最终能到达,并没有到达时间的限制,这几乎涵盖所有网络情况。由此可见,异步 BFT 协议的鲁棒性最强,即使在极端网络条件下协议也不会丧失活性。我们将网络假设和容错模型作为两个维度可以将共识协议划分到下图所示的 6 个不同的象限,不同象限代表了不同的应用场景,最右下方的异步拜占庭场景对协议设计的要求最高。 之所以共识协议会出现这么多的分类都是为了绕过著名的 FLP 不可能定理: reaching consensus in full asynchrony with a single process crashing is impossible with a deterministic protocolFLP 定理从理论上证明了在纯异步环境下不可能存在一种确定性的共识协议。后世的研究者们为了绕过这个定理,不得不在两个方向上进行妥协:要么加强对网络的假设,要么引入随机源。半同步共识 vs 异步共识半同步共识协议就是基于第一种方法加强网络假设而设计的。这种方法可以让协议的设计相对简单,协议的关注点可以更多的放在安全性(safety),活性由 failure detector 来保证。比如在 PBFT 中,每个 replica 都要维护一个 timer,一旦 timeout 就会触发 view change 协议选举新的 leader。这里的 timer 就起到了一个 failure detector 的作用。由于半同步网络的假设存在,当网络恢复到同步之后,总能选出一个诚实的 leader,进而保证协议的活性。然而在异步环境下,failure detector 就会失去作用,可能导致无休止的 view change。除此之外,在工程实践中,即使底层网络能满足半同步假设的要求,但如何调节 timer 对协议的实际性能有非常大的影响。如果 timer 时间过短,那么可能导致 view change 频繁发生;如果时间过长,则可能导致网络从 partition 之后恢复较慢。异步共识协议则完全不需要考虑 timer 的设置。为了保证协议的活性,异步协议需要引入随机源,简单来说就是当协议无法达成共识的时候,借助上帝抛骰子的方式随机选择一个结果作为最终结果。Honey Badger BFT下面以 HB-BFT 为例,讨论一下异步拜占庭共识所涉及的核心技术。异步拜占庭共识由于协议设计比较复杂、通信复杂度比较高,很长一段时间都只停留在论文中,直到 2016 年 Andrew Miller 在 CCS 上发表 HB-BFT 才意味着异步拜占庭容错正式迈入可实用领域。HB-BFT 通过非常巧妙的设计将整体的通信复杂度降低到了接近于最优的 O(|B|),前提是区块所占带宽 |B| 足够大。HB-BFT 通过模块化的方式解决了拜占庭环境下的原子广播(Atomic Broadcast,ABC)问题,即如何保证在异步和拜占庭环境下,各个节点按相同顺序收到相同的消息。HB-BFT 首先将 ABC 分解成一个核心模块,异步共同子集(Asynchronous Common Subset,ACS)。之后将 ACS 分解成了 RBC(Reliable Broadcast) + ABA(Asynchronous Binary Agreement)两个子模块,并且分别针对这两个子模块找到了两个比较优化的实现,如下图所示。接下来我们讨论每个模块是如何实现的。HB-BFT首先,我们看 HB-BFT 是如何利用 ACS 实现 ABC 的。简单来说,每个节点都参与贡献一个区块的一部分,而 ACS 的作用就是决定哪些节点贡献的这一部分最终达成了共识。HB-BFT 的流程如下图所示。假如网络中一共有 10 个节点,每个节点维护了一个交易池作为接收来自客户端交易的缓冲池,每个区块包含 B = 100 个交易。每个节点首先从本地的交易池中选取前 100 个合法的交易,之后再从这 100 个交易中随机选择 100/10=10 笔交易作为自己的 proposal。这里之所以每个节点只选择 B/N 笔交易是为了降低通信复杂度,而之所以采用随机选取的方式,是为了降低每个节点选择重复交易的概率。通过一个共享公钥(阈值签名)将 proposal 加密,交易的内容直到共识结束后(收到了来自 f+1 个 share)才能被解密,从而防止了审查攻击(censorship attacks)。每个节点将加密后的 proposal 作为 ACS 模块的输入,输出就得到了一个“名单”,记录了有哪些节点提交的 proposal 成功得到共识。之后通过一系列的解密操作就得到了最终确认的区块。ACS (Asynchronous Common Subset)接下来我们讨论 HB-BFT 的核心——ACS 模块是如何实现的。ACS 可以被分解成 RBC(Reliable Broadcast) 和 ABA(Asynchronous Binary Agreement) 两个子模块。每个节点首先将本地的 proposal 通过 RBC 发送到其它节点,之后每个节点针对每个 RBC 的实例成功与否(0 或 1)执行一次 ABA。也就是说,每个节点都要并行运行 N 个 ABA 的示例(每个节点的 proposal 一个),每个 ABA 的输出 0 或 1 表示是否所有正确节点都认为这个 proposal 最终应该成为区块的一部分。ACS 的运行流程如下图所示。假如一共有 N=10 个节点(最多容忍 f=3 个拜占庭节点),以节点 P_1 ​ 为例。如果 P_1 ​​收到来自 P_2 的 proposal(即 RBC2​ 成功),则 P_1 ​​将 ABA2​ 的输入置为 1。当 P_1 ​​收到 N−f 节点的 proposal 时,将其它所有的 ABA 的输入都置为 0。直到所有 ABA 运行结束,将所有输出为 1 的 ABA 的汇聚成一个集合作为 ACS 的最终输出。例如,针对节点 P_1,P_3,P_4,P_6,P_7,P_9,P_{10} 发布的 proposal 对应的 ABA 的结果如果是 1 的话,ACS 的最终输出可以是(1,3,4,5,6,7,9,10)。ACS 保证所有正确节点都得到相同的输出。下图展示了 ACS 在执行过程中的三种情况。在正常情况下,RBC1 结束比较早,相对应的 ABA1​ 的输入为 1(yes),其输出也是 1。第二种情况,RBC2 结束的比较慢,在相对应的 ABA2​ 开始的时候(其它 N-f 个 RBC 成功之后)RBC2​ 还未结束,ABA2​ 的输入为 0(No),但由于其它 N-f 个节点对于 ABA2​ 的输入为 1,最终 ABA2​ 的输出也是 1,同时保证节点能够最终收到 RBC2​ 的 proposal。第三种情况,RBC3​ 失败,当其它 N−f 个 RBC 成功之后,节点对 ABA3​ 的输入为 0,最终 ABA3​ 的输出也是 0。RBC (Reliable Broadcast)可靠广播 RBC 可以确保源节点能够可靠地将消息发送到网络中的所有节点。具体来说,RBC 主要有以下三个性质:一致性(Agreement)。任意两个正确节点都收到来自源节点的相同的消息。全局性(Totality)。只要有一个节点收到了来自源节点的消息,那么所有正确的节点最终都能收到这个消息。可信性(Validity)。如果源节点是正确的,那么所有正确的节点收到的消息一定与源节点发送的消息一致。抗拜占庭的 RBC 最早由 Bracha 于1987年首次提出,并得到了广泛应用,其消息传递的示意图如下。RBC 主要分成 Initiate、Echo、Ready 三个阶段,其中后两个阶段各经历一次 all-to-all 的广播,因此 Bracha 的 RBC 协议的通信复杂度是 O(N^2|v|) 。在这之后,Cachin 等人在 2005 年提出了基于纠删码的 RBC 实现,将通信复杂度降低到了 O(N∣v∣+λN2log⁡N) 。HB-BFT 就是采用了这种优化的 RBC。当 |v| 远大于 \lambda N\log N 的时候,其通信复杂度可以近似表示为 O(N|v|) 。由于 |v|=|B|/N ,则 HB-BFT 整体的通信复杂度可以表示为 O(|B|) (|B|为整个区块的大小),也就是渐进于理论最优。HB-BFT 中采用了基于(N-2f,N)的纠删码模式,即将一个数据块进行编码后,可以将其分成 N 份,其中只要任意 N-2f 份组合可以恢复整个数据块。消息传递的模式仍然跟传统的 RBC 类似。ABA (Asynchronous Binary Agreement)异步二元共识就是要在异步环境下让所有节点对于 0 或 1 达成共识。在 HB-BFT 中,每个节点都会针对其他所有节点的 RBC 是否成功进行一次二元共识,也就是说,每轮共识都要并行地执行 N 个 ABA 的实例。ABA 主要满足下面几个性质:一致性(Aggreement)。所有节点的输出相同(要么都是 0,要么都是 1)。最终性(Termination)。如果所有正确节点都收到了输入,那么所有正确节点最终都会得到输出。可信性(Validity)。如果任意正确节点的输出是 b(0 或 1),那么至少有一个正确节点的输入是 b。ABA 的实现原理就是当节点无法达成一致的时候借助一个外部的随机源做决定。这个随机源就是 ABA 的核心组件(Common Coin,CC),我们也可以将 CC 理解成上帝掷骰子,只不过这个骰子只有 0 和 1 两个值。虽然只掷一次骰子可能还是无法达成共识,那么就不停掷,最终会出现所有人都达成一致的结果。Common Coin 有很多实现方案,HB-BFT 针对其模块化的设计,采用了基于阈值签名的 CC 方案。每个节点对一个共同的字符串进行签名并广播给其它节点,当节点收到来自其它 f+1 个节点的签名时,就可以将这些签名聚合成一个签名,并将这个签名作为随机源。HB-BFT 性能测试接下来我们看看 HB-BFT 的性能表现。作者们给出了 Python 版本的实现[3],节点部署在广域网,分布在五个大洲,每个交易大小为 250 字节,总结点数 N = 4f,其中 f 为故障节点数,不考虑拜占庭行为。我们首先看通信复杂度 vs batch 大小的实验结果,如下图所示。我们可以清楚地看到,当 batch size 逐渐增大的时候,每个节点的通信开销逐渐逼近线性增长。接下来我们看 HB-BFT 跟 PBFT 吞吐量的对比,如下图所示。我们可以看到在节点数为 8、16 的时候,两者差别不大,但随着节点个数增加,PBFT 的吞吐量有明显下降,而 HB-BFT 则几乎没有什么变化。这是由于 PBFT 是由 leader 将区块发布给其他节点,当节点数增加的时候,leader 的带宽逐渐成为瓶颈,而 HB-BFT 则不存在 leader 的概念,每个节点都贡献区块的一部分,因此吞吐量受网络规模影响不明显。最后我们来看 HB-BFT 的吞吐量-延迟表现情况,如下图所示。我们可以明显看到,随着网络规模增加,协议的基础延迟明显增加。当网络规模达到 104 个节点的时候,协议的基础延迟增加到 600s。之所以协议的延迟对网络规模这么敏感是因为在每轮共识中,每个节点都要运行 N 个 ABA 的实例,而每个 ABA 的实例都要校验 O(N^2) 个阈值签名,因此计算复杂度非常高,随着网络规模增加,首先到达瓶颈的是 CPU,而不是带宽。接下来将要介绍的 Dumbo 就是在这个发现的基础上对 HB-BFT 的延迟进行了优化。Dumbo: Faster Asynchronous BFT Protocols聊完了 Honey Badger BFT,我们下面来聊一聊它的继任者 Dumbo(小飞象)。小飞象协议是来自新泽西理工的唐强教授联合中科院和京东创新实验室共同完成的。经过对 HB-BFT 性能的详细分析,Dumbo 的作者们发现影响 HB-BFT 性能的一个瓶颈是 ABA。由于在每轮共识中每个节点都要运行 N 个 ABA 的实例,每个实例都要验证 O(N^2) 个阈值签名,这对 CPU 的消耗很大。如下图所示,RBC 的运行时间相比 ABA 几乎可以忽略不计,而且随着 N 增大,运行 ABA 所需要的时间越来越长。于是如何减少每轮共识中需要运行的 ABA 实例个数就是提高异步共识效率的关键。沿着这个思路,Dumbo 给出了两种解决方案,分别是 Dumbo1 和 Dumbo2。下面简单谈一下 Dumbo1 和 Dumbo2 的思路,具体细节和证明请看论文原文。Dumbo1 的思路非常简单(如下图所示):既然我们的目标是选取一个共同子集,那么为什么不选取一个由 k(kBFT考试_百度百科试_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10BFT考试播报讨论上传视频教育领域术语“中国国际化人才外语考试 [1]”(Business Foreign Language Test,简称BFT)是国家外国专家局于1985 年6月设立的国家级标准化外语考试。自设立,BFT对选拔党政领导人才、设计企业人才和专业技术人才出国培训学习,确保出国培训质量,提高出国培训效益和成就,开发大批国际化人才,服务国家建设,发挥了非常重要的作用。中文名BFT考试外文名Business Foreign Language Test简    称BFT考试语种英语、日语、德语、俄语目录1简介2分级3考试办法4优势简介播报编辑全国出国培训备选人员外语考试,是由国家外国专家局主办的国家级标准化外语水平测试,是衡量出国培训人员外语水平的国家级标准。适用于我国政府、工商企业、财政金融等部门出国培训人员和已在或准备到国内外资企业工作的各类英语学习者及参加中、高级专业技术资格评定的各类专业技术员。已有十多万名考生参加了考试。随着我国改革开放的逐步深入,BFT考试 [2]从仅服务于国家计划培训工作,已发展为面向全社会的标准化外语水平测试。BFT考试不仅适用于我国党政机关及企事业单位出国培训人员,也适用于已在或准备到国内的外资企业工作的各类人员及参加中、高级专业技术资格评定的各类专业技术人员。由于原外专局培训司主要职能并入科技部新设立的引进国外智力管理司,新“三定”方案不再负责BFT考试相关职能,自2019年上半年起取消该考试 [3]。分级播报编辑作为国家级标准化综合外语能力测评体系,BFT按照公务、商务、国际交流及其他各类工作的需求,对不同人员在各种生活、学习及工作环境下运用外语的能力从听、说、读、写四个方面进行全面考查和评价。参加BFT培训和考试,学员可以大幅提高其外语应用能力,迅速达到出国培训学习使用外语的要求,并在外事工作环境中得以应用。BFT考试现设有英语、日语、俄语、德语四个语种;分为初级(C级)、中级(B级)和高级(A级)三个级别。笔试包括阅读理解、书面表达(写作)等内容。考试在一天内完成。上午进行听力及笔试的测试,下午进行口试。具体考试项目分为听力理解25%、阅读理解35%、书面表达15%、口头表达25%。BFT高级合格证和高级单科证有效期为四年,中、初级合格证及中、初级单科合格证有效期为三年。考试办法播报编辑BFT英语考试每年两次,分别安排在6月和12月举行;BFT日语、俄语、德语考试每年组织一次,安排在6月举行。BFT考试 [1]办公室于每次考试之前的两个月向各有关部门和地方下达考试通知,并通过新闻媒介发布考试消息,考生可据此向设在各地的BFT考试中心就近报名参加考试。考生可参加全部考试,也可根据考试目的选择相应测试科目。三个科目全部合格,根据成绩发给全国出国培训人员外语考试办公室负责印刷的相应BFT合格证。只参加某一科目考试的考生,成绩合格者可获得单科合格证。国家外国专家局批准的中长期(三个月及以上)出国培训人员及短期出国培训团组翻译,必须通过BFT高级考试才能获准出国培训;鼓励参加短期(三个月以下)出国培训、年龄在45岁以下(含45岁)的人员参加BFT初级水平考试。初、中级合格证及初、中级单科合格证有效期为两年,高级合格证和高级单科合格证有效期为三年。优势播报编辑获得高级进入备选人才库据了解,考试通知在报名日期前一个月颁发。得BFT高级合格证者,其个人资料将存入全国出国培训备选人员库,国家外国专家局在执行国家派遣的中、长期出国项目时,将从中优先挑选。根据人事部相关文件的规定,BFT考试 [1]成绩可作为评定职称依据,并逐渐成为国家机关、企事业单位招工、招干的参考标准。同时BFT以其完善科学的测试体系已成为国有大中企业、外资、合资企业人力资源评测的重要手段。可获单科合格证这其中英语考试分高中级和初级两种。中长期出国培训人员需参加高中级考试,并达到高级要求;短期出国培训人员需参加初级考试。其他各语种暂不设初级考试,级别划分标准不变。考生可参加全部考试,也可以根据考试目的选择相应测试科目。三个科目全部合格,根据成绩发给全国出国培训人员外语考试办公室负责印制的相应BFT合格证,参加某一科目考试的考生,成绩合格者可获得单科合格证。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

共识问题之三:拜占庭容错(BFT)共识算法的发展历程 - 知乎

共识问题之三:拜占庭容错(BFT)共识算法的发展历程 - 知乎首发于DecentralizedNet切换模式写文章登录/注册共识问题之三:拜占庭容错(BFT)共识算法的发展历程Grivn​​浙江大学 计算机硕士在共识算法理论基础方面,1985 年,著名的 FLP 不可能定理[1]被提出。该定理证明,在异步网络的环境下,只要存在节点发生故障,就不可能存在具备最终确定性的共识算法。为了能设计出最终一致性的共识算法,1988 年,Dwork 与 Lynch 等人提出了半同步网络的模型[2],该模型提出一种界于同步网络与异步网络之间的网络模型。在半同步网络模型中,消息可以在能够预测的延迟内传播,但在某些情况下网络可能会发生波动,发生波动时共识可能会被阻塞,但是经过可预测的时间后,最终会恢复正常的共识状态,该时间长度被称为 GST(Global Stabilization Time)。1989 年,Lamport 提出了一个在部分副本宕机情况下仍能正常工作的主从备份算法[3],这就是最早的 Paxos。Paxos 最早保证了异步网络中分布式集群的安全性,并在同步状态时保证分布式系统活性。不过,基础的 Paxos 协议由于需要先竞选提案权,再对提案进行共识,在此期间存在发生活锁的风险,最终确定性没有得到保证。为了解决该问题,作者也同时提出了一种基于主从结构的 Multi-Paxos 方案。通过一轮基础的 Paxos共识,集群选择一个主节点主导后续的提交过程,只要主节点不发生宕机,后续的提案均由主节点发出。这样做,使得存在主节点的时间段内,系统能够满足最终确定性。后来的 ZAB、Raft 等共识算法,均为在 Multi-Paxos 的基础上进行的优化与改进。不过,Paxos 等共识算法只能解决分布式系统中的宕机问题,称为宕机容错(Crash Fault Tolerance,CFT)共识算法。此类共识算法无法应对节点主动的恶意行为,即不容拜占庭错误。1982 年,Lamport 等人[4]提出了著名的拜占庭将军问题,同时也提出两种解决该问题的思路,分别是基于口述消息与基于签名消息的拜占庭容错(Byzantine Fault Tolerance,BFT)共识算法。但是,由于这两种方案的通信复杂度很高(分别为 O(n^m) 与 O(nm) ,n 为总节点数量,m 为拜占庭节点数量),导致算法的使用难度较高。1999 年,Castro 和 Liskov 提出了 PBFT[5](Practical Byzantine Fault Tolerance)共识算法,并在 2002 年[6]对该算法进行了改进。PBFT 建立在半异步的网络假设下,通过主从备份的设计方式,将 BFT 共识算法的通信复杂度降低到 O(n^2) 。在 PBFT 中,节点分为主节点与从节点两种角色,提案由主节点发起,并经由全体节点共识才会被提交。完整的一次共识需要经过 pre-prepare、prepare、commit 三个步骤,对于每个提案,在各个节点经历 pre-prepared、prepared、committed 状态后,才会被最终提交。如果将主从节点之间的一次信息交互称为一轮,PBFT 共识需要经过两轮交互:pre-prepare 与 prepare为第一轮交互,由主节点在 pre-prepare 阶段向从节点广播提案,并由从节点在 prepare阶段广播消息以对这个提案进行确认;commit 为第二轮交互,主从节点都会广播消息以确认该提案可以被提交。在每轮交互中,都需要满足 Quorum 决议的最小投票数要求,才表示完成当前轮次的交互。在这个过程中,PBFT 主要用于防止参与者对集群安全性与活性的破坏,即,保证各个正确的节点都能够获得一致的状态,并且能够持续不断的提供共识服务。不过,由于需要考虑拜占庭容错问题,PBFT 进行主节点切换的子协议非常繁琐。该子协议主要用于主节点异常时切换主节点,并且保证在有拜占庭行为的情况下,集群不会因主节点切换而丧失活性。对于该流程的设计,PBFT 的作者先后在1999 年[5]与 2002 年[6]给出两种解决思路,无论哪种思路,都需要收集大量历史共识消息日志,并通过复杂的信息交互与消息校验以最终安全完成主节点切换。发生主节点切换时,在最优情况下,算法完成切换所需要的通信复杂度为 O(n^3) 。由于主节点切换子协议的高度复杂,在实现 PBFT 共识算法时,该流程的正确实现也最具挑战性。2008 年,随着比特币的出现,各种基于区块链的证明类共识算法相继被提出。通过基于哈希运算构建的块链式数据结构,区块链系统可以通过“最长链原则”来确认系统状态是否一致,即,通过最后一个区块的一致性来确定系统整体状态是否相同,降低了证明成本。同时,密码学相关技术也在进步,更多的计算资源与更高效的密码算法为计算机技术进步铺开道路。聚合签名,是一种用来将任意多个签名聚合成一个签名的变体签名方案。对于 (k, n) -聚合签名方案,意味着在总数为 n的集群中,只要由 k个人完成签名,即将它们聚合称一个有效的聚合签名。2018 年,基于半异步网络假设与主从备份的设计方式,结合块链式结构思想,使用聚合签名技术,Yin 等人提出了链式BFT 共识算法 HotStuff[7]。相比较 PBFT,HotStuff 的最主要贡献在于实现了线性主节点切换,该算法中,提案需要经过三轮交互才能够被提交,虽然增加了少许通信延迟,但是这样的设计方式简化了 PBFT 中复杂的主节点切换流程,也更便于工业化实现。此外,HotStuff 在共识算法中加入了聚合签名,使得在每轮主从节点的交互中,从节点只需要向当前轮次主节点单播消息,由主节点收集投票并聚合成为一个决议证书(Quorum Certificate,QC),再将 QC 其广播给从节点,从节点从过对 QC 进行校验就可以对当前轮次的 Quorum 决议进行验证。通过这种机制,将 BFT 算法的通信复杂度进一步降低到 O(n) ,更低的通信复杂度也让 HotStuff 具有更好的扩展性。 在半异步 BFT 共识算法的研究过程中,研究人员也尝试采用可信执行环境(TEE)来解决拜占庭攻击,从而将 BFT 问题简化为 CFT 问题,代表性的算法有 MinBFT[8]、cheapBFT[9]、FastBFT[10]等。相比较未使用 TEE 的 BFT 共识算法,由于只需要考虑宕机问题,容错阈值也会更高。节点的拜占庭行为主要通过伪造错误的消息从而破坏系统的安全性,应用 TEE 的共识算法通常使用 TEE 辅助进行消息处理,获取可信的逻辑时钟,以排除拜占庭行为,使得节点只可能出现宕机这一种错误情况。在此类共识算法中,FastBFT 通过 TEE 辅助实现了独特的共识思路,作者提出了一种树形结构的通信模式,将节点通信复杂度降低到 O(1) ,算法的扩展性进一步得到了提升。另外,FastBFT通过 TEE 辅助实现了基于异或运算的秘密分发与聚合方案,相比较聚合签名来说,该秘密信息聚合的速度得到提升。不过,由于恶意节点能够故意引发树形通信的成员更替,FastBFT 的运行依赖于相对稳定的集群环境,且基于 TEE 的共识算法的正确性均依赖于可信硬件,应用场景存在限制。半异步的 BFT 共识算法普遍有让人满意的性能表现,在有高容错要求的联盟链当中,常使用此类共识算法以满足容错需求。不过,半异步 BFT 共识算法都需要在 GST 假设下才能满足活性要求,在更加复杂的网络环境中,例如跨大洲部署的集群网络,很难获得稳定的通信延迟,半异步 BFT 共识算法的可靠性也会随之下降。为了在更复杂网络环境中完成共识,需要设计异步的 BFT 共识算法。FLP 不可能定理提出,如果存在错误节点,就无法在异步环境下构建确定性共识。半异步共识算法从网络假设上进行取舍,此外,研究人员发现,若通过概率性确定的方式,也可以绕开 FLP 不可能定理从而在异步网络中完成共识。2016 年,Miller 等人[11]提出了首个实用的异步 BFT 共识算法 HoneyBadgerBFT,通过引入多轮随机数的方式,使得各个节点在重复多轮的共识之后,可以获得较高概率一致的共识结果。另外,HoenyBadgerBFT 作为一种异步共识算法,不存在特定的主节点,每次共识中,各个节点都可以发起提案,每轮共识所提交的内容,由最终被选中提案共同组成。为了提高共识效率,各个节点会选择部分交易打包为提案切片,防止出现重复交易。不过,由于异步 BFT 共识算法需要经过多轮重复的共识轮次后,才能获得能够被提交的结果,因此具有更高的延迟,在广域网中尤为明显,部分场景中共识延迟会达到 1 分钟以上。2020 年,Dumbo[12]对 HoenyBadgerBFT 存在的问题进行针对性优化,揭示其性能受限的根源是大量随机化子模块调用导致的运行时间增加,大幅降低了算法延迟,使得异步 BFT 算法有了更高的实用价值。参考^Fischer M J, Lynch N A, Paterson M S. Impossibility of distributed consensus with one faulty process[J]. Journal of the ACM (JACM), 1985, 32(2): 374-382.^Dwork C, Lynch N, Stockmeyer L. Consensus in the presence of partial synchrony[J]. Journal of the ACM (JACM), 1988, 35(2): 288-323.^Lamport L. A simple approach to specifying concurrent systems[J]. Communications of the ACM, 1989, 32(1): 32-45.^Shostak R, Pease M, Lamport L. The byzantine generals problem[J]. ACM Transactions on Programming Languages and Systems, 1982, 4(3): 382-401.^abCastro M, Liskov B, et al. Practical byzantine fault tolerance[C]//OSDI: vol. 99: 1999. 1999: 173-186.^abCastro M, Liskov B. Practical Byzantine fault tolerance and proactive recovery[J]. ACM Transactions on Computer Systems (TOCS), 2002, 20(4): 398-461.^Yin M, Malkhi D, Reiter M K, et al. HotStuff: BFT consensus with linearity and responsiveness[C]// Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing. 2019: 347-356.^Veronese G S, Correia M, Bessani A N, et al. Efficient byzantine fault-tolerance[J]. IEEE Transactions on Computers, 2011, 62(1): 16-30.^Kapitza R, Behl J, Cachin C, et al. CheapBFT: Resource-efficient Byzantine fault tolerance[C]// Proceedings of the 7th ACM european conference on Computer Systems. 2012: 295-308.^Liu J, Li W, Karame G O, et al. Scalable byzantine consensus via hardware-assisted secret sharing[J]. IEEE Transactions on Computers, 2018, 68(1): 139-151.^Miller A, Xia Y, Croman K, et al. The honey badger of BFT protocols[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016: 31-42.^Guo B, Lu Z, Tang Q, et al. Dumbo: Faster asynchronous bft protocols[C]//Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. 2020: 803-818.编辑于 2022-05-31 10:47区块链(Blockchain)共识机制拜占庭​赞同 26​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录DecentralizedNet区块链,Web3.0,NFT,去中心化互联网

区块链共识机制之拜占庭算法(BFT)及其发展-CSDN博客

>

区块链共识机制之拜占庭算法(BFT)及其发展-CSDN博客

区块链共识机制之拜占庭算法(BFT)及其发展

守护最好的发际线

已于 2022-08-19 18:27:36 修改

阅读量7.4k

收藏

14

点赞数

9

文章标签:

区块链

于 2020-06-01 08:24:47 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_45573920/article/details/106465449

版权

                              区块链共识机制之拜占庭算法(BFT)及其发展

一、什么是拜占庭将军问题

首先假设有10支军队,这10支军队在地域上分散驻扎,每支军队都由各自的将军指挥,将军们只能通过信使相互沟通。在观察敌情之后,他们必须制定一个共同的行动计划,如进攻或者撤退,只有当半数以上的将军共同发起进攻时才能取得胜利,其中一些将军可能是叛徒,负责消息传递的信使也可能是叛徒。

叛徒可能擅自变更进攻意向或者进攻时间,甚至是传递假的进攻消息,在这种状态下,10名将军们能否找到一种分布式的协作方式,来让你们能够远程、准确无误的协商,从而赢取战斗呢?通过这个比喻,表达了计算机网络中所存在的一致性问题。这个问题被称为拜占庭将军问题。

拜占庭将军问题是由莱斯利·兰波特等人在其论文《The Byzantine Generals Problem》中提出的分布式对等网络通信容错问题。,他证明了将军总数>3f,背叛者<=f时,忠诚的将军可以达到一致的命令,即背叛者小于忠诚者一半人数。算法复杂度为O( n ^ (f+1) )。面向拜占庭将军问题的容错算法,解决的是网络通信可靠,但节点可能故障情况下的一致性达成。但由于此这一算法在实际的分布式系统中几乎无法应用。

二、实用拜占庭容错算法(PBFT算法)

该算法是Miguel Castro和Barbara Liskov在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,算法的时间复杂度是O(n2),可以在实际系统应用中解决拜占庭容错问题。

PBFT 可以保证如果我有3f+1的节点的话,即使其中有 f个错误或者没有响应,我依然可以得出共识的正确结果。我们共用3f+1个节点进行投票,假设一共有n个节点,当其中f个节点未响应或出错时,只能从剩下的n-f个节点进行判断。其中最坏的结果是f个节点都没有出错,而n-f个之中有f个出错,那么就剩n-2f及f+1个正确节点,多数者胜出,还是会判断正确。

PBFT算法的基本流程主要有以下四步 :

1)客户端发送请求给主节点

2)主节点广播请求给其它节点,节点执行PBFT算法的三阶段共识流程。

3)节点处理完三阶段流程后,返回消息给客户端。

4)客户端收到来自 f+1 个节点的相同消息后,代表共识已经正确完成。

算法的核心三个阶段分别是pre-prepare阶段( 预准备阶段),prepare阶段( 准备阶段),commit 阶段(提交阶段)。图中的C代表客户端,0,1, 2, 3代表节点的编号,打叉的3代表可能是故障节点或者是问题节点,这里表现的行为就是对其它节点的请求无响应。0是主节点。

Pre-prepare阶段:节点收到pre-prepare消息后,会有两种选择,一种是接受,一 种是不接受。什么时候才不接受主节点发来的pre-prepare消息呢? -种典型的情况就是如果-一个节点接受到了一条pre-pre消息,消息里的v和n在之前收到里的消息是曾经出现过的,但是d和m却和之前的消息不一-致,或者请求编号不在高低水位之间,这时候就会拒绝请求。拒绝的逻辑就是主节点不会发送两条具有相同的v和n,但d和m却不同的消息。

Prepare阶段:节点同意请求后会向其它节点发送prepare消息。这里要注意一点,同一时刻不是只有一一个节点在进行这个过程,可能有n个节点也在进行这个过程。因此节点是有可能收到其它节点发送的prepare消息的。在一-定时间范围内,一个节点如果收到2f个不同节点的prepare消息,就代表prepare阶段已经完成。

Commit阶段:于是进入commit阶段。向其它节点广播commit消息,同理,这个过程可能是有n个节点也在进行的。因此可能会收到其它节点发过来的commit消息,当收到2f+1条commit消息后(包括该节点本身),代表大多数节点已经进入commit阶段,这一阶段已经达成共识,于是节点就会执行请求,写入数据。

三、高低水位解释

先介绍几个名词:

checkpoint,是当前节点处理的最新请求序号。比如一个节点正在共识的一个请求编号是1,那么对于这个节点,它的 checkpoint 就是1。

stable checkpoint,是已经共识完成的最大请求序号。也就是 f + 1个节点请求编号是10 ,那么stable checkpoint就是10。stable checkpoint为的是减少内存占用。当稳定是stable checkpoint是10 ,那么代表 10 号之前的记录已经共识过的了,可以删掉了。

stable checkpoint 可以设置一个范围,即水位,他的最小值叫下水位,最大值就高水位,他们的差 L 可以自定义。

图中A节点的当前请求编号是1039, 即checkpoint为1039,B节点的checkpoint为1133。当前系统stable checkpoint为1034。那么1034这个编号就是低水位,而高水位H=低水位h+L,其中L是可以设定的数值。因此图中系统的高水位为1034+100=1134。

举个例子:如果B当前的checkpoint已经为1134, 而A的checkpoint还是1039,假如有新请求给B处理时,B会选择等待,等到A节点也处理到和B差不多的请求编号时,比如A也处理到1112了,这时会有一个机制更新所有节点的stabel checkpoint,比如可以把stabel checkpoint设置成1100, 于是B又可以处理新的请求了,如果L保持100不变,这时的高水位就会变成1100+100=1200了。

四、拜占庭算法的发展(EPBFT算法的设想)

结合区块链系统实际应用情况以及PBFT算法的缺陷,提出以下几点主要可改进的方案:

1) 改变客户端单点提交请求到主节点方案,而是向全网广播附上签名的交易数据。这样的方式更适合 P2P 环境。

2) 增加主节点选举过程,在主节点宕机或者被从节点“推翻之后”,进行主节点选举,选举标准按照最长链原则,选取拥有处理过最大视图号与最大编号请求的节点为新的主节点。

3) 增加数据同步及验证过程,在主节点选举完成后进行数据同步,同步时从节点对同步数据进行验证,若验证通过,才正式承认新的主节点,开始下一轮共识过程。

4) 通过给节点设置一系列状态,在不同的状态节点拥有不同的行为,共识节点通过在不同状态之间的转换从而在集群中拥有完整生命周期,从节点与主节点通过心跳保持联系, 从而使集群中的节点可以动态地加入和退出,使得在节点变动时不必重启系统,增加系统可用性。节点的状态转换过程如下图:

优惠劵

守护最好的发际线

关注

关注

9

点赞

14

收藏

觉得还不错?

一键收藏

知道了

1

评论

区块链共识机制之拜占庭算法(BFT)及其发展

区块链共识机制之拜占庭算法(BFT)及其发展一、什么是拜占庭将军问题首先假设有10支军队,这10支军队在地域上分散驻扎,每支军队都由各自的将军指挥,将军们只能通过信使相互沟通。在观察敌情之后,...

复制链接

扫一扫

区块链四:共识机制——PBFT算法深入讲解

01-20

@TOC

背景介绍

共识机制是区块链一大知识领域, 作用就是维持分布式节点间的一致性,从而支撑去中心化中心,早在区块链之前,分布式系统就存在各种分布式的共识机制,共识机制不是区块链所发明,但区块链却对共识机制推广和进步有着重要影响。

共识算法分类

按应用场景分,共识算法可以分成两大类, 1、有坏人节点, 2、无坏人节点。

1、 有坏人节点,典型拜占庭问题,即系统中可能出现故意传送假结果的节点导致分布式系统结果错误,这种场景重点是在存在坏人的情况下能达成大家认可的一致结果。 其中BFT,PBFT, POW,POS都属于这类。

2、 无坏人几点,此类分布式共识算法,只需要保证各节点行动一致,并在部

拜占庭将军问题

cenpiao2365的博客

03-15

9755

一直觉得拜占庭将军问题特别有意思,这几天看了不少这方面的文章和博客,记录一下观察到的一些点和自己的想法,以备将来还可以进行复习,如果能帮到一些人那就更好啦。

1. 拜占庭将军问题概述

有一个国家叫拜占庭帝国,在攻击敌方城堡时,在地方城堡外驻扎了多个军队,每个军队都有各自的将军指挥,将军们只能通过信使进行沟通。在观察敌情之后,他们必须制定一个共同的计划,如进攻或者撤退,只有当半数以上的军队都发起进攻才能取得胜利。然而这其中的一些将军可能是叛徒,就会阻止将军们达成一致的行动计划;另外,传递消...

1 条评论

您还未登录,请先

登录

后发表或查看评论

quorum中的BFT

單鵬飛的博客

07-30

621

这块内容主要是一个拜占庭的过程。本文掐头去尾,只讲一下在 quorum 中是如何实现拜占庭的,也就是共识接口 Seal() 下向拜占庭发送了一个区块的请求事件开始。请求事件如下:

// post block into Istanbul engine

go sb.EventMux().Post(istanbul.RequestEvent{

Proposal: block,

})

前言

在说正文之...

无共识不区块链,一起了解拜占庭容错共识机制(BFT)

weixin_63706760的博客

06-16

521

区块链技术的核心组成部分之一是共识机制。共识机制确保在分布式网络中各个节点之间达成一致,以防止双重支付和恶意行为。在讨论共识机制时,拜占庭将军问题是一个经典的思想实验,它启发了对分布式系统中共识难题的探讨。本文将通过详细解释区块链的共识机制以及拜占庭将军问题,帮助读者更好地理解这些概念。

拜占庭问题

m0_54020412的博客

06-09

6042

该文章介绍了拜占庭问题的背景、原理、解决方式

区块链快速入门(四)——BFT(拜占庭容错)共识算法

天山老妖

03-02

6055

一、BFT简介

1、拜占庭将军问题简介

拜占庭将军问题(Byzantine Generals Problem)是Leslie Lamport(2013年的图灵奖得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

拜占庭将军问题简易的非正式描述如下:

拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必

拜占庭算法

m0_46127787的博客

06-14

2776

文章目录**拜占庭将军问题描述**解决方案口信消息型解决方案

拜占庭将军问题(The Byzantine Generals Problem)提供了对分布式共识问题的一种情景化描述, 由Leslie Lamport等人在1982年首次发表. 论文同时提供了两种解决拜占庭将军问题的算法:

口信消息型解决方案(A solution with oral message);

签名消息型解决方案(A solution with signed message).

本文之后将详细讲述这两种算法. 事实上, 拜占庭将军问题是

拜占庭算法的背景、原理

mlynb的博客

03-21

679

拜占庭算法的背景、原理

实用拜占庭容错(PBFT)算法详细介绍

Dawn的博客

03-18

4043

本文主要讲述实用拜占庭容错算法(PBFT)的算法部分。

共识机制--BFT

weixin_41303815的博客

12-13

1549

1 共识的目的是什么

共识是为了达成一致性的结果,无论结果是正确还是错误,要求最终全部节点达成一致性

为实现共识,就要求全部节点保持一致性和活性

一致性:如果一个诚实节点认为在区块链的某个高度h的区块是B,那么不会有任何其他诚实节点认为高度h的区块是 B’,B’不等于B

活性:系统可以持续对新区块达成共识,诚实节点可以确认新的区块

问题本质:

1 一致性问题本质是异步网络节点间通信(发送假消息和不发送消息)

2活性问题是节点间通信的时间延迟,达成一致性消息的节点的等待条件

2 拜占庭将军问题

15个区块链共识算法的开源实现【BFT/Raft/Paxos/Pow/PoS】

01-20

共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。 相关推荐:...

另一种BFT共识算法在区块链中的应用.pdf

08-15

#资源达人分享计划#

Redendant RBFT一种基于冗余方法的多实例化鲁棒BFT共识算法

06-11

拜占庭容错状态机复制(BFT)协议是一种复制协议,它容忍少量副本的任意故障。 但现有的BFT协议在故障发生时不能提供可接受的性能。 这是由于所有现有的针对高吞吐量的BFT协议都使用了一个称为主副本primary的特殊副本...

分布式环境Raft一致性共识算法解读

02-23

它与RBFT算法名称有点像,然而Raft算法里不能存在拜占庭节点,而RBFT则能容忍BFT节点的存在。Raft非常类似于paxos协议(参见我的这篇文章《paxos算法如何容错的–讲述五虎将的实践》),然而它比paxos协议好理解许多...

去中心化钱包应用:数字货币时代的自由与安全之选

最新发布

zhaohaojun136的博客

03-05

235

去中心化钱包应用是一种基于区块链技术的数字资产管理工具,它不同于传统的中心化钱包,不依赖于任何第三方机构进行资产托管和交易处理。2、功能拓展:将更多金融服务和应用场景整合到去中心化钱包应用中,如去中心化金融(DeFi)、非同质化商品(NFG)等,丰富用户的数字资产管理和投资选择。4、跨链互操作性:实现不同区块链网络之间的去中心化钱包互操作,打破数字货币的壁垒,推动整个数字货币市场的互联互通。4、促进数字货币普及:去中心化钱包应用的易用性和安全性,有助于降低数字货币的使用门槛,推动数字货币的普及和应用。

如何做代币分析:以 CRO 币为例

m0_60517769的博客

03-05

557

Cronos (CRO) 是 Crypto.com 创建的代币,用于其去中心化金融服务区块链和环境。

Covalent Network(CQT)将链下收入引入链上,在全新阶段开启 Token 回购

区块链蓝海

03-02

548

随着 Covalent Network(CQT)的扩大规模,目前已经为 Web3 领域中,超 2.4 亿个钱包以及成千上万的客户提供着丰富的服务,其对去中心化未来的承诺是显而易见的。随着代币迎来供应限制,以及 CQT 代币作为网络运营核心要素实用性的增强,CQT 代币持有者也正在进入一个新阶段,随着时间的推移,这也将进一步促进生态的去中心化特性。CQT 代币回购计划的推出,是其发展可持续收入驱动型生态系统的重要举措,同时也在即将于今年后期推出的查询节点进展上,向正确方向迈出的第一步。

【01】区块链科普100天-模块化区块链

总要有点可以骄傲的东西

02-29

636

这不仅减轻了主链的负担,也为开发者提供了更大的灵活性和创新空间。lgnis是基于Ardor公链的一个子链,母子链架构增强了网络性能,而且提供了更高的灵活性,这种架构不仅增强了网络的性能,而且提供了很高的灵活性,适合快速发展和部署DApp。1.层次架构:传统区块链将所有任务,如交易处理、共识机制、数据存储等集成在单一层中,模块化区块链将这些功能分割成独立的层,实现更高效的处理和升级。2.可拓展性:模块化区块链中,不同功能的隔离提高了整体网络的安全性,即使某一模块出现安全问题,也不会影响整个网络。

大摩突发:将推出比特币ETF

weixin_44672123的博客

03-04

745

作者:秦晋随着比特币ETF愈发火爆,华尔街另一家管理1.3万亿美元资产的大型经纪自营商「摩根士丹利」正在蠢蠢欲动,准备进军比特币ETF。据彭博社数据显示,目前10只比特币现货ETF在上周三创下单日交易新纪录,成交量超过76亿美元。前一天,贝莱德旗下的ETF IBIT涌入5.2亿美元,创下迄今为止最大单日流入量。彭博社ETF高级分析师 Eric Balchunas曾在推特上提到大型经纪自营商时表示,...

如何理解区块链的共识机制

05-18

区块链的共识机制是指在一个去中心化的网络中,所有参与者必须达成一致的规则以验证和确认新的交易和区块,从而保证网络的安全性和可靠性。这里的“一致”指的是网络中的所有节点都必须同意一个新交易或区块是否有效,并将其添加到区块链中。

共识机制是区块链技术的核心,它确保了区块链的去中心化和不可篡改性。不同的区块链项目采用了不同的共识机制,最常见的包括工作量证明(PoW)、权益证明(PoS)、共识拜占庭容错(BFT)等。每种共识机制都有其独特的优缺点,选择适合自己项目的共识机制是非常重要的。

总的来说,区块链的共识机制是通过网络中的节点之间的协作和竞争来保障区块链的安全性和稳定性,从而实现去中心化的数字交易和价值传输。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

守护最好的发际线

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

1

原创

58万+

周排名

38万+

总排名

7512

访问

等级

95

积分

3

粉丝

9

获赞

1

评论

13

收藏

私信

关注

热门文章

区块链共识机制之拜占庭算法(BFT)及其发展

7404

最新评论

区块链共识机制之拜占庭算法(BFT)及其发展

winterStreet:

沙发

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

2020年1篇

目录

目录

最新文章

2020年1篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

一文看懂区块链中的拜占庭容错(BFT)机制

区块链中的拜占庭容错(BFT)机制MENU知识库返回explainCKBot·September 13, 20232 mins一文看懂区块链中的拜占庭容错(BFT)机制区块链技术是数字交易领域的突破性创新,在过去十年中受到了越来越多的关注。区块链是一种去中心化的分布式账本,记录了计算机之间大量的交易,且能够防止已确认的交易被篡改。区块链技术已经将数字交易的透明度和安全性提升到了一个崭新的水平,因此成为加密货币和各种其他应用的热门选择。

区块链技术的一个核心组成部分是共识机制,这是区块链网络中的节点就分布式账本的当前状态达成一致的方法。共识机制对于维护区块链的完整性和安全性至关重要,因为共识机制确保了所有交易都被准确地记录,并且所有节点都同意这些交易的有效性。

拜占庭容错(BFT)是共识机制中的一个关键特性,它使区块链网络能够在某些节点失效或出现恶意行为时仍然能够正常运行。本文将深入探讨拜占庭容错机制的复杂性,其在区块链技术中的应用,以及在维护去中心化系统的可靠性和安全性方面的重要性,同时提供更多关于不同类型拜占庭容错机制的介绍。

BFT 共识机制详解

拜占庭容错本身并不是一种共识机制,而是共识机制可能具备的一种特性。它是一个系统抵御 "拜占庭故障" 的能力,即系统组件以任意方式发生故障的情况。这个术语源自拜占庭将军问题(Byzantine Generals' Problem),用来说明在分布式网络中达成共识所面临的挑战。在这个场景中,拜占庭军队的几个师在计划围攻的城市外扎营。将军们必须就作战计划达成一致,但只能通过信使进行交流,而信使可能会背叛他们。因此问题的核心是要找到一种算法,确保将军们无论叛徒的行为如何,都能达成一致。

BFT 共识机制的工作原理是要求网络中一定比例的节点在交易被添加到区块链之前达成共识。这确保了即使某些节点存在恶意行为或故障,也无法影响网络的整体共识。BFT 共识机制在区块链网络中尤为重要,因为它提供了高度的安全性和可靠性。

BFT 在区块链中的角色

在区块链网络中,每个节点都可以被视为一个 "将军",它们需要就交易的有效性和区块链的状态达成共识。共识机制,比如比特币的工作量证明(PoW)或以太坊的权益证明(PoS),是确保所有节点就分布式账本状态达成一致的算法。如果共识机制具有拜占庭容错的特性,那么即使某些节点出现故障或不诚实行为,区块链也能继续正常运行。

拜占庭故障是指网络中的一个(或多个)节点由于错误或故意作恶而做出错误操作,并开始向其他节点发送错误或误导性信息。这可能会破坏共识的过程,导致节点之间对区块链的状态产生分歧。

在比特币这样的 PoW 系统中,拜占庭容错是通过挖矿过程实现的。矿工必须解决复杂的数学问题,才能向区块链添加新的区块。这一过程确保了即使某些节点采取恶意行为或提供错误信息,它们也无法主宰网络,因为大多数算力(诚实节点)会超过它们。

在以太坊这样的 PoS 系统中,拜占庭容错以不同的方式实现。以太坊根据节点持有的代币数量和愿意 "质押" 的代币数量来分配出块权和选择验证者。如果验证者试图玩弄系统或采取恶意行为,他们就会失去其质押的代币。这种经济损失的风险抑制了不良行为,有助于拜占庭容错。

值得注意的是,虽然 PoW 和 PoS 可以表现出拜占庭容错能力,但它们并不像其他一些共识机制(如实用拜占庭容错算法 PBFT)那样天生就具有拜占庭容错能力。下面将介绍不同种类的 BFT 共识机制。

BFT 共识机制的类型

BFT 共识机制有多种类型,每种都有其独特的功能和优点。以下是三种最常见的类型:

实用拜占庭容错(PBFT)算法: PBFT 是一种共识算法,旨在处理系统中的拜占庭故障。它的工作原理是要求三分之二的节点在将交易添加到区块链之前先达成一致。PBFT 以其高效和低资源消耗而闻名,因此成为了许多区块链网络的首选。

联邦拜占庭协议(FBA): FBA 是一种 BFT 共识机制,它允许网络中的每个节点选择一组它信任的其他节点,当足够多的受信任节点就交易达成一致时,就能达成共识。

简化拜占庭容错(SBFT): SBFT 是 BFT 共识机制的简化版本,旨在提高效率和可扩展性。它的工作原理是选出一个领导节点,由该节点提议将一个区块添加到区块链中,然后由其他节点投票决定是否接受该区块。

BFT 共识机制的用例和应用

BFT 共识机制在区块链和加密货币领域有着广泛的应用。例如,比特币的工作量证明(PoW)和以太坊的权益证明(PoS)共识算法就包含了 BFT 的元素,以提高安全性和效率。

除了加密货币之外,BFT 共识机制也被应用于企业区块链解决方案中。例如,Hyperledger Fabric(一种用于开发应用程序和解决方案的区块链框架)使用 PBFT 的变体作为其共识机制。这使得它能够高效、安全地处理大量交易。

BFT 共识机制的优缺点

BFT 共识机制有几大优点。首先,它们具有很高的安全性,因为它们可以容忍一定数量的故障节点或恶意节点,而不会损害网络的完整性。其次,它们非常高效,不需要像工作量证明(PoW)等其他共识机制那样的高计算能力。这使得它们更加环保且更具成本效益。

不过,BFT 共识机制也有其缺点,其中之一便是可扩展性。随着网络中节点数量的增加,达成共识所需的通信量也会增加,这可能会降低网络的运行速度。此外,BFT 共识机制的实施可能比较复杂,需要节点之间高度信任。

关于 BFT 共识机制的常见误解

关于 BFT 共识机制,有几个常见的误解值得探讨。其中一个误解是 BFT 只适用于小型网络。虽然 BFT 共识机制确实比其他类型的共识机制更难以扩展,但这并不意味着它们不适合大型网络。通过正确的设计和实施,BFT 共识机制可以有效地用于大规模区块链网络。

另一个常见的误解是 BFT 本身速度很慢。虽然与其他一些共识机制相比,BFT 确实需要更多的节点间通信,但这并不一定会使其速度变慢。BFT 共识机制的速度取决于多种因素,包括网络规模、故障节点的数量以及 BFT 算法的具体实现。

BFT 共识机制的未来

展望未来,BFT 共识机制可能会在区块链技术的未来发展中发挥至关重要的作用。随着对安全、高效、可扩展的区块链解决方案的需求不断增长,对 BFT 等强大共识机制的需求也将不断增长。

目前,BFT 共识机制领域的研发工作主要集中在提高可扩展性、减少通信开销和增强安全性等方面。这些进步可能为从大规模金融系统到去中心化社交网络等更广泛的应用中使用 BFT 共识机制开辟新的可能性。

这些发展对区块链行业的潜在影响是巨大的。通过实现更安全、高效和可扩展的区块链网络,BFT 共识机制可以为区块链技术在各经济领域的广泛应用铺平道路。

总结

总之,拜占庭容错是区块链技术中的共识机制所具备的一个重要属性。它为去中心化数字交易提供了所需的安全性和可靠性。虽然实施拜占庭容错会带来挑战,但目前的研发工作正在不断改进这些系统,使其更具可扩展性和效率。随着区块链行业的不断发展,拜占庭容错技术无疑将在塑造区块链行业的未来中发挥至关重要的作用。Table of contents:最近的文章:What are Wrapped Tokens in Cryptocurrency?The Ultimate Guide to Bitcoin Ordinals and InscriptionsWhat are Airdrops in Cryptocurrency?分类:bitcoinaccount abstractionpopularconsensuseconomicsnodeeducationpownervosblockchainutxoscaling分享此文章:发现CKB挖矿钱包旅途WikiMedia Kit开发者文档Github区块浏览器生态系统CryptapeGodwokenNervina LabsTunnel Vision LabsAxon.bitMagickbase社区社区基金 DAONervos Talk ForumRFCs CKB 节点探针学习知识库MediumYoutube成为更大的一部分。订阅 Nervos 月度通讯,保持领先。©Nervos is an open-source project initiated by the Nervos Foundation. All Rights Reserv

HOME PAGE

PAGEHOME PAGE 菜单 zh   搜索 登錄 搜索 产品 解决方案 帮助 下载 应用过滤住宅 用途商业 用途城市 用途 机电自动平开门系统 液压自动平开门电机 自动平移门系统 车库门自动系统 卷帘窗自动化系统 自动感应门系统 卷帘门自动化系统 工业节板门和折叠门自动化系统 Road barriers 停车路桩 反恐护柱 远程管理和远程监控系统 - 互联互通 B-EBA - 扩展卡 徒手门禁控制装置 太阳能发电系统 控制面板 停车场管理系统 Remote controls for automatic gates 遥控接收器 自动闸门闪光灯 自动闸门和安全装置光电眼 自动闸门、通道和电气用户选择器 电锁,用于自动门 配件 符合性声明 用于住宅用途的自动化系统为您的住宅注入动力 找出适合您的解决方案 用于商业用途的自动化系统服务公司的技术。 找出适合您的解决方案 用于城市用途的自动化系统更智慧化和更人性化的城市。 找出适合您的解决方案 技术文件下载 在此版块中,你可以轻松下载所有Bft产品文件:安装手册,技术规格书,尺寸,及其他。 訪問 商业下载 要充分理解企业及其生产的基础价值观,有必要将之传达给客户。为此,在这一版块,你可以下载的各种商业文件及短片。 訪問 视频 视频是一种最快的浸入式方法,可了解在 Bft 工作对我们的意义以及我们每天设计和开发的产品的巨大潜力。 訪問 社会 与客户进行日常对话,有助于我们持续改善服务质量。与我们分享你的体验,你的疑虑,你的工作;我们将满足你的各种需求,并为你提供Bft的一切最新消息。 訪問 Bft 员工区 Bft 员工专用区域,您可以在此检索所有内部文档。 訪問 zh Bft Bft People Mission 公司简介 组织模式和道德准则 团队 认证 联系我们 加入我们 解决方案 商业 工具 销售一般条件 Highlights U-Link U-Control 技術 Design 升降路桩 我们的心声 社会 商业下载 视频 联系方式 公司分布 请求信息 更换国家/浏览语言 地理区域 Europe North America Central America South America Middle East Asian Pacific Africa 国家/地区 Armenia Pусский English Azerbaijan Pусский English België English Français Vlaams Deutsch Netherland Bosna i HercegovinaBulgariaČeská RepublikaCrna GoraCyprusDenmarkDeutschlandEesti Eesti Lietuviški Latviski Soome Pусский EspañaFranceGeorgia Pусский English GreeceHrvatska Hrvatski English HungaryIcelandIrelandItaliaLatvija Latviski Lietuviški Eesti Soome Pусский Lëtzebuerg English Français Netherland Liechtenstein Français English Lietuva Lietuviški Latviski Eesti Soome Pусский MaltaMoldova Pусский English Netherlands Netherland English Deutsch NorwayÖsterreichPolskaPortugalRomaniaShqipëriSlovenijaSuomi Soome Latviski Eesti Lietuviški Pусский SwedenSwiss Italiano Français Deutsch English UkraineUnited KingdomМакедонијаРоссияСрбијаInternational English Français Español Deutsch Português Canada English Français USAInternational English Français Español Deutsch Português AnguillaAntigua and BarbudaArubaBahamasBarbadosBelizeBermudaBES IslandCosta RicaCuraçaoDominican Republic Español English GrenadaGuadeloupe Français English Guatemala Español English Honduras Español English JamaicaMartinique Français English Mexico Español English MontserratNicaragua Español English Panama Español English Puerto Rico Español English Saint BarthélemySaint Kitts and NevisSaint LuciaSaint MartinSaint Vincent and the GrenadinesSan SalvadorTrinidad and TobagoTurks and Caicos IslandsUsa Virgin IslandsInternational English Français Español Deutsch Português Bolivia Español English Chile Español English Colombia Español English Ecuador Español English Paraguay Español English Perù Español English Uruguay Español English International English Français Español Deutsch Português Arab EmiratesBahrainJordanKuwaitLebanonOmanPalestineQatarSaudi ArabiaTürkiyeYemenישראל עברית English International English Français Español Deutsch Português AustraliaCambodiaIndiaIndonesiaKazakhstan English Pусский LaosMalaysiaMyanmarNepalNew ZealandPakistanPhilippinesSingaporeSri LankaTaiwanThailandUzbekistan English עברית Vietnam中国International English Français Español Deutsch Português Algeria Français English Côte d'Ivoire Français English EgyptGhana English Français Libya Français English Morocco Français English Nigeria English Français South Africa English Français Tunisia Français English International English Français Español Deutsch Português International English Français Español Deutsch Português 我们找不到该国家。请更改您的搜索词或尝试更改地区。 常用搜索 Vistapegasovia2203 有用链接 配件工具学院销售一般条件 你是新用户吗? 注册网站以获特许访问: 技术和商业 文档 产品和技术 视频产品目录 和 价格清单“BFT Academy” 专属培训课程 注册 你已经注册了吗? 用户名密码 返回 提醒我Fair R+T 2024We will be exhibiting at the R+T fair in Stuttgart from February 19-23, 2024. Come visit us at Hall8 booth B41了解更多自豪与发明—一个始自 1981 年的意大利成功故事。了解有关我们 Home、Building 和 Urban Access Automation 解决方案的详细信息。了解更多New "Bft In Touch" App The Bft catalogue on your phone!了解更多Bft Easy SetInstalling an automation for a swing panel gate has never been so easy!了解更多为您甄选NewsPhase Out DEIMOS BT A400 DEIMOS BT A 自动平移门系统 PILLAR B 275/600.6C L PILLAR B 275/600 停车路桩 FORB FORB 工业节板门和折叠门自动化系统 GIUNO ULTRA BT A20 GIUNO ULTRA BT A 液压自动平开门电机 PHOBOS AC A25 PHOBOS AC A 机电自动平开门系统 MITTO B RCB04 SUNRISE CUSTOMIZED MITTO Remote controls for automatic gates GIOTTO BT B ULTRA36 120V GIOTTO BT B ULTRA 36 Road barriers GIOTTO BT B ULTRA36 120V RAL GIOTTO BT B ULTRA 36 Road barriers GIOTTO BT B ULTRA36 230V GIOTTO BT B ULTRA 36 Road barriers GIOTTO BT B ULTRA36 230V RAL GIOTTO BT B ULTRA 36 Road barriers E5 BT A12 E5 BT A 机电自动平开门系统 E5 BT A18 E5 BT A 机电自动平开门系统 ARES ULTRA BT KIT A1500 ARES ULTRA BT A 自动平移门系统 BOTTICELLI BT A650 VERDE BOTTICELLI SMART BT A 车库门自动系统 BOTTICELLI SMART BT A850 120V BOTTICELLI SMART BT A 车库门自动系统 BOTTICELLI SMART BT A850 VERDE BOTTICELLI SMART BT A 车库门自动系统 BOTTICELLI SMART BT A1250 VERDE BOTTICELLI SMART BT A 车库门自动系统 BOTTICELLI BT A850 KIT BOTTICELLI SMART BT A 车库门自动系统 ARGO BT A 35 ARGO BT A 车库门自动系统 GIOTTO BT A ULTRA36 230V50 RAL PERS GIOTTO ULTRA 36 Road barriers EasyAXS B-EBA MOBILE + External Antenna + SIM KIT EasyAXS connectivity modules 远程管理和远程监控系统 - 互联互通 EasyAXS B-EBA Wifi EVO + External Antenna KIT EasyAXS connectivity modules 远程管理和远程监控系统 - 互联互通 EasyAXS B-EBA Wifi EVO EasyAXS connectivity modules 远程管理和远程监控系统 - 互联互通 U-SDK FULL 8 U-SDK 远程管理和远程监控系统 - 互联互通 U-SDK FULL 8 U-SDK 远程管理和远程监控系统 - 互联互通 U-SDK LIGHT 2 U-SDK 远程管理和远程监控系统 - 互联互通 BEBA Z-WAVE DRIVER B-EBA WI-FI B-EBA - 扩展卡 PHOBOS BT A25 PHOBOS BT A 机电自动平开门系统 PHOBOS BT A40 PHOBOS BT A 机电自动平开门系统 PHOBOS BT KIT A25 FRA PHOBOS BT A 机电自动平开门系统 PHOBOS BT KIT A40 FRA PHOBOS BT A 机电自动平开门系统 PHOBOS AC A25 PHOBOS AC A 机电自动平开门系统 PHOBOS AC A25 PHOBOS AC A 机电自动平开门系统 PHOBOS AC A25 120 V PHOBOS AC A 机电自动平开门系统 PHOBOS AC A50 PHOBOS AC A 机电自动平开门系统 PHOBOS AC A50 120V PHOBOS AC A 机电自动平开门系统 PHOBOS AC KIT A25 FRA PHOBOS AC A 机电自动平开门系统 PHOBOS AC KIT A50 FRA PHOBOS AC A 机电自动平开门系统 KUSTOS ULTRA BT A25 KUSTOS ULTRA BT A 机电自动平开门系统 KUSTOS ULTRA BT A40 KUSTOS ULTRA BT A 机电自动平开门系统 KUSTOS ULTRA BT KIT A25 FRA KUSTOS ULTRA BT A 机电自动平开门系统 KUSTOS ULTRA BT KIT A40 FRA KUSTOS ULTRA BT A 机电自动平开门系统 KUSTOS BT A25 KUSTOS BT A 机电自动平开门系统 KUSTOS BT A40 KUSTOS BT A 机电自动平开门系统 KUSTOS BT KIT A25 FRA KUSTOS BT A 机电自动平开门系统 KUSTOS BT KIT A40 FRA KUSTOS BT A 机电自动平开门系统 精品类别 停车场管理系统机电自动平开门系统液压自动平开门电机控制面板反恐护柱 查看所有产品 用于住宅用途的自动化系统 为您的住宅注入动力探索更多 用于商业用途的自动化系统 服务公司的技术。探索更多 用于城市用途的自动化系统 更智慧化和更人性化的城市。探索更多EBP A显示Mura A30显示Car park management systems显示 查看所有视频 工具 Bft为用户提供一切必要手段,帮助他们开展日常工作探索更多 U-Link U-Link 是一项创新,将产品转化为 Bft 的解决方案探索更多 Bft 家专注于当代人的需求并着眼于未来的公司。探索更多 招聘启事 Bft一直在发掘各个领域的新人才。探索更多 社交媒体 前往社交媒体 15/09/22 发现意外错误,请重新载入页面,或稍后再试。 没有找到您搜索的内容吗? 在产品、文件等等中搜索 Room 907-908, No.1699, Gubei Road Shanghai 201103 info@bft-china.cn T. +86(21)62809660 F. +86(21)62800270 地区分布 查看离您最近的Bft销售网点。 查看地图 P. IVA IT 00867710246 CAP. SOC. I.V. 600.000 €PrivacyCookiesSitemap本网站所有内容及照片均为BFT S.P.A.所有- 保留所有权利 / 版权所有 © BFT S.p.A.保留所有权利 Bft Bft PeopleMission公司简介组织模式和道德准则团队认证联系我们加入我们 解决方案 用于住宅用途的自动化系统Home Access Automation用于商业用途的自动化系统Building Access Automation用于城市用途的自动化系统Urban Access Automation 商业 工具销售一般条件 Highlights U-LinkU-Control技術Design升降路桩 我们的心声 社会商业下载视频 联系方式 公司分布请

简述目前相对成熟的区块链共识算法 | 登链社区 | 区块链技术社区

简述目前相对成熟的区块链共识算法 | 登链社区 | 区块链技术社区

文章

问答

讲堂

专栏

集市

更多

提问

发表文章

活动

文档

招聘

发现

Toggle navigation

首页 (current)

文章

问答

讲堂

专栏

活动

招聘

文档

集市

搜索

登录/注册

简述目前相对成熟的区块链共识算法

班长大人

更新于 2020-01-07 11:30

阅读 4974

共识算法是实现自主产权区块链的必不可少的关键环节,本文列出相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、 Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。

## 1、BFT共识开发库

BFT共识算法可以应对分布式系统中的拜占庭故障(Byzantine failures), 也就是可以在集群中部分节点存在恶意行为时依然保证整个系统的正常工作。

### 1.1 Tendermint Core

Tendermint Core 是一个拜占庭容错的中间件,可以安全的将任何语言开发的状态机 复制到集群中的其他机器上。Tendermint Core已经被用于Cosmos、币安链等多种公链 环境中。

![](https://img.learnblockchain.cn/2020/01/15783681785350.jpg)

欢迎阅读 [Tendermint Core文档](https://learnblockchain.cn/docs/tendermint/)。

* 开发语言:Go

* 下载地址:https://github.com/tendermint/tendermint

### 1.2 BFT-SMaRt

BFT-SMaRt是一个拜占庭容错的状态机复制实现,采用Java开发,目前由里斯本大学的 LsSIGE研究组负责维护。BFT-SMaRt要求JRE 1.8+。

![](https://img.learnblockchain.cn/2020/01/15783682034880.jpg)

BFT-SMaRt是最知名的Java版BFT实现,京东的区块链就是采用这个库解决共识问题。

* 开发语言:Java

* 下载地址:https://github.com/bft-smart/library

### 1.3 BABBLE

Babble是用于分布式应用的拜占庭共识平台,它可以让一组计算机表现的如同单一计算机。 Babble它使用P2P网络和BFT共识算法来保证一组彼此互联的计算机可以同样的顺序处理 同样的命令,也就是通常说的状态机复制。Babble可以让整个系统安全的应对部分节点的 故障或恶意行为。

![](https://img.learnblockchain.cn/2020/01/15783682262056.jpg)

Babble主要采用Go语言开发,但是其设计目标是可以集成进任何语言开发的应用,如上图 所示。

* 开发语言:Go

* 下载地址:https://github.com/mosaicnetworks/babble

### 1.4 Concord-BFT

concord-bft是vmware开源的一个通用的状态机复制库,可以应对集群中的恶意行为(拜占庭故障)。 concord-bft被设计用于分部署数据仓库复制的核心构建模块,特别适合作为许可制区块链 系统的基础。

![](https://img.learnblockchain.cn/2020/01/15783682950619.jpg)

concord-bft的实现基于这片论文中的算法:[SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains](https://arxiv.org/pdf/1804.01626.pdf)。

* 开发语言:Python

* 下载地址:https://github.com/vmware/concord-bft

### 1.5 HBBFT

HBBFT是论文[Honey Badger of BFT Protocols](https://eprint.iacr.org/2016/199.pdf)提出 的蜜獾BFT共识算法的Rust实现。HBBFT要求Rust 1.36+以及cargo,下面展示了其中的一个仿真 示例:

```

$ cargo run --example simulation --release

```

![](https://img.learnblockchain.cn/2020/01/15783683161156.jpg)

蜜獾(Honey Badger)共识算法可以让分布式异步环境中的节点交易达成一致,该算法不需要 主导节点,可以应对恶意节点的攻击,适合于去中心化数据库和区块链应用。

* 开发语言:Rust

* 下载地址:https://github.com/poanetwork/hbbft

### 1.6 libbft

libbft是一个轻量级的拜占庭容错库,用于neo区块链,采用C++开发,由neo研究院 维护,计划移植到Python、go等多种语言。

![](https://img.learnblockchain.cn/2020/01/15783683455133.jpg)

* 开发语言:C++

* 下载地址:https://github.com/NeoResearch/libbft

## 2、Raft共识开发库

Raft共识可以处理集群中部分节点的崩溃故障,但不能处理恶意节点行为, 因此通常用于节点身份已知的环境中,例如许可制区块链[Hyperledger Fabric](https://learnblockchain.cn/2019/06/28/fabric-first-network) 就使用了基于[Raft共识](https://learnblockchain.cn/2019/07/18/raft-protocol)的排序服务。

Raft官网列出了数十种各种语言开发的Raft共识算法实现,可以访问[这里](https://raft.github.io/)获取详细清单:

##3、Paxos共识

[Paxos共识算法](https://learnblockchain.cn/2019/03/22/easy_raft#3%20Paxos%20%E7%AE%97%E6%B3%95%E7%9A%84%E9%97%AE%E9%A2%98)是比较早期的分布式系统共识算法,特点是比较复杂, 目前用的已经不多。

![](https://img.learnblockchain.cn/2020/01/15783683654599.jpg)

### 3.1 Paxos-consensus

Paxos-consensus是一个Python实现的Paxos共识协议库,支持Python 2.6+。

* 开发语言:Python

* 下载地址:https://github.com/rathodsachin20/paxos-consensus

### 3.2 Pluggable Paxos

Pulggable Paxos是一个采用go语言实现的paxos共识协议库,采用可插拔设计。

* 开发语言:GO

* 下载地址:https://github.com/nvanbenschoten/paxos

### 3.3 Go Paxos

Go Paxos是另一个采用go语言实现的paxos共识协议库。

* 开发语言:Go

* 下载地址:https://github.com/kkdai/paxos

### 3.4 Java Paxos

Java Paxos是一个基本的Paxos共识协议库,采用java实现。

* 开发语言:Java

* 下载地址:https://github.com/mxm/paxos

## 4、PoW共识 - Proof of Work

[PoW,即工作量证明](https://learnblockchain.cn/2019/11/20/Consensus-POW),其核心设计思路是提出求一个复杂度计算值的运算过程。 用户通过进行一定的运算和消耗一定的时间来计算一个满意值并提供给服务方快速做验证, 以防止服务被攻击,数据资源被滥用,确保数据交易的公平和安全。这一概念最早在1993年 由Cynthia Dwork和Moni Naor的学术论文中提出,并在1999年由Markus Jakobsson与Ari Juels 对工作量证明这一词的进行了发表。到了2008年这工作量证明技术被运用在比特币区块链系统上, 到目前为此PoW技术在区块链中起着至关重要的作用,它也成为了加密货币中主流的共识机制之一, 像比特币,以太坊等都有使用。

### 4.1 proof-of-work

Proof-of-Work是一个JS实现的PoW共识库,使用SHA256和布隆过滤器。 下图显示了目标难度与解析时间的关系:

![](https://img.learnblockchain.cn/2020/01/15783683858622.jpg)

* 开发语言:JavaScript

* 下载地址:https://github.com/indutny/proof-of-work

### 4.2 pow.py

pow.py是PoW共识的Python实现。

* 开发语言:Python

* 下载地址:https://github.com/santisiri/proof-of-work

### 4.3 go-pow

go-pow是PoW共识的go语言版本的简单实现。

* 开发语言:Go

* 下载地址:https://github.com/bwesterb/go-pow

### 4.4 ProgPow

ProgPow实现了一种可以对抗ASIC的PoW算法。

* 开发语言:C++

* 下载地址:https://github.com/ifdefelse/ProgPOW

## 5、PoS共识 - Proof of Stake

### 5.1 ValidateProofOfStake

ValidateProofOfStake是一个纯粹的权益证明共识协议,它使用区块 验证人和铸币人惩罚机制,无需锁定状态。

* 开发语言:JavaScript

* 下载地址:https://github.com/fresheneesz/ValidatedProofOfStake

1、BFT共识开发库

BFT共识算法可以应对分布式系统中的拜占庭故障(Byzantine failures), 也就是可以在集群中部分节点存在恶意行为时依然保证整个系统的正常工作。

1.1 Tendermint Core

Tendermint Core 是一个拜占庭容错的中间件,可以安全的将任何语言开发的状态机 复制到集群中的其他机器上。Tendermint Core已经被用于Cosmos、币安链等多种公链 环境中。

欢迎阅读 Tendermint Core文档。

开发语言:Go

下载地址:https://github.com/tendermint/tendermint

1.2 BFT-SMaRt

BFT-SMaRt是一个拜占庭容错的状态机复制实现,采用Java开发,目前由里斯本大学的 LsSIGE研究组负责维护。BFT-SMaRt要求JRE 1.8+。

BFT-SMaRt是最知名的Java版BFT实现,京东的区块链就是采用这个库解决共识问题。

开发语言:Java

下载地址:https://github.com/bft-smart/library

1.3 BABBLE

Babble是用于分布式应用的拜占庭共识平台,它可以让一组计算机表现的如同单一计算机。 Babble它使用P2P网络和BFT共识算法来保证一组彼此互联的计算机可以同样的顺序处理 同样的命令,也就是通常说的状态机复制。Babble可以让整个系统安全的应对部分节点的 故障或恶意行为。

Babble主要采用Go语言开发,但是其设计目标是可以集成进任何语言开发的应用,如上图 所示。

开发语言:Go

下载地址:https://github.com/mosaicnetworks/babble

1.4 Concord-BFT

concord-bft是vmware开源的一个通用的状态机复制库,可以应对集群中的恶意行为(拜占庭故障)。 concord-bft被设计用于分部署数据仓库复制的核心构建模块,特别适合作为许可制区块链 系统的基础。

concord-bft的实现基于这片论文中的算法:SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains。

开发语言:Python

下载地址:https://github.com/vmware/concord-bft

1.5 HBBFT

HBBFT是论文Honey Badger of BFT Protocols提出 的蜜獾BFT共识算法的Rust实现。HBBFT要求Rust 1.36+以及cargo,下面展示了其中的一个仿真 示例:

$ cargo run --example simulation --release

蜜獾(Honey Badger)共识算法可以让分布式异步环境中的节点交易达成一致,该算法不需要 主导节点,可以应对恶意节点的攻击,适合于去中心化数据库和区块链应用。

开发语言:Rust

下载地址:https://github.com/poanetwork/hbbft

1.6 libbft

libbft是一个轻量级的拜占庭容错库,用于neo区块链,采用C++开发,由neo研究院 维护,计划移植到Python、go等多种语言。

开发语言:C++

下载地址:https://github.com/NeoResearch/libbft

2、Raft共识开发库

Raft共识可以处理集群中部分节点的崩溃故障,但不能处理恶意节点行为, 因此通常用于节点身份已知的环境中,例如许可制区块链Hyperledger Fabric 就使用了基于Raft共识的排序服务。

Raft官网列出了数十种各种语言开发的Raft共识算法实现,可以访问这里获取详细清单:

3、Paxos共识

Paxos共识算法是比较早期的分布式系统共识算法,特点是比较复杂, 目前用的已经不多。

3.1 Paxos-consensus

Paxos-consensus是一个Python实现的Paxos共识协议库,支持Python 2.6+。

开发语言:Python

下载地址:https://github.com/rathodsachin20/paxos-consensus

3.2 Pluggable Paxos

Pulggable Paxos是一个采用go语言实现的paxos共识协议库,采用可插拔设计。

开发语言:GO

下载地址:https://github.com/nvanbenschoten/paxos

3.3 Go Paxos

Go Paxos是另一个采用go语言实现的paxos共识协议库。

开发语言:Go

下载地址:https://github.com/kkdai/paxos

3.4 Java Paxos

Java Paxos是一个基本的Paxos共识协议库,采用java实现。

开发语言:Java

下载地址:https://github.com/mxm/paxos

4、PoW共识 - Proof of Work

PoW,即工作量证明,其核心设计思路是提出求一个复杂度计算值的运算过程。 用户通过进行一定的运算和消耗一定的时间来计算一个满意值并提供给服务方快速做验证, 以防止服务被攻击,数据资源被滥用,确保数据交易的公平和安全。这一概念最早在1993年 由Cynthia Dwork和Moni Naor的学术论文中提出,并在1999年由Markus Jakobsson与Ari Juels 对工作量证明这一词的进行了发表。到了2008年这工作量证明技术被运用在比特币区块链系统上, 到目前为此PoW技术在区块链中起着至关重要的作用,它也成为了加密货币中主流的共识机制之一, 像比特币,以太坊等都有使用。

4.1 proof-of-work

Proof-of-Work是一个JS实现的PoW共识库,使用SHA256和布隆过滤器。 下图显示了目标难度与解析时间的关系:

开发语言:JavaScript

下载地址:https://github.com/indutny/proof-of-work

4.2 pow.py

pow.py是PoW共识的Python实现。

开发语言:Python

下载地址:https://github.com/santisiri/proof-of-work

4.3 go-pow

go-pow是PoW共识的go语言版本的简单实现。

开发语言:Go

下载地址:https://github.com/bwesterb/go-pow

4.4 ProgPow

ProgPow实现了一种可以对抗ASIC的PoW算法。

开发语言:C++

下载地址:https://github.com/ifdefelse/ProgPOW

5、PoS共识 - Proof of Stake

5.1 ValidateProofOfStake

ValidateProofOfStake是一个纯粹的权益证明共识协议,它使用区块 验证人和铸币人惩罚机制,无需锁定状态。

开发语言:JavaScript

下载地址:https://github.com/fresheneesz/ValidatedProofOfStake

学分: 35

分类: 科普与研究

标签:

共识算法 

BFT 

Raft 

Paxos 

POW 

PoS 

Tendermint 

点赞 5

收藏 3

分享

Twitter分享

微信扫码分享

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

你可能感兴趣的文章

SharkTeam:Raft攻击事件原理分析

885 浏览

共识机制原理(三)—— 分布式一致性算法

495 浏览

初识pos

1057 浏览

以太坊2.0 共识算法

1028 浏览

vneus daemon代码解析

724 浏览

PoS 系列 #2-Epoch,Slot 与信标区块

1429 浏览

相关问题

大哥们好 新人路过 ETH的源码可以改下共识吗 会影响DAG调用吗 我想改回POW

2 回答

即将到来的以太坊主网支持轻节点切pos吗?

1 回答

关于ETH2.0、POS机制、Casper FFG等概念具体实现方面的问题

1 回答

阿波罗公链是pos算法公链吗

4 回答

以太坊怎么更改共识机制呢

4 回答

我想问问怎样在pycharm测试PBFT算法的性能(例如:吞吐量之类)

1 回答

0 条评论

请先 登录 后评论

班长大人

关注

贡献值: 83

学分: 115

江湖只有他的大名,没有他的介绍。

文章目录

关于

关于我们

社区公约

学分规则

Github

伙伴们

ChainTool

为区块链开发者准备的开源工具箱

合作

广告投放

发布课程

联系我们

友情链接

关注社区

Discord

Twitter

Youtube

B 站

公众号

关注不错过动态

微信群

加入技术圈子

©2024 登链社区 版权所有 |

Powered By Tipask3.5|

粤公网安备 44049102496617号

粤ICP备17140514号

粤B2-20230927

增值电信业务经营许可证

×

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

发给:

内容:

取消

发送

×

举报此文章

垃圾广告信息:

广告、推广、测试等内容

违规内容:

色情、暴力、血腥、敏感信息等内容

不友善内容:

人身攻击、挑衅辱骂、恶意行为

其他原因:

请补充说明

举报原因:

取消

举报

×

如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!

BFT-SMaRT共识算法 - 知乎

BFT-SMaRT共识算法 - 知乎首发于JD Chain学习探讨切换模式写文章登录/注册BFT-SMaRT共识算法David Zhaojust do it源码地址:https://github.com/blockchain-jd-com/bftsmart BFT-SMaRT是一个基于Java的开源库,为基于BFT的状态机复制算法提供了一套改善的解决方案;它实现了类似于PBFT的共识协议,但在无故障执行时具有更高的性能,且在拜占庭副本进行任意错误行为时能保证整体共识的正确性。另外BFT-SMaRt也是BFT类共识中第一个支持副本集合动态变更的库,用户可以根据自己的需要在不停机的情况下快速进行共识网络拓扑结构的更新。与PBFT不同,BFT-SmaRt库具有更好的模块化设计,实现了共识算法与状态机复制,状态传输,通信等模块的完全分离。BFT-SmaRt库还具有简单性,它把所有的复杂性都封装在简单的API中,程序员可以使用它来实现确定性的服务,客户端只需要使用简单的invoke方法即可向共识网络提交待共识的请求消息。常规的bft-smart共识算法如下图:JDChain在其基础上进行了局部优化,目前共识图如下:1) 广播:多个客户端向所有共识节点发起广播;2) 提议:通过Leader节点向其他节点发出提议(待排序消息);3) 回执:收到提议后向其它节点发送写消息;4) 预算:收到2f+1个写消息后,进行写账本预处理;5) 接受:至少2f+1个节点预处理结果一致,向其它节点广播接受提议的消息。6) 裁决:收到至少2f+1个节点的“接受提议”消息,则正式裁定此提议生效。7) 提交:将此提议写账本;8) 响应:将提议执行结果反馈给其对应的客户端(共识客户端)。编辑于 2020-10-26 15:52开源分布式计算JDChain​赞同 3​​3 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录JD Chain学习探讨JDChain非官方研