CN111368008B - 基于区块链的数据处理方法、装置、设备及可读存储介质 - Google Patents

基于区块链的数据处理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN111368008B
CN111368008B CN202010458171.4A CN202010458171A CN111368008B CN 111368008 B CN111368008 B CN 111368008B CN 202010458171 A CN202010458171 A CN 202010458171A CN 111368008 B CN111368008 B CN 111368008B
Authority
CN
China
Prior art keywords
consensus
node
accounting
block
voting information
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
CN202010458171.4A
Other languages
English (en)
Other versions
CN111368008A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010458171.4A priority Critical patent/CN111368008B/zh
Publication of CN111368008A publication Critical patent/CN111368008A/zh
Application granted granted Critical
Publication of CN111368008B publication Critical patent/CN111368008B/zh
Priority to JP2022539707A priority patent/JP7325894B2/ja
Priority to EP21812015.2A priority patent/EP4030314A4/en
Priority to PCT/CN2021/088899 priority patent/WO2021238514A1/zh
Priority to KR1020227016044A priority patent/KR20220074971A/ko
Priority to US17/730,044 priority patent/US11914579B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请实施例公开了一种基于区块链的数据处理方法、装置、设备及可读存储介质,方法包括:第一节点向第二节点发送针对目标区块的第一共识投票信息,接收第二节点发送的第二共识投票信息;根据第一共识投票信息与第二共识投票信息确定目标区块的共识结果,若为共识通过结果,则启动记账时长窗口,在记账时长窗口内对目标区块进行记账处理,并接收第二节点发送的第一记账完成消息;若完成对目标区块的记账处理,则向第二节点发送第二记账完成消息;若第一记账完成消息与第二记账完成消息的数量之和大于数量阈值,则关闭记账时长窗口,进入目标区块的后继区块的共识业务流程。采用本申请,可以提高共识节点对区块的共识成功率。

Description

