一种区块链的共识算法及系统技术方案

技术编号:25803139 阅读:26 留言:0更新日期:2020-09-29 18:37
本发明专利技术公开了一种区块链的共识方法及系统。所述方法包括步骤:在一个出块周期中,P1,接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;P2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;P3,计算得到状态根哈希值Rs;P4,计算得到交易根哈希值Rt;P5,生成区块并将所述区块广播给其他核心节点Node2~Noden进行验证;P6,接收其他核心节点Node2~Noden对所述区块的验证结果,若验证结果满足预设的共识条件,Node1将所述区块写入本地链。本发明专利技术通过以上步骤实现了各个核心节点状态在不同周期内的相互缠绕,进而确认了状态的相对顺序,这种各个节点同时挖矿的方式,有效地提高了区块链的吞吐量。

【技术实现步骤摘要】
一种区块链的共识算法及系统
本专利技术属于区块链
,更具体地,涉及一种区块链的共识算法及系统。
技术介绍
区块链是一种去中心化的分布式账本系统,可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链系统与传统中心化系统相比,具有公开透明、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。由于点对点网络下存在较高的网络延迟,各个节点在同一瞬间所观察到的事件先后顺序不可能完全一致。因此,区块链系统需要设计一种机制对在一定时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识算法”。共识算法在保障区块链系统的安全性中发挥了十分重要的作用。近年来,由于加密货币的高速发展,共识算法得到了广泛的重视,并在学术界和工业界有了大量的研究和应用的基础。在不同类型的区块链系统,不同的算法诸如拜占庭容错算法(PracticalByzantineFaultTolerance,简称PBFT)、工作量证明算法(ProofofWork,简称PoW)、权益证明算法(ProofofStake,简称PoS)、委托权益证明算法(DelegateProofofStake,简称DPoS)均得到有效的实施。但是这些共识算法面临效率低下的共同问题,这些问题严重阻碍了区块链应用的实际落地。例如,以PoW、PoS为代表的共识算法,所有节点的数据区块保持严格一致性,这就致使了节点在自己打包或收到区块后都等待最新的同步后才能广播给其他节点,无形中增加了网络带宽的压力,降低了传输效率,导致区块和交易的拥堵等一系列问题。这些低效的共识算法与实际应用中十万级、百万级TPS(TransactionsPerSecond,每秒处理的事务数量)相比,无法满足区块链技术的快速发展的需求。
技术实现思路
针对现有技术的至少一个缺陷或改进需求,本专利技术提供了一种区块链的共识方法及系统,可以有效提高区块链的TPS。为实现上述目的,按照本专利技术的第一方面,提供了一种区块链的共识方法,所述区块链包括n个核心节点,包括步骤:P1,接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;P2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;P3,根据其他核心节点Node2~Noden的状态值S2~Sn,使用MerkleTree算法计算得到状态根哈希值Rs;P4,根据所述交易数据及当前出块周期核心节点Node1的状态值S1,使用MerkleTree算法计算得到交易根哈希值Rt;P5,生成区块并将所述区块广播给其他核心节点Node2~Noden进行验证,所述区块中包括所述状态根哈希值Rs、交易根哈希值Rt、其他核心节点Node2~Noden的状态值S2~Sn、所述交易数据、以及核心节点Node1对这些信息的签名;P6,接收其他核心节点Node2~Noden对所述区块的验证结果,若所述验证结果满足预设的共识条件,则将所述区块写入核心节点Node1管理的区块链中。然后进入下一出块周期,重复执行步骤P1-P6。优选地,所述验证结果包括第一验证结果和第二验证结果;所述第一验证结果是验证其他核心节点Node2~Noden的状态值S2~Sn是否正确的验证结果;所述第二验证结果是根据所述交易根哈希值Rt和其他核心节点上存储的核心节点Node1的状态值来进行验证的验证结果。优选地,所述步骤P2具体是:读取上一出块周期核心节点Node1生成的交易根哈希值Rt',将交易根哈希值Rt'作为当前出块周期核心节点Node1的状态值S1;接收其他核心节点Node2~Noden广播的区块,对区块进行验证,若区块验证通过,则更新相应核心节点Noden的状态值Sn为Sn'。优选地,所述步骤P1包括:对所述交易数据的签名和重复性进行验证;若所述交易数据的签名正确且交易不重复,则将所述交易数据放入交易缓冲池,若所述交易缓冲池的交易数据满足预设条件,则触发执行步骤P2~P6;优选地,所述步骤P3和步骤P4中,分别采用MerkleTree算法计算得到状态根哈希值Rs和交易根哈希值Rt。优选地,所述步骤P5中,生成区块时核心节点Node1对该区块信息进行签名,则所述步骤P6中,所述验证结果包括第三验证结果,所述第三验证结果是表示该区块签名信息是否正确的验证信息。按照本专利技术的第二方面,提供了一种区块链的共识系统,所述共识系统包括n个核心节点,核心节点包括:交易数据接收模块,用于接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;状态维护模块,用于读取当前出块周期核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;状态处理模块,用于根据其他核心节点Node2~Noden的状态值S2~Sn,使用MerkleTree算法,计算得到状态根哈希值Rs;交易处理模块,用于根据所述交易数据及当前出块周期核心节点Node1的状态值S1,使用MerkleTree算法,计算得到交易根哈希值Rt;挖矿模块,用于生成区块,所述区块中包括所述交易根哈希值Rt、状态根哈希值Rs、其他核心节点Node2~Noden的状态值S2~Sn、所述交易数据以及核心节点Node1对这些信息的签名;广播模块,用于将所述区块广播给其他核心节点Node2~Noden进行验证;验证结果接收模块,用于接收其他核心节点Node2~Noden对所述区块的验证结果,若所述验证结果满足预设的共识条件,则将所述区块写入核心节点Node1管理的区块链中。总体而言,本专利技术与以往的各种共识算法相比,具有有益效果:(1)本专利技术不要求各个区块链节点之间的数据完全顺序一致,而是强调数据在一定的时间之后交易必然存在于各个区块链节点之上。各个节点之间独立维护自己各自的区块,免去了各节点之间区块同步带来的时间延迟,从而有效的提高区块链的整体TPS。(2)本专利技术特别适用于对数据时间顺序一致性要求较低的场景,例如电子发票系统、防伪溯源平台。这些场景中,它们对数据的强一致性要求并不高,但是却非常看重数据的公开透明、不可篡改、信息的隐私保护等问题,本专利技术很好地切合了这些需求。附图说明图1是本专利技术实施例区块链的网络结构图;图2是本专利技术实施例的节点转换示意图;图3为本专利技术实施例的根哈希值的生成方式示意图;图4为本专利技术实施例的交易打包顺序示意图;图5为本专利技术实施例的接收条件中状态验证示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限本文档来自技高网
...

【技术保护点】
1.一种区块链的共识方法,所述区块链包括n个核心节点,其特征在于,包括步骤:/nP1,接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;/nP2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;/nP3,根据其他核心节点Node2~Noden的状态值S2~Sn计算得到状态根哈希值Rs;/nP4,根据所述交易数据及当前出块周期核心节点Node1的状态值S1,计算得到交易根哈希值Rt;/nP5,生成区块,对所述区块进行签名并将所述区块广播给其他核心节点Node2~Noden进行验证,所述区块中包括所述状态根哈希值Rs、交易根哈希值Rt、其他核心节点Node2~Noden的状态值S2~Sn以及所述交易数据;/nP6,接收其他核心节点Node2~Noden对所述区块的验证结果,若所述验证结果满足预设的共识条件,则将所述区块写入核心节点Node1管理的本地区块链中,然后进入下一出块周期,重复步骤P1~P6。/n

【技术特征摘要】
1.一种区块链的共识方法,所述区块链包括n个核心节点,其特征在于,包括步骤:
P1,接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;
P2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;
P3,根据其他核心节点Node2~Noden的状态值S2~Sn计算得到状态根哈希值Rs;
P4,根据所述交易数据及当前出块周期核心节点Node1的状态值S1,计算得到交易根哈希值Rt;
P5,生成区块,对所述区块进行签名并将所述区块广播给其他核心节点Node2~Noden进行验证,所述区块中包括所述状态根哈希值Rs、交易根哈希值Rt、其他核心节点Node2~Noden的状态值S2~Sn以及所述交易数据;
P6,接收其他核心节点Node2~Noden对所述区块的验证结果,若所述验证结果满足预设的共识条件,则将所述区块写入核心节点Node1管理的本地区块链中,然后进入下一出块周期,重复步骤P1~P6。


2.如权利要求1所述的一种区块链的共识方法,其特征在于,所述验证结果包括
对其他核心节点Node2~Noden的状态值S2~Sn进行验证、根据所述交易根哈希值Rt和其他核心节点上存储的核心节点Node1的状态值进行验证以及对所述区块的签名进行验证的验证结果。


3.如权利要求1或2所述的一种区块链的共识方法,其特征在于,所述步骤P2具体是:
读取上一出块周期核心节点Node1生成的交易根哈希值Rt',将交易根哈希值Rt'作为当前出块周期核心节点Node1的状态值S1;
接收其他核心节点Node2~Noden广播的区块,对区块进行验证,若验证通过,则更新核心节点Node1中存储的其他核心节点Node2~Noden的状态值S2~Sn。


4.如权利要求1或2所述的一种区块链的共识方法,其特征在于,所述步骤P1包括:
对所述交易数据的签名和重复性进行验证;
若所述交易数据的签名正确且交易不重复,则将所述交易数据放入交易缓冲池,若所述交易缓冲池的交易数据满足预设条件,则触发执行步骤P2~P6。


5.如权利要求1或2所述的一种区块链的共识方法,其特征在于,所述步骤P3和步骤P4中,分别采用默克尔树计算得到状态根哈希值Rs和交易根哈希值Rt。

<...

【专利技术属性】
技术研发人员:陆学前闻泽中李汝佳程训鹤
申请(专利权)人:上海朝夕网络技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1