一种用于区块链的拜占庭容错算法

合集下载

区块链技术的多种共识算法比较

区块链技术的多种共识算法比较

区块链技术的多种共识算法比较随着区块链技术的发展,越来越多的人或组织加入到这个去中心化的数字世界里面,因此区块链的性能成为了十分重要的话题。

共识算法便是其中一项至关重要的技术。

共识算法决定了区块链网络中如何取得共识并且保证交易的安全性、可靠性以及有效性。

但是不同的共识算法对于不同的区块链场景都有着自己的优缺点。

下面我们将就主流的几种共识算法进行比较。

1. POW (Proof of Work)POW是最早被应用到比特币区块链中的共识算法,可以说是区块链技术的奠基之石,目前也是大多数公链的共识机制。

在POW算法的机制下,矿工需要通过耗费计算能力来完成区块头的计算来验证交易的合法性,而且只有完成计算后才能被添加到区块链网络中。

优点:在当前的区块链网络中,基于POW算法的比特币网络已经很稳定,防止了大规模的DDoS攻击和YY攻击,并且在算力大的场景下安全性更高。

同时,区块奖励和矿工的效益也可以促进了挖矿行为,从而保证了区块链的安全性。

缺点:基于POW算法的比特币网络的算力消耗非常高,挖矿行为会消耗大量的电能,在全球范围内是一个非常不可持续的模型。

2. POS (Proof of Stake)在POS算法的机制下,参与者需要获得一定数量的加密货币作为抵押品,帮助它们成为网络共享的验证器,而后的校验块就由这些验证器共同完成。

优点:基于POS算法的加密货币,相较于POW算法的货币,在消耗能源和算力上的成本更少,并且在能源效率、资源利用和公平性方面,都要优于POW算法。

缺点:因为POS算法的激励机制不同,没有机制鼓励参与者进行提供计算能力。

在大型POS网络出现时,大量的抵押资金暴露出的安全风险有可能导致不同程度的区块链贡献分布情况。

3. DPOS (Delegated Proof of Stake)DPOS算法通过交给股东的票来决定哪些验证器能够制作区块,票数最大的股东就会被制作区块。

DPOS也是EOS、比特股等公链所用的共识算法。

bft英语作文模板

bft英语作文模板

bft英语作文模板英文回答:A Comprehensive Guide to the Blockchain Fault Tolerance (BFT) Protocol: An Exhaustive Explanation。

Introduction:In the realm of distributed systems and blockchain technology, fault tolerance plays a pivotal role in ensuring the resilience and reliability of these systems. The Blockchain Fault Tolerance (BFT) protocol stands as a cornerstone of fault tolerance in blockchain networks, enabling them to withstand node failures and maintain data integrity. This comprehensive guide delves into the intricacies of BFT, shedding light on its mechanisms, benefits, and limitations.Understanding Fault Tolerance in Blockchain:Fault tolerance in blockchain networks refers to the ability of the system to continue operating correctly despite hardware, software, or network failures. In traditional centralized systems, a single point of failure can compromise the entire system. However, blockchain networks distribute data and computation across multiple nodes, making them more resilient to failures.The Role of the Blockchain Fault Tolerance (BFT) Protocol:The BFT protocol is a consensus algorithm specifically designed to provide fault tolerance in blockchain networks. It ensures that transactions are processed and committed even when a certain number of nodes fail. The keyprinciples underlying BFT include:Agreement: All non-faulty nodes must agree on the state of the blockchain.Validity: All transactions added to the blockchain must be valid according to the network's rules.Termination: The protocol must eventually reach a decision on the next block to be added to the chain.Liveness: The protocol must continue to make progress, even in the presence of failures.Types of BFT Protocols:There are various types of BFT protocols, each with its own advantages and drawbacks. Some common types include:PBFT (Practical Byzantine Fault Tolerance): A consensus protocol designed to tolerate up to f faulty nodes, where f is the maximum number of failures the system can withstand.SBFT (Simplified Byzantine Fault Tolerance): A simplified version of PBFT that reduces communication overhead.TBFT (Tendermint Byzantine Fault Tolerance): A variantof PBFT that utilizes a fast-consensus mechanism for efficient block processing.Benefits of Using BFT in Blockchain Networks:Increased Fault Tolerance: BFT protocols enhance the resilience of blockchain networks by preventing a single point of failure from disrupting the system.Data Integrity: BFT ensures that all transactions added to the blockchain are valid, preventing malicious actors from tampering with data.Improved Performance: Some BFT protocols, such as SBFT and TBFT, offer optimized performance compared totraditional PBFT, enabling faster transaction processing.Limitations of BFT:Increased Communication Overhead: BFT protocols typically involve significant communication between nodes, which can impact scalability.Potential for Network Forks: In the event of a network split, the BFT protocol may not be able to reach a consensus, resulting in a fork in the blockchain.Complexity: Implementing and maintaining BFT protocols can be complex, requiring expertise in distributed systems and consensus algorithms.Conclusion:The Blockchain Fault Tolerance (BFT) protocol is an essential component of blockchain technology, providing resilience and reliability to distributed systems. By understanding its mechanisms, benefits, and limitations, developers and users can make informed decisions in designing and deploying BFT-based blockchain networks. As the field of blockchain continues to evolve, advancements in BFT protocols will play a crucial role in enhancing the security and scalability of these systems.中文回答:区块链容错(BFT)协议全面指南,详尽解释。

区块链技术的共识算法介绍

区块链技术的共识算法介绍

区块链技术的共识算法介绍区块链技术是一种分布式的数据库技术,被广泛应用于加密货币以及其他领域。

共识算法是区块链技术中至关重要的一部分,它解决了在分布式环境下如何达成一致的问题。

本文将对区块链技术中常见的共识算法进行介绍,并分析它们的优缺点。

一、工作量证明(Proof of Work,PoW)工作量证明是比特币中使用的共识算法,也是目前最为广泛使用的共识算法之一。

在PoW中,网络参与者(矿工)通过解决数学难题来获得记账的权力。

解决难题需要消耗大量的计算能力,因此具有一定的安全性,使得恶意节点难以控制网络。

尽管PoW算法的安全性已经得到了验证,但它面临着能源消耗高、交易确认时间长等问题。

由于计算量大,导致对电力和硬件的需求很高,使得PoW算法在可持续性和环保性方面存在一定的挑战。

二、权益证明(Proof of Stake,PoS)权益证明是另一种常见的共识算法,相对于PoW来说,PoS更加环保和高效。

在PoS中,记账的权力是根据用户持有的货币数量来确定的。

持有的货币数量越多,就越有可能被选中作为记账节点。

这种算法机制可以减少能源消耗,并提高交易速度。

然而,PoS算法也存在一些问题。

首先,富豪获取更多的权益,导致权力集中化的可能性增加。

其次,在PoS中,如果节点持有的货币被黑客攻击并窃取,那么攻击者将获得更多的权力,从而破坏了区块链的安全性。

三、权益证明+权益共识(Delegated Proof of Stake,DPoS)DPoS是在PoS基础上发展起来的一种共识算法,通过代理选举的方式解决了PoS中权力集中化的问题。

在DPoS中,持币者可以投票选出受托人(Witness),他们负责验证和打包交易,并生成新的区块。

受托人的数量相对较少,从而确保了交易速度和网络安全性。

DPoS算法强调了自治和去中心化,但它也引发了一些争议。

例如,一些人认为DPoS算法在一定程度上牺牲了安全性和去中心化的原则。

此外,由于受托人的选举是根据持有的货币数量来进行的,这可能会导致权力集中的问题。

区块链共识算法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算法,具有更易理解、实现和调试的特点,适用于中等规模的系统。

一种区块链实用拜占庭容错算法的改进

一种区块链实用拜占庭容错算法的改进