基于区块链的数据处理方法、装置、设备及可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链还可以进行数据加密传输、节点识别和安全访问,是一种先进的分布式基础架构。
在区块链网络中,对于交易数据被写入账本的流程可以为:共识节点获取交易数据,再将该交易数据打包进区块,对区块执行共识流程,待共识通过后将携带该交易数据的区块写入账本。
在共识节点将交易数据写入账本的过程中,不同的共识节点记账的处理速度可能不同,即有快有慢,那么先记账完成的共识节点就会先进入下一个区块的共识流程;而记账较慢的共识节点会因为速度慢,存储的区块跟不上记账较快的共识节点,则在执行下一个区块的共识流程时,可能会因存储的区块高度不一致而导致共识失败,从而影响共识成功率。
发明内容
本申请实施例提供一种基于区块链的数据处理方法、装置、设备及可读存储介质,可以提高共识节点对区块的共识成功率。
本申请实施例一方面提供一种基于区块链的数据处理方法,包括:
第一节点向第二节点发送针对目标区块的第一共识投票信息,接收上述第二节点发送的针对上述目标区块的第二共识投票信息;
根据上述第一共识投票信息与上述第二共识投票信息,确定上述目标区块的共识结果,在上述共识结果为共识通过结果时,启动记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理,在上述记账时长窗口内接收上述第二节点发送的针对上述目标区块的第一记账完成消息;
若上述第一节点在上述记账时长窗口内完成对上述目标区块的记账处理,则上述第一节点向上述第二节点发送第二记账完成消息;
若上述第一记账完成消息与上述第二记账完成消息的总数量之和大于数量阈值,则上述第一节点关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
本申请实施例一方面提供一种基于区块链的数据处理装置,包括:
投票信息交互模块,用于向第二节点发送针对目标区块的第一共识投票信息,接收上述第二节点发送的针对上述目标区块的第二共识投票信息;
共识结果确定模块,用于根据上述第一共识投票信息与上述第二共识投票信息,确定上述目标区块的共识结果;
记账处理模块,用于在上述共识结果为共识通过结果时,启动记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理;
记账完成接收模块,用于在上述记账时长窗口内接收上述第二节点发送的针对上述目标区块的第一记账完成消息;
记账完成通知模块,用于若在上述记账时长窗口内完成对上述目标区块的记账处理,则向上述第二节点发送第二记账完成消息;
窗口关闭模块,用于若上述第一记账完成消息与上述第二记账完成消息的总数量之和大于数量阈值,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,上述共识结果确定模块,包括:
第一目标数量确定单元,用于在上述第二共识投票信息中,确定属于赞成投票的第二共识投票信息的数量,作为目标数量;
赞成票数量确定单元,用于若上述第一共识投票信息属于赞成投票,则根据上述第一共识投票信息和上述目标数量,确定赞成投票总数量;
共识通过确定单元,用于若上述赞成投票总数量与节点总数量的比值大于或等于比例阈值,则将上述目标区块的共识结果确定为共识通过结果;上述节点总数量为上述第一节点与上述第二节点的总数量;
共识失败确定单元,用于若上述赞成投票总数量与上述节点总数量的比值小于上述比例阈值,则将上述目标区块的共识结果确定为共识失败结果。
其中,上述记账处理模块,包括:
数量获取单元,用于在上述共识结果为共识通过结果时,获取上述第二共识投票信息的数量;
第二目标数量确定单元,用于获取上述第二节点的节点数量,作为第二目标数量;
记账处理单元,用于若上述第二共识投票信息的数量小于上述第二目标数量,则启动上述记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理。
其中,还包括:
窗口更新模块,用于若上述第二共识投票信息的数量等于上述第二目标数量,则根据上述第二节点的性能参数更新上述记账时长窗口,得到更新后的记账时长窗口;上述更新后的记账时长窗口对应的时长阈值小于上述记账时长窗口对应的时长阈值;
窗口启动模块,用于启动上述更新后的记账时长窗口,在上述更新后的记账时长窗口内对上述目标区块进行记账处理;
流程进入模块,用于若在上述更新后的记账时长窗口内完成对上述目标区块的记账处理,则进入上述目标区块的后继区块的共识业务流程。
其中,上述记账完成通知模块,包括:
投票信息接收单元,用于在上述记账时长窗口内,接收剩余第二节点发送的针对上述目标区块的第三共识投票信息;上述剩余第二节点为多个上述第二节点中,除了已发送上述第二共识投票信息的第二节点以外的节点;
投票数量获取单元,用于若在上述记账时长窗口内完成对上述目标区块的记账处理,则获取上述第三共识投票信息的总数量;
相加处理单元,用于将上述第三共识投票信息的数量与上述第二共识投票信息的数量进行相加,得到共识投票总数量;
权限检测单元,用于根据上述共识投票总数量与上述第二目标数量,检测上述第一节点的消息发送权限;
记账完成发送单元,用于在上述第一节点具备上述消息发送权限时,向上述第二节点发送第一记账完成消息。
其中,上述权限检测单元,包括:
第一权限确定子单元,用于若上述共识投票总数量小于上述第二目标数量,则确定上述第一节点具备上述消息发送权限;
第二权限确定子单元,用于若上述共识投票总数量等于上述第二目标数量,则确定上述第一节点未具备上述消息发送权限。
其中,还包括:
共识流程进入模块,用于在上述第一节点未具备上述消息发送权限时,关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,还包括:
第一时长阈值获取模块,用于获取上述记账时长窗口对应的时长阈值;
第一累计时长统计模块,用于统计上述第一节点处于上述记账时长窗口中的累计时长;
第一区块共识进入模块,用于若上述累计时长与上述时长阈值相等,且上述第一记账完成消息与上述第二记账完成消息的总数量之和,小于上述数量阈值,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,还包括:
第二时长阈值获取模块,用于获取上述记账时长窗口对应的时长阈值;
第二累计时长统计模块,用于获取上述第一节点处于上述记账时长窗口中的累计时长;
第二区块共识进入模块,用于若上述累计时长与上述时长阈值相等,且上述第一节点在上述记账时长窗口内未完成对上述目标区块的记账处理,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
上述存储器存储有计算机程序,上述计算机程序被上述处理器执行时,使得所诉处理器执行如本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,执行如本申请实施例中的方法。
本申请实施例在区块通过共识,进行区块记账时,通过增设记账时长窗口,使得共识节点(如第一节点与第二节点)在记账时长窗口内进行记账,每个共识节点在记账完成后都可以进行广播通知,在进行记账的共识节点中,有超过数量阈值的共识节点均完成区块记账时,这些完成记账的共识节点才会关闭记账时长窗口,一起进入下一个区块的共识流程。这样可以使先完成区块记账的共识节点,在记账时长窗口内等待其他共识节点完成区块记账,再一起进入下一个区块的共识流程。可以看出,在记账时长窗口中,因为速度快的共识节点等待了速度较慢的共识节点进行记账,可以使得一起进入下一个区块的共识流程的共识节点存储有相同的区块,这样在进行下一个区块的共识时,可以减少共识节点因为区块高度不一致而导致共识失败的情况,从而可以提高共识业务流程的共识成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图3是本申请实施例提供的一种记账场景示意图;
图4是本申请实施例提供的一种记账场景示意图;
图5是本申请实施例提供的一种记账场景示意图;
图6是本申请实施例提供的一种记账场景示意图;
图7是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图8是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请实施例提供的一种网络架构示意图。区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为核心节点、数据节点以及轻节点,其中核心节点负责区块链全网的共识,也就是说核心节点为区块链网络中的共识节点。对于区块链网络中交易数据被写入账本的过程可以为,客户端发送交易数据至数据节点或轻节点,随后该交易数据以接力棒的方式在区块链网络中的数据节点或轻节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识,在共识通过后,将携带该交易数据的区块写入账本。如图1所示,该***架构可以包括第一节点集群1000以及第二节点集群100,该第一节点集群1000可以包括至少两个第一节点,第二节点集群100可以包括至少两个第二节点。如图1所示,该第一节点集群1000可以包括第一节点1000a、第一节点1000b、…、第一节点1000c,该第二节点集群100具体可以包括第二节点100a、第二节点100b、…、第二节点100c。其中,该第一节点1000a、第一节点1000b、…、第一节点1000c以及该第二节点100a、第二节点100b、…、第二节点100c,均为核心节点(即共识节点)。
如图1所示,第二节点100a、第二节点100b、…、第二节点100c可以分别与第一节点1000a、第一节点1000b、…、第一节点1000c进行网络连接,以便于第二节点可以通过该网络连接与第一节点进行数据交互;第二节点100a、第二节点100b、…、第二节点100c互相连接,以便于第二节点之间可以进行数据交互,第一节点1000a、第一节点1000b、…、第一节点1000c互相连接,以便于第一节点之间可以进行数据交互。以第一节点1000a为例,第一节点1000a在接收到由数据节点或轻节点发送的交易数据后,可以将该交易数据存储至内存池(如交易池)中,并更新其用于记录输入数据的哈希树;之后,将更新时间戳更新为接收到该交易数据的时间,并尝试不同的随机数进行特征值计算,当得到特征值时,便可将该交易数据对应存储,生成区块头和区块主体,得到新生成的区块;随后,第一节点1000a可以根据区块链网络中其他核心节点(即共识节点)的节点标识,将上述新生成的区块分别发送给其所在的区块链网络中的其他核心节点,由其他核心节点对新生成的区块进行校验(即进行共识),并在完成校验后将上述新生成的区块添加至其所属的账本中。其中,区块链网络中的每个核心节点,均具有与其对应的节点标识,而且区块链网络中的每个核心节点均可以存储有区块链网络中其他核心节点的节点标识,以便后续根据其他核心节点的节点标识,将生成的区块广播至区块链网络中的其他核心节点,其他核心节点会对该新生成的区块进行共识,并在共识通过后将该新生成的区块也添加至其他核心节点所属的账本中,这样使得区块链网络中全部核心节点上存储的交易数据均一致。
对于区块链网络中的核心节点(包括第一节点与第二节点)添加区块至所属区块链中的过程,也就是核心节点对区块进行记账的过程,本申请新增了记账时长窗口,在区块通过共识后,核心节点需要在记账时长窗口中对区块进行记账处理。具体方法可以为,以第一节点1000a、第二节点100a、第二节点100b以及第二节点100c为例,针对目标区块的共识,第一节点1000a、第二节点100a、第二节点100b以及第二节点100c可以互相广播共识投票信息,其中,第一节点1000a、第二节点100a以及第二节点100b均为赞成投票,第二节点100c因网络原因,还未将共识投票信息广播出来。因为在第一节点1000a、第二节点100a、第二节点100b以及第二节点100c共4个共识节点中,有3个共识节点的共识投票信息都为赞成票,赞成票的节点数量占全部节点数量的比例3/4超过了比例阈值2/3,则可以将该目标区块的共识结果确定为共识通过结果,则第一节点1000a、第二节点100a、第二节点100b以及第二节点100c均可以启动记账时长窗口,并在记账时长窗口内对该目标区块进行记账处理;在记账时长窗口内,若有节点完成了对目标区块的记账处理任务,则可以进行广播,以通知其他节点自己已完成了对目标区块的记账处理。若在记账时长窗口内的某个时刻,有超过2/3的节点在该记账时长窗口内都完成了对目标区块的记账处理任务,则这些完成记账处理任务的节点在确定有2/3的节点均完成记账处理任务时,可以关闭记账时长窗口,进入到后续流程,如进入该目标区块的后继区块的共识业务流程中。如,记账时长窗口为10s,第一节点1000a在第2s完成对目标区块的记账处理,进行了广播通知,第一节点1000a会在记账时长窗口内等待第二节点100a、第二节点100b以及第二节点100c的完成通知,在第2.5s时,第二节点100a完成了对目标区块的记账处理并进行广播通知,在第3.5s时,第二节点100b完成了对目标区块的记账处理并进行广播通知,则在第3.5s时,共有3个共识节点(第一节点1000a、第二节点100a、第二节点100b)都完成了对目标区块的记账处理,在第一节点1000a、第二节点100a、第二节点100b以及第二节点100c共4个共识节点中,有3个共识节点都完成了对目标区块的记账处理任务。而第一节点1000a、第二节点100a以及第二节点100b在第3.5s时,均接收到了其他完成记账处理任务的共识节点的完成通知消息,也就是说,第一节点1000a、第二节点100a以及第二节点100b中的每个共识节点均可以确定,在第3.5s时,完成记账处理任务的共识节点数量占全部共识节点的总数量的比例为3/4,超过了比例阈值2/3,则在第3.5s时,第一节点1000a、第二节点100a、第二节点100b会关闭该记账时长窗口,进入到后续流程中,即不再等待第二节点100c完成记账。
可选的,可以理解的是,上述第一节点集群1000中的每个第一节点与第二节点集群100中的每个第二节点均可以为云服务器,这些云服务器可以提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。本申请实施例中的节点可以为计算机设备。
请参见图2,是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图2所示,该方法可以包括:
步骤S101,第一节点向第二节点发送针对目标区块的第一共识投票信息,接收上述第二节点发送的针对上述目标区块的第二共识投票信息。
本申请中,第一节点与第二节点均可以为区块链网络中的核心节点(共识节点),可以负责区块链全网的共识,以及将携带交易数据的区块写入至本地账本中。共识节点在收到交易数据后,可以将该交易数据打包进区块,与其他共识节点之间进行共识,其他共识节点会互相发送自己的共识投票信息,该共识投票信息包括赞成共识通过投票与拒绝共识通过投票,则这里的第一共识投票信息与第二共识投票信息也可以包括赞成共识通过投票与拒绝共识通过投票。在区块链网络中,每个核心节点在根据交易数据生成一个新的区块(如目标区块)时,可以将该新生成的区块发送至区块链网络中的其他核心节点,由其他核心节点来对该新生成的区块进行校验,也就是说,区块链网络中的核心节点对于新生成的区块,会发送共识投票信息,向其他核心节点通知自己的校验结果,若校验通过,则共识投票信息就为赞成该新生成的区块通过共识,若校验不合格,则共识投票信息就为拒绝该新生成的区块通过共识。其中,对于生成新区块的核心节点,可以作为出块节点,则这里的第一节点与第二节点均可以作为出块节点,在节点为出块节点时,其共识投票信息是赞成区块通过共识的。
步骤S102,根据上述第一共识投票信息与上述第二共识投票信息,确定上述目标区块的共识结果,在上述共识结果为共识通过结果时,启动记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理,在上述记账时长窗口内接收上述第二节点发送的针对上述目标区块的第一记账完成消息。
本申请中,第一节点可以根据接收到的第二节点发送的第二共识投票信息,来确定出目标区块的共识结果。具体确定方法可以为,第一节点可以在该第二共识投票信息中,确定出属于赞成投票(也就是赞成目标区块通过共识)的第二投票信息的数量,作为第一目标数量;若该第一节点是赞成该目标区块通过共识的,则可以根据该第一共识投票和上述第一目标数量,确定出赞成投票总数量;若该赞成投票总数量与节点总数量的比值大于或等于比例阈值,则可以将该目标区块的共识结果确定为共识通过结果;其中,该节点总数量为该第一节点与上述第二节点的总数量;若该赞成投票总数量与该节点总数量的比值小于该比例阈值,则可以将该目标区块的共识结果确定为共识失败结果。因为第一节点与第二节点为区块链网络中的核心节点(共识节点),也就是说,在区块链网络中,有超过或达到比例阈值的共识节点均赞成目标区块通过共识时,才会将该目标区块的共识结果确定为共识通过结果;在区块链网络中,赞成目标区块通过共识的核心节点没有超过比例阈值,将该目标区块的共识结果确定为共识失败结果。其中,该比例阈值可以为小数、百分比、分数等数值呈现形式,如,比例阈值为0.67、2/3、80%等,在此不再进行一一举例。
如,共识节点共包括第一节点a、第二节点d、第二节点b以及第二节点c,对于区块a的共识投票,第一节点a的第一共识投票信息为赞成投票,第二节点d的第二共识投票信息为拒绝共识通过投票,第二节点b的第二共识投票信息为赞成投票,第二节点c的第二共识投票信息为赞成投票。则在第一节点a、第二节点d、第二节点b以及第二节点c这4个共识节点中,有第一节点a、第二节点b以及第二节点c共3个共识节点都为赞成投票,则赞成投票总数量为3,赞成投票总数量3与节点总数量4的比值为3/4。比例阈值为2/3,可以看出,比值3/4大于了比例阈值2/3,则第一节点a可以将该区块a的共识结果确定为共识通过结果。
进一步地,在确定目标区块为共识通过结果时,第一节点可以获取该第二共识投票信息的数量,并获取该第二节点的节点数量,作为第二目标数量;若该第二共识投票信息的数量小于该第二目标数量,第一节点可以启动该记账时长窗口,在该记账时长窗口内对该目标区块进行记账处理。可以理解的是,该第二共识投票信息的数量小于该第二目标数量,也就是说第一节点只接收到了部分第二节点的共识投票信息,还有一部分的第二节点可能因为网络延迟、校验速度慢等原因,未及时发送共识投票信息到第一节点,第一节点未接收到这一部分的第二节点的共识投票信息,在这种情况下,第一节点会启动记账时长窗口,并在记账时长窗口内进行记账。也就是说,在目标区块的共识结果为共识通过结果,且该第一节点只接收到了部分第二节点的共识投票信息时,第一节点会启动记账时长窗口,在记账时长窗口内进行对目标区块的记账处理。
如,共识节点共包括第一节点a、第二节点d、第二节点b以及第二节点c,对于区块b的共识投票,第一节点a为赞成区块b通过共识,第二节点d为赞成区块b通过共识,第二节点b为赞成区块b通过共识,则第一节点a、第二节点d以及第二节点b的共识投票信息均为赞成投票;而第二节点c因为网络原因还未广播出共识投票信息,则对于第一节点a而言,第一节点a的第一共识投票信息为赞成投票,第二节点d的共识投票信息为第二共识投票信息,为赞成投票;第二节点b的共识投票为第二共识投票信息,为赞成投票,则在区块链网络中,共有第一节点a、第二节点d以及第二节点b共3个共识节点均为赞成投票,虽然还未接收到第二节点c的共识投票信息(第一节点a只接收到部分第二节点的共识投票信息,第二共识投票信息数量小于第二节点的节点数量),但在接收到的共识投票信息中,赞成投票的节点数量(3个)与区块链网络中节点总数量(4个)的比例值3/4已超过了比例阈值2/3,则第一节点a会启动记账时长窗口,并在该记账时长窗口内进行记账处理。也就是说,第一节点在只接收到部分第二节点发送的共识投票信息,且在这些部分第二节点与第一节点中,赞成投票占区块链网络中的节点总数量的比例值超过了比例阈值,则第一节点不会再管剩下的第二节点的共识投票信息是否赞成,会直接启动记账时长窗口,并在该记账时长窗口内对目标区块进行记账处理。
第一节点与第二节点在记账时长窗口内进行记账处理时,若有节点完成了对目标区块的共识,则可以广播记账完成消息,以通知其他节点自己已经完成了对目标区块的记账处理。则在记账时长窗口内,若有第二节点完成了对目标区块的记账处理,则第二节点会进行广播通知,第一节点可以接收到完成记账的第二节点的记账完成消息。
步骤S103,若上述第一节点在上述记账时长窗口内完成对上述目标区块的记账处理,则上述第一节点向上述第二节点发送第二记账完成消息。
本申请中,第一节点是在只接收到部分第二节点的共识投票信息的情况下,会进入到记账时长窗口,第一节点在记账时长窗口对目标区块进行记账处理时,仍然可以继续接收剩余第二节点(第二节点中,除已发送第二共识投票信息的第二节点以外的节点,即还未发送共识投票信息的第二节点)发送过来的共识投票信息(第三共识投票信息)。也就是说,剩余第二节点可能因为网络或其他原因,未及时将共识投票信息发送出来,在第一节点在记账时长窗口中进行记账处理时,才接收到该剩余第二节点的共识投票信息,第一节点可以根据剩余第二节点的第三共识投票信息来确定自己是否具备发送记账完成消息的消息发送权限。具体方法可以为,若该第一节点在该记账时长窗口内完成了对目标区块的记账处理,则第一节点可以获取第三共识投票信息的数量;第一节点可以将该第三共识投票信息的数量与第二共识投票信息的数量进行相加,得到共识投票总数量;共识投票总数量小于上述第二节点的节点数量(第二目标数量),则第一节点可以确定自己具备消息发送权限,则第一节点可以向第二节点发送记账完成消息,广播通知自己已完成区块记账;反之若共识投票总数量等于该第二节点的第二目标数量,则第一节点可以确定自己未具备消息发送权限,则第一节点在记账时长窗口内完成区块记账时,不会发送记账完成消息至第二节点,可以直接关闭记账时长窗口,并进入到该目标区块的后继区块的共识业务流程中。需要说明的是,这里若共识投票总数量等于该第二节点的第二目标数量,则第一节点可以确定自己在记账时长窗口中接收到了全部第二节点的共识投票信息,第一节点会默认区块链网络中其他节点也接收到了全部的共识投票信息,其他节点可以保持相近的记账速度。则第一节点为了减少发送消息所带来的流量消耗,第一节点会取消这个消息发送权限,由此,因为未具备消息发送权限,则在记账完成时,共识节点可以不再给其他节点发送记账完成消息。从而不仅可以减少流量消耗,也可以提高进入后继区块的共识业务流程的速度,一旦记账完成且接收到了全票,就不再发送完成通知,直接关闭记账时长窗口,进入到后继区块的共识业务流程。
可选的,可以理解的是,若第一节点在记账时长窗口内,接收到了全部的投票信息,则第一节点在记账完成的情况下,也可以选择向第二节点发送记账完成消息,这样可以使得在记账时长窗口内的因为网络问题而未接收到全部投票信息的第二节点,可以根据第一节点发送的记账完成消息来确定自己是否可以关闭记账时长窗口。
可以理解的是,第一节点在记账时长窗口内对目标区块进行记账处理时,若第一节点在记账时长窗口内只接收到部分剩余第二节点发送过来的共识投票信息,或未接收到剩余第二节点的共识投票信息(共识投票总数量等于该第二节点的第二目标数量),则第一节点在完成目标区块的记账时,会向第二节点发送记账完成消息,并在记账时长窗口内等待未完成记账的节点进行记账;若接收到了全部剩余第二节点发送过来的共识投票信息,也就是说第一节点在记账时长窗口内接收到了区块链网络中,全部第二节点的共识投票信息(共识投票总数量等于该第二节点的第二目标数量),则第一节点在完成目标区块的记账时,可以直接关闭记账时长窗口,不再等待其他共识节点,直接进入到目标区块的下一个区块的流程中;这里第一节点可以不再等待其他共识节点记账的原因为:因为在记账时长窗口内,区块链网络中第二共识节点均将投票信息成功发送过来,第一节点在记账时长窗口内接收到了全部第二节点的共识投票信息,则第一节点会认为其他共识节点的网络状态均为良好状态(因为成功接收到了全部共识投票信息),则第一节点可以确定每个共识节点的状态(如网络状态、信息同步状态等)均相差不大,进行区块记账的速度可以基本保持一致,即使不等待,也可以在相差很小的时间里分别完成区块记账,一起进入后续流程时,所存储的区块也相差很小。
步骤S104,若上述第一记账完成消息与上述第二记账完成消息的总数量之和大于数量阈值,则上述第一节点关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
本申请中,在记账时长窗口内,若有超过数量阈值的节点,均完成了对目标区块的记账处理(第一记账完成消息与第二记账完成消息的总数量之和大于数量阈值),则这些完成记账处理的节点可以关闭记账时长窗口,也就是跳出记账时长窗口,进入到后续流程,如进入目标区块的下一个区块的共识业务流程中。可以理解的是,在记账时长窗口内,先完成记账处理的节点在未接收到全部剩余节点(区块链网络中,之前未成功发送出共识投票信息的节点)的共识投票信息时,会广播通知自己已完成记账处理,并会在记账时长窗口内等待其他节点进行记账,直到有超过数量阈值的节点均完成记账处理时,这些完成记账的节点才会关闭记账时长窗口,进入到后续流程中。其中,这里的数量阈值可以根据区块链网络中的节点总数量以及给定比例值来确定,如给定比例值为3/5,则这里的数量阈值可以为节点总数量的3/5,也就是,在区块链网络中有超过3/5的节点完成记账时,可以这些完成记账的节点可以关闭记账时长窗口。
如,若区块链网络中共识节点包括共识节点A(称之为上述的第一节点)、共识节点B、共识节点C,共识节点D以及共识节点E(共识节点B、共识节点C,共识节点D以及共识节点E均称之为上述的第二节点)。针对于区块a的出块投票,共识节点A为赞成投票、共识节点B为赞成投票、共识节点C为赞成投票、共识节点D为赞成投票,共识节点E因为网络延迟未发送出投票信息。则共识节点A接收到共识节点B、共识节点C以及共识节点D的投票信息,可以确定在区块链网络中,已有4个共识节点为赞成投票,占区块链网络节点总数量5的比例为4/5,则共识节点A可以确定区块a已通过共识,共识节点A会启动记账时长窗口。同理,共识节点B、共识节点C,共识节点D以及共识节点E也可以在接收到其他共识节点的投票信息(未接收到共识节点E的投票信息)后,确定区块a为的共识结果为共识通过结果,则共识节点B、共识节点C,共识节点D以及共识节点E也会在确定区块a共识通过后,启动记账时长窗口。则共识节点A、共识节点B、共识节点C,共识节点D以及共识节点E均会在记账时长窗口内对区块a进行记账处理,其中,该记账时长窗口为10s。在进入记账时长窗口内的第2s时,共识节点B完成了对区块a的记账处理,则共识节点B在第2s时会广播通知自己已完成对区块a的记账处理,因为在第2s时,共识节点B未接收到其他节点发送的记账完成消息,只有共识节点B一个节点完成了对区块a的记账处理,则共识节点B会在记账时长窗口内等待其他节点记账完成;在第3s时,共识节点A也完成了对区块a的记账处理,共识节点A也会广播通知,在第3s时,共识节点B接收到了共识节点A发送的记账完成消息,则共识节点B与共识节点A均可以确定已有共识节点A与共识节点B共2个节点完成了对区块a的记账处理,但还未达到数量阈值3(节点总数量5与比例阈值3/5相乘),则共识节点A与共识节点B会在记账时长窗口内一起等待其他节点记账;在记账时长窗口内的第4s时,共识节点D完成了对区块a的记账处理,共识节点D在第4s时也会进行广播通知,共识节点A与共识节点B在第4s时,都接收到了共识节点D的记账完成消息,则共识节点A、共识节点B以及共识节点D(共识节点D已接收到共识节点A与共识节点B的记账完成消息)可以确定在第4s时,已有共识节点A、共识节点B以及共识节点D共3个节点完成了区块记账,完成记账的节点数量3等于了数量阈值3,也就是说,在共识节点A、共识节点B、共识节点C,共识节点D以及共识节点E中,已有3/5的节点完成了区块记账,则这些完成区块记账的共识节点A、共识节点B以及共识节点D可以在第4s时,关闭记账时长窗口,一起进入到区块a的下一个区块(如区块b)的共识业务流程中。而未完成区块记账的共识节点C以及共识节点E可以继续在记账时长窗口内进行记账,并在完成区块记账时且已确定有超过数量阈值的节点均完成记账时,关闭记账时长窗口,进入区块a的下一个区块的共识业务流程中;若共识节点C以及共识节点E中,有节点在记账时长窗口内一直未完成对区块a的记账处理,如共识节点E在该10s内的记账时长窗口内一直未完成区块记账,则共识节点E可以在进入记账时长窗口的累计时长到达记账时长窗口的时长阈值(10s)时,关闭该记账时长窗口,进入到区块b的共识业务流程中。也就是说,对于记账较慢的节点(如共识节点C以及共识节点E),在其他记账快的节点完成记账并关闭记账时长窗口进入后续流程后,共识节点C以及共识节点E会继续进行记账,若在记账时长窗口的时长阈值内完成记账,则可以在完成记账时关闭记账时长窗口,进入后续流程;若在记账时长窗口内的时长阈值内一直未完成,在累计时长(从进入记账时长窗口开始算)到达时长阈值时,就是累计时长与时长阈值相等时,可以关闭记账时长窗口,进入到后续流程中。
可选的,可以理解的是,若在记账时长窗口内,先完成记账处理的节点进行广播通知后,会等待其他节点记账,完成记账处理的节点一直未接收到全部剩余节点发送的共识投票信息,且其他节点也一直未完成记账或未接收到其他节点的记账完成消息,那么在到达记账时长窗口的时长阈值时,该节点会确定记账完成的节点数量小于数量阈值,则第一节点与第二节点(包括记账完成的节点与未完成记账的节点)均可以在到达时长阈值时关闭记账时长窗口,一起进入到后续流程中。如,区块链网络中共包括第一节点A、第二节点B、第二节点C,第二节点D以及第二节点E共5个共识节点。第一节点A、第二节点B、第二节点C,第二节点D以及第二节点E在记账时长窗口内对区块a进行记账处理,其中,该记账时长窗口的时长阈值为10s。第二节点B在第2s完成记账,第一节点A在第3s完成记账,第二节点B与第一节点A会在记账时长窗口内等待第二节点C,第二节点D以及第二节点E记账。但第二节点C,第二节点D以及第二节点E一直未完成对区块a的记账,而第二节点B与第一节点A在记账时长窗口中的累计时长已到达了10s(到达记账时长窗口的时长阈值),也就是,累计时长与时长阈值相等,则第二节点B与第一节点A会关闭记账时长窗口,进入区块a的下一个区块的共识业务流程。且第二节点C,第二节点D以及第二节点E在到达时长阈值10s时,也会关闭记账时长窗口,进入区块a的下一个区块的共识业务流程。
需要说明的是,若先完成记账处理的节点,在等待其他节点进行记账时,接收到了全部剩余节点发送过来的共识投票信息,同时完成记账的节点数量未超过阈值,那么此时这些完成记账的节点也可以不再等待其他未完成的节点记账,这些完成记账的节点也可以关闭记账时长窗口,进入到下一个区块的共识业务流程中。如区块链网络中共包括第一节点A、第二节点B、第二节点C,第二节点D以及第二节点E共5个共识节点。第一节点A、第二节点B、第二节点C以及第二节点E未接收到第二节点D的共识投票信息(也就是只接收到了部分共识节点的共识投票信息,且赞成票超过阈值),则第一节点A、第二节点B、第二节点C,第二节点D以及第二节点E会进入记账时长窗口,在记账时长窗口内对区块a进行记账处理,其中,该记账时长窗口的时长阈值为10s。第二节点B在进入记账时长窗口后的第2s完成记账,第一节点A在第3s完成记账,第二节点B与第一节点A互相接收到对方的记账完成消息,第二节点B与第一节点A会在记账时长窗口内等待第二节点C,第二节点D以及第二节点E记账,在第3.5s时,第二节点B与第一节点A接收到了第二节点D的共识投票信息,则此时,第二节点B与第一节点A均接收到了全部剩余节点(第二节点D)发送的共识投票信息(也就是接收到了区块链网络中全部其他节点的共识投票信息),则第二节点B与第一节点A不会再等待第二节点C,第二节点D以及第二节点E记账,即使已完成区块记账的节点数量2(1个第二节点B+1个第一节点A)小于数量阈值3,第二节点B与第一节点A仍然会关闭记账时长窗口,进入后续流程如区块a的下一个区块的共识业务流程中。
可选的,可以理解的是,第一节点在确定目标区块为共识通过结果时,第一节点可以获取该第二共识投票信息的数量,并获取该第二节点的节点数量,作为第二目标数量;若该第二共识投票信息的数量等于该第二目标数量,第一节点可以获取到第二共识投票信息中携带的第二节点的性能参数,根据该第二节点的性能参数来对记账时长窗口进行更新,得到更新后的记账时长窗口;第一节点可以启动该更新后的记账时长窗口,在该更新后的记账时长窗口内对目标区块进行记账处理;若第一节点在该更新后的记账时长窗口内完成对该目标区块的记账处理,则可以进入该目标区块的后继区块的共识业务流程。可以理解的是,该第二共识投票信息中携带了第二节点的性能参数,该性能参数可以包括网络参数、信息发送速度等,在第二共识投票信息的数量等于该第二目标数量时,也就是说第一节点接收到了区块链网络中全部第二节点的共识投票信息,在这种情况下,第一节点因为接收到了全部节点的共识投票信息,则第一节点可以认为其他第二共识节点的网络状态均良好(因为第二节点很快便将投票信息发送过来,且全部第二节点都很快发送过来),则各个节点的状态均良好。则这个时候,第一节点可以根据第二节点的性能参数来减小记账时长窗口的时长阈值,第二节点的性能参数越好(如信息发送速度很快),则减小幅度越大。这样的话,第一节点与第二节点可以在状态良好的情况下,在时长很短(如1s)的记账时长窗口内进行记账。这里也可以将时长阈值减小为0,也就是说,在性能参数很好地情况下,可以不启动记账时长窗口,第一节点在接收到全票且第二节点的性能参数优异时,可以跳过记账时长窗口,直接进行对目标区块的记账业务流程,并在完成对目标区块的记账业务时,进入到下一个区块的共识业务流程中。因为第一节点接收到全部第二节点的共识投票信息且第二节点的性能参数很好,则可以认为第一节点与第二节点的记账速度相差不大,无需在记账时长窗口内互相等待,也可以使得所存储的区块相同或差异很小,则可以减小记账时长窗口的时长阈值,使得节点可以不受记账时长窗口的时长约束,可以很快进入后续共识业务流程。
需要说明的是,上述记账时长窗口中的1s、2s、10s以及3.5s等数值,均是为便于理解所作出的举例说明,不具有实际参考意义。
本申请实施例通过为共识节点增设记账时长窗口,若共识节点在接收到有超出数量阈值的共识节点的共识投票信息为赞成投票时,共识节点就不会再管未接收到的共识节点的投票结果,会进入到记账时长窗口,在记账时长窗口内进行区块记账。若在记账时长窗口内共识节点接收到了全部投票信息,则共识节点会在记账完成后关闭记账时长窗口,进入后续流程;若在记账时长窗口内依然未接收到全部的投票信息,则共识节点会在记账完成后等待其他共识节点记账,直到有超过或等于比例阈值的共识节点均完成记账时,这些完成区块记账的共识节点才会关闭记账时长窗口,一起进入后续流程。由此可见,通过增加记账时长窗口为共识节点设置了一个等待时间,记账速度快的共识节点可以在记账时长窗口内等待记账速度慢的共识节点,这样可以使得进入后续流程的共识节点可以存储有相同或相差很小的区块,即共识节点的区块高度相同或差异很小。而共识节点可以通过区块同步,在很短的时间内将差异很小的区块高度同步为相同,这样在进行下一个区块的共识时,可以减少共识节点因为区块高度不一致而带来共识失败的情况,从而可以为共识业务流程提高共识成功率。
进一步地,请参见图3,是本申请实施例提供的一种记账场景示意图。如图3所示,共识节点A可以为出块节点,共识节点可以为上述的第一节点,在对目标区块进行出块投票时,共识节点A会接收其他共识节点(如图3中的共识节点B、共识节点C)的投票信息,共识节点B与共识节点C均可以为上述的第二节点。因为每个共识节点发送信息的速度不同,则共识节点A接收到的投票信息并不是在同一时刻收到的,当共识节点统计到在已接收到的投票信息中,通过票已超过了阈值(如图3所示),共识节点A已接收到了共识节点B的投票信息,但还未接收到共识节点C的投票信息,但在共识节点A、共识节点B以及共识节点C共3个共识节点中,已有通过票2票(共识节点A为出块节点,出块节点的投票信息为赞成通过),通过票数(2)占共识节点总数量(3)的比例为2/3,该比例已达到了预期规定的通过比值2/3,则共识节点A可以确定目标区块已通过了共识,共识节点A不会再管共识节点C的投票信息,会直接启动记账时长窗口,在记账时长窗口中对目标区块进行记账。同理,共识节点B也可以接收到共识节点A的投票信息,共识节点B也可以确定目标区块已通过了共识,则共识节点B也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账;同理,共识节点C也可以接收到共识节点A与共识节点B的投票信息,结合共识节点自己的投票信息,共识节点C可以确定通过票数为3票,则共识节点C也可以确定目标区块已通过了共识,共识节点C也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账处理。如图3所示,记账时长窗口共为6s,也就是说,共识节点A、共识节点B、共识节点C需要在6s内进行对目标区块的记账处理。
如图3所示,在进入记账时长窗口的第2s时,共识节点A完成了对目标区块的记账,则共识节点A可以向共识节点B以及共识节点C发送记账完成消息,通知自己已经完成了对目标区块的记账任务。因为还未接收到共识节点C的投票信息,且在记账时长窗口的第2s时,只有共识节点A一个共识节点完成了对目标区块的记账,共识节点A未接收到共识节点B或共识节点C的记账完成消息,则共识节点A不会进入后续流程,会在记账时长窗口内等待共识节点B以及共识节点C进行记账。如图3所示,在进入记账时长窗口的第3s时,共识节点B也完成了对目标区块的记账,共识节点B可以向共识节点A以及共识节点C发送记账完成消息,通知自己已经完成了对目标区块的记账任务。因为在记账时长窗口的第3s时,共识节点A接收到了共识节点B发送的记账完成消息,共识节点B在之前也接收到了共识节点A发送的记账完成消息,则共识节点A与共识节点B均可以确定,只有共识节点A和共识节点B共2个共识节点完成了对目标区块的记账,完成记账的节点数量2占区块链网络节点总数量3的比例为2/3,已达到规定比例2/3,则共识节点A与共识节点B会关闭记账时长窗口,进入后续流程。而未完成记账的共识节点C会继续在记账时长窗口内进行对目标区块的记账,因为共识节点C是接收到了全部投票信息(包括共识节点A的投票信息与共识节点B的投票信息),则共识节点C无论是否有接收到共识节点A或共识节点B的投票信息,只要共识节点C在记账完成时,就可以关闭记账时长窗口,进入后续流程中。
可以看出,通过增加记账时长窗口,可以使先完成区块记账的共识节点(如共识节点A),等待其他共识节点进行区块记账,直到有超过或达到规定比例(如2/3)的共识节点均完成区块记账时,这些完成区块记账的共识节点才会关闭记账时长窗口,一起进入到下一个区块的共识流程。因为记账速度快的共识节点等待了记账速度较慢的共识节点进行记账,可以使得一起进入下一个区块的共识流程的共识节点存储有相同的区块,这样在进行下一个区块的共识时,可以减少共识节点因为区块不一致而带来共识失败的情况,提高后续共识的成功率。
请参见图4,是本申请实施例提供的一种记账场景示意图。如图4所示,共识节点A可以为出块节点,共识节点A可以为上述的第一节点,在对目标区块进行出块投票时,共识节点A会接收其他共识节点(如图4中的共识节点B、共识节点C)的投票信息,共识节点B与共识节点C均可以为上述的第二节点。因为每个共识节点发送信息的速度不同,则共识节点A接收到的投票信息并不是在同一时刻收到的,当共识节点统计到在已接收到的投票信息中,通过票已超过了阈值(如图4所示),共识节点A已接收到了共识节点B的投票信息,但还未接收到共识节点C的投票信息,但在共识节点A、共识节点B以及共识节点C共3个共识节点中,已有通过票2票(共识节点A为出块节点,出块节点的投票信息为赞成通过),通过票数(2)占共识节点总数量(3)的比例为2/3,该比例已达到了预期规定的通过比值2/3,则共识节点A可以确定目标区块已通过了共识,共识节点A不会再管共识节点C的投票信息,会直接启动记账时长窗口,在记账时长窗口中对目标区块进行记账。同理,共识节点B也可以接收到共识节点A的投票信息,共识节点B也可以确定目标区块已通过了共识,则共识节点B也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账;同理,共识节点C也可以接收到共识节点A与共识节点B的投票信息,结合共识节点自己的投票信息,共识节点C可以确定通过票数为3票,则共识节点C也可以确定目标区块已通过了共识,共识节点C也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账处理。
如图4所示,在进入记账时长窗口的第2s时,共识节点A完成了对目标区块的记账,则共识节点A可以向共识节点B、共识节点C发送记账完成消息,通知自己已经完成了对目标区块的记账任务。因为在记账时长窗口的第2s时,因为还未接收到共识节点C的投票信息,且未接收到共识节点B或共识节点C的记账完成消息,则共识节点A可以确定只有共识节点A一个共识节点完成了对目标区块的记账,则共识节点A不会进入后续流程,会在记账时长窗口内等待共识节点B以及共识节点C记账。如图4所示,在进入记账时长窗口的第2.5s时,共识节点A接收到了共识节点C发送过来的投票信息,则共识节点A在记账时长窗口内的第2.5s时,接收到了区块链中全部共识节点(包括共识节点B与共识节点C)的投票信息,则共识节点A在第2.5时不会再继续等待共识节点B以及共识节点C进行记账,会直接关闭记账时长窗口,进入到目标区块的下一个区块的共识业务流程中。
进一步地,请参见图5,是本申请实施例提供的一种记账场景示意图。如图5所示,共识节点A可以为出块节点,共识节点A可以为上述的第一节点,在对目标区块进行出块投票时,共识节点A会接收其他共识节点(如图5中的共识节点B、共识节点C)的投票信息,共识节点B与共识节点C均可以为上述的第二节点。因为每个共识节点发送信息的速度不同,则共识节点A接收到的投票信息并不是在同一时刻收到的,当共识节点统计到在已接收到的投票信息中,通过票已超过了阈值(如图5所示),共识节点A已接收到了共识节点B的投票信息,但还未接收到共识节点C的投票信息,但在共识节点A、共识节点B以及共识节点C共3个共识节点中,已有通过票2票(共识节点A为出块节点,出块节点的投票信息为赞成通过),通过票数(2)占共识节点总数量(3)的比例为2/3,该比例已达到了预期规定的通过比值2/3,则共识节点A可以确定目标区块已通过了共识,共识节点A不会再管共识节点C的投票信息,会直接启动记账时长窗口,在记账时长窗口中对目标区块进行记账。同理,共识节点B也可以接收到共识节点A的投票信息,共识节点B也可以确定目标区块已通过了共识,则共识节点B也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账;同理,共识节点C也可以接收到共识节点A与共识节点B的投票信息,结合共识节点自己的投票信息,共识节点C可以确定通过票数为3票,则共识节点C也可以确定目标区块已通过了共识,共识节点C也会启动记账时长窗口,在记账时长窗口内对目标区块进行记账处理。
如图5所示,在进入记账时长窗口的第2s时,共识节点A完成了对目标区块的记账,共识节点C接收到了共识节点A的记账完成消息,但共识节点B未接收到共识节点A的记账完成消息。因为共识节点B自己还未完成对目标区块的记账,所以共识节点B会继续进行对目标区块的记账处理。如图5所示,在进入记账时长窗口的第2.5s时,共识节点B接收到了共识节点C发送的投票信息(为通过),则在进入记账时长窗口的第2.5s时,共识节点B接收到了区块链网络中全部共识节点(包括共识节点A以及共识节点C)的投票信息,此时共识节点B还未完成目标区块的记账,共识节点B会继续进行记账。如图5所示,在进入记账时长窗口内的第3s时,共识节点B完成了对目标区块的记账,因为在之前的第2.5s时,共识节点B收到了共识节点C的投票信息,则共识节点B在第3s完成记账时,虽然共识节点B认为只有自己一个节点完成了区块记账,还未达到数量阈值2,但共识节点还是会关闭记账时长窗口,不会再等待其他共识节点,直接进入到后续流程,如进入目标区块的下一个区块的共识业务流程中。
需要说明的是,针对于共识节点C而言,在进入记账时长窗口的第2s时,共识节点A完成了区块记账,共识节点C在第2s接收到了共识节点A的记账完成消息,因为共识节点C还未完成区块记账,则共识节点C会继续进行对区块A的记账。在第3s时,共识节点C接收到了共识节点B的记账完成消息,共识节点C会继续进行区块记账。在记账时长窗口内,共识节点C一直未完成对目标区块的记账处理,则在到达时长阈值6s时,共识节点C会关闭记账时长窗口,进入到目标区块的下一个区块的共识业务流程中。
可以理解的是,在图5所对应实施例中,若在记账时长窗口内,共识节点A、共识节点B仍未接收到共识节点C发送的投票信息。也就是说,在第2.5s时,共识节点A与共识节点B未接收到共识节点E发送的投票信息,则共识节点A在进入记账时长窗口的第2s完成记账时,不会关闭记账时长窗口,会等待共识节点B、共识节点C记账。但共识节点B与共识节点C一直未完成记账,当到达6s时,完成记账的共识节点A,与未完成记账的共识节点B以及共识节点C均会关闭记账时长窗口,一起进入到目标区块的下一个区块的共识业务流程中。
结合图4以及图5,可以看出,通过为共识节点增设记账时长窗口,可以使得共识节点在记账时长窗口内进行区块记账,可以使先完成区块记账的共识节点,等待其他共识节点完成区块记账,直到超过给定比例(如2/3)的共识节点均完成区块记账时,才关闭记账时长窗口,一起进入下一个区块的共识流程。而即使完成记账的共识节点一直未超过给定比例,先完成区块记账的共识节点也会在记账时长窗口内一直等待记账速度慢的共识节点,并在到达记账时长窗口的时长阈值时,同记账速度慢的共识节点一起进入下一个区块的共识流程,这样可以减小记账速度慢的共识节点所存储的区块与记账速度快的节点之间的差异,使得一起进入下一个区块时,各个共识节点所存储的区块相差不大,提高后续共识的成功率。若共识节点在记账时长窗口内接收到了全部共识节点的投票信息,则先完成记账的共识节点可以在完成区块记账时,直接关闭记账时长窗口,进入到下一个区块的共识流程。因为其他共识节点均将投票信息成功发送,则各个共识节点的网络状态均为良好状态,则可以认为每个共识节点的状态均相差不大,进行区块记账的速度可以基本保持一致,则在进入下一个区块的共识流程时,各个共识节点所存储的区块也相差很小,而这些共识节点可以通过区块同步,在很短的时间内来使得稍微落后的节点同步到差异区块,这样,各个共识节点可以在很短的时间内将存储的区块保持为一致,可以提高后续共识的共识成功率。
需要说明的是,上述图3、图4、以及图5中,关于记账时长窗口中的2s、3s、2.5s以及6s等数值,均是为便于理解所作出的举例说明,不具有实际参考意义。
请参见图6,是本申请实施例提供的一种记账场景示意图。如图6所示,共识节点A可以为出块节点,共识节点A可以为上述的第一节点,在对目标区块进行出块投票时,共识节点A会接收其他共识节点(如图6中的共识节点B、共识节点C)的投票信息,共识节点B与共识节点C均可以为上述的第二节点。共识节点B与共识节点C很快便将投票信息发送出来,其中,共识节点B的投票信息为通过,共识节点C的投票信息也为通过,因为通过票数3与区块链网络中的节点总数量3相等,则共识节点A可以确定目标区块的共识结果为通过共识。因为共识节点接收到了区块链网络中全部的投票信息(共识节点B与共识节点C的投票信息),则共识节点A可以获取共识节点B发送过来的投票信息中所携带的共识节点B的性能参数,以及共识节点C发送过来的投票信息中所携带的共识节点C的性能参数,根据共识节点C与共识节点B的性能参数,共识节点A可以对时长阈值为6s的记账时长窗口进行更新,使得更新后得到的更新记账时长窗口的时长阈值变为3s,共识节点A、共识节点B以及共识节点C可以进入该更新记账时长窗口内对目标区块进行记账处理,共识节点A、共识节点B以及共识节点需要在3s内对目标区块进行记账处理,若在进入更新记账时长窗口的3s内完成对目标区块的记账处理,则可以关闭更新记账时长窗口,进入下一区块的共识业务流程;若在进入更新记账时长窗口的3s内未完成对目标区块的记账处理,则在到达3s时,可以关闭更新记账时长窗口,进入下一区块的共识业务流程。如图6所示,共识节点A在进入更新记账时长窗口的1s时,完成了对目标区块的记账处理,共识节点A进行了广播通知,共识节点B与共识节点C均接收到了共识节点A的记账完成消息,共识节点A可在完成记账时,也就是在1s时,关闭更新记账时长窗口,进入下一区块的共识业务流程。当然,共识节点A在第1s完成区块记账时,也可以选择不进行广播通知,也就是说,在完成区块记账时,不向共识节点B以及共识节点C发送记账完成消息,直接关闭更新记账时长窗口,进入下一区块的共识业务流程。
可选的,可以理解的是,在该更新记账时长窗口内,共识节点A在第1s完成区块记账时,共识节点A可以向共识节点B以及共识节点C发送记账完成消息,且不关闭更新记账时长窗口,共识节点A可以在更新记账时长窗口内等待共识节点B与共识节点C进行记账,直到确定有2/3的共识节点均完成区块记账时,才关闭更新记账时长窗口,进入下一区块的共识业务流程。如,共识节点B在第1.5s时完成区块记账,进行广播通知,共识节点A接收到了共识节点B的记账完成消息,此时,共识节点A可以确定已有2个共识节点(共识节点A与共识节点B)完成区块记账,完成记账的节点数(2)占区块链网络中的总节点数(3)为2/3,已达到给定比例2/3,则共识节点A在1.5s时,可以关闭更新记账时长窗口,进入下一区块的共识业务流程。
也就是说,在出块投票时,若全部共识节点的投票信息都很快广播出来(每个共识节点网络状态均良好,很快便将投票结果广播出来),且在这些投票信息中,有超出比例阈值的共识节点均为通过票,则各个共识节点在这种情况下可以根据其他共识节点的性能参数来更新记账时长窗口(减小记账时长窗口的时长阈值),并在更新记账时长窗口内进行区块记账,并在区块记账完成后,进入后续流程共识流程中。因为各个共识节点的状态均良好,相差不大,则记账速度也可以基本保持一致,在进入后续共识业务时,所存储的区块也可以基本保持一致,这种情况下,减小记账时长窗口的时长阈值,可以使得共识节点不需要等待其他共识节点或减小等待时间,可以使得共识节点可以快速进入后续共识业务流程同时所存储的区块也可以基本保持一致。
进一步地,请参见图7,是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图7所示,本方案的流程可以为:
步骤S201,共识节点接收针对于目标区块的投票信息。
具体的,区块链网络中的共识节点在对区块进行记账前,需要进行区块的出块投票,当共识节点接收到有超出阈值的共识节点的投票结果均为通过时,才将区块确定为共识通过,在共识通过后,共识节点才会进行区块记账。
步骤S202,共识节点确定目标区块共识通过。
具体的,共识节点在进行出块投票时,由于每个共识节点发送消息的速度不一致,所以每个共识节点接收到的其他共识节点的投票信息并不是在同一时刻收到的,当共识节点统计到在已接收到的投票信息中,通过票已超过了阈值时,共识节点就会确定该进行投票的区块已通过了共识。
步骤S203,共识节点确定接收到全票。
具体的,若每个共识节点的状态均良好,都很快将自己的投票信息发送出来,每个共识节点在统计通过票超过了阈值时,都可能已接收到全部共识节点的投票信息。
步骤S204,共识节点在接收到全票时,对记账时长窗口进行更新。
若区块链网络中,每个共识节点的状态均良好,都很快将自己的投票信息发送出来,每个共识节点在统计通过票超过了阈值时,已接收到了全部共识节点的投票信息,则该区块链网络中因为每个共识节点均为良好状态,记账速度也相差不大,则各个共识节点之间所存储的区块不会相差不大,在后续共识流程中的共识成功率也会很高。在这种情况下,共识节点可以根据其他共识节点的性能参数对记账时长窗口进行更新,减小记账时长窗口的时长阈值,得到更新后的记账时长窗口,并在更新后的记账时长窗口内进行区块记账。
步骤S205,共识节点完成记账后,进入后续流程。
具体的,在更新后的记账时长窗口内完成区块记账后,共识节点可以进入后续流程,如进入目标区块的下一个区块的共识业务流程中;若在更新记账时长内未完成区块记账,则在到达更新记账时长窗口的时长阈值时,跳出更新记账时长窗口,进入后续流程。
步骤S206,共识节点确定接收到部分票。
具体的,个别共识节点因为发送速度缓慢,则存在共识节点还未接收到全部共识节点的投票信息,就已统计到通过票超过了阈值。
步骤S207,共识节点进入记账时长窗口。
具体的,区块链网络中因为部分共识节点的状态不够好,记账速度会比较缓慢,若记账速度快的共识节点不等待记账速度慢的共识节点,则记账速度慢的共识节点与记账速度快的共识节点之间所存储的区块会相差很大,从而会影响在后续共识流程中的共识成功率。则在这种情况下,共识节点可以不对记账时长窗口进行更新,进入记账时长窗口,在记账时长窗口内进行区块记账。该记账时长窗口可以理解为是给共识节点设置了一个等待时间,使得记账速度快的共识节点在记账完成后,可以等待记账速度慢的共识节点。
步骤S208,共识节点在记账时长窗口内仍未接收到全票。
具体的,共识节点在记账时长窗口内进行区块记账时,仍然可以继续接收其他共识节点投票信息,部分共识节点因发送速度缓慢,在记账时长窗口内,那些发送慢的共识节点还未将投票信息发送过来,或部分发送慢的共识节点将投票信息发送出来,但还有小部分的共识节点仍未将投票信息发送出来。也就是说,共识节点可能在记账时长窗口内,一直未接收到全票。
步骤S209,共识节点在记账时长窗口内完成记账。
具体的,在共识节点一直未接收到全票的情况下,共识节点在记账时长窗口内完成区块记账时,会在记账时长窗口内广播通知,并需要等待其他共识节点记账,接收其他完成记账的节点的通知消息,直到完成记账的节点占总节点的比例达到或超过给定比例值。
步骤S210,共识节点跳出记账时长窗口。
具体的,在有超过或达到给定比例值(如2/3)的共识节点均完成记账时,这部分完成区块记账的共识节点可以跳出记账时长窗口,进入后续流程;而若完成区块记账的共识节点未超过或达到给定比例值,则已完成区块记账与未完成区块记账的共识节点在到达记账时长窗口的时长阈值时,会一起关闭记账时长窗口,一起进入后续流程。
步骤S211,若一直未有给定比例的共识节点完成记账,则共识节点会一直等待。
步骤S212,当到达记账时长窗口的时长阈值时,全部节点会关闭记账时长窗口,进入后续流程。
步骤S213,共识节点在记账时长窗口内接收到全票。
具体的,当共识节点在记账时长窗口内进行区块记账时,那些发送慢的共识节点还都将投票信息发送过来(也就是在记账时长窗口内收到了全部共识节点的投票信息),可以理解为共识节点接收到了全票。
步骤S214,共识节点在记账完成后,跳出记账时长窗口。
具体的,共识节点在记账时长窗口内接收到全票时,会在记账时长窗口继续进行区块记账,并在记账完成后直接跳出记账时长窗口,进入后续流程(因为在时长窗口内成功接收到了全部共识节点的投票信息,则各个共识节点的状态均差不多,记账速度与网络状态相差均不大,在差不多的时间里均可以完成记账,在进入后续流程时存储的区块也相差不大,无需进行等待)。
进一步地,请参见图8,是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。上述基于区块链的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。该数据处理装置1可以包括:投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16。
投票信息交互模块11,用于向第二节点发送针对目标区块的第一共识投票信息,接收上述第二节点发送的针对上述目标区块的第二共识投票信息;
共识结果确定模块12,用于根据上述第一共识投票信息与上述第二共识投票信息,确定上述目标区块的共识结果;
记账处理模块13,用于在上述共识结果为共识通过结果时,启动记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理;
记账完成接收模块14,用于在上述记账时长窗口内接收上述第二节点发送的针对上述目标区块的第一记账完成消息;
记账完成通知模块15,用于若在上述记账时长窗口内完成对上述目标区块的记账处理,则向上述第二节点发送第二记账完成消息;
窗口关闭模块16,用于若上述第一记账完成消息与上述第二记账完成消息的总数量之和大于数量阈值,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16的具体实现方式,可以参见上述图2所对应实施例中步骤S101-步骤S104的描述,这里将不再进行赘述。
请参见图8,上述共识结果确定模块12,可以包括:第一目标数量确定单元121、赞成票数量确定单元122、共识通过确定单元123以及共识失败确定单元124。
第一目标数量确定单元121,用于在上述第二共识投票信息中,确定属于赞成投票的第二共识投票信息的数量,作为目标数量;
赞成票数量确定单元122,用于若上述第一共识投票信息属于赞成投票,则根据上述第一共识投票信息和上述目标数量,确定赞成投票总数量;
共识通过确定单元123,用于若上述赞成投票总数量与节点总数量的比值大于或等于比例阈值,则将上述目标区块的共识结果确定为共识通过结果;上述节点总数量为上述第一节点与上述第二节点的总数量;
共识失败确定单元124,用于若上述赞成投票总数量与上述节点总数量的比值小于上述比例阈值,则将上述目标区块的共识结果确定为共识失败结果。
其中,第一目标数量确定单元121、赞成票数量确定单元122、共识通过确定单元123以及共识失败确定单元124的具体实现方式,可以参见上述图2所对应实施例中步骤S102中的描述,这里将不再进行赘述。
请参见图8,上述记账处理模块13,可以包括:数量获取单元131、第二目标数量确定单元132以及记账处理单元133。
数量获取单元131,用于在上述共识结果为共识通过结果时,获取上述第二共识投票信息的数量;
第二目标数量确定单元132,用于获取上述第二节点的节点数量,作为第二目标数量;
记账处理单元133,用于若上述第二共识投票信息的数量小于上述第二目标数量,则启动上述记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理。
其中,数量获取单元131、第二目标数量确定单元132以及记账处理单元133的具体实现方式,可以参见上述图2所对应实施例中步骤S102的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1可以包括投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16,还可以包括:窗口更新模块17、窗口启动模块18以及流程进入模块19。
窗口更新模块17,用于若上述第二共识投票信息的数量等于上述第二目标数量,则根据上述第二节点的性能参数更新上述记账时长窗口,得到更新后的记账时长窗口;上述更新后的记账时长窗口对应的时长阈值小于上述记账时长窗口对应的时长阈值;
窗口启动模块18,用于启动上述更新后的记账时长窗口,在上述更新后的记账时长窗口内对上述目标区块进行记账处理;
流程进入模块19,用于若上述第一节点在上述更新后的记账时长窗口内完成对上述目标区块的记账处理,则进入上述目标区块的后继区块的共识业务流程。
其中,窗口更新模块17、窗口启动模块18以及流程进入模块19的具体实现方式,可以参见上述图2所对应实施例中步骤S104中的描述,这里将不再进行赘述。
请参见图8,上述记账完成通知模块15,可以包括:投票信息接收单元151、投票数量获取单元152、相加处理单元153、权限检测单元154以及记账完成发送单元155。
投票信息接收单元151,用于在上述记账时长窗口内,接收剩余第二节点发送的针对上述目标区块的第三共识投票信息;上述剩余第二节点为多个上述第二节点中,除了已发送上述第二共识投票信息的第二节点以外的节点;
投票数量获取单元152,用于若在上述记账时长窗口内完成对上述目标区块的记账处理,则获取上述第三共识投票信息的总数量;
相加处理单元153,用于将上述第三共识投票信息的数量与上述第二共识投票信息的数量进行相加,得到共识投票总数量;
权限检测单元154,用于根据上述共识投票总数量与上述目标数量,检测上述第一节点的消息发送权限;
记账完成发送单元155,用于在上述第一节点具备上述消息发送权限时,向上述第二节点发送第二记账完成消息。
其中,投票信息接收单元151、投票数量获取单元152、相加处理单元153、权限检测单元154以及记账完成发送单元155的具体实现方式,可以参见上述图2所对应实施例中步骤S103的描述,这里将不再进行赘述。
请参见图8,上述权限检测单元154,可以包括:第一权限确定子单元1541以及第二权限确定子单元1542。
第一权限确定子单元1541,用于若上述共识投票总数量小于上述第二目标数量,则确定上述第一节点具备上述消息发送权限;
第二权限确定子单元1542,用于若上述共识投票总数量等于上述第二目标数量,则确定上述第一节点未具备上述消息发送权限。
其中,第一权限确定子单元1541以及第二权限确定子单元1542的具体实现方式,可以参见上述图2所对应实施例中步骤S103的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1可以包括投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16、窗口更新模块17、窗口启动模块18以及流程进入模块19,还可以包括:共识流程进入模块20。
共识流程进入模块20,用于在上述第一节点未具备上述消息发送权限时,关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,共识流程进入模块20的具体实现方式,可以参见上述图2所对应实施例中步骤S104的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1可以包括投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16、窗口更新模块17、窗口启动模块18、流程进入模块19以及共识流程进入模块20,还可以包括:第一时长阈值获取模块21、第一累计时长统计模块22以及第一区块共识进入模块23。
第一时长阈值获取模块21,用于获取上述记账时长窗口对应的时长阈值;
第一累计时长统计模块22,用于统计上述第一节点处于上述记账时长窗口中的累计时长;
第一区块共识进入模块23,用于若上述累计时长与上述时长阈值相等,且上述第一记账完成消息与上述第二记账完成消息的总数量之和,小于上述数量阈值,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,第一时长阈值获取模块21、第一累计时长统计模块22以及第一区块共识进入模块23的具体实现方式,可以参见上述图2所对应实施例中步骤104中的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1可以包括投票信息交互模块11、共识结果确定模块12、记账处理模块13、记账完成接收模块14、记账完成通知模块15以及窗口关闭模块16、窗口更新模块17、窗口启动模块18、流程进入模块19、共识流程进入模块20、第一时长阈值获取模块21、第一累计时长统计模块22以及第一区块共识进入模块23,还可以包括第二时长阈值获取模块24、第二累计时长统计模块25以及第二区块共识进入模块26。
第二时长阈值获取模块24,用于获取上述记账时长窗口对应的时长阈值;
第二累计时长统计模块25,用于获取上述第一节点处于上述记账时长窗口中的累计时长;
第二区块共识进入模块26,用于若上述累计时长与上述时长阈值相等,且上述第一节点在上述记账时长窗口内未完成对上述目标区块的记账处理,则关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
其中,第二时长阈值获取模块24、第二累计时长统计模块25以及第二区块共识进入模块26的具体实现方式,可以参见上述图2所对应实施例中步骤S104中的描述,这里将不再进行赘述。
本申请实施例在区块通过共识后,进行区块记账时,为共识节点增设记账时长窗口,使得共识节点(如第一节点与第二节点)在记账时长窗口内进行记账,每个共识节点在记账完成后都可以进行广播通知,在进行记账的共识节点中,有超过数量阈值的共识节点均完成区块记账时,这些完成记账的共识节点才会关闭记账时长窗口,一起进入下一个区块的共识流程。这样可以使先完成区块记账的共识节点,在记账时长窗口内等待其他共识节点完成区块记账,再一起进入下一个区块的共识流程。可以看出,在记账时长窗口中,因为速度快的共识节点等待了速度较慢的共识节点进行记账,可以使得一起进入下一个区块的共识流程的共识节点存储有相同或差异很小的区块,即各个共识节点的区块高度相同或差异很小。而共识节点可以通过区块同步,在很短的时间内将差异很小的区块高度同步为相同,这样在进行下一个区块的共识时,可以减少共识节点因为区块高度不一致而带来共识失败的情况,从而可以提高后续共识业务流程的共识成功率。
进一步地,请参见图9,是本申请实施例提供的一种计算机设备的示意图。如图9所示,上述图8所对应实施例中的装置1可以应用于上述计算机设备,1000上述计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004主要用于与业务服务器进行网络通信;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
第一节点向第二节点发送针对目标区块的第一共识投票信息,接收上述第二节点发送的针对上述目标区块的第二共识投票信息;
根据上述第一共识投票信息与上述第二共识投票信息,确定上述目标区块的共识结果,在上述共识结果为共识通过结果时,启动记账时长窗口,在上述记账时长窗口内对上述目标区块进行记账处理,在上述记账时长窗口内接收上述第二节点发送的针对上述目标区块的第一记账完成消息;
若上述第一节点在上述记账时长窗口内完成对上述目标区块的记账处理,则上述第一节点向上述第二节点发送第二记账完成消息;
若上述第一记账完成消息与上述第二记账完成消息的总数量之和大于数量阈值,则上述第一节点关闭上述记账时长窗口,进入上述目标区块的后继区块的共识业务流程。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2到图7所对应实施例中对该基于区块链的数据处理方法的描述,也可执行前文图8所对应实施例中对该数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的视频数据处理的计算机设备1000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图2到图7所对应实施例中对上述基于区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的基于区块链的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital, SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (12)

