CN115225287A - 区块链交易处理方法、装置、电子设备及存储介质 - Google Patents

区块链交易处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115225287A
CN115225287A CN202210864807.4A CN202210864807A CN115225287A CN 115225287 A CN115225287 A CN 115225287A CN 202210864807 A CN202210864807 A CN 202210864807A CN 115225287 A CN115225287 A CN 115225287A
Authority
CN
China
Prior art keywords
signature
value
signature value
preset
verification
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.)
Pending
Application number
CN202210864807.4A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202210864807.4A priority Critical patent/CN115225287A/zh
Publication of CN115225287A publication Critical patent/CN115225287A/zh
Pending legal-status Critical Current

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/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明提供一种区块链交易处理方法、装置、电子设备及存储介质,涉及信息安全技术领域。该方法包括:对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数,根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值,向区块链节点发送交易请求,交易请求包括第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:压缩后第二签名值和第一签名值。本发明可以缩短数字签名的长度,减少交易费用和系统开销。

Description

区块链交易处理方法、装置、电子设备及存储介质
技术领域
本发明涉及信息安全技术领域,具体而言,涉及一种区块链交易处理方法、装置、电子设备及存储介质。
背景技术
区块链是由多个分布式节点参与的分布式数据库,具有不可篡改、不可伪造的特点。在区块链中,用于可以使用私钥对交易数据进行签名,签名后的交易数据在节点处被执行的过程中可以提取出公钥,并验证签名的合法性。
目前,常用的数字签名算法主要是基于secp256k1的椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA),ECDSA-secp256k1 算法生成的数字签名包括左部分签名值r、右部分签名值s和签名校验参数 yParity,其中,左部分签名值r和右部分签名值s分别占用32个字节,签名校验参数yParity占用1个字节,也即,数字签名需要用65个字节来表示。
但是,在区块链系统中采用256位对齐方式,使得签名校验参数yParity 虽然占用1个字节(8位),因此,需要注入31个零字节,使得数字签名的长度为96个字节,增加了交易的gas费用,也浪费了区块链系统的开销。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种区块链交易处理方法、装置、电子设备及存储介质,以便缩短数字签名的长度,减少交易费用和系统开销。
为实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种区块链交易处理方法,应用于区块链钱包,所述方法包括:
对待签名的第一交易数据进行签名,生成初始签名消息,所述初始签名消息包括:第一签名值、第二签名值和第一签名校验参数;
根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值;
向区块链节点发送交易请求,所述交易请求包括:所述第一交易数据、所述第一交易数据的目标签名消息和所述区块链钱包的验证公钥,所述目标签名消息包括:所述第一签名值和所述压缩后第二签名值。
可选的,所述根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值,包括:
若所述第二签名值在预设签名阈值范围内,则根据所述第一签名校验参数,对所述第二签名值中所述预设比特位进行赋值,得到压缩后第二签名值。
可选的,所述根据所述第一签名校验参数,对所述第二签名值中所述预设比特位进行赋值,得到压缩后第二签名值,还包括:
若所述第二签名值不在所述预设签名阈值范围内,对所述第二签名值进行转换,得到转换后的第二签名值,并对所述第一签名校验参数进行转换,得到转换后的第一签名校验参数;
根据所述转换后的第一签名校验参数,对所述转换后的第二签名值中所述预设比特位进行赋值,得到所述压缩后第二签名值。
可选的,所述对所述第二签名值进行转换,得到转换后的第二签名值,包括:
根据预设的签名阶数和所述第二签名值的差值,确定所述转换后的第二签名值,所述签名阶数为对所述第一交易数据进行签名时采用的签名阶数。
可选的,所述对所述第一签名校验参数进行转换,得到转换后的第一签名校验参数,包括:
对所述第一签名校验参数进行二进制取反,得到所述转换后的第一签名校验参数。
可选的,所述根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值之前,所述方法还包括:
根据预设的签名阶数,确定所述预设签名阈值范围,其中,所述预设签名阈值范围的最大值小于所述签名阶数。
可选的,所述预设比特位为:最高比特位。
第二方面,本发明实施例还提供一种区块链交易处理方法,应用于区块链节点,所述方法包括:
接收区块链钱包发送的交易请求,所述交易请求包括:待验证的第二交易数据、所述第二交易数据的签名消息和所述区块链钱包的验证公钥;
判断所述签名消息的长度为第一预设长度还是第二预设长度,其中,所述第一预设长度小于所述第二预设长度;
若所述签名消息的长度为第一预设长度,则确定所述签名消息包括:第三签名值和压缩后第四签名值;
对所述压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数;
根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第一验证签名值;
若所述第一验证签名值等于所述第三签名值,确定所述签名消息验证通过;
采用所述第二交易数据执行交易操作。
可选的,所述方法还包括:
若所述签名消息的长度为所述第二预设长度,则确定所述签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数;
若所述未压缩第四签名值在预设签名阈值范围内,则根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第二验证签名值;
若所述第二验证签名值等于所述第三签名值,确定所述签名消息验证通过;
采用所述第二交易数据执行交易操作。
可选的,所述方法还包括:
若所述未压缩第四签名值不在所述预设签名阈值范围内,则确定所述签名消息校验失败。
第三方面,本发明实施例还提供一种区块链交易处理装置,应用于区块链钱包,所述装置包括:
签名生成模块,用于对待签名的第一交易数据进行签名,生成初始签名消息,所述初始签名消息包括:第一签名值、第二签名值和第一签名校验参数;
赋值模块,用于根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值;
请求发送模块,用于向区块链节点发送交易请求,所述交易请求包括:所述第一交易数据、所述第一交易数据的目标签名消息和所述区块链钱包的验证公钥,所述目标签名消息包括:所述第一签名值和所述压缩后第二签名值。
可选的,所述赋值模块,具体用于若所述第二签名值在预设签名阈值范围内,则根据所述第一签名校验参数,对所述第二签名值中所述预设比特位进行赋值,得到压缩后第二签名值。
可选的,所述赋值模块,具体包括:
转换单元,用于若所述第二签名值不在所述预设签名阈值范围内,对所述第二签名值进行转换,得到转换后的第二签名值,并对所述第一签名校验参数进行转换,得到转换后的第一签名校验参数;
赋值单元,用于根据所述转换后的第一签名校验参数,对所述转换后的第二签名值中所述预设比特位进行赋值,得到所述压缩后第二签名值。
可选的,所述转换单元,具体用于根据预设的签名阶数和所述第二签名值的差值,确定所述转换后的第二签名值,所述签名阶数为对所述第一交易数据进行签名时采用的签名阶数。
可选的,所述转换单元,还用于对所述第一签名校验参数进行二进制取反,得到所述转换后的第一签名校验参数。
可选的,所述装置包括:
阈值范围确定模块,用于根据预设的签名阶数,确定所述预设签名阈值范围,其中,所述预设签名阈值范围的最大值小于所述签名阶数。
可选的,所述预设比特位为:最高比特位。
第四方面,本发明实施例还提供一种区块链交易处理装置,应用于区块链节点,所述装置包括:
请求接收模块,用于接收区块链钱包发送的交易请求,所述交易请求包括:待验证的第二交易数据、所述第二交易数据的签名消息和所述区块链钱包的验证公钥;
长度判断模块,用于判断所述签名消息的长度为第一预设长度还是第二预设长度,其中,所述第一预设长度小于所述第二预设长度;
签名确认模块,用于若所述签名消息的长度为第一预设长度,则确定所述签名消息包括:第三签名值和压缩后第四签名值;
解压模块,用于对所述压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数;
计算模块,用于根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第一验证签名值;
验证模块,用于若所述第一验证签名值等于所述第三签名值,确定所述签名消息验证通过;
交易模块,用于采用所述第二交易数据执行交易操作。
可选的,所述签名确认模块,还用于若所述签名消息的长度为所述第二预设长度,则确定所述签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数;
所述计算模块,还用于若所述未压缩第四签名值在预设签名阈值范围内,则根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第二验证签名值;
所述验证模块,还用于若所述第二验证签名值等于所述第三签名值,确定所述签名消息验证通过;
所述交易模块,还用于采用所述第二交易数据执行交易操作。
可选的,所述验证模块,还用于若所述未压缩第四签名值不在所述预设签名阈值范围内,则确定所述签名消息校验失败。
第五方面,本发明实施例还提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行如上述第一方面或第二方面任一所述的区块链交易处理方法的步骤。
第六方面,一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述第一方面或第二方面任一所述的区块链交易处理方法的步骤。
本发明的有益效果是:
本发明提供一种区块链交易处理方法、装置、电子设备及存储介质,该方法包括:对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数,根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值,向区块链节点发送交易请求,交易请求包括第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:压缩后第二签名值和第一签名值。本发明通过将第一签名校验参数赋值至第二签名值中的预设比特位中,使得目标签名消息只包含压缩后第二签名值和第一签名值,第一签名校验参数不会额外占用字节,也就不会在256 位对齐的情况下注入零字节,缩短了数字签名的长度,减少了交易费用和系统开销。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的区块链交易处理系统的示意图;
图2为本发明提供的区块链交易处理方法第一实施例的流程示意图;
图3为本发明提供的区块链交易处理方法第二实施例的流程示意图;
图4为本发明提供的区块链交易处理方法第三实施例的流程示意图;
图5为本发明提供的区块链交易处理方法第四实施例的流程示意图;
图6为本发明提供的区块链交易处理装置第一实施例的结构示意图;
图7为本发明提供的区块链交易处理装置第二实施例的结构示意图;
图8为本发明实施例提供的电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
区块链是由多个分布式节点参与的分布式数据库,由一系列区块(block) 组成,每个区块可以存储两个或多个参与者之间交易的交易数据,交易数据不可篡改、不可伪造,其中,区块链之间的交易包括但不限于服务、货币、资产等有价物的交换。
为便于理解本发明的方案,提供一种本发明的应用系统仅供参考。请参考图1,为本申请实施例提供的区块链交易处理系统的示意图,如图1所示,该区块链交易处理系统包括:多个区块链节点100构成的区块链网络和区块链钱包200。
区块链节点100为区块链网络中的计算机设备,例如移动设备、矿机和服务器等,区块链钱包200作为交易发起方,可以在浏览器中以插件的形式存在,或者在移动设备中以应用程序的形式存在,区块链钱包200在发起交易时,选择一个或者多个区块链节点的地址,以将交易数据和交易签名发送给指定的区块链节点,指定的区块链节点在接收到交易数据后,将交易数据放入交易池中,并把交易数据同步给区块链网络中的其他区块链节点。
具体的,区块链网络中的多个区块链节点100之间可以存在直接或者间接的信息连接,多个区块链节点100之间可以基于信息连接进行信息传输。当区块链网络中的任意一个或多个区块链节点100接收到区块链钱包 200发送的交易数据时,接收到交易数据的区块链节点基于同步算法,将交易数据同步给区块链网络中的其他区块链节点,使得区块链网络中所有区块链节点100上存储的交易数据保持一致。
区块链钱包200也称为数字资产钱包,可以为用户提余额查询、资产管理、发送交易等功能,当用户通过区块链钱包200发起交易时,可以从区块链钱包200中选择区块链网络中一个或者多个区块链节点的地址,以将交易数据和交易签名发送给指定的区块链节点。
在一种可选实施例中,区块链钱包200作为独立的交易程序,可以运行在计算机设备上,用户可以通过区块链钱包200直接向区块链节点发送交易。
在另一种可选实施例中,如图1所示,区块链交易处理系统中还包括:区块链客户端300,区块链客户端300作为一种去中心化应用(Decentralized Application,DAPP),区块链钱包200和区块链客户端300运行在同一计算机设备上,当用户通过区块链客户端300发起交易时,区块链客户端300 对交易进行组装,然后拉起区块链钱包200对交易进行签名,签名完成后,可以选择由区块链钱包200或者区块链客户端300向区块链节点发送交易数据和交易签名。其中,当由区块链钱包200发送交易数据和交易签名时,则通过区块链钱包200选择进行交易的区块链节点的地址;当由区块链客户端300发送交易数据和交易签名时,则通过区块链客户端300选择进行交易的区块链节点的地址。
在一些区块链网络中,如需要维护区块链客户端300和区块链节点100 之间交易的隐私,可以通过区块链钱包200对交易数据进行加密处理。加密处理需要在区块链钱包200向其他区块链节点100提交交易数据之前,先采用非对称加密算法创建一个密钥对,密钥对包括私钥和公钥,私钥仅对于区块链钱包200是已知的,而公钥对于区块链网络中的所有区块链节点是已知的。
私钥用于区块链钱包对交易数据进行签名,将产生的数字签名和交易数据一起发送给交易接收方的区块链节点,由交易接收方的区块链节点采用公钥对数字签名进行解密,若解密结果与交易数据一致,则表示交易数据完整且未被篡改,数字签名是对交易数据进行加密的过程,数据签名验证则是解密的过程。
目前,常用的数字签名算法主要是基于secp256k1的椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA),ECDSA-secp256k1 算法生成的数字签名包括左部分签名值r、右部分签名值s和签名校验参数 yParity,其中,左部分签名值r和右部分签名值s分别占用32个字节,签名校验参数yParity占用1个字节,也即,数字签名需要用65个字节来表示。
但是,在区块链系统中采用256位对齐方式,使得签名校验参数yParity 虽然占用1个字节(8位),因此,需要注入31个零字节,使得数字签名的长度为96个字节,增加了交易的gas费用,也浪费了区块链系统的开销。
基于上述区块链交易处理系统,以下拟对本发明提供的区块链交易处理方法、装置、电子设备及存储介质进行详细说明。
首先,本发明提供一种应用于上述区块链交易处理系统中区块链钱包的区块链交易处理方法。请参考图2,为本发明提供的区块链交易处理方法第一实施例的流程示意图,如图2所示,该方法包括:
S11:对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数。
本实施例中,第一交易数据为区块链钱包或者区块链客户端待发送给区块链节点的交易数据,对待签名的第一交易数据进行签名的过程实际上是区块链钱包采用预先创建的密钥对中的私钥,基于预设的数字签名算法对第一交易数据进行加密,以生成初始签名消息的过程,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数,其中第二签名值和第一签名值是针对第一交易数据的一组签名值,第一签名校验参数为奇偶校验参数,第一签名校验参数用于在对数字签名进行验证的过程中使用。
在一种可能的实现方式中,预先创建的密钥对也是上述预设的数字签名算法实现的。
本实施例以ECDSA-secp256k1算法为例,对创建密钥对以及对第一交易数据进行签名的过程详细说明。
设E是建立在有限域Fq上的一条椭圆曲线,椭圆曲线E选为 y2=x3+ax+b,其中,a和b表示有限域Fq中定义Fq之上的椭圆曲线E的预定义参数,使用椭圆曲线E上的基点采用下式创建密钥对。
QA=dA×G
其中,QA表示公钥,dA表示与公钥QA对应的私钥,G表示椭圆曲线E 上具有素数阶的基点,基点G的阶0(G)=n,n>2160,且
Figure BDA0003758144050000101
使用随机数计算椭圆曲线E上的选定曲线点R,示例的,R的计算公式可以为:
R=(xR,yR)=k×G
其中,xR,yR分别表示选定曲线点R的x轴值和y轴值,第一签名校验参数yParity作为奇偶校验参数,用于表示选定曲线点R的y轴值yR的奇偶性,k表示[1,n-1]中的随机数,可以由随机数生成器生成。
计算第一签名值r=xR mod n,若r为0,则表示签名私钥泄露风险较高,需要重新选取随机数k;若r不为0,则说明不会泄露签名私钥的任何信息。
对第一交易数据m做哈希运算,得到第一哈希值e=H(m),H为一个安全的哈希函数。对第一哈希值e、随机数k、签名私钥dA和第一签名值r 进行运算得到第二签名值s。示例的,第二签名值s的计算公式可以为:
s=k-1[e+dAr]mod n
若s为0,则表示签名私钥泄露风险较高,需要重新选取随机数k;若 s不为0,则说明不会泄露签名私钥的任何信息,第一交易数据m的签名值为(r,s)。
S12:根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
本实施例中,由于第一签名校验参数为奇偶校验参数,占用一个字节,第一签名校验参数的值要么用于指示奇数,要么用于指示偶数,第二签名值中的预设比特位为取值不会发生改变的比特位,可以通过劫持第二签名值中的预设比特位,将第一签名校验参数赋值给第二签名值的预设比特位,以通过第二签名值的预设比特位来存储第一签名校验参数,这样,不会因为第一签名校验参数占用一个字节就要通过注入零字节补齐256位对齐。
在一种具体的实现方式中,预设比特位为最高比特位。
具体的,第二签名值s的最高比特位为固定取值,可以通过劫持第二签名值中的最高比特位,将第一签名校验参数赋值给第二签名值的最高比特位,以通过第二签名值的最高比特位来存储第一签名校验参数。
S13:向区块链节点发送交易请求,交易请求包括:第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:第一签名值和压缩后第二签名值。
本实施例中,目标签名消息由第一签名值和压缩后第二签名值构成,当区块链钱包采用上述S11和S12完成对签名消息的压缩后,将目标签名消息、第一交易数据发送给区块链节点以及区块链钱包的验证公钥。
在一种示例中,区块链钱包在生成验证公钥后,直接将验证公钥发送给区块链网络中的所有节点,在之后区块链钱包需要向区块链节点发送交易数据时,不再重复发送验证公钥,而只发送交易数据和交易数据的目标签名消息。
需要说明的是,当区块链客户端和区块链钱包一起使用时,通过区块链客户端对交易进行组装然后拉起区块链钱包执行上述S11-S12对交易数据进行签名的过程,但S13中向区块链节点发送请求的步骤,可以由区块链钱包执行,也可以由区块链客户端执行。
上述实施例提供的区块链交易处理方法,通过将第一签名校验参数赋值至第二签名值中的预设比特位中,使得目标签名消息只包含压缩后第二签名值和第一签名值,第一签名校验参数不会额外占用字节,也就不会在 256位对齐的情况下注入零字节,缩短了数字签名的长度,减少了交易费用和系统开销。
在上述实施例的基础上,采用预设的数字签名算法所生成的初始签名消息中的第二签名值的大小在预设范围内,但是在该预设范围内,第二签名值的预设比特位的二进制值不是固定的,且其二进制取值要么为0要么为1,为了保证第二签名值的预设比特位的二进制值为固定取值,需要将第二签名值限定在预设签名阈值范围内。
基于此,在一种可能的实现方式中,上述S12中根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值的过程,可以包括:
若第二签名值在预设签名阈值范围内,则根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
本实施例中,如前述可知,预设签名阈值范围的最大值是根据第二签名值预设比特位的取值从0变为1的临界取值,当第二签名值在预设签名阈值范围内时,第二签名值预设比特位为固定取值,可以直接劫持第二签名值的预设比特位,将第一签名校验参数赋值给第二签名值的预设比特位,以通过第二签名值的预设比特位来存储第一签名校验参数。
更进一步的,若第二签名值在预设签名阈值范围内,则根据第一签名校验参数,对第二签名值中最高比特位进行赋值,得到压缩后第二签名值。
在另一种可能的实现方式中,请参考图3,为本发明提供的区块链交易处理方法第二实施例的流程示意图,如图3所示,上述S12中根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值的过程,可以包括:
S121:若第二签名值不在预设签名阈值范围内,对第二签名值进行转换,得到转换后的第二签名值,并对第一签名校验参数进行转换,得到转换后的第一签名校验参数。
本实施例中,当第二签名值超过预设签名阈值范围时,第二签名值的预设比特位的固定取值与第二签名值在预设签名阈值范围内时预设比特位的固定取值不同。为了使第二签名值在预设签名阈值范围内和不在预设签名阈值范围内时,预设比特位的取值相同,可以对不在预设签名阈值范围内的第二签名值进行转换,使得转换后的第二签名值在预设签名阈值范围内。
为了保证区块链节点在对目标数字签名进行验证时的结果正确,在对第二签名值转换后,也需要对第一签名校验参数也进行转换,以保证第二签名值和第一签名校验参数的一致性。第一签名校验参数为奇偶校验参数,对第一签名校验参数的转换就是将奇数校验参数转换为偶数校验参数,或者将偶数校验参数转换为奇数校验参数。
在一种可选实施例中,上述S121中对第二签名值进行转换,得到转换后的第二签名值的过程,可以包括:
根据预设的签名阶数和第二签名值的差值,确定转换后的第二签名值,签名阶数为对待签名交易数据进行签名时采用的签名阶数。
具体的,签名阶数为在预设的数字签名算法对应的曲线上选择的预设基点在曲线上的阶数,第二签名值小于签名阶数,当第二签名值不在预设签名阈值范围时,可以利用签名阶数减去第二签名值完成对第二签名值的转换,使得到的差值在预设签名阈值范围内,该差值即为转换后的第二签名值。
在一种可选实施例中,上述S121中对第一签名校验参数进行转换,得到转换后的第一签名校验参数的过程,可以包括:
对第一签名校验参数进行二进制取反,得到转换后的第一签名校验参数。
具体的,第一签名校验参数为奇偶校验参数,以二进制0表示第一签名校验参数为奇数校验参数,以二进制1表示第一签名校验参数为偶数校验参数,对第一签名校验参数的转换就是对第一签名校验参数的二进制取值进行二进制取反,将二进制0转换为二进制1,或者将二进制1转换为二进制0,得到转换后的第一签名校验参数。
S122:根据转换后的第一签名校验参数,对转换后的第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
本实施例中,转换后的第一签名校验参数的预设比特位的固定取值与第二签名值在预设签名阈值范围内时预设比特位的固定取值相同,通过劫持转换后的第二签名值中的预设比特位,将转换后的第一签名校验参数赋值给转换后的第二签名值的预设比特位,以通过转换后的第二签名值的预设比特位来存储转换后的第一签名校验参数,得到压缩后第二签名值。
更进一步地,根据转换后的第一签名校验参数,对转换后的第二签名值中最高比特位进行赋值,得到压缩后第二签名值。
在上述任一实施例的基础上,在根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值之前,该方法还包括:
根据预设的签名阶数,确定预设签名阈值范围,其中,预设签名阈值范围的最大值小于签名阶数。
本实施例中,第二签名值小于预设的签名阶数,则预设签名阈值范围的最大值应当小于签名阶数,预设签名阈值范围的最大值为小于签名阶数的数值中,第二签名值的预设比特位的取值改变的临界值。示例的,预设签名阈值范围的最大值可以为签名阶数的一半。
示例的,以椭圆曲线数字签名算法ECDSA-secp256k1为例,对上述转换过程进行详细解释,但需要说明的是,本发明的方案并不限制于椭圆曲线数字签名算法ECDSA-secp256k1。
具体的,在椭圆曲线E上随机选取一基点G,n为基点G在椭圆曲线上E的阶数,如前述可知,n>2160,且
Figure BDA0003758144050000141
预设签名阈值范围的最大值为签名结束的一半,则预设签名阈值范围可以为
Figure BDA0003758144050000142
基于本发明实施例提供的转换规则可以为:
若第二签名值s的取值范围为:
Figure BDA0003758144050000143
则第二签名值s和第一签名校验参数yParity保持不变;若第二签名值s的取值范围为:
Figure BDA0003758144050000144
则第二签名值s=secp256k1n-s,第一签名校验参数 yParity取反,即0=>1或者1=>0。
经过上述转换规则,确定第二签名值s的取值范围为:
Figure BDA0003758144050000145
在该范围内,第二签名值s的最高比特位永远为0,由于第一签名校验参数 yParity的取值为0或者1,只需要一个比特位表示,因此,可以通过劫持第二签名值s的最高比特位,将第一签名校验参数yParity赋值给的第二签名值s的最高比特位,以通过第二签名值s的最高比特位来存储第一签名校验参数yParity,得到压缩后第二签名值yParityAndS,压缩后的签名值表示为 [256bit r value][1bit yParity value][255bit s value]。
其中,通过劫持第二签名值s的最高比特位,将第一签名校验参数 yParity赋值给的第二签名值s的最高比特位的具体方式可以为:将第一签名校验参数yParity左移255位后和第二签名值s进行或运算 ((yParity<<255|S)),即可得到压缩后第二签名值yParityAndS,其中,<<表示对左边的参数左移右边指定的位数,高位进行丢弃,低位补零,|表示对参与运算的两个参数进行或运算。
上述实施例提供的区块链交易处理方法,通过判断第二签名值是否在预设签名阈值范围内,并在第二签名值不在预设签名阈值范围内时,通过对第二签名值进行转换,使得转换后的第二签名值在预设签名阈值范围内,保证第二签名值的预设比特位一直是固定取值,以便将第一签名校验参数赋值给第二签名值的预设比特位也不会影响第二签名值,从而使得将第一签名校验参数和第二签名值进行压缩,缩短了数字签名的长度,减少了交易费用和系统开销。
在上述实施例的基础上,本发明还提供一种应用于上述区块链交易处理系统中区块链节点的区块链交易处理方法。请参考图4,为本发明提供的区块链交易处理方法第三实施例的流程示意图,如图4所示,该方法包括:
S21:接收区块链钱包发送的交易请求,交易请求包括:待验证的第二交易数据、第二交易数据的签名消息和区块链钱包的验证公钥。
本实施例中,区块链节点接收区块链钱包发送的交易请求,交易请求中可以包括:区块链钱包发送的第二交易数据,区块链钱包对第二交易数据采用前述方法生成的签名消息和验证公钥。
在一种可选实施例中,验证公钥不是必须和第二交易数据、签名消息一起发送给区块链节点,也可以是区块链钱包在生成验证公钥后单独发送给区块链节点,之后,当区块链钱包需要向区块链节点发送交易请求时,只需要发送第二交易数据和签名消息即可。
S22:判断签名消息的长度为第一预设长度还是第二预设长度,其中,第一预设长度小于第二预设长度。
本实施例中,由于不同的区块链钱包所采用的数字签名方法可能不同,一些区块链钱包可能采用现有的数字签名方法生成第二预设长度的签名消息,另一些区块链钱包可能采用前述S11-S13的方法生成第一预设长度的签名消息,不同长度的签名消息用于指示区块链节点采用不用的解压方法解压,因此,区块链节点在接收到交易请求后,需要对交易请求中包含的签名消息的长度进行判断,以确定签名消息的长度是第一预设长度还是第二预设长度。
示例的,采用前述S11-S13的方法生成第一预设长度的签名消息可以表示为:[256bit r value][1bit yParity value][255bit s value],采用现有的方法生成的第二预设长度的签名消息可以表示为:[256bit r value][256bit s value][1bit yParityvalue+255bit 0 value]。
S23:若签名消息的长度为第一预设长度,则确定签名消息包括:第三签名值和压缩后第四签名值。
本实施例中,若区块链节点判断签名消息的长度为第一预设长度,则可以确定区块链钱包是采用上述S11-S13的方法生成的签名消息,该签名消息包括:第三签名值和压缩后第四签名值,压缩后第四签名值为采用上述S11-S13的方法得到的第四签名值。
S24:对压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数。
本实施例中,由于上述上述S11-S13是通过将签名校验参数赋值给右部分签名值的预设比特位,因此在对压缩后第四签名值进行解压时,需要从压缩后第四签名值的预设比特位提取出第二签名校验参数,并将第四签名值的预设比特位恢复为原本的固定取值,得到压缩前第四签名值和第二签名校验参数。
示例的,与前述得到压缩后第二签名值yParityAndS对应的,从压缩后第四签名值yParityAndS解压出压缩前第四签名值s和第二签名校验参数 yParity的具体实现方式可以为:
将1左移255位后减1,得到第一位为0,剩余255位为1的参数,对该参数与压缩后第四签名值yParityAndS进行与运算 (yParityAndS&((1<<255)-1)),得到压缩前第四签名值s;对压缩后第四签名值yParityAndS右移255位(yParity>>255),得到第二签名校验参数yParity。其中,>>表示对左边的参数右移右边指定的位数,高位补零,低位丢弃, &表示对参与运算的两个参数进行与运算。
S25:根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第一验证签名值。
本实施例中,对签名消息进行验证一方面是为了保证发送交易请求的区块链钱包是验证公钥所属的客户端,另一方面是为了保证第二交易数据的完整性,且在发送过程中未被篡改。
具体的,对压缩前第四签名值进行预设处理得到第一结果,对第二交易数据进行摘要提取,确定所述第二交易数据的摘要,对第一结果和摘要进行计算,得到第二结果,对第一结果和第三签名值进行计算,得到第三结果,根据第二签名校验参数的奇偶性,从至少一个基点中确定目标基点,根据验证公钥、第二结果和第三结果计算中间签名,对中间签名进行计算得到第一验证签名值。示例的,对第二交易数据进行摘要提取可以采用哈希计算。
在一种可选实施例中,在计算第一验证签名值之前,对第三签名值和压缩前第四签名值的大小进行判断,若第三签名值和压缩前第四签名值不在预设范围内,则表示签名无效,需要拒绝该签名消息。
S26:若第一验证签名值等于第三签名值,确定签名消息验证通过。
本实施例中,当第一验证签名值等于第三签名值时,确定签名消息验证通过,第二交易数据完整且未被篡改。
示例的,以椭圆曲线数字签名算法ECDSA-secp256k1为例,对上述验证过程进行详细解释,但需要说明的是,本发明的方案并不限制于椭圆曲线数字签名算法ECDSA-secp256k1。
区块链节点从第二交易数据m的签名消息中确定签名值(r,s)后,判断,若
Figure BDA0003758144050000171
则判定签名无效,拒绝该签名消息,若满足该条件,则计算第二交易数据m的哈希值e=hash(m),该哈希值e表示第二交易数据m的摘要。基于椭圆曲线E的阶数n,对压缩前第四签名值s的逆运算取余,得到第一结果w=s-1mod n;基于椭圆曲线E的阶数n,对第一结果w和摘要e的点积取余,得到第二结果u1=e·w mod n,对第一结果w和第三签名值r的点积取余,得到第三结果u2=r·w mod n,根据第二签名校验参数的奇偶性,从至少一个基点中选择与奇偶性对应的目标基点,根据第二结果u1和目标基点 G的点积以及第三结果u2和验证公钥QA计算中间签名R=u1·G+u2·QA,基于椭圆曲线E的阶数n,对中间签名R的横坐标x取余得到第一验证签名值 v=x mod n,若第一验证签名值v等于第三签名值r,表示签名消息验证通过。
S27:采用第二交易数据执行交易操作。
本实施例中,区块链节点在确定第二交易数据验证成功后,通过判断合约内部是否有签发交易,若没有,这直接对第二交易数据执行交易操作并返回交易结果;若合约内部有签发交易,则调用合约内部方法,再次进行签名验证,验证过程与前述S22-S26的过程相同,再次不做赘述。
需要说明的是,本发明实施例提供在区块链节点上部署用于运行智能合约的虚拟机(Ethereum Virtual Machine,EVM),智能合约包括交易验证合约,虚拟机通过调用并执行交易验证合约,以实现上述S21-S27的过程。
上述实施例提供的区块链交易处理方法,由区块链节点对接收到的区块链钱包发送的签名长度进行判断,并在签名长度为第一预设长度时,对签名消息进行解压,并根据解压得到的压缩前第四签名值、第二签名校验参数以及第三签名值,对签名消息进行验证,以在通过验证的情况下利用第二交易数据执行交易操作。由于区块链节点接收的是压缩后的签名消息,该签名消息的长度较短,减少了交易费用和系统开销。
在一种可选实施例中,请参考图5,为本发明提供的区块链交易处理方法第四实施例的流程示意图,如图5所示,该方法还包括:
S31:若签名消息的长度为第二预设长度,则确定签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数。
本实施例中,若区块链节点判断签名消息的长度为第二预设长度,则可以确定区块链钱包是采用现有方法生成的签名消息,该签名消息包括:第三签名值、未压缩第四签名值和第二签名校验参数。
S32:若未压缩第四签名值在预设签名阈值范围内,则根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第二验证签名值。
S33:若第二验证签名值等于第三签名值,确定签名消息验证通过。
S34:采用第二交易数据执行交易操作。
具体的,由于数字签名算法中椭圆曲线的对称性,使得右部分签名值不再预设签名阈值范围内时具有可翻转性,导致进行签名验证时的结果可能不准确,因此,需要将未压缩第四签名值限定在预设签名阈值范围内,避免未压缩第四签名值的翻转。
本实施例中,对未压缩第四签名值进行判断,仅在未压缩第四签名值在预设签名阈值范围内时,计算第二验证签名值,其中,计算第二验证签名值的方法、确定签名消息验证通过以及采用第二交易数据执行交易操作的步骤与前述S25-S27相同,再次不做赘述。
可选的,若未压缩第四签名值不在预设签名阈值范围内,则确定签名消息校验失败。
本实施例中,若未压缩第四签名值不在预设签名阈值范围内,确定签名消息校验失败,认定该签名消息为无效签名。
上述实施例提供的区块链交易处理方法,在签名消息的长度为第二预设长度时,通过判断未压缩第四签名值是否在预设签名阈值范围内,确定若未压缩第四签名值不在预设签名阈值范围内时,签名消息无效,只在未压缩第四签名值在预设签名阈值范围内时才对签名消息进行验证,避免验证结果出错。
在上述实施例的基础上,本发明实施例还提供一种区块链交易处理装置,应用于区块链钱包,请参考图6,为本发明提供的区块链交易处理装置第一实施例的结构示意图,如图6所示,该装置包括:
签名生成模块11,用于对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数。
赋值模块12,用于根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
可选的,预设比特位为:最高比特位。
请求发送模块13,用于向区块链节点发送交易请求,交易请求包括:第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:第一签名值和压缩后第二签名值。
上述实施例提供的区块链交易处理装置,通过将第一签名校验参数赋值至第二签名值中的预设比特位中,使得目标签名消息只包含压缩后第二签名值和第一签名值,第一签名校验参数不会额外占用字节,也就不会在256位对齐的情况下注入零字节,缩短了数字签名的长度,减少了交易费用和系统开销。
在一种可能的实现方式中,赋值模块12,具体用于若第二签名值在预设签名阈值范围内,则根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在另一种可能的实现方式中,赋值模块12,具体包括:
转换单元,用于若第二签名值不在预设签名阈值范围内,对第二签名值进行转换,得到转换后的第二签名值,并对第一签名校验参数进行转换,得到转换后的第一签名校验参数。
赋值单元,用于根据转换后的第一签名校验参数,对转换后的第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在一种可选实施例中,转换单元对第二签名值进行转换,具体包括:用于根据预设的签名阶数和第二签名值的差值,确定转换后的第二签名值,签名阶数为对第一交易数据进行签名时采用的签名阶数。
可选的,转换单元对第一签名校验参数进行转换,具体包括:用于对第一签名校验参数进行二进制取反,得到转换后的第一签名校验参数。
在上述任一实施例的基础上,该装置包括:
阈值范围确定模块,用于根据预设的签名阶数,确定预设签名阈值范围,其中,预设签名阈值范围的最大值小于签名阶数。
上述实施例提供的区块链交易处理装置,通过判断第二签名值是否在预设签名阈值范围内,并在第二签名值不在预设签名阈值范围内时,通过对第二签名值进行转换,使得转换后的第二签名值在预设签名阈值范围内,保证第二签名值的预设比特位一直是固定取值,以便将第一签名校验参数赋值给第二签名值的预设比特位也不会影响第二签名值,从而使得将第一签名校验参数和第二签名值进行压缩,缩短了数字签名的长度,减少了交易费用和系统开销。
在上述实施例的基础上,本发明实施例还提供一种区块链交易处理装置,应用于区块链节点,请参考图7,为本发明提供的区块链交易处理装置第二实施例的结构示意图,如图7所示,该装置包括:
请求接收模块21,用于接收区块链钱包发送的交易请求,交易请求包括:待验证的第二交易数据、第二交易数据的签名消息和区块链钱包的验证公钥。
长度判断模块22,用于判断签名消息的长度为第一预设长度还是第二预设长度,其中,第一预设长度小于第二预设长度。
签名确认模块23,用于若签名消息的长度为第一预设长度,则确定签名消息包括:第三签名值和压缩后第四签名值。
解压模块24,用于对压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数。
计算模块25,用于根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第一验证签名值。
验证模块26,用于若第一验证签名值等于第三签名值,确定签名消息验证通过。
交易模块27,用于采用第二交易数据执行交易操作。
上述实施例提供的区块链交易处理装置,由区块链节点对接收到的区块链钱包发送的签名长度进行判断,并在签名长度为第一预设长度时,对签名消息进行解压,并根据解压得到的压缩前第四签名值、第二签名校验参数以及第三签名值,对签名消息进行验证,以在通过验证的情况下利用第二交易数据执行交易操作。由于区块链节点接收的是压缩后的签名消息,该签名消息的长度较短,减少了交易费用和系统开销。
在一种可选实施例中,签名确认模块23,还用于若签名消息的长度为第二预设长度,则确定目标签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数。
计算模块25,还用于若未压缩第四签名值在预设签名阈值范围内,则根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第二验证签名值。
验证模块26,还用于若第二验证签名值等于第三签名值,确定签名消息验证通过。
交易模块27,还用于采用第二交易数据执行交易操作。
可选的,验证模块26,还用于若未压缩第四签名值不在预设签名阈值范围内,则确定签名消息校验失败。
上述实施例提供的区块链交易处理装置,在签名消息的长度为第二预设长度时,通过判断未压缩第四签名值是否在预设签名阈值范围内,确定若未压缩第四签名值不在预设签名阈值范围内时,签名消息无效,只在未压缩第四签名值在预设签名阈值范围内时才对签名消息进行验证,避免验证结果出错。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统 (system-on-a-chip,简称SOC)的形式实现。
请参考图8,为本发明实施例提供的电子设备的示意图,如图8所示,电子设备400包括:处理器401、存储介质402和总线,存储介质402存储有处理器401可执行的程序指令,当电子设备400运行时,处理器401与存储介质402之间通过总线通信,处理器401执行程序指令,以执行上述应用于区块链钱包或者区块链节点的区块链交易处理方法的实施例。
具体的,服务器执行上述应用于区块链钱包的区块链交易处理方法的步骤包括:
对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数。
根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
可选的,预设比特位为:最高比特位。
向区块链节点发送交易请求,交易请求包括:第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:第一签名值和压缩后第二签名值。
上述实施例中服务器执行的区块链交易处理方法,通过将第一签名校验参数赋值至第二签名值中的预设比特位中,使得目标签名消息只包含压缩后第二签名值和第一签名值,第一签名校验参数不会额外占用字节,也就不会在256位对齐的情况下注入零字节,缩短了数字签名的长度,减少了交易费用和系统开销。
在一种可能的实现方式中,若第二签名值在预设签名阈值范围内,则根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在另一种可能的实现方式中,若第二签名值不在预设签名阈值范围内,对第二签名值进行转换,得到转换后的第二签名值,并对第一签名校验参数进行转换,得到转换后的第一签名校验参数;根据转换后的第一签名校验参数,对转换后的第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在一种可选实施例中,对第二签名值进行转换,具体包括:根据预设的签名阶数和第二签名值的差值,确定转换后的第二签名值,签名阶数为对第一交易数据进行签名时采用的签名阶数。
可选的,第一签名校验参数进行转换,具体包括:对第一签名校验参数进行二进制取反,得到转换后的第一签名校验参数。
在上述任一实施例的基础上,服务器执行上述区块链交易处理方法的步骤还包括:
根据预设的签名阶数,确定预设签名阈值范围,其中,预设签名阈值范围的最大值小于签名阶数。
上述实施例中服务器执行的区块链交易处理方法,通过判断第二签名值是否在预设签名阈值范围内,并在第二签名值不在预设签名阈值范围内时,通过对第二签名值进行转换,使得转换后的第二签名值在预设签名阈值范围内,保证第二签名值的预设比特位一直是固定取值,以便将第一签名校验参数赋值给第二签名值的预设比特位也不会影响第二签名值,从而使得将第一签名校验参数和第二签名值进行压缩,缩短了数字签名的长度,减少了交易费用和系统开销。
具体的,服务器执行上述应用于区块链节点的区块链交易处理方法的步骤包括:
接收区块链钱包发送的交易请求,交易请求包括:待验证的第二交易数据、第二交易数据的签名消息和区块链钱包的验证公钥。
判断签名消息的长度为第一预设长度还是第二预设长度,其中,第一预设长度小于第二预设长度。
若签名消息的长度为第一预设长度,则确定签名消息包括:第三签名值和压缩后第四签名值。
对压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数。
根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第一验证签名值。
若第一验证签名值等于第三签名值,确定签名消息验证通过。
采用第二交易数据执行交易操作。
上述实施例中服务器执行的区块链交易处理方法,由区块链节点对接收到的区块链钱包发送的签名长度进行判断,并在签名长度为第一预设长度时,对签名消息进行解压,并根据解压得到的压缩前第四签名值、第二签名校验参数以及第三签名值,对签名消息进行验证,以在通过验证的情况下利用第二交易数据执行交易操作。由于区块链节点接收的是压缩后的签名消息,该签名消息的长度较短,减少了交易费用和系统开销。
在一种可选实施例中,若签名消息的长度为第二预设长度,则确定目标签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数。
若未压缩第四签名值在预设签名阈值范围内,则根据验证公钥、未压缩第四签名值和第二签名校验参数,计算第二验证签名值。
若第二验证签名值等于第三签名值,确定签名消息验证通过。
采用第二交易数据执行交易操作。
可选的,若未压缩第四签名值不在预设签名阈值范围内,则确定签名消息校验失败。
上述实施例中服务器执行的区块链交易处理方法,在签名消息的长度为第二预设长度时,通过判断未压缩第四签名值是否在预设签名阈值范围内,确定若未压缩第四签名值不在预设签名阈值范围内时,签名消息无效,只在未压缩第四签名值在预设签名阈值范围内时才对签名消息进行验证,避免验证结果出错。
可选的,本发明还提供一种计算机可读存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行如上述区块链交易处理方法的实施例。
具体的,计算机程序执行上述应用于区块链钱包的区块链交易处理方法的步骤包括:
对待签名的第一交易数据进行签名,生成初始签名消息,初始签名消息包括:第一签名值、第二签名值和第一签名校验参数。
根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
可选的,预设比特位为:最高比特位。
向区块链节点发送交易请求,交易请求包括:第一交易数据、第一交易数据的目标签名消息和区块链钱包的验证公钥,目标签名消息包括:第一签名值和压缩后第二签名值。
上述实施例中计算机程序执行的区块链交易处理方法,通过将第一签名校验参数赋值至第二签名值中的预设比特位中,使得目标签名消息只包含压缩后第二签名值和第一签名值,第一签名校验参数不会额外占用字节,也就不会在256位对齐的情况下注入零字节,缩短了数字签名的长度,减少了交易费用和系统开销。
在一种可能的实现方式中,若第二签名值在预设签名阈值范围内,则根据第一签名校验参数,对第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在另一种可能的实现方式中,若第二签名值不在预设签名阈值范围内,对第二签名值进行转换,得到转换后的第二签名值,并对第一签名校验参数进行转换,得到转换后的第一签名校验参数;根据转换后的第一签名校验参数,对转换后的第二签名值中预设比特位进行赋值,得到压缩后第二签名值。
在一种可选实施例中,对第二签名值进行转换,具体包括:根据预设的签名阶数和第二签名值的差值,确定转换后的第二签名值,签名阶数为对第一交易数据进行签名时采用的签名阶数。
可选的,第一签名校验参数进行转换,具体包括:对第一签名校验参数进行二进制取反,得到转换后的第一签名校验参数。
在上述任一实施例的基础上,服务器执行上述区块链交易处理方法的步骤还包括:
根据预设的签名阶数,确定预设签名阈值范围,其中,预设签名阈值范围的最大值小于签名阶数。
上述实施例中计算机程序执行的区块链交易处理方法,通过判断第二签名值是否在预设签名阈值范围内,并在第二签名值不在预设签名阈值范围内时,通过对第二签名值进行转换,使得转换后的第二签名值在预设签名阈值范围内,保证第二签名值的预设比特位一直是固定取值,以便将第一签名校验参数赋值给第二签名值的预设比特位也不会影响第二签名值,从而使得将第一签名校验参数和第二签名值进行压缩,缩短了数字签名的长度,减少了交易费用和系统开销。
具体的,计算机程序执行上述应用于区块链节点的区块链交易处理方法的步骤包括:
接收区块链钱包发送的交易请求,交易请求包括:待验证的第二交易数据、第二交易数据的签名消息和区块链钱包的验证公钥。
判断签名消息的长度为第一预设长度还是第二预设长度,其中,第一预设长度小于第二预设长度。
若签名消息的长度为第一预设长度,则确定签名消息包括:第三签名值和压缩后第四签名值。
对压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数。
根据验证公钥、第三签名值、压缩前第四签名值和第二签名校验参数,计算第一验证签名值。
若第一验证签名值等于第三签名值,确定签名消息验证通过。
采用第二交易数据执行交易操作。
上述实施例中计算机程序执行的区块链交易处理方法,由区块链节点对接收到的区块链钱包发送的签名长度进行判断,并在签名长度为第一预设长度时,对签名消息进行解压,并根据解压得到的压缩前第四签名值、第二签名校验参数以及第三签名值,对签名消息进行验证,以在通过验证的情况下利用第二交易数据执行交易操作。由于区块链节点接收的是压缩后的签名消息,该签名消息的长度较短,减少了交易费用和系统开销。
在一种可选实施例中,若签名消息的长度为第二预设长度,则确定目标签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数。
若未压缩第四签名值在预设签名阈值范围内,则根据验证公钥、未压缩第四签名值和第二签名校验参数,计算第二验证签名值。
若第二验证签名值等于第三签名值,确定签名消息验证通过。
采用第二交易数据执行交易操作。
可选的,若未压缩第四签名值不在预设签名阈值范围内,则确定签名消息校验失败。
上述实施例中计算机程序执行的区块链交易处理方法,在签名消息的长度为第二预设长度时,通过判断未压缩第四签名值是否在预设签名阈值范围内,确定若未压缩第四签名值不在预设签名阈值范围内时,签名消息无效,只在未压缩第四签名值在预设签名阈值范围内时才对签名消息进行验证,避免验证结果出错。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文: Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种区块链交易处理方法,其特征在于,应用于区块链钱包,所述方法包括:
对待签名的第一交易数据进行签名,生成初始签名消息,所述初始签名消息包括:第一签名值、第二签名值和第一签名校验参数;
根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值;
向区块链节点发送交易请求,所述交易请求包括:所述第一交易数据、所述第一交易数据的目标签名消息和所述区块链钱包的验证公钥,所述目标签名消息包括:所述第一签名值和所述压缩后第二签名值。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值,包括:
若所述第二签名值在预设签名阈值范围内,则根据所述第一签名校验参数,对所述第二签名值中所述预设比特位进行赋值,得到压缩后第二签名值。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一签名校验参数,对所述第二签名值中所述预设比特位进行赋值,得到压缩后第二签名值,还包括:
若所述第二签名值不在所述预设签名阈值范围内,对所述第二签名值进行转换,得到转换后的第二签名值,并对所述第一签名校验参数进行转换,得到转换后的第一签名校验参数;
根据所述转换后的第一签名校验参数,对所述转换后的第二签名值中所述预设比特位进行赋值,得到所述压缩后第二签名值。
4.如权利要求3所述的方法,其特征在于,所述对所述第二签名值进行转换,得到转换后的第二签名值,包括:
根据预设的签名阶数和所述第二签名值的差值,确定所述转换后的第二签名值,所述签名阶数为对所述第一交易数据进行签名时采用的签名阶数。
5.如权利要求3所述的方法,其特征在于,所述对所述第一签名校验参数进行转换,得到转换后的第一签名校验参数,包括:
对所述第一签名校验参数进行二进制取反,得到所述转换后的第一签名校验参数。
6.如权利要求2所述的方法,其特征在于,所述根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值之前,所述方法还包括:
根据预设的签名阶数,确定所述预设签名阈值范围,其中,所述预设签名阈值范围的最大值小于所述签名阶数。
7.如权利要求1-6任一所述的方法,其特征在于,所述预设比特位为:最高比特位。
8.一种区块链交易处理方法,其特征在于,应用于区块链节点,所述方法包括:
接收区块链钱包发送的交易请求,所述交易请求包括:待验证的第二交易数据、所述第二交易数据的签名消息和所述区块链钱包的验证公钥;
判断所述签名消息的长度为第一预设长度还是第二预设长度,其中,所述第一预设长度小于所述第二预设长度;
若所述签名消息的长度为第一预设长度,则确定所述签名消息包括:第三签名值和压缩后第四签名值;
对所述压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数;
根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第一验证签名值;
若所述第一验证签名值等于所述第三签名值,确定所述签名消息验证通过;
采用所述第二交易数据执行交易操作。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
若所述签名消息的长度为所述第二预设长度,则确定所述签名消息中包括:第三签名值、未压缩第四签名值和第二签名校验参数;
若所述未压缩第四签名值在预设签名阈值范围内,则根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第二验证签名值;
若所述第二验证签名值等于所述第三签名值,确定所述签名消息验证通过;
采用所述第二交易数据执行交易操作。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
若所述未压缩第四签名值不在所述预设签名阈值范围内,则确定所述签名消息校验失败。
11.一种区块链交易处理装置,其特征在于,应用于区块链钱包,所述装置包括:
签名生成模块,用于对待签名的第一交易数据进行签名,生成初始签名消息,所述初始签名消息包括:第一签名值、第二签名值和第一签名校验参数;
赋值模块,用于根据所述第一签名校验参数,对所述第二签名值中预设比特位进行赋值,得到压缩后第二签名值;
请求发送模块,用于向区块链节点发送交易请求,所述交易请求包括:所述第一交易数据、所述第一交易数据的目标签名消息和所述区块链钱包的验证公钥,所述目标签名消息包括:所述第一签名值和所述压缩后第二签名值。
12.一种区块链交易处理装置,其特征在于,应用于区块链节点,所述装置包括:
请求接收模块,用于接收区块链钱包发送的交易请求,所述交易请求包括:待验证的第二交易数据、所述第二交易数据的签名消息和所述区块链钱包的验证公钥;
长度判断模块,用于判断所述签名消息的长度为第一预设长度还是第二预设长度,其中,所述第一预设长度小于所述第二预设长度;
签名确认模块,用于若所述签名消息的长度为第一预设长度,则确定所述签名消息包括:第三签名值和压缩后第四签名值;
解压模块,用于对所述压缩后第四签名值进行解压,得到压缩前第四签名值和第二签名校验参数;
计算模块,用于根据所述验证公钥、所述第三签名值、所述压缩前第四签名值和所述第二签名校验参数,计算第一验证签名值;
验证模块,用于若所述第一验证签名值等于所述第三签名值,确定所述签名消息验证通过;
交易模块,用于采用所述第二交易数据执行交易操作。
13.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行如权利要求1至10任一所述的区块链交易处理方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-10任一所述的区块链交易处理方法的步骤。
CN202210864807.4A 2022-07-21 2022-07-21 区块链交易处理方法、装置、电子设备及存储介质 Pending CN115225287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210864807.4A CN115225287A (zh) 2022-07-21 2022-07-21 区块链交易处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210864807.4A CN115225287A (zh) 2022-07-21 2022-07-21 区块链交易处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115225287A true CN115225287A (zh) 2022-10-21

Family

ID=83613230

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210864807.4A Pending CN115225287A (zh) 2022-07-21 2022-07-21 区块链交易处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115225287A (zh)

Similar Documents

Publication Publication Date Title
EP3665858B1 (en) Verification of interactions system and method
CN109246129B (zh) 一种可验证客户端身份的sm2协同签名方法及系统
CA2792571C (en) Hashing prefix-free values in a signature scheme
CN110795762B (zh) 基于流密码的保留格式加密方法
CN111628868A (zh) 数字签名生成方法、装置、计算机设备和存储介质
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
CN110363509B (zh) 一种信息保护方法及装置
CN109272316B (zh) 一种基于区块链网络下的区块实现方法及系统
CN106850190A (zh) 一种对基于区块链数字凭证的销毁方法
CN111130804A (zh) 一种基于sm2算法的协同签名方法及装置、系统、介质
CN111125781B (zh) 一种文件签名方法、装置和文件签名验证方法、装置
EP1714420A1 (en) One way authentication
CN111147245A (zh) 一种区块链中使用国家密码进行加密的算法
CN111597590A (zh) 一种基于区块链的数据完整性快速检验方法
CN110719172B (zh) 区块链系统中的签名方法、签名系统以及相关设备
CN112436938B (zh) 数字签名的生成方法、装置和服务器
CN114338028A (zh) 门限签名方法、装置、电子设备和可读存储介质
CN111783136A (zh) 一种数据保护方法、装置、设备和存储介质
KR101253683B1 (ko) 연쇄 해시에 의한 전자서명 시스템 및 방법
CN110191467A (zh) 一种物联网设备的鉴权方法、设备、装置及存储介质
Wu et al. Robust and auditable distributed data storage with scalability in edge computing
KR101925941B1 (ko) 정보가상화 기반 거래 서명 인증 방법
CN110266478B (zh) 一种信息处理方法、电子设备
CN115225287A (zh) 区块链交易处理方法、装置、电子设备及存储介质
JP2003513480A (ja) エンティティの真正性および/またはメッセージの完全性を証明するための方法

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