227
Hale Waihona Puke 20世纪 80年代,LeslieLamport等通过拜占庭将 军问题提出了著名的拜占庭容错(ByzantineFaultTol erance,BFT)算法。与 Bitcoin的 “挖矿”工作量证明 POW 共识算法不同,BFT类协议通过各个节点相互发 送消息对提案和指令达成最终统一的共识结果,然而 正是由于这些特点造成了节点之间消息递归传递呈指 数级复杂度,加上节点的加入和退出这一步骤需要进 行特殊处理,BFT算法并不太具有实际操作性。虽然 这一算法存在很多缺点,但是它在解决拜占庭问题上 给出了一种新型的思路,不像 POW 那样消耗大量的公 共电力资源,为后来实用性拜占庭容错算法 PBFT的 出现作了铺垫。
Abstract Consensusalgorithm isanimportantpartoftheBlockchaincoretechnology.PracticalByzantinefault tolerance(PBFT) isaconsensusalgorithm widelyused consensusin alliancechain.However,duetoitshigh consumption,lowthroughputandhighlatency,theefficiencyofconsensusislow.Aimingattheseproblems,wepropose animprovedconsensusalgorithm basedonPBFT(IPBFT).Wereducedthenumberofserversexecutingrequestsby separatingnegotiationandexecutionnodes.Theselfcertificationmechanismwasaddedtotheconsistencyprotocol,and theheartbeatdetectionmechanism andthelongestchainelectionprinciplewereusedtoimprovetheprimarynode election. Experimentalsimulationsshow thatIPBFT hassignificantly improved performance in termsofenergy consumption,throughputandlatency,anditimprovestheefficiencyofthesystem.

一种结合bls签名的可拜占庭容错raft算法

一种结合bls签名的可拜占庭容错raft算法

第38卷第1期应用科学学报Vol.38No.1 2020年1月JOURNAL OF APPLIED SCIENCES一Electronics and Information Engineering Jan.2020DOI:10.3969力.issn.0255-8297.2020.01.007一种结合BLS签名的可拜占庭容错Raft算法王日宏i,张立锋1,周航1,徐泉清21.青岛理工大学信息与控制工程学院,山东青岛2665202.蚂蚁金服,杭州310012摘要:针对Raft算法中的拜占庭容错问题,提出结合BLS签名的拜占庭容错(Raft Byzantine fault tolerance,RBFT)算法.首先,利用BLS签名实现阈值签名,将投票过程转化为阈值签名过程,并将该过程与Raft算法的AppendEntries消息和RequestVote消息结合,尽可能地减弱容错过程对共识效率的影响;其次,通过增量哈希引入安全状态,保证了日志的不可篡改性;接着引入客户端对Leader节点的动态监控,以避免拜占庭Leader节点消极反馈的发生,进一步保证了算法的活性;最后,由本地多节点仿真实验表明:RBFT算法有效提升了数据吞吐量和可拓展性,并降低了交易延迟.关键词:Raft算法;BLS签名;拜占庭容错方法;安全状态中图分类号:TP301文章编号:0255-8297(2020)01-0093-12A Byzantine Fault Tolerance Raft Algorithm Combineswith BLS SignatureWANG Rihong1,ZHANG Lifeng1,ZHOU Hang1,XU Quanqing21.School of Information and Control Engineering,Qingdao University ofTechnology,Qingdao266520,Shandong Province,China2.Ant Financial Services Group,Hangzhou310012,ChinaAbstract:Aiming at the problem of Byzantine fault tolerance(BFT)in the Raft algo­rithm,a Raft Byzantine fault tolerance(RBFT)algorithm combined with BLS signature is proposed.First,it uses BLS signatures to implement threshold signatures,converts the voting process into a threshold signature process,and combines this process with the Raft algorithm's AppendEntries message and RequestVote message to minimize the im­pact of the fault-tolerant process on consensus efficiency.Second,it introduces a safe status through the incremental Hash value to ensure the log's tamper-resistibility.Then it provides dynamical monitoring on the leader node so as to avoid the possible negative feed­back of Byzantine leader and ensure the liveness of the algorithm.Finally,local multi-node simulation experiments show that the RBFT algorithm could improve the throughput and scalability,and reduce the latency of transactions effectively.Keywords:Raft algorithm,BLS signature,Byzantine fault tolerance(BFT)algorithm, safe status收稿日期:2019-11-01基金项目:山东省研究生教育创新计划项目基金(No.SDYY16023)资助通信作者:张立锋,硕士生,研究方向为区块链.E-mail:zhanglifeng1994@94应用科学学报第38卷近几年,作为比特币底层技术的区块链技术取得了重大发展耳所谓区块链,概括来说,就是去中心化的分布式记账本,综合了密码学、分布式原理等I2〕.它通过加密链式区块结构完成数据的存储,利用共识算法验证数据.区块链的产生对互联网乃至整个社会信用机制的建立带来了至关重要的影响.作为区块链核心部分的共识算法主要分为非拜占庭容错共识算法和拜占庭容错(Byzantine fault tolerance,BFT)共识算法.非拜占庭容错共识算法的发展由来已久,例如:文献[3]提出了一个在副本出现宕机情况下仍能正常工作的主从节点备份算法;文献[4]提出了Paxos算法;文献[5]在文献[4]的基础上提出了更容易理解的Raft算法,并凭借着高可拓展性和高吞吐量的优势在联盟链中得到了应用.文献[6]就在Quorum项目中将Raft算法作为可选算法.针对Raft算法无法实现拜占庭容错问题,提出了一种结合Raft算法优势的拜占庭容错算法.拜占庭容错算法可以分为3类:状态机拜占庭容错算法、带可信部件的拜占庭容错算法和针对区块链应用场景进行优化的拜占庭容错算法.状态机拜占庭系统的代表算法主要是PBFT算法及其改进算法,例如没有主节点排序(hybrid quorum,HQ)算法闪、基于投机的Zyzzyva算法冈、基于拜占庭锁的Zzyzx算法回、优化主节点切换代价的Spining算法]等.带有可信部件的拜占庭系统的代表算法主要包括A2MZ和MinBFTg等,其主要思路是利用可信硬件解决节点模棱两可问题,从而提升拜占庭容错能力,实现了 2/+1的拜占庭容错能力.针对区块链应用场景进行优化的拜占庭容错算法主要包括权益证明(proof of stake,PoS)与实用拜占庭容错(practical Byzantine fault tolerance,PBFT)结合的Tendermint[13〕、股份授权证明(delegated proof of stake,DPoS)网与PBFT结合的授权拜占庭容错(delegated Byzantine fault tolerance,dBFT).除此之外,在区块链中还有一类基于密码学的共识算法,如采用聚合签名降低通信复杂度的Byzcoin"]、采用可验证随机数的Algorand以及利用阈值签名实现异步共识的HoneyBadgerBFTM.通过对已有拜占庭容错算法进行分析,提出了结合BLS阈值签名]实现Raft算法的拜占庭容错算法(Raft Byzantine fault tolerance,RBFT).该算法实现了 Leader节点选举和日志复制过程的拜占庭容错,同时又保证了O(n)的算法复杂度,并且提出了安全状态,保证了算法的最终一致性型〕.针对Raft算法中的问题,RBFT算法进行了如下改进:1)将BLS签名与Raft算法中的消息传递过程结合,实现了Leader节点选举和日志复制过程的拜占庭容错.2)基于增量哈希提出了安全状态,能保证算法在每轮共识完成之后的一致性,进一步保证了算法的安全性.3)提出了结合Raft算法超时时间机制的选举方案,简化了传统BFT算法在视图切换过程中的算法复杂度.4)引入客户端监控机制以动态监测Leader节点运行情况,避免了拜占庭Leader节点消极反馈情况的发生.1背景知识1.1Raft算法Raft算法是一种非拜占庭容错的状态机副本复制算法同,分为3种状态模型:Follower, Candidate和Leader.状态转化模型如图1所示.第1期王日宏,等:一种结合BLS签名的可拜占庭容错Raft算法95图1Raft算法状态转移图Figure1State transition diagram of Raft algorithm在Raft共识算法中,消息包含RequestVote和AppendEntries两种消息.当Leader节点宕机时,Candidate在选举时通过RequestVote消息可以获取Follower的唯一投票.Leader节点通过AppendEntries消息发送日志条目到Follower节点,此时AppendEntries消息中包含心跳(heartbeat)信息,以证明Leader节点能正常运行.两种消息的存在,让Raft节点间在实现数据交流的同时完成日志复制的共识任务.1.2BLS签名BLS签名算法是基于双线性映射构造的一种加密算法[18〕,主要分为4部分:算法初始化、密钥生成、签名和验证.1)算法初始化G1和G2是阶为p的乘法群,生成元分别为g1和g2,e表示双线性映射:G1x G2-G t, H:{0,1}*—»G1表示安全哈希函数,(G1,G2,G t,e,g i,g2,p,h)表示公开参数.2)密钥生成选择一个随机数x G Z p,计算v=g X&G2,私钥为sk=x,公钥为pk=v.3)签名例如对接收到的消息M进行签名生成a=xH(M),H(M)表示对消息M进行哈希运算的过程.4)验证输入消息M和签名a,判断e(a,92)=e(H(M),v)是否成立.2算法设计2.1RBFT算法基础RBFT算法改进了Raft算法,利用BLS签名实现阈值签名,以阈值签名过程代替投票过程,实现了算法的拜占庭容错.RBFT算法同样保留了Raft算法中的3种节点状态:Leader>Follower和Candidate,并且针对日志结构也同样保留了任期(Term)、索引(Index)和命令(Command)的结构.为了实现拜占庭容错,RBFT算法包含AppendEntries 消息、RequestVote消息、Request消息和Update消息,其中Request消息受到了Omniledger 的启发[2°〕,用于监测Leader节点运行状况的Update消息.详细介绍如下:96应用科学学报第38卷1)AppendEntries消息AppendEntries消息包含Leader节点发往Follower节点的日志消息、Leader节点的心跳和Leader节点选举成功的证据.证据由Leader节点收集的签名组成,并通过结合BLS的阈值签名组合成一个可供其他节点验证的总签名A,该过程如图2所示.图2BLS阈值签名图Figure2BLS threshold signature diagram2)AppendEntriesResponse消息AppendEntriesResponse消息是在包含AppendEntries消息的基础上增加了可供其他节点验证的总签名A.3)RequestVote消息RequestVote消息包含Candidate节点的当前任期和用来验证当前任期的递增哈希值.递增哈希值由日志的任期、索引、命令三部分组成,可以通过索引号顺序计算命令的哈希得到.递增哈希值一方面可以验证当前Candidate节点提供的任期号是否正确,保证了RBFT算法Leader选取的最优性;另一方面可以防止拜占庭Leader节点对日志的舍弃或任意重排序.4)RequestVoteResponse消息RequestVoteResponse消息除了包含RequestVote消息之外,还包含可供其他节点验证的总签名A.5)Request消息Request消息包含客户端发送到Leader节点的消息和便于Follower节点验证客户端消息完整性和正确性的数字签名.数字签名的存在能有效防止Leader节点对消息的篡改.6)Update消息Update消息能增加客户端的干预,防止Leader节点对客户端的消极反馈而引发的算法活性问题I2。

区块链核心技术:拜占庭共识算法之PBFT

区块链核心技术:拜占庭共识算法之PBFT

区块链核⼼技术:拜占庭共识算法之PBFTPBFT是Practical Byzantine Fault Tolerance的缩写,意为实⽤拜占庭容错算法。

该算法是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不⾼的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应⽤中变得可⾏。

该论⽂发表在1999年的操作系统设计与实现国际会议上(OSDI99)。

没错,这个Loskov就是提出著名的⾥⽒替换原则(LSP)的⼈,2008年图灵奖得主。

摘要部分OSDI99这篇论⽂描述了⼀种副本复制(replication)算法解决拜占庭容错问题。

作者认为拜占庭容错算法将会变得更加重要,因为恶意攻击和软件错误的发⽣将会越来越多,并且导致失效的节点产⽣任意⾏为。

(拜占庭节点的任意⾏为有可能误导其他副本节点产⽣更⼤的危害,⽽不仅仅是宕机失去响应。

)⽽早期的拜占庭容错算法或者基于同步系统的假设,或者由于性能太低⽽不能在实际系统中运作。

这篇论⽂中描述的算法是实⽤的,因为该算法可以⼯作在异步环境中,并且通过优化在早期算法的基础上把响应性能提升了⼀个数量级以上。

作者使⽤这个算法实现了拜占庭容错的⽹络⽂件系统(NFS),性能测试证明了该系统仅⽐⽆副本复制的标准NFS慢了3%。

1.概要介绍第⼀段⼤⽚废话就是说明拜占庭算法越来越重要了,然后说这篇论⽂提出解决拜占庭容错的状态机副本复制(state machine replication)算法。

这个算法在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。

从Lamport教授在1982年提出拜占庭问题开始,已经有⼀⼤堆算法去解决拜占庭容错了。

但是⼀句话概括:这些算法都是狗屎!PBFT算法跟这些妖艳贱货完全不同,在只读操作中只使⽤1次消息往返(message round trip),在只写操作中只使⽤2次消息往返,并且在正常操作中使⽤了消息验证编码(Message Authentication Code,简称MAC),⽽造成妖艳贱货性能低下的公钥加密(public-key cryptography)只在发⽣失效的情况下使⽤。

基于拜占庭容错的区块链共识算法改进研究

基于拜占庭容错的区块链共识算法改进研究

基于拜占庭容错的区块链共识算法改进研究基于拜占庭容错的区块链共识算法改进研究随着区块链技术的发展,它已被广泛应用于金融、供应链管理、医疗保健等领域。

然而,区块链共识算法在实际应用中仍然面临一些挑战。

其中之一是解决拜占庭容错问题,即在分布式系统中存在恶意节点的情况下,如何保证分布式一致性与安全性。

拜占庭容错问题起源于拜占庭将军问题,该问题描述了一个将军团队需要就是否发起攻击达成一致意见的场景。

在分布式系统中,类似于拜占庭将军问题,节点之间发送消息来达成共识。

然而,恶意节点可能发送虚假消息,破坏共识过程,使系统无法达成一致。

为了解决拜占庭容错问题,许多区块链共识算法被提出。

现主要有PoW(Proof of Work)和PoS(Proof of Stake)算法。

PoW算法通过节点完成计算难题来获得记账权,这需要大量的计算资源和能源消耗。

PoS算法则通过节点拥有的货币数量来确定记账权,使得拥有较多货币的节点有更高的概率获得记账权。

然而,这些算法仍然存在一些问题,如性能低下、能源消耗大等。

为了改进现有的拜占庭容错区块链共识算法,研究人员提出了一系列新的算法。

其中之一是BFT(Byzantine Fault Tolerance)算法。

BFT算法基于传统拜占庭容错算法,确保在高度恶意节点攻击下仍能保持共识。

BFT算法通过利用系统中大多数诚实节点的特性,使得系统能够正确达成共识。

另一种改进算法是DPoS(Delegated Proof of Stake)。

DPoS算法利用了委托记账权的方式,通过选举产生一定数量的代理人节点(Witness),这些代理人节点负责验证和记账。

然而,由于代理人节点数量较少,使得系统更容易受到攻击。

为了解决这个问题,Hybrid DPoS算法被提出。

该算法结合了DPoS和BFT算法的优点,通过引入备选节点(Backup Witness)来增加共识过程的安全性。

除了BFT和DPoS,还有其他一些改进的拜占庭容错算法,如Senser图算法、HotStuff算法等。

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

一种用于区块链的拜占庭容错算法
张铮文
erik@
摘要
本文提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统。

我们假设在此网络中,消息可能会丢失、损坏、延迟、重复发送,并且接受的顺序与发送的顺序不一致。

此外,节点的行为可以是任意的:可以随时加入、退出网络,可以丢弃消息、伪造消息、停止工作等,还可能发生各种人为或非人为的故障。

我们的算法对由n个共识节点组成的共识系统,提供⌋的容错能力,这种容错能力同时包含安全性和可用性,并适用于任何网络环境。

f=⌊n−1
3
1.概述
区块链是一种去中心化的分布式账本系统,它可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。

区块链技术最早是由中本聪在一个密码学的邮件列表中提出的[1],也就是比特币。

此后,基于区块链技术的各种应用纷纷出现,比如基于区块链的电子现金系统、基于区块链的股权交易系统、基于区块链的智能合约系统等。

区块链系统与传统的中心化账本系统相比,具有完全公开、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。

然而,和任何分布式系统一样,区块链系统会面临网络延迟、传输错误、软件错误、安全漏洞、黑客入侵等问题。

此外,去中心化的特点决定了此系统的任何一个参与者都不能被信任,可能会出现恶意节点,以及因各方利益不一致导致的数据分歧等问题。

为了防范这些潜在的错误,区块链系统需要一个高效的共识机制来确保每一个节点都有一个
唯一公认的全局账本。

传统的针对某些特定问题的容错方法,并不能完全解决分布式系统以及区块链系统的容错问题,人们需要一种能够容忍任何种类错误的容错方案。

比特币采用工作量证明机制[1],非常巧妙地解决了这个问题。

但是代价也很明显,那就是巨额的电力成本和资源浪费。

此外,新的区块链必须寻找到一种与之不同的散列算法,用于避免来自比特币的算力攻击,如莱特币采用了与比特币的SHA256不同的SCRYPT算法。

拜占庭容错技术是一种解决分布式系统容错问题的通用方案[5]。

本文在Castro和Liskov 于1999年提出的Practical Byzantine Fault Tolerance(PBFT)[3]的基础上,提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统。

2.系统模型
区块链是一个分布式账本系统,参与者通过点对点网络连接,所有消息都通过广播的形式来发送。

系统中存在两种角色:普通节点和记账节点。

普通节点使用系统来进行转账、交易等操作,并接受账本中的数据;记账节点负责向全网提供记账服务,并维护全局账本。

我们假设在此网络中,消息可能会丢失、损坏、延迟、重复发送,并且接受的顺序与发送的顺序不一致。

此外,节点的行为可以是任意的:可以随时加入、退出网络,可以丢弃消息、伪造消息、停止工作等,还可能发生各种人为或非人为的故障。

我们采用密码学技术来保证消息传递的完整性和真实性,消息的发送者要对消息的散列值进
是节点i对消息m的电子签名,D(m)是消息m的散列值。

如果没有特行签名。

我们定义〈m〉σ
i
殊说明,本文所规定的签名都是对消息散列值的签名。

3.算法
我们的算法同时提供了安全性和可用性,只要参与共识的错误节点不超过⌊n−1
⌋,就能保证整
3
个系统正常运作,其中n=|R|表示参与共识的节点总数,R是共识节点的集合。

令f=⌊n−1
⌋,
3
则f就表示系统所容许的错误节点的最大数量。

由于实际上全局账本仅由记账节点来维护,因此系统中的普通节点不参与共识算法,但可以看到完整的共识过程。

参与共识的节点,需要维护一个状态表,用于记录当前的共识状态。

一次共识从开始到结束所使用的数据集合,称为视图。

如果在当前视图内无法达成共识,则需要更换视图。

我们为每一个视图分配一个编号v,编号从0开始,并逐渐递增,直到达成共识为止。

我们为每一个参与共识的节点分配一个编号,从0开始,最后一个节点的编号为n−1。

每一轮共识都需要有一个节点来充当议长,其它节点则为议员。

议长的编号p由如下的算法来决定:假设当前共识的区块高度为ℎ,则p=(ℎ−v)mod n,其中p的取值范围为0≤p<n。

每一次共识产生一个区块,并附有至少n−f个记账节点的签名。

一旦有新的区块产生,则立即开始新一轮的共识,同时重置v=0。

3.1.一般流程
假设系统要求每次产生区块的时间间隔为t,则在一切正常的情况下,算法按照以下流程执行:
1)任意节点向全网广播交易数据,并附上发送者的签名;
2)所有记账节点均独立监听全网的交易数据,并记录在内存;
3)议长在经过时间t后,发送〈PerpareRequest,ℎ,v,p,block,〈block〉σ
〉;
p
4)议员i在收到提案后,发送〈PerpareResponse,ℎ,v,i,〈block〉σ
〉;
i
5)任意节点在收到至少n−f个〈block〉σ
后,共识达成并发布完整的区块;
i
6)任意节点在收到完整区块后,将包含的交易从内存中删除,并开始下一轮共识;
该算法要求参与共识的节点中,至少有n−f个节点具有相同的初始状态:即对于所有的节
点i,具有相同的区块高度ℎ和视图编号v。

而这个要求很容易达成:通过区块同步来达到ℎ的一致性,通过视图更换来达到v的一致性。

区块同步不在本文讨论范畴,不再赘述。

视图更换的规则见下文3.2。

节点在监听全网交易以及在收到提案后,需要对交易进行合法性验证。

如果发现非法交易,则不能将其写入内存池;如果非法交易包含在提案中,则放弃本次共识并立即开始视图更换。

交易的验证流程如下:
1)交易的数据格式是否符合系统规则,如果不符合则判定为非法;
2)交易在区块链中是否已经存在,如果存在则判定为非法;
3)交易的所有合约脚本是否都正确执行,如果没有则判定为非法;
4)交易中有没有多重支付行为,如果有则判定为非法;
5)如果以上判定都不符合,则为合法交易;
3.2.视图更换
当节点i在经过2v+1⋅t的时间间隔后仍未达成共识,或接收到包含非法交易的提案后,开始进入视图更换流程:
1)令k=1,v k=v+k;
2)节点i发出视图更换请求〈CℎangeView,ℎ,v,i,v k〉;
3)任意节点收到至少n−f个来自不同i的相同v k后,视图更换达成,令v=v k并开始共识;
4)如果在经过2v k+1⋅t的时间间隔后,视图更换仍未达成,则k递增并回到第2)步;
随着k的增加,超时的等待时间也会呈指数级增加,可以避免频繁的视图更换操作,并使各节点尽快对v达成一致。