1.一种基于区块链的数据处理方法,其特征在于,包括:
第一节点向第二节点发送针对目标区块的第一共识投票信息,接收所述第二节点发送的针对所述目标区块的第二共识投票信息;
根据所述第一共识投票信息与所述第二共识投票信息,确定所述目标区块的共识结果,在所述共识结果为共识通过结果时,启动记账时长窗口,在所述记账时长窗口内对所述目标区块进行记账处理,在所述记账时长窗口内接收所述第二节点发送的针对所述目标区块的第一记账完成消息;
若所述第一节点在所述记账时长窗口内完成对所述目标区块的记账处理,则所述第一节点向所述第二节点发送第二记账完成消息;
若所述第一记账完成消息与所述第二记账完成消息的总数量之和大于数量阈值,则所述第一节点关闭所述记账时长窗口,进入所述目标区块的后继区块的共识业务流程。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一共识投票信息与所述第二共识投票信息,确定所述目标区块的共识结果,包括:
在所述第二共识投票信息中,确定属于赞成投票的第二共识投票信息的数量,作为第一目标数量;
若所述第一共识投票信息属于赞成投票,则根据所述第一共识投票信息和所述第一目标数量,确定赞成投票总数量;
若所述赞成投票总数量与节点总数量的比值大于或等于比例阈值,则将所述目标区块的共识结果确定为共识通过结果;所述节点总数量为所述第一节点与所述第二节点的总数量;
若所述赞成投票总数量与所述节点总数量的比值小于所述比例阈值,则将所述目标区块的共识结果确定为共识失败结果。
3.根据权利要求1所述的方法,其特征在于,所述在所述共识结果为共识通过结果时,启动记账时长窗口,在所述记账时长窗口内对所述目标区块进行记账处理,包括:
在所述共识结果为共识通过结果时,获取所述第二共识投票信息的数量;
获取所述第二节点的节点数量,作为第二目标数量;
若所述第二共识投票信息的数量小于所述第二目标数量,则启动所述记账时长窗口,在所述记账时长窗口内对所述目标区块进行记账处理。
4.根据权利要求3所述的方法,其特征在于,所述第二共识投票信息携带所述第二节点的性能参数;
所述方法还包括:
若所述第二共识投票信息的数量等于所述第二目标数量,则所述第一节点根据所述第二节点的性能参数更新所述记账时长窗口,得到更新后的记账时长窗口;所述更新后的记账时长窗口对应的时长阈值小于所述记账时长窗口对应的时长阈值;
启动所述更新后的记账时长窗口,在所述更新后的记账时长窗口内对所述目标区块进行记账处理;
若所述第一节点在所述更新后的记账时长窗口内完成对所述目标区块的记账处理,则进入所述目标区块的后继区块的共识业务流程。
5.根据权利要求3所述的方法,其特征在于,所述第二节点的数量为多个;所述若所述第一节点在所述记账时长窗口内完成对所述目标区块的记账处理,则所述第一节点向所述第二节点发送第二记账完成消息,包括:
在所述记账时长窗口内,接收剩余第二节点发送的针对所述目标区块的第三共识投票信息;所述剩余第二节点为多个所述第二节点中,除了已发送所述第二共识投票信息的第二节点以外的节点;
若所述第一节点在所述记账时长窗口内完成对所述目标区块的记账处理,则获取所述第三共识投票信息的数量;
将所述第三共识投票信息的数量与所述第二共识投票信息的数量进行相加,得到共识投票总数量;
根据所述共识投票总数量与所述第二目标数量,检测所述第一节点的消息发送权限;
在所述第一节点具备所述消息发送权限时,向所述第二节点发送第二记账完成消息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述共识投票总数量与所述第二目标数量,检测所述第一节点的消息发送权限,包括:
若所述共识投票总数量小于所述第二目标数量,则确定所述第一节点具备所述消息发送权限;
若所述共识投票总数量等于所述第二目标数量,则确定所述第一节点未具备所述消息发送权限。
7.根据权利要求5所述的方法,其特征在于,还包括:
在所述第一节点未具备所述消息发送权限时,关闭所述记账时长窗口,进入所述目标区块的后继区块的共识业务流程。
8.根据权利要求1所述的方法,其特征在于,还包括:
获取所述记账时长窗口对应的时长阈值;
统计所述第一节点处于所述记账时长窗口中的累计时长;
若所述累计时长与所述时长阈值相等,且所述第一记账完成消息与所述第二记账完成消息的总数量之和,小于所述数量阈值,则关闭所述记账时长窗口,进入所述目标区块的后继区块的共识业务流程。
9.根据权利要求1所述的方法,其特征在于,还包括:
获取所述记账时长窗口对应的时长阈值;
获取所述第一节点处于所述记账时长窗口中的累计时长;
若所述累计时长与所述时长阈值相等,且所述第一节点在所述记账时长窗口内未完成对所述目标区块的记账处理,则关闭所述记账时长窗口,进入所述目标区块的后继区块的共识业务流程。
10.一种基于区块链的数据处理装置,其特征在于,包括:
投票信息交互模块,用于向第二节点发送针对目标区块的第一共识投票信息,接收所述第二节点发送的针对所述目标区块的第二共识投票信息;
共识结果确定模块,用于根据所述第一共识投票信息与所述第二共识投票信息,确定所述目标区块的共识结果;
记账处理模块,用于在所述共识结果为共识通过结果时,启动记账时长窗口,在所述记账时长窗口内对所述目标区块进行记账处理;
记账完成接收模块,用于在所述记账时长窗口内接收所述第二节点发送的针对所述目标区块的第一记账完成消息;
记账完成通知模块,用于若在所述记账时长窗口内完成对所述目标区块的记账处理,则向所述第二节点发送第二记账完成消息;
窗口关闭模块,用于若所述第一记账完成消息与所述第二记账完成消息的总数量之和大于数量阈值,则关闭所述记账时长窗口,进入所述目标区块的后继区块的共识业务流程。
11.一种计算机设备,其特征在于,包括:处理器和存储器;
所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至9中任一项所述的方法。
CN202010458171.4A 2020-05-27 2020-05-27 基于区块链的数据处理方法、装置、设备及可读存储介质 Active CN111368008B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202010458171.4A CN111368008B (zh) 2020-05-27 2020-05-27 基于区块链的数据处理方法、装置、设备及可读存储介质
JP2022539707A JP7325894B2 (ja) 2020-05-27 2021-04-22 ブロックチェーンに基づくデータ処理方法、装置、デバイス及びコンピュータプログラム
EP21812015.2A EP4030314A4 (en) 2020-05-27 2021-04-22 BLOCKCHAIN BASED DATA PROCESSING METHOD, APPARATUS AND DEVICE AND READABLE STORAGE MEDIA
PCT/CN2021/088899 WO2021238514A1 (zh) 2020-05-27 2021-04-22 基于区块链的数据处理方法、装置、设备及可读存储介质
KR1020227016044A KR20220074971A (ko) 2020-05-27 2021-04-22 블록체인 기반 데이터 프로세싱 방법, 장치 및 디바이스, 그리고 판독가능 저장 매체
US17/730,044 US11914579B2 (en) 2020-05-27 2022-04-26 Blockchain-based data processing method and apparatus, device, and readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010458171.4A CN111368008B (zh) 2020-05-27 2020-05-27 基于区块链的数据处理方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN111368008A CN111368008A (zh) 2020-07-03
CN111368008B true CN111368008B (zh) 2020-08-25

