CN113055188A - 一种数据处理方法、装置、设备及存储介质 - Google Patents

一种数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113055188A
CN113055188A CN202110466168.1A CN202110466168A CN113055188A CN 113055188 A CN113055188 A CN 113055188A CN 202110466168 A CN202110466168 A CN 202110466168A CN 113055188 A CN113055188 A CN 113055188A
Authority
CN
China
Prior art keywords
message
node
signature
information
preparation
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
Application number
CN202110466168.1A
Other languages
English (en)
Other versions
CN113055188B (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 CN202110466168.1A priority Critical patent/CN113055188B/zh
Publication of CN113055188A publication Critical patent/CN113055188A/zh
Application granted granted Critical
Publication of CN113055188B publication Critical patent/CN113055188B/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
    • 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • 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

Abstract

本申请实施例公开了一种数据处理方法、装置、设备及存储介质,包括:第一节点基于交易请求消息生成第一准备消息,以使(N‑1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第二准备消息;节点总数量N为等于(3f+1)的正整数;f为非法节点的最大数量;在接收到2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名得到聚合消息,以使(N‑1)个备份节点在成功验证聚合消息时生成提交消息;当统计到的提交消息的消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将响应消息返回至客户端。采用本申请实施例,可以降低共识时的网络复杂度。

Description

一种数据处理方法、装置、设备及存储介质
本申请为在2021年03月02日提交中国专利局、申请号为202110227287.1、申请名称为“一种数据处理方法、装置、设备及存储介质”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及区块链技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
在区块链网络中的主节点基于共识算法(例如,Practical Byzantine FaultTolerance共识算法,简称PBFT算法)对待广播消息(例如,交易请求消息或者包括交易请求消息的待验证区块)进行共识时,区块链网络中的备份节点会将在准备阶段中所生成的准备消息和在提交阶段中生成的提交消息无差别的广播至所有节点,由此可知采用PBFT算法进行共识时的网络复杂度较高。应当理解,采用PBFT算法进行共识时,会导致共识过程中有较多的网络交互,以至于占用较多带宽,在网络状况较差的情况下,备份节点会误以为主节点发生故障,从而切换区块链网络对应的视图。可以理解的是,视图频繁切换易造成网络拥堵,导致共识效率降低。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及存储介质,可以降低共识时的网络复杂度。
本申请实施例一方面提供一种数据处理方法,该方法由区块链网络中的第一节点执行,包括:
基于接收到的客户端的交易请求消息,生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息,以使(N-1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;N为区块链网络中的节点总数量,且N为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量;
在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的聚合消息,以使(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息;
统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
本申请实施例一方面提供一种数据处理方法,该方法由区块链网络中的目标备份节点执行,包括:
获取由区块链网络中的第一节点广播的第一准备消息,对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;第一准备消息是第一节点基于客户端发送的交易请求消息所生成的;目标备份节点属于区块链网络中的(N-1)个备份节点;N为区块链网络中的节点总数量,且N为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量;
将第二准备消息返回至第一节点;
获取由第一节点广播的聚合消息,在成功验证聚合消息时,基于聚合消息和第一准备消息生成用于向第一节点发送的提交消息,以使第一节点在统计到提交消息的消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端;聚合消息为第一节点在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名后所得到的。
本申请实施例一方面提供一种数据处理装置,包括:
消息生成模块,用于基于接收到的客户端的交易请求消息,生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息,以使(N-1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;N为区块链网络中的节点总数量,且N为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量;
第一聚合签名模块,用于在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的聚合消息,以使(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息;
结果返回模块,用于统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
其中,该消息生成模块包括:
请求消息获取单元,用于在接收到客户端发送的业务请求时,获取业务请求中携带的交易请求消息以及客户端签名信息;客户端签名信息是通过客户端对应的用户私钥对客户端待签名消息进行签名处理后所得到的;客户端待签名消息是基于交易请求消息的请求消息类型、请求操作、请求时间戳以及客户端的客户端标识所确定的;
请求验签单元,用于获取用户私钥对应的用户公钥,基于用户公钥对客户端签名信息进行验签,得到请求验签结果;
打包处理单元,用于在请求验签结果指示业务请求为合法请求时,将交易请求消息添加至交易缓冲池,从交易缓冲池中获取与交易请求消息相关联的待处理交易消息,对待处理交易消息进行交易打包处理,得到用于广播至区块链网络中的(N-1)个备份节点的待验证区块,将待验证区块的区块哈希值作为待验证区块的区块摘要;
视图号获取单元,用于获取第一节点在区块链网络对应的视图中的视图号,且获取为待验证区块分配的序列号;
消息生成单元,用于基于视图号、序列号、区块摘要以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
其中,该消息生成单元包括:
拼接处理子单元,用于获取待生成的第一准备消息的第一消息类型,将第一消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第一拼接信息;
待签名确定子单元,用于获取针对第一拼接信息的摘要确定规则,基于第一拼接信息的摘要确定规则确定第一拼接信息的哈希值,将第一拼接信息的哈希值作为第一拼接信息对应的摘要信息,且将第一拼接信息对应的摘要信息确定为第一待签名消息;
签名处理子单元,用于基于第一节点的第一私钥,对第一待签名消息进行签名处理,得到第一待签名消息的第一签名信息;
消息生成子单元,用于基于第一签名信息以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
其中,(N-1)个备份节点包括第二节点;第二节点为(N-1)个备份节点中除f个非法节点之外的节点;第二节点的数量为M个;且M等于((N-1)-f);M个第二节点包括目标备份节点;目标备份节点返回的第二准备消息中包括目标备份节点的第二签名信息和目标备份节点的节点标识;第二签名信息是目标备份节点基于目标备份节点的第二私钥,对第二待签名消息进行签名处理后所得到的;第二待签名消息是由目标备份节点返回的第二准备消息的第二消息类型、视图号、序列号以及区块摘要所得到的;
该装置还包括:
目标验签模块,用于将接收到的目标备份节点返回的第二准备消息作为目标准备消息,在获取到目标备份节点的第二公钥时,基于第二公钥对第二签名信息进行验签,得到准备验签结果;
校验模块,用于在准备验签结果为验签成功结果时,对第二待签名消息中的视图号、序列号以及区块摘要进行合法性校验,得到校验结果;
消息写入模块,用于在校验结果指示校验成功时,将目标准备消息写入与第一节点相关联的日志数据库。
其中,第二签名信息包括第一签名参数和第二签名参数;第一签名参数是基于目标备份节点生成的随机数和与聚合签名规则相关联的定点参数所确定的;第二签名参数是基于随机数、第二私钥以及验证哈希值所确定的;验证哈希值是目标备份节点基于第二待签名消息和聚合签名规则所得到的;
该目标验签模块包括:
目标消息确定单元,用于将接收到的目标备份节点返回的第二准备消息作为目标准备消息,从目标准备消息中获取第二签名参数,基于第二签名参数以及定点参数,得到用于对第二准备消息进行验证的第一验证参数;
验证参数确定单元,用于基于聚合签名规则获取第二待签名消息对应的消息哈希值,在获取到目标备份节点的第二公钥时,基于第二公钥、第一签名参数以及消息哈希值,得到用于对第二准备消息进行验证的第二验证参数;
准备验签结果生成单元,用于在第一验证参数与第二验证参数一致时,得到第二签名信息对应的验签成功结果,基于验签成功结果确定针对第二签名信息的准备验签结果。
其中,一个第二准备消息中包括一个备份节点的第二签名信息和一个备份节点的节点标识;
该第一聚合签名模块包括:
参数获取单元,用于在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,从2f个第二准备消息中分别获取每个第二签名消息中的第一签名参数,每个第二签名信息中的第二签名参数以及每个第二准备消息中的节点标识;
合并处理单元,用于对获取到的2f个第一签名参数进行合并处理,将合并处理后的签名参数作为第一聚合签名参数,且对获取到的2f个第二签名参数进行合并处理,将合并处理后的签名参数作为第二聚合签名参数;
聚合签名单元,用于基于第一聚合签名参数和第二聚合签名参数,得到聚合签名信息,且基于获取到的2f个节点标识,生成节点标识列表;
聚合消息确定单元,用于基于聚合签名信息和节点标识列表,得到用于广播至(N-1)个备份节点的聚合消息。
其中,该装置还包括:
第二聚合签名模块,用于当消息数量达到(2f+1)个时,对统计到的所有提交消息中的第三签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的提交证书,以使(N-1)个备份节点在成功验证提交证书时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
本申请实施例一方面提供一种数据处理装置,包括:
签名验证模块,用于获取由区块链网络中的第一节点广播的第一准备消息,对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;第一准备消息是第一节点基于客户端发送的交易请求消息所生成的;目标备份节点属于区块链网络中的(N-1)个备份节点;N为区块链网络中的节点总数量,且N为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量;
消息发送模块,用于将第二准备消息返回至第一节点;
聚合消息获取模块,用于获取由第一节点广播的聚合消息,在成功验证聚合消息时,基于聚合消息和第一准备消息生成用于向第一节点发送的提交消息,以使第一节点在统计到提交消息的消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端;聚合消息为第一节点在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名后所得到的。
其中,该签名验证模块包括:
准备消息获取单元,用于获取由区块链网络中的第一节点广播的第一准备消息;第一准备消息包括对第一待签名消息进行签名处理后的第一签名信息以及待验证区块;第一待签名消息是第一节点基于第一准备消息的第一消息类型、第一节点在区块链网络对应的视图中的视图号、第一节点为待验证区块分配的序列号以及待验证区块的区块摘要所得到的;待验证区块是第一节点对交易缓冲池中的待处理交易消息进行交易打包处理后所得到的;
拼接处理单元,用于在获取到第一节点的第一公钥时,基于第一公钥对第一签名信息进行验签,且在验签成功时,获取待生成的第二准备消息的第二消息类型,将第二消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第二拼接信息;
摘要规则获取单元,用于获取针对第二拼接信息的摘要确定规则,基于第二拼接信息的摘要确定规则确定第二拼接信息的哈希值,将第二拼接信息的哈希值作为第二拼接信息对应的摘要信息,且将第二拼接信息对应的摘要信息确定为第二待签名消息;
签名处理单元,用于基于目标备份节点的第二私钥,对第二待签名消息进行签名处理,得到第二待签名消息的第二签名信息;
准备消息生成单元,用于基于目标备份节点的节点标识和第二签名信息,得到第一准备消息对应的第二准备消息。
其中,该签名处理单元包括:
定点参数确定单元,用于获取聚合签名规则,确定与聚合签名规则相关联的定点参数;
第一参数确定单元,用于基于目标备份节点的第二私钥和第二待签名消息,得到由目标备份节点生成的随机数,且将随机数和定点参数的乘积作为第一签名参数;
第二参数确定单元,用于基于聚合签名规则获取第二待签名消息对应的验证哈希值,且基于随机数、第二私钥以及验证哈希值,确定第二待签名消息的第二签名参数;
签名信息确定单元,用于基于第一签名参数和第二签名参数,得到第二签名信息。
其中,该聚合消息获取模块包括:
聚合消息获取单元,用于获取由第一节点广播的聚合消息;聚合消息包括聚合签名信息以及节点标识列表;聚合签名信息包括第一聚合签名参数和第二聚合签名参数;节点标识列表和聚合签名信息均是由第一节点根据接收到的2f个备份节点返回的第二准备消息所确定的;
第一聚合参数确定单元,用于基于第二聚合签名参数以及与聚合签名规则相关联的定点参数,得到用于对聚合消息进行验证的第一聚合验证参数;
第二聚合参数确定单元,用于基于聚合签名规则获取与聚合消息相关联的聚合哈希值,基于节点标识列表中的每个备份节点的节点标识,获取每个备份节点的第二公钥,基于每个备份节点的第二公钥、聚合哈希值以及第一聚合签名参数,得到用于对聚合消息进行验证的第二聚合验证参数;
提交消息生成单元,用于若第一聚合验证参数与第二聚合验证参数一致,则确定聚合签名信息对应的聚合验签结果指示验证成功,且基于聚合消息和第一准备消息生成准备证书,且基于准备证书生成用于向第一节点发送的提交消息。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施例中,区块链网络中的第一节点(即主节点)在接收到交易请求消息时,可以基于交易请求消息生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息。这里的N可以为该区块链网络中的节点总数量,且N为等于(3f+1)的正整数,f可以表示该区块链网络中的非法节点的最大数量。其中,第一准备消息可以包括待广播消息(例如,交易请求消息或者包括交易请求消息的待验证区块)。可以理解的是,第一节点在进行聚合签名时,无需感知其他签名方的存在,可以直接无差别的接收区块链网络中的备份节点基于第一准备消息所返回的第二准备消息,进而可以在收集到足够数量的第二准备消息(即2f个备份节点返回的第二准备消息)时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,进而可以将聚合签名后所得到的聚合消息统一广播至共识网络中的每个备份节点,以使这些备份节点可以在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息,从而可以提高聚合签名时的效率。应当理解,本申请实施例中的第一节点还可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,可以直接执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。由此可见,在整个共识过程中,第一节点可以提高聚合签名时的效率,且可以在将聚合签名后的聚合消息统一广播至(N-1)个备份节点时,大大减少了网络间的数据交互,进而使得共识时的网络复杂度降低。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络结构的示意图;
图2是本申请实施例提供的一种进行数据交互的场景示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4是本申请实施例提供的一种获取交易请求消息的场景示意图;
图5是本申请实施例提供的一种将目标准备消息写入日志数据库的场景示意图;
图6是本申请实施例提供的一种数据处理方法的流程示意图;
图7是本申请实施例提供的一种基于聚合签名改进共识算法的流程示意图;
图8是本申请实施例提供的一种数据处理装置的结构示意图;
图9是本申请实施例提供的一种数据处理装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的示意图;
图11是本申请实施例提供的一种数据处理系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种区块链网络结构的示意图。如图1所示的区块链网络结构可以应用于区块链系统,该区块链系统可以是由多个节点通过网络通信的形式连接形成的分布式系统。这里的节点可以为接入该区块链网络中的服务器,也可以为接入该区块链网络中的用户终端,这里对节点的具体形式不做限定。如图1所示,该区块链网络中的共识网络可以包括多个节点,这多个节点具体可以包括节点10A、节点10B、节点10C、…、节点10N。图1所示的用户终端集群可以包括多个用户终端,这多个用户终端具体可以包括用户终端100a、用户终端100b、用户终端100c、…、用户终端100n。
其中,可以理解的是,本申请实施例所涉及的数据处理方法可以基于一种聚合签名(例如,Schnorr算法)来改进共识算法(例如,Practical Byzantine Fault Tolerance共识算法,简称PBFT算法),以降低共识时的网络复杂度。PBFT算法意为实用拜占庭容错算法,是一种可容忍一定拜占庭错误的分布式一致性算法。该PBFT算法可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别。
在本申请实施例中,区块链网络中的节点总数量N可以为等于(3f+1)的正整数,这里的f可以用于指示该区块链网络中的非法节点的最大节点数量。这里的非法节点可能会不传输消息,或者传输不一致的消息以试图扰乱其他节点。该算法PBFT不依赖于不切实际的假设,可以允许非法节点(即恶意节点)延迟正常节点间的网络传输,在少于1/3非法节点的情况下能够提供安全性和活动性。例如,在图1所示的区块链系统中,当有不少于(2f+1)个非恶意节点正常工作时,该区块链网络中的节点可以达成一致性。例如:7个节点的区块链系统中可以允许存在的非法节点的最大数量为2。
其中,PBFT算法可以使用视图(view)来记录每个节点的共识状态,在相同视图(即同一视图号)下,区块链网络中的所有节点均可以维护相同的节点列表。该节点列表可以包括主节点和备份节点。当主节点出现故障时,会发生视图切换,每次视图切换会更改主节点,且视图的编号是连续的。若视图切换成功(至少f+1个正常节点达到相同视图),则该PBFT算法可以根据新的视图确定出新的主节点。其中,本申请实施例可以将用于对交易请求消息进行打包出块的主节点称之为该区块链网络中的第一节点。本申请实施例可以将该区块链网络中除第一节点之外的节点称之为备份节点。
为便于理解,本申请实施例中的第一节点可以根据图1所示的区块链网络对应的视图所确定,例如,该第一节点可以为图1所示的区块链网络中的节点10A。如图1所示,该节点10A可以与用户终端集群中的每个用户终端进行业务数据交互。其中,该用户终端集群中的每个用户终端均可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、可穿戴设备、智能家居、头戴设备等具有发送交易请求信息功能的智能终端。应当理解,如图1所示的用户终端集群中的每个用户终端均可以安装有目标应用(即客户端),当该客户端运行于各用户终端中时,可以分别与上述图1所示的节点10A之间进行数据交互。其中,该客户端可以包含社交客户端、多媒体客户端(例如,视频客户端)、娱乐客户端(例如,游戏客户端)、教育客户端、直播客户端等。其中,该客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端、教育客户端以及多媒体客户端等)中的嵌入式子客户端,在此不做限定。
为便于理解,本申请实施例可以在图1所示的多个用户终端中选择一个用户终端作为目标用户终端。例如,本申请实施例可以将图1所示的用户终端100a作为目标用户终端,该目标用户终端可以集成有客户端。该目标用户终端可以通过该客户端对应的业务数据平台与节点10A之间实现数据交互。
应当理解,本申请实施例中所涉及的聚合签名是一种多重签名,这里的多重签名是指在获取到多个签名方对多个消息或者同一个消息进行签名处理后所得到的签名信息时,可以将这多个签名信息聚合成一个短的签名信息,以得到聚合签名信息。验证方可以通过对聚合签名信息的验证,来确保接收到的消息的真实性。
可以理解的是,本申请实施例中的第一节点在使用PBFT算法进行共识时,可以通过三阶段协议将所需共识的消息(例如,客户端的交易请求消息)广播至区块链网络中的(N-1)个备份节点,进而可以在这(N-1)个备份节点达成共识时执行该交易请求消息对应的请求操作,且将执行请求操作后所生成的响应消息返回至该客户端。在共识过程中,区块链网络中的备份节点(即签名方)无需感知其他聚合签名方的存在,可以直接对所需签名的消息(即待签名消息)进行签名处理,并将签名处理后的签名信息发送至第一节点(即聚合方),以使第一节点进行聚合签名。进一步地,第一节点可以将聚合签名后所得到的聚合签名信息再次广播至(N-1)个备份节点进行验证,从而可以降低共识时的网络复杂度,并提高共识的可拓展性。
为便于理解,进一步地,请参见图2,图2是本申请实施例提供的一种进行数据交互的场景示意图。本申请实施例的区块链网络中的节点总数量N可以为等于(3f+1)的正整数,其中,f可以用于表示该区块链网络中的非法节点的最大数量。如图2所示,节点20A可以为用于进行交易打包处理的第一节点,该节点20A是根据节点20A所在区块链网络对应的视图所确定的,该节点20A可以为上述图1所示的区块链网络中的节点10A。如图2所示,节点20B、节点20C、节点20D、…、以及节点20N这(N-1)个节点均可以统称为该区块链网络中的备份节点。
可以理解的是,当该区块链网络作为一个可信的区块链对外提供服务时,本申请实施例中的运行有客户端的用户终端可以部署有远程过程调用模块(即Rpc模块,用于提供对外接口,接收外部请求),以增加用户的信任度。该区块链网络中的备份节点可以部署有共识模块(用于接收来自Rpc模块的交易请求消息,将接收到的交易请求消息组装成待验证区块,并通过共识算法进行节点间的共识)。其中,该共识模块可以采用PBFT算法。可以理解的是,本申请实施例在使用PBFT算法进行共识时,可以通过三阶段协议达成共识。其中,这三阶段可以包括预准备阶段(pre-prepare阶段)、准备阶段(prepare阶段)和提交阶段(commit阶段)。
应当理解,本申请实施例中的节点20A可以接收客户端的交易请求消息。这里的交易请求消息可以是由运行有客户端的用户终端(例如,图1所示的用户终端集群中的任意一个用户终端,例如,用户终端100a)直接发送的,还可以是由该区块链网络中的其他节点所转发的,在此不做限定。其中,该交易请求消息可以是指该用户终端对应的用户在客户端上所发起的资产转移消息,该资产转移消息可以用于请求转移比特币、以太币、游戏金币、游戏钻石以及电子票据等虚拟资产。
在预准备阶段中,该节点20A可以基于接收到的交易请求消息,生成用于向图2所示的备份节点进行广播的第一准备消息(即预准备消息)。其中,该第一准备消息可以包括对第一待签名消息进行签名处理后的第一签名信息以及待广播消息。其中,这里的待广播消息可以为一个或者多个交易请求消息,也可以为对交易请求消息进行交易打包处理的待验证区块,在此不做限定。本申请实施例中的待广播消息可以以待验证区块为例,用以阐述基于聚合签名改进共识算法的具体实施方式。该第一待签名消息是节点20A基于第一准备消息的第一消息类型、节点20A在区块链网络对应的视图中的视图号(v)、为待验证区块分配的序列号(n)以及待验证区块的区块摘要(d)所确定的。
进一步地,在准备阶段中,(N-1)个备份节点中的某一个备份节点(例如,节点20B)在获取到该第一准备消息时,可以对该第一准备消息中的第一签名信息进行签名验证,且在签名验证成功时得到第一准备消息对应的第二准备消息(即准备消息),进而可以将该第二准备消息发送至节点20A。可以理解的是,由于该区块链网络中的非法节点的最大数量为f。因此,节点20A在接收到2f个来自不同备份节点的第二准备消息时,可以认为待验证区块已经准备好。换言之,节点20A在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,说明该区块链网络的大部分节点已经认同了节点20A所发送的第一准备消息。
如图2所示,节点20A所获取到的2f个第二准备消息可以包括准备消息1、准备消息2、…、以及准备消息x。例如,准备消息1可以是由备份节点中的某一个节点(例如,节点20B)基于第一准备消息所生成的,该准备消息1可以包括签名信息1以及节点标识1。该签名信息1是由节点20B对第一准备消息中的第一签名信息进行签名验证后所得到的第二签名信息;该节点标识1是指该节点20B对应的节点标识。
此时,该节点20A可以对接收到的所有第二准备消息中的第二签名信息进行聚合签名,以得到用于广播至(N-1)个备份节点的聚合消息。例如,该节点20A可以对签名信息1、签名信息2、…、以及签名信息x进行聚合签名,以得到图2所示的聚合消息。
在提交阶段中,当(N-1)个备份节点中的某一个备份节点获取到节点20A广播的聚合消息时,可以对该聚合消息进行验证,且在成功验证聚合消息时,基于该聚合消息以及第一准备消息生成待验证区块对应的提交消息,进而可以将该提交消息返回至该节点20A。可以理解的是,节点20A可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,可以认为待验证区块已提交。其中,这(2f+1)个提交消息可以来自(N-1)个备份节点中的(2f+1)个备份节点。可选的,这(2f+1)个提交消息也可以是来自(N-1)个备份节点中的2f个备份节点以及节点20A自身所生成的一个提交消息,这里将不对其进行限定。其中,节点20A自身生成的提交消息可以是在接收到2f个第二准备消息时,基于第二准备消息和第一准备消息所确定的。
可以理解的是,由于该待验证区块中包括交易请求消息,因此,当消息数量达到(2f+1)个时,节点20A可以执行该交易请求消息对应的请求操作,且将执行请求操作后的响应消息(例如,响应消息)返回至该客户端。例如,若该交易请求消息对应的请求操作是用户A向用户B转移10个游戏币,那么在接收到(2f+1)个提交消息时,该节点20A可以执行该请求操作,以生成用于向客户端返回的响应消息。例如,该响应消息可以为“转移成功”。可以理解的是,区块链网络中的(N-1)个备份节点可以对待验证区块中的交易(例如,交易请求消息)进行一一验证、执行并响应,在客户端收集到足够的相同响应(例如,(f+1)个有效响应)时,可以认为区块链网络中的所有节点达成共识,此时,本申请实施例中的客户端可以将最终响应发送至Rpc模块,以使该Rpc模块再对交易发起方进行最终响应。
由此可见,本申请实施例可以通过第一节点(例如,节点20A)收集备份节点的消息,且对收集到的消息中的签名信息(例如,第二准备消息中的第二签名信息)进行聚合签名,再将聚合签名后所得到的消息(例如,聚合消息)统一广播给(N-1)个备份节点,以降低共识时的网络复杂度。可以理解的是,节点20A在使用PBFT算法的三阶段协议,对包含交易请求消息的待验证区块进行共识的过程中,区块链网络中的备份节点无需感知其他聚合签名方的存在,可以直接对获取到的第一准备消息(即基于交易请求消息所生成的预准备消息)进行签名验证,且在签名验证成功时得到用于返回至节点20A的第二准备消息。进一步地,节点20A在接收到2f个第二准备消息时,可以对所有第二准备消息的第二签名信息进行聚合签名,以生成用于向(N-1)个备份节点广播的聚合消息,进而使得(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息,生成用于返回至节点20A的提交消息。该节点20A在统计到(2f+1)个提交消息时,可以直接执行交易请求消息对应的请求操作,并向客户端返回响应消息。因此,本申请实施例可以降低共识时的网络复杂度,并提高共识的可拓展性。
其中,区块链网络中的第一节点基于聚合签名改进共识算法的具体实现方式可以参见下述图3-图7所对应的实施例。
进一步地,请参见图3,图3是本申请实施例提供的一种数据处理方法的流程示意图。如图3所示,该方法可以由区块链网络中的第一节点执行,该第一节点可以为根据该区块链网络对应的视图所确定的主节点,例如,该第一节点可以为图1所示的区块链网络中的节点10A。该方法至少可以包括以下步骤S101-步骤S103:
步骤S101,基于接收到的客户端的交易请求消息,生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息,以使(N-1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息。
具体地,在接收到客户端发送的业务请求时,第一节点可以获取业务请求中携带的交易请求消息以及客户端签名信息。其中,客户端签名信息是通过客户端对应的用户私钥对客户端待签名消息进行签名处理后所得到的。这里的客户端待签名消息是基于交易请求消息的请求消息类型、请求操作、请求时间戳以及客户端的客户端标识所确定的。进一步地,第一节点可以获取用户私钥对应的用户公钥,基于用户公钥对客户端签名信息进行验签,以得到请求验签结果。应当理解,在请求验签结果指示业务请求为合法请求时,第一节点可以将交易请求消息添加至交易缓冲池,进而可以从交易缓冲池中获取与交易请求消息相关联的待处理交易消息,对待处理交易消息进行交易打包处理,以得到用于广播至区块链网络中的(N-1)个备份节点的待验证区块。此时,该第一节点可以将待验证区块的区块哈希值作为待验证区块的区块摘要,并可以获取第一节点在区块链网络对应的视图中的视图号,且获取为待验证区块分配的序列号。进一步地,该第一节点可以基于视图号、序列号、区块摘要以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
其中,本申请实施例的区块链网络中的节点总数量可以为N个,这里的N可以为等于(3f+1)的正整数,其中,f为该区块链网络中的非法节点的最大数量。该区块链网络中的第一节点是指根据当前区块链网络对应的视图所确定的主节点,该区块链网络中的备份节点可以是指对第一节点所发送的待广播消息进行共识的节点。
应当理解,运行有客户端(例如,客户端c)的用户终端(如图1所示的用户终端集群中的任意一个用户终端,例如,用户终端100a)对应的用户可以针对该客户端c执行触发操作。其中,这里的触发操作可以包括点击、长按等接触性操作,也可以包括语音、手势等非接触性操作,这里将不对其进行限定。进一步地,该用户终端可以响应该触发操作,生成与该客户端c相关联的交易请求消息
Figure BDA0003044077000000161
其中,REQUEST可以是指该交易请求消息的请求消息类型,o可以是指该交易请求消息对应的请求操作,t是指该交易请求消息对应的请求时间戳,σc是指客户端c对交易请求消息进行签名后所得到的客户端签名信息,c可以是指该客户端c的客户端标识。
可以理解的是,该用户终端可以基于请求消息类型、请求操作(例如,资产转移操作等)、请求时间戳以及客户端标识,确定客户端待签名消息。进一步地,该用户终端可以基于客户端对应的用户私钥,对该客户端待签名消息进行签名处理,以得到客户端签名信息。此时,该用户终端可以基于该客户端签名消息和交易请求消息生成用于向区块链网络中广播的业务请求。
应当理解,由于该区块链网络中的第一节点为当前区块链网络对应的视图所确定的主节点,因此,区块链网络中的其他节点(即备份节点)在获取到客户端的业务请求时,可以将该业务请求转发至该第一节点。可选的,运行有客户端的用户终端也可以直接将该业务请求发送至第一节点。这里将不对第一节点获取业务请求的方式进行限定。其中,本申请实施例中的第一节点在采用PBFT算法对待广播消息(例如,对交易请求消息进行交易打包处理的待验证区块)进行共识时,可以通过三阶段协议达成共识。其中,这三阶段可以包括预准备阶段、准备阶段和提交阶段。
可以理解的是,在第一节点获取到业务请求时,该第一节点可以进入预准备阶段。此时,该第一节点可以获取该用户私钥对应的用户公钥,对该业务请求所携带的客户端签名信息进行验签,以得到请求验签结果。应当理解,在请求验签结果指示业务请求为合法请求时,第一节点可以将交易请求消息添加至交易缓冲池。
为便于理解,进一步地,请参见图4,图4是本申请实施例提供的一种获取交易请求消息的场景示意图。如图4所示,本申请实施例中的节点40A可以为根据当前区块链网络对应的视图所确定的主节点(即第一节点),该节点40A可以为上述图1所示的区块链网络中的第一节点,例如,节点10A。本申请实施例中的用户终端400a可以为运行有客户端的用户终端,该用户终端400a可以为上述图1所示的用户终端集群中的任意一个用户终端,例如,用户终端100a。
应当理解,用户终端400a对应的用户可以针对该客户端执行触发操作(例如,点击操作),以使用户终端400a响应该触发操作,生成与该客户端相关联的交易请求消息(例如,图4所示的交易请求消息4)。进一步地,该用户终端400a可以基于客户端对应的用户私钥,对该交易请求消息4进行签名处理,以得到该交易请求消息4的客户端签名信息。
其中,可以理解的是,该用户终端400a可以获取该交易请求消息4的请求消息类型、该交易请求消息4所指示的请求操作(例如,游戏场景中的游戏币转账操作)、该交易请求消息4对应的请求时间戳以及该客户端的客户端标识,进而可以将获取到的这些信息进行拼接处理,以得到客户端拼接信息。进一步地,该用户终端400a可以对该客户端拼接信息进行哈希计算,得到交易请求消息4的客户端待签名消息(即摘要信息h)。进一步地,该用户终端400a可以基于客户端对应的用户私钥,对该摘要信息h进行签名处理,以得到客户端签名信息。此时,该用户终端400a可以基于该客户端签名消息和交易请求消息4生成图4所示的业务请求,进而可以将该业务请求发送至图4所示的节点40A。
如图4所示,节点40A在接收到业务请求时,可以从业务请求中获取交易请求消息4和客户端签名信息。进一步地,该节点40A可以获取用户私钥对应的用户公钥,进而可以基于该用户公钥,对客户端签名信息进行验签,以得到请求验签结果。其中,可以理解的是,节点40A可以基于用户公钥对该客户端签名信息中的数字签名进行验签,得到交易请求消息4的摘要信息h,并利用与该用户终端400a相同的哈希算法对该交易请求消息4进行哈希计算,从而可以得到该交易请求消息4的摘要信息H。进一步地,节点40A可以将验签后所得到的摘要信息h与进行哈希计算得到的摘要信息H进行比对,得到请求验签结果。若该请求验签结果指示摘要信息h与摘要信息H不相同,则可以理解为节点40A验签失败,即该业务请求为非法业务请求。若该请求验签结果指示摘要信息h与摘要信息H相同,则可以理解为节点40A验签成功,即业务请求为合法请求。
可以理解的是,在请求验签结果指示业务请求为合法请求时,该节点40A可以将交易请求消息4添加至交易缓存池(例如,图4所示的交易缓冲池400),以便后续进行交易打包处理得到待验证区块。
进一步地,第一节点可以从交易缓冲池(图4所示的交易缓冲池400)中获取与交易请求消息4相关联的待处理交易消息,对该待处理交易消息进行交易打包处理,以得到用于向区块链网络中的(N-1)个备份节点进行广播的待验证区块。
此时,该第一节点可以将待验证区块的区块哈希值作为待验证区块的区块摘要,并可以获取第一节点在区块链网络对应的视图中的视图号,且获取为待验证区块分配的序列号。进一步地,该第一节点可以获取待生成的第一准备消息的第一消息类型,进而可以将第一消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第一拼接信息。此时,该第一节点可以获取针对第一拼接信息的摘要确定规则,基于第一拼接信息的摘要确定规则确定第一拼接信息的哈希值,进而可以将第一拼接信息的哈希值作为第一拼接信息对应的摘要信息,且将第一拼接信息对应的摘要信息确定为第一待签名消息。此时,该第一节点可以基于第一节点的第一私钥,对第一待签名消息进行签名处理,以得到第一待签名消息的第一签名信息,进而可以基于第一签名信息以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
例如,区块链网络中的第一节点(例如,节点p)所生成的第一准备消息的消息格式可以为
Figure BDA0003044077000000181
其中,Q是指该节点p基于客户端的交易请求消息所确定的待广播消息(例如,待验证区块),PRE-PREPARE是指该第一准备消息的消息类型(即第一消息类型),v是指节点p在区块链网络对应的视图中的视图号,n是指节点p为待验证区块分配的序列号,d是指待验证区块的区块摘要,σp是指节点p对第一待签名信息进行签名处理后的第一签名信息。
应当理解,该区块链网络中的(N-1)个备份节点中的某一个备份节点(例如,目标备份节点)在接收到第一准备消息时,可以对第一准备消息中的第一签名信息进行签名验证,且在签名验证成功时得到第一准备消息对应的第二准备消息。其中,可以理解的是,目标备份节点在获取到第一节点广播的第一准备消息时,可以获取第一节点的第一公钥,进而可以基于该第一公钥对第一签名信息进行验签,且在验签成功时,通过聚合签名规则得到第一准备消息对应的第二准备消息。
可以理解的是,在本申请实施例中,由于第一节点向备份节点所广播的第一准备消息为同一条消息,因此,每个备份节点所接收到的第一准备消息均相同,换言之,每个备份节点在生成第一准备消息对应的第二准备消息的过程中,每个备份节点所获取到的第一准备消息中的视图号、序列号以及待广播消息的消息摘要(例如,待验证区块的区块摘要)相同,而每个备份节点的节点标识不同。此时,本申请实施例可以将第二准备消息的消息格式进行调整,即从
Figure BDA0003044077000000191
调整为
Figure BDA0003044077000000192
这意味着每个备份节点所确定的第二待签名消息是由待生成的第二准备消息的消息类型(即第二消息类型)、视图号、序列号以及区块摘要所构成的,而无需将自身节点标识作为待签名的对象。本申请实施例调整第二准备消息的消息格式可以导致每个备份节点所确定的第二待签名消息都相同,即待签名消息m相同。因此每个备份节点确定的第二待签名消息对应的验证哈希值也相同,从而可以降低验证聚合签名信息的复杂度。
其中,聚合签名规则可以包括多种协议,本申请实施例可以以Schnorr算法为例,基于椭圆曲线阐述数字签名原理。可以理解的是,该Schnorr算法是一种公钥电子签名方案,由于其计算上的线性特征,很容易改造成高效的聚合签名。在Schnorr算法流程中,可以设E为定义在有限域上的椭圆曲线,E上的点形成一个循环群,阶为质数n,记
Figure BDA0003044077000000193
为模n整数环,
Figure BDA0003044077000000194
的元素取值范围为{0,1,2,…,n-1};
Figure BDA0003044077000000195
为模n整数乘法群,
Figure BDA0003044077000000196
的元素取值范围为{1,2,…,n-1}。可以理解的是,本申请实施例中的随机数可以依赖于签名方(例如,备份节点)的节点私钥和待签名消息,可选的,该随机数还可以使用其他对节点私钥(或者与节点私钥所绑定的一个非公开值)和待签名消息的运算组合。其中,这里的非公开值可以是指对节点私钥的一种映射运算。当然,该随机数还可以具有其他生成方式,这里将不对其进行限定。
在基于聚合签名规则对待签名消息进行签名处理时,本申请实施例可以选择随机数
Figure BDA0003044077000000204
作为区块链网络中的节点的节点私钥,例如,该区块链网络中的节点(例如,节点i)的节点私钥可以表示为ki,其中,ki∈{k1,k2,...,kN}。基于聚合签名规则,本申请实施例可以将节点私钥与定点参数G的乘积作为该节点的节点公钥。这里的定点参数可以与该聚合签名规则相关,该定点参数可以是指椭圆曲线E上的一个定点,且为生成元。例如,区块链网络中的节点(例如,节点i)的节点公钥可以表示为Pi(即Pi=kiG),其中,Pi∈{P1,P2,...,PN}。
具体地,在本申请实施例中聚合签名规则可以参见下述公式(1)-公式(9):在聚合签名规则中,签名方(即备份节点,例如,节点i)对待签名消息进行签名处理得到签名信息<Ri,si>的具体公式可以参见下述公式(1)-公式(4):
Figure BDA0003044077000000201
其中,ri可以表示节点i所生成的随机数,ki可以表示节点i的节点私钥,m可以表示待签名消息(例如,第一待签名消息或者第二待签名消息),质数n可以为阶,
Figure BDA0003044077000000205
为模n整数乘法群,
Figure BDA0003044077000000206
的元素取值范围为{1,2,…,n-1}。
Ri=riG, (2)
其中,Ri可以表示节点i所确定的第一签名参数,G可以表示为与该聚合签名规则相关联的定点参数。
Figure BDA0003044077000000202
其中,m可以表示为待签名消息,e可以表示节点i所确定的待签名消息的验证哈希值,
Figure BDA0003044077000000207
是指模n整数环,
Figure BDA0003044077000000208
的元素取值范围为{0,1,2,…,n-1}。
Figure BDA0003044077000000203
其中,si可以表示节点i所确定的第二签名参数,ri可以表示节点i所生成的随机数,ki可以表示节点i的节点私钥,e可以表示节点i所确定的待签名消息的验证哈希值。
在聚合签名规则中,参与聚合签名的聚合方(即第一节点,例如,节点p)在接收到n(≥2f)个对应的第二准备消息时,可以对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到聚合签名信息。其中,第一节点确定聚合签名信息<R,s>的具体计算方式可以参见下述公式(5)-公式(6):
Figure BDA0003044077000000211
其中,Ri可以表示节点i所返回第二签名信息的第一签名参数,R可以表示节点p(即第一节点)对获取到的第一签名参数进行合并处理后所得到的第一聚合签名参数。
Figure BDA0003044077000000212
其中,si可以表示节点i所返回第二签名信息的第二签名参数,s可以表示节点p(即第一节点)对获取到的第二签名参数进行合并处理后所得到的第二聚合签名参数。
在聚合签名规则中,验签方(即备份节点)对接收到聚合签名信息<R,s>进行验签(即验证S1是否等于S2)的具体计算方式可以参见下述公式(7)-公式(9):
Figure BDA0003044077000000213
其中,m可以表示为待签名消息,E可以表示验签方所确定的待签名消息的消息哈希值。
S1=sG, (8)
其中,s可以表示聚合方(即第一节点)对获取到的第二签名参数进行合并处理后所得到的第二聚合签名参数,G可以表示与该聚合签名规则相关联的定点参数。S1可以表示验签方对待签名消息进行验签的第一聚合验证参数。
Figure BDA0003044077000000221
其中,R可以表示聚合方(即第一节点)对获取到的第一签名参数进行合并处理后所得到的第一聚合签名参数,E可以表示验签方所确定的待签名消息的消息哈希值,Pi可以表示签名方(例如,节点i)的节点公钥,S2可以表示验签方对待签名消息进行验签的第二聚合验证参数。
步骤S102,在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的聚合消息,以使(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息。
其中,一个第二准备消息可以包括一个备份节点的第二签名信息和一个备份节点的节点标识。应当理解,在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,第一节点可以从2f个第二准备消息中,分别获取每个第二签名信息中的第一签名参数,每个第二签名信息中的第二签名参数以及每个第二准备消息中的节点标识。进一步地,该第一节点可以对获取到的2f个第一签名参数进行合并处理,将合并处理后的签名参数作为第一聚合签名参数,且对获取到的2f个第二签名参数进行合并处理,将合并处理后的签名参数作为第二聚合签名参数。可以理解的是,该第一节点可以基于第一聚合签名参数和第二聚合签名参数,得到聚合签名信息,且基于获取到的2f个节点标识,生成节点标识列表,进而可以基于聚合签名信息和节点标识列表,以得到用于广播至(N-1)个备份节点的聚合消息。
应当理解,本申请实施例中的(N-1)个备份节点可以包括第二节点,这里的第二节点是指该(N-1)个备份节点中除f个非法节点之外的节点,其中,第二节点的数量可以为M个,这里的M可以等于((N-1)-f)。这M个第二节点可以包括目标备份节点,本申请实施例可以以目标备份节点为例,用以阐述生成第二准备消息(即准备消息)的过程。
可以理解的是,目标备份节点在获取到由第一节点广播的第一准备消息时,可以基于第一节点的第一公钥,对该第一准备消息中的第一签名信息进行验签,且在验签成功时,可以获取待生成的第二准备消息的第二消息类型,进而可以将第二消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第二拼接信息。进一步地,该目标备份节点可以获取针对第二拼接信息的摘要确定规则,从而可以基于第二拼接信息的摘要确定规则确定第二拼接信息的哈希值,将第二拼接信息的哈希值作为第二拼接信息对应的摘要信息,且将第二拼接信息对应的摘要信息确定为第二待签名消息。
此时,该目标备份节点可以基于目标备份节点的第二私钥,对第二待签名消息进行签名处理,得到第二待签名消息的第二签名信息。其中,可以理解的是,目标备份节点可以获取聚合签名规则,确定与聚合签名规则相关联的定点参数,进而可以基于上述公式(1)、目标备份节点的第二私钥和第二待签名消息,得到由目标备份节点生成的随机数。进一步地,该目标备份节点可以基于上述公式(2),将随机数和定点参数的乘积作为第一签名参数。与此同时,该目标备份节点还可以基于聚合签名规则中的公式(3),获取第二待签名消息对应的验证哈希值,且基于上述公式(4)、随机数、第二私钥以及验证哈希值,确定第二签名参数。进一步地,该目标备份节点可以基于第一签名参数和第二签名参数,得到第二待签名消息的第二签名信息,且基于目标备份节点的节点标识和第二签名信息,得到第一准备消息对应的第二准备消息。
其中,目标备份节点(例如,节点i)所确定的第二准备消息的消息格式可以为
Figure BDA0003044077000000231
其中,PREPARE是指该第二准备消息的消息类型(即第二消息类型),v是指节点i从第一准备消息中所获取的视图号,n是指节点i从第一准备消息中所获取的序列号,d是指待广播消息的消息摘要(例如,待验证区块的区块摘要),σi是指节点i对第二待签名信息进行签名处理后的第二签名信息,i是指该节点i的节点标识。
进一步地,目标备份节点可以将第二准备消息发送至第一节点,在第一节点接收到目标备份节点返回的第二准备消息时,可以将目标备份节点返回的第二准备消息作为目标准备消息。此时,第一节点可以获取该目标备份节点的第二公钥,进而可以基于该第二公钥对该第二签名信息进行验签,以得到准备验签结果。其中,可以理解的是,该第一节点可以从目标准备消息中获取第二签名参数,进而可以基于上述聚合签名规则中的公式(8)、第二签名参数以及与聚合签名规则相关联的定点参数,得到用于对第二准备消息进行验证的第一验证参数。与此同时,该第一节点可以基于聚合签名规则中的公式(7),获取第二待签名消息对应的消息哈希值,进而可以在获取到目标备份节点的第二公钥时,基于公式(9)、目标备份节点的第二公钥、第一签名参数以及消息哈希值,得到用于对第二准备消息进行验证的第二验证参数。可以理解的是,在第一验证参数与第二验证参数不一致时,该第一节点可以确定验证失败,即第一节点可以得到第二签名信息对应的验签失败结果。可选的,在第一验证参数与第二验证参数一致时,该第一节点可以确定验证成功,即该第一节点可以得到第二签名信息对应的验签成功结果。其中,验签成功结果或者验签失败结果均可以称之为针对第二签名信息的准备验签结果。
可以理解的是,在准备验签结果为验签成功结果时,第一节点可以对第二待签名消息中的视图号、序列号以及区块摘要进行合法性校验,得到校验结果。这里的合法性校验可以是指校验第二待签名消息中的视图号是否为当前区块链网络对应的视图号,序列号是否在所允许的区间范围,该区间范围用于避免节点处理速度过快,区块摘要d与待验证区块m的摘要是否一致等。在校验结果指示校验成功时,该第一节点可以将目标准备消息写入与第一节点相关联的日志数据库。
为便于理解,进一步地,请参见图5,图5是本申请实施例提供的一种将目标准备消息写入日志数据库的场景示意图。如图5所示,本申请实施例中的节点50A可以为根据当前区块链网络对应的视图所确定的主节点,该节点50A可以为上述图1所示的区块链网络中的第一节点,例如,节点10A。本申请实施例中的节点50B(即目标备份节点)可以为该区块链网络中的(N-1)个备份节点所包括的第二节点,该节点50B可以为图1所示的区块链网络中除节点10A之外的任意一个节点,例如,节点10B。其中,N可以表示该区块链网络中的节点总数量。
应当理解,图5所示的节点50B可以获取节点50A所发送的第一准备消息(例如,图5所示的准备消息500a)。其中,该准备消息500a中可以包括签名信息5a和待验证区块Q。可以理解的是,这里的签名信息5a是节点50A基于节点50A的节点私钥(即第一私钥),对第一签名消息进行签名处理后所得到的。其中,第一待签名消息可以是由节点50A基于第一准备消息的第一消息类型、节点50A在区块链网络对应的视图中的视图号v、节点50A为待验证区块Q分配的序列号n以及待验证区块Q的区块摘要d所得到的。该待验证区块Q是指节点50A对从交易缓存池(例如,图4所示的交易缓冲池400)中所获取的待处理交易消息进行交易打包处理后所得到的。
此时,节点50B可以获取节点50A的节点公钥(即第一公钥),进而可以基于第一公钥对签名信息5a进行验签,得到验签结果,且在验签结果指示验签成功时,可以获取待生成的第二准备消息(例如,图5所示的准备消息500b)的消息类型(即第二消息类型),进而可以将第二消息类型、视图号v、序列号n以及区块摘要d进行拼接处理,得到第二拼接信息。进一步地,该节点50B可以获取针对第二拼接信息的摘要确定规则,从而可以基于该第二拼接信息的摘要确定规则确定第二拼接信息的哈希值,将第二拼接信息的哈希值作为第二拼接信息对应的摘要信息,且将第二拼接信息对应的摘要信息确定为第二待签名消息。
此时,该节点50B可以获取聚合签名规则,确定与聚合签名规则相关联的定点参数,进而可以基于上述公式(1)、节点50B的节点私钥(即第二私钥)和第二待签名消息,得到由节点50B生成的随机数(例如,r1)。进一步地,该节点50B可以基于上述公式(2),将随机数和定点参数的乘积作为第一签名参数(例如,R1)。与此同时,该节点50B还可以基于聚合签名规则中的公式(3),获取第二待签名消息对应的验证哈希值,且基于上述公式(4)、随机数、第二私钥以及验证哈希值,确定第二签名参数(例如,s1)。进一步地,该节点50B可以基于第一签名参数和第二签名参数,得到图5所示的签名信息5b(即第二签名信息,例如<R1,s1>),且基于节点50B的节点标识和第二签名信息,得到准备消息500a对应的准备消息500b。
进一步地,节点50B可以将准备消息500b发送至节点50A,以使节点50A对准备消息500b进行校验。可以理解的是,节点50A可以获取该节点50B的节点公钥(即第二公钥),进而可以基于该第二公钥对该签名信息5b进行验签,以得到准备验签结果。其中,可以理解的是,该节点50A可以从准备消息500b中获取第二签名参数(例如,s1),进而可以基于上述聚合签名规则中的公式(8)、第二签名参数以及与聚合签名规则相关联的定点参数,得到用于对准备消息500b进行验证的第一验证参数。与此同时,该节点50A可以基于聚合签名规则中的公式(7),获取第二待签名消息对应的消息哈希值,进而可以在获取到节点50B的第二公钥时,基于公式(9)、节点50B的第二公钥、第一签名参数以及消息哈希值,得到用于对第二准备消息进行验证的第二验证参数。可以理解的是,在第一验证参数与第二验证参数一致时,该节点50A可以确定验证成功,此时,节点50A可以对第二待签名消息中的视图号、序列号以及区块摘要进行合法性校验,得到校验结果。在校验结果指示校验成功时,该节点50A可以将准备消息500b写入与节点50A相关联的日志数据库(例如,图5所示的日志数据库)。
可以理解的是,由于该区块链网络中的非法节点的最大数量为f。因此,第一节点在接收到2f个来自不同备份节点的第二准备消息时,可以认为待验证区块已经准备好。换言之,第一节点在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,说明该区块链网络的大部分节点已经认同了第一节点所广播的第一准备消息。此时,第一节点可以基于聚合签名规则中的公式(5)-公式(6),对接收到的所有第二准备消息中的第二签名信息进行聚合签名,以得到用于广播至(N-1)个备份节点的聚合消息。
其中,在本申请实施例中,第一节点所生成的聚合消息的消息格式可以为<PREPARED,v,n,d,[i],J>,其中,PREPARED是指该聚合消息的消息类型,v是指第一节点在区块链网络对应的视图中的视图号,n是指第一节点为待广播消息(例如,基于客户端的交易请求消息所确定的待验证区块)分配的序列号,d是指待广播消息的消息摘要(例如,待验证区块的区块摘要),[i]是指第一节点基于获取到的2f个第二准备消息中的节点标识所生成的节点标识列表,J是指第一节点对获取到的第二签名信息进行聚合签名所得到的聚合签名信息。
比如,如图2所示,若该区块链网络中的非法节点的最大数量为2个,则该区块链网络中的节点20A(即第一节点)在接收到备份节点中的4个节点返回的第二准备消息时,可以说明该区块链网络的大部分节点已经认同了节点20A所发送的第一准备消息。其中,这4个第二准备消息可以包括:准备消息1、准备消息2、准备消息3以及准备消息4。可以理解的是,该准备消息1可以包括签名信息1<R1,s1>和节点标识1。该准备消息2可以包括签名信息2<R2,s2>和节点标识2。该准备消息3可以包括签名信息3<R3,s3>和节点标识3。该准备消息4可以包括签名信息4<R4,s4>和节点标识4。
进一步地,该节点20A可以从这4个第二准备消息中分别获取每个第二签名信息中的第一签名参数(例如,R1、R2、R3以及R4)、每个第二签名信息中的第二签名参数(例如,s1、s2、s3以及s4)以及每个第二准备消息中的节点标识(例如,节点标识1、节点标识2、节点标识3以及节点标识4)。此时,节点20A可以基于公式(5),对R1、R2、R3以及R4这4个第一签名参数进行合并处理,将合并处理后的签名参数作为第一聚合签名参数,且基于公式(6),对s1、s2、s3以及s4这4个第二签名参数进行合并处理,将合并处理后的签名参数作为第二聚合签名参数。进一步地,该节点20A可以基于第一聚合签名参数和第二聚合签名参数,得到聚合签名信息<R,s>。与此同时,该节点20A可以基于节点标识1、节点标识2、节点标识3以及节点标识4这4个节点标识,生成节点标识列表。此时,节点20A可以基于聚合签名信息、节点标识列表、聚合消息的消息类型、视图号、序列号以及区块摘要,得到用于广播至(N-1)个备份节点的聚合消息。
可以理解的是,区块链网络中的备份节点(例如,目标备份节点)在获取到由第一节点广播的聚合消息时,可以基于上述公式(8)、第二聚合签名参数以及与聚合签名规则相关联的定点参数,得到用于对聚合消息进行验证的第一聚合验证参数(S1)。此外,该目标备份节点还可以基于聚合签名规则中的公式(7),获取与聚合消息相关联的聚合哈希值,进而可以基于节点标识列表中的每个备份节点的节点标识,获取每个备份节点的第二公钥。此时,该目标备份节点可以基于聚合签名规则中的公式(9)、每个备份节点的第二公钥、聚合哈希值以及第一聚合签名参数,得到用于对聚合消息进行验证的第二聚合验证参数(S2)。此时,第一节点可以对第一聚合验证参数和第二聚合验证参数进行比对。
可以理解的是,若第一聚合验证参数与第二聚合验证参数不一致,则该目标备份节点可以确定聚合签名信息对应的聚合验签结果指示验证失败。可选的,若第一聚合验证参数与第二聚合验证参数一致,则该目标备份节点可以确定聚合签名信息对应的聚合验签结果指示验证成功,进而可以基于聚合消息和第一准备消息生成准备证书,且将准备证书存储至目标备份节点的节点内存中。
例如,备份节点所生成的准备证书的证书格式(即prepared_certificate)可以为
Figure BDA0003044077000000281
其中,<PREPARED,v,n,d,[i],J>可以是指第一节点在接收到2f个第二准备消息时所生成的聚合消息,
Figure BDA0003044077000000283
可以是指目标备份节点基于接收到的第一准备消息所确定的。
进一步地,目标备份节点可以基于准备证书,生成用于向第一节点发送的提交消息。可以理解的是,该提交消息可以包括第三签名信息,该第三签名信息是基于目标备份节点的节点私钥(即第二私钥),对第三待签名消息进行签名后所得到的;该第三待签名消息是由提交消息的消息类型(即第三消息类型)、视图号、序列号以及待广播消息的消息摘要(例如,待验证区块的消息摘要)所确定的。其中,该目标备份节点基于准备证书生成提交消息的具体实施方式可以参见上述目标备份节点基于第一准备消息生成第二准备消息的具体实施方式,这里将不对其进行赘述。
其中,目标备份节点(例如,节点i)所生成的提交消息的消息格式可以为
Figure BDA0003044077000000282
其中,COMMIT是指该提交消息的消息类型(即第三消息类型),v是指节点i从聚合消息中所获取的视图号,n是指节点i从聚合消息中所获取的序列号,d是指待广播消息的消息摘要(例如,待验证区块的区块摘要),σi是指节点i对第三待签名信息进行签名处理后的第三签名信息,i是指该节点i的节点标识。
其中,本申请实施例中的第一节点在采用聚合签名规则进行聚合签名时,无需等待并接受其他签名方发送的部分签名参数,进而可以减少大量的网络传输和等待时间,在收集到足够的签名信息(例如,2f个第二签名信息)时,可以基于聚合签名规则中的公式(5)和公式(6)进行聚合签名,以得到聚合签名后的聚合消息。可以理解的是,签名方(即参与聚合签名的备份节点)在生成待签名消息的随机数时,可以基于聚合签名规则中的公式(1)生成,这样既能保证对不同待签名消息进行签名时,随机数不同以保护签名方的私钥,又能使得同一个私钥对同一条消息进行签名时的签名信息相同,且使得签名方所计算的待签名消息的验证哈希值不需要依赖签名信息中的第一签名参数。进一步地,在区块链网络中的备份节点接收到聚合消息时,可以基于聚合签名规则,对聚合消息中的聚合签名信息进行验签。由于签名方所计算的待签名消息的验证哈希值不需要依赖签名信息中的第一签名参数,从而可以导致在对同一消息进行聚合签名时所确定的验证哈希值相同,因此验签方(即接收聚合消息的备份节点)在验签过程中,能够降低第二聚合验签参数的复杂度。
步骤S103,统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
具体地,第一节点可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,该第一节点可以认为区块链网络中的大部分备份节点已提交待验证区块,此时该第一节点可以执行交易请求消息对应的请求操作,进而可以将执行请求操作后的响应消息返回至客户端。其中,这(2f+1)个提交消息可以来自(N-1)个备份节点中的(2f+1)个备份节点。可选的,这(2f+1)个提交消息也可以是来自(N-1)个备份节点中的2f个备份节点以及第一节点自身所生成的一个提交消息,这里将不对其进行限定。可以理解的是,第一节点自身生成的提交消息可以是在接收到2f个第二准备消息时,基于第二准备消息和第一准备消息所确定的。
应当理解,第一节点(即主节点,例如,节点p)所生成的响应消息的消息格式可以为
Figure BDA0003044077000000291
其中,REPLY是指该响应消息对应的消息类型,v是指视图号,t是指该交易请求消息对应的请求时间戳,c是指该客户端标识,p是指节点p的节点标识,r是指节点p执行请求操作后的响应结果,σp是指节点p对响应消息进行签名后所得到的签名信息。
在本申请实施例中,区块链网络中的第一节点(即主节点)在接收到交易请求消息时,可以基于交易请求消息生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息。这里的N可以为该区块链网络中的节点总数量,且N为等于(3f+1)的正整数,f可以表示该区块链网络中的非法节点的最大数量。其中,第一准备消息可以包括待广播消息(例如,交易请求消息或者包括交易请求消息的待验证区块)。可以理解的是,第一节点在进行聚合签名时,无需感知其他签名方的存在,可以直接无差别的接收区块链网络中的备份节点基于第一准备消息所返回的第二准备消息,进而可以在收集到足够数量的第二准备消息(即2f个备份节点返回的第二准备消息)时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,进而可以将聚合签名后所得到的聚合消息统一广播至共识网络中的每个备份节点,以使这些备份节点可以在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息,从而可以提高聚合签名时的效率。应当理解,本申请实施例中的第一节点还可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,可以直接执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。由此可见,在整个共识过程中,第一节点可以提高聚合签名时的效率,且可以在将聚合签名后的聚合消息统一广播至(N-1)个备份节点时,大大减少了网络间的数据交互,进而使得共识时的网络复杂度降低。
进一步地,请参见图6,图6是本申请实施例提供的一种数据处理方法的流程示意图。如图6所示,该方法可以由区块链网络中的第一节点执行,该第一节点可以为根据该区块链网络对应的视图所确定的主节点,例如,该第一节点可以为图1所示的区块链网络中的节点10A。该方法至少可以包括以下步骤S201-步骤S205:
步骤S201,基于接收到的客户端的交易请求消息,生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息,以使(N-1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;
步骤S202,在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的聚合消息,以使(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息。
可以理解的是,该第一节点在执行完步骤S202后,能够接收到(N-1)个备份节点中的(2f+1)个备份节点返回的提交消息,此时,该第一节点可以认为该区块链网络中备份节点已提交待验证区块,进而可以执行直接执行步骤S203。
步骤S203,统计获取到的提交消息的消息数量;
具体地,第一节点可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,可以执行步骤S204,以执行交易请求消息对应的请求操作,并向客户端返回执行请求操作后所生成的响应消息。可选的,当消息数量达到(2f+1)个时,该第一节点还可以跳转执行步骤S205,以生成提交证书,使得区块链网络中的备份节点执行交易请求消息对应的请求操作,并向客户端返回执行请求操作后所生成的响应消息。
步骤S204,当消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
其中,该步骤S201-步骤S204的具体实施方式可参见上述图3所对应实施例中对步骤S101-步骤S103的描述,这里将不再赘述。
步骤S205,当消息数量达到(2f+1)个时,对统计到的所有提交消息中的第三签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的提交证书,以使(N-1)个备份节点在成功验证提交证书时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
应当理解,当消息数量达到(2f+1)个时,第一节点可以从(2f+1)个提交消息中分别获取每个第三签名信息以及每个提交消息中的节点标识,进而可以根据聚合签名规则中的公式(5)和公式(6),对获取到的(2f+1)个第三签名信息进行聚合签名,以得到聚合签名后的签名信息,进而可以基于聚合签名后的签名信息以及由(2f+1)个节点标识所构成的节点标识列表,生成用于广播至(N-1)个备份节点的提交证书。其中,第一节点生成提交证书的具体实施方式可以参见上述第一节点生成聚合消息的具体实施方式,这里将不对其进行赘述。进一步地,(N-1)个备份节点中的某一个备份节点(例如,目标备份节点)在接收到提交证书时,可以对提交证书进行验证,进而可以在验证成功时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
为便于理解,进一步地,请参见图7,图7是本申请实施例提供的一种基于聚合签名改进共识算法的流程示意图。如图7所示,该方法可以由区块链网络中的第一节点和(N-1)个备份节点共同执行,该第一节点可以为根据该区块链网络对应的视图所确定的主节点,例如,该第一节点可以为图1所示的区块链网络中的节点10A。该备份节点可以为该区块链网络中除第一节点之外的节点,其中,N可以为等于(3f+1)的正整数,f可以为该区块链网络中的非法节点的最大数量。如图7所示,本申请实施例的备份节点可以以3个为例,这3个备份节点可以包括节点1、节点2以及节点3。其中,节点3可以为非法节点(即恶意节点)。
如图7所示,本申请实施例中可以涉及改进前的共识算法(例如,改进前的PBFT算法)和改进后的共识算法(例如,改进后的PBFT算法)。其中,与节点3相关联的线700可以指示该节点3不传输消息,或者传输不一致的消息,以试图扰乱其他节点。
在采用PBFT算法对待广播消息进行共识的过程中,可以包括预准备阶段、准备阶段以及提交阶段。其中,在区块链网络中的节点总数量为N时,对于每个交易请求消息而言,忽略请求和响应时的消息传输。在基于聚合签名改进PBFT算法之前,(N-1)个备份节点会将第二准备消息和提交消息无差别的广播至所有节点,此时,改进前所需传输的消息数为2N(N-1),即共识时的网络复杂度达到了O(n2),随着节点数增加,PBFT算法对稳定网络的依赖将越来越大,这对共识的可拓展性是非常不利的。
因此,本申请实施例可以基于聚合签名(例如,基于schnorr的聚合签名算法)对PBFT算法进行改进,以降低共识时的网络复杂度。应当理解,在采用改进后的PBFT算法对待广播消息进行共识的过程中,第一节点可以收集(N-1)个备份节点(例如,节点1、节点2以及节点3)对待广播消息进行签名后的签名信息(例如,第二准备消息中的第二签名信息),进而可以对收集到的所有第二签名信息进行聚合签名,再将聚合签名后所得到的消息(例如,聚合消息)统一广播给区块链网络中的所有节点,以降低共识时的网络复杂度。
如图7所示,在改进后的共识算法的预准备阶段中,第一节点可以获取由客户端发送的交易请求消息,进而可以基于接收到的交易请求消息,生成用于向节点1、节点2以及节点3这3个备份节点广播的第一准备消息(即预准备消息)。
在改进后的共识算法的准备阶段中,第一节点可以获取由区块链网络中的(N-1)个备份节点所返回的第二准备消息,且在接收到(N-1)个备份节点中的2f个备份节点(例如,2个备份节点,例如,节点1和节点2)返回的第二准备消息时,可以基于上述聚合签名规则中的公式(5)和公式(6),对接收到的所有第二准备消息中的第二签名信息进行聚合签名,以得到聚合消息,进而可以将聚合消息广播至(N-1)个备份节点。其中,可以理解的是,该区块链网络中的备份节点(例如,节点1)在接收到该第一准备消息时,可以对第一准备消息中的第一签名信息进行验证,基于上述聚合签名规则中的公式(1)-公式(4),得到第一准备消息对应的第二准备消息,进而可以将该第二准备消息返回至第一节点。同理,该区块链网络中的备份节点(例如,节点2)也可以向第一节点返回第一准备消息对应的第二准备消息。
在改进后的共识算法的提交阶段中,第一节点可以获取由(N-1)个备份节点所返回的提交消息。其中,可以理解的是,该区块链网络中的备份节点(例如,节点1)在接收到聚合消息时,基于上述聚合签名规则中的公式(7)-公式(9)对聚合消息进行验证,在验证成功时可以基于上述聚合签名规则中的公式(1)-公式(4)以及第一准备消息,生成用于返回至第一节点的提交消息。同理,该区块链网络中的备份节点(例如,节点2)也可以向第一节点返回提交消息。应当理解,第一节点可以统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,该第一节点可以认为待验证区块已提交,进而可以直接执行交易请求消息对应的请求操作,并向客户端返回执行请求操作后所生成的响应消息。可选的,该第一节点还可以基于上述聚合签名规则中的公式(5)和公式(6),对统计到的所有提交消息进行聚合签名,以得到提交证书,进而可以将提交证书广播至(N-1)个备份节点,以使(N-1)个备份节点在验证成功提交证书成功时,执行交易请求消息对应的请求操作,并向客户端返回执行请求操作后所生成的响应消息。例如,区块链网络中的备份节点(例如,节点1)在接收到提交证书时,可以基于上述聚合签名规则中的公式(7)-公式(9)对提交证书进行验证,在验证成功时,可以执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
可以理解的是,在客户端接收到(f+1)个包括相等请求时间戳和响应结果的有效响应时,则说明至少有一个正常节点返回有效响应,此时可以认为交易请求消息对应的请求操作执行成功。在客户端在接收到(f+1)个有效响应时,可以认为区块链网络中的备份节点达成共识,此时,客户端可以将最终响应发送至Rpc模块,以使该Rpc模块再对交易发起方进行最终响应。
由此可见,在基于聚合签名改进共识算法之后,备份节点可以直接将第二准备消息和提交消息发送至第一节点,并由该第一节点对所接收到的所有第二准备消息或者提交消息进行聚合签名,在将聚合签名后所得到的聚合消息或者提交证书广播至所有备份节点,这样可以减少很多冗余的网络消息,进而减少了区块链网络间的网络交互。此外,本申请实施例在进行聚合签名时,无需感知其他聚合签名方的存在,可以在收集到足够的签名信息,对所收集到的所有签名信息进行聚合签名,从而降低了聚合签名的网络复杂度,提高了聚合签名的效率。如图7所示,改进后的共识算法所需传输的消息数为5(N-1),共识的复杂度由O(n2)降低到O(n)。因此,采用本申请实施例可以降低共识时的网络复杂度,进而可以在采用PBFT算法的区块链系统中降低对稳定网络的依赖性,使得区块链系统即使处于网络延迟的较大环境下,效率也不会受到太大影响。
进一步地,请参见图8,图8是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该数据处理装置1为一个应用软件;该数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据处理装置1可以运行于区块链网络中的第一节点,该第一节点可以为上述图2所对应实施例中的节点20A。该数据处理装置1可以包括:消息生成模块10,第一聚合签名模块20,结果返回模块30,目标验签模块40,校验模块50,消息写入模块60以及第二聚合签名模块70。
该消息生成模块10,用于基于接收到的客户端的交易请求消息,生成用于广播至区块链网络中的(N-1)个备份节点的第一准备消息,以使(N-1)个备份节点对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;N为区块链网络中的节点总数量,且N为为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量。
其中,该消息生成模块10包括:请求消息获取单元101,请求验签单元102,打包处理单元103,视图号获取单元104以及消息生成单元105。
该请求消息获取单元101,用于在接收到客户端发送的业务请求时,获取业务请求中携带的交易请求消息以及客户端签名信息;客户端签名信息是通过客户端对应的用户私钥对客户端待签名消息进行签名处理后所得到的;客户端待签名消息是基于交易请求消息的请求消息类型、请求操作、请求时间戳以及客户端的客户端标识所确定的;
该请求验签单元102,用于获取用户私钥对应的用户公钥,基于用户公钥对客户端签名信息进行验签,得到请求验签结果;
该打包处理单元103,用于在请求验签结果指示业务请求为合法请求时,将交易请求消息添加至交易缓冲池,从交易缓冲池中获取与交易请求消息相关联的待处理交易消息,对待处理交易消息进行交易打包处理,得到用于广播至区块链网络中的(N-1)个备份节点的待验证区块,将待验证区块的区块哈希值作为待验证区块的区块摘要;
该视图号获取单元104,用于获取第一节点在区块链网络对应的视图中的视图号,且获取为待验证区块分配的序列号;
该消息生成单元105,用于基于视图号、序列号、区块摘要以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
其中,该消息生成单元105包括:拼接处理子单元1051,待签名确定子单元1052,签名处理子单元1053以及消息生成子单元1054。
该拼接处理子单元1051,用于获取待生成的第一准备消息的第一消息类型,将第一消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第一拼接信息;
该待签名确定子单元1052,用于获取针对第一拼接信息的摘要确定规则,基于第一拼接信息的摘要确定规则确定第一拼接信息的哈希值,将第一拼接信息的哈希值作为第一拼接信息对应的摘要信息,且将第一拼接信息对应的摘要信息确定为第一待签名消息;
该签名处理子单元1053,用于基于第一节点的第一私钥,对第一待签名消息进行签名处理,得到第一待签名消息的第一签名信息;
该消息生成子单元1054,用于基于第一签名信息以及待验证区块,生成用于广播至(N-1)个备份节点的第一准备消息。
其中,该拼接处理子单元1051,待签名确定子单元1052,签名处理子单元1053以及消息生成子单元1054的具体实现方式可以参见上述图3所对应实施例中对第一准备消息的描述,这里将不再继续进行赘述。
其中,该请求消息获取单元101,请求验签单元102,打包处理单元103,视图号获取单元104以及消息生成单元105的具体实现方式可以参见上述图3所对应实施例中对步骤S101的描述,这里将不再继续进行赘述。
该第一聚合签名模块20,用于在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的聚合消息,以使(N-1)个备份节点在成功验证聚合消息时,基于聚合消息和第一准备消息生成提交消息。
其中,一个第二准备消息中包括一个备份节点的第二签名信息和一个备份节点的节点标识;
该第一聚合签名模块20包括:参数获取单元201,合并处理单元202,聚合签名单元203以及聚合消息确定单元204。
该参数获取单元201,用于在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,从2f个第二准备消息中分别获取每个第二签名信息中的第一签名参数,每个第二签名信息中的第二签名参数以及每个第二准备消息中的节点标识;
该合并处理单元202,用于对获取到的2f个第一签名参数进行合并处理,将合并处理后的签名参数作为第一聚合签名参数,且对获取到的2f个第二签名参数进行合并处理,将合并处理后的签名参数作为第二聚合签名参数;
该聚合签名单元203,用于基于第一聚合签名参数和第二聚合签名参数,得到聚合签名信息,且基于获取到的2f个节点标识,生成节点标识列表;
该聚合消息确定单元204,用于基于聚合签名信息和节点标识列表,得到用于广播至(N-1)个备份节点的聚合消息。
其中,该参数获取单元201,合并处理单元202,聚合签名单元203以及聚合消息确定单元204的具体实现方式可以参见上述图3所对应实施例中对步骤S102的描述,这里将不再继续进行赘述。
该结果返回模块30,用于统计获取到的提交消息的消息数量,当消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
其中,(N-1)个备份节点包括第二节点;第二节点为(N-1)个备份节点中除f个非法节点之外的节点;第二节点的数量为M个;且M等于((N-1)-f);M个第二节点包括目标备份节点;目标备份节点返回的第二准备消息中包括目标备份节点的第二签名信息和目标备份节点的节点标识;第二签名信息是目标备份节点基于目标备份节点的第二私钥,对第二待签名消息进行签名处理后所得到的;第二待签名消息是由目标备份节点返回的第二准备消息的第二消息类型、视图号、序列号以及区块摘要所得到的;
该目标验签模块40,用于将接收到的目标备份节点返回的第二准备消息作为目标准备消息,在获取到目标备份节点的第二公钥时,基于第二公钥对第二签名信息进行验签,得到准备验签结果。
其中,第二签名信息包括第一签名参数和第二签名参数;第一签名参数是基于目标备份节点生成的随机数和与聚合签名规则相关联的定点参数所确定的;第二签名参数是基于随机数、第二私钥以及验证哈希值所确定的;验证哈希值是目标备份节点基于第二待签名消息和聚合签名规则所得到的;
该目标验签模块40包括:目标消息确定单元401,验证参数确定单元402以及准备验签结果生成单元403。
该目标消息确定单元401,用于将接收到的目标备份节点返回的第二准备消息作为目标准备消息,从目标准备消息中获取第二签名参数,基于第二签名参数以及定点参数,得到用于对第二准备消息进行验证的第一验证参数;
该验证参数确定单元402,用于基于聚合签名规则获取第二待签名消息对应的消息哈希值,在获取到目标备份节点的第二公钥时,基于第二公钥、第一签名参数以及消息哈希值,得到用于对第二准备消息进行验证的第二验证参数;
该准备验签结果生成单元403,用于在第一验证参数与第二验证参数一致时,得到第二签名信息对应的验签成功结果,基于验签成功结果确定针对第二签名信息的准备验签结果。
其中,该目标消息确定单元401,验证参数确定单元402以及准备验签结果生成单元403的具体实现方式可以参见上述图3所对应实施例中对第二签名信息的验证描述,这里将不再继续进行赘述。
该校验模块50,用于在准备验签结果为验签成功结果时,对第二待签名消息中的视图号、序列号以及区块摘要进行合法性校验,得到校验结果;
该消息写入模块60,用于在校验结果指示校验成功时,将目标准备消息写入与第一节点相关联的日志数据库。
该第二聚合签名模块70,用于当消息数量达到(2f+1)个时,对统计到的所有提交消息中的第三签名信息进行聚合签名,得到用于广播至(N-1)个备份节点的提交证书,以使(N-1)个备份节点在成功验证提交证书时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端。
其中,该消息生成模块10,第一聚合签名模块20,结果返回模块30,目标验签模块40,校验模块50,消息写入模块60以及第二聚合签名模块70的具体实现方式可以参见上述图3所对应实施例中对步骤S101-步骤S103的描述,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图9,图9是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置2可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该数据处理装置2为一个应用软件;该数据处理装置2可以用于执行本申请实施例提供的方法中的相应步骤。如图9所示,该数据处理装置2可以运行于区块链网络中的目标备份节点,该目标备份节点可以为上述图2所对应实施例中的备份节点中的任意一个第二节点(例如,节点20B)。该数据处理装置2可以包括:签名验证模块100,消息发送模块200以及聚合消息获取模块300。
该签名验证模块100,用于获取由区块链网络中的第一节点广播的第一准备消息,对第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到第一准备消息对应的第二准备消息;第一准备消息是第一节点基于客户端发送的交易请求消息所生成的;目标备份节点属于区块链网络中的(N-1)个备份节点;N为区块链网络中的节点总数量,且N为等于(3f+1)的正整数;f为区块链网络中的非法节点的最大数量。
其中,该签名验证模块100包括:准备消息获取单元1010,拼接处理单元1020,摘要规则获取单元1030,签名处理单元1040以及准备消息生成单元1050。
该准备消息获取单元1010,用于获取由区块链网络中的第一节点广播的第一准备消息;第一准备消息包括对第一待签名消息进行签名处理后的第一签名信息以及待验证区块;第一待签名消息是第一节点基于第一准备消息的第一消息类型、第一节点在区块链网络对应的视图中的视图号、第一节点为待验证区块分配的序列号以及待验证区块的区块摘要所得到的;待验证区块是第一节点对交易缓冲池中的待处理交易消息进行交易打包处理后所得到的;
该拼接处理单元1020,用于在获取到第一节点的第一公钥时,基于第一公钥对第一签名信息进行验签,且在验签成功时,获取待生成的第二准备消息的第二消息类型,将第二消息类型、视图号、序列号以及区块摘要进行拼接处理,得到第二拼接信息;
该摘要规则获取单元1030,用于获取针对第二拼接信息的摘要确定规则,基于第二拼接信息的摘要确定规则确定第二拼接信息的哈希值,将第二拼接信息的哈希值作为第二拼接信息对应的摘要信息,且将第二拼接信息对应的摘要信息确定为第二待签名消息;
该签名处理单元1040,用于基于目标备份节点的第二私钥,对第二待签名消息进行签名处理,得到第二待签名消息的第二签名信息。
其中,该签名处理单元1040包括:定点参数确定单元10401,第一参数确定单元10402,第二参数确定单元10403以及签名信息确定单元10404。
该定点参数确定单元10401,用于获取聚合签名规则,确定与聚合签名规则相关联的定点参数;
该第一参数确定单元10402,用于基于目标备份节点的第二私钥和第二待签名消息,得到由目标备份节点生成的随机数,且将随机数和定点参数的乘积作为第一签名参数;
该第二参数确定单元10403,用于基于聚合签名规则获取第二待签名消息对应的验证哈希值,且基于随机数、第二私钥以及验证哈希值,确定第二待签名消息的第二签名参数;
该签名信息确定单元10404,用于基于第一签名参数和第二签名参数,得到第二签名信息。
其中,该定点参数确定单元10401,第一参数确定单元10402,第二参数确定单元10403以及签名信息确定单元10404的具体实现方式可以参见上述图7所对应实施例中对第二签名信息的描述,这里将不再继续进行赘述。
该准备消息生成单元1050,用于基于目标备份节点的节点标识和第二签名信息,得到第一准备消息对应的第二准备消息。
其中,该准备消息获取单元1010,拼接处理单元1020,摘要规则获取单元1030,签名处理单元1040以及准备消息生成单元1050的具体实现方式可以参见上述图6所对应实施例中对步骤S201的描述,这里将不再继续进行赘述。
该消息发送模块200,用于将第二准备消息返回至第一节点;
该聚合消息获取模块300,用于获取由第一节点广播的聚合消息,在成功验证聚合消息时,基于聚合消息和第一准备消息生成用于向第一节点发送的提交消息,以使第一节点在统计到提交消息的消息数量达到(2f+1)个时,执行交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至客户端;聚合消息为第一节点在接收到(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名后所得到的。
其中,该聚合消息获取模块300包括:聚合消息获取单元3010,第一聚合参数确定单元3020,第二聚合参数确定单元3030以及提交消息生成单元3040。
该聚合消息获取单元3010,用于获取由第一节点广播的聚合消息;聚合消息包括聚合签名信息以及节点标识列表;聚合签名信息包括第一聚合签名参数和第二聚合签名参数;节点标识列表和聚合签名信息均是由第一节点根据接收到的2f个备份节点返回的第二准备消息所确定的;
该第一聚合参数确定单元3020,用于基于第二聚合签名参数以及与聚合签名规则相关联的定点参数,得到用于对聚合消息进行验证的第一聚合验证参数;
该第二聚合参数确定单元3030,用于基于聚合签名规则获取与聚合消息相关联的聚合哈希值,基于节点标识列表中的每个备份节点的节点标识,获取每个备份节点的第二公钥,基于每个备份节点的第二公钥、聚合哈希值以及第一聚合签名参数,得到用于对聚合消息进行验证的第二聚合验证参数;
该提交消息生成单元3040,用于若第一聚合验证参数与第二聚合验证参数一致,则确定聚合签名信息对应的聚合验签结果指示验证成功,且基于聚合消息和第一准备消息生成准备证书,且基于准备证书生成用于向第一节点发送的提交消息。
其中,该聚合消息获取单元3010,第一聚合参数确定单元3020,第二聚合参数确定单元3030以及提交消息生成单元3040的具体实现方式可以参见上述图6所对应实施例中对提交消息的描述,这里将不再继续进行赘述。
其中,该签名验证模块100,消息发送模块200以及聚合消息获取模块300的具体实现方式可以参见上述图6所对应实施例中对步骤S201-步骤S205的描述,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图10,图10是本申请实施例提供的一种计算机设备的示意图。如图10所示,该计算机设备3000可以为上述图2对应实施例中的节点20A,该计算机设备3000可以包括:至少一个处理器3001,例如CPU,至少一个网络接口3004,用户接口3003,存储器3005,至少一个通信总线3002。其中,通信总线3002用于实现这些组件之间的连接通信。其中,用户接口3003可以包括显示屏(Display)、键盘(Keyboard),网络接口3004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器3005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储3005可选地还可以是至少一个位于远离前述处理器3001的存储装置。如图10所示,作为一种计算机存储介质的存储器3005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备3000中,网络接口3004主要用于进行网络通信;而用户接口3003主要用于为用户提供输入的接口;而处理器3001可以用于调用存储器3005中存储的设备控制应用程序。
应当理解,本申请实施例中所描述的计算机设备3000可执行前文图3或者图6所对应实施例中对该数据处理方法的描述,也可执行前文图8所对应实施例中对该数据处理装置1或者图9所对应实施例中对该数据处理装置2的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且该计算机可读存储介质中存储有前文提及的数据处理装置1或者数据处理装置2所执行的计算机程序,且该计算机程序包括程序指令,当该处理器执行该程序指令时,能够执行前文图3或者图6所对应实施例中对该数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本申请一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图3或者图6所对应实施例中对数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步的,请参见图11,图11是本申请实施例提供的一种数据处理系统的结构示意图。该数据处理系统3可以包含数据处理装置1a和数据处理装置2a。其中,数据处理装置1a可以为上述图8所对应实施例中的数据处理装置1,可以理解的是,该数据处理装置1a可以集成在上述图2所对应实施例中的节点20A,因此,这里将不再进行赘述。其中,数据处理装置2a可以为上述图9所对应实施例中的数据处理装置2,可以理解的是,该数据处理装置2a可以集成在上述图2所对应实施例中的备份节点中的任意一个第二节点(例如,节点20B),因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的数据处理系统实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (14)

1.一种数据处理方法,其特征在于,包括:
区块链网络中的第一节点在接收到客户端的交易请求消息时,生成用于广播至所述区块链网络中的(N-1)个备份节点的第一准备消息;所述N为所述区块链网络中的节点总数量,且所述N为等于(3f+1)的正整数;所述f为所述区块链网络中的非法节点的最大数量;所述(N-1)个备份节点包括第二节点;所述第二节点为所述(N-1)个备份节点中除f个所述非法节点之外的节点;所述第二节点的数量为M个;且所述M等于((N-1)-f);所述M个第二节点包括目标备份节点;
所述目标备份节点在获取到所述第一准备消息时,对所述第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到所述第一准备消息对应的第二准备消息,且将所述第二准备消息返回至所述第一节点;
所述第一节点在接收到所述(N-1)个备份节点中的2f个备份节点返回的第二准备消息时,对接收到的所有第二准备消息中的第二签名信息进行聚合签名,得到用于广播至所述(N-1)个备份节点的聚合消息;
所述目标备份节点在成功验证所述聚合消息时,基于所述聚合消息和所述第一准备消息生成用于向所述第一节点发送的提交消息;
所述第一节点统计获取到的所述提交消息的消息数量,当所述消息数量达到(2f+1)个时,执行所述交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述区块链网络中的第一节点在接收到客户端的交易请求消息时,生成用于广播至所述区块链网络中的(N-1)个备份节点的第一准备消息,包括:
区块链网络中的第一节点在接收到所述区块链网络中的任意一个备份节点转发的业务请求时,获取所述业务请求中携带的交易请求消息以及客户端签名信息;所述业务请求是运行有客户端的用户终端在响应触发操作时所生成的;所述客户端签名信息是所述用户终端通过所述客户端对应的用户私钥,对客户端待签名消息进行签名处理后所得到的;所述客户端待签名消息是所述用户终端基于客户端拼接信息所确定的;
所述第一节点获取所述用户私钥对应的用户公钥,基于所述用户公钥对所述客户端签名信息进行验签,得到请求验签结果;
在所述请求验签结果指示所述业务请求为合法请求时,所述第一节点将所述交易请求消息添加至交易缓冲池,从所述交易缓冲池中获取与所述交易请求消息相关联的待处理交易消息,对所述待处理交易消息进行交易打包处理,得到用于广播至所述区块链网络中的(N-1)个备份节点的待验证区块,将所述待验证区块的区块哈希值作为所述待验证区块的区块摘要;
所述第一节点获取所述第一节点在所述区块链网络对应的视图中的视图号,且获取为所述待验证区块分配的序列号;
所述第一节点基于所述视图号、所述序列号、所述区块摘要以及所述待验证区块,生成用于广播至所述(N-1)个备份节点的第一准备消息。
3.根据权利要求2所述的方法,其特征在于,所述第一节点获取所述用户私钥对应的用户公钥,基于所述用户公钥对所述客户端签名信息进行验签,得到请求验签结果,包括:
所述第一节点获取所述用户私钥对应的用户公钥,基于所述用户公钥对所述客户端签名信息中的数字签名进行验签,得到所述交易请求消息的摘要信息h;所述摘要信息h为所述用户终端利用哈希算法,对所述客户端拼接信息进行哈希计算后所得到的;所述客户端拼接信息是对所述交易请求消息的请求消息类型、请求操作、请求时间戳以及所述客户端的客户端标识进行拼接处理后所得到的;
所述第一节点利用与所述用户终端相同的所述哈希算法,对所述交易请求消息进行哈希计算,得到所述交易请求消息的摘要信息H;
所述第一节点将所述摘要信息h与所述摘要信息H进行比对,得到请求验签结果。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述请求验签结果指示所述摘要信息h与所述摘要信息H不相同,则所述第一节点确定验签失败,且确定所述业务请求为非法业务请求;
若所述请求验签结果指示所述摘要信息h与所述摘要信息H相同,则所述第一节点确定验签成功,且确定所述业务请求为合法请求。
5.根据权利要求1所述的方法,其特征在于,所述第一准备消息包括第一签名信息以及待验证区块;所述第一签名信息为所述第一节点基于所述第一节点的第一私钥,对第一待签名消息进行签名处理后的所得到的;所述第一待签名消息是指第一拼接信息对应的摘要信息;所述第一拼接信息是所述第一节点对所述第一准备消息的第一消息类型、所述第一节点在所述区块链网络对应的视图中的视图号、所述第一节点为所述待验证区块分配的序列号以及所述待验证区块的区块摘要进行拼接处理后所得到的;所述待验证区块是所述第一节点对交易缓冲池中的待处理交易消息进行交易打包处理后所得到的;
所述目标备份节点在获取到所述第一准备消息时,对所述第一准备消息中的第一签名信息进行签名验证,在签名验证成功时得到所述第一准备消息对应的第二准备消息,且将所述第二准备消息返回至所述第一节点,包括:
所述目标备份节点在获取到所述第一准备消息时,获取所述第一节点的第一公钥,基于所述第一公钥对所述第一准备消息中的所述第一签名信息进行验签;所述第一公钥为所述第一节点的所述第一私钥以及与聚合签名规则相关联的定点参数的乘积;
所述目标备份节点在验签成功时,获取待生成的第二准备消息的第二消息类型,将所述第二消息类型、所述视图号、所述序列号以及所述待验证区块的区块摘要进行拼接处理,得到第二拼接信息;
所述目标备份节点获取针对所述第二拼接信息的摘要确定规则,基于所述第二拼接信息的摘要确定规则确定所述第二拼接信息的哈希值,将所述第二拼接信息的哈希值作为所述第二拼接信息对应的摘要信息,且将所述第二拼接信息对应的摘要信息确定为第二待签名消息;
所述目标备份节点基于所述目标备份节点的第二私钥以及所述聚合签名规则,对所述第二待签名消息进行签名处理,得到所述第二待签名消息的第二签名信息;
所述目标备份节点基于所述目标备份节点的节点标识和所述第二签名信息,得到所述第一准备消息对应的第二准备消息,且将所述第二准备消息返回至所述第一节点。
6.根据权利要求5所述的方法,其特征在于,所述目标备份节点基于所述目标备份节点的第二私钥以及所述聚合签名规则,对所述第二待签名消息进行签名处理,得到所述第二待签名消息的第二签名信息,包括:
所述目标备份节点获取所述聚合签名规则,基于所述聚合签名规则,对所述目标备份节点的第二私钥和所述第二待签名消息进行拼接处理,且对拼接处理后的拼接信息进行哈希计算,将哈希计算后的哈希值作为随机数;
所述目标备份节点获取与所述聚合签名规则相关联的定点参数,且将所述随机数和所述定点参数的乘积作为第一签名参数;
所述目标备份节点基于所述聚合签名规则,获取所述第二待签名消息对应的验证哈希值,确定所述第二私钥与所述验证哈希值的乘积,对确定的乘积与所述随机数进行求和处理,将求和处理后的值作为第二签名参数;
所述目标备份节点基于所述第一签名参数和所述第二签名参数,得到所述第二待签名消息的第二签名信息。
7.根据权利要求1所述的方法,其特征在于,所述目标备份节点返回的第二准备消息中包括所述目标备份节点的第二签名信息和所述目标备份节点的节点标识;所述第二签名信息是所述目标备份节点基于目标备份节点的第二私钥,对第二待签名消息进行签名处理后所得到的;所述第二待签名消息是由所述目标备份节点返回的第二准备消息的第二消息类型、视图号、序列号以及区块摘要所得到的;所述第二签名信息包括第一签名参数和第二签名参数;所述第一签名参数是基于所述目标备份节点生成的随机数和与聚合签名规则相关联的定点参数所确定的;所述第二签名参数是基于所述随机数、所述第二私钥以及验证哈希值所确定的;所述验证哈希值是所述目标备份节点基于所述第二待签名消息和所述聚合签名规则所得到的;
所述方法还包括:
所述第一节点将接收到的所述目标备份节点返回的第二准备消息作为目标准备消息;从所述目标准备消息中获取所述第二签名参数,将所述第二签名参数以及所述定点参数的乘积作为用于对所述目标准备消息进行验证的第一验证参数;
所述第一节点基于所述聚合签名规则,获取所述第二待签名消息对应的消息哈希值,在获取到所述目标备份节点的第二公钥时,基于所述第二公钥、所述第一签名参数以及所述消息哈希值,得到用于对所述目标准备消息进行验证的第二验证参数;所述第二公钥为所述目标备份节点的所述第二私钥以及与聚合签名规则相关联的定点参数的乘积;
在所述第一验证参数与所述第二验证参数一致时,所述第一节点确定所述第二签名信息的准备验签结果为验签成功结果,且对所述第二待签名消息中的所述视图号、所述序列号以及所述区块摘要进行合法性校验,得到校验结果;
在所述校验结果指示校验成功时,所述第一节点将所述目标准备消息写入与所述第一节点相关联的日志数据库。
8.根据权利要求1所述的方法,其特征在于,所述聚合消息包括聚合签名信息以及节点标识列表;所述聚合签名信息包括第一聚合签名参数和第二聚合签名参数;所述节点标识列表和所述聚合签名信息均是由所述第一节点根据接收到的所述2f个备份节点返回的第二准备消息所确定的;
所述方法还包括:
所述目标备份节点在获取到由所述第一节点广播的聚合消息时,获取与聚合签名规则相关联的定点参数,且基于所述第二聚合签名参数以及所述定点参数,得到用于对所述聚合消息进行验证的第一聚合验证参数;
所述目标备份节点基于所述聚合签名规则,获取与所述聚合消息相关联的聚合哈希值,基于所述节点标识列表中的每个备份节点的节点标识,获取所述每个备份节点的第二公钥,基于所述每个备份节点的第二公钥、所述聚合哈希值以及所述第一聚合签名参数,得到用于对所述聚合消息进行验证的第二聚合验证参数;
若所述第一聚合验证参数与所述第二聚合验证参数不一致,则所述目标备份节点确定所述聚合签名信息对应的聚合验签结果指示验证失败。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述第一聚合验证参数与所述第二聚合验证参数一致,则所述目标备份节点确定所述聚合签名信息对应的聚合验签结果指示验证成功;
所述目标备份节点基于所述聚合消息和所述第一准备消息生成准备证书,将所述准备证书存储至所述目标备份节点的节点内存;
所述目标备份节点基于所述准备证书,获取待生成的提交消息的第三消息类型,且基于所述第三消息类型、所述第一节点在所述区块链网络对应的视图中的视图号、所述第一节点为待验证区块分配的序列号以及所述待验证区块的区块摘要,确定第三待签名消息;
所述目标备份节点基于所述目标备份节点的第二私钥,对所述第三待签名消息进行签名处理,得到所述第三待签名消息的第三签名信息;
所述目标备份节点基于所述第三签名信息以及所述目标备份节点的节点标识,生成用于向所述第一节点发送的提交消息。
10.根据权利要求1所述的方法,其特征在于,所述第一节点统计到的(2f+1)个提交消息包括所述(N-1)个备份节点中的2f个备份节点返回的提交消息以及所述第一节点自身生成的一个提交消息。
11.根据权利要求1所述的方法,其特征在于,所述第一节点统计到的(2f+1)个提交消息包括所述(N-1)个备份节点中的(2f+1)个备份节点返回的提交消息。
12.根据权利要求1所述的方法,其特征在于,所述第一节点统计获取到的所述提交消息的消息数量,当所述消息数量达到(2f+1)个时,执行所述交易请求消息对应的请求操作,且将执行请求操作后的响应消息返回至所述客户端,包括:
所述第一节点统计获取到的所述提交消息的消息数量,当所述消息数量达到(2f+1)个时,执行所述交易请求消息对应的请求操作,得到执行请求操作后的响应结果;
所述第一节点获取待生成的响应消息的消息类型,基于所述响应消息的消息类型、所述第一节点在所述区块链网络对应的视图中的视图号、所述交易请求消息对应的请求时间戳、所述客户端的客户端标识、所述第一节点的节点标识以及所述响应结果,确定与所述响应消息相关联的待签名消息;
所述第一节点基于所述第一节点的第一私钥,对所述与所述响应消息相关联的待签名消息进行签名处理,基于签名处理后的签名信息得到响应消息,且将所述响应消息返回至所述客户端。
13.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
CN202110466168.1A 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质 Active CN113055188B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110466168.1A CN113055188B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110466168.1A CN113055188B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质
CN202110227287.1A CN112600678B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202110227287.1A Division CN112600678B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113055188A true CN113055188A (zh) 2021-06-29
CN113055188B CN113055188B (zh) 2022-04-15

Family

ID=75207811

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110227287.1A Active CN112600678B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质
CN202110466168.1A Active CN113055188B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110227287.1A Active CN112600678B (zh) 2021-03-02 2021-03-02 一种数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (2) CN112600678B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114172659A (zh) * 2021-11-30 2022-03-11 中国建设银行股份有限公司 区块链系统中的消息传输方法、装置、设备及存储介质
CN114745140A (zh) * 2022-06-13 2022-07-12 天津市城市规划设计研究总院有限公司 基于聚合加密的城市规划领域区块链共识验证方法及系统
WO2024066974A1 (zh) * 2022-09-26 2024-04-04 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备以及可读存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113890744A (zh) * 2021-10-04 2022-01-04 杭州复杂美科技有限公司 聚合签名共识方法、计算机设备和存储介质
CN113992398A (zh) * 2021-10-26 2022-01-28 湖南大学 一种改进的pbft共识算法
CN114374704B (zh) * 2021-12-29 2023-07-07 张海滨 可靠广播方法、装置、系统及介质
CN116915796B (zh) * 2023-09-14 2023-12-12 杭州趣链科技有限公司 集群视图分叉后的自主恢复方法、装置以及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109360100A (zh) * 2018-11-13 2019-02-19 北京航空航天大学 基于区块链技术的交易快速确认方法及装置
CN110247774A (zh) * 2019-06-28 2019-09-17 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN110300172A (zh) * 2019-06-28 2019-10-01 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN110798308A (zh) * 2019-10-31 2020-02-14 支付宝(杭州)信息技术有限公司 一种区块链的签名方法和系统
US20200076586A1 (en) * 2017-11-10 2020-03-05 Tencent Technology (Shenzhen) Company Limited Signature generation method, electronic device, and storage medium
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质
US20200403776A1 (en) * 2019-06-18 2020-12-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109150598B (zh) * 2018-08-10 2021-09-03 上交所技术有限责任公司 一种基于块片的bft共识算法带宽使用率改进方法
CN110011814B (zh) * 2019-04-16 2019-10-15 北京艾摩瑞策科技有限公司 一种可验证的DPoS共识方法及其系统
CN110727737B (zh) * 2019-10-29 2022-10-18 南京邮电大学 基于多层次区块链体系架构的智慧医疗数据存储方法
CN111612455A (zh) * 2020-04-21 2020-09-01 国网江苏省电力有限公司电力科学研究院 一种面向用电信息保护的拜占庭容错联盟链共识方法及其系统、存储介质
CN111865918B (zh) * 2020-06-16 2022-09-27 广东工业大学 一种优化改进的区块链pbft共识方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200076586A1 (en) * 2017-11-10 2020-03-05 Tencent Technology (Shenzhen) Company Limited Signature generation method, electronic device, and storage medium
CN109360100A (zh) * 2018-11-13 2019-02-19 北京航空航天大学 基于区块链技术的交易快速确认方法及装置
US20200403776A1 (en) * 2019-06-18 2020-12-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
CN110247774A (zh) * 2019-06-28 2019-09-17 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN110300172A (zh) * 2019-06-28 2019-10-01 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN110798308A (zh) * 2019-10-31 2020-02-14 支付宝(杭州)信息技术有限公司 一种区块链的签名方法和系统
CN111628868A (zh) * 2020-05-26 2020-09-04 腾讯科技(深圳)有限公司 数字签名生成方法、装置、计算机设备和存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114172659A (zh) * 2021-11-30 2022-03-11 中国建设银行股份有限公司 区块链系统中的消息传输方法、装置、设备及存储介质
CN114172659B (zh) * 2021-11-30 2024-04-26 中国建设银行股份有限公司 区块链系统中的消息传输方法、装置、设备及存储介质
CN114745140A (zh) * 2022-06-13 2022-07-12 天津市城市规划设计研究总院有限公司 基于聚合加密的城市规划领域区块链共识验证方法及系统
WO2024066974A1 (zh) * 2022-09-26 2024-04-04 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备以及可读存储介质

Also Published As

Publication number Publication date
CN112600678A (zh) 2021-04-02
CN113055188B (zh) 2022-04-15
CN112600678B (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
CN113055188B (zh) 一种数据处理方法、装置、设备及存储介质
CN111095899B (zh) 针对可信执行环境的分布式密钥管理
EP4120114A1 (en) Data processing method and apparatus, smart device and storage medium
KR102392420B1 (ko) 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계
WO2020168937A1 (zh) 区块链多方见证方法、装置、设备及计算机可读存储介质
CN112926982B (zh) 一种交易数据处理方法、装置、设备及存储介质
CN107294729B (zh) 区块链中不同节点之间的通信方法及装置
CN111625593B (zh) 基于区块链的数据处理方法、装置、计算机设备
CN110177124B (zh) 基于区块链的身份认证方法及相关设备
CN108769230B (zh) 交易数据存储方法、装置、服务器及存储介质
CN112600671B (zh) 一种数据处理方法、装置、设备及存储介质
CN110941859A (zh) 用于区块链形成共识的方法、设备、计算机可读存储介质和计算机程序产品
US20150358167A1 (en) Certificateless Multi-Proxy Signature Method and Apparatus
US20230037932A1 (en) Data processing method and apparatus based on blockchain network, and computer device
CN111275555B (zh) 区块链交易处理方法、交易节点以及区块链系统
US11362836B2 (en) Consensus protocol for permissioned ledgers
US20230262126A1 (en) Blockchain-based data processing method and apparatus, device, and readable storage medium
KR20200081533A (ko) 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법
CN111367923A (zh) 数据处理方法、装置、节点设备及存储介质
CN113507483B (zh) 即时通讯方法、装置、服务器及存储介质
WO2018179293A1 (ja) 検証情報付与装置、検証装置、情報管理システム、方法およびプログラム
WO2022116175A1 (zh) 数字签名的生成方法、装置和服务器
CN112039837B (zh) 一种基于区块链和秘密共享的电子证据保全方法
Chandrasekhar et al. A trapdoor hash-based mechanism for stream authentication
CN112994882B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40046836

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant