CN110875893B - 共识验证方法、校验节点及区块链*** - Google Patents

共识验证方法、校验节点及区块链*** Download PDF

Info

Publication number
CN110875893B
CN110875893B CN201810994193.5A CN201810994193A CN110875893B CN 110875893 B CN110875893 B CN 110875893B CN 201810994193 A CN201810994193 A CN 201810994193A CN 110875893 B CN110875893 B CN 110875893B
Authority
CN
China
Prior art keywords
node
block
candidate block
check
nodes
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.)
Active
Application number
CN201810994193.5A
Other languages
English (en)
Other versions
CN110875893A (zh
Inventor
蔡庆丰
赵亮
杨闯
吴刚
程撰
刘林欣
王禧
吴昊
朱佳
蔡志迈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Mingtai Hengtong Information Technology Co.,Ltd.
Original Assignee
Shenzhen Qiyuan Information Service Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Qiyuan Information Service Co ltd filed Critical Shenzhen Qiyuan Information Service Co ltd
Priority to CN201810994193.5A priority Critical patent/CN110875893B/zh
Publication of CN110875893A publication Critical patent/CN110875893A/zh
Application granted granted Critical
Publication of CN110875893B publication Critical patent/CN110875893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明涉及区块链技术领域,特别是涉及一种共识验证方法、校验节点及区块链***。方法包括:接收候选区块,其中,候选区块为基于满足预设条件的随机数生成的区块;根据拜占庭容错算法,共识验证候选区块。一方面,其能够保证在同一时间只有一个合法区块生成,避免区块链分叉现象出现。另一方面,在共识验证过程中,各个校验节点均能参与共识验证,其能够确保***记账权不会被中心化节点控制。

Description

共识验证方法、校验节点及区块链***
技术领域
本发明涉及区块链技术领域,特别是涉及一种共识验证方法、校验节点及区块链***。
背景技术
区块链技术集合演算法、数学、密码学与经济模型等技术,基于点对点网路关系,建立信任机制,成为一个不需基于彼此信任基础、也不需依赖单一中心化机构便能够运作的分散式***。
现有区块链技术支持多种共识验证算法共识验证区块,其中,共识验证算法包括工作量证明算法((Proof of Work,POW)。各个矿工节点独立进行工作量证明计算,以打包区块。
发明人在实现本发明的过程中,发现传统技术至少存在以下问题:单纯使用POW共识机制,在同一时间内可能有多个矿工节点完成工作量证明,因此,其存在区块链分叉现象。然而,在无法确定工作量最多的区块链的情况下,共识结果具有不确定性。
发明内容
本发明实施例一个目的旨在提供一种共识验证方法、校验节点及区块链***,其共识结果具有确定性。
为解决上述技术问题,本发明实施例提供以下技术方案:
在第一方面,本发明实施例提供一种共识验证方法,应用于区块链***中的校验节点,所述方法包括:
接收候选区块,其中,所述候选区块为由满足预设条件的随机数生成的区块;
根据拜占庭容错算法,共识验证所述候选区块。
可选地,所述候选区块由矿工节点采用工作量证明算法生成的。
可选地,所述区块链***容忍坏校验节点的最大数量不超过所述区块链***中全部校验节点的三分之一。
可选地,所述方法还包括:
当检测到共识验证完所述候选区块并记录于所述区块链***时,所述区块链***的非校验节点同步更新区块账本,以将所述候选区块记录于所述区块账本中。
可选地,所述校验节点包括主校验节点与若干副校验节点;
所述根据拜占庭容错算法,共识验证所述候选区块,包括:
根据所述主校验节点设置的视图,所述主校验节点接收所述候选区块;
所述主校验节点校验所述候选区块,若所述候选区块有效,对所述候选区块签名,并将签名后的候选区块打包广播至所有副校验节点;
每个所述副校验节点验证所述候选区块的合法性,若合法,对所述候选区块签名并广播其它所述副校验节点及所述主校验节点;
所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的合法性,若合法,统计发送合法候选区块的校验节点数量,若校验节点数量超过所述区块链***中全部校验节点的三分之二,每个所述校验节点向其它校验节点广播一个携带有自身签名的提交信息;
每个所述校验节点皆验证所述提交信息,并统计接收到并合法的提交信息的数量,每个所述副校验节点收集提交信息,待后续收到所述主校验节点提交的区块信息后,通过搜集的提交信息检查所述区块信息是否合法;
所述主校验节点验证签名后的提交信息的合法性,若合法,统计签名后并合法的提交信息的数量,若签名后并合法的提交信息的数量超过所述区块链***中全部校验节点的三分之二,将所述候选区块记录于所述区块链网络中,并将合法的候选区块以及接收到的合法提交信息打包签名后,广播至全网。
可选地,所述每个所述副校验节点验证所述候选区块的合法性,包括:
每个所述副校验节点验证所述候选区块的签名是否合法;
若合法,验证所述候选区块的有效性;
若非法,停止向其它所述副校验节点及所述主校验节点广播所述候选区块;
若有效,则所述候选区块属于合法;
若无效,则所述候选区块属于非法。
可选地,所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的合法性,包括:
所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的有效性及签名,若所述候选区块有效并所述签名合法,则所述候选区块合法。
可选地,所述根据拜占庭容错算法,共识验证所述候选区块,还包括:
所述副校验节点监测到所述主校验节点为故障节点或作恶节点,触发视图更换事件,以更换视图。
在第二方面,本发明实施例提供一种校验节点,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行任一项所述的共识验证方法。
在第三方面,本发明实施例提供一种区块链***,包括若干个所述的校验节点及矿工节点。
在第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使区块链节点执行如上任一项所述的共识验证方法。
在第五方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被校验节点执行时,使所述校验节点执行任一项所述的共识验证方法。
在本发明各个实施例提供的共识验证方法、校验节点及区块链***中,首先,接收候选区块,其中,候选区块为由满足预设条件的随机数生成的区块;根据拜占庭容错算法,共识验证候选区块。一方面,其能够保证在同一时间只有一个合法区块生成,避免区块链分叉现象出现。另一方面,在共识验证过程中,各个校验节点均能参与共识验证,其能够确保***记账权不会被中心化节点控制。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是现有PBFT算法的工作流程示意图;
图2是本发明实施例提供一种区块链***的架构示意图;
图3是本发明实施例提供一种共识验证方法的流程示意图;
图4是本发明另一实施例提供一种共识验证方法的流程示意图;
图5是本发明实施例提供一种工作量证明协同工作方法的流程示意图;
图6a是本发明实施例采用工作量证明协同工作方法与未采用工作量证明协同工作方法在计算满足预设条件的待验证哈希值的示意图;
图6b是本发明实施例采用工作量证明协同工作方法与未采用工作量证明协同工作方法在在计算满足预设条件的待验证哈希值的箱型图;
图7是本发明实施例提供一种校验节点的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
区块链***具有去中心化特点,其不同于传统中心化服务器,由于区块链***没有中心化节点,其需要共识机制维持正常运作,例如,共识机制包括POW算法,基于POW算法,区块链***能够实现区块的共识验证。
POW算法是一种应对拒绝服务攻击和其他服务滥用的一种策略,一个工作量证明是指满足特定条件的一个数据计算,其产生正确结果比较困难,但是验证正确结果比较简单。正确结果的产生只能通过不断的枚举随机数来进行验证试错,从而最终找到正确答案。其中,该验证试错是采用哈希(hash)算法来实现。哈希算法是一种单向散列算法,计算出哈希值的过程比较简单,但是要获得符合要求的哈希值,则只能通过枚举试错来进行。
在一些虚拟加密货币***中,在进行随机散列运算时,POW算法引入了对某一个特定值的扫描工作,比方说,在SHA-256下,随机散列值以一个或多个0开始,随着0的数量逐步增加,遍历出与此情况下的随机散列值对应的解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。
一些虚拟加密货币***的区块中增补了一个随机数(Nonce),该随机数需要满足使得给定区块的哈希值出现所需的规定数量个0的条件。由于哈希运算的不可逆特性,只能通过反复尝试以遍历出满足条件的随机数。
只要区块链节点遍历出满足条件的随机数,该区块链节点就完成了工作量的证明,从而获得了区块的打包记账权。
下面,本发明实施例详细阐述传统虚拟加密货币***的共识验证流程。如下所述:
1、区块链节点收集并选择交易信息,并计算交易列表的默克尔(Merkle)根哈希值。
2、区块链节点构造区块头,其中,区块头包括版本、上一区块头的哈希值、默克尔根哈希值、时间戳(timestamp)、难度值(difficulty)及随机数。
3、区块链节点计算构造的区块头哈希值,检查区块头哈希值是否小于或等于目标值。若是,则完成工作量证明,将打包的区块广播全网,区块链中的其它区块链节点将会检测该区块的合法性。若否,则返回第2步,继续进行工作量计算。
执行上述流程的区块链节点亦可以称为矿工节点。
在POW共识机制中,只要CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,生成的区块的信息就不可更改。由于之后的区块是链接在该区块之后的,因此,想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
首先,由于全网中的每个节点需要通过工作量证明来获取区块打包记账权,因此使用POW共识机制时,每个矿工节点都需要不断的生成随机数试错,以求找到合适的随机数,这需要大量的电力支撑,也会造成大量的能源浪费。
其次,使用POW共识机制会导致网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长(例如10分钟)。由于共识达成需要等待多个确认,因此共识达成的结果是不确定的,继而账本里的交易也不是确定性的。一个区块的后面链接越多的新区快就表示该链条获得了越多的确认,这个区块就越难被取消。一般地,一些虚拟加密货币***建议一个交易的确认需要6个区块的时间,亦即需要一个小时,但是数额越大的交易需要的确认时间越长。但是即使等待了很长的确认时间,也不能百分之百的确认这个交易不会被取消,因此当用于超过50%算力时,就可以通过从新完成工作量证明来改写链上数据,因此其导致区块链的可扩展性降低。而且分叉的存在也导致一些虚拟加密货币***不能以太快的速度产出新的区块,否则越快的出块速度导致越高的分叉率,进而也就导致削弱了整个区块链网络共识的稳定性。
基于POW存在诸多问题,人们提出了股权证明机制。在股权证明机制中,在全网中拥有币的权益多的节点将容易获得区块的打包记账权,与此同时其也将获得***给予的记账奖励。在使用POS(Proof of Stake,股权证明)共识算法的区块链***中,节点拥有币的权益越多,其在***中的权利越大,这些节点攻击网络的意愿会比较低,因为一旦区块链***受到攻击,那么币的价格将会下降,那么其利益也将受到相应的损害。
DPOS(Delegated Proof of Stake,委任权益证明)是基于POS衍生出的共识方案,其类似于董事会的投票机制。节点中的所有持币人都拥有投票选举权,其票数和持币数成正比。所有全网节点统一选举出拥有区块打包记账权的节点,然后由这些节点来打包交易,并将其记录到区块链中。
在DPOS机制中,将被成功选举的节点称之为见证人,见证人拥有打包区块记录交易到区块链上的权利,同时也将获得***对其的工作的奖励。区块链***中每一个持币人选取见证人,其中总同意票数中的前N(N通常定义为101)个候选者可以成功当选为见证人。由于在DPOS中,相当于通过选举的方式,将***记账权全部集中到N个见证人手中,因此对于N的取值,必须要保证至少有一半的投票节点认为N已经充分的区中心化,多数见证人联合作恶的可能性很低。
当见证人名单被***节点成功选出后,其将会被随机排列,然后每个见证人开始轮流打包区块记账。与此同时,见证人的名单排列不是一直固定不变的,其在每个维护周期会被从新随机排列一次,其中维护周期为1天。为了防止见证人节点故障或因为性能问题影响***正常高效运行,***对于见证人生成区块设有2秒的超时时间,一旦在规定的超时时间内没有生成区块,那么其记账权交由名单中的下一个见证人执行。与此同时为了防止见证人作恶,持币节点可以随时通过投票更换见证人,这样就可以防止见证人利用手中的机制权作恶,或者其节点故障及性能不足影响***正常运行。
然而,在POS机制中,***中拥有大量币的节点将会拥有长久的优势,其对***的控制权过大,影响***的安全性。在DPOS机制中,被成功选举的见证人节点拥有完全的记账权,其中心化水平非常高。
PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式***的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。
所有的副本在一个被称为视图(View)的轮换过程(successionofconfiguration)中运作。在某个视图中,一个副本作为主节点(primary),其他的副本作为备份(backups)。视图是连续编号的整数。主节点由公式p=v mod|R|计算得到,这里v是视图编号,p是副本编号,|R|是副本集合的个数。当主节点失效的时候就需要启动视图更换(view change)过程。
基于拜占庭将军问题,PBFT一致性的确保主要分为这三个阶段:预准备(pre-prepare)、准备(prepare)和确认(commit)。
下面,本发明实施例结合图1详细阐述PBFT主要工作流程:
在图1中,C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:
1.Request:发送请求端C发送请求到任意一节点,这里是0。
2.Pre-Prepare:服务端0收到C的请求后进行广播,扩散至服务端1、2及3。
3.Prepare:服务端1、2及3收到后记录并再次广播,1->023,2->013,3因为宕机而无法广播。
4.Commit:服务端0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求。
5.Reply:服务端0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈。
当服务端的节点数大于100时,网络带宽压力会越来越大,因此,单纯的PBFT共识是无法满足节点数量很多的公有链网络。
基于此,本发明实施例提供一种区块链***。请参阅图2,区块链***200包括普通节点21、矿工节点22及校验节点23。
普通节点21、矿工节点22及校验节点23任意两个节点之间支持点对点通讯(Pointto point communication,P2P),并且,普通节点21、矿工节点22及校验节点23皆可以作为区块链***中的区块链节点,各自在区块链***中承担不同的责任,共同维护区块链***的工作、稳定及安全。
普通节点21持有流通的电子货币,在区块链***中拥有投票选举的权利。普通节点21可以进行相关交易操作,但是没有区块的打包记账权。普通节点21只能从拥有打包记账权的相关节点处同步记录区块数据。
矿工节点22负责计算哈希难题,查找出候选区块。其中,该候选区块为基于满足预设条件的随机数生成的区块。在一些实施例中,候选区块由矿工节点22采用工作量证明算法POW生成的,亦即,基于候选区块的随机数计算出的待验证哈希值是小于目标哈希值的。
校验节点23用于共识验证区块,并将验证通过的区块记录到区块链上。
可以理解的是,上述普通节点21、矿工节点22及校验节点23可以是一个物理服务器或者多个物理服务器虚拟而成的一个逻辑服务器。服务器也可以是多个可互联通信的服务器组成的服务器群,且各个功能模块可分别分布在服务器群中的各个服务器上。
请参阅图3,图3是本发明实施例提供一种共识验证方法的流程示意图,其中,该共识验证方法应用于区块链***中的校验节点。如图3所示,共识验证方法S300包括:
S31、接收候选区块,其中,候选区块为由满足预设条件的随机数生成的区块;
在本实施例中,候选区块可以为矿工节点打包发送的。
随机数为共识机制需要采用的数值,各个矿工节点通过试错方式,将基于随机数生成的待验证哈希值与目标哈希值作比较,若待验证哈希值小于目标哈希值,该待验证哈希值对应的随机数满足预设条件,于是,该矿工节点便获得打包该区块的权利。若待验证哈希值大于目标哈希值,该待验证哈希值对应的随机数未满足预设条件,矿工节点继续试错,以便遍历出满足预设条件的随机数。
如前所述,在一些实施例中,候选区块由矿工节点采用工作量证明算法POW生成的。可以理解的是:本领域技术人员根据本实施例所训导的内容,通过改进原始POW算法,以获得改进型的POW算法,然后再基于该改进型的POW算法计算出候选区块,此类方式应当落入本发明的保护范围之内。
S32、根据拜占庭容错算法,共识验证候选区块。
在本实施例中,拜占庭容错算法包括实用拜占庭容错(practical ByzantineFault Tolerance,PBFT)或授权拜占庭容错(Delegated Byzantine Fault Tolerance,DBFT)等等。
在一些实施例中,校验节点包括主校验节点与若干副校验节点。校验节点根据拜占庭容错算法,共识验证候选区块的流程如下:
1、根据主校验节点设置的视图,主校验节点接收候选区块。
各个矿工节点根据主校验节点设置的视图,向主校验节点发送候选区块,这一过程称为“request”。
2、主校验节点校验候选区块,若候选区块有效,对候选区块签名,并将签名后的候选区块打包广播至所有副校验节点。
此处,在一些实施例中,若候选区块有效,主校验节点先分配一个序列号,然后再对候选区块签名,最后将签名的候选区块打包广播给其它副校验节点,这一过程称为“pre-prepare”。
3、每个副校验节点验证候选区块的合法性,若合法,对候选区块签名并广播其它副校验节点及主校验节点;
此处,在一些实施例中,每个副校验节点验证候选区块的合法性的过程中,每个副校验节点验证候选区块的签名是否合法,若合法,验证所述候选区块的有效性,若非法,停止向其它副校验节点及主校验节点广播候选区块。若有效,则候选区块属于合法;若无效,则候选区块属于非法。举例而言,副校验节点收到上一步中广播信息,副校验节点为了保证消息来源为主校验节点,首先检查签名是否正确。其次,副校验节点需要验证区块的有效性。若区块是有效的并且自于主校验节点,副校验节点将会再次签名并广播给校验节点集群中的其它副校验节点及主校验节点。这一过程称为“prepare”。校验节点集群中的除主校验节点的所有节点都必须执行此过程。
在此过程中,所述副校验节点监测到主校验节点为故障节点或作恶节点,触发视图更换事件,以更换视图。
4、所有校验节点皆各自验证每个所述副校验节点发送的候选区块的合法性,若合法,统计发送合法候选区块的校验节点数量,若校验节点数量超过区块链***中全部校验节点的三分之二,每个校验节点向其它校验节点广播一个携带有自身签名的提交信息;
此处,在一些实施例中,所有校验节点皆各自验证所述每个副校验节点发送的候选区块的有效性及签名,若候选区块有效并签名合法,则候选区块合法。举例而言,所有校验节点搜集上一步发送的广播信息,当一个校验节点(主校验节点或副校验节点)收到一个prepare信息时,其必须检测区块的有效性及签名的合法性。如果两者皆有效,其可以验证结果信息记录并对收到的合法prepare信息计数。一但合法prepare信息数量超过校验节点集群数量的2/3,那么此校验节点可以广播一个带有其签名的提交信息给其它校验节点。这一过程称为“commit”。
5、主校验节点验证签名后的提交信息的合法性,若合法,统计签名后并合法的提交信息的数量,若签名后并合法的提交信息的数量超过所述区块链***中全部校验节点的三分之二,将候选区块记录于所述区块链网络中,并将合法的候选区块以及接收到的合法提交信息打包签名后,广播至全网。每个所述副校验节点收集提交信息,待后续收到所述主校验节点提交的区块信息后,通过搜集的提交信息检查所述区块信息是否合法。此过程被称之为“reply”。
此处,举例而言,主校验节点记录收到的reply信息集合,校验其签名合法性,若合法reply个数大于校验节点集群数量的2/3,即认为矿工发送的区块合法,可以记录到区块链中。此时主校验节点将合法的区块和收到的合法reply信息打包签名后广播给全网所有节点。在上述各个实施例中,请参阅图4,共识验证方法S300还包括:
S33、当检测到共识验证完候选区块并记录于区块链***时,区块链***的非校验节点同步更新区块账本,以将候选区块记录于区块账本中。
综上所述,一方面,其能够保证在同一时间只有一个合法区块生成,避免区块链分叉现象出现。当一个区块被确认有效后,其在区块链上将不可逆。校验节点通过PBFT对区块达成共识并将区块记录在区块链***中,从而保证了同一时间只有一个合法区块。区别于纯POW共识机制,同一时间可能有多个矿工完成工作量证明,因此导致其区块链产生分叉,在无法确定最长链的情况下,其共识结果是不确定性的。
由于本文提出的共识验证方法具有确定性,区块链***将不存在区块生成速度的限制,避免了纯POW共识导致的分叉问题,保证了区块链***始终是一个无分叉的最长链。通过在传统POW的基础上引入PBFT来在校验节点中达成共识,增强了***的可扩展性,使得***的共识达成不完全依赖于算力竞争,并且交易可以被快速确认。由于校验节点之间的共识达成采用PBFT的方式,也保证了校验节点之间的高度一致性。
另一方面,在共识验证过程中,各个校验节点均能参与共识验证,其能够确保***记账权不会被中心化节点控制。与POS和DPOS共识机制相比,在本发明实施例中,各个矿工节点与校验节点分工协作,共同维护***正常运行。本发明实施例提供的共识验证方法将权利分化,利用奖励将各节点结合起来。在使用此共识的区块链***中,各个角色节点均能参与,其对***的去中心化程度没有带来很大的影响,确保***记账权不会被中心化节点控制。由于纯PBFT共识机制不适用于节点较多的区块链***,而在本文提出的确定性POW共识中,其将其与POW机制结合,通过选举校验者集群,在校验者集群中使用PBFT达成共识。使得采用此共识机制的区块链***突破PBFT共识机制的节点数量限制。
在一些实施例中,区块链***容忍坏校验节点的最大数量不超过区块链***中全部校验节点的三分之一。
为了验证本发明实施例提供的共识验证方法,基于Go语言来实现相关逻辑代码进行验证。
在实验中,创建六个组,分别为A1、A2、A3、B1、B2、B3。其中,对于A1、A2、A3将会给一个有效的区块,而B1、B2、B3将会被给一个无效的区块。每一个组中包含4个校验节点,这4个校验节点可能是拜占庭节点。这意味着,当节点为好节点时,其不会作恶,因此总能够正确校验一个区块的合法性。而当节点为拜占庭节点时,其不会正确的验证一个区块的合法性,其可以随意指定区块是否合法。在上述六个分组中,A1和B1每个都包含1个拜占庭节点和3个好节点,A2和B2两个组中,每个都包含2个拜占庭节点和2个好节点,而在A3和B3中,每组包含3个拜占庭节点和1个好节点。这个设置,使得在A1和B1中拜占庭节点个数少于1/3,A2和B2中拜占庭节点个数处于1/3和2/3之间,而A3和B3中存在的拜占庭节点个数则超过2/3。在实验中,假定拜占庭节点可以共谋改变区块的合法性。进行相关试验后,将实验数据记录到表中,对于每一组实验分别进行10次。其区块验证结果用valid(V)和invalid(I)来标示。请参阅表1:
表1
Figure BDA0001781500850000131
Figure BDA0001781500850000141
在表1中,记录了6个组对于有效区块和无效区块的验证结果。由表1可知,在A1和B1中,尽管存在一个拜占庭节点,但不论区块是否合法,其验证结果都与区块的有效性相符。而在A2中,给定的是一个有效区块,但10次验证的结果不同,存在认定区块不合法的相关结果,这意味着其未能就区块的有效性达成共识。在B2中,给定的是一个无效的区块,在存在两个拜占庭节点的情况下,成功验证区块不合法。而在A3和B3中,由于拜占庭节点可以共谋,因此其可控制共识结果达成,使共识结果和真正区块有效性不相关。
从这个实验中,推倒出以下结论:当一个校验者集群中的拜占庭节点个数少于1/3时,任何矿工节点给校验者集群的区块有效性均可以被正确验证,***可达成共识。而当校验者集群中的拜占庭节点个数介于1/3和2/3之间时,矿工节点发送区块给校验者集群时,在区块是否合法上,校验者集群无法达成共识。而当校验者集群中的拜占庭节点超过2/3时,当矿工发送区块给校验者集群进行验证时,集群中的拜占庭节点可以通过共谋的方式控制共识结果。因此区块链***容忍坏校验节点的最大数量不超过区块链***中全部校验节点的三分之一。
与上述各个实施例的不同点在于,候选区块可以在分片节点与矿工节点之间的共同作用下产生的。
分片节点与校验节点和矿工节点通讯。分片节点负责打包交易数据,向矿工节点发送相关交易数据。例如,分片节点监听P2P网络并打包交易,但是,分片节点不会构造整个交易的默克尔(Merkle)树。首先,分片节点计算各个交易信息的默克尔路径。其次,分片节点将如下数据发送给矿工节点:前一个区块头的哈希值、挖矿的难度值、交易信息的默克尔路径及交易信息的交易输出(transaction-out)部分。在本实施例中,除上述四部分数据外,分片节点不会发送其它信息给矿工节点。可以理解的是,在一些实施例中,分片节点还可以向矿工节点发送除了上述四部分数据的其它数据给矿工节点,本领域技术人员可以根据业务需求自行配置发送逻辑,在此不赘述。
在一些实施例中,分片节点还将要计算的哈希难题分配给矿工节点进行相关计算,例如,分片节点将工作量证明的全部搜索空间划分成多个搜索子空间,各个搜索子空间之间不会出现重复的待验证哈希值,分片节点将各个搜索子空间分配给对应的矿工节点。
矿工节点主要解决分片节点分配的哈希难题,例如,矿工节点将会在分配的搜索子空间上计算哈希难题,亦即,矿工节点根据POW算法,计算某个随机数对应的待验证哈希值,以寻求完成工作量证明。在计算过程中,矿工节点需要定时监听分片节点的消息通知,以防分片节点更新工作量的搜索子空间或者重新分配任务。一旦矿工节点完成工作量证明,矿工节点将会将满足条件的区块提交给分片节点。分片节点接收到矿工节点提交的区块后,将该区块作为候选区块提交给校验节点,并等待验证结果。
校验节点对分片节点提交的区块做共识验证,将验证通过的区块记录到区块链上。
由于任意两个搜索子空间的待验证哈希值之间的哈希碰撞概率比较低,因此,各个区块链节点进行工作量计算时,出现计算冲突的概率很低,进而提高工作效率,减少共识验证时电力等资源的消耗。
请参阅图5,图5是本发明实施例提供一种工作量证明协同工作方法的流程示意图。如图5所示,工作量证明协同工作方法500包括:
S51、将随机数的搜索空间切分成若干个搜索子空间;
在POW共识机制中,每个区块需要经过矿工节点计算哈希难题而生成,亦即,矿工节点采用POW算法对区块作出工作量证明,以共识验证区块。于是,分片节点或矿工节点将随机数的搜索空间切分成若干个搜索子空间。在本实施例中,搜索空间为根据POW算法,全部随机数对应的待验证哈希值的集合,亦即,为了遍历出满足预设条件的目标随机数,其需要根据POW算法逐一校验由每个随机数生成的待验证哈希值,每个待验证哈希值在理论上都存在满足预设条件的可能性,于是,将在理论上都存在满足预设条件的可能性的待验证哈希值集合而构成搜索空间,搜索空间每个待验证哈希值皆对应着唯一随机数,并且,搜索空间至少存在一个满足预设条件的待验证哈希值。举例而言,POW算法支持输出256位哈希值,于是,搜索空间可存在2256个待验证哈希值,待验证哈希值的取值范围为[0,2256-1]。
搜索子空间为从搜索空间的全部待验证哈希值中切分出部分待验证哈希值的集合。举例而言,承接上述例子,搜索子空间的待验证哈希值的取值范围为[0,218-1]。
在一些实施例中,可以理解的是,搜索子空间可以不是预先以区间的形式界定与规划好的,其可以呈现如下表现形式:在共识验证过程中,全部矿工节点根据随机数作哈希运算以计算出满足预设条件的待验证哈希值时,任意两个矿工节点计算出的待验证哈希值并不出现碰撞,于是,每个矿工节点集合计算出的全部待验证哈希值而构成属于自己的搜索子空间。举例而言,分片节点向矿工节点A发送数据A1+X,向矿工节点B发送数据B1+X,向矿工节点C发送数据C1+X……,以此类推。其中,数据A1、B1及C1都不同,可以理解的是,每个矿工节点的数据N1都不同。数据X为区块信息,每个矿工节点都需要对数据X进行打包记账。共识验证区块时,假设矿工节点A、矿工节点B及矿工节点C都选择随机数Y1生成待验证哈希值,具体为:对应矿工节点A,其选择A1+X+Y1生成待验证哈希值H1;对应矿工节点B,其选择B1+X+Y1生成待验证哈希值H2;对应矿工节点C,其选择C1+X+Y1生成待验证哈希值H3。由于A1、B1及C1都不同,因此,H1、H2及H3都不同。
于是,对于矿工节点A对应的搜素子空间可以为“由A1+X+Y1生成的待验证哈希值”、“由A1+X+Y2生成的待验证哈希值”、“由A1+X+Y3生成的待验证哈希值”……以此类推的若干个待验证哈希值构成。同理可得,对于矿工节点B或C对应的搜素子空间可以以此类推。
S52、获取搜索子空间的待验证哈希值与预设目标哈希值;
预设目标哈希值为满足预设条件的哈希值,其中,预设目标哈希值可以为1个,亦可以为两个以上。举例而言,预设条件为256位的哈希值中最前面高位需要出现10个0,例如,满足预设条件的256位哈希值为“0000,0000,00abef……fad”,未满足预设条件的256位哈希值为“0011,0000,00abef……fad”。
S53、根据待验证哈希值与预设目标哈希值,协同共识验证区块。
矿工节点根据待验证哈希值与预设目标哈希值,可以采用多种预设逻辑共识验证区块。例如,在一些实施例中,矿工节点判断待验证哈希值是否满足预设目标哈希值;若满足,上传待验证哈希值对应的随机数;若未满足,重新共识验证区块。
当矿工节点检测到待验证哈希值满足预设目标哈希值,例如,待验证哈希值的最前方10个高位都是0,亦即满足预设目标哈希值。于是,矿工节点将满足条件的待验证哈希值对应的随机数上传至分片节点,分片节点便打包该区块为候选区块,分片节点再将该候选区块广播给校验节点,校验节点校验通过后,向分片节点发送校验成功信息,于是分片节点向各个矿工节点广播已共识验证该区块,各个矿工节点便记录该区块。
当矿工节点检测到待验证哈希值未满足预设目标哈希值,矿工节点重新共识验证区块。重新共识验证区块的方式存在多种方式,例如,矿工节点重新从搜索子空间获取待验证哈希值,再次与预设目标哈希值进行比对。再例如,当矿工节点遍历完搜索子空间而未能够遍历出满足预设目标哈希值的待验证哈希值,于是,矿工节点可以更新搜索子空间的待验证哈希值,因此,矿工节点继续在更新后的搜索子空间继续选择待验证哈希值作比对工作。
当各个矿工节点计算出各不相同的待验证哈希值,并将待验证哈希值与预设目标哈希值进行比较时,其意味着各个矿工节点能够协同工作,以共识验证区块链***中的每个区块。
综上,本发明实施例通过将工作证明中的各个工作量进行分片,亦即,在计算每一个区块的哈希难题过程中,将随机数的搜索空间切分,分别分配给不同的矿工节点,而不是让每个矿工节点都单独地在同一搜索子空间内寻找满足条件的随机数。通过分片工作量,将各个工作量切分并下发给各个矿工节点,因此,每个矿工节点只需要在各自搜索子空间内进行随机数查找即可,从而保证所有矿工节点作重复工作的概率很小。
因此,分片后的挖矿过程相对地减少了获取满足预设条件的随机数所需要的时间,也减少了全网挖矿过程中的总计算量。因此,通过此方法,在保证区块链***去中心化和一致性的同时,增强区块链***的可扩展性。在此阶段中,分片节点负责将工作量切分下发给矿工节点,矿工节点只需要负责解决哈希难题即可。
为了防止一段时间内,矿工节点一直没有完成工作量证明,导致区块链***无法正常出块,在一些实施例中,矿工节点可以预设有效时间,以保证矿工节点能够正常出块。例如,在一些实施例中,矿工节点统计共识验证的计算时间,根据共识验证的计算时间与预设时间阈值,更新搜索子空间的待验证哈希值。
在本实施例中,共识验证的计算时间为矿工节点共识验证区块时,所花费的时间。预设时间阈值由用户根据业务需求自定义。
矿工节点根据共识验证的计算时间与预设时间阈值更新搜索子空间的待验证哈希值的方式多种多样。例如,在一些实施例中,矿工节点判断共识验证的计算时间是否超过预设时间阈值;若超过,更新搜索子空间的待验证哈希值;若未超过,保留搜索子空间的待验证哈希值。
因此,通过此种方式,其能够保证区块链***正常出块,为何区块链***的工作稳定性与可靠性。
如前所述,搜索子空间的表现形式可以为多样化,其可以主要是基于矿工节点A、矿工节点B及矿工节点C中的数据A1、B1及C1的不同而不同。因此,在一些实施例中,矿工节点获取区块链节点的标识信息、区块头信息及随机数,其中,任意两个区块链节点的标识信息之间皆不同;生成包含标识信息的额外信息;将额外信息、区块头信息及随机数作哈希运算,以计算出搜索子空间的待验证哈希值。
在本实施例中,标识信息用于标识矿工节点的信息,其可以为任意形式或格式的标识信息,例如,标识信息可以为字符串或字符等等,标识信息作为矿工节点的身份信息或钱包地址,每个矿工节点的标识信息可以是唯一的,但是每个矿工节点的标识信息可以是灵活改变的,其改变可以根据分片节点分片工作量而定。
如前所述,由于任意两个矿工节点的标识信息之间皆不同,因此,其计算出的待验证哈希值皆不同。
区块头信息为包含在区块的区块头内的信息,其可以为上一区块头的哈希值、交易信息的默克尔路径(例如,Coinbase交易的Merkle路径)、交易信息的交易输出(transaction-out)部分及难度值,其中,交易信息包括可构成默克尔树的创币交易信息及若干个用户交易信息。
额外信息至少包含标识信息的。生成包含标识信息的额外信息时,矿工节点可以将矿工节点的标识信息与创币交易信息拼接成新交易信息,此处,新交易信息为额外信息。举例而言,矿工节点从分片节点领取分片任务后,其会在分配的搜索子空间上进行哈希运算。首先,矿工节点会产生一个额外信息,然后将额外信息与分片节点发送的coinbase交易的transaction-out部分拼接构造成coinbase交易。额外信息的数据结构以矿工节点的身份信息作为开头,后面添加任意额外信息。
矿工节点根据额外信息、区块头信息及随机数计算出搜索子空间的待验证哈希值的方式多种多样,例如,在一些实施例中,矿工节点在拼接出新交易信息后,根据区块头中交易信息的默克尔路径,计算出默克尔根哈希值;将默克尔根哈希值与所述随机数作哈希运算,以计算出搜索子空间的待验证哈希值。
举例而言,在矿工节点拼接出新交易信息(coinbase交易)后,矿工节点可以利用分片节点发送的各个交易信息的默克尔路径,计算交易列表的默克尔根哈希值。于是,矿工节点选择对应随机数,将默克尔根哈希值与随机数作哈希运算,以计算出搜索子空间的待验证哈希值。此时,矿工节点可以通过调整随机数以得到满足特定难度值的默克尔根哈希值。若矿工节点通过调整随机数不能得到满足特定难度值的默克尔根哈希值,矿工节点可以重新产生额外信息,以此构造新的新交易信息。如前所述,当一个新交易信息被构造出,随机数的搜索空间便发生改变,矿工节点的搜索子空间也便发生改变。于是,矿工节点便可以重新基于新的搜索子空间进行工作量计算,从而获取满足预设条件的随机数。
由于每个矿工节点的标识信息是不相同的,因此每个矿工节点构造的新交易信息都不相同,那么每个矿工节点对应的搜索子空间也都不相同,因此,对于分片节点分配的相同区块信息,各个矿工节点之间出现的工作量计算冲突的概率非常低。
下面,本发明实施例提供下述验证方法,以验证采用本发明各个实施例提供的工作量证明协同工作方法的优越性。
关于哈希值碰撞的计算,其可以通过m个人中存在相同生日的概率来近似得出,假设一年为N天,那么对于m个人,其存在两个人生日相同的概率如下:
Figure BDA0001781500850000201
设p(m)为当有m个不同的交易信息(coinbase数据)时,各个交易信息的默克尔根哈希值相同的概率。假设POW算法支持256位输出的哈希值,因此输出结果具有2256种,即上述公式中的N为2^256,那么p(m)值可用如下公式计算:
Figure BDA0001781500850000202
表2为m取不同值时的p(m)的取值,如表2所示:
表2
m 2<sup>16</sup> 2<sup>32</sup> 2<sup>64</sup> 2<sup>96</sup> 2<sup>127</sup> 2<sup>128</sup>
P(m) 2<sup>-225</sup> 2<sup>-193</sup> 2<sup>-129</sup> 2<sup>-65</sup> 0.125 0.5
由表2可知,当碰撞概率至少达到50%,则至少需要有2128个不同的交易信息,这意味着发生碰撞是很难达成的。因此,若每个矿工节点拥有不同的标识信息作为额外信息的前缀,那么矿工节点的搜索子空间的重复概率非常低。
为了使矿工节点通过挖矿以维护区块链***正常运行,分片节点除了分配任务给矿工节点外,其会发放奖励给完成工作量证明的矿工节点。
为了验证本实施例提出的工作量证明协同工作方法的有效性,本实施例使用Go语言编写相关逻辑代码作实验验证。
首先,设置两组矿工节点进行工作量证明计算。在第一组中不进行分片,使用7个分片节点,每个分片节点只有一个矿工节点为其工作,每个矿工节点需要遍历整个搜索空间。在第二组中,使用一个分片节点,此分片节点下有7个矿工节点为其工作,分片节点负责将工作量分配给该7个矿工节点。在相同难度值下,记录两组矿工节点完成工作量证明达成一致的时间,其中,统计了1000次哈希值的计算。具体实验结果如图6a与图6b所示。
由图6a可知,分片的一组要比未分片的一组计算出满足预设条件的待验证哈希值所花费时间比较少,对于一次哈希值计算,采用分片方式比不分片方式快将近30秒。
由图6b可知,未使用分片方式的一组与使用分片的一组相比存在一个更大的分布。未分片方式的四分差是分片方式的将近3.7倍。
另外,对于计算出一个满足预设条件的待验证哈希值,不分片的工作量证明所需的平均时间为21.62秒,分片方式的工作量证明所需的平均时间仅为5.371秒。由此可知,采用分片方式的工作量证明达成效率是不分片方式的近4倍。
另外,对于分片方式的一组,四分之三的计算时间都在8秒以下,其中耗时最长的时间为47秒。而在不分片方式的一组中,四分之三的计算完成在31秒之内,耗时最长的时间为174秒。由此可见,相较于传统POW共识计算,在相同难度值的情况下,采用分片方式极大地提升了工作量的完成效率。
需要说明的是,在上述各个实施例中,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。
作为本发明实施例的另一方面,本发明实施例提供一种校验节点。请参阅图7,校验节点700包括:一个或多个处理器71以及存储器72。其中,图7中以一个处理器71为例。
处理器71和存储器72可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器72作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的方法对应的程序指令/模块。处理器71通过运行存储在存储器72中的非易失性软件程序、指令以及模块,从而执行上述各个实施例的方法。
存储器72可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器72可选包括相对于处理器71远程设置的存储器,这些远程存储器可以通过网络连接至处理器71。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器72中,当被所述一个或者多个处理器71执行时,执行上述任意方法实施例中的方法。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使区块链节点执行如上任一项所述的共识验证方法。
本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被校验节点执行时,使所述校验节点执行任一项所述的共识验证方法。
综上所述,一方面,其能够保证在同一时间只有一个合法区块生成,避免区块链分叉现象出现。另一方面,在共识验证过程中,各个校验节点均能参与共识验证,其能够确保***记账权不会被中心化节点控制。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种共识验证方法,应用于区块链***中的校验节点,其特征在于,所述方法包括:
将随机数的搜索空间切分成若干个搜索子空间,接收候选区块,其中,所述候选区块为基于满足预设条件的随机数生成的区块;
获取搜索子空间的待验证哈希值与预设目标哈希值;
根据待验证哈希值与预设目标哈希值,以及根据拜占庭容错算法,共识验证所述候选区块。
2.根据权利要求1所述的方法,其特征在于,所述候选区块由矿工节点采用工作量证明算法生成的。
3.根据权利要求1所述的方法,其特征在于,所述区块链***容忍坏校验节点的最大数量不超过所述区块链***中全部校验节点的三分之一。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到共识验证完所述候选区块并记录于所述区块链***时,所述区块链***的非校验节点同步更新区块账本,以将所述候选区块记录于所述区块账本中。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述校验节点包括主校验节点与若干副校验节点;
所述根据拜占庭容错算法,共识验证所述候选区块,包括:
根据所述主校验节点设置的视图,所述主校验节点接收所述候选区块;
所述主校验节点校验所述候选区块,若所述候选区块有效,对所述候选区块签名,并将签名后的候选区块打包广播至所有副校验节点;
每个所述副校验节点验证所述候选区块的合法性,若合法,对所述候选区块签名并广播其它所述副校验节点及所述主校验节点;
所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的合法性,若合法,统计发送合法候选区块的校验节点数量,若校验节点数量超过所述区块链***中全部校验节点的三分之二,每个所述校验节点向其它校验节点广播一个携带有自身签名的提交信息;
每个所述校验节点皆验证所述提交信息,并统计接收到并合法的提交信息的数量,每个所述副校验节点收集提交信息,待后续收到所述主校验节点提交的区块信息后,通过搜集的提交信息检查所述区块信息是否合法;
所述主校验节点验证签名后的提交信息的合法性,若合法,统计签名后并合法的提交信息的数量,若签名后并合法的提交信息的数量超过所述区块链***中全部校验节点的三分之二,将所述候选区块记录于所述区块链网络中,并将合法的候选区块以及接收到的合法提交信息打包签名后,广播至全网。
6.根据权利要求5所述的方法,其特征在于,所述每个所述副校验节点验证所述候选区块的合法性,包括:
每个所述副校验节点验证所述候选区块的签名是否合法;
若合法,验证所述候选区块的有效性;
若非法,停止向其它所述副校验节点及所述主校验节点广播所述候选区块;
若有效,则所述候选区块属于合法;
若无效,则所述候选区块属于非法。
7.根据权利要求5所述的方法,其特征在于,所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的合法性,包括:
所有校验节点皆各自验证所述每个所述副校验节点发送的候选区块的有效性及签名,若所述候选区块有效并所述签名合法,则所述候选区块合法。
8.根据权利要求5所述的方法,其特征在于,所述根据拜占庭容错算法,共识验证所述候选区块,还包括:
所述副校验节点监测到所述主校验节点为故障节点或作恶节点,触发视图更换事件,以更换视图。
9.一种校验节点,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行如权利要求1至8任一项所述的共识验证方法。
10.一种区块链***,其特征在于,包括若干个如权利要求9所述的校验节点及矿工节点。
CN201810994193.5A 2018-08-29 2018-08-29 共识验证方法、校验节点及区块链*** Active CN110875893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810994193.5A CN110875893B (zh) 2018-08-29 2018-08-29 共识验证方法、校验节点及区块链***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810994193.5A CN110875893B (zh) 2018-08-29 2018-08-29 共识验证方法、校验节点及区块链***

Publications (2)

Publication Number Publication Date
CN110875893A CN110875893A (zh) 2020-03-10
CN110875893B true CN110875893B (zh) 2022-03-08

Family

ID=69714718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810994193.5A Active CN110875893B (zh) 2018-08-29 2018-08-29 共识验证方法、校验节点及区块链***

Country Status (1)

Country Link
CN (1) CN110875893B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111526045B (zh) * 2020-03-25 2023-05-02 莘上信息技术(上海)有限公司 一种针对区块链的故障处理方法及***
CN111368343B (zh) * 2020-03-31 2022-11-01 北京俩撇科技有限公司 一种区块链***、数据存储方法及装置
CN111563830B (zh) * 2020-05-09 2023-11-28 电子科技大学 一种基于石墨烯区块链的分布式能源交易***
CN111523899B (zh) * 2020-07-03 2021-09-07 支付宝(杭州)信息技术有限公司 联盟链的共识方法、数据校验方法、装置及***
CN112100659B (zh) * 2020-09-14 2023-04-07 电子科技大学 一种区块链联邦学习***及拜占庭攻击检测方法
CN112114852A (zh) * 2020-09-18 2020-12-22 山大地纬软件股份有限公司 用于避免区块链分叉的区块链节点升级***及方法
CN112511312B (zh) * 2020-11-23 2023-10-17 北京微芯区块链与边缘计算研究院 一种可组装的共识方法及***
CN112347193A (zh) * 2020-11-27 2021-02-09 网易(杭州)网络有限公司 基于区块链的交易打包方法及装置、电子设备
CN112486518B (zh) * 2020-12-01 2024-03-12 北京微芯区块链与边缘计算研究院 共识算法装配方法及装置
CN112929354B (zh) * 2021-01-28 2022-04-08 恒宝股份有限公司 一种实用型拜占庭容错抗攻击死锁的方法及装置
CN113489743B (zh) * 2021-07-26 2022-12-23 广东辰宜信息科技有限公司 应用于区块链***的共识实现方法及装置
CN113495927B (zh) * 2021-09-06 2022-02-25 支付宝(杭州)信息技术有限公司 区块管理方法及装置
CN114090693B (zh) * 2022-01-18 2022-05-17 安徽中科晶格技术有限公司 基于拜占庭容错的区块链见证共识方法、***、设备及存储介质
GB2620902A (en) * 2022-03-23 2024-01-31 The Blockhouse Tech Limited Blockchain data processing
CN115941191B (zh) * 2022-08-24 2023-09-22 明启智能科技(广东)有限公司 区块链中无共识区块生成与校验方法及见证节点

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445711A (zh) * 2016-08-28 2017-02-22 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
CN107360206A (zh) * 2017-03-29 2017-11-17 阿里巴巴集团控股有限公司 一种区块链共识方法、设备及***
CN107395353A (zh) * 2017-04-24 2017-11-24 阿里巴巴集团控股有限公司 一种区块链共识方法及装置
CN108241926A (zh) * 2017-08-25 2018-07-03 杭州复杂美科技有限公司 授权共识算法的区块链方案
CN108390891A (zh) * 2018-03-28 2018-08-10 电子科技大学天府协同创新中心 基于私有区块链的信息保护方法
CN108848056A (zh) * 2018-05-03 2018-11-20 南京理工大学 基于验证的区块链共识方法
EP3281115B1 (en) * 2016-10-04 2019-06-19 Nec Corporation Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
EP3531668A1 (en) * 2017-03-21 2019-08-28 Alibaba Group Holding Limited Method and device for processing service request

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445711A (zh) * 2016-08-28 2017-02-22 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
EP3281115B1 (en) * 2016-10-04 2019-06-19 Nec Corporation Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
EP3531668A1 (en) * 2017-03-21 2019-08-28 Alibaba Group Holding Limited Method and device for processing service request
CN107360206A (zh) * 2017-03-29 2017-11-17 阿里巴巴集团控股有限公司 一种区块链共识方法、设备及***
CN107395353A (zh) * 2017-04-24 2017-11-24 阿里巴巴集团控股有限公司 一种区块链共识方法及装置
CN108241926A (zh) * 2017-08-25 2018-07-03 杭州复杂美科技有限公司 授权共识算法的区块链方案
CN108390891A (zh) * 2018-03-28 2018-08-10 电子科技大学天府协同创新中心 基于私有区块链的信息保护方法
CN108848056A (zh) * 2018-05-03 2018-11-20 南京理工大学 基于验证的区块链共识方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安全存储医疗记录的区块链方法研究;梅颖;《江西师范大学学报( 自然科学版)》;20170930;第484-489页 *

Also Published As

Publication number Publication date
CN110875893A (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
CN110875893B (zh) 共识验证方法、校验节点及区块链***
CN109508982B (zh) 区块链主链加并行多子链的随机并行拜占庭容错共识方法
CN111681003B (zh) 资源跨链转移方法、装置、计算机设备以及存储介质
EP3624415B1 (en) A decentralized asset custody and clearing platform system
CN111311414A (zh) 一种基于一致性哈希算法的区块链多方共识方法
CN110874351A (zh) 工作量证明协同工作方法、区块链节点及区块链***
CN111988203B (zh) 节点选举方法、装置及存储介质
CN111698094B (zh) 一种基于区块链***的共识方法及区块链***
CN111682942B (zh) 一种应用于许可链的二元加权拜占庭容错共识方法
KR101798119B1 (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하고 등록된 주주명부 파일을 검증하는 방법 및 서버
CN115665170B (zh) 基于信誉和节点压缩机制的区块链共识方法
CN110286849B (zh) 数据存储***的数据处理方法和装置
CN111711526B (zh) 一种区块链节点的共识方法及***
CN110599177A (zh) 一种交易验证方法及相关设备
CN110400218B (zh) 基于陪审团制度的分层共识方法、区块链数据处理***
CN114422155B (zh) 提案共识执行方法、区块链***、设备和存储介质
CN109919760A (zh) 基于投票机制的拜占庭容错共识算法
CN113837758A (zh) 一种区块链***的共识方法及装置
CN112395113B (zh) 实用拜占庭容错共识方法及装置、可读存储介质
CN110599175A (zh) 一种区块处理方法及相关设备
WO2023185046A1 (zh) 区块链***中共识节点的轮换方法、节点和区块链***
CN114265898A (zh) 数据处理方法、装置、设备和存储介质
CN111107103B (zh) 一种联盟链的性能维持方法、***及存储介质
KR20170099152A (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하는 방법 및 서버
Leshkowitz et al. Scalable block execution via parallel validation

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230403

Address after: No. 4145, Building 4, Yard 10, Xixiaoying South Ring Road, Sujiatuo Town, Haidian District, Beijing, 100194

Patentee after: Beijing Mingtai Hengtong Information Technology Co.,Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Patentee before: Shenzhen Qiyuan Information Service Co.,Ltd.