Family

ID=71207558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010458171.4A Active CN111368008B (zh) 2020-05-27 2020-05-27 基于区块链的数据处理方法、装置、设备及可读存储介质

Country Status (6)

Country Link
US (1) US11914579B2 (zh)
EP (1) EP4030314A4 (zh)
JP (1) JP7325894B2 (zh)
KR (1) KR20220074971A (zh)
CN (1) CN111368008B (zh)
WO (1) WO2021238514A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368008B (zh) * 2020-05-27 2020-08-25 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质
CN112261145B (zh) * 2020-10-22 2022-07-12 中国联合网络通信集团有限公司 一种新区块链生成方法及装置
CN114638452A (zh) * 2020-12-16 2022-06-17 中兴通讯股份有限公司 区块组头的获取方法及装置,存储介质及电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109274717A (zh) * 2018-08-22 2019-01-25 泰康保险集团股份有限公司 基于区块链的共享存储方法、装置、介质及电子设备
CN109544310A (zh) * 2018-11-13 2019-03-29 孙晞瑜 一种基于区块链联盟链的快速共识记账方法及其***
CN110505091A (zh) * 2019-08-23 2019-11-26 昆明理工大学 一种基于pbft改进的共识方法
CN110535836A (zh) * 2019-08-12 2019-12-03 安徽师范大学 一种基于角色分类的信任区块链共识方法
CN111061769A (zh) * 2019-12-24 2020-04-24 腾讯科技(深圳)有限公司 一种区块链***的共识方法及相关设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015022336A1 (en) * 2013-08-12 2015-02-19 Philip Morris Products S.A. Systems and methods for crowd-verification of biological networks
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN107103459A (zh) * 2017-04-27 2017-08-29 电子科技大学 基于主权区块链的记账***及方法
JP2019012415A (ja) * 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード
EP3457623B1 (en) * 2017-09-15 2024-03-06 Panasonic Intellectual Property Corporation of America Electronic voting system
CN108491266B (zh) * 2018-03-09 2021-11-16 联想(北京)有限公司 基于区块链的数据处理方法、装置及电子设备
CN108776929A (zh) * 2018-04-02 2018-11-09 成都云创智融科技有限公司 基于区块链数据库的账单处理方法、***和可读存储介质
CN108848055B (zh) * 2018-05-03 2020-06-23 ***股份有限公司 一种区块链共识方法、记账节点及节点
US20200084019A1 (en) * 2018-09-07 2020-03-12 Nebulas IO Limited Blockchain Ranking Engine
JP6798087B2 (ja) * 2018-11-30 2020-12-09 アドバンスド ニュー テクノロジーズ カンパニー リミテッド 分権的決定を使用するブロックチェーンスマートコントラクトの更新
CN109903155A (zh) * 2019-01-14 2019-06-18 无锡一邦网络科技有限公司 Iift区块链共识算法
US11042849B2 (en) * 2019-02-26 2021-06-22 Apifiny Group Inc. Adjusting transaction distribution based on predicted open transaction execution rates
KR20200132518A (ko) * 2019-05-17 2020-11-25 삼성에스디에스 주식회사 블록체인 네트워크 간에 트랜잭션 연동을 지원하는 시스템 및 그 방법
CN111368008B (zh) * 2020-05-27 2020-08-25 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109274717A (zh) * 2018-08-22 2019-01-25 泰康保险集团股份有限公司 基于区块链的共享存储方法、装置、介质及电子设备
CN109544310A (zh) * 2018-11-13 2019-03-29 孙晞瑜 一种基于区块链联盟链的快速共识记账方法及其***
CN110535836A (zh) * 2019-08-12 2019-12-03 安徽师范大学 一种基于角色分类的信任区块链共识方法
CN110505091A (zh) * 2019-08-23 2019-11-26 昆明理工大学 一种基于pbft改进的共识方法
CN111061769A (zh) * 2019-12-24 2020-04-24 腾讯科技(深圳)有限公司 一种区块链***的共识方法及相关设备

