CN115619395A - 基于区块链的数据处理方法及相关设备 - Google Patents
基于区块链的数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN115619395A CN115619395A CN202110801455.3A CN202110801455A CN115619395A CN 115619395 A CN115619395 A CN 115619395A CN 202110801455 A CN202110801455 A CN 202110801455A CN 115619395 A CN115619395 A CN 115619395A
- Authority
- CN
- China
- Prior art keywords
- transaction
- hash value
- target
- transaction request
- requester
- 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 24
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000005540 biological transmission Effects 0.000 claims abstract description 27
- 238000012546 transfer Methods 0.000 claims description 50
- 238000003860 storage Methods 0.000 claims description 26
- 230000008676 import Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 5
- 238000005096 rolling process Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 239000003999 initiator Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000001914 filtration Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 231100000957 no side effect Toxicity 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- 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/085—Payment architectures involving remote charge determination or related payment systems
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本公开实施例提供了一种基于区块链的数据处理方法及相关设备。该方法包括:获取第一请求方的终端设备发送的第一交易请求,第一交易请求携带第一业务方标识、第一请求方信息和用于执行第一交易请求的第一传入参数;调用智能合约生成第一传入参数的第一传参哈希值;调用智能合约将第一业务方标识、第一请求方信息和第一传参哈希值与交易执行表匹配;将交易执行表中分别与第一业务方标识、第一请求方信息和第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至第一请求方的终端设备,目标交易哈希值与第一交易请求的第一交易哈希值不同。应用本公开实施提供的方案能够保证区块链中交易请求的幂等性。
Description
技术领域
本公开涉及区块链技术领域,具体而言,涉及一种基于区块链的数据处理方法、节点设备、终端设备、电子设备及计算机可读介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。在分布式的节点系统中,由节点竞争获得当前处理数据的权力,作为区块生成节点;生成的区块再经过其他节点的验证确认后,再进行存储。上述运行机制使得区块链中记录在区块内的数据几乎不可能被篡改。
在业务场景中,常常出现业务方对幂等性的要求。例如,在支付场景中,用户购买商品后支付,支付扣款成功,但结果返回时网络异常导致用户以为未成功支付,一旦用户重复提交支付请求后,会发生针对同一笔订单进行第二次扣款的情况。
在实际场景中,由于区块链响应延迟,可能出现业务方重复提交同一个业务的多笔交易请求,由于时间戳不一致等导致每笔交易的hash(哈希)值不一致,但是业务参数一致,区块链识别为多笔不同的业务请求,导致幂等性问题。幂等性是指分布式环境下,用户对于同一操作发起的一次或多次请求的结果是一致的,不会因为多次点击而产生副作用。
因此,需要一种新的基于区块链的数据处理方法、节点设备、终端设备、电子设备及计算机可读介质。
发明内容
本公开实施例提供一种基于区块链的数据处理方法、装置、电子设备及计算机可读介质,进而至少在一定程度上解决相关技术中存在于区块链中的幂等性问题。
本公开实施例提出一种基于区块链的数据处理方法,所述方法应用于区块链网络中的节点设备,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表,所述方法包括:获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;调用所述智能合约生成所述第一传入参数的第一传参哈希值;调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
本公开实施例提出一种基于区块链的数据处理方法,所述方法应用于与区块链网络通信的终端设备,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表。其中,所述方法包括:通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值;通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述交易执行表中的所述目标交易执行结果和所述目标交易哈希值与目标业务方标识与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配;确定所述目标交易哈希值与所述第一交易哈希值不同。
本公开实施例提出一种节点设备,所述节点设备设置于区块链网络中,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表。其中,所述节点设备包括:第一交易请求获取单元,用于获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;第一传参哈希值生成单元,用于调用所述智能合约生成所述第一传入参数的第一传参哈希值;交易执行表匹配单元,用于调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;目标交易执行结果返回单元,用于将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
本公开实施例提出一种终端设备,所述终端设备与区块链网络通信,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表。其中,所述终端设备包括:第一交易请求生成单元,用于通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;第一交易哈希值生成单元,用于通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值;第一交易请求发送单元,用于通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;目标交易执行结果接收单元,用于接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述目标交易执行结果和所述目标交易哈希值与所述交易执行表中的目标业务方标识、目标请求方信息和目标传参哈希值对应,所述交易执行表中的目标业务方标识、目标请求方信息和目标传参哈希值分别与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配;目标交易哈希值确定单元,用于确定所述目标交易哈希值与所述第一交易哈希值不同。
本公开实施例提出一种电子设备,包括:至少一个处理器;存储装置,用于存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的基于区块链的数据处理方法。
本公开实施例提出一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的基于区块链的数据处理方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的基于区块链的数据处理方法。
在本公开的一些实施例所提供的技术方案中,一方面,通过在区块链网络中部署用于维护交易执行表的智能合约,当区块链网络中的节点设备接收到第一请求方的终端设备发送的第一交易请求时,可以根据第一交易请求携带的第一业务方标识、第一请求方信息和用于执行第一交易请求的第一传入参数查询智能合约维护的交易执行表,若判定交易执行表与第一传入参数的第一传参哈希值、第一业务方标识和第一请求方信息匹配,则节点设备可以确定与该第一交易请求相同的业务在此之前已经被成功执行过,此时,节点设备不执行该第一交易请求,而是将交易执行表中所述第一业务方标识、第一请求方信息和第一传参哈希值匹配的目标交易执行结果和目标交易哈希值直接返回至第一请求方的终端设备,从而可以避免节点设备重复执行相同的业务,确保针对相同业务的交易操作不会被重复执行,确保业务执行的幂等性,即通过智能合约维护的交易执行表可以保证存在多笔相同业务提交的多笔不同交易请求并发提交时,也只有一笔业务能够执行成功。另一方面,接收到目标交易执行结果和目标交易哈希值的第一请求方的终端设备,可以通过判定目标交易哈希值与第一交易请求的第一交易哈希值不同来获知与该第一交易请求相同的业务之前已经被成功执行过。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种基于区块链的数据处理系统的架构示意图。
图2是本公开实施例提供的一种区块链网络的示意图。
图3是本公开实施例提供的一种区块的结构示意图。
图4是本公开实施例提供的一种新区块产生过程的示意图。
图5示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
图6示意性示出了根据本公开的另一个实施例的基于区块链的数据处理方法的流程图。
图7示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程示意图。
图8示意性示出了根据本公开的又一个实施例的基于区块链的数据处理方法的流程图。
图9示意性示出了根据本公开的再一个实施例的基于区块链的数据处理方法的流程图。
图10示意性示出了根据本公开的一实施例的节点设备的框图。
图11示意性示出了根据本公开的一实施例的终端设备的框图。
图12示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本公开实施例所涉及的区块链(blockchain或block chain)是一种分布式数据存储、点对点(Peer to Peer,P2P)传输、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层;区块链可由多个借由密码学串接并保护内容的串连交易记录(又称区块)构成,用区块链所串接的分布式账本能让多方有效记录交易,且可永久查验此交易(不可篡改)。其中,共识机制是指区块链网络中实现不同节点之间建立信任、获取权益的数学算法,即共识机制是区块链各网络节点共同认可的一种数学算法。
如图1所示,本公开实施例提供的基于区块链的数据处理系统可以包括区块链网络100及多个终端设备,图1中以包括三个终端设备为例,分别为第一终端201、第二终端202和第三终端203。其中,第一终端201、第二终端202和第三终端203可用于从区块链网络获取交易数据(包括交易请求或者执行交易请求后生成的交易数据),或向区块链网络上传交易数据。
如图2所示,图1实施例中的区块链网络100中可以包括多个节点设备101,多个节点设备101可以是指区块链网络中各个客户端,区块链网络100是指用于进行节点设备101与节点设备101之间数据共享的系统。每个节点设备101在进行正常工作时可以接收到交易数据,并基于接收到的交易数据维护该区块链网络100内的共享数据。为了保证区块链网络100内的信息互通,区块链网络100中的每个节点设备101之间可以存在信息连接,节点设备101之间可以通过上述信息连接进行信息传输。例如,当区块链网络100中的任意节点设备101接收到交易数据时,区块链网络100中的其他节点设备101便根据共识算法获取该交易数据,将该交易数据作为共享数据中的数据进行存储,使得区块链网络100中全部节点设备101上存储的数据均一致。
其中,区块链网络100中的节点设备101、第一终端201、第二终端202和第三终端203可以为任意的电子设备,包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(mobile internet device,MID)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等);还可以是一台独立的服务器、或由若干台服务器组成的服务器集群、或云计算中心。
对于区块链网络100中的每个节点设备101,均具有与其对应的节点设备标识,而且区块链网络100中的每个节点设备101均可以存储有区块链网络100中其他节点设备101的节点设备标识,以便后续根据其他节点设备101的节点设备标识,将生成的区块广播至区块链网络100中的其他节点设备101。每个节点设备101中可维护一个如下表1所示的节点设备标识列表,将节点设备名称和节点设备标识对应存储至该节点设备标识列表中。其中,节点设备标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点设备的信息,表1中仅以IP地址为例进行说明。其中N为大于或等于1的正整数。
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
区块链网络100中的每个节点设备101均存储一条相同的区块链。区块链由多个区块组成,每一个区块包含了前一个区块的加密散列(可以用默克尔树(Merkle tree)算法计算的散列值表示)、相应时间戳以及交易数据,这样的设计使得区块内容具有难以篡改的特性。
参见图3,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有交易数据特征值、版本号、时间戳和难度值,区块主体中存储有交易数据;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的交易数据特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中交易数据的安全性。
在生成区块链中的各个区块时,参见图4,区块链所在的节点设备在接收到交易数据时,对交易数据进行校验,完成校验后,将交易数据存储至内存池中,并更新其用于记录交易数据的哈希树;之后,将更新时间戳更新为接收到交易数据的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET (1)
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为交易数据的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点设备根据区块链网络100中其他节点设备的节点设备标识,将新生成的区块分别发送给其所在的区块链网络100中的其他节点设备,由其他节点设备对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
图5示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。本公开实施例所提供的方法可以由任意具备计算处理能力的电子设备处理,例如上述图2实施例中的任意节点设备101。
图5实施例中,以所提供的方法应用于区块链网络100中的节点设备101为例,区块链网络100中部署智能合约,该智能合约可用于维护交易执行表,该交易执行表中用于记录历史上执行成功的交易的相关信息,以用于对重复接收到的针对同一业务的交易请求进行去重,防止同一业务被重复执行,保证幂等性。
其中,智能合约,是一种旨在以信息化方式传播、验证或执行合同的计算机协议,可以执行某个合约的条款,通过部署在共享账本上的用于满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买的物流状态,在买家签收货物后将买家的电子货币转移到商家的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太网网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(Ethereum Virtual Machine,EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
本公开实施例中的任意一个智能合约可以通过以下方式部署到区块链网络上,但本公开并不限定于此。用户将一笔包含创建智能合约的交易(transaction)发送到区块链网络后,各节点均可以在EVM中执行这笔交易。其中,交易中的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
每个智能合约创建后,区块链上出现一个与各个智能合约对应的合约账户,并拥有一个特定的地址。合约代码(Code)将保存在该合约账户的账户存储(Storage)中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。即智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。在一个智能合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(Storage)字段中的值,用于保存智能合约的状态。
在步骤S510中,获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数。
本公开实施例中,第一请求方可以是任意业务方,第一请求方的终端设备可以是任意终端设备,在下面的举例说明中,以图1中的第一终端201为例进行举例说明,但本公开并不限定于此。
第一终端201可以向区块链网络100中上传第一交易请求,相应地,区块链网络100中的任意节点设备101均可以接收到第一终端201所发送的第一交易请求。该第一交易请求中可以携带第一业务方标识、第一请求方信息和第一传入参数。
其中,该第一业务方标识是第一请求方在发送第一交易请求之前生成的,以用于唯一区别该第一交易请求所针对的操作对象的标识,例如,若第一交易请求所针对的操作对象是第一数据集中的某个文件,则第一业务方标识可以是第一请求方在第一终端201上生成的该文件的文件名。再例如,若第一交易请求所针对的操作对象是某笔资产,则第一业务方标识可以是该资产的标识。本公开对第一业务方标识的形式不做限定,只要其能够将第一交易请求所针对的操作对象与其他操作对象唯一区别开来即可。
该第一请求方信息可以包括任意能够用于唯一区别该第一请求方或者该第一请求方的终端设备的标识,例如第一请求方的用户名,第一请求方的终端设备的网络地址、设备编号等。
第一传入参数可以包括为了能够执行该第一交易请求所需要的任意输入参数。例如,若第一交易请求是请求将数量为10的电子资源从账户1转移至账户2,则第一传入参数可以包括第一交易账户和大小为10的第一交易量,第一交易账户可以包括作为第一转出账户的账户1和作为第一转入账户的账户2。
在步骤S520中,调用所述智能合约生成所述第一传入参数的第一传参哈希值。
节点设备101可以调用智能合约,采用哈希函数生成第一传入参数的第一传参哈希值。第一传参哈希值是根据第一交易请求传入的第一传入参数计算获得的数据指纹。
本公开实施例中所提及的哈希函数可以采用SHA(Security Hash Algorithm,安全哈希算法)函数,例如SHA256、SHA3等任意一种合适的函数,本公开对此不做限定。
在步骤S530中,调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配。
在一些实施例中,若交易执行表中记录了历史上执行成功的交易请求的业务方标识、请求方信息、传参哈希值、交易执行结果和交易哈希值,则可以将第一交易请求中携带的第一业务方标识、第一请求方信息和上述步骤计算获得的第一传参哈希值分别与交易执行表中已经记录的各个交易请求的业务方标识、请求方信息和传参哈希值进行比较,查询交易执行表中的业务方标识是否存在与第一业务方标识相同的目标业务方标识,查询交易执行表中的请求方信息是否存在与第一请求方信息相同的目标请求方信息,查询交易执行表中的传参哈希值是否存在与第一传参哈希值相同的目标传参哈希值,若存在与之一一匹配的目标业务方标识、目标请求方信息和目标传参哈希值,则判定为匹配成功,即历史上已经执行过与该第一交易请求相同的业务,可以从交易执行表中获取与目标业务方标识、目标请求方信息和目标传参哈希值关联存储的目标交易执行结果和目标交易哈希值;反之,则判定为匹配失败,即历史上尚未执行过与该第一交易请求相同的业务。
本公开实施例中,历史上已经执行过与该第一交易请求相同的业务是指,在第一交易请求之前,已经执行过与该第一交易请求所针对的操作对象相同、且针对该操作对象所执行的交易操作也相同的交易请求,同时该之前成功执行的交易请求也是由该第一交易请求的发起者(第一请求方)发起,即该之前成功执行的交易请求的业务方标识与第一业务方标识相同,请求方信息与该第一请求方信息相同,传入参数和该第一传入参数(这里是通过判断传参哈希值与该第一传参哈希值相同来确定的),当上述三个参数存在任意一个不一致时,则可以确定历史上尚未执行过与该第一交易请求相同的业务。通过在交易执行表中关联记录已经成功执行的交易的业务方标识、请求方信息和传参哈希值,从而可以针对相同业务的多笔交易请求区分出来,满足幂等性要求,防止同一笔业务被重复执行,保证交易执行的安全性和可靠性。
在另一些实施例中,若交易执行表中记录了历史上执行成功的交易请求的业务方标识、平台方标识、请求方信息、传参哈希值、交易执行结果和交易哈希值,则节点设备可以根据第一业务方标识(例如这里用a表示)给第一交易请求所针对的操作对象分配一个第一平台方标识(例如这里用A表示),其中,节点设备针对同一操作对象所分配的平台方标识是相同的,节点设备接收到不同的交易请求,但若这些不同的交易请求中的业务方标识是相同的,则生成的平台方标识也是相同的,即平台方标识是根据业务方标识生成的,各个平台方标识也具有唯一性,例如假设第一业务方标识为操作对象为文件1的文件名,则第一平台方标识可以是ABC。然后,节点设备可以将第一交易请求中携带的第一业务方标识、第一请求方信息和上述步骤计算获得的第一传参哈希值、以及节点设备生产的第一平台方标识分别与交易执行表中已经记录的各个交易请求的业务方标识、请求方信息、传参哈希值和平台方标识进行比较,查询交易执行表中的业务方标识是否存在与第一业务方标识相同的目标业务方标识,查询交易执行表中的请求方信息是否存在与第一请求方信息相同的目标请求方信息,查询交易执行表中的传参哈希值是否存在与第一传参哈希值相同的目标传参哈希值,查询交易执行表中的平台方标识是否存在与第一平台方标识相同的目标平台方标识,若存在与之一一匹配的目标业务方标识、目标请求方信息、目标传参哈希值和目标平台方标识,则判定为匹配成功,即历史上已经执行过与该第一交易请求相同的业务,可以从交易执行表中获取与目标业务方标识、目标请求方信息、目标传参哈希值和目标平台方标识关联存储的目标交易执行结果和目标交易哈希值;反之,则判定为匹配失败,即历史上尚未执行过与该第一交易请求相同的业务。
本公开实施例中,历史上已经执行过与该第一交易请求相同的业务是指,在第一交易请求之前,已经执行过与该第一交易请求所针对的操作对象相同、且针对该操作对象所执行的交易操作也相同的交易请求,同时该之前成功执行的交易请求也是由该第一交易请求的发起者(第一请求方)发起,即该之前成功执行的交易请求的业务方标识与第一业务方标识以及平台方标识与第一平台方标识相同,请求方信息与该第一请求方信息相同,传入参数和该第一传入参数(这里是通过判断传参哈希值与该第一传参哈希值相同来确定的),当上述四个参数存在任意一个不一致时,则可以确定历史上尚未执行过与该第一交易请求相同的业务。通过在交易执行表中关联记录已经成功执行的交易的业务方标识、请求方信息、传参哈希值和平台方标识,一方面,可以针对相同业务的多笔交易请求区分出来,满足幂等性要求,防止同一笔业务被重复执行,保证交易执行的安全性和可靠性;另一方面,通过业务方标识和平台方标识来联合标识交易请求所针对的操作对象,即由多方来维护操作对象的唯一标识,而不是单纯由业务方来维护,可以进一步确定不同交易请求所针对的是同一操作对象,进一步保证交易执行的安全性和可靠性。
在又一些实施例中,若交易执行表中记录了历史上执行成功的交易请求的数据实体标识、请求方信息、传参哈希值、交易执行结果和交易哈希值,该数据实体标识是根据已经执行成功的交易请求的业务方标识和平台方标识生成的,例如级联该业务方标识和该平台方标识生成该数据实体标识,或者对该业务方标识和该平台方标识计算哈希值,获得该数据实体标识,本公开对此不做限定,则节点设备可以根据第一业务方标识给第一交易请求所针对的操作对象分配一个第一平台方标识,之后,节点设备可以根据第一业务方平台和第一平台方标识生成第一数据实体标识,该第一数据实体标识的生成方式不做限定,只要能够唯一区别第一交易请求所针对的操作对象即可。然后,节点设备可以将第一交易请求的第一数据实体标识、第一请求方信息和上述步骤计算获得的第一传参哈希值分别与交易执行表中已经记录的各个交易请求的数据实体标识、请求方信息和传参哈希值进行比较,查询交易执行表中的数据实体标识是否存在与第一数据实体标识相同的目标数据实体标识,查询交易执行表中的请求方信息是否存在与第一请求方信息相同的目标请求方信息,查询交易执行表中的传参哈希值是否存在与第一传参哈希值相同的目标传参哈希值,若存在与之一一匹配的目标数据实体标识、目标请求方信息和目标传参哈希值,则判定为匹配成功,即历史上已经执行过与该第一交易请求相同的业务,可以从交易执行表中获取与目标数据实体标识、目标请求方信息和目标传参哈希值关联存储的目标交易执行结果和目标交易哈希值;反之,则判定为匹配失败,即历史上尚未执行过与该第一交易请求相同的业务。
本公开实施例中,数据实体可以理解为数据集中一类数据对象的个体,比如可以是具体的人、事、物,也可以为抽象的概念、联系等,数据实体标识可以用于唯一区分各个数据实体。
本公开实施例中,历史上已经执行过与该第一交易请求相同的业务是指,在第一交易请求之前,已经执行过与该第一交易请求所针对的操作对象相同、且针对该操作对象所执行的交易操作也相同的交易请求,同时该之前成功执行的交易请求也是由该第一交易请求的发起者(第一请求方)发起,即该之前成功执行的交易请求的数据实体标识与第一数据实体标识相同,请求方信息与该第一请求方信息相同,传入参数和该第一传入参数(这里是通过判断传参哈希值与该第一传参哈希值相同来确定的),当上述三个参数存在任意一个不一致时,则可以确定历史上尚未执行过与该第一交易请求相同的业务。通过在交易执行表中关联记录已经成功执行的交易的数据实体标识、请求方信息和传参哈希值,一方面,可以针对相同业务的多笔交易请求区分出来,满足幂等性要求,防止同一笔业务被重复执行,保证交易执行的安全性和可靠性;另一方面,通过业务方标识和平台方标识来生成交易请求所针对的操作对象的数据实体标识,即由多方来维护操作对象的唯一标识,而不是单纯由业务方来维护,可以进一步确定不同交易请求所针对的是同一操作对象,进一步保证交易执行的安全性和可靠性。
在再一些实施例中,若交易执行表中记录了历史上执行成功的交易请求的交易执行表唯一键、交易执行结果和交易哈希值,每个交易执行表唯一键是根据对应交易请求的数据实体标识、请求方信息和传参哈希值生成的,以用于唯一区别针对同一数据实体标识所对应的操作对象进行的相同的交易操作,且该相同的交易操作是同一请求方发起的。节点设备可以根据第一交易请求的第一数据实体标识、第一请求方信息和第一传参哈希值生成第一交易执行表唯一键。然后,节点设备可以将第一交易请求的第一交易执行表唯一键与交易执行表中已经记录的各个交易请求的交易执行表唯一键进行比较,查询交易执行表中的交易执行表唯一键是否存在与第一交易执行表唯一键相同的目标交易执行表唯一键,若存在与之匹配的目标交易执行表唯一键,则判定为匹配成功,即历史上已经执行过与该第一交易请求相同的业务,可以从交易执行表中获取与目标交易执行表唯一键关联存储的目标交易执行结果和目标交易哈希值;反之,则判定为匹配失败,即历史上尚未执行过与该第一交易请求相同的业务。
本公开实施例中,历史上已经执行过与该第一交易请求相同的业务是指,在第一交易请求之前,已经执行过与该第一交易请求所针对的操作对象相同、且针对该操作对象所执行的交易操作也相同的交易请求,同时该之前成功执行的交易请求也是由该第一交易请求的发起者(第一请求方)发起,即该之前成功执行的交易请求中存在交易执行表唯一键与第一交易执行表唯一键相同的目标交易执行表唯一键,当不存在与之匹配的目标交易执行表唯一键时,则可以确定历史上尚未执行过与该第一交易请求相同的业务。通过在交易执行表中关联记录已经成功执行的交易的交易执行表唯一键,一方面,可以针对相同业务的多笔交易请求区分出来,满足幂等性要求,防止同一笔业务被重复执行,保证交易执行的安全性和可靠性;另一方面,通过交易执行表唯一键来唯一标记由某一请求方发起的针对某一操作对象的交易操作,该交易执行表唯一键根据对应的数据实体标识、请求方信息和传参哈希值来对应生成,即由多方来维护交易请求的发起者针对操作对象的交易操作的唯一标识,而不是单纯由业务方来维护,可以进一步确定不同交易请求是由相同发起者发起的针对同一操作对象的同一交易操作,进一步保证交易执行的安全性和可靠性。
在步骤S540中,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
本公开实施例中,若交易执行表中存在与第一交易请求的第一业务方标识、第一请求方信息和第一传参哈希值匹配的目标交易执行结果和目标交易哈希值,则节点设备可以判定之前已经成功执行过与第一交易请求相同的业务,此时,节点设备可以直接将交易执行表中存储的与之对应的目标交易执行结果和目标交易哈希值返回给第一请求方的终端设备,而不会再重复执行该第一交易请求,第一请求方的终端接收到节点设备返回的目标交易哈希值和目标交易执行结果之后,将接收到的目标交易哈希值与在第一请求方的终端设备上生成的第一交易哈希值进行比较,判定目标交易哈希值与第一交易哈希值不同,则可以获知虽然接收到了目标交易执行结果,但该目标交易执行结果不是执行第一交易请求获得的,而是之前已经成功执行的交易请求获得的。
其中,第一交易哈希值是第一请求方的终端设备在生成第一交易请求之后,对第一交易请求进行哈希运算获得的。
在示例性实施例中,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,可包括:验证所述第一交易请求的合法性;若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;将所述第一区块添加至对应的区块链;若所述第一区块上链成功,则从所述交易执行表中检索到分别与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标业务方标识、目标请求方信息和目标传参哈希值;将与所述目标业务方标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
在示例性实施例中,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,可包括:验证所述第一交易请求的合法性;若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;将所述第一区块添加至对应的区块链;若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;从所述交易执行表中检索到分别与所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值匹配的目标数据实体标识、目标请求方信息和目标传参哈希值;将与所述目标数据实体标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
在示例性实施例中,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,可包括:验证所述第一交易请求的合法性;若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;将所述第一区块添加至对应的区块链;若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;根据所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值生成第一交易执行表唯一键;若所述第一交易执行表唯一键与所述交易执行表中的目标交易执行表唯一键匹配,则将与所述目标交易执行表唯一键对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
本公开实施例中,节点设备101可接收各个终端设备所发送的交易请求,其中包括第一终端201所发送的第一交易请求,将所接收到的交易请求确定为待上链的交易数据,将待上链的多个交易数据存储至交易池中,并按照一定的顺序从交易池中读取目标交易数据。其中,目标交易数据可以是指上述多个交易数据中的任一交易数据,这里假设目标交易数据包括上述第一交易请求。目标交易数据包括但不限于电子资源转移的交易数据、股权交易数据以及基金交易数据等。此处顺序可包括交易数据被缓存于交易池的时间顺序、交易数据的重要性优先级、交易类型等,这样有利于有序地对各个交易数据进行验证,提高验证的灵活性和准确度。
在一些实施例中,交易类型可以包括实时性交易类型和非实时性交易类型,实时性交易类型可包括电子资源转移(实时到账)、上链电子证件等等;非实时性交易类型可包括上链新闻数据、用户注册数据等等。节点设备101可以优先读取实时性交易类型的交易数据,然后读取非实时性交易类型的交易数据,这样可以确保实时性交易类型的交易数据能够被实时处理。
在一些实施例中,重要性优先级可以是根据交易数据所属的机构确定的,例如,该交易数据属于行政部门,则该交易数据的重要性优先级比较高;反之,如果该交易数据属于企业或个人,则该交易数据的重要性优先级比较低。重要性优先级用于指示交易数据的重要性、私密性等等,即重要性优先级越高,交易数据的重要性、私密性越高;重要性优先级越低,交易数据的重要性、私密性越低。因此,节点设备101可以优先读取重要性优先级高的交易数据,然后读取重要性优先级低的交易数据,这样确保重要性优先级高的交易数据能够被实时处理,可有效提高交易数据的安全性,避免重要性优先级高的交易数据被泄露。
在一些实施例中,节点设备101可以按照交易池中各个交易数据被接收到的时间由先到后的顺序,依次读取各个交易数据,这样可以提高对各个交易数据处理的公平性。
节点设备接收到第一终端201发送的第一交易请求,可以获取该第一交易请求的属性信息,根据该第一交易请求的属性信息验证该第一交易请求的有效性。具体的,验证第一交易请求的有效性可以是指:验证该第一交易请求是否能够被成功执行;如果能够被成功执行,确定该第一交易请求具有有效性;如果不能被成功执行,则确定该第一交易请求不具有有效性。
在读取到第一交易请求后,可获取第一交易请求的属性信息,此处属性信息包括为预测执行第一交易请求所需要电子资源的第一数量、第一交易请求的大小、第一交易请求的签名信息、第一交易请求的生成时间等。即第一数量可以是指用户愿意为执行第一交易请求所支付的电子资源的数量。其中,电子资源是指用于购买数字资产的资金,此处的数字资产可包括但不限于:电子票据、游戏资源(如游戏币、游戏装备等),等等。
从交易池中读取第一交易请求之后,获取用户为预测执行第一交易请求所需要电子资源的第一数量,然后再获取预先存储的实际执行该第一交易请求所需要的电子资源的第二数量,将该第一数量与该第二数量进行对比,若该第一数量大于该第二数量,则确定该第一交易请求具有有效性,即说明用户预测执行第一交易请求所需要的电子资源大于实际执行第一交易请求所需要的电子资源,则第一交易请求执行能成功;若该第一数量小于或等于第二数量,则确定该第一交易请求不具有有效性,即说明用户预测执行第一交易请求所需要的电子资源小于或等于实际执行第一交易请求所需要的电子资源,则第一交易请求执行不能成功,第一交易请求就会执行失败。
在一些实施例中,将该第一交易请求的大小与预先设定的交易数据的大小对应的阈值进行比对,若该第一交易请求的大小大于该交易数据的大小对应的阈值,表明第一交易请求中存在冗余数据,第一交易请求的大小不满足条件,则确定该第一交易请求不具有有效性。若该第一交易请求的大小小于或等于该交易数据的大小对应的阈值,表明第一交易请求中不存在冗余数据,则确定该第一交易请求具有有效性。
在一些实施例中,验证该第一交易请求是否具有有效性可以是指:验证第一交易请求的真实性、完整性(即是否被篡改),如果该第一交易请求是真实的、完整的(即没有被篡改),则确定该第一交易请求具有有效性;如果该第一交易请求是不真实的、不完整的(即被篡改),则确定该第一交易请求不具有有效性。
在一些实施例中,节点设备101可获取该第一交易请求对应的公钥,该第一交易请求对应的公钥可以是指上传该第一交易请求的第一终端201的公钥。可根据该第一交易请求对应的公钥对该签名信息进行验证,若验证通过,表明该第一交易请求未被篡改,具有完整性,则确定该第一交易请求具有有效性,若验证未通过,表明该第一交易请求被篡改,不具有完整性,则确定该第一交易请求不具有有效性。
具体的,在第一交易请求未被上传至节点设备101时,第一终端201可对第一交易请求进行哈希运算,得到第一交易请求的第一交易哈希值,采用私钥对第一交易请求的哈希值进行加密,得到携带第一终端201的签名的第一交易请求,将该第一交易请求和携带终端的签名的第一交易请求一起发送至区块链网络的节点设备101。
相应地,节点设备可以接收第一终端201所发送的该第一交易请求、携带第一终端201的签名的第一交易请求,节点设备可以获取第一终端201的公钥,将该公钥作为该第一交易请求对应的公钥。节点设备对第一交易请求进行哈希运算,得到第一交易哈希值,采用公钥对携带第一终端201的签名的第一交易请求进行解密,得到第三交易哈希值,将第一交易哈希值与第三交易哈希值进行比对,若第一哈希值与第三哈希值不相同,则表明第一交易请求不具有完整性,即第一交易请求被篡改,确定第一交易请求未被验证通过;若第一哈希值与第三哈希值相同,则表明该第一交易请求具有完整性,该第一交易请求未被篡改,确定第一交易请求验证通过。
其中,属性信息中的为预测执行第一交易请求所需要电子资源的第一数量、第一交易请求的生成时间,可用于验证第一交易请求是否能够被成功执行;属性信息中的第一交易请求的大小、第一交易请求的签名信息,用于验证第一交易请求的真实性、完整性(即是否被篡改)。
本公开实施例中,若第一交易请求具有有效性,则可以进一步验证第一交易请求是否具有合法性。其中,可以获取该区块链网络中确定该第一交易请求具有有效性的节点设备的数量;若所获取到的数量大于数量阈值(该数量阈值可以根据实际需求进行设置,本公开对此不做限定),则确定该第一交易请求具有合法性;若所获取到的数量小于或等于该数量阈值,则确定该第一交易请求不具有合法性。
需要说明的是,如果交易池中的交易数据被读取后,可以将被读取的交易数据从交易池中删除,以节省存储空间,可有效存储更多新的交易数据。
如果该第一交易请求具有有效性和合法性,表明该第一交易请求具有完整性、真实性、或者能够被成功执行,且确定该第一交易请求具有有效性的节点设备的数量大于数量阈值,因此,节点设备101可将第一交易请求作为目标交易数据存储至区块链网络的区块(这里称之为第一区块)中。
例如,假设节点设备101将第一交易请求存储至区块10001中,区块10001中包括区块头和区块体,区块10001的区块头中包括10000H、10001H、10001T等,其中,10000H代表区块链中区块10000的区块头哈希值,10001H代表区块10001的区块体中交易数据(包括第一交易请求,还可以包括其它交易数据)所对应的哈希值,10001T代表区块10001的区块生成时间戳。
在示例性实施例中,所述方法还可以包括:若所述第一交易请求不具有合法性,或者所述第一区块上链失败,则向所述第一请求方的终端设备返回执行所述第一交易请求失败的第一交易执行结果。
如果第一交易请求不具有有效性和合法性,表明该第一交易请求不具有完整性、真实性或者不能够被成功执行,或者确定该第一交易请求具有有效性的节点设备的数量小于或等于数量阈值,因此,节点设备101可对第一交易请求进行回滚,可避免将无效的交易数据存储至区块中,有利于节省区块的存储空间,从而保证了区块链中数据的有效性。回滚指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。
若被读取的交易数据不具有有效性或者合法性,则从该交易池中移除该被读取的交易数据。
本公开实施方式提供的基于区块链的数据处理方法,一方面,通过在区块链网络中部署用于维护交易执行表的智能合约,当区块链网络中的节点设备接收到第一请求方的终端设备发送的第一交易请求时,可以根据第一交易请求携带的第一业务方标识、第一请求方信息和用于执行第一交易请求的第一传入参数查询智能合约维护的交易执行表,若判定交易执行表与第一传入参数的第一传参哈希值、第一业务方标识和第一请求方信息匹配,则节点设备可以确定与该第一交易请求相同的业务在此之前已经被成功执行过,此时,节点设备不执行该第一交易请求,而是将交易执行表中所述第一业务方标识、第一请求方信息和第一传参哈希值匹配的目标交易执行结果和目标交易哈希值直接返回至第一请求方的终端设备,从而可以避免节点设备重复执行相同的业务,确保针对相同业务的交易操作不会被重复执行,确保业务执行的幂等性,即通过智能合约维护的交易执行表可以保证存在多笔相同业务提交的多笔不同交易请求并发提交时,也只有一笔业务能够执行成功。另一方面,接收到目标交易执行结果和目标交易哈希值的第一请求方的终端设备,可以通过判定目标交易哈希值与第一交易请求的第一交易哈希值不同来获知与该第一交易请求相同的业务之前已经被成功执行过。
图6示意性示出了根据本公开的另一个实施例的基于区块链的数据处理方法的流程图。图6实施例提供的方法与上述图5实施例提供的方法之间的区别在于,在上述步骤S510之前,即在获取第一请求方的终端设备发送的第一交易请求之前,所述方法还可以进一步包括以下步骤。
在步骤S610中,获取所述第一请求方的终端设备发送的第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数。
节点设备可以在接收到第一终端201发送的第一交易请求之前,已经接收到该第一终端201发送的第二交易请求,且该第二交易请求与第一交易请求携带相同的第一业务方标识、第一请求方信息和第一传入参数,即第一交易请求和第二交易请求是该同一第一请求方先后发起的针对同一业务的相同交易操作。
在步骤S620中,调用所述智能合约计算生成所述第一传入参数的第一传参哈希值。
节点设备接收到第二交易请求之后,会利用哈希函数生成第二交易请求携带的第一传入参数的第一传参哈希值。
在步骤S630中,调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配。
节点设备接收到第二交易请求之后,会将第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值与交易执行表进行匹配。具体的匹配方式可以参照上述节点设备将第一交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值与交易执行表进行匹配。
在步骤S640中,若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则调用所述智能合约获取所述第二交易请求的第二交易执行结果。
本公开实施例中,若交易执行表与第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值匹配,则类似于上述第一交易请求,说明在第二交易请求之前,已经执行过与第二交易请求相同的业务,此时可以直接返回历史上成功执行的与第二交易请求相同的业务的目标交易执行结果和目标交易哈希值,而不需要执行第二交易请求。
在一些实施例中,交易执行表与第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值不匹配,可以是交易执行表中不存在与第二交易请求携带的第一业务方标识匹配的目标业务方标识,或者交易执行表中不存在与第二交易请求携带的第一请求方信息匹配的目标请求方信息,或者交易执行表中不存在与第二交易请求携带的第一传参哈希值匹配的目标传参哈希值。
在另一些实施例中,节点设备可以根据第二交易请求携带的第一业务方标识生成第一平台方标识,交易执行表与第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值不匹配,可以是交易执行表中不存在与第二交易请求携带的第一业务方标识匹配的目标业务方标识,或者交易执行表中不存在与第一平台方标识匹配的目标平台方标识,或者交易执行表中不存在与第二交易请求携带的第一请求方信息匹配的目标请求方信息,或者交易执行表中不存在与第二交易请求携带的第一传参哈希值匹配的目标传参哈希值。
在又一些实施例中,节点设备可以根据第二交易请求携带的第一业务方标识生成第一平台方标识,再根据第一业务方标识和第一平台方标识生成第一数据实体标识,交易执行表与第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值不匹配,可以是交易执行表中不存在与第二交易请求的第一数据实体标识匹配的目标数据实体标识,或者交易执行表中不存在与第二交易请求携带的第一请求方信息匹配的目标请求方信息,或者交易执行表中不存在与第二交易请求携带的第一传参哈希值匹配的目标传参哈希值。
在再一些实施例中,节点设备可以根据第二交易请求携带的第一业务方标识生成第一平台方标识,再根据第一业务方标识和第一平台方标识生成第一数据实体标识,再根据第一数据实体标识、第一请求方信息和第一传参哈希值生成第一交易执行表唯一键,交易执行表与第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值不匹配,可以是交易执行表中不存在与第二交易请求的第一交易执行表唯一键匹配的目标交易执行表唯一键。
在示例性实施例中,调用所述智能合约获取所述第二交易请求的第二交易执行结果,可包括:验证所述第二交易请求的合法性;若所述第二交易请求具有合法性,则生成包括所述第二交易请求的第二区块;将所述第二区块添加至对应的区块链;若所述第二区块上链成功,则调用所述智能合约执行所述第二交易请求;若成功执行所述第二交易请求,则所述第二交易执行结果为成功执行所述第二交易请求。
第二交易请求的合法性的验证方式可以参照上述第一交易请求的合法性的验证过程。
需要说明的是,虽然本公开实施例以先将具有合法性的交易请求(包括第一交易请求和第二交易请求)上链,然后由节点设备调用智能合约执行上链后的交易请求获得交易执行结果(包括第一交易执行结果、第二交易执行结果和目标交易执行结果)为例进行举例说明,但本公开并不限定于此。
在其他实施例中,节点设备也可以在验证交易请求具有合法性后,先执行交易请求获得对应的交易执行结果,然后打包交易请求对应的交易执行结果生成新的区块再上链。
在另一些实施例中,节点设备也可以在验证交易请求具有合法性后,将具有合法性的交易请求上链,然后对应的终端例如第二终端202从区块链上拉取该交易请求对应的区块,由第二终端202执行拉取的区块中的交易请求,获得对应的交易执行结果,然后,第二终端202将交易执行结果作为交易数据上传至区块链网络,区块链网络中的节点设备将包括交易执行结果的交易数据打包进区块然后上链。例如,若区块中的交易请求涉及到转账,则第二终端202可以是银行机构。
在示例性实施例中,调用所述智能合约获取所述第二交易请求的第二交易执行结果,还可包括:若所述第二区块上链失败,或者,所述第二区块上链成功且执行所述第二交易请求失败,则所述第二交易执行结果为执行所述第二交易请求失败。
其中,所述方法还可包括:若所述第二交易执行结果为执行所述第二交易请求失败,则回滚所述第二交易请求中成功执行的交易操作;将所述第二交易执行结果返回至所述第一请求方的终端设备。
当在区块链上执行多个交易操作时,可能出现部分交易操作成功、部分交易操作失败的情况,多个交易操作不具有一致性,会降低区块链上交易数据的准确性。
区块链具有事务性特点,即当多个交易操作在区块链上执行,且这多个交易操作中部分交易操作执行成功,部分交易操作执行失败时,将执行成功的交易操作进行回滚,使得区块链可以回到执行第二交易请求之前的状态,保证区块链上多个交易操作具有一致性和原子性,避免区块链上出现不准确的交易数据,进而提高区块链的稳定性。
具体地,节点设备获取第二交易请求,在区块链上执行第二交易请求对应的至少一个交易操作,当至少一个交易操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理。下面以至少一个交易操作包括第一交易操作和第二交易操作为例进行举例说明。
第一交易操作和第二交易操作可以包括:区块链上的电子资源转移操作,区块链上的消费凭证信息(可以实现消费发票)转移操作,区块链上的鉴权证明操作,区块链上的物流防伪追溯证明操作,以及与区块链相关联的记录表的调整操作等中的至少一个。
电子资源或消费凭证信息的转移操作是指将电子资源在区块链上的账户之间进行转移;鉴权证明操作是指将权益证明文件等添加至区块链上(登记),后续可以从区块链上查询权益;物流防伪追溯证明操作是指商品生产到销售过程都被记录至区块链上,依赖于区块链的数据不可篡改性,保证已销售出去的商品信息被永久记录,实现商品从生产到销售的整个过程都有迹可循;交易记录表的调整操作是指在交易记录表中调整区块链上所有账户的剩余资源量。
例如,第一交易操作是电子资源转移操作,第二交易操作是权益证明文件上链操作,就是用户在区块链上支付一定的电子资源,可以在区块链上保存自己的权益证明文件。又或者,第一交易操作是资源数据转移操作,第二交易操作是商品物流上链操作,就是用户在区块链上支付一定的电子资源,可以在区块链上保存商品的物流轨迹,生产视频等。
下面以第一交易操作和第二交易操作分别为转移操作和调整操作为例进行说明:
其中,当第一交易操作和第二交易操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理,可包括:当第一交易操作是操作失败的交易操作,且第二交易操作是操作成功的交易操作时,将第二交易操作作为目标交易操作;当第二交易操作是操作失败的交易操作,且第一交易操作是操作成功的交易操作时,将第一交易操作作为目标交易操作;对目标交易操作执行回滚处理。目标交易操作包括目标交易量和目标交易账户。目标交易账户包括转出账户和转入账户。下面均以第二交易操作为目标交易操作为例进行举例说明。
例如,假设目标交易操作包括转移操作(第一交易操作)和调整操作(第二交易操作),转移操作是指在区块链上转移与目标交易量等量的资源数据,调整操作是指在与区块链关联的交易记录表中调整目标交易账户的剩余资源量,交易记录表用于记录区块链上的所有交易账户的剩余资源量。
其中,对目标交易操作执行回滚处理,可包括:将存储在目标区块中的目标交易记录进行作废处理,目标区块属于区块链,目标区块是执行转移操作生成的区块;根据目标交易量,在交易记录表中更新目标交易账户的剩余资源量;更新后的目标交易账户的剩余资源量与执行调整操作前的目标交易账户的剩余资源量相同。
例如,如图2所示,假设4个节点设备都会存储一条区块链。如图3所示,区块链中假设已经包括3个区块。
节点设备获取区块链上的第二交易请求,假设第二交易请求所请求的是从区块链上的账户1(转出账户)向账户2(转入账户)转移数量为10(目标交易量)的电子资源。
节点设备判断账户1和账户2是否是区块链上的账户,当前区块链的长度是否达到最大存储容量(即,是否还能再向区块链中写入数据)等等。若判断出账户1和账户2是区块链上的账户,且判断出当前区块链的长度未达到最大存储容量,节点设备可以从交易记录表中获取转出账户的当前剩余资源量,若转出账户的当前剩余资源量不小于目标交易量,则可以生成与第二交易请求对应的目标交易记录。
若转出账户的当前剩余资源量小于目标交易量,或者区块链上根本就不存在转出账户或转入账户,说明当前不满足电子资源转移条件,可以确定第一交易操作执行失败,进而说明第二交易请求执行失败,可以停止第二交易请求中其他还未开始执行的交易操作。
例如,从交易记录表中查询到账户1的当前剩余资源量等于40,因此账户1的当前剩余资源量大于目标交易量10,则从账户1向账户2转入数量为10的电子资源,可以生成目标交易记录:(转出地址:账户1;转入地址:账户2;资源量:10),第一交易操作执行成功,在区块链上将转移电子资源的目标交易记录存储至区块链上。
将上述目标交易记录存储至区块体,计算目标交易记录的默克尔根,获取当前区块链的最后一个区块(即第3个区块)的哈希散列值以及当前时间戳,将默克尔根、最后一个区块的哈希散列值以及当前时间戳存储至区块头,将上述区块头以及存储了目标交易记录的区块体组合为目标区块,将新生成的目标添加到区块链中。一旦将目标交易记录添加至区块链上,就证明完成了对电子资源的转移操作,即成功执行了第一交易操作。
第一交易操作执行成功后,区块链就包括了4个区块,最后一个区块是新生成的目标区块,目标区块中存储了第一交易操作对应的目标交易记录。
若判断出账户1或者账户2在区块链上根本不存在,或者判断出当前区块链的长度已经达到最大存储容量,或者判断出账户1的当前剩余资源量小于10,则表明第一交易操作执行失败。
第二交易操作可以与第一交易操作可以并行执行,也可以串行执行,即先执行第一交易操作之后再执行第二交易操作,或者先执行第二交易操作再执行第一交易操作,可以根据第一交易操作和第二交易操作之间是否存在依赖关系来确定。
若交易记录表中存在转出账户和转入账户,且转出账户的当前剩余资源量不小于目标交易量,根据第二交易请求调整转出账户的剩余资源量和转入账户的剩余资源量。
例如,还是假设第二交易请求为:请求将资源量为10的电子资源从账户1转移至账户2,从交易记录表中查询到账户1的当前剩余资源量为40,账户2的当前剩余资源量为20,调整操作即第二交易操作即是在交易记录表中将账户1的剩余资源量调整为40-10=30,在交易记录表中将账户2的剩余资源量调整为20+10=30。
此时,若第一交易操作执行成功,但第二交易操作执行失败,节点设备需要对执行成功的交易操作(即第一交易操作)进行回滚。对第一交易操作进行回滚的具体过程为:由于成功执行了第一交易操作后,对应的目标交易记录1已经被存储在区块链上,因此需要将区块链上的目标交易记录作废,若目标区块中只存储了目标交易记录而没有存储其他交易记录,还可以进一步地将新生成的目标区块设置为无效区块。
或者,节点设备根据第二交易请求再生成新的交易请求(称为回滚交易请求),回滚交易请求中的交易账户以及交易量和第二交易请求中的目标交易账户和目标交易量完全相同,不同之处在于第二交易请求中的转入账户是回滚交易请求中的转出账户,第二交易请求中的转出账户是回滚交易请求中的转入账户。
例如,第二交易请求为:请求将资源量为10的电子资源从账户1转移至账户2,回滚交易请求为:请求将资源量为10的电子资源从账户2转移至账户1。
节点设备可以执行回滚交易请求对应的交易操作,执行完回滚交易请求对应的交易操作后,所达到的效果等同于对第一交易操作中的转移操作进行了回滚处理。
分析知道,若不对第一交易操作进行回滚,相当于账户2中凭空出现了数量为10的电子资源,或者说在区块链上凭空出现了数量为10的电子资源,这种由于多个交易操作不具有一致性所凭空出现的电子资源,就是区块链上的不正确的交易数据,可见不正确的交易数据会破坏区块链的稳定性。
后续基于区块链统计账户1的剩余资源量和账户2的剩余资源量时,由于第一交易操作是无效区块,且第一交易操作的目标交易记录是无效交易记录,因此遍历区块链中的所有区块时,可以不必遍历目标区块;或者遍历区块链中的所有区块时,可以不将目标区块中的目标交易记录纳入统计范围内。
若第二交易操作执行成功,但第一交易操作执行失败,节点设备需要对执行成功的交易操作(即第二交易操作)进行回滚。对第二交易操作进行回滚的具体过程为:
节点设备获取第二交易请求中的目标交易量,根据该目标交易量在交易记录表中更新目标交易账户的剩余资源量,使得更新后的目标交易账户的剩余资源量与执行调整操作前的目标交易账户的剩余资源量相同。
例如,第二交易请求为:请求将资源量为10的电子资源从账户1转移至账户2,执行调整操作前,账户1的剩余资源量等于20,账户2的剩余资源量等于30,成功执行调整操作后,账户1的剩余资源量等于20-10=10,账户2的剩余资源量等于30+10=40,对该调整操作进行回滚处理即是,再将账户1的剩余资源量调整回20:30-10=20,将账户2的剩余资源量调整回30:40-10=30。
上述可知,虽然第二交易请求执行失败了,对区块链以及区块链上的账户1和账户2来说,相当于回到了第二交易请求未执行之前的状态,即未从账户1转出电子资源,也未将电子资源转入账户2,多个交易操作具有一致性和原子性,能够保证区块链上的交易数据的准确性和完整性。
需要说明的是,执行第二交易请求的过程中可以包括多个交易操作(例如,转移操作和调整操作),只有这多个交易操作都执行成功,才确定该第二交易请求执行成功,反之一旦存在至少一个交易操作执行失败,就确定该第二交易请求执行失败。
当第一交易操作和第二交易操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理,执行回滚处理可以保证在区块链上的多个操作具有一致性,使得区块链可以回到执行第一交易操作和第二交易操作之前的状态,避免区块链上出现不准确的交易数据,提高区块链的稳定性。
在步骤S650中,若所述第二交易执行结果为成功执行所述第二交易请求,则将所述第二交易执行结果作为所述目标交易执行结果,并获取所述第二交易请求的目标交易哈希值。
本公开实施例中,目标交易执行结果中可以包括表明第二交易请求执行成功的指示信息,例如“1”表示第二交易请求执行成功,“0”表示第二交易请求执行失败,但本公开并不限定于此。在另一些实施例中,目标交易执行结果中还可以包括成功执行第二交易请求之后的具体的返回值。
本公开实施例中,对节点设备如何获得第二交易请求的目标交易哈希值不做限定。
在一些实施例中,节点设备可以采用哈希函数对第二交易请求进行运算,获得目标交易哈希值。
在另一些实施例中,若第一终端201在生成第二交易请求时,对第二交易请求进行哈希运算,得到第二交易请求的第二交易哈希值,并采用私钥对第二交易请求的哈希值进行加密,得到携带第一终端201的签名的第二交易请求,然后将第二交易请求和携带第一终端的签名的第二交易请求一起发送至区块链网络的节点设备,则节点设备在接收到第二交易请求和携带第一终端的签名的第二交易请求后,可以获取第一终端201的公钥,节点设备采用公钥对携带第一终端的签名的第二交易请求进行解密,获得目标交易哈希值。
在步骤S660中,调用所述智能合约将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中。
本公开实施例中,在成功执行第二交易请求之后,可以将第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值及其对应的目标交易执行结果和目标交易哈希值存储至交易执行表中,以用于对后续接收到的与第二交易请求针对的是相同业务的交易请求进行去重过滤,防止重复执行,保证幂等性。
在一些实施例中,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中,可以是直接将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值存储至交易执行表中,第一业务方标识作为目标业务方标识,第一请求方信息作为目标请求方信息,第一传参哈希值作为目标传参哈希值。
在另一些实施例中,节点设备可以根据第二交易请求中的第一业务方标识生成第二交易请求的第一平台方标识。其中,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中,可以将第二交易请求的所述第一业务方标识、第一平台方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值存储至交易执行表中,第一业务方标识作为目标业务方标识,第一平台方标识作为目标平台方标识,第一请求方信息作为目标请求方信息,第一传参哈希值作为目标传参哈希值。
在又一些实施例中,节点设备可以根据第二交易请求携带的第一业务方标识生成第一平台方标识,再根据第一业务方标识和第一平台方标识生成第一数据实体标识。将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中,可以将第二交易请求的第一数据实体标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值存储至交易执行表中,第一数据实体标识作为目标数据实体标识,第一请求方信息作为目标请求方信息,第一传参哈希值作为目标传参哈希值。
在再一些实施例中,节点设备可以根据第二交易请求携带的第一业务方标识生成第一平台方标识,再根据第一业务方标识和第一平台方标识生成第一数据实体标识,再根据第一数据实体标识、第一请求方信息和第一传参哈希值生成第一交易执行表唯一键,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中,可以将第二交易请求的第一交易执行表唯一键、所述目标交易执行结果和所述目标交易哈希值存储至交易执行表中,第一交易执行表唯一键作为目标交易执行表唯一键。
在步骤S670中,将所述目标交易执行结果和所述目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第二交易请求的第二交易哈希值相同。
具体的,在第二交易请求未被上传至节点设备101时,第一终端201可对第二交易请求进行哈希运算,得到第二交易请求的第二交易哈希值。当节点设备将成功执行第二交易请求获得的目标交易哈希值返回至第一终端时,第一终端可以将接收到的目标交易哈希值与第二交易哈希值进行比较,若两者一致,则可以判定本次接收到的目标交易执行结果是成功执行第二交易请求返回的,历史上没有执行过与第二交易请求相同的业务。
图7示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程示意图。如图7所示,可以包括如下步骤。
在步骤S710中,交易提交。
本公开实施例中,交易提交可以是指任意终端设备发送给区块链网络中的节点设备的交易请求,可以包括上述的第一终端201发送给节点设备101的第一交易请求和第二交易请求。
任意终端设备发送给区块链网络中的节点设备的交易请求中均指定了业务方标识,例如上述第一交易请求中指定了第一业务方标识,第二交易请求中也指定了第一业务方标识,以用于区分每次交易请求所针对的操作对象是谁。
在步骤S720中,区块链核心(Core)710执行重复交易过滤。
本公开实施例中,区块链网络接收到任意终端设备发送的交易请求后,可以利用智能合约维护的交易执行表对接收到的交易请求进行重复交易过滤,这里的重复交易过滤是指判断当前接收到的交易请求是否在此之前被成功执行过并记录在交易执行表中,防止针对相同业务的交易请求被重复执行。
具体地,上述步骤S720可以进一步包括以下由业务合约720执行的以下步骤。
本公开实施例中,业务合约720即上述用于维护交易执行表的智能合约。
在步骤S721中,查询交易执行表。
节点设备可以调用业务合约720查询交易执行表,以判断当前接收到的交易请求所针对的业务是否在历史上已经被成功执行过。
在步骤S722中,返回历史执行成功交易哈希值和业务结果。
若通过查询交易执行表,获知当前接收到的交易请求已经在历史上被成功执行过,则节点设备可以直接向发送该交易请求的终端设备返回历史执行成功交易哈希值和业务结果。
例如,当节点设备接收到第一交易请求时,通过查询发现交易执行表中存在与第一交易请求携带的第一业务方标识、第一请求方信息和第一传入参数(或者第一传参哈希值)匹配的目标业务方标识、目标请求方信息和目标传入参数,可以将交易执行表中与目标业务方标识、目标请求方信息和目标传入参数匹配的目标交易执行结果(业务结果)和目标交易哈希值(历史执行成功交易哈希值)返回给第一终端。
在步骤S723中,执行业务。
若通过查询交易执行表,获知当前接收到的交易请求没有在历史上被成功执行过,则节点设备可以执行当前接收到的交易请求所对应的业务。
在步骤S724中,若执行成功,则写入交易执行表。
例如,当节点设备接收到第二交易请求时,通过查询发现交易执行表中步存在与第二交易请求携带的第一业务方标识、第一请求方信息和第一传入参数(或者第一传参哈希值)匹配的目标业务方标识、目标请求方信息和目标传入参数,则节点设备执行该第二交易请求,获得第二交易请求的目标交易执行结果和目标交易哈希值,并将第二交易请求携带的第一业务方标识、第一请求方信息和第一传参哈希值分别作为目标业务方标识、目标请求方信息和目标传参哈希值,将目标业务方标识、目标请求方信息、目标传参哈希值、目标交易执行结果和目标交易哈希值关联存储至交易执行表中。
在步骤S725中,若执行失败或者写入交易执行表失败,则进行失败回滚。
例如,若节点设备没有成功执行第二交易请求,或者将执行成功的第二交易请求的目标业务方标识、目标请求方信息、目标传参哈希值、目标交易执行结果和目标交易哈希值关联存储至交易执行表失败,则进行失败回滚,具体的回滚过程可以参照上述实施例。
在步骤S726中,返回步骤。具体地为,在步骤S727中,返回当前执行成功交易哈希值和业务结果。
例如,若执行成功,且成功地将第二交易请求的目标业务方标识、目标请求方信息、目标传参哈希值、目标交易执行结果和目标交易哈希值关联存储至交易执行表,则向第一终端返回目标交易执行结果(业务结果)和目标交易哈希值(当前执行成功交易哈希值)。
图8示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程示意图。图8实施例提供的方法可以应用于与区块链网络通信的终端设备,区块链网络中部署智能合约,智能合约用于维护交易执行表。
图8实施例提供的方法可以包括以下步骤。
在步骤S810中,通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数。
在步骤S820中,通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值。
在步骤S830中,通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配。
在步骤S840中,接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述交易执行表中的所述目标交易执行结果和所述目标交易哈希值与目标业务方标识与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配。
在步骤S850中,确定所述目标交易哈希值与所述第一交易哈希值不同。
图9示意性示出了根据本公开的又一个实施例的基于区块链的数据处理方法的流程图。图9实施例提供的方法与上述图8实施例提供的方法之间的区别在于,在上述步骤S810之前,即在通过第一请求方的终端设备生成第一交易请求之前,所述方法还可以进一步包括以下步骤。
在步骤S910中,通过所述第一请求方的终端设备生成第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数。
在步骤S920中,通过所述第一请求方的终端设备生成所述第二交易请求的第二交易哈希值。
在步骤S930中,通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第二交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则成功执行所述第二交易请求,获得第二交易执行结果和第二交易哈希值,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述第二交易执行结果和所述第二交易哈希值关联存储至所述交易执行表中,其中所述第二交易执行结果作为所述目标交易执行结果,所述第二交易哈希值作为所述目标交易哈希值。
在步骤S940中,通过所述第一请求方的终端设备接收所述节点设备返回的所述目标交易执行结果和所述目标交易哈希值。
在步骤S950中,确定所述目标交易哈希值与所述第二交易哈希值相同。
区块链具有数据永久保存,难以篡改,可追溯的特性。同时区块链以交易为单位,通过交易池对上链请求进行管理,理论上任意提交的交易被执行时间是不可预测的,交易也不能被重复提交执行。同时链上操作均是事务性的,要不然一笔交易的执行全部成功,或者全部失败被回滚,不会出现部分操作失败的情景。
本公开实施方式提供的基于区块链的数据处理方法,公开了一种基于区块链智能合约的业务请求幂等性问题的解决方案,通过交易执行表保证存在相同业务的多笔交易并发执行的情况下,也只有一笔业务能够执行成功,能够识别不同区块中包括的交易请求对应相同业务,并确保该相同业务的不同交易请求不会被重复性执行。用户可以根据交易请求中携带的业务方标识进行多次上链重试,而无需关心重复上链提交的问题,确保幂等性。通过幂等性保证,业务方在对接区块链网络时,可以避免因为区块链异步上链特性导致的返回超时,或者回包丢失等错误,可通过指定业务方标识进行多次请求重试,减少业务方的开发接入成本。
以下介绍本公开的相关设备实施例,可以用于执行本公开上述的基于区块链的数据处理方法。对于本公开相关设备实施例中未披露的细节,请参照本公开上述的基于区块链的数据处理方法的实施例。
图10示意性示出了根据本公开的一实施例的节点设备的框图。所述节点设备设置于区块链网络中,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表。
参照图10所示,根据本公开的一个实施例的节点设备1000可以包括:第一交易请求获取单元1010、第一传参哈希值生成单元1020、交易执行表匹配单元1030以及目标交易执行结果返回单元1040。
本公开实施例中,第一交易请求获取单元1010可以用于获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数。第一传参哈希值生成单元1020可以用于调用所述智能合约生成所述第一传入参数的第一传参哈希值。交易执行表匹配单元1030可以用于调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配。目标交易执行结果返回单元1040可以用于将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
在示例性实施例中,目标交易执行结果返回单元1040可包括:第一合法性验证单元,可以用于验证所述第一交易请求的合法性;第一区块生成单元,用于若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;第一区块上链单元,可以用于将所述第一区块添加至对应的区块链;目标参数检索单元,可以用于若所述第一区块上链成功,则从所述交易执行表中检索到分别与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标业务方标识、目标请求方信息和目标传参哈希值;第一目标交易执行结果返回单元,可以用于将与所述目标业务方标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
在示例性实施例中,目标交易执行结果返回单元1040可包括:第二合法性验证单元,可以用于验证所述第一交易请求的合法性;第一区块获得单元,用于若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;第一区块添加单元,可以用于将所述第一区块添加至对应的区块链;第一平台方标识生成单元,可以用于若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;第一数据实体标识生成单元,可以用于根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;目标参数查询单元,可以用于从所述交易执行表中检索到分别与所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值匹配的目标数据实体标识、目标请求方信息和目标传参哈希值;第二目标交易执行结果返回单元,可以用于将与所述目标数据实体标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
在示例性实施例中,目标交易执行结果返回单元1040可包括:第三合法性验证单元,可以用于验证所述第一交易请求的合法性;第一区块获取单元,用于若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;第一区块增加单元,可以用于将所述第一区块添加至对应的区块链;第一平台方标识获得单元,可以用于若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;第一数据实体标识获得单元,可以用于根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;第一交易执行表唯一键生成单元,可以用于根据所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值生成第一交易执行表唯一键;第三目标交易执行结果返回单元,可以用于若所述第一交易执行表唯一键与所述交易执行表中的目标交易执行表唯一键匹配,则将与所述目标交易执行表唯一键对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
在示例性实施例中,节点设备1000还可包括:第一交易执行结果返回单元,可以用于若所述第一交易请求不具有合法性,或者所述第一区块上链失败,则向所述第一请求方的终端设备返回执行所述第一交易请求失败的第一交易执行结果。
在示例性实施例中,节点设备1000还可以包括:第二交易请求获取单元,可以用于在获取第一请求方的终端设备发送的第一交易请求之前,获取所述第一请求方的终端设备发送的第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数;第一传参哈希值获得单元,可以用于调用所述智能合约计算生成所述第一传入参数的第一传参哈希值;第二交易请求匹配单元,可以用于调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;第二交易执行结果获取单元,可以用于若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则调用所述智能合约获取所述第二交易请求的第二交易执行结果;目标交易哈希值获取单元,可以用于若所述第二交易执行结果为成功执行所述第二交易请求,则将所述第二交易执行结果作为所述目标交易执行结果,并获取所述第二交易请求的目标交易哈希值;目标参数关联存储单元,可以用于调用所述智能合约将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中;目标交易哈希值返回单元,可以用于将所述目标交易执行结果和所述目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第二交易请求的第二交易哈希值相同。
在示例性实施例中,第二交易执行结果获取单元可包括:第二交易请求合法性验证单元,可以用于验证所述第二交易请求的合法性;第二区块生成单元,可以用于若所述第二交易请求具有合法性,则生成包括所述第二交易请求的第二区块;第二区块上链单元,可以用于将所述第二区块添加至对应的区块链;第二交易请求执行单元,可以用于若所述第二区块上链成功,则调用所述智能合约执行所述第二交易请求;第二交易请求成功执行结果获得单元,可以用于若成功执行所述第二交易请求,则所述第二交易执行结果为成功执行所述第二交易请求。
在示例性实施例中,第二交易执行结果获取单元还可包括:第二交易请求执行失败结果获得单元,可以用于若所述第二区块上链失败,或者,所述第二区块上链成功且执行所述第二交易请求失败,则所述第二交易执行结果为执行所述第二交易请求失败;
在示例性实施例中,节点设备1000还可包括:操作回滚单元,可以用于若所述第二交易执行结果为执行所述第二交易请求失败,则回滚所述第二交易请求中成功执行的交易操作;第二交易执行结果返回单元,可以用于将所述第二交易执行结果返回至所述第一请求方的终端设备。
图11示意性示出了根据本公开的一实施例的终端设备的框图。所述终端设备与区块链网络通信,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表。
参照图11所示,根据本公开的一个实施例的终端设备1100可以包括:第一交易请求生成单元1110、第一交易哈希值生成单元1120、第一交易请求发送单元1130、目标交易执行结果接收单元1140以及目标交易哈希值确定单元1150。
本公开实施例中,第一交易请求生成单元1110可以用于通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数。第一交易哈希值生成单元1120可以用于通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值。第一交易请求发送单元1130可以用于通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配。目标交易执行结果接收单元1140可以用于接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述交易执行表中的所述目标交易执行结果和所述目标交易哈希值与目标业务方标识与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配。目标交易哈希值确定单元1150可以用于确定所述目标交易哈希值与所述第一交易哈希值不同。
在示例性实施例中,终端设备1100还可包括:第二交易请求生成单元,可以用于在通过第一请求方的终端设备生成第一交易请求之前,通过所述第一请求方的终端设备生成第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数;第二交易哈希值生成单元,可以用于通过所述第一请求方的终端设备生成所述第二交易请求的第二交易哈希值;第二交易请求发送单元,可以用于通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第二交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则成功执行所述第二交易请求,获得第二交易执行结果和第二交易哈希值,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述第二交易执行结果和所述第二交易哈希值关联存储至所述交易执行表中,其中所述第二交易执行结果作为所述目标交易执行结果,所述第二交易哈希值作为所述目标交易哈希值;目标交易执行结果哈希值接收单元,可以用于通过所述第一请求方的终端设备接收所述节点设备返回的所述目标交易执行结果和所述目标交易哈希值;目标交易哈希值相同确定单元,可以用于确定所述目标交易哈希值与所述第二交易哈希值相同。
图12示出了适于用来实现本公开实施例的电子设备的结构示意图。需要说明的是,图12示出的电子设备1200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,电子设备1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从储存部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。在RAM 1203中,还存储有系统操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的储存部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入储存部分1208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有至少一个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块和/或单元和/或子单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的模块和/或单元和/或子单元也可以设置在处理器中。其中,这些模块和/或单元和/或子单元的名称在某种情况下并不构成对该模块和/或单元和/或子单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图5或图6或图7或图8或图9所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元或者子单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元或者子单元的特征和功能可以在一个模块或者单元或者子单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元或者子单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
Claims (14)
1.一种基于区块链的数据处理方法,其特征在于,所述方法应用于区块链网络中的节点设备,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表;其中,所述方法包括:
获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;
调用所述智能合约生成所述第一传入参数的第一传参哈希值;
调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;
将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
2.如权利要求1所述的方法,其特征在于,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,包括:
验证所述第一交易请求的合法性;
若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;
将所述第一区块添加至对应的区块链;
若所述第一区块上链成功,则从所述交易执行表中检索到分别与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标业务方标识、目标请求方信息和目标传参哈希值;
将与所述目标业务方标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
3.如权利要求1所述的方法,其特征在于,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,包括:
验证所述第一交易请求的合法性;
若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;
将所述第一区块添加至对应的区块链;
若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;
根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;
从所述交易执行表中检索到分别与所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值匹配的目标数据实体标识、目标请求方信息和目标传参哈希值;
将与所述目标数据实体标识、所述目标请求方信息和所述目标传参哈希值对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
4.如权利要求1所述的方法,其特征在于,将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,包括:
验证所述第一交易请求的合法性;
若所述第一交易请求具有合法性,则生成包括所述第一交易请求的第一区块;
将所述第一区块添加至对应的区块链;
若所述第一区块上链成功,则根据所述第一业务方标识生成第一平台方标识;
根据所述第一业务方标识和所述第一平台方标识生成第一数据实体标识;
根据所述第一数据实体标识、所述第一请求方信息和所述第一传参哈希值生成第一交易执行表唯一键;
若所述第一交易执行表唯一键与所述交易执行表中的目标交易执行表唯一键匹配,则将与所述目标交易执行表唯一键对应的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备。
5.如权利要求2至4任一项所述的方法,其特征在于,还包括:
若所述第一交易请求不具有合法性,或者所述第一区块上链失败,则向所述第一请求方的终端设备返回执行所述第一交易请求失败的第一交易执行结果。
6.如权利要求1所述的方法,其特征在于,在获取第一请求方的终端设备发送的第一交易请求之前,所述方法还包括:
获取所述第一请求方的终端设备发送的第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数;
调用所述智能合约计算生成所述第一传入参数的第一传参哈希值;
调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;
若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则调用所述智能合约获取所述第二交易请求的第二交易执行结果;
若所述第二交易执行结果为成功执行所述第二交易请求,则将所述第二交易执行结果作为所述目标交易执行结果,并获取所述第二交易请求的目标交易哈希值;
调用所述智能合约将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述目标交易执行结果和所述目标交易哈希值关联存储至所述交易执行表中;
将所述目标交易执行结果和所述目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第二交易请求的第二交易哈希值相同。
7.如权利要求6所述的方法,其特征在于,调用所述智能合约获取所述第二交易请求的第二交易执行结果,包括:
验证所述第二交易请求的合法性;
若所述第二交易请求具有合法性,则生成包括所述第二交易请求的第二区块;
将所述第二区块添加至对应的区块链;
若所述第二区块上链成功,则调用所述智能合约执行所述第二交易请求;
若成功执行所述第二交易请求,则所述第二交易执行结果为成功执行所述第二交易请求。
8.如权利要求7所述的方法,其特征在于,调用所述智能合约获取所述第二交易请求的第二交易执行结果,还包括:
若所述第二区块上链失败,或者,所述第二区块上链成功且执行所述第二交易请求失败,则所述第二交易执行结果为执行所述第二交易请求失败;
其中,所述方法还包括:
若所述第二交易执行结果为执行所述第二交易请求失败,则回滚所述第二交易请求中成功执行的交易操作;
将所述第二交易执行结果返回至所述第一请求方的终端设备。
9.一种基于区块链的数据处理方法,其特征在于,所述方法应用于与区块链网络通信的终端设备,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表;其中,所述方法包括:
通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;
通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值;
通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;
接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述交易执行表中的所述目标交易执行结果和所述目标交易哈希值与目标业务方标识与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配;
确定所述目标交易哈希值与所述第一交易哈希值不同。
10.如权利要求9所述的方法,其特征在于,在通过第一请求方的终端设备生成第一交易请求之前,所述方法还包括:
通过所述第一请求方的终端设备生成第二交易请求,所述第二交易请求携带所述第一业务方标识、所述第一请求方信息和用于执行所述第二交易请求的第一传入参数;
通过所述第一请求方的终端设备生成所述第二交易请求的第二交易哈希值;
通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第二交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,若所述交易执行表与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值不匹配,则成功执行所述第二交易请求,获得第二交易执行结果和第二交易哈希值,将所述第一业务方标识、所述第一请求方信息、所述第一传参哈希值、所述第二交易执行结果和所述第二交易哈希值关联存储至所述交易执行表中,其中所述第二交易执行结果作为所述目标交易执行结果,所述第二交易哈希值作为所述目标交易哈希值;
通过所述第一请求方的终端设备接收所述节点设备返回的所述目标交易执行结果和所述目标交易哈希值;
确定所述目标交易哈希值与所述第二交易哈希值相同。
11.一种节点设备,所述节点设备设置于区块链网络中,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表;其中,所述节点设备包括:
第一交易请求获取单元,用于获取第一请求方的终端设备发送的第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;
第一传参哈希值生成单元,用于调用所述智能合约生成所述第一传入参数的第一传参哈希值;
交易执行表匹配单元,用于调用所述智能合约将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;
目标交易执行结果返回单元,用于将所述交易执行表中与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配的目标交易执行结果和目标交易哈希值返回至所述第一请求方的终端设备,所述目标交易哈希值与所述第一交易请求的第一交易哈希值不同。
12.一种终端设备,其特征在于,所述终端设备与区块链网络通信,所述区块链网络中部署智能合约,所述智能合约用于维护交易执行表;其中,所述终端设备包括:
第一交易请求生成单元,用于通过第一请求方的终端设备生成第一交易请求,所述第一交易请求携带第一业务方标识、第一请求方信息和用于执行所述第一交易请求的第一传入参数;
第一交易哈希值生成单元,用于通过所述第一请求方的终端设备生成所述第一交易请求的第一交易哈希值;
第一交易请求发送单元,用于通过所述第一请求方的终端设备向所述区块链网络中的节点设备发送所述第一交易请求,以便所述节点设备调用所述智能合约生成所述第一传入参数的第一传参哈希值,将所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值与所述交易执行表匹配;
目标交易执行结果接收单元,用于接收所述节点设备返回的目标交易执行结果和目标交易哈希值,其中所述交易执行表中的所述目标交易执行结果和所述目标交易哈希值与目标业务方标识与所述第一业务方标识、所述第一请求方信息和所述第一传参哈希值匹配;
目标交易哈希值确定单元,用于确定所述目标交易哈希值与所述第一交易哈希值不同。
13.一种电子设备,其特征在于,包括:
至少一个处理器;
存储装置,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-8中任一项所述的方法或者如权利要求9-10中任一项所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一项所述的方法或者如权利要求9-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110801455.3A CN115619395A (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110801455.3A CN115619395A (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的数据处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115619395A true CN115619395A (zh) | 2023-01-17 |
Family
ID=84855637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110801455.3A Pending CN115619395A (zh) | 2021-07-15 | 2021-07-15 | 基于区块链的数据处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115619395A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117333298A (zh) * | 2023-10-15 | 2024-01-02 | 广东工程职业技术学院 | 一种基于区块链的股权交易方法及装置 |
CN117952614A (zh) * | 2024-03-14 | 2024-04-30 | 深圳市金政软件技术有限公司 | 支付防重方法、装置、终端设备和可读存储介质 |
-
2021
- 2021-07-15 CN CN202110801455.3A patent/CN115619395A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117333298A (zh) * | 2023-10-15 | 2024-01-02 | 广东工程职业技术学院 | 一种基于区块链的股权交易方法及装置 |
CN117952614A (zh) * | 2024-03-14 | 2024-04-30 | 深圳市金政软件技术有限公司 | 支付防重方法、装置、终端设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11949670B2 (en) | Method and system for trustworthiness using digital certificates | |
US11210661B2 (en) | Method for providing payment gateway service using UTXO-based protocol and server using same | |
US11669811B2 (en) | Blockchain-based digital token utilization | |
JP6841911B2 (ja) | 情報保護用のシステム及び方法 | |
CN111034114B (zh) | 具有记录安全性的区块链架构 | |
US11469891B2 (en) | Expendable cryptographic key access | |
CN109716707B (zh) | 分布式电子记录和交易历史的服务器设备和方法 | |
US20210083856A1 (en) | Improved hardware security module management | |
CN111488626B (zh) | 基于区块链的数据处理方法、装置、设备及介质 | |
CN113706313A (zh) | 基于区块链的融资方法、系统及计算机可读存储介质 | |
CN117425907A (zh) | 用于使用散列锁的经调解的跨分类账稳定币原子交换的方法和系统 | |
CN115619395A (zh) | 基于区块链的数据处理方法及相关设备 | |
CN110598479B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
WO2023027846A1 (en) | Method and system for privately managed digital assets on an enterprise blockchain | |
CN110852891B (zh) | 基于轧差的数据处理方法、装置以及可读存储介质 | |
US12052369B2 (en) | Method for securing private structured databases within a public blockchain | |
CN119256317A (zh) | 用于处理跨两个区块链的资产交换的方法及系统 | |
CN114358948A (zh) | Nft原子交换方法、系统、计算机可读存储介质及终端设备 | |
US12236418B2 (en) | Blockchain-based system for management of digital tokens | |
CN114219649B (zh) | 跨链资产转移方法、计算机设备和存储介质 | |
CN111626735B (zh) | 一种数据交互系统、方法和模块 | |
US20240330901A1 (en) | Method and system for mastercard authenticating non-fungible tokens | |
KR102503504B1 (ko) | 블록체인 네트워크를 이용하는 정품인증 시스템 및 그 방법 | |
US20230177500A1 (en) | Method of conducting financial transactions | |
CN110889040B (zh) | 用于推送信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |