CN117311985A - 一种基于区块链的数据处理方法、装置以及可读存储介质 - Google Patents

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

Info

Publication number
CN117311985A
CN117311985A CN202311497878.6A CN202311497878A CN117311985A CN 117311985 A CN117311985 A CN 117311985A CN 202311497878 A CN202311497878 A CN 202311497878A CN 117311985 A CN117311985 A CN 117311985A
Authority
CN
China
Prior art keywords
service
function
transaction
address
contract
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
CN202311497878.6A
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.)
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 CN202311497878.6A priority Critical patent/CN117311985A/zh
Publication of CN117311985A publication Critical patent/CN117311985A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • 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/602Providing cryptographic facilities or services
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Abstract

本发明实施例公开了一种基于区块链的数据处理方法、装置以及可读存储介质,该数据处理方法包括:中继设备获取业务发起方发送的业务交易请求;对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;向区块链节点发送中继交易,以使区块链节点通过中继交易函数标识所指示的第一函数对第一签名信息进行验签,在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;第一函数用于调用业务合约中业务函数标识所指示的第二函数,更新业务参数属于第二函数的参数;第二函数用于从更新业务参数中获取业务发起方地址,且用于基于所获取的业务发起方地址执行交易数据。

Description

一种基于区块链的数据处理方法、装置以及可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置以及可读存储介质。
背景技术
区块链平台提供一种多方维护、数据不可篡改的可信环境,通过区块链的智能合约可以实现业务节点间的资源交易。
目前用户在使用区块链应用时,是需要消耗该用户在区块链中的一些数字资源,才能使用区块链上的智能合约来实现相应的资源交易,增加了使用区块链应用的成本,降低了区块链应用的普及度。
发明内容
本申请实施例提供了一种基于区块链的数据处理方法、装置以及可读存储介质,可以降低区块链应用的成本,提高区块链应用的普及度。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
中继设备获取业务发起方发送的业务交易请求;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;
向区块链节点发送所述中继交易,以使所述区块链节点通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签,在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;所述第一函数用于调用所述业务合约中所述业务函数标识所指示的第二函数,所述更新业务参数属于所述第二函数的参数;所述第二函数用于从所述更新业务参数中获取所述业务发起方地址,且用于基于所获取的所述业务发起方地址执行所述交易数据。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
区块链节点接收中继设备发送的中继交易;所述中继交易是由所述中继设备对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,所述业务交易请求是由业务发起方发送至所述中继设备的;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签;
在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;
通过所述第一函数调用所述业务合约中所述业务函数标识所指示的第二函数,将所述更新业务参数确定为所述第二函数的参数;
在所述业务合约中,通过所述第二函数从所述更新业务参数中获取所述业务发起方地址,基于获取的所述业务发起方地址执行所述交易数据。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
获取模块,用于中继设备获取业务发起方发送的业务交易请求;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到;
组装模块,用于对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;
传输模块,用于向区块链节点发送中继交易,以使区块链节点通过中继交易函数标识所指示的第一函数对第一签名信息进行验签,在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;第一函数用于调用业务合约中业务函数标识所指示的第二函数,更新业务参数属于第二函数的参数;第二函数用于从更新业务参数中获取业务发起方地址,且用于基于所获取的业务发起方地址执行交易数据。
其中,组装模块,包括:
获取单元,用于获取可信代理合约中的中继交易函数标识,将业务合约地址、业务参数和第一签名信息确定为中继交易函数标识所指示的第一函数的参数;
组装单元,用于对业务发起方地址、业务合约地址、业务参数、第一签名信息和已关联有参数的中继交易函数标识进行重新组装,得到中继交易。
其中,数据处理装置,还包括:
签名模块,用于基于中继设备的私钥对中继交易进行签名,得到第二签名信息,将第二签名信息拼接到中继交易中;
其中,传输模块,具体用于向区块链节点发送携带第二签名信息的中继交易,以使区块链节点基于中继设备的公钥对第二签名信息进行验签,在验签通过时执行通过中继交易函数标识所指示的第一函数对第一签名信息进行验签的步骤。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
第一接收模块,用于区块链节点接收中继设备发送的中继交易;中继交易是由中继设备对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,业务交易请求是由业务发起方发送至中继设备的;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到;
验签模块,用于通过中继交易函数标识所指示的第一函数对第一签名信息进行验签;
拼接模块,用于在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;
调用模块,用于通过第一函数调用业务合约中业务函数标识所指示的第二函数,将更新业务参数确定为第二函数的参数;
获取模块,用于在业务合约中,通过第二函数从更新业务参数中获取业务发起方地址,基于获取的业务发起方地址执行交易数据。
其中,中继交易还携带第二签名信息,第二签名信息是由中继设备基于中继设备的私钥对中继交易进行签名得到;数据处理装置,还包括:
解密模块,用于基于中继设备的公钥,对第二签名信息进行解密操作,得到第一待验证哈希值;
生成模块,用于生成中继交易的第一目标哈希值;
第一确定模块,用于若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,执行通过中继交易函数标识所指示的第一函数对第一签名信息进行验签的步骤;
第二确定模块,用于若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,则返回错误提示信息到业务发起方。
其中,验签模块,包括:
解密单元,用于通过第一函数获取业务发起方的公钥,基于业务发起方的公钥对第一签名信息进行解密操作,得到第二待验证哈希值;
生成单元,用于生成业务合约地址以及业务参数对应的第二目标哈希值;
第一确定单元,用于若第二待验证哈希值与第二目标哈希值相同,则确定验签成功;
第二确定单元,用于若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败。
其中,拼接模块,具体用于在验签成功时,在业务参数的末尾拼接具有目标字节长度的数据区域,将业务发起方地址填充至数据区域,将拼接有业务发起方地址的业务参数确定为更新业务参数。
其中,获取模块,包括:
第一获取单元,用于在业务合约中,通过第二函数获取用于调用第二函数的调用方地址;
第二获取单元,用于若调用方地址为可信代理合约对应的合约地址,且检测到更新业务参数的总字节长度大于目标字节长度,则从更新业务参数的末尾数据区域中获取业务发起方地址;末尾数据区域为位于更新业务参数的末尾的数据区域,且末尾数据区域的字节长度为目标字节长度;
执行单元,用于基于所获取的业务发起方地址执行交易数据;
第三确定单元,用于若调用方地址不为可信代理合约对应的合约地址,或检测到更新业务参数的总字节长度小于或等于目标字节长度,则将调用方地址确定为用于执行第二函数的默认发起方地址。
其中,数据处理装置,还包括:
第二接收模块,用于接收业务发起方发送的验证请求;验证请求包括验证函数标识以及可信代理合约的合约地址;验证函数标识用于指示业务合约中的验证函数;
验证模块,用于根据验证请求中的验证函数标识调用验证函数,通过验证函数验证业务合约是否支持可信代理合约;
第一传输模块,用于若验证出业务合约支持可信代理合约,则向业务发起方返回验证成功信息;验证成功信息用于指示业务发起方具有发送业务交易请求至中继设备的权限;
第二传输模块,用于若验证出业务合约不支持可信代理合约,则向业务发起方返回验证失败信息;验证失败信息用于指示业务发起方不具有发送业务交易请求至中继设备的权限。
其中,数据处理装置,还包括:
第三传输模块,用于当获取到包含新增可信代理合约地址的配置交易时,将配置交易和验证函数标识打包为目标区块,将目标区块发送至共识网络,以使共识网络中的共识节点对目标区块进行共识;
配置模块,用于若目标区块共识成功,则将目标区块中的新增可信代理合约地址配置到验证函数标识所指示的验证函数中;业务合约具有支持已配置到验证函数中的新增可信代理合约地址对应的新增可信代理合约的能力。
本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信网元,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
本申请实施例可以通过中继设备获取业务发起方发送的业务交易请求,基于可信代理合约,对业务发起方的业务交易、针对中继交易的签名信息以及中继交易函数标识进行重新组装,得到中继交易,并将该中继交易转发给区块链节点,以使区块链节点能够通过中继交易函数标识所指示的中继交易函数对业务交易进行验签,在验签成功时将业务发起方地址拼接至业务参数中,以使区块链节点能够通过中继交易函数调用业务函数,进而获取业务发起方地址,且基于所获取的业务发起方地址执行交易数据。可见,本申请实施例通过中继设备与区块链节点进行交互,使得中继设备成为中继交易函数的合约调用发起方,从而可以使得业务发起方需要消耗的数字资产转交给中继设备来提供,业务发起方在发起业务请求时不再损耗额外的数字资产,进而降低业务发起方使用区块链应用的成本,提高区块链应用的普及度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络的结构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理方法的场景示意图;
图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图4是本申请实施例提供的另一种基于区块链的数据处理方法的流程示意图;
图5是本申请实施例提供的又一种基于区块链的数据处理方法的流程示意图;
图6是本申请实施例提供的又一种基于区块链的数据处理方法的流程示意图;
图7是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图8是本申请实施例提供的另一种基于区块链的数据处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对部分名词进行以下简单解释:
1、区块链(Block chain):狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
2、区块(block):是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和前继区块对应的哈希值的数据结构,区块经过网络的共识机制验证并确认区块中的交易。区块包括区块头(Block Header)以及区块体(Block Body),区块头可以记录当前区块的元信息,包含当前版本号、前继区块对应的哈希值、时间戳、随机数、默克尔树根(MerkleRoot)的哈希值等数据。区块体可以记录一段时间内所生成的详细数据,包括当前区块经过验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现形式。此外,区块体的详细数据可以包括通过默克尔树(Merkle Tree)的哈希过程,生成唯一的Merkle Root记录于区块头。
前继区块,也称父区块(Parent Block),区块链通过在区块头记录区块对应的哈希值以及父区块对应的哈希值实现时间上的排序。
3、哈希值(hash):也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
4、智能合约(Smart Contract):智能合约的概念具备承诺、协议、数字形式三大要素,因此能够将区块链的应用范围扩展至金融行业交易、支付、结算和清算的各个环节。智能合约是指当一个预先编好的条件被触发时,立即执行相应的合同条款,其工作原理类似于计算机程序的if-then语句。
请参见图1,图1是本申请实施例提供的一种区块链网络的结构示意图。如图1所示的区块链网络可以包括但不限于联盟链所对应的区块链网络。该区块链网络中可以包括多个区块链节点,多个区块链节点具体可以包括区块链节点10a、区块链节点10b、区块链节点10c、区块链节点10d、…、区块链节点10n。其中,每个区块链节点在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以向外界发送数据。为了保证各个区块链节点之间的数据互通,每个区块链节点之间可以存在数据连接,例如区块链节点10a和区块链节点10b之间存在数据连接,区块链节点10a和区块链节点10c之间存在数据连接,区块链节点10b和区块链节点10c之间存在数据连接。
可以理解的是,区块链节点之间可以通过上述数据连接进行数据或者区块传输。区块链网络可以基于节点标识实现区块链节点之间的数据连接,对于区块链网络中的每个区块链节点,均具有与其对应的节点标识,而且上述每个区块链节点均可以存储与自身有相连关系的其他区块链节点的节点标识,以便后续根据其他区块链节点的节点标识,将获取到的数据或生成的区块广播至其他区块链节点,例如区块链节点10a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识:
表1
节点名称 节点标识
节点10a AAA.AAA.AAA.AAA
节点10b BBB.BBB.BBB.BBB
节点10c CCC.CCC.CCC.CCC
节点10d DDD.DDD.DDD.DDD
节点10n EEE.EEE.EEE.EEE
其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络中节点的信息,表1中仅以IP地址为例进行说明。例如,区块链节点10a可以通过节点标识BBB.BBB.BBB.BBB向区块链节点10b发送信息(例如,区块),且区块链节点10b可以通过节点标识AAA.AAA.AAA.AAA确定该信息是由区块链节点10a所发送的。
在区块链中,在将一个区块进行上链之前,该区块必须经过区块链网络中的共识节点进行共识,在共识通过后才能将该区块添加到区块链上。可以理解的是,并非区块链中的所有参与节点(即上述区块链网络中的区块链节点)都有足够的资源和必要性成为区块链的共识节点。例如,在图1所示的区块链网络中,可以将区块链节点10a、区块链节点10b、区块链节点10c和区块链节点10d作为该区块链网络中的共识节点。区块链网络中的共识节点参与共识,也就是对区块(包含一批交易)进行共识,即对区块进行投票;而非共识节点不参与共识,但会帮助传播区块和投票消息,以及相互同步状态等。
可以理解,当区块链网络采用拜占庭共识机制来实现区块的共识时,区块的组装与共识的发起通常由主节点(也可称为出块节点)完成。在本申请实施例中,如图1所示的区块链网络可以采用拜占庭共识机制来实现区块的共识,此时,具有共识功能的区块链节点,例如,区块链节点10a,在确定当前区块高度的区块上链成功后,需要确定下一区块高度对应的区块对应的主节点,才能完成针对下一区块高度的区块的共识操作。
可以理解,本申请可以通过多种形式应用于基于区块链的数据处理方案中,下面以处理用户(可以称之为业务发起方)发起的资源数据存储业务请求为例进行说明,请一并参见图2,是本申请实施例提供的一种基于区块链的数据处理方法的场景示意图。如图2所示,实现该数据处理场景的流程可以包括中继交易组装、签名信息验签、调用方地址获取、可信代理合约验证、新增可信代理合约地址配置等模块。用于执行上述模块的区块链节点20f可为上述图1所示的区块链网络所对应的任一区块链节点,例如,区块链节点20f可为图1所示的区块链网络中的区块链节点10a。
如图2所示,用户终端20a首先会发起业务交易请求,该业务交易请求可以包括业务发起方地址20l、业务合约地址、业务参数以及针对业务交易的签名信息,可以称该签名信息为第一签名信息20h;上述业务合约地址所指示的业务合约可以是业务交易请求所请求调用的智能合约,上述业务合约可包含业务函数标识,上述业务函数标识用于调用业务函数(上述业务函数也可以称之为第二函数);上述业务参数可以包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据,上述交易数据可以包括需存储至区块链中的资源数据,也可以是需与其他用户进行交易的资源数据,本申请对此不做限制,此处仅以存储业务为例进行说明。
具体的,中继设备20b获取到业务交易请求后,可以获取可信代理合约20c的中继交易函数标识,中继设备20b将上述业务合约地址、业务参数以及第一签名信息20h确定为中继交易函数标识指示的第一函数20g(上述第一函数20g可以称为中继交易函数,或者可以称之为sendAndVerify)中的参数。接着,中继设备20b将上述业务发起方地址20l、业务合约地址、业务参数、第一签名信息20h和已关联有参数的中继交易函数标识进行重新组装,得到中继交易20d。然后,中继设备20b通过自己所持有的私钥对上述中继交易20d进行签名,得到第二签名信息20e。最后,中继设备20b将第二签名信息20e拼接至中继交易20d,再将拼接后的中继交易20d发送至区块链节点20f,至此完成由中继设备20b转发业务交易请求的过程。
进一步地,区块链节点20f接收到由中继设备20b发送的中继交易20d后,会在对第一签名信息20h以及第二签名信息20e验签成功后拼接业务发起方地址20l至业务参数中,区块链节点20f会将上述拼接有业务发起方地址20l的业务参数确定为更新业务参数20i。进一步地,区块链节点20f通过第一函数20g调用业务合约中的业务函数标识所指示的第二函数20j(上述第二函数20j也可以称为业务函数),并将上述更新业务参数20i确定为第二函数20j的参数。在业务合约中,区块链节点20f通过第二函数20j获取用于调用第二函数20j的调用方地址20k;若确定调用方地址20k为可信代理合约20c对应的合约地址,且检测到更新业务参数20i的总字节长度大于目标字节长度(如本申请实施例以目标字节长度为20字节为例),即更新业务参数20i的总字节长度大于20字节时,区块链节点20f则会从更新业务参数20i中获取业务发起方地址20l,接着调用第二函数20j基于上述业务发起方地址20l执行交易数据,本申请实施例以存储业务为例,第二函数20j可以将上述业务发起方地址20l中的交易数据所指示的资源数据存储至业务合约中;可选的,若调用方地址20k不为可信代理合约20c对应的合约地址,或检测到更新业务参数20i的总字节长度小于或等于目标字节长度,即其总字节长度小于或等于20字节,则区块链节点20f会将调用方地址20k确定为用于执行第二函数20j的默认发起方地址(上述调用方地址20k可以称之为msg.sender),接着,区块链节点20f可以调用第二函数20j通过上述调用方地址20k执行交易数据。至此,用户终端20a发起的业务交易请求所指示的业务交易被完成。
可以理解的是,在用户终端20a发起业务交易请求之前,区块链节点20f需要验证业务合约(上述业务合约也可以称为接收方合约)是否支持可信代理合约,即验证可信代理合约是否有调用业务合约的权限。若验证到业务合约支持可信代理合约,则说明中继设备20b具有对用户终端20a发起的请求进行重新组装以及将重新组装后的中继交易20d发送到区块链节点20f的权限,区块链节点20f可以把验证结果反馈给用户终端20a,用户终端20a在确认出业务合约支持可信代理合约时,就可以向中继设备20b发起业务交易请求。具体实现过程可以为:用户终端20a向区块链节点20f发送验证请求,该验证请求可以包含验证函数标识和可信代理合约地址,上述验证函数标识用于指示业务合约中的验证函数20m。区块链节点20f执行判断业务,首先判断业务合约中是否存在验证函数标识所指示的验证函数20m,若确定验证函数20m不存在,区块链节点20f则会返回报错信息给用户终端20a,以使用户终端20a确定业务合约不支持由中继设备20b转发业务交易的功能,进而不执行向中继设备20b发送业务交易请求的操作;区块链节点20f若确定验证函数20m存在,则进行可信代理合约的验证操作。具体的,区块链节点20f会基于上述验证函数标识执行验证函数20m,判断业务合约是否支持可信代理合约,若确定不支持可信代理合约,则会生成验证失败信息20n,区块链节点20f将验证失败信息20n返回给用户终端20a,用户终端20a接收到上述验证失败信息20n后可以确定业务合约不支持由中继设备20b转发业务交易的功能,即用户终端20a不具有发送业务交易请求至中继设备的权限;若确定支持可信代理合约,区块链节点20f则生成验证成功信息20o,并将验证成功信息20o发送回用户终端20a,上述验证成功信息20o用于指示用户终端20a具有发送业务交易请求至中继设备的权限。
可选的,区块链节点20f可以通过验证函数20m配置新增的可信代理合约,使得新增的可信代理合约在配置成功后,验证函数20m能够识别出新增的代理合约为可被业务合约支持的可信代理合约。具体的,区块链节点20f若获取到包含新增可信代理合约地址20p的配置交易,则将上述配置交易和验证函数标识打包为目标区块20q,接着将上述目标区块20q发送至区块链的共识网络20r,共识网络20r中的共识节点则会对目标区块20q进行共识,若目标区块20q被共识成功,区块链节点20f则会将目标区块20q中的新增可信代理合约地址配置到验证函数标识所指示的验证函数20m中,若配置成功,则验证函数20m可以确定上述新增可信代理合约地址20p为业务合约所支持的可信代理合约地址。
由此可见,本申请实施例可以通过中继设备获取业务发起方发送的业务交易请求,基于可信代理合约,对业务发起方的业务交易、针对中继交易的签名信息以及中继交易函数标识进行重新组装,得到中继交易,并将该中继交易转发给区块链节点,以使区块链节点能够通过中继交易函数标识所指示的中继交易函数对业务交易进行验签,在验签成功时将业务发起方地址拼接至业务参数中,以使区块链节点能够通过中继交易函数调用业务函数,进而获取业务发起方地址,且基于所获取的业务发起方地址执行交易数据。可见,本申请实施例通过中继设备与区块链节点进行交互,使得中继设备成为中继交易函数的合约调用发起方,从而可以使得业务发起方需要消耗的数字资产转交给中继设备来提供,业务发起方在发起业务请求时不再损耗额外的数字资产,进而降低业务发起方使用区块链应用的成本,提高区块链应用的普及度。
进一步地,请参见图3,图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图,以下将以中继设备作为执行主体为例进行说明。
步骤S101,中继设备获取业务发起方发送的业务交易请求;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到。
具体的,中继设备接收由业务发起方发送的业务交易请求,该业务交易请求可以包括业务发起方地址、业务合约地址、业务参数以及针对业务交易的签名信息(可以称之为第一签名信息)。上述业务发起方地址可以为可发起业务的用户终端在区块链网络中的账户地址,上述业务合约地址为经过中继设备转发,最终接收业务交易请求的接收方地址。可选的,业务发起方在确定不支持中继设备转发操作时,也可以不经过中继设备,直接将业务交易请求发送至区块链节点,再通过区块链节点调用业务合约地址所指示的业务合约;上述业务参数可以包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据,上述交易数据可以包括需存储至区块链节点的资源数据,也可以是需与其他用户进行置换的资源数据,本申请对此不做限制;上述第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到。
步骤S102,对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易。
具体的,中继设备接收到由业务发起方发送的业务交易请求后,可以获取可信代理合约中的中继交易函数标识,接着,中继设备将上述业务交易请求中包含的业务合约地址、业务参数以及第一签名信息确定为上述中继交易函数标识所指示的第一函数(上述第一函数也可称为中继交易函数或者sendAndVerify)中的参数。中继设备将上述业务发起方地址、业务合约地址、业务参数、第一签名信息和已关联有参数的中继交易函数标识进行重新组装,得到中继交易,接着中继设备通过中继设备的私钥对上述中继交易进行签名,得到第二签名信息。中继设备将第二签名信息拼接至中继交易中,获得携带有第二签名信息的中继交易。
步骤S103,向区块链节点发送中继交易,以使区块链节点通过中继交易函数标识所指示的第一函数对第一签名信息进行验签,在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;第一函数用于调用业务合约中业务函数标识所指示的第二函数,更新业务参数属于第二函数的参数;第二函数用于从更新业务参数中获取业务发起方地址,且用于基于所获取的业务发起方地址执行交易数据。
具体的,中继设备组装完中继交易后,将携带有第二签名信息的中继交易发送给区块链节点,以使区块链节点在对上述第二签名信息验签成功后,根据中继交易中的中继交易函数标识所指示的中继交易函数,对第一签名信息进行验签。若上述第一签名信息验签成功,区块链节点会将业务发起方地址拼接到业务参数中,获取到更新业务参数。需要说明的是,上述更新业务参数属于第二函数(上述第二函数也可称为业务函数)的参数,区块链节点可以通过业务函数调用第二函数,通过上述第二函数可以从业务函数的参数中获取业务发起方地址,且基于所获取的业务发起方地址执行交易数据,上述交易数据可以包括需存储至区块链节点的资源数据,也可以是需与其他用户进行置换的资源数据,本申请对此不做限制。
综上,可见本申请实施例可以通过中继设备获取业务发起方发送的业务交易请求,基于可信代理合约,对业务发起方的业务交易、针对中继交易的签名信息以及中继交易函数标识进行重新组装,得到中继交易,并将该中继交易转发给区块链节点,以使区块链节点能够通过中继交易函数标识所指示的中继交易函数对业务交易进行验签,在验签成功时将业务发起方地址拼接至业务参数中,以使区块链节点能够通过中继交易函数调用业务函数,进而获取业务发起方地址,且基于所获取的业务发起方地址执行交易数据。可见,本申请实施例通过中继设备与区块链节点进行交互,使得中继设备成为中继交易函数的合约调用发起方,从而可以使得业务发起方需要消耗的数字资产转交给中继设备来提供,业务发起方在发起业务请求时不再损耗额外的数字资产,进而降低业务发起方使用区块链应用的成本,提高区块链应用的普及度。
进一步地,请参见图4,图4是本申请实施例提供的另一种基于区块链的数据处理方法的流程示意图。其中,该数据处理方法用于完成上述图3所对应实施例中提及的区块链节点进行的操作,该数据处理方法可以由区块链节点,例如,上述图1所对应实施例中区块链网络中的任一区块链节点执行,本申请实施例以区块链节点为例进行说明。如图4所示,该方法可以包括以下步骤:
步骤S201,区块链节点接收中继设备发送的中继交易;中继交易是由中继设备对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,业务交易请求是由业务发起方发送至中继设备的;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到。
具体的,请一并参见图5,图5是本申请实施例提供的又一种基于区块链的数据处理方法的流程示意图。如图5所示,区块链节点50b接收中继设备50d发送的中继交易,该中继交易是由中继设备50a对业务发起方向中继设备50a发送的业务交易请求,以及中继设备50a的可信代理合约中的中继交易函数标识进行重新组装得到的。上述中继交易可包含业务发起方地址50i、业务合约地址、业务参数、第一签名信息50e和已关联有参数的中继交易函数标识以及针对中继交易的第二签名信息50c,上述业务发起方地址50i可以用于在业务函数中执行交易数据;业务合约地址可以用于指示业务合约;业务参数可以作为携带需传递信息的参数;第一签名信息50e是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到的;中继交易函数标识用于指示第一函数50d(上述第一函数50d也可以称为中继交易函数,或是称之为sendAndVerify);第二签名信息50c是由中继设备50a通过其私钥对上述中继交易进行签名得到的。
步骤S202,通过中继交易函数标识所指示的第一函数对第一签名信息进行验签。
具体的,再请参见图5,区块链节点50b接收到中继设备50a发送的中继交易后,首先会对第二签名信息50c进行验签,待验签成功后通过上述中继交易函数标识所指示的第一函数50d,对上述第一签名信息50e进行验签。可以理解的是,区块链节点50b针对第二签名信息50c的验签过程可以是:区块链节点50b基于中继设备50a的公钥,对第二签名信息50c进行解密操作,得到第一待验证哈希值;区块链节点50b通过哈希函数生成针对中继交易的第一目标哈希值;区块链节点50b将上述第一待验证哈希值与上述第一目标哈希值相比较,若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,则返回错误提示信息到业务发起方,上述错误提示信息用于指示中继交易验签失败;若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,区块链节点50b执行通过上述中继交易函数标识所指示的第一函数50d对第一签名信息50e进行验签的步骤。
进一步地,上述通过第一函数50d对上述第一签名信息50e所执行的验签操作流程可以是:区块链节点50b通过第一函数50d获取业务发起方的公钥,基于上述业务发起方的公钥对第一签名信息50e进行解密操作,得到第二待验证哈希值;区块链节点50b通过哈希函数生成与业务合约地址以及业务参数对应的第二目标哈希值;区块链节点50b将上述第一待验证哈希值与上述第一目标哈希值相比较,若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败;若第二待验证哈希值与第二目标哈希值相同,则确定验签成功,区块链节点50b则执行将业务发起方地址拼接到业务参数的步骤。
步骤S203,在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数。
具体的,再请参见图5,通过上述第一函数50d对第一签名信息50e验签成功后,区块链节点50b会在获取到的上述中继交易的业务参数的末尾,拼接具有目标字节长度的数据区域,需要说明的是,上述目标字节长度可以根据业务发起方地址的字节长度而变化,或者,可以根据其他需通过拼接参数而进行传递的数据长度变化,例如,上述目标字节长度可以是20字节,本申请对此不做限制。
进一步地,区块链节点50b将从上述中继交易中获取到的业务发起方地址50i填充至上述业务参数末尾的数据区域,使得业务参数能够携带业务发起方地址50i,上述携带了拼接数据区域的业务参数可以称之为更新业务参数50f,上述更新业务参数50f可以作为通过业务函数标识所指示的第二函数50g(上述第二函数50g也可以被称为业务函数)的参数,用于确定调用方地址50h。
步骤S204,通过第一函数调用业务合约中业务函数标识所指示的第二函数,将更新业务参数确定为第二函数的参数。
具体的,再请参见图5,区块链节点50b首先获取上述中继交易中的业务函数标识,然后通过第一函数50d调用业务合约中的业务函数标识所指示的第二函数50g,接着区块链节点50b将上述更新业务参数50f作为第二函数50g的参数,使得第二函数50g能够通过上述更新业务参数50f确定调用方地址50h是否为可信代理合约地址。若区块链节点50b确定调用方地址50h为可信代理合约地址且长度大于上述目标字节长度,则将业务发起方地址50i确定为调用方地址50h,执行后续操作。
步骤S205,在业务合约中,通过第二函数从更新业务参数中获取业务发起方地址,基于获取的业务发起方地址执行交易数据。
具体的,再请参见图5,区块链节点50b通过业务函数标识调用业务合约中的第二函数50g,再通过上述第二函数50g从上述更新业务参数50f中确定调用方地址50h是否为可信代理合约地址。具体的,若区块链节点50b确定调用方地址50h为可信代理合约地址,且上述调用方地址50h的字节长度大于上述目标字节长度,例如,上述调用方地址50h的字节长度为30字节,目标字节长度为20字节,则上述调用方地址50h的字节长度大于目标字节长度,即说明该更新业务参数50f已拼接有上述业务发起方地址50i,进而区块链节点50b可以从上述更新业务参数50f末尾的数据区域获取到业务发起方地址50i;若区块链节点50b确定调用方地址50h不是可信代理合约地址,或者,调用方地址50h小于或等于目标字节长度,例如,上述调用方地址50h的字节长度为10字节,目标字节长度为20字节,即上述调用方地址50h的字节长度小于目标字节长度,则说明上述第二函数50g的业务参数并未拼接有业务发起方地址50i,即上述第二函数50g的调用方可能是中继设备50a之外的其他设备,因此区块链节点50b可以将上述调用方地址50h确定为用于执行上述第二函数50g的默认发起方地址(上述默认发起方地址也可以被称为msg.sender)。
进一步地,若确定上述调用方地址50h为可信代理合约地址且其字节长度大于目标字节长度,则将业务发起方地址50i作为调用第二函数50g的合约地址,用于执行交易数据;若确定上述调用方地址50h不是可信代理合约地址,或是上述调用方地址50h的字节长度不大于上述目标字节长度,则保留调用方地址50h作为调用第二函数50g的合约地址,用于执行交易数据。其中,执行交易数据的操作可以是存储业务操作,即区块链节点50b根据上述用于执行交易数据操作的地址,将业务参数所指示的资源数据存储至区块链中;或者,上述执行交易数据的操作可以为交易业务操作,即区块链节点50b根据上述用于执行交易数据操作的地址,将业务参数所指示的资源数据存储至区块链中,区块链节点再基于智能合约对交易双方的资源数据执行转移或交换操作;或者,也可以是其他类型的业务操作,本申请对此不做限制。
需要说明的是,在上述业务发起方向中继设备发送业务交易申请之前,区块链节点50b还需要对业务合约是否支持可信代理合约进行验证操作,区块链节点50b可以把验证结果反馈给业务发起方,业务发起方确认业务合约支持可信代理合约后,就可以向中继设备发起业务交易请求。具体的,请一并参见图6,图6是本申请实施例提供的又一种基于区块链的数据处理方法的流程示意图。
其中,该数据处理方法具体用于实现图3以及图4所对应实施例中提及的业务发起方向中继设备发送业务交易请求之前,由区块链节点进行的验证操作以及配置操作;上述验证操作用于验证业务合约是否支持可信代理合约,若验证成功,业务发起方才具有发送业务交易请求至中继设备的权限;配置操作用于通过验证函数配置新增的可信代理合约地址,配置成功后验证函数可以识别出新增的代理合约为可被业务合约支持的可信代理合约。
具体的,业务发起方60a向区块链节点60b发送验证请求,该验证请求可以包含验证函数标识和可信代理合约地址,上述验证函数标识用于指示业务合约中的验证函数60c。区块链节点60b接收到验证请求后,首先执行判断业务,即判断业务合约中是否存在验证函数标识所指示的验证函数60c,若区块链节点60b确定验证函数60c不存在,则会返回报错信息给业务发起方60a,以使业务发起方60a确定业务合约不支持由中继设备转发业务交易的功能,进而不执行向中继设备发送业务交易请求的操作;若区块链节点60b确定验证函数60c存在,则进行可信代理合约的验证操作。
进一步地,若确定上述验证函数60c存在,区块链节点60b会根据验证请求中携带的验证函数标识调用验证函数60c,通过验证函数60c判断业务合约是否支持可信任的代理合约,若区块链节点60b确定不支持可信代理合约,则生成验证失败信息60d,区块链节点60b会将验证失败信息60d返回给业务发起方60a,业务发起方60a接收到上述验证失败信息60d后则确定不支持由中继设备转发业务交易的功能,即业务发起方60a不具有发送业务交易请求至中继设备的权限;若区块链节点60b确定业务合约支持可信代理合约,则会生成验证成功信息60e,区块链节点60b将验证成功信息60e发送回业务发起方60a,则业务发起方60a具有发送业务交易请求至中继设备的权限,允许执行向中继设备发送业务交易请求的操作。
可选的,验证函数60c可以通过区块链节点60b配置新增的可信代理合约,用于令验证函数60c可以在配置成功后的验证过程中,识别出新增的代理合约为可被业务合约支持的可信代理合约。具体的,区块链节点60b若获取到包含新增可信代理合约地址60f的配置交易,则将上述配置交易和验证函数标识打包为目标区块60g,接着区块链节点60b将上述目标区块60g发送至区块链的共识网络60h,共识网络60h中的共识节点则会对目标区块60g进行共识。若目标区块60g被共识成功,区块链节点60b则会将目标区块60g中的新增可信代理合约地址配置到验证函数标识所指示的验证函数60c中。若配置成功,则验证函数60c可以识别上述新增可信代理合约地址60f为业务合约所支持的可信代理合约地址。
由此可见,本申请实施例可以通过中继设备获取业务发起方发送的业务交易请求,基于可信代理合约,对业务发起方的业务交易、针对中继交易的签名信息以及中继交易函数标识进行重新组装,得到中继交易,并将该中继交易转发给区块链节点,以使区块链节点能够通过中继交易函数标识所指示的中继交易函数对业务交易进行验签,在验签成功时将业务发起方地址拼接至业务参数中,以使区块链节点能够通过中继交易函数调用业务函数,进而获取业务发起方地址,且基于所获取的业务发起方地址执行交易数据。可见,本申请实施例通过中继设备与区块链节点进行交互,使得中继设备成为中继交易函数的合约调用发起方,从而可以使得业务发起方需要消耗的数字资产转交给中继设备来提供,业务发起方在发起业务请求时不再损耗额外的数字资产,进而降低业务发起方使用区块链应用的成本,提高区块链应用的普及度。
请参见图7,是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图7所示,该数据处理装置1可以包括:获取模块101、组装模块102、传输模块103。
获取模块101,用于中继设备获取业务发起方发送的业务交易请求;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到;
组装模块102,用于对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;
传输模块103,用于向区块链节点发送中继交易,以使区块链节点通过中继交易函数标识所指示的第一函数对第一签名信息进行验签,在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;第一函数用于调用业务合约中业务函数标识所指示的第二函数,更新业务参数属于第二函数的参数;第二函数用于从更新业务参数中获取业务发起方地址,且用于基于所获取的业务发起方地址执行交易数据。
其中,上述获取模块101的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101;上述组装模块102的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102;上述传输模块103的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
再请参见图7,上述数据处理装置1,还可以包括:签名模块104。
签名模块104,用于基于中继设备的私钥对中继交易进行签名,得到第二签名信息,将第二签名信息拼接到中继交易中。
其中,传输模块103,具体用于向区块链节点发送携带第二签名信息的中继交易,以使区块链节点基于中继设备的公钥对第二签名信息进行验签,在验签通过时执行通过中继交易函数标识所指示的第一函数对第一签名信息进行验签的步骤。
上述签名模块104的具体功能实现方式可以参见上述图3所对应实施例中对步骤S102中针对中继交易的描述,这里不再进行赘述。
其中,上述组装模块102可以包括:获取单元1021以及组装单元1022。
获取单元1021,用于获取可信代理合约中的中继交易函数标识,将业务合约地址、业务参数和第一签名信息确定为中继交易函数标识所指示的第一函数的参数;
组装单元1022,用于对业务发起方地址、业务合约地址、业务参数、第一签名信息和已关联有参数的中继交易函数标识进行重新组装,得到中继交易。
其中,上述获取单元1021以及组装单元1022的具体实施方式可以参见上述图3所对应实施例中对步骤S102中针对组装操作所进行的描述,这里不再进行赘述。
请参见图8,是本申请实施例提供的另一种基于区块链的数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据处理装置2可以包括:第一接收模块201、验签模块202、拼接模块203、调用模块204以及获取模块205。
第一接收模块201,用于区块链节点接收中继设备发送的中继交易;中继交易是由中继设备对业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,业务交易请求是由业务发起方发送至中继设备的;业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;第一签名信息是基于业务发起方的私钥对业务合约地址以及业务参数进行签名得到;
验签模块202,用于通过中继交易函数标识所指示的第一函数对第一签名信息进行验签;
拼接模块203,用于在验签成功时将业务发起方地址拼接到业务参数中,得到更新业务参数;
其中,拼接模块203,具体用于在验签成功时,在业务参数的末尾拼接具有目标字节长度的数据区域,将业务发起方地址填充至数据区域,将拼接有业务发起方地址的业务参数确定为更新业务参数。
调用模块204,用于通过第一函数调用业务合约中业务函数标识所指示的第二函数,将更新业务参数确定为第二函数的参数;
获取模块205,用于在业务合约中,通过第二函数从更新业务参数中获取业务发起方地址,基于获取的业务发起方地址执行交易数据。
其中,上述第一接收模块201的具体功能实现方式可以参见上述图4所对应实施例中的步骤S201;上述验签模块202的具体功能实现方式可以参见上述图4所对应实施例中的步骤S202;上述拼接模块203的具体功能实现方式可以参见上述图4所对应实施例中的步骤S203;上述调用模块204的具体功能实现方式可以参见上述图4所对应实施例中的步骤S204;上述获取模块205的具体功能实现方式可以参见上述图4所对应实施例中的步骤S205,这里不再进行赘述。
再请参见图8,上述数据处理装置2,还可以还包括:解密模块206、生成模块207、第一确定模块208、第二确定模块209。
解密模块206,用于基于中继设备的公钥,对第二签名信息进行解密操作,得到第一待验证哈希值;
生成模块207,用于生成中继交易的第一目标哈希值;
第一确定模块208,用于若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,执行通过中继交易函数标识所指示的第一函数对第一签名信息进行验签的步骤;
第二确定模块209,用于若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,则返回错误提示信息到业务发起方。
其中,上述解密模块206、生成模块207、第一确定模块208以及第二确定模块209的具体功能实现方式可以参见上述图5所对应实施例中针对第一签名信息的验签操作所进行的描述,这里不再进行赘述。
再请参见图8,上述数据处理装置2,还可以还包括:第二接收模块210、验证模块211、第一传输模块212以及第二传输模块213。
第二接收模块210,用于接收业务发起方发送的验证请求;验证请求包括验证函数标识以及可信代理合约的合约地址;验证函数标识用于指示业务合约中的验证函数;
验证模块211,用于根据验证请求中的验证函数标识调用验证函数,通过验证函数验证业务合约是否支持可信代理合约;
第一传输模块212,用于若验证出业务合约支持可信代理合约,则向业务发起方返回验证成功信息;验证成功信息用于指示业务发起方具有发送业务交易请求至中继设备的权限;
第二传输模块213,用于若验证出业务合约不支持可信代理合约,则向业务发起方返回验证失败信息;验证失败信息用于指示业务发起方不具有发送业务交易请求至中继设备的权限。
其中,第二接收模块210、验证模块211、第一传输模块212以及第二传输模块213的具体功能实现方式可以参见上述图6所对应实施例中针对验证函数的实现步骤所进行的描述,这里不再进行赘述。
再请参见图8,上述数据处理装置2,还可以还包括:第三传输模块214以及配置模块215。
第三传输模块214,用于当获取到包含新增可信代理合约地址的配置交易时,将配置交易和验证函数标识打包为目标区块,将目标区块发送至共识网络,以使共识网络中的共识节点对目标区块进行共识;
配置模块215,用于若目标区块共识成功,则将目标区块中的新增可信代理合约地址配置到验证函数标识所指示的验证函数中;业务合约具有支持已配置到验证函数中的新增可信代理合约地址对应的新增可信代理合约的能力。
其中,第三传输模块214以及配置模块215的具体功能实现方式可以参见上述图6所对应实施例中针对新增可信代理合约地址的配置的实现步骤所进行的描述,这里不再进行赘述。
再请参见图8,上述验签模块202可以包括:解密单元2021、生成单元2022、第一确定单元2023以及第二确定单元2024。
解密单元2021,用于通过第一函数获取业务发起方的公钥,基于业务发起方的公钥对第一签名信息进行解密操作,得到第二待验证哈希值;
生成单元2022,用于生成业务合约地址以及业务参数对应的第二目标哈希值;
第一确定单元2023,用于若第二待验证哈希值与第二目标哈希值相同,则确定验签成功;
第二确定单元2024,用于若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败。
其中,解密单元2021、生成单元2022、第一确定单元2023以及第二确定单元2024的具体功能实现方式可以参见上述图4所对应实施例中的步骤S202,或者,可以参见上述图5所对应实施例中针对第一签名信息的验签步骤所进行的描述,这里不再进行赘述。
再请参见图8,上述获取模块205可以包括:第一获取单元2051、第二获取单元2052、执行单元2053以及第三确定单元2054。
第一获取单元2051,用于在业务合约中,通过第二函数获取用于调用第二函数的调用方地址;
第二获取单元2052,用于若调用方地址为可信代理合约对应的合约地址,且检测到更新业务参数的总字节长度大于目标字节长度,则从更新业务参数的末尾数据区域中获取业务发起方地址;末尾数据区域为位于更新业务参数的末尾的数据区域,且末尾数据区域的字节长度为目标字节长度;
执行单元2053,用于基于所获取的业务发起方地址执行交易数据;
第三确定单元2054,用于若调用方地址不为可信代理合约对应的合约地址,或检测到更新业务参数的总字节长度小于或等于目标字节长度,则将调用方地址确定为用于执行第二函数的默认发起方地址。
其中,第一获取单元2051、第二获取单元2052、执行单元2053以及第三确定单元2054的具体功能实现方式可以参见上述图4所对应实施例中的步骤205,或者,可以参见上述图5所对应实施例中针对第二函数的实现步骤所进行的描述,这里不再进行赘述。
通过本申请实施例提供的方法,可以降低去中心化应用的成本,提高区块链应用的普及度。
请参见图9,是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取终端设备发送的资源查询请求中的用户地址;
若与用户地址相关联的资源下发变量指示资源未发行,则获取查询错误信息;与用户地址相关联的资源下发变量用于指示业务方针对用户地址所提供的资源数据的发行状态;
通过查询错误信息所指示的网关地址获取已签名资源信息;已签名资源信息包括由业务方提供的资源数据以及签名信息,签名信息是基于业务方的私钥对资源数据进行签名得到;资源数据为未在区块链网络中发行的数据;
基于业务方的公钥对已签名资源信息中的签名信息进行验签;
若验签成功,则基于已签名资源信息中的资源数据和用户地址在区块链网络上的链上资源数据,确定用户地址对应的总资源数值,将总资源数值发送至终端设备,以使终端设备显示总资源数值;已签名资源信息中的资源数据用于在终端设备发起交易业务时,在区块链网络上被发行至用户地址。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2、图3、图4、图5、图6任一个所对应实施例中对该数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图2、图3、图4、图5、图6任一个所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图2、图3、图4、图5、图6任一个所对应实施例提供的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种基于区块链的数据处理方法,其特征在于,包括:
中继设备获取业务发起方发送的业务交易请求;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;
向区块链节点发送所述中继交易,以使所述区块链节点通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签,在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;所述第一函数用于调用所述业务合约中所述业务函数标识所指示的第二函数,所述更新业务参数属于所述第二函数的参数;所述第二函数用于从所述更新业务参数中获取所述业务发起方地址,且用于基于所获取的所述业务发起方地址执行所述交易数据。
2.根据权利要求1所述的方法,其特征在于,所述对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易,包括:
获取可信代理合约中的中继交易函数标识,将所述业务合约地址、所述业务参数和所述第一签名信息确定为所述中继交易函数标识所指示的第一函数的参数;
对所述业务发起方地址、所述业务合约地址、所述业务参数、所述第一签名信息和已关联有参数的中继交易函数标识进行重新组装,得到中继交易。
3.根据权利要求1所述的方法,其特征在于,还包括:
基于中继设备的私钥对所述中继交易进行签名,得到第二签名信息,将所述第二签名信息拼接到所述中继交易中;
所述向所述区块链节点发送所述中继交易,包括:
向所述区块链节点发送携带所述第二签名信息的中继交易,以使所述区块链节点基于所述中继设备的公钥对所述第二签名信息进行验签,在验签通过时执行所述通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签的步骤。
4.一种基于区块链的数据处理方法,其特征在于,包括:
区块链节点接收中继设备发送的中继交易;所述中继交易是由所述中继设备对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,所述业务交易请求是由业务发起方发送至所述中继设备的;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签;
在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;
通过所述第一函数调用所述业务合约中所述业务函数标识所指示的第二函数,将所述更新业务参数确定为所述第二函数的参数;
在所述业务合约中,通过所述第二函数从所述更新业务参数中获取所述业务发起方地址,基于获取的所述业务发起方地址执行所述交易数据。
5.根据权利要求4所述的方法,其特征在于,所述中继交易还携带第二签名信息,所述第二签名信息是由所述中继设备基于中继设备的私钥对所述中继交易进行签名得到;所述方法还包括:
基于所述中继设备的公钥,对所述第二签名信息进行解密操作,得到第一待验证哈希值;
生成所述中继交易的第一目标哈希值;
若所述第一待验证哈希值与所述第一目标哈希值相同,则确定验签成功,执行所述通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签的步骤;
若所述第一待验证哈希值与所述第一目标哈希值不相同,则确定验签失败,则返回错误提示信息到所述业务发起方。
6.根据权利要求4所述的方法,其特征在于,所述通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签,包括:
通过所述第一函数获取所述业务发起方的公钥,基于所述业务发起方的公钥对所述第一签名信息进行解密操作,得到第二待验证哈希值;
生成所述业务合约地址以及所述业务参数对应的第二目标哈希值;
若所述第二待验证哈希值与所述第二目标哈希值相同,则确定验签成功;
若所述第二待验证哈希值与所述第二目标哈希值不相同,则确定验签失败。
7.根据权利要求4所述的方法,其特征在于,所述在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数,包括:
在验签成功时,在所述业务参数的末尾拼接具有目标字节长度的数据区域,将所述业务发起方地址填充至所述数据区域,将拼接有所述业务发起方地址的业务参数确定为更新业务参数。
8.根据权利要求7所述的方法,其特征在于,所述在所述业务合约中,通过所述第二函数从所述更新业务参数中获取所述业务发起方地址,基于所获取的业务发起方地址执行所述交易数据,包括:
在所述业务合约中,通过所述第二函数获取用于调用所述第二函数的调用方地址;
若所述调用方地址为所述可信代理合约对应的合约地址,且检测到所述更新业务参数的总字节长度大于所述目标字节长度,则从所述更新业务参数的末尾数据区域中获取所述业务发起方地址;所述末尾数据区域为位于所述更新业务参数的末尾的所述数据区域,且所述末尾数据区域的字节长度为所述目标字节长度;
基于所获取的业务发起方地址执行所述交易数据;
若所述调用方地址不为所述可信代理合约对应的合约地址,或检测到所述更新业务参数的总字节长度小于或等于所述目标字节长度,则将所述调用方地址确定为用于执行所述第二函数的默认发起方地址。
9.根据权利要求4所述的方法,其特征在于,还包括:
接收所述业务发起方发送的验证请求;所述验证请求包括验证函数标识以及所述可信代理合约的合约地址;所述验证函数标识用于指示所述业务合约中的验证函数;
根据所述验证请求中的所述验证函数标识调用所述验证函数,通过所述验证函数验证所述业务合约是否支持所述可信代理合约;
若验证出所述业务合约支持所述可信代理合约,则向所述业务发起方返回验证成功信息;所述验证成功信息用于指示所述业务发起方具有发送所述业务交易请求至所述中继设备的权限;
若验证出所述业务合约不支持所述可信代理合约,则向所述业务发起方返回验证失败信息;所述验证失败信息用于指示所述业务发起方不具有发送所述业务交易请求至所述中继设备的权限。
10.根据权利要求9所述的方法,其特征在于,还包括:
当获取到包含新增可信代理合约地址的配置交易时,将所述配置交易和所述验证函数标识打包为目标区块,将所述目标区块发送至共识网络,以使共识网络中的共识节点对所述目标区块进行共识;
若所述目标区块共识成功,则将所述目标区块中的所述新增可信代理合约地址配置到所述验证函数标识所指示的验证函数中;所述业务合约具有支持已配置到所述验证函数中的所述新增可信代理合约地址对应的新增可信代理合约的能力。
11.一种基于区块链的数据处理装置,其特征在于,包括:
获取模块,用于中继设备获取业务发起方发送的业务交易请求;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
组装模块,用于对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装,得到中继交易;
传输模块,用于向区块链节点发送所述中继交易,以使所述区块链节点通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签,在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;所述第一函数用于调用所述业务合约中所述业务函数标识所指示的第二函数,所述更新业务参数属于所述第二函数的参数;所述第二函数用于从所述更新业务参数中获取所述业务发起方地址,且用于基于所获取的业务发起方地址执行所述交易数据。
12.一种基于区块链的数据处理装置,其特征在于,包括:
第一接收模块,用于区块链节点接收中继设备发送的中继交易;所述中继交易是由所述中继设备对所述业务交易请求和可信代理合约中的中继交易函数标识进行重新组装得到,所述业务交易请求是由业务发起方发送至所述中继设备的;所述业务交易请求包括业务发起方地址、业务合约地址、业务参数以及第一签名信息;所述业务参数包括业务合约地址所指示的业务合约中的业务函数标识以及交易数据;所述第一签名信息是基于所述业务发起方的私钥对所述业务合约地址以及所述业务参数进行签名得到;
验签模块,用于通过所述中继交易函数标识所指示的第一函数对所述第一签名信息进行验签;
拼接模块,用于在验签成功时将所述业务发起方地址拼接到所述业务参数中,得到更新业务参数;
调用模块,用于通过所述第一函数调用所述业务合约中所述业务函数标识所指示的第二函数,将所述更新业务参数确定为所述第二函数的参数;
获取模块,用于在所述业务合约中,通过所述第二函数从所述更新业务参数中获取所述业务发起方地址,基于所获取的业务发起方地址执行所述交易数据。
13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-10任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-10任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现权利要求1-10任一项所述的方法。
CN202311497878.6A 2023-11-10 2023-11-10 一种基于区块链的数据处理方法、装置以及可读存储介质 Pending CN117311985A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311497878.6A CN117311985A (zh) 2023-11-10 2023-11-10 一种基于区块链的数据处理方法、装置以及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311497878.6A CN117311985A (zh) 2023-11-10 2023-11-10 一种基于区块链的数据处理方法、装置以及可读存储介质

Publications (1)

Publication Number Publication Date
CN117311985A true CN117311985A (zh) 2023-12-29

Family

ID=89273786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311497878.6A Pending CN117311985A (zh) 2023-11-10 2023-11-10 一种基于区块链的数据处理方法、装置以及可读存储介质

Country Status (1)

Country Link
CN (1) CN117311985A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117689476A (zh) * 2024-01-26 2024-03-12 北京擘盒科技有限公司 一种区块链交易处理方法、系统、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117689476A (zh) * 2024-01-26 2024-03-12 北京擘盒科技有限公司 一种区块链交易处理方法、系统、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
JP4628468B2 (ja) 携帯端末機能への制限付きアクセスの供給
CN111010372A (zh) 区块链网络身份认证系统、数据处理方法及网关设备
CN108648084A (zh) 一种区块链网络的数据处理方法、装置、设备及存储介质
CN112087502B (zh) 处理请求的方法、装置、设备及存储介质
CN117311985A (zh) 一种基于区块链的数据处理方法、装置以及可读存储介质
JP2020534751A (ja) 電子識別および信用サービス(eidas)のための電子契約の証明のプラットフォームおよび方法
CN113541970B (zh) 分布式标识符的使用方法和分布式标识符使用系统
US20110320359A1 (en) secure communication method and device based on application layer for mobile financial service
CN113255014B (zh) 一种基于区块链的数据处理方法以及相关设备
WO2023020242A1 (zh) 基于区块链的数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品
CN101527717B (zh) 一种三元对等鉴别可信网络连接架构的实现方法
CN111553686A (zh) 数据处理方法、装置、计算机设备及存储介质
JP2020534749A (ja) 電子識別および信用サービス(eidas)のための電子通知の証明のプラットフォームおよび方法
CN113014556B (zh) 银企通讯系统、通讯方法以及电子终端
CN117032998B (zh) 一种基于区块链的数据处理方法、装置以及可读存储介质
CN117544631A (zh) 一种基于区块链的数据处理方法、装置以及可读存储介质
CN117557261A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN109429226B (zh) 一种临时用户凭证的生成方法、用户卡、终端及网络设备
CN115001701B (zh) 用于授权认证的方法及装置、存储介质及电子设备
CN117056084B (zh) 基于分层区块链网络的数据处理方法、装置、设备及介质
WO2024007855A1 (zh) 一种基于区块链的数据处理方法、设备以及可读存储介质
CN112862612B (zh) 一种跨链发送资源的方法和装置
CN116366254A (zh) 跨链信息生成方法、跨链信息验证方法及跨链信息验证系统
CN117411858A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN117294753A (zh) 一种基于区块链的数据处理方法、设备以及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication