CN111723406A - 一种区块链的共识算法及*** - Google Patents
一种区块链的共识算法及*** Download PDFInfo
- Publication number
- CN111723406A CN111723406A CN202010514465.4A CN202010514465A CN111723406A CN 111723406 A CN111723406 A CN 111723406A CN 202010514465 A CN202010514465 A CN 202010514465A CN 111723406 A CN111723406 A CN 111723406A
- Authority
- CN
- China
- Prior art keywords
- node
- core
- state
- transaction
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链的共识方法及***。所述方法包括步骤:在一个出块周期中,P1,接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;P2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;P3,计算得到状态根哈希值Rs;P4,计算得到交易根哈希值Rt;P5,生成区块并将所述区块广播给其他核心节点Node2~Noden进行验证;P6,接收其他核心节点Node2~Noden对所述区块的验证结果,若验证结果满足预设的共识条件,Node1将所述区块写入本地链。本发明通过以上步骤实现了各个核心节点状态在不同周期内的相互缠绕,进而确认了状态的相对顺序,这种各个节点同时挖矿的方式,有效地提高了区块链的吞吐量。
Description
技术领域
本发明属于区块链技术领域,更具体地,涉及一种区块链的共识算法及***。
背景技术
区块链是一种去中心化的分布式账本***,可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链***与传统中心化***相比,具有公开透明、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。由于点对点网络下存在较高的网络延迟,各个节点在同一瞬间所观察到的事件先后顺序不可能完全一致。因此,区块链***需要设计一种机制对在一定时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识算法”。
共识算法在保障区块链***的安全性中发挥了十分重要的作用。近年来,由于加密货币的高速发展,共识算法得到了广泛的重视,并在学术界和工业界有了大量的研究和应用的基础。在不同类型的区块链***,不同的算法诸如拜占庭容错算法(PracticalByzantine Fault Tolerance,简称PBFT)、工作量证明算法(Proof of Work,简称PoW)、权益证明算法(Proof of Stake,简称PoS)、委托权益证明算法(Delegate Proof of Stake,简称DPoS)均得到有效的实施。但是这些共识算法面临效率低下的共同问题,这些问题严重阻碍了区块链应用的实际落地。例如,以PoW、PoS为代表的共识算法,所有节点的数据区块保持严格一致性,这就致使了节点在自己打包或收到区块后都等待最新的同步后才能广播给其他节点,无形中增加了网络带宽的压力,降低了传输效率,导致区块和交易的拥堵等一系列问题。这些低效的共识算法与实际应用中十万级、百万级TPS(Transactions PerSecond,每秒处理的事务数量)相比,无法满足区块链技术的快速发展的需求。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种区块链的共识方法及***,可以有效提高区块链的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中,分别采用Merkle Tree算法计算得到状态根哈希值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所示,根据区块链节点承担的不同任务,将区块链节点分为:客户端、启动节点(BootNode)、核心节点和候选节点。
客户端负责生成交易数据,并将交易数据发送与客户端连接的核心节点。交易数据可以是:票据摘要、版权信息以及其他业务处理数据等。客户端是用户直接进行沟通的介质。客户端可以是交易所、去中心化应用程序(Dapp)、钱包等。
BootNode为节点间互相建立连接的中转节点,负责帮助各个核心节点和候选节点之间发现并建立连接。
核心节点是区块链的维护者,核心节点完成对交易的验证,确认,广播等。交易数据会在核心节点中完成最终的共识过程,此处的共识表示为交易被网络中核心节点的确认次数超过预设的条件。交易创建时只在一个核心节点上进行扩散,然后再进行第二层扩散,直到全网所有核心节点都收到这笔交易。扩散的过程是需要一定的时间的,但是最终每笔交易都会在所有核心节点上存储。
候选节点不进行区块的生成,主要负责辅助核心节点传播区块和交易。
候选节点与核心节点可在周期内进行轮转,周期的划分方式可以是区块也可以是时间范围,例如每200个区块为一个周期或者每10分钟为一个周期。如图2所示,以区块为周期为例,在阶段1时为2个核心节点,在阶段2时为4个核心节点。
本发明提出了一种基于事件缠绕的弱一致性区块链共识方法。事件缠绕体现在,各个区块链节点独自管理自己的区块数据,同时会将其它核心节点的最新状态记录在自己的区块上,根据节点的状态可以判断其是否在正常工作;弱一致性则体现在,各个区块链节点只存储自己生产的区块,不需要完全和其它节点的交易和区块数据顺序保持一致。
本发明可以提高区块链的整体处理能力。在同一时间段内,每个核心节点都可以接收交易数据并且生成区块,将区块广播给其它核心节点进行审核确认,满足预设的共识条件,例如超过一半的核心节点确认通过才会认为出块成功。验证其它节点的区块的过程不会打断自己生产区块的工作。而现有其他PoS算法中,一个时间段内,只能选出一个核心节点来进行出块,其他节点必须等待该节点的出块完成,然后再重选选择核心节点进行出块。
为了提高安全性,本发明中,进行共识时,核心节点需要通过两个方面的验证来对区块数据审核确认。每个核心节点会维护其他核心节点的状态值,当其他核心节点接收到某一个核心节点广播的区块时,一方面,其他核心节点要验证进行广播的核心节点的状态连续性;另一方面,还要证明接收的区块中是否已经将其他核心节点的状态正确打包到了区块内。
设定区块链包括n个核心节点,n为大于1的整数。下面具体来说明本发明实施例一种区块链的的共识方法,包括步骤P1~P6。从准备阶段,预挖矿阶段,挖矿阶段和确认阶段具体来说明。
在准备阶段,配置并启动各分布式节点,其中候选节点、核心节点互相建立好网络链接,同时各个核心节点同步初始状态。为了便于描述,我们将交易表示为T,将状态表示为S,各个节点表示为Node1~Noden,各个节点的状态值表示为S1~Sn。
预挖矿阶段主要是触发挖矿,即步骤P1。
P1,接收待共识的交易数据,将接收交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden。
在不同出块周期中,核心节点Node1可以是不同的节点。一个出块周期是指一个核心节点执行一次步骤P1~P6的过程。这样各个核心节点可以同时接收交易数据并广播给其他核心节点进行验证。核心节点会循坏重复执行步骤P1~P6。
预挖矿阶段,核心节点对从客户端接收到的交易数据进行校验,并广播到其他核心节点中。步骤P1包括3个步骤:1.1交易合法性校验;1.2交易重复性校验;1.3交易缓冲池处理。
1.1交易合法性校验:对交易数据的签名进行验证,即从交易数据中解析出公钥和签名者然后验证交易,仅当验证正确时才会进入步骤1.2,若验证失败,交易数据被丢弃不进行任何后续处理。
1.2交易的重复性验证:对交易数据的重复性进行验证,此步骤用于验证交易数据是否已经重复存在了,如果已经存在则直接丢弃;如果不存在则进入步骤1.3。
1.3交易缓冲池处理:将交易数据放入缓存池中,根据预设的挖矿条件,判断缓冲池中的交易数据是否进入步骤P2~P6。若不满足预设的挖矿条件,则继续等待直至满足条件,若满足预设的挖矿条件,如满足区块打包的个数则进入挖矿阶段,即进入步骤P2~P6。
挖矿阶段主要包括步骤:P2~P4,状态及交易处理;P5,生成区块及广播区块。P2~P5由挖矿的核心节点执行。在当前案例中,P2~P5由当前出块周期中挖矿的核心节点Node1执行。
P2,读取当前核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn。当前即指核心节点Node1挖矿时。
读取当前核心节点Node1的状态值S1具体是:读取上一出块周期核心节点Node1执行步骤P4时生成的交易Merkle Root信息Rt',将交易Merkle Root信息Rt'作为当前出块周期核心节点Node1的状态值S1。上一出块周期即指该核心节点Node1上一次执行步骤P1~P6的过程。即每个核心节点挖矿时,都会通过这种方式不断实现自己的状态更新。
读取其他核心节点Node2~Noden的状态值S2~Sn具体是:接收其他核心节点Node2~Noden广播的区块,对区块进行验证,若区块验证通过,则更新其他核心节点Node2~Noden的状态值S2~Sn。即每个核心节点会维护其他核心节点的状态。每个核心节点挖矿时,都会执行步骤P1~P6,向其他核心节点广播区块,其他核心节点接收广播来的区块,区块中包括各个核心节点最新的状态。其他核心节点对区块进行验证的方法具体见步骤P6的说明。如果区块验证正确,则其他核心节点更新自己存储的该节点的状态值,并反馈验证通过。如果区块验证不正确,则不更新该节点的状态值,并反馈验证不通过。
P3,根据其他核心节点Node2~Noden的状态值S2~Sn计算得到状态根哈希值Rs。
优选地,采用Merkle Tree(默克尔树)来计算得到状态根哈希值Rs。Merkle Tree,就是存储哈希值的一棵树。Merkle树的叶子节点是数据块的哈希值,非叶子节点是其对应子节点串联字符串的哈希值。
具体来说,将步骤P2采集的其他核心节点Node2~Noden的状态值S2~Sn,按照状态更新时间的顺序规则进行排序,然后使用Merkle Tree算法,计算得到状态根哈希值Rs。具体的步骤如图3所示,假设区块链有4个核心节点,每个核心节点状态分为记为状态S1,S2,S3和S4。将S1,S2,S3,S4作为叶子节点的值,采用逐级向上回溯的方式,依次生成每个节点的父节点,最终生成整棵树的根节点Root,Root节点的值R即为状态根哈希值Rs。
P4,根据步骤P1接收的交易数据及当前出块周期核心节点Node1的状态值S1,计算得到交易根哈希值Rt。
优选地,采用Merkle Tree来计算得到交易根哈希值Rt。
具体来说,采集当前生产块中的所有交易,按照进入交易缓冲池时间的顺序规则进行排序,然后使用Merkle Tree算法,计算得到交易根哈希值Rt,生成方式和步骤P3类似,此处不再赘述。
P5,生成区块,对该区块进行签名并将所述区块广播给其他核心节点Node2~Noden进行验证,区块中包括步骤P3生成的状态根哈希值Rs、步骤P4生成的交易根哈希值Rt、以及步骤P2读取的其他核心节点Node2~Noden的状态值S2~Sn以及交易数据。
在一个实施例中,区块由三部分组成:(1)当前出块周期的其他核心节点Node2~Noden的状态值S2~Sn和根哈希值Rs,(2)当前出块周期缓冲池的交易和交易根哈希值Rt,(3)Node1对上述内容的签名Signature。
区块的通用表示为:
P6,接收其他核心节点Node2~Noden对核心节点Node1广播的区块的验证结果。若接收的验证结果通过数量满足预设的共识条件,则将区块写入核心节点Node1管理的区块链中,否则丢弃该区块,然后进入下一出块周期,重复执行步骤P1-P6。
核心节点Node1将区块进行广播,***要求其他核心节点Node2~Noden在接收到区块后,对区块进行验证,并返回验证结果。如果区块验证通过,则核心节点Node1更新其他核心节点Node2~Noden的状态值,核心节点Node2~Noden更新本地记录的Node1的状态值。如果区块不通过,则核心节点Node1不更新其他核心节点Node2~Noden的状态值,核心节点Node2~Noden不更新本地记录的Node1的状态值。
在一个实施例中,对区块的验证包括如下步骤:
A1,验证交易签名的正确性。Node2~Noden接收到Node1广播的区块后,对其中的交易数据逐个进行步骤A1中的交易合法性验证。如果所有交易都验证通过,则进入步骤A2;否则直接返回验证结果为不通过。
A2,验证Node1的状态连续性。Node2~Noden使用区块中的交易数据以及存储的Node1状态值S1,再次计算得到交易根哈希值Rt',如果Rt'的值与区块中的Rt值相同,则该项验证通过,进入步骤A3。否则,直接返回验证结果为不通过。如图5示,假设在阶段1,核心节点1的状态R已经被各个核心节点(节点2和3)确认,则在阶段2中,节点2和3就可以根据已经确认的R和区块中的交易数据来验证核心节点1的R’是否连续。
A3,验证区块中记录的各个节点状态值的正确性。具体方法为,Noden检查区块中Sn是否与自己的状态值相等,如果相同则进入下一步骤A4,否则返回验证结果为不通过。
A4,验证区块中的签名正确性。具体方法为,Node2~Noden根据区块中的交易数据、状态数据、交易根哈希值、状态根哈希值,使用哈希算法SHA256计算得到哈希值H,再根据Node1的公钥以及哈希值H,验证区块签名值的正确性。如果验证通过,则返回验证结果为通过,否则返回验证结果为不通过。
从客户端来看,客户端发送交易确认请求,共识***返回交易的确认情况,如果交易满足预设的共识条件,例如超过规定次数的确认,则认为交易已经有效。
本发明实施例还提供了一种区块链的共识***,不要求各个所有交易在各个节点上的顺序完全一致。如图4所示,假设有三笔不同的交易数据t1、t2、t3,由于网络延迟的原因,它们到达三个核心节点的时间和顺序不是一致的,它们被打包进每个核心节点的区块号也是不一致的,但是最终的结果是,每笔交易都会存在区块链的各个节点中。
共识***包括n个核心节点,每个核心节点均包括:
交易数据接收模块,用于接收待共识的交易数据,接收该交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;
状态维护模块,用于读取当前出块周期核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;
状态处理模块,用于根据其他核心节点Node2~Noden的状态值S2~Sn计算得到状态根哈希值Rs;
交易处理模块,用于根据接收的交易数据及当前出块周期核心节点Node1的状态值S1,计算得到交易根哈希值Rt;
挖矿模块,用于生成区块并对该区块进行签名,区块中包括所述交易根哈希值Rt、状态根哈希值Rs、其他核心节点Node2~Noden的状态值S2~Sn以及交易数据;
广播模块,用于将所述区块广播给其他核心节点Node2~Noden进行验证;
验证结果接收模块,用于接收其他核心节点Node2~Noden对广播的区块的验证结果,若验证结果满足预设的共识条件,则将区块写入核心节点Node1管理的区块链中。
优选地,接收的验证结果包括对其他核心节点Node2~Noden的状态值S2~Sn进行验证、根据所述交易根哈希值Rt和其他核心节点上存储的核心节点Node1的状态值进行验证以及对所述区块的签名进行验证的验证结果。
优选地,状态维护模块包括自身状态更新模块和其他核心节点状态更新模块;自身状态更新模块用于读取上一出块周期核心节点Node1生成的交易根哈希值Rt',将交易根哈希值Rt'作为当前出块周期核心节点Node1的状态值S1;其他核心节点状态更新模块,用于接收其他核心节点Node2~Noden广播的区块,并对该区块进行验证,若区块验证通过,则更新核心节点Node1中存储的相应核心节点Node2~Noden的状态值S2~Sn;若区块验证不通过,则核心节点Node1中存储的相应核心节点Node2~Noden的状态值保持不变。
优选地,交易数据接收模块包括:签名验证模块,用于对接收的交易数据的签名进行验证;重复性验证模块,用于对所述交易数据的重复性进行验证;交易缓冲池,用于若接收的交易数据的签名正确且交易不重复,则将该交易数据放入交易缓冲池,若交易缓冲池的交易数据满足预设条件,触发状态处理模块、交易处理模块、广播模块、挖矿模块和验证结果接收模块工作,来实现上述步骤P2~P6。
共识***的实现原理、技术效果与上述共识方法类似,此处不再赘述。
为了实现上述实施例,本发明实施例还提出一种电子设备,包括:处理器和存储器。其中,存储器和处理器之间直接或间接地电性连接,以实现数据的传输或交互。存储器中存储有计算机程序,计算机程序被处理器执行时可以实现上述任一共识方法实施例的技术方案。处理器可以是一种集成电路芯片,具有信号的处理能力。处理器在接收到执行指令后,执行计算机程序。可选的,上述存储器内还可包括操作***。本实施例提供的电子设备,其实现原理、技术效果与上述共识方法类似,此处不再赘述。
必须说明的是,上述任一实施例中,方法并不必然按照序号顺序依次执行,只要从执行逻辑中不能推定必然按某一顺序执行,则意味着可以以其他任何可能的顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
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。
6.如权利要求1或2所述的一种区块链的共识方法,其特征在于,所述方法使得n个所述核心节点可以同时挖矿。
7.一种区块链的共识***,所述共识***包括n个核心节点,其特征在于,核心节点包括:
交易数据接收模块,用于接收待共识的交易数据,接收所述交易数据的核心节点记为核心节点Node1,其他核心节点记为Node2~Noden;
状态维护模块,用于读取当前出块周期核心节点Node1的状态值S1和其他核心节点Node2~Noden的状态值S2~Sn;
状态处理模块,用于根据其他核心节点Node2~Noden的状态值S2~Sn计算得到状态根哈希值Rs;
交易处理模块,用于根据所述交易数据及当前出块周期核心节点Node1的状态值S1,计算得到交易根哈希值Rt;
挖矿模块,用于生成区块并对所述区块进行签名,所述区块中包括所述状态根哈希值Rs、交易根哈希值Rt、其他核心节点Node2~Noden的状态值S2~Sn以及所述交易数据;
广播模块,用于将所述区块广播给其他核心节点Node2~Noden进行验证;
验证结果接收模块,用于接收其他核心节点Node2~Noden对所述区块的验证结果,若所述验证结果满足预设的共识条件,则将所述区块写入核心节点Node1管理的本地区块链中。
8.如权利要求7所述的一种区块链的共识***,其特征在于,所述验证结果包括对其他核心节点Node2~Noden的状态值S2~Sn进行验证、根据所述交易根哈希值Rt和其他核心节点上存储的核心节点Node1的状态值进行验证以及对所述区块的签名进行验证的验证结果。
9.如权利要求7或8所述的一种区块链的共识***,其特征在于,所述状态维护模块包括:
自身状态更新模块,用于读取上一出块周期核心节点Node1生成的交易根哈希值Rt',将交易根哈希值Rt'作为当前出块周期核心节点Node1的状态值S1;
其他核心节点状态更新模块,用于接收其他核心节点Node2~Noden在其他出块周期广播的区块,对区块进行验证,若区块验证通过,则更新核心节点Node1中存储的其他核心节点Node2~Noden的状态值S2~Sn。
10.一种电子设备,包括处理器和存储器,其特征在于,其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010514465.4A CN111723406B (zh) | 2020-06-08 | 2020-06-08 | 一种区块链的共识算法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010514465.4A CN111723406B (zh) | 2020-06-08 | 2020-06-08 | 一种区块链的共识算法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723406A true CN111723406A (zh) | 2020-09-29 |
CN111723406B CN111723406B (zh) | 2023-04-28 |
Family
ID=72567246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010514465.4A Active CN111723406B (zh) | 2020-06-08 | 2020-06-08 | 一种区块链的共识算法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723406B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398653A (zh) * | 2020-10-23 | 2021-02-23 | 陕西医链区块链集团有限公司 | 一种区块链共识验证方法 |
CN112634054A (zh) * | 2021-01-11 | 2021-04-09 | 杭州复杂美科技有限公司 | 交易执行方法、区块链一体机和区块链网络 |
CN112712366A (zh) * | 2021-01-11 | 2021-04-27 | 杭州复杂美科技有限公司 | 区块执行方法、计算机设备和存储介质 |
CN112732840A (zh) * | 2021-04-06 | 2021-04-30 | 牧星机器人(江苏)有限公司 | 一种基于区块链技术的快递物流管理方法及*** |
CN113157805A (zh) * | 2021-04-16 | 2021-07-23 | 西安瓜大网络科技有限公司 | 一种事务定序共识方法和*** |
CN113225335A (zh) * | 2021-04-28 | 2021-08-06 | 平安科技(深圳)有限公司 | 区块链出块安全校验方法、装置、设备及存储介质 |
CN113810378A (zh) * | 2021-08-19 | 2021-12-17 | 广东中科智能区块链技术有限公司 | 一种基于共识排序的交易预处理方法 |
KR20220052117A (ko) * | 2020-10-20 | 2022-04-27 | 주식회사 커먼컴퓨터 | 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템 |
EP4332870A4 (en) * | 2021-09-24 | 2024-03-20 | Tencent Technology (Shenzhen) Company Limited | METHOD AND APPARATUS FOR PROCESSING TRANSACTION DATA, COMPUTER DEVICE AND STORAGE MEDIUM |
WO2024066006A1 (zh) * | 2022-09-30 | 2024-04-04 | 蚂蚁区块链科技(上海)有限公司 | 区块链***中的共识方法、共识节点和区块链*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108400872A (zh) * | 2018-02-24 | 2018-08-14 | 清华大学 | 一种基于星地协同的区块链信息传输方法和*** |
CN108427601A (zh) * | 2017-02-13 | 2018-08-21 | 北京航空航天大学 | 一种私有链节点的集***易处理方法 |
CN109146484A (zh) * | 2018-08-31 | 2019-01-04 | 深圳付贝科技有限公司 | 基于区块链的共识验证方法、挖矿机及区块链*** |
WO2019019056A1 (zh) * | 2017-07-26 | 2019-01-31 | 杭州复杂美科技有限公司 | 前置机参与区块链共识的方法 |
CN109831425A (zh) * | 2019-01-25 | 2019-05-31 | 中国联合网络通信集团有限公司 | 区块链共识方法、装置、设备及计算机可读存储介质 |
WO2019232789A1 (zh) * | 2018-06-08 | 2019-12-12 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
US20200153606A1 (en) * | 2019-07-02 | 2020-05-14 | Alibaba Group Holding Limited | System and method for blockchain-based cross-entity authentication |
-
2020
- 2020-06-08 CN CN202010514465.4A patent/CN111723406B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427601A (zh) * | 2017-02-13 | 2018-08-21 | 北京航空航天大学 | 一种私有链节点的集***易处理方法 |
WO2019019056A1 (zh) * | 2017-07-26 | 2019-01-31 | 杭州复杂美科技有限公司 | 前置机参与区块链共识的方法 |
CN108400872A (zh) * | 2018-02-24 | 2018-08-14 | 清华大学 | 一种基于星地协同的区块链信息传输方法和*** |
WO2019232789A1 (zh) * | 2018-06-08 | 2019-12-12 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
CN109146484A (zh) * | 2018-08-31 | 2019-01-04 | 深圳付贝科技有限公司 | 基于区块链的共识验证方法、挖矿机及区块链*** |
CN109831425A (zh) * | 2019-01-25 | 2019-05-31 | 中国联合网络通信集团有限公司 | 区块链共识方法、装置、设备及计算机可读存储介质 |
US20200153606A1 (en) * | 2019-07-02 | 2020-05-14 | Alibaba Group Holding Limited | System and method for blockchain-based cross-entity authentication |
Non-Patent Citations (1)
Title |
---|
韩璇;刘亚敏;: "区块链技术中的共识机制研究" * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220052117A (ko) * | 2020-10-20 | 2022-04-27 | 주식회사 커먼컴퓨터 | 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템 |
KR102473672B1 (ko) | 2020-10-20 | 2022-12-02 | 주식회사 커먼컴퓨터 | 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템 |
CN112398653A (zh) * | 2020-10-23 | 2021-02-23 | 陕西医链区块链集团有限公司 | 一种区块链共识验证方法 |
CN112398653B (zh) * | 2020-10-23 | 2022-12-06 | 陕西医链区块链集团有限公司 | 一种区块链共识验证方法 |
CN112634054A (zh) * | 2021-01-11 | 2021-04-09 | 杭州复杂美科技有限公司 | 交易执行方法、区块链一体机和区块链网络 |
CN112712366A (zh) * | 2021-01-11 | 2021-04-27 | 杭州复杂美科技有限公司 | 区块执行方法、计算机设备和存储介质 |
CN112732840A (zh) * | 2021-04-06 | 2021-04-30 | 牧星机器人(江苏)有限公司 | 一种基于区块链技术的快递物流管理方法及*** |
CN113157805A (zh) * | 2021-04-16 | 2021-07-23 | 西安瓜大网络科技有限公司 | 一种事务定序共识方法和*** |
CN113157805B (zh) * | 2021-04-16 | 2024-05-03 | 西安瓜大网络科技有限公司 | 一种事务定序共识方法和*** |
CN113225335B (zh) * | 2021-04-28 | 2022-11-15 | 平安科技(深圳)有限公司 | 区块链出块安全校验方法、装置、设备及存储介质 |
CN113225335A (zh) * | 2021-04-28 | 2021-08-06 | 平安科技(深圳)有限公司 | 区块链出块安全校验方法、装置、设备及存储介质 |
CN113810378A (zh) * | 2021-08-19 | 2021-12-17 | 广东中科智能区块链技术有限公司 | 一种基于共识排序的交易预处理方法 |
EP4332870A4 (en) * | 2021-09-24 | 2024-03-20 | Tencent Technology (Shenzhen) Company Limited | METHOD AND APPARATUS FOR PROCESSING TRANSACTION DATA, COMPUTER DEVICE AND STORAGE MEDIUM |
WO2024066006A1 (zh) * | 2022-09-30 | 2024-04-04 | 蚂蚁区块链科技(上海)有限公司 | 区块链***中的共识方法、共识节点和区块链*** |
Also Published As
Publication number | Publication date |
---|---|
CN111723406B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723406A (zh) | 一种区块链的共识算法及*** | |
CN110442652B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
CN108108967B (zh) | 面向复杂数字资产的多阶段pbft共识***及方法 | |
CN111466096B (zh) | 提供不可变记录的***和方法 | |
CN110869967B (zh) | 用于并行处理区块链交易的***和方法 | |
Ren et al. | A scale-out blockchain for value transfer with spontaneous sharding | |
CN112965985B (zh) | 一种实现跨链互操作的数据一致性维护方法 | |
JP2021522710A (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
CN110298754B (zh) | 一种应用于区块链的共识方法 | |
CN111295660A (zh) | 用于将区块链连接到数字孪生的计算机实现的***和方法 | |
CN112583917B (zh) | 一种基于cscp的混合链构建方法 | |
CN109981565B (zh) | 基于Meta-BFT共识机制的区块链平台及实现方法 | |
CN111095326A (zh) | 在分布式账本***中进行交易的并行执行 | |
CN111418183A (zh) | 区块链区块的异步处理 | |
CN110766410B (zh) | 基于默克尔树的可信跨链事件构造与验证方法和设备 | |
CN111490978A (zh) | 一种基于状态通道的分布式日志审计***及方法 | |
Guo et al. | Design and optimization for storage mechanism of the public blockchain based on redundant residual number system | |
CN113242305B (zh) | 跨链事务处理方法、装置、计算机设备及介质 | |
CN114362961B (zh) | 基于区块链的账户恢复方法、装置、设备及存储介质 | |
Sohrabi et al. | ZyConChain: A scalable blockchain for general applications | |
CN111639080A (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN117251889B (zh) | 区块链共识方法、相关装置和介质 | |
CN116777631B (zh) | 基于区块链的交易上链方法及装置、设备、介质 | |
Coelho et al. | Community yellow paper: A technical specification for neo blockchain | |
CN111416703A (zh) | 一种区块链跨越式和跳跃式快速同步方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |