CN117557261A - 基于区块链的数据处理方法、装置、设备及可读存储介质 - Google Patents
基于区块链的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117557261A CN117557261A CN202311451019.3A CN202311451019A CN117557261A CN 117557261 A CN117557261 A CN 117557261A CN 202311451019 A CN202311451019 A CN 202311451019A CN 117557261 A CN117557261 A CN 117557261A
- Authority
- CN
- China
- Prior art keywords
- sender
- transaction
- information
- service
- transfer
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000012546 transfer Methods 0.000 claims abstract description 291
- 238000013475 authorization Methods 0.000 claims abstract description 271
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000006870 function Effects 0.000 claims description 345
- 238000012795 verification Methods 0.000 claims description 71
- 238000013507 mapping Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 9
- 230000003993 interaction Effects 0.000 abstract description 9
- 239000003795 chemical substances by application Substances 0.000 description 150
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000003999 initiator Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- VLFZHMWZMNJMTK-UHFFFAOYSA-N CCC.CCC.CCC.CCC Chemical compound CCC.CCC.CCC.CCC VLFZHMWZMNJMTK-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本申请公开了一种基于区块链的数据处理方法、装置、设备及可读存储介质,该方法包括:业务设备获取发送方发送的交易信息和发送方签名信息;获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;基于业务设备的私钥,对转移交易数据进行签名,将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数。采用本申请,可以降低与区块链的交互成本,降低区块链的计算资源成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
背景技术
目前业务资源的授权转移机制中,需要用户通过外部账户进行初始化,将一定数值的业务资源授权合约账户,然后调用合约账户来发起转账,由合约账户代替用户进行转移操作,这使得用户需要与合约进行交互时,必须发起两笔交易,一笔是通过外部账户将业务资源授权给某个合约地址,一笔调用该合约以触发转移操作,这使得用户与区块链进行交互时需要提供两笔交易的消耗资源,增加了用户与区块链的交互成本,而且两笔交易也增加了区块链的计算资源成本。
发明内容
本申请实施例提供了一种基于区块链的数据处理方法、装置、设备及可读存储介质,可以降低用户与区块链的交互成本,且可以降低区块链的计算资源成本。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;
获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;
基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;
将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。
其中,交易信息还包括目标交易时间和目标签名映射值;目标交易时间用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;目标签名映射值用于确定发送方签名信息的被使用次数,目标签名映射值用于指示区块链节点在检测到被使用次数小于次数阈值时对发送方签名信息进行验签。
其中,还包括:
对转移交易数据和可信代理合约对应的合约地址进行哈希运算,得到验证哈希值;
对交易信息和类型哈希值进行字符串编码,得到交易数据标识,将交易数据标识添加至转移交易数据中;交易数据标识用于指示区块链节点,在检测到交易数据标识与待验证数据标识相同时,为可信代理合约授权转移交易数据中的交易信息;待验证数据标识是由可信代理合约基于转移交易数据所生成的。
本申请实施例一方面提供了另一种基于区块链的数据处理方法,包括:
区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;
对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;
在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;
通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。
其中,对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,包括:
基于业务方的公钥,对业务方签名信息进行解密操作,得到第一待验证哈希值;
生成转移交易数据的第一目标哈希值;
若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,调用授权函数标识对应的授权函数;
若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,返回错误提示信息到业务设备。
其中,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,包括:
基于发送方的公钥,对发送方签名信息进行解密操作,得到第二待验证哈希值;
生成交易信息的第二目标哈希值;
若第二待验证哈希值与第二目标哈希值相同,则确定验签成功,通过授权函数获取转移交易数据中的交易信息,为可信代理合约授权交易信息中的业务数据和发送方地址;
若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败,则返回错误提示信息到发送方。
其中,还包括:
获取区块链中具有最高区块高度的区块对应的区块时间和交易信息中的目标交易时间;目标交易时间是由发送方所确定的,且用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;
若区块时间小于或者等于目标交易时间,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
若区块时间大于目标交易时间,则返回交易过期提示信息到业务设备和发送方。
其中,还包括:
获取可信代理合约中的授权函数相关联的签名映射表,获取交易信息中的目标签名映射值;签名映射表包括次数阈值,次数阈值用于记录发送方签名信息的被使用次数;
若目标签名映射值与次数阈值相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
若目标签名映射值与次数阈值不相同,则返回签名无效提示信息到业务设备和发送方。
其中,还包括:
从转移交易数据中获取交易数据标识,通过可信代理合约生成转移交易数据的待验证数据标识;交易数据标识是由业务设备基于可信代理合约对转移交易数据进行字符串编码得到的。
若交易数据标识与待验证数据标识相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
若交易数据标识与待验证数据标识不相同,则返回合约无效提示信息到业务设备和发送方。
其中,通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据,包括:
将已授权的业务数据、发送方地址和接收方地址确定为待上链交易;业务数据包括业务资源类型和业务资源数值;
将发送方签名和待上链交易进行打包,生成待上链区块;
将待上链区块发送至区块链网络中的共识网络;
若共识网络对待上链区块共识成功,则将待上链区块确定为已上链区块,基于已上链区块中的业务资源类型和业务资源数值,分别对已授权的发送方地址的账户状态和接收方地址的账户状态,进行资源状态更新。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
业务获取模块,用于业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;
交易生成模块,用于获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;
业务方签名模块,用于基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;
授权转移模块,用于将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。
其中,交易信息还包括目标交易时间和目标签名映射值;目标交易时间用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;目标签名映射值用于确定发送方签名信息的被使用次数,目标签名映射值用于指示区块链节点在检测到被使用次数小于次数阈值时对发送方签名信息进行验签。
其中,还包括:
标识生成模块,用于对转移交易数据和可信代理合约对应的合约地址进行哈希运算,得到验证哈希值;
标识生成模块,还用于对交易信息和类型哈希值进行字符串编码,得到交易数据标识,将交易数据标识添加至转移交易数据中;交易数据标识用于指示区块链节点,在检测到交易数据标识与待验证数据标识相同时,为可信代理合约授权转移交易数据中的交易信息;待验证数据标识是由可信代理合约基于转移交易数据所生成的。
本申请实施例一方面提供了另一种基于区块链的数据处理装置,包括:
节点接收模块,用于区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;
业务方验签模块,用于对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;
节点授权模块,用于在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;
节点转移模块,用于通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。
其中,业务方验签模块,包括:
第一哈希单元,用于基于业务方的公钥,对业务方签名信息进行解密操作,得到第一待验证哈希值;
第一哈希单元,还用于生成转移交易数据的第一目标哈希值;
第一验证单元,用于若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,调用授权函数标识对应的授权函数;
第一验证单元,还用于若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,返回错误提示信息到业务设备。
其中,节点授权模块,包括:
第二哈希单元,用于基于发送方的公钥,对发送方签名信息进行解密操作,得到第二待验证哈希值;
第二哈希单元,还用于生成交易信息的第二目标哈希值;
第二验证单元,用于若第二待验证哈希值与第二目标哈希值相同,则确定验签成功,通过授权函数获取转移交易数据中的交易信息,为可信代理合约授权交易信息中的业务数据和发送方地址;
第二验证单元,还用于若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败,则返回错误提示信息到发送方。
其中,还包括:
时间获取模块,用于获取区块链中具有最高区块高度的区块对应的区块时间和交易信息中的目标交易时间;目标交易时间是由发送方所确定的,且用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;
时间验证模块,用于若区块时间小于或者等于目标交易时间,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
时间验证模块,还用于若区块时间大于目标交易时间,则返回交易过期提示信息到业务设备和发送方。
其中,还包括:
次数获取模块,用于获取可信代理合约中的授权函数相关联的签名映射表,获取交易信息中的目标签名映射值;签名映射表包括次数阈值,次数阈值用于记录发送方签名信息的被使用次数;
次数验证模块,用于若目标签名映射值与次数阈值相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
次数验证模块,还用于若目标签名映射值与次数阈值不相同,则返回签名无效提示信息到业务设备和发送方。
其中,还包括:
标识获取模块,用于从转移交易数据中获取交易数据标识,通过可信代理合约生成转移交易数据的待验证数据标识;交易数据标识是由业务设备基于可信代理合约对转移交易数据进行字符串编码得到的。
标识验证模块,用于若交易数据标识与待验证数据标识相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
标识验证模块,还用于若交易数据标识与待验证数据标识不相同,则返回合约无效提示信息到业务设备和发送方。
其中,节点转移模块,包括:
共识处理单元,用于将已授权的业务数据、发送方地址和接收方地址确定为待上链交易;业务数据包括业务资源类型和业务资源数值;
共识处理单元,还用于将发送方签名和待上链交易进行打包,生成待上链区块;
共识处理单元,还用于将待上链区块发送至区块链网络中的共识网络;
资源更新单元,用于若共识网络对待上链区块共识成功,则将待上链区块确定为已上链区块,基于已上链区块中的业务资源类型和业务资源数值,分别对已授权的发送方地址的账户状态和接收方地址的账户状态,进行资源状态更新。
本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器以及网络接口;
处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例通过链下生成交易信息的发送方签名信息,通过可信代理合约中的授权函数标识、交易信息和发送方签名信息生成转移交易数据,由业务设备的私钥对转移交易数据进行签名,通过区块链节点,在对业务方签名信息验签成功时,区块链通过授权函数标识来调用授权函数,在区块链节点对业务方签名信息验签成功时,调用支持额外签名参数的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数,通过转移函数完成对交易信息中的业务数据的转移,可见只需要发起方发起一次交易请求,就可以实现授权和转移的功能,从而可以降低区块链的计算资源成本,并且由于是由业务设备与区块链节点进行交互,即是由业务设备来调用区块链节点中的智能合约,所以与区块链节点进行交互所产生的消耗资源可以由业务设备来提供,从而降低了发送方在与区块链进行交互时的使用成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络的结构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理场景示意图;
图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图一;
图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图二;
图5是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图一;
图6是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图二;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链是运行区块链技术的载体和组织方式。区块链技术(Blockchaintechnology,BT)也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式基础架构与计算方式。
为便于理解,以下将对区块链及其相关概念进行阐述:
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,在确定当前区块高度的区块上链成功后,需要确定下一区块高度对应的区块对应的主节点,才能完成针对下一区块高度的区块的共识操作。
为便于理解,业务设备可以是图1所示的业务设备100,发送方可以是图1所示的终端设备200,接收方可以是图1所示的终端设备300。
业务设备100、发送方对应的终端设备200以及接收方对应的终端设备300均可以安装有资源客户端,资源客户端可以用以实现资源管理业务功能,并基于该资源管理业务功能实现与去中心化应用客户端之间的通信连接。
资源客户端是一种用于负责管理、存储用户数字资源的工具,例如可基于资源客户端向其它账户转移数字资源,又如可基于资源客户端接收其它账户所转入的数字资源。该资源客户端可以是硬件设备也可以为软件程序。
可以理解的是,随着各类去中心化应用在区块链上广泛部署,用户在区块链上的活动增加,一般用户在使用去中心化应用时,可使用区块链密钥管理工具进行登录,该区块链密钥管理工具中的地址对应于区块链上的一个用户,去中心化应用能够通过一些接口从密钥管理工具获取到该用户地址。
具体的,终端设备200可以通过资源客户端向业务设备100发送交易信息和发送方签名信息。
其中,交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址。业务数据可以包括业务资源类型和业务资源数值,业务资源可以是区块链上的一种原生的数字资源,也可以是由可信代理合约创建,具有更多的功能和应用场景的数字资源。发送方签名信息可以是基于发送方的私钥,对交易信息进行签名得到的。
业务设备100可以获取终端设备200发送的交易信息和发送方签名信息,业务设备100可以获取可信代理合约中的授权函数标识。
其中,可信代理合约可以是一种在区块链上的一种智能合约,可以是运行在区块链上的自动化计算机程序,当中内含了程式码函式(function),用于执行在合约条款下预定义的操作,亦能与其他合约进行互动、储存资料及转移业务资源等功能。可信代理合约以代码的形式存储在区块链上,并且可以通过区块链上的区块链节点自动执行。授权函数标识可以是可信代理合约中用于调用授权函数(permit)的标识,授权函数可以是可信代理合约中支持额外的签名参数的方法,用于验证及执行合约内所订立的条件,进行可信交易。
业务设备100可以通过交易信息、发送方签名信息以及授权函数标识,生成转移交易数据。转移交易数据可以是通过可信代理合约进行的一笔可信交易。
业务设备100可以通过业务设备100对应的私钥,对转移交易数据进行签名,得到业务方签名信息。
业务设备100可以将转移交易数据和业务方签名信息发送至区块链节点,区块链节点可以是图1所示的任一区块链节点,例如可以是区块链节点10a。
区块链节点10a可以通过业务设备100对应的公钥,对业务方签名信息进行验签,在对业务方签名信息验签成功时,区块链节点10a可以调用授权函数标识对应的授权函数。授权函数可以通过发送方对应的公钥,对发送方签名信息进行验签,在授权函数对发送方签名信息验签成功时,区块链节点10a可以通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数。
其中,转移函数(transferFrom)可以用于从一个地址(即转移业务资源的发送方)向另一个地址(即转移业务资源的接收方)转移业务资源。
区块链节点10a可以通过转移函数在已授权的发送方地址和接收方(可以是终端设备300)地址之间转移已授权的业务数据。
本申请实施例通过链下生成交易信息的发送方签名信息,通过可信代理合约中的授权函数标识、交易信息和发送方签名信息生成转移交易数据,由业务设备的私钥对转移交易数据进行签名,通过区块链节点,在对业务方签名信息验签成功时,区块链通过授权函数标识来调用授权函数,在区块链节点对业务方签名信息验签成功时,调用支持额外签名参数的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数,通过转移函数完成对交易信息中的业务数据的转移,可见只需要发起方发起一次交易请求,就可以实现授权和转移的功能,从而可以降低区块链的计算资源成本,并且由于是由业务设备与区块链节点进行交互,即是由业务设备来调用区块链节点中的智能合约,所以与区块链节点进行交互所产生的消耗资源可以由业务设备来提供,从而降低了发送方在与区块链进行交互时的使用成本。
请参见图2,图2是本申请实施例提供的一种基于区块链的数据处理的场景示意图。
如图2所示,以发送方(终端设备200)通过业务设备100向接收方(终端设备300)转移10个ERC20数字资源为例。
其中,ERC全称是Ethereum Request for Comment,是一套基于区块链网络的业务资源发行协议,定义了一些技术标准和接口。ERC20数字资源可以是由可信代理合约创建,具有更多的功能和应用场景的数字资源。
终端设备200可以通过资源客户端业务设备100发送交易信息和发送方签名信息。
其中,交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址。业务数据可以包括业务资源类型和业务资源数值,业务资源可以是区块链上的一种原生的数字资源,也可以是由可信代理合约创建,具有更多的功能和应用场景的数字资源。发送方签名信息可以是基于发送方的私钥,对交易信息进行签名得到的。
业务设备100可以获取终端设备200发送的交易信息和发送方签名信息,业务设备100可以获取可信代理合约中的授权函数标识。
其中,可信代理合约可以是一种在区块链上的一种智能合约,可以是运行在区块链上的自动化计算机程序,当中内含了程式码函式,用于执行在合约条款下预定义的操作,亦能与其他合约进行互动、储存资料及转移业务资源等功能。可信代理合约以代码的形式存储在区块链上,并且可以通过区块链上的区块链节点自动执行。
授权函数标识可以是可信代理合约中用于调用授权函数(permit)的标识,授权函数可以是可信代理合约中支持额外的签名参数的permit方法,用于验证及执行合约内所订立的条件,进行可信交易。
业务设备100可以通过交易信息、发送方签名信息以及授权函数标识,生成转移交易数据。转移交易数据可以是通过可信代理合约进行的一笔可信交易。
业务设备100可以通过业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息。
业务设备100可以将转移交易数据和业务方签名信息发送至区块链节点,例如可以是区块链节点10a。
区块链节点10a可以通过业务设备对应的公钥,对业务方签名信息进行验签,在对业务方签名信息验签成功时,区块链节点10a可以调用授权函数标识对应的授权函数。授权函数可以通过发送方对应的公钥,对发送方签名信息进行验签,在授权函数对发送方签名信息验签成功时,区块链节点10a可以通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数。
其中,转移函数(transferFrom)可以用于从一个地址(即转移业务资源的发送方,终端设备200)向另一个地址(即转移业务资源的接收方,终端设备300)转移业务资源。
例如,区块链节点10a可以通过转移函数从已授权的发送方地址向接收方地址转移已授权的10个ERC20数字资源。
本申请实施例通过链下生成交易信息的发送方签名信息,通过可信代理合约中的授权函数标识、交易信息和发送方签名信息生成转移交易数据,由业务设备的私钥对转移交易数据进行签名,通过区块链节点,在对业务方签名信息验签成功时,区块链通过授权函数标识来调用授权函数,在区块链节点对业务方签名信息验签成功时,调用支持额外签名参数的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数,通过转移函数完成对交易信息中的业务数据的转移,可见只需要发起方发起一次交易请求,就可以实现授权和转移的功能,从而可以降低区块链的计算资源成本,并且由于是由业务设备与区块链节点进行交互,即是由业务设备来调用区块链节点中的智能合约,所以与区块链节点进行交互所产生的消耗资源可以由业务设备来提供,从而降低了发送方在与区块链进行交互时的使用成本。
另一方面,由于消耗资源一般消耗的是原生的数字资源,在数字资源存在不同类型,发送方只持有待转移的数字资源时,例如发送方通过业务设备向接收方转移10个ERC20数字资源,由于无需发送方支付消耗资源,发送方只需要拥有ERC20数字资源即可完成链上交互,不用支付原生的数字资源的消耗资源,降低了发送方链上交互的门槛,优化了操作体验。
请参见图3,图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图一,该基于区块链的数据处理方法可以由业务设备执行,业务设备可以是如图1所示业务设备100。以下将以本数据处理方法由业务设备执行为例进行说明。其中,该基于区块链的数据处理方法至少可以包括以下步骤S101-步骤S104:
步骤S101,业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;
具体的,业务设备可以获取发送方发送的交易信息和发送方签名信息。
其中,交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址。业务数据可以包括业务资源类型和业务资源数值,业务资源可以是区块链上的一种原生的数字资源,也可以是由可信代理合约创建,具有更多的功能和应用场景的数字资源。发送方签名信息可以是基于发送方的私钥,对交易信息进行签名得到的。
发送方签名信息可以是基于ecrecover签名方法得到的。
发送方可以在不连接区块链网络的情况下,通过发送方的私钥对交易信息进行哈希和签名,得到交易信息所对应的消息哈希和发送方签名信息(r,s,v)。其中,r和s值都是椭圆曲线ECDSA上的点的坐标,v为恢复标识符,v用于确定发送方的公钥在椭圆曲线上的坐标,可以防止签名层面的重放攻击。
发送方签名信息可以是有效的secp256k1签名,secp256k1签名是基于椭圆曲线数字签名算法(ECDSA,Elliptic Curve Digital Signature Algorithm)得到的。
步骤S102,获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;
具体的,业务设备可以获取可信代理合约中的授权函数标识。
其中,可信代理合约可以是一种在区块链上的一种智能合约,可以是运行在区块链上的自动化计算机程序,当中内含了程式码函式,用于执行在合约条款下预定义的操作,亦能与其他合约进行互动、储存资料及转移业务资源等功能。可信代理合约以代码的形式存储在区块链上,并且可以通过区块链上的区块链节点自动执行。
授权函数标识可以是可信代理合约中用于调用授权函数的标识,授权函数可以是可信代理合约中支持额外的签名参数的方法,用于验证及执行合约内所订立的条件,进行可信交易。
授权函数中的交易信息可以包括如下参数:owner,spender,value,nonce,deadline,v,r,s。
其中,owner表示发送方地址,spender表示业务方地址,value表示业务数据。deadline表示目标交易时间,v,r,s表示发送方基于ecrecover签名方法得到的发送方签名信息。
发送方可以通过发送方的私钥和交易信息,计算出r和s的值,其中,r和s都是椭圆曲线ECDSA上的点的坐标,v为恢复标识符,v用于确定发送方的公钥在椭圆曲线上的坐标,可以防止签名层面的重放攻击。
nonce可以是目标签名映射值,目标签名映射值用于确定发送方签名信息(r,s,v)的被使用次数。目标签名映射值可以用于指示区块链节点,在检测到被使用次数小于次数阈值时对发送方签名信息进行验签。
nonces应用可以记录发送方已经使用的签名数量。当发送方创建签名时,可以包含一个nonce值,nonces应用可以通过可信代理合约维护的一个map映射(签名映射表),签名映射表可以记录每个地址所对应的nonce值。
区块链节点通过授权函数标识调用授权函数时,nonce必须匹配发送方的被使用次数,以确保发送方每次生成的发送方签名信息仅使用一次。nonces[owner]则可以表示从签名映射表中取出owner的nonce值(也可以称之为次数阈值)。判断nonces[owner]是否等于交易信息中的nonce值。区块链节点通过授权函数标识调用授权函数后,区块链节点可以将授权函数中approval变量(额度批准变量)中approval[owner][spender]设置为value,即将owner给spender的业务资源的额度设置为value,并且将签名映射表中的nonce值是可以递增1,也就是每个发送方签名信息只能调用授权函数一次,用于防止一个发送方签名信息被使用多次。
deadline可以是目标交易时间,目标交易时间用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限。
区块链节点通过授权函数标识调用授权函数时,deadlinee必须匹配区块链中,具有最高区块高度的区块对应的区块时间,从而让业务数据在发送方所设置的特定时间点之间有效。
区块链节点可以通过交易信息、发送方签名信息以及授权函数标识,生成转移交易数据。转移交易数据可以是通过可信代理合约进行的一笔可信交易。
可选的,业务设备生成的转移交易数据可以包括交易数据标识,生成交易数据标识的过程可以是:对转移交易数据和可信代理合约对应的合约地址进行哈希运算,得到验证哈希值;
对交易信息和类型哈希值进行字符串编码,得到交易数据标识,将交易数据标识添加至转移交易数据中;交易数据标识用于指示区块链节点,在检测到交易数据标识与待验证数据标识相同时,为可信代理合约授权转移交易数据中的交易信息;待验证数据标识是由可信代理合约基于转移交易数据所生成的。
具体的,业务设备可以调用可信代理合约中的编码方法(DOMAIN_SEPARATOR),DOMAIN_SEPARATOR中的参数可以包括结构体类型哈希(typehash,也可以称之为验证哈希值)和结构体具体实现(message,可以包括name、version、chainID和address(this))。
其中,name表示具有可读性的可信代理合约的名称,version表示当前交互的可信代理合约的版本号,chainID表示业务资源所在的区块链的ID,address(this)表示转移交易数据的合约地址。
验证哈希值可以是对转移交易数据中name、version、chainID和verifyingContract(可以是正在校验签名的合约地址,可以保证发送方签名信息仅被单一合约使用,可以选填)所对应的字符串进行哈希运算得到的。
哈希运算可以是通过keccak256哈希函数实现的,可以将任意长度的消息转换为一个256位固定长度的值。
区块链节点可以将typehash和message拼接在一起进行字符串编码,得到交易数据标识。字符串编码的方式可以是abi.encodePacked或者abi.encode,可以将参数中的字段以某种组织方式编码为一串二进制数组。
交易数据标识可以用于指示区块链节点,在检测到交易数据标识与待验证数据标识相同时,对可信代理合约授权转移交易数据中的交易信息,待验证数据是转移交易数据通过可信代理合约生成的。
交易数据标识可以是EIP-712标准的消息,EIP-712是一种高级安全的交易签名方法。使用该标准不仅可以签署交易并且可以验证签名,而且可以将交易数据标识与发送方签名信息以可见内容的方式一起传递到可信代理合约中,并且可以通过交易数据标识验证是否在转移交易数据中调用的交易信息。
步骤S103,基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;
具体的,业务设备可以通过哈希函数计算得到业务设备对应的业务方地址以及转移交易数据的哈希摘要,通过业务设备的私钥,对上述哈希摘要进行加密签名,得到业务方地址以及转移交易数据对应的业务方签名信息。
其中,哈希函数计算是指通过哈希函数将输入数值映射为固定长度的消息摘要的单向运算,哈希函数可以将任意长度的输入数值映射到固定长度的输出,例如可以是MD5(Message Digest Algorithm 5,消息摘要算法)、SHA-256(Secure Hash Algorithm 256,256位散列算法)等。
可选的,业务设备可以在对转移交易数据进行签名之前,可以先验证发送方的发送方签名信息。
业务设备可以调用ecrecover函数,通过交易信息所对应的消息哈希和发送方签名信息(r,s,v)恢复出一个公钥地址。业务设备可以比较恢复出来的地址和发送方地址是否相等,若相等,则说明发送方签名有效且来自发送方地址;若不相等,则说明发送方签名无效或来自其他地址。
步骤S104,将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。
具体的,业务设备可以将转移交易数据和业务方签名信息发送至区块链节点。
区块链节点可以通过业务设备对应的公钥,对业务方签名信息进行验签,在对业务方签名信息验签成功时,区块链节点可以调用授权函数标识对应的授权函数。授权函数可以通过发送方对应的公钥,对发送方签名信息进行验签,在授权函数对发送方签名信息验签成功时,区块链节点可以通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数。
其中,转移函数可以是可信代理合约中的transferFrom函数,可以用于从一个地址(即转移业务资源的发送方)向另一个地址(即转移业务资源的接收方)转移业务资源。transferFrom函数可以需要经过发送方授权再进行转移,因此本申请实施例交易信息中的接收方地址可以在发送方授权时再进行确定。
由于可以不用确定接收方地址,transferFrom函数可以进行批量操作,从而提高资源转移的安全性,并且支持统一的资源转移管理,提高了资源转移的便捷性。
区块链节点可以通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。例如,若该转移交易数据为数字资源的转移,则将发送方地址交易前的链上的数字资源与待交易的数字资源之差,作为发送方地址更新后的资源数据;将接收方地址交易前的链上的数字资源与待交易数字资源之和,作为接收方地址更新后的资源数据。
可以理解,由于消耗资源一般消耗的是原生的数字资源,在数字资源存在不同类型,发送方只持有待转移的数字资源时,例如发送方通过业务设备向接收方转移10个ERC20数字资源,由于无需发送方支付消耗资源,发送方只需要拥有ERC20数字资源即可完成链上交互,不用支付原生的数字资源的消耗资源,降低了发送方链上交互的门槛,优化了操作体验。
本申请实施例通过业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。由此可见,本申请实施例通过链下生成交易信息的发送方签名信息,通过可信代理合约中的授权函数标识、交易信息和发送方签名信息生成转移交易数据,由业务设备的私钥对转移交易数据进行签名,通过区块链节点,在对业务方签名信息验签成功时,区块链通过授权函数标识来调用授权函数,在区块链节点对业务方签名信息验签成功时,调用支持额外签名参数的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数,通过转移函数完成对交易信息中的业务数据的转移,可见只需要发起方发起一次交易请求,就可以实现授权和转移的功能,从而可以降低区块链的计算资源成本,并且由于是由业务设备与区块链节点进行交互,即是由业务设备来调用区块链节点中的智能合约,所以与区块链节点进行交互所产生的消耗资源可以由业务设备来提供,从而降低了发送方在与区块链进行交互时的使用成本。
请参见图4,图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图二,该基于区块链的数据处理方法可以由资源客户端执行,资源客户端可以是如图1所示的终端设备200。以下将以本数据处理方法由资源客户端执行为例进行说明。其中,该基于区块链的数据处理方法至少可以包括以下步骤S201-步骤S207:
步骤S201,区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;
具体的,区块链节点可以接收业务设备发送的转移交易数据和业务方签名信息。
其中,交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址。业务数据可以包括业务资源类型和业务资源数值,业务资源可以是区块链上的一种原生的数字资源,也可以是由可信代理合约创建,具有更多的功能和应用场景的数字资源。发送方签名信息可以是基于发送方的私钥,对交易信息进行签名得到的。
可信代理合约可以是一种在区块链上的一种智能合约,可以是运行在区块链上的自动化计算机程序,当中内含了程式码函式,用于执行在合约条款下预定义的操作,亦能与其他合约进行互动、储存资料及转移业务资源等功能。可信代理合约以代码的形式存储在区块链上,并且可以通过区块链上的区块链节点自动执行。
步骤S202,对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;
具体的,区块链节点可以基于业务设备的公钥对业务方签名信息进行解密操作,得到第一待验证哈希值;区块链节点再获取上述业务设备所对应的业务方地址以及转移交易数据,通过哈希函数对业务方地址以及转移交易数据进行哈希摘要计算,得到第一目标哈希值。
区块链节点可以比较第一待验证哈希值与第一目标哈希值,若第一待验证哈希值与第一目标哈希值相同,则确定验签成功;若第一待验证哈希值与第一目标哈希值不相同,则确定为验签失败,向业务设备返回错误提示信息。
若验签成功,区块链节点可以通过授权函数标识调用授权函数。
其中,授权函数标识可以是可信代理合约中用于调用授权函数的标识,授权函数可以是可信代理合约中支持额外的签名参数的方法,用于验证及执行合约内所订立的条件,进行可信交易。
步骤S203,获取区块链中具有最高区块高度的区块对应的区块时间和交易信息中的目标交易时间;目标交易时间是由发送方所确定的,且用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;若区块时间小于或者等于目标交易时间,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;若区块时间大于目标交易时间,则返回交易过期提示信息到业务设备和发送方。
具体的,区块链节点可以获取区块链中具有最高区块高度的区块对应的区块时间,以及交易信息中的目标交易时间。
其中,目标交易时间可以是交易信息中的deadline参数,目标交易时间用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限。
区块链节点通过授权函数标识调用授权函数时,deadline必须匹配区块链中,具有最高区块高度的区块对应的区块时间,从而让业务数据在发送方所设置的特定时间点之间有效。
区块链节点可以比较最高区块高度的区块对应的区块时间和交易信息中的目标交易时间。
若区块时间小于或者等于目标交易时间,则确定目标交易时间验证通过;若区块时间大于目标交易时间,则返回交易过期提示信息到业务设备和发送方。
若目标交易时间验证通过,则区块链节点可以通过可信代理合约中的授权函数相关联的签名映射表,对交易信息中的目标签名映射值进行验证。
步骤S204,获取可信代理合约中的授权函数相关联的签名映射表,获取交易信息中的目标签名映射值;签名映射表包括次数阈值,次数阈值用于记录发送方签名信息的被使用次数;若目标签名映射值与次数阈值相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;若目标签名映射值与次数阈值不相同,则返回签名无效提示信息到业务设备和发送方。
具体的,区块链节点可以获取可信代理合约中的授权函数相关联的签名映射表(map),获取交易信息中的目标签名映射值。
其中,nonces应用可以记录发送方已经使用的签名数量。当发送方创建签名时,可以包含一个nonce值,nonces应用可以通过可信代理合约维护的一个map映射(签名映射表),签名映射表可以记录每个地址所对应的nonce值。
区块链节点通过授权函数标识调用授权函数时,nonce必须匹配发送方的被使用次数,以确保发送方每次生成的发送方签名信息仅使用一次。nonces[owner]则可以表示从签名映射表中取出owner的nonce值(也可以称之为次数阈值)。判断nonces[owner]是否等于交易信息中的nonce值。区块链节点通过授权函数标识调用授权函数后,区块链节点可以将授权函数中approval变量(额度批准变量)中approval[owner][spender]设置为value,即将owner给spender的业务资源的额度设置为value,并且将签名映射表中的nonce值是可以递增1,也就是每个发送方签名信息只能调用授权函数一次,用于防止一个发送方签名信息被使用多次。
若目标签名映射值与次数阈值相同,则确定目标签名映射值验证通过;若目标签名映射值与次数阈值不相同,则返回签名无效提示信息到业务设备和发送方。
若目标签名映射值验证通过,则区块链节点可以通过交易数据标识,对待验证数据标识进行验证。
步骤S205,从转移交易数据中获取交易数据标识,通过可信代理合约生成转移交易数据的待验证数据标识;交易数据标识是由业务设备基于可信代理合约对转移交易数据进行字符串编码得到的。若交易数据标识与待验证数据标识相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;若交易数据标识与待验证数据标识不相同,则返回合约无效提示信息到业务设备和发送方。
具体的,区块链节点可以从转移交易数据中获取交易数据标识,交易数据标识可以将转移交易数据中的typehash和message拼接在一起进行字符串编码,得到的。关于交易数据标识的具体内容可以参见上述图3实施例对应步骤S102的描述,在此不再赘述。
区块链节点可以通过可信代理合约生成转移交易数据的待验证数据标识,区块链节点可以通过可信代理合约从转移交易数据中获取name、version、chainID和address(this)等各项待验证参数。
其中,name表示具有可读性的可信代理合约的名称,version表示当前交互的可信代理合约的版本号,chainID表示业务资源所在的区块链的ID,address(this)表示转移交易数据的合约地址。
通过可信代理合约确定转移交易数据的待验证结构体哈希,通过keccak256哈希函数对待验证结构体哈希进行哈希运算,得到第一拼接字符串。通过keccak256哈希函数对上述待验证参数进行哈希运算,得到第二拼接字符串。
区块链节点可以将第一拼接字符串和第二拼接字符串拼接在一起进行字符串编码,得到待验证数据标识。字符串编码的方式可以是abi.encodePacked或者abi.encode,可以将参数中的字段以某种组织方式编码为一串二进制数组。
区块链节点可以比较交易数据标识与待验证数据标识。
若交易数据标识与待验证数据标识相同,则确定交易数据标识验证通过;若交易数据标识与待验证数据标识不相同,则返回合约无效提示信息到业务设备和发送方。
若交易数据标识验证通过,则区块链节点可以通过授权函数对发送方签名信息进行验签。
可以理解,生成交易数据标识的各项参数的类型以及参数的值都是在部署转移交易数据时指定的,因此转移交易数据所生成的交易数据标识都是唯一的。在进行验证时,需要使用正确的交易数据标识才能保证转移交易数据的有效性,因此交易数据标识的唯一性也就保证了转移交易数据的唯一性。
步骤S206,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;
具体的,区块链节点可以通过授权函数对发送方签名信息进行验签。
区块链节点可以先从发送方签名信息恢复发送方对应的公钥。区块链节点可以调用ecrecover函数,通过交易信息所对应的消息哈希和发送方签名信息(r,s,v)恢复出发送方的一个公钥地址。
区块链节点可以计算交易信息的哈希值m,确定点R(x,y)的坐标。
其中,当v=0时,x=r;当v=1时,x=r+n。其中,n为ECDSA椭圆曲线的阶数。
区块链节点可以计算u1,u1=h*s^-1mod n,及以u2=s*r^-1mod n。
其中,mod表示取模,h是基于哈希值m通过truncateHash方法调整后的哈希值。
区块链节点可以通过u1与u2恢复发送方对应的公钥,计算Q=u1*G+u2*R在ECDSA椭圆曲线的点运算,其中,G为ECDSA椭圆曲线的基点,Q即发送方的公钥。
可以理解,本申请实施例使用ecrecover签名方法,可以在不泄露私钥的情况下验证签名者的身份,提高了签名验证的安全性。此外,ecrecover是一个预编译合约,可以降低转移交易数据的消耗资源消耗。
区块链节点可以基于发送方对应的公钥对发送方签名信息进行解密操作,得到第二待验证哈希值;区块链节点再获取上述发送方所对应的发送方地址以及交易信息,通过哈希函数对发送方地址以及交易信息进行哈希摘要计算,得到第二目标哈希值。
区块链节点可以比较第二待验证哈希值与第二目标哈希值,若第二待验证哈希值与第二目标哈希值相同,则确定验签成功;若第一待验证哈希值与第二目标哈希值不相同,则确定为验签失败,向发送方返回错误提示信息。
若验签成功,区块链节点可以通过授权函数获取转移交易数据中的交易信息,为可信代理合约授权交易信息中的业务数据和发送方地址。
步骤S207,将已授权的业务数据、发送方地址和接收方地址确定为待上链交易;业务数据包括业务资源类型和业务资源数值;将发送方签名和待上链交易进行打包,生成待上链区块;将待上链区块发送至区块链网络中的共识网络;若共识网络对待上链区块共识成功,则将待上链区块确定为已上链区块,基于已上链区块中的业务资源类型和业务资源数值,分别对已授权的发送方地址的账户状态和接收方地址的账户状态,进行资源状态更新。
具体的,区块链节点可以通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。
转移函数可以是transferFrom函数,可以用于从一个地址(即转移业务资源的发送方)向另一个地址(即转移业务资源的接收方)转移业务资源,transferFrom函数可以需要经过发送方授权再进行转移,因此本申请实施例交易信息中的接收方地址可以在发送方授权时再进行确定。
由于可以不用确定接收方地址,transferFrom函数可以进行批量操作,从而提高资源转移的安全性,并且支持统一的资源转移管理,提高了资源转移的便捷性。
区块链节点可以将已授权的业务数据、发送方地址和接收方地址确定为待上链交易。其中,业务数据包括业务资源类型和业务资源数值。
区块链节点可以将发送方签名和待上链交易进行打包,生成待上链区块,将待上链区块发送至区块链网络中的共识网络。
若共识网络对待上链区块共识成功,则将待上链区块确定为已上链区块,区块链节点可以基于已上链区块中的业务资源类型和业务资源数值,分别对已授权的发送方地址的账户状态和接收方地址的账户状态,进行资源状态更新。
区块链节点可以通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。例如,若该转移交易数据为数字资源的转移,则将发送方地址交易前的链上的数字资源与待交易的数字资源之差,作为发送方地址更新后的资源数据;将接收方地址交易前的链上的数字资源与待交易数字资源之和,作为接收方地址更新后的资源数据。
可以理解,由于消耗资源一般消耗的是原生的数字资源,在数字资源存在不同类型,发送方只持有待转移的数字资源时,例如发送方通过业务设备向接收方转移10个ERC20数字资源,由于无需发送方支付消耗资源,发送方只需要拥有ERC20数字资源即可完成链上交互,不用支付原生的数字资源的消耗资源,降低了发送方链上交互的门槛,优化了操作体验。
本申请实施例通过区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。由此可见,本申请实施例通过链下生成交易信息的发送方签名信息,通过可信代理合约中的授权函数标识、交易信息和发送方签名信息生成转移交易数据,由业务设备的私钥对转移交易数据进行签名,通过区块链节点,在对业务方签名信息验签成功时,区块链通过授权函数标识来调用授权函数,在区块链节点对业务方签名信息验签成功时,调用支持额外签名参数的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数,通过转移函数完成对交易信息中的业务数据的转移,可见只需要发起方发起一次交易请求,就可以实现授权和转移的功能,从而可以降低区块链的计算资源成本,并且由于是由业务设备与区块链节点进行交互,即是由业务设备来调用区块链节点中的智能合约,所以与区块链节点进行交互所产生的消耗资源可以由业务设备来提供,从而降低了发送方在与区块链进行交互时的使用成本。
请参见图5,图5是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图一。如图5所示,该数据处理装置1包括业务获取模块500、交易生成模块510、业务方签名模块520、授权转移模块530和标识生成模块540。
业务获取模块500,用于业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;业务获取模块500的具体功能可以参见上述图3对应实施例的步骤S101的具体描述,在此不再赘述。
交易生成模块510,用于获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;交易生成模块510的具体功能可以参见上述图3对应实施例的步骤S102的具体描述,在此不再赘述。
业务方签名模块520,用于基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;业务方签名模块520的具体功能可以参见上述图3对应实施例的步骤S103的具体描述,在此不再赘述。
授权转移模块530,用于将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。授权转移模块530的具体功能可以参见上述图3对应实施例的步骤S104的具体描述,在此不再赘述。
其中,交易信息还包括目标交易时间和目标签名映射值;目标交易时间用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;目标签名映射值用于确定发送方签名信息的被使用次数,目标签名映射值用于指示区块链节点在检测到被使用次数小于次数阈值时对发送方签名信息进行验签。
其中,还包括:
标识生成模块540,用于对转移交易数据和可信代理合约对应的合约地址进行哈希运算,得到验证哈希值;
标识生成模块540,还用于对交易信息和类型哈希值进行字符串编码,得到交易数据标识,将交易数据标识添加至转移交易数据中;交易数据标识用于指示区块链节点,在检测到交易数据标识与待验证数据标识相同时,为可信代理合约授权转移交易数据中的交易信息;待验证数据标识是由可信代理合约基于转移交易数据所生成的。
标识生成模块540的具体功能可以参见上述图3对应实施例的步骤S102的具体描述,在此不再赘述。
请参见图6,图6是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图二。如图6所示,该数据处理装置2包括节点接收模块600、业务方验签模块610、节点授权模块620、时间获取模块630、时间验证模块640、次数获取模块650、次数验证模块660、标识获取模块670、标识验证模块680和节点转移模块690。其中。业务方验签模块610包括第一哈希单元611和第一验证单元612,节点授权模块620包括第二哈希单元621和第二验证单元622,节点转移模块690包括共识处理单元691和资源更新单元692。
节点接收模块600,用于区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;节点接收模块600的具体功能可以参见上述图4对应实施例的步骤S201的具体描述,在此不再赘述。
业务方验签模块610,用于对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;业务方验签模块610的具体功能可以参见上述图4对应实施例的步骤S202的具体描述,在此不再赘述。
其中。业务方验签模块610包括第一哈希单元611和第一验证单元612。
第一哈希单元611,用于基于业务方的公钥,对业务方签名信息进行解密操作,得到第一待验证哈希值;
第一哈希单元611,还用于生成转移交易数据的第一目标哈希值;
第一验证单元612,用于若第一待验证哈希值与第一目标哈希值相同,则确定验签成功,调用授权函数标识对应的授权函数;
第一验证单元612,还用于若第一待验证哈希值与第一目标哈希值不相同,则确定验签失败,返回错误提示信息到业务设备。
节点授权模块620,用于在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;节点授权模块620的具体功能可以参见上述图4对应实施例的步骤S206的具体描述,在此不再赘述。
其中,节点授权模块620包括第二哈希单元621和第二验证单元622。
第二哈希单元621,用于基于发送方的公钥,对发送方签名信息进行解密操作,得到第二待验证哈希值;
第二哈希单元621,还用于生成交易信息的第二目标哈希值;
第二验证单元622,用于若第二待验证哈希值与第二目标哈希值相同,则确定验签成功,通过授权函数获取转移交易数据中的交易信息,为可信代理合约授权交易信息中的业务数据和发送方地址;
第二验证单元622,还用于若第二待验证哈希值与第二目标哈希值不相同,则确定验签失败,则返回错误提示信息到发送方。
时间获取模块630,用于获取区块链中具有最高区块高度的区块对应的区块时间和交易信息中的目标交易时间;目标交易时间是由发送方所确定的,且用于指示可信代理合约针对业务数据的授权有效时间,转移函数在授权有效时间内具有转移业务数据的权限;
时间验证模块640,用于若区块时间小于或者等于目标交易时间,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
时间获取模块630和时间验证模块640的具体功能可以参见上述图4对应实施例的步骤S203的具体描述,在此不再赘述。
时间验证模块,还用于若区块时间大于目标交易时间,则返回交易过期提示信息到业务设备和发送方。
次数获取模块650,用于获取可信代理合约中的授权函数相关联的签名映射表,获取交易信息中的目标签名映射值;签名映射表包括次数阈值,次数阈值用于记录发送方签名信息的被使用次数;
次数验证模块660,用于若目标签名映射值与次数阈值相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
次数验证模块660,还用于若目标签名映射值与次数阈值不相同,则返回签名无效提示信息到业务设备和发送方。
次数获取模块650和次数验证模块660的具体功能可以参见上述图4对应实施例的步骤S204的具体描述,在此不再赘述。
标识获取模块670,用于从转移交易数据中获取交易数据标识,通过可信代理合约生成转移交易数据的待验证数据标识;交易数据标识是由业务设备基于可信代理合约对转移交易数据进行字符串编码得到的。
标识验证模块680,用于若交易数据标识与待验证数据标识相同,则执行通过授权函数为可信代理合约授权转移交易数据中的交易信息的步骤;
标识验证模块680,还用于若交易数据标识与待验证数据标识不相同,则返回合约无效提示信息到业务设备和发送方。
标识获取模块670和标识验证模块680的具体功能可以参见上述图4对应实施例的步骤S205的具体描述,在此不再赘述。
节点转移模块690,用于通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。节点转移模块690的具体功能可以参见上述图4对应实施例的步骤S207的具体描述,在此不再赘述。
其中,节点转移模块690包括共识处理单元691和资源更新单元692。
共识处理单元691,用于将已授权的业务数据、发送方地址和接收方地址确定为待上链交易;业务数据包括业务资源类型和业务资源数值;
共识处理单元691,还用于将发送方签名和待上链交易进行打包,生成待上链区块;
共识处理单元691,还用于将待上链区块发送至区块链网络中的共识网络;
资源更新单元692,用于若共识网络对待上链区块共识成功,则将待上链区块确定为已上链区块,基于已上链区块中的业务资源类型和业务资源数值,分别对已授权的发送方地址的账户状态和接收方地址的账户状态,进行资源状态更新。
请参见图7,图7是本申请实施例提供的一种计算机设备的结构示意图。如图7所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图7所示的计算机设备1000中,网络接口1004可提供网络通讯网元;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序。
当计算机设备1000为业务设备时以实现:
业务设备获取发送方发送的交易信息和发送方签名信息;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;
获取可信代理合约中的授权函数标识,根据交易信息、发送方签名信息以及授权函数标识,生成转移交易数据;
基于业务设备对应的私钥,对转移交易数据进行签名,得到业务方签名信息;
将转移交易数据和业务方签名信息发送至区块链节点,以使区块链节点在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数,在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;转移函数用于基于已授权的发送方地址和接收方地址执行已授权的业务数据。
当计算机设备1000为区块链节点时以实现:
区块链节点接收业务设备发送的转移交易数据和业务方签名信息;转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;交易信息包括业务数据、发送方对应的发送方地址、业务设备对应的业务方地址以及接收方对应的接收方地址;发送方签名信息是基于发送方的私钥,对交易信息进行签名得到的;业务方签名信息是基于业务方的私钥,对转移交易数据进行签名得到的;
对业务方签名信息进行验签,在对业务方签名信息验签成功时,调用授权函数标识对应的授权函数;
在授权函数对发送方签名信息验签成功时,通过授权函数为可信代理合约授权转移交易数据中的交易信息,通过授权函数调用可信代理合约中的转移函数;
通过转移函数在已授权的发送方地址和接收方地址之间转移已授权的业务数据。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3和图4任一个所对应实施例中对该数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有计算机程序,当上述处理器执行上述计算机程序时,能够执行前文图3和图4任一个所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经显示或者将要显示的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行前文图3和图4任一个所对应实施例提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照网元一般性地描述了各示例的组成及步骤。这些网元究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的网元,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种基于区块链的数据处理方法,其特征在于,包括:
业务设备获取发送方发送的交易信息和发送方签名信息;所述发送方签名信息是基于所述发送方的私钥,对所述交易信息进行签名得到的;所述交易信息包括业务数据、发送方对应的发送方地址、所述业务设备对应的业务方地址以及接收方对应的接收方地址;
获取可信代理合约中的授权函数标识,根据所述交易信息、所述发送方签名信息以及所述授权函数标识,生成转移交易数据;
基于所述业务设备对应的私钥,对所述转移交易数据进行签名,得到业务方签名信息;
将所述转移交易数据和所述业务方签名信息发送至区块链节点,以使所述区块链节点在对所述业务方签名信息验签成功时,调用所述授权函数标识对应的授权函数,在所述授权函数对所述发送方签名信息验签成功时,通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息,通过所述授权函数调用所述可信代理合约中的转移函数;所述转移函数用于基于已授权的所述发送方地址和所述接收方地址执行已授权的所述业务数据。
2.根据权利要求1所述的方法,其特征在于,所述交易信息还包括目标交易时间和目标签名映射值;所述目标交易时间用于指示所述可信代理合约针对所述业务数据的授权有效时间,所述转移函数在所述授权有效时间内具有转移所述业务数据的权限;所述目标签名映射值用于确定所述发送方签名信息的被使用次数,所述目标签名映射值用于指示所述区块链节点在检测到所述被使用次数小于次数阈值时对所述发送方签名信息进行验签。
3.根据权利要求1所述的方法,其特征在于,还包括:
对所述转移交易数据和所述可信代理合约对应的合约地址进行哈希运算,得到验证哈希值;
对所述交易信息和所述类型哈希值进行字符串编码,得到交易数据标识,将所述交易数据标识添加至所述转移交易数据中;所述交易数据标识用于指示所述区块链节点,在检测到所述交易数据标识与待验证数据标识相同时,为所述可信代理合约授权所述转移交易数据中的所述交易信息;所述待验证数据标识是由所述可信代理合约基于所述转移交易数据所生成的。
4.一种基于区块链的数据处理方法,其特征在于,包括:
区块链节点接收业务设备发送的转移交易数据和业务方签名信息;所述转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;所述交易信息包括业务数据、发送方对应的发送方地址、所述业务设备对应的业务方地址以及接收方对应的接收方地址;所述发送方签名信息是基于所述发送方的私钥,对所述交易信息进行签名得到的;所述业务方签名信息是基于业务方的私钥,对所述转移交易数据进行签名得到的;
对所述业务方签名信息进行验签,在对所述业务方签名信息验签成功时,调用所述授权函数标识对应的授权函数;
在所述授权函数对所述发送方签名信息验签成功时,通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息,通过所述授权函数调用所述可信代理合约中的转移函数;
通过所述转移函数在已授权的所述发送方地址和所述接收方地址之间转移已授权的所述业务数据。
5.根据权利要求4所述的方法,其特征在于,所述对所述业务方签名信息进行验签,在对所述业务方签名信息验签成功时,调用所述授权函数标识对应的授权函数,包括:
基于所述业务方的公钥,对所述业务方签名信息进行解密操作,得到第一待验证哈希值;
生成所述转移交易数据的第一目标哈希值;
若所述第一待验证哈希值与所述第一目标哈希值相同,则确定验签成功,调用所述授权函数标识对应的授权函数;
若所述第一待验证哈希值与所述第一目标哈希值不相同,则确定验签失败,返回错误提示信息到所述业务设备。
6.根据权利要求4所述的方法,其特征在于,所述在所述授权函数对所述发送方签名信息验签成功时,通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息,包括:
基于所述发送方的公钥,对所述发送方签名信息进行解密操作,得到第二待验证哈希值;
生成所述交易信息的第二目标哈希值;
若所述第二待验证哈希值与所述第二目标哈希值相同,则确定验签成功,通过所述授权函数获取所述转移交易数据中的所述交易信息,为所述可信代理合约授权所述交易信息中的所述业务数据和所述发送方地址;
若所述第二待验证哈希值与所述第二目标哈希值不相同,则确定验签失败,则返回错误提示信息到所述发送方。
7.根据权利要求4所述的方法,其特征在于,还包括:
获取区块链中具有最高区块高度的区块对应的区块时间和所述交易信息中的目标交易时间;所述目标交易时间是由所述发送方所确定的,且用于指示所述可信代理合约针对所述业务数据的授权有效时间,所述转移函数在所述授权有效时间内具有转移所述业务数据的权限;
若所述区块时间小于或者等于所述目标交易时间,则执行所述通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息的步骤;
若所述区块时间大于所述目标交易时间,则返回交易过期提示信息到所述业务设备和所述发送方。
8.根据权利要求4所述的方法,其特征在于,还包括:
获取所述可信代理合约中的所述授权函数相关联的签名映射表,获取所述交易信息中的目标签名映射值;所述签名映射表包括次数阈值,所述次数阈值用于记录所述发送方签名信息的被使用次数;
若所述目标签名映射值与所述次数阈值相同,则执行所述通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息的步骤;
若所述目标签名映射值与所述次数阈值不相同,则返回签名无效提示信息到所述业务设备和所述发送方。
9.根据权利要求4所述的方法,其特征在于,还包括:
从所述转移交易数据中获取交易数据标识,通过所述可信代理合约生成所述转移交易数据的待验证数据标识;所述交易数据标识是由所述业务设备基于所述可信代理合约对所述转移交易数据进行字符串编码得到的;
若所述交易数据标识与所述待验证数据标识相同,则执行所述通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息的步骤;
若所述交易数据标识与所述待验证数据标识不相同,则返回合约无效提示信息到所述业务设备和所述发送方。
10.根据权利要求4所述的方法,其特征在于,所述通过所述转移函数在已授权的所述发送方地址和所述接收方地址之间转移已授权的所述业务数据,包括:
将所述已授权的所述业务数据、所述发送方地址和所述接收方地址确定为待上链交易;所述业务数据包括业务资源类型和业务资源数值;
将所述发送方签名和所述待上链交易进行打包,生成待上链区块;
将所述待上链区块发送至所述区块链网络中的共识网络;
若所述共识网络对所述待上链区块共识成功,则将所述待上链区块确定为已上链区块,基于所述已上链区块中的所述业务资源类型和所述业务资源数值,分别对已授权的所述发送方地址的账户状态和所述接收方地址的账户状态,进行资源状态更新。
11.一种基于区块链的数据处理装置,其特征在于,包括:
业务获取模块,用于业务设备获取发送方发送的交易信息和发送方签名信息;所述发送方签名信息是基于所述发送方的私钥,对所述交易信息进行签名得到的;所述交易信息包括业务数据、发送方对应的发送方地址、所述业务设备对应的业务方地址以及接收方对应的接收方地址;
交易生成模块,用于获取可信代理合约中的授权函数标识,根据所述交易信息、所述发送方签名信息以及所述授权函数标识,生成转移交易数据;
业务方签名模块,用于基于所述业务设备对应的私钥,对所述转移交易数据进行签名,得到业务方签名信息;
授权转移模块,用于将所述转移交易数据和所述业务方签名信息发送至区块链节点,以使所述区块链节点在对所述业务方签名信息验签成功时,调用所述授权函数标识对应的授权函数,在所述授权函数对所述发送方签名信息验签成功时,通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息,通过所述授权函数调用所述可信代理合约中的转移函数;所述转移函数用于基于已授权的所述发送方地址和所述接收方地址执行已授权的所述业务数据。
12.一种基于区块链的数据处理装置,其特征在于,包括:
节点接收模块,用于区块链节点接收业务设备发送的转移交易数据和业务方签名信息;所述转移交易数据是基于交易信息、发送方签名信息以及可信代理合约中的授权函数标识生成的;所述交易信息包括业务数据、发送方对应的发送方地址、所述业务设备对应的业务方地址以及接收方对应的接收方地址;所述发送方签名信息是基于所述发送方的私钥,对所述交易信息进行签名得到的;所述业务方签名信息是基于业务方的私钥,对所述转移交易数据进行签名得到的;
业务方验签模块,用于对所述业务方签名信息进行验签,在对所述业务方签名信息验签成功时,调用所述授权函数标识对应的授权函数;
节点授权模块,用于在所述授权函数对所述发送方签名信息验签成功时,通过所述授权函数为所述可信代理合约授权所述转移交易数据中的所述交易信息,通过所述授权函数调用所述可信代理合约中的转移函数;
节点转移模块,用于通过所述转移函数在已授权的所述发送方地址和所述接收方地址之间转移已授权的所述业务数据。
13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述程序代码,以使得所述计算机设备执行权利要求1-10任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-10任一项所述的方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,且适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311451019.3A CN117557261A (zh) | 2023-11-01 | 2023-11-01 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311451019.3A CN117557261A (zh) | 2023-11-01 | 2023-11-01 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117557261A true CN117557261A (zh) | 2024-02-13 |
Family
ID=89817727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311451019.3A Pending CN117557261A (zh) | 2023-11-01 | 2023-11-01 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117557261A (zh) |
-
2023
- 2023-11-01 CN CN202311451019.3A patent/CN117557261A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112446785B (zh) | 跨链交易方法、系统、装置、设备和存储介质 | |
CN111970129B (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN110958110B (zh) | 一种基于零知识证明的区块链隐私数据管理方法和系统 | |
CN113691597B (zh) | 区块链合约部署方法、装置、设备以及存储介质 | |
CN100512201C (zh) | 用于处理分组业务的接入-请求消息的方法 | |
US20120324229A1 (en) | System and method for generating keyless digital multi-signatures | |
CN111884811B (zh) | 一种基于区块链的数据存证方法和数据存证平台 | |
US20200169389A1 (en) | Creating a blockchain account and verifying blockchain transactions | |
CN110149323B (zh) | 一种具有千万级tps合约处理能力的处理装置 | |
CN110930153B (zh) | 基于隐藏第三方账号的区块链隐私数据管理方法和系统 | |
CN113255014B (zh) | 一种基于区块链的数据处理方法以及相关设备 | |
CN113676452B (zh) | 基于一次性密钥的重放攻击抵御方法及系统 | |
CN111464315A (zh) | 数字签名处理方法、装置、计算机设备以及存储介质 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN111260475A (zh) | 一种数据处理方法、区块链节点设备及存储介质 | |
CN117311985A (zh) | 一种基于区块链的数据处理方法、装置以及可读存储介质 | |
CN111553686A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN115409511A (zh) | 一种基于区块链的个人信息保护系统 | |
CN117557261A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN117544631A (zh) | 一种基于区块链的数据处理方法、装置以及可读存储介质 | |
CN117032998B (zh) | 一种基于区块链的数据处理方法、装置以及可读存储介质 | |
CN117040930B (zh) | 区块链网络的资源处理方法、装置、产品、设备和介质 | |
CN114499896B (zh) | 一种基于区块链的实名认证方法及系统 | |
CN117294753A (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN117395264A (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |