技术领域
[0001] 本说明书涉及计算机软件技术领域,尤其涉及一种基于Paxos共识的区块链共识方法、装置和电子设备。
相关背景技术
[0002] 区块链作为分布式系统的典型代表,使用Paxos作为共识算法更适合在私有链中。经典Paxos算法的Basic‑paxos算法,基本是用于理论研究,虽然安全性较高但是效率较低。
实用的Multi‑paxos算法在Basic‑paxos的二阶段上引入了一个领导者Leader机制,看起来是仅有一阶段的算法,可以用于生产环境的分布式系统的节点共识。如何确保共识安全的前提下,提高共识效率是需要解决的问题。
具体实施方式
[0024] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0025] 关键术语
[0026] 区块链技术:是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有不可伪造、全程留痕、可以追溯、公开透明、集体维护”等特征。基于这些特征,区块链技术奠定了坚实的信任基础,创造了可靠的合作机制,具有广阔的运用前景。按照准入机制分类,区块链分为公有链、联盟链和私有链。
[0027] 区块链共识算法:共识机制是特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。共识算法是实现共识机制的方法,目前常见的有PoW,PoS,DPoS,PBFT,Paxos,Raft等,主流共识算法可大致分为三类:挑战证明、权益证明、协商证明。脱离应用场景谈算法是没意义的,每一种算法都有各自适用的场景,到底选择哪个取决于实际环境的网络和数据。通常PoW和PoS是公有链常用的共识算法,而PBFT和Raft是联盟链和私有链中常用的共识算法,在可信环境使用Paxos或Raft。
[0028] Paxos共识算法:是Leslie Lamport提出的,最初是为了解决ECHO的容错文件系统问题,是一个在分布式系统上应用广泛的算法。区块链作为分布式系统的典型代表,使用Paxos作共识算法。该算法出现在拜占庭算法后面,拜占庭算法适合在联盟链中使用,而Paxos算法适合在私有链中。在Paxos算法中,有4种角色:提议者Proposer、决策者Acceptor、产生议题者Client、最终学习决策者Leaner。实际Paxos算法本身只描述了一个提案的达成,实现者可以根据需要来实现多个连续的提案达成,Paxos工程实现的难度比较,因此产生了Paxos的衍生算法Zab和Raft等。
[0029] Basic‑paxos算法:Basic‑paxos处理共识过程分为两个阶段:一是准备阶段,提议者提交一个序号,执行模拟提交,获取系统中每个节点是否接受的该操作,统计结果。赞同票比例大于50%,就通过进入提交阶段;否则这个提交就失败了,接收提案的节点负责验证该提案的有效性,同时只接受最新提案,发送接受的结果给提交者。二是提交阶段,提议者执行提交,要求接受提案的节点接受收它们之前承诺接受的数据。如果没有错误,那么这个新建议将被所有其他节点接受,那么Paxos过程就完成了。如果失败了,Paxos没有达成共识,就不能进行下一次的写操作了,paxos还是保持了一致性。
[0030] Multiple‑paxos算法:Multi‑paxos是在Basic‑paxos的二阶段上引入了一个机制,看起来像一阶段一样,其思路是:首先要运行一次完整的Paxos算法选举出领导者leader,由领导者leader处理所有的读写请求,然后省略掉准备prepare过程。
[0031] 下面通过具体的实例对本说明书所涉及的一种基于Paxos共识的区块链共识方案进行详述。
[0032] 实施例一
[0033] 为解决区块链共识过程中,实现在保证共识安全性情况下保证共识效率的目标,本实施例提供一种基于Paxos共识的区块链共识方法,参照图1所示为本实施例步骤。首先需要说明的是,确认区块block的原理是:区块链的block高度是连续递增的,即区块链的共识节点只有在确认了高度H的区块后,才能进行H+1高度区块的共识,而且共识节点同时只确认一个高度的区块,因此避免了多个提案冲突的可能。其次需要说明的是,需在Paxos算法中引入领导者leader,由于原Paxos算法的领导者Leader的确认需要候选者Candidate投票选举,而区块链共识节点列表基本记录在链上,其可以通过智能合约获取到,所以每个共识节点都可以通过读取链上记录,因此,可以很方便得知高度H的领导者Leader是哪个节点。当共识节点发生变更时,也可以直接读取区块链智能合约的方式获取记录,即可以通过上面的方法方便的获取新的共识节点组的领导者Leader。还需要说明的是,在高度H的区块进行共识的时候,可以设置共识轮数,例如将初次设为第0轮,如果第0轮没有达成共识,则递增轮数设为M,那么高度H,轮数M的领导者Leader的节点需要可以使用递增轮数M、高度H和共识节点个数计算得出。
[0034] 首先,需要从区块链获取共识节点信息。可选地,一种实施方式中,区块链的共识节点信息存储于智能合约中,可以通过调用智能合约得到共识节点列表信息。例如,获取到的区块链共识节点为C0、C1、C2,共3个共识节点。获取共识节点信息之后包括:
[0035] 步骤101:选举作为Paxos共识领导者的第一共识节点。
[0036] 具体地,选举作为Paxos共识领导者的共识节点,包括:根据共识节点个数N和所述区块高度H和当前共识轮次数M,按照(H+M)mod计算得到共识节点列表序号。例如,某高度H的区块,在进行第0轮共识时,其共识节点列表序号为CHmod3。可假定,经过计算得到的第0轮共识时共识节点为C0,即第一共识节点。
[0037] 步骤102:由所述第一共识节点执行Multi‑paxos共识算法,当所述区块完成共识,则所述区块高度加1。
[0038] 执行所述Multi‑paxos共识算法的过程如图2所示,包括:
[0039] 步骤121:将所述第一共识节点产生的提案向其他共识节点进行广播。
[0040] 步骤122:所述其他共识节点对所述提案进行共识表决。
[0041] 步骤123:若所述第一共识节点收到所述区块链半数或以上共识节点发送的接收表决,则可确认当前高度的所述区块;否则选举出下一轮次作为Paxos共识领导者的所述第二共识节点。
[0042] 步骤103:当所述第一共识节点未能对区块完成共识则进入下一轮,由选举出的作为Paxos共识领导者的第二共识节点执行Basic‑paxos共识算法。
[0043] 具体地,某高度H的区块,在进行第1轮共识时,其共识节点列表序号为CH+1mod3。可假定,经过计算得到的第1轮共识时共识节点为C1,即第二共识节点。
[0044] 执行所述Basic‑paxos共识算法的过程如图3所示,包括:
[0045] 步骤131:所述第二共识节点广播Prepare消息询问是否有尚未提交的区块;
[0046] 步骤132:若所述第二共识节点收到前一轮次尚未提交的提案,则将所述区块作为本轮次提案,执行所述Multi‑paxos共识算法;
[0047] 步骤133:若所述第二共识节点未收到前一轮次尚未提交的提案,则从所述第二共识节点产生区块作为本轮次提案,执行所述Multi‑paxos共识算法。
[0048] 实施例二
[0049] 图4为本说明书的一个实施例提供的一种基于Paxos共识的区块链共识装置400的结构示意图。请参考图4,在一种实施方式中基于Paxos共识的区块链共识装置包括:
[0050] Paxos共识领导者选举模块401,用于根据共识节点个数N和所述区块高度H和当前共识轮次数M选举作为Paxos共识领导者的共识节点。
[0051] 可选地,选举作为Paxos共识领导者的共识节点,包括:根据共识节点个数N和所述区块高度H和当前共识轮次数M,按照(H+M)modN计算得到共识节点列表序号。
[0052] Multi‑paxos共识算法执行模块402,用于第一共识节点将区块提案提交区块链共识节点进行共识决策。
[0053] 可选地,所述Multi‑paxos共识算法执行模块的工作过程包括:
[0054] 将所述第一共识节点产生的提案向其他共识节点进行广播。
[0055] 所述其他共识节点对所述提案进行共识表决。
[0056] 若所述第一共识节点收到所述区块链半数或以上共识节点发送的接收表决,则可确认当前高度的所述区块;否则选举出下一轮次作为Paxos共识领导者的所述第二共识节点。
[0057] Basic‑paxos共识算法执行模块403,用于当所述第一共识节点未能对区块完成共识则进入下一轮次,由选举出的作为Paxos共识领导者的第二共识节点执行Basic‑paxos共识算法。
[0058] 可选地,所述Basic‑paxos共识算法执行模块的工作过程包括:
[0059] 所述第二共识节点广播Prepare消息询问是否有尚未提交的区块;
[0060] 若所述第二共识节点收到前一轮次尚未提交的提案,则将所述区块作为本轮次提案,执行所述Multi‑paxos共识算法;
[0061] 若所述第二共识节点未收到前一轮次尚未提交的提案,则从所述第二共识节点产生区块作为本轮次提案,执行所述Multi‑paxos共识算法。
[0062] 应理解,本说明书实施例的基于Paxos共识的区块链共识装置还可执行图1至图3中基于Paxos共识的区块链共识装置(或设备)执行的方法,并实现基于Paxos共识的区块链共识装置(或设备)在图1至图3所示实施例的功能,在此不再赘述。
[0063] 实施例三
[0064] 图5是本说明书的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random‑Access Memory,RAM),也可能还包括非易失性存储器(non‑volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0065] 处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0066] 存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0067] 处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
[0068] 在获取区块链共识节点信息后,包括:
[0069] 选举作为Paxos共识领导者的第一共识节点;
[0070] 由所述第一共识节点执行Multi‑paxos共识算法,当所述区块完成共识,则所述区块高度加1;
[0071] 当所述第一共识节点未能对区块完成共识则进入下一轮,由选举出的作为Paxos共识领导者的第二共识节点执行Basic‑paxos共识算法。
[0072] 上述如本说明书图1至图3所示实施例揭示的一种基于Paxos共识的区块链共识方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0073] 当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0074] 实施例四
[0075] 本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1至图3所示实施例的方法,并具体用于执行以下方法:
[0076] 在获取区块链共识节点信息后,包括:
[0077] 选举作为Paxos共识领导者的第一共识节点;
[0078] 由所述第一共识节点执行Multi‑paxos共识算法,当所述区块完成共识,则所述区块高度加1;
[0079] 当所述第一共识节点未能对区块完成共识则进入下一轮,由选举出的作为Paxos共识领导者的第二共识节点执行Basic‑paxos共识算法。
[0080] 总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
[0081] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0082] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0083] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0084] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。