Also Published As

Publication number Publication date
CN111368008A (zh) 2020-07-03
WO2021238514A1 (zh) 2021-12-02
KR20220074971A (ko) 2022-06-03
US11914579B2 (en) 2024-02-27
JP2023508210A (ja) 2023-03-01
US20220253432A1 (en) 2022-08-11
JP7325894B2 (ja) 2023-08-15
EP4030314A4 (en) 2022-12-28
EP4030314A1 (en) 2022-07-20

Similar Documents

Publication Publication Date Title
CN111368008B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
US11270307B2 (en) Blockchain-based transaction processing method and apparatus, and electronic device
CN106656932B (zh) 一种业务处理方法及装置
WO2021233049A1 (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN110113381B (zh) 一种区块链中订阅主题的方法及装置
CN111445333A (zh) 区块生成方法、装置、计算机设备以及存储介质
CN111382456A (zh) 提案消息处理方法、装置、设备以及存储介质
CN113395363B (zh) 基于区块链的数据处理方法、装置、设备及存储介质
EP4332870A1 (en) Transaction data processing method and apparatus, computer device and storage medium
CN112632629B (zh) 基于区块链的投票管理方法、装置、介质及电子设备
CN113256297B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN111324663B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN111556115A (zh) 一种基于区块链的数据处理方法、装置、设备及存储介质
US20220239668A1 (en) Blockchain-based message processing method and apparatus, device, and storage medium
CN110930254A (zh) 基于区块链的数据处理方法、装置、终端及介质
CN110222535A (zh) 区块链配置文件的处理装置、方法及存储介质
CN110069533B (zh) 一种基于区块链的事件订阅方法及装置
CN112417052B (zh) 区块链网络中的数据同步方法、装置、设备及存储介质
CN103051623A (zh) 限制开放平台的调用的方法
CN116132058A (zh) 区块链共识方法、装置、设备及计算机可读存储介质
CN109558744B (zh) 一种数据处理方法和***
CN108471422B (zh) 一种异地登录判断方法、装置、服务器及介质
CN115314258B (zh) 一种应用弱口令检测方法、装置、电子设备及存储介质
CN117195199A (zh) 一种用户信息整合方法及相关装置
CN115658266A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025793

Country of ref document: HK