而在视图更换达成之前,原来的视图v依然有效,由此避免了因偶然性的网络延迟超时而导
致不必要的视图更换。

3.3.流程图
4.容错能力
我们的算法对由n个共识节点组成的共识系统,提供f=⌊n−1
⌋的容错能力,这种容错能力同
3
时包含安全性和可用性,并适用于任何网络环境。

由于节点的请求数据包含发送者的签名,恶意的记账节点无法伪造请求,它只能试图将系统
的状态回退到过去,从而使系统发生“分叉”。

我们假设系统所在的网络环境,恰好将所有共识节点分割成3个部分,即:R=R1∪R2∪F,且R1∩R2=∅,R1∩F=∅,R2∩F=∅。

假设R1和R2都由诚实的记账节点组成,且已形成
网络孤岛,各自只能与自己所在集合内的节点通讯;F全部都是恶意记账节点且已经合谋,可以统一行动;此外,F的网络条件允许它们和任意节点进行通讯,包括R1和R2。

如果F想要使系统发生“分叉”,只需与R1达成共识并发布区块,并在不通知R2的情况下与
之达成第二次共识,“撤销”与R1的共识。

若想满足这个条件,需满足:|R1|+|F|≥n−f,且|R2|+|F|≥n−f。

在最坏的情况下,|F|=f,即恶意节点的数量达到系统所能容忍的最大值,则上述关系变为:|R1|≥n−2f,
且|R2|≥n−2f。

两式相加:|R1|+|R2|≥2n−4f,化简后:n≤3f。

已知f=⌊n−1
⌋,与上
3
式矛盾,故可证明系统在容错范围内无法被分叉。

5.参考文献
[1]Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[J]. 2008.
[2]Lamport L, Shostak R, Pease M. The Byzantine generals problem[J]. ACM
Transactions on Programming Languages and Systems (TOPLAS), 1982, 4(3): 382-401.
[3]Castro M, Liskov B. Practical Byzantine fault tolerance[C]//OSDI. 1999, 99: 173-
186.
[4]Bracha G, Toueg S. Asynchronous consensus and broadcast protocols[J]. Journal
of the ACM (JACM), 1985, 32(4): 824-840.
[5]范捷, 易乐天, 舒继武. 拜占庭系统技术研究综述[J]. 软件学报, 2013, 6: 012.。

相关文档
最新文档