CN111597077A - 数据处理方法、装置、计算机设备以及存储介质 - Google Patents

数据处理方法、装置、计算机设备以及存储介质 Download PDF

Info

Publication number
CN111597077A
CN111597077A CN202010402598.2A CN202010402598A CN111597077A CN 111597077 A CN111597077 A CN 111597077A CN 202010402598 A CN202010402598 A CN 202010402598A CN 111597077 A CN111597077 A CN 111597077A
Authority
CN
China
Prior art keywords
transaction
blockchain
request
account
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010402598.2A
Other languages
English (en)
Other versions
CN111597077B (zh
Inventor
李茂材
王宗友
时一防
朱耿良
蓝虎
黄焕坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010402598.2A priority Critical patent/CN111597077B/zh
Publication of CN111597077A publication Critical patent/CN111597077A/zh
Priority to PCT/CN2021/085854 priority patent/WO2021227706A1/zh
Application granted granted Critical
Publication of CN111597077B publication Critical patent/CN111597077B/zh
Priority to US17/738,612 priority patent/US20220269670A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据处理方法、装置、计算机设备以及存储介质,方法包括:获取区块链上的操作事务;操作事务包括第一交易请求和第二交易请求,在区块链上执行第一交易请求对应的第一交易操作,以及执行第二交易请求对应的第二交易操作,当第一交易操作和第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。采用本申请,可以使区块链上的多个操作具有一致性,以及提高区块链上交易数据的准确性。

Description

数据处理方法、装置、计算机设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、计算机设备以及存储介质。
背景技术
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。简单的讲,区块链就是去中心化的分布式账本。
当在区块链上执行多个操作时,可能出现部分操作成功部分操作失败的情况,多个操作不具有一致性,会降低区块链上交易数据的准确性。
发明内容
本申请实施例提供一种数据处理方法、装置、计算机设备以及存储介质,可以使区块链上的多个操作具有一致性,以及提高区块链上交易数据的准确性。
本申请实施例一方面提供了一种数据处理方法,包括:
获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
本申请实施例一方面提供了一种数据处理装置,包括:
获取模块,用于获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
执行模块,用于在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
回滚模块,用于当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
其中,所述第一交易请求包括第一交易账户,所述第二交易请求包括第二交易账户,执行第一交易操作和第二交易操作时,所述第一交易账户和所述第二交易账户处于锁定状态;
所述装置还包括:
解除模块,用于解除所述第一交易账户和所述第二交易账户的锁定状态,生成所述操作事务执行失败的通知消息。
其中,所述回滚模块具体用于:
当所述第一交易操作是操作结果失败的交易操作,且第二交易操作是操作结果成功的交易操作时,将所述第二交易操作作为目标交易操作,对所述目标交易操作执行回滚处理;
当所述第二交易操作是操作结果失败的交易操作,且第一交易操作是操作结果成功的交易操作时,将所述第一交易操作作为目标交易操作,对所述目标交易操作执行回滚处理。
其中,所述目标交易操作包括转移操作和调整操作,所述转移操作是指在区块链上转移与目标交易量等量的资源数据,所述调整操作是指在与所述区块链关联的交易记录表中调整目标交易账户的剩余资源量;所述交易记录表用于记录所述区块链上的所有交易账户的剩余资源量;所述目标交易操作对应的交易请求包括所述目标交易量和所述目标交易账户。
其中,所述回滚模块在对所述目标交易操作执行回滚处理时,具体用于:将存储在目标区块中的目标交易记录进行作废处理;所述目标区块属于所述区块链,所述目标区块是执行述转移操作后生成的区块,所述目标区块用于存储所述目标交易记录,根据所述目标交易量,在所述交易记录表中更新所述目标交易账户的剩余资源量;更新后的目标交易账户的剩余资源量与执行所述调整操作前的目标交易账户的剩余资源量相同。
其中,所述获取模块,包括:
获取单元,用于获取所述区块链上的第一交易请求和第二交易请求;
组合单元,用于确定所述第一交易请求和所述第二交易请求的操作顺序,按照所述操作顺序将所述第一交易请求和所述第二交易请求组合为所述操作事务。
其中,所述操作顺序包括:并行操作顺序和串行操作顺序;
所述获取单元,具体用于:
若所述第一交易请求和所述第二交易请求存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为串行操作顺序;
若所述第一交易请求和所述第二交易请求不存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为并行操作顺序。
其中,所述区块链包括第一区块链和第二区块链,所述第一区块链和所述第二区块链具有关联关系;所述第一交易请求是所述第一区块链上的请求,所述第二交易请求是所述第二区块链上的请求;
所述执行模块,具体用于在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作。
其中,所述数据处理方法由轻量节点执行,所述第一区块链对应第一区块链网络,所述第二区块链对应第二区块链网络,所述第一区块链网络包括所述轻量节点和第一共识节点,所述第二区块链网络包括所述轻量节点和所述第二共识节点;
所述执行模块在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作时,具体用于将所述第一交易请求发送至所述第一共识节点,以使所述第一共识节点在所述第一区块链上执行第一交易操作;以及,将所述第二交易请求发送至所述第二共识节点,以使所述第二共识节点在所述第二区块链上执行第二交易操作。
其中,还包括:
接收模块,用于接收所述第一共识节点发送的第一交易操作的操作结果,以及接收所述第二共识节点发送的第二交易操作的操作结果。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述实施例中的方法。
本申请实施例一方面提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行上述实施例中的方法。
本申请通过在区块链上执行第一交易操作和第二交易操作,当第一操作和第二操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理,执行回滚处理可以保证在区块链上的多个操作具有一致性,使得区块链可以回到执行第一操作和第二操作之前的状态,避免区块链上出现不准确的交易数据,提高区块链的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络的示意图;
图2a-图2b是本申请实施例提供的一种数据处理的场景示意图;
图3是本申请实施例提供的一种数据处理方法的示意图;
图4是本申请实施例提供的一种数据处理方法的交互示意图;
图5是本申请实施例提供的一种跨链执行事务的示意图;
图6是本申请实施例提供的一种数据处理方法的流程示意图;
图7是本申请实施例提供的一种数据处理装置的结构示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链(Block chain)是分布式数据存储、点对点传输(P2P,Peer To Peer)、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一个或多个交易信息,用于验证其信息的有效性(防伪)和生成下一个区块。
请参见图1,是本申请实施例提供的一种区块链网络的示意图,节点1、节点2、节点3以及节点4可以组合为区块链网络,每个节点都可以存储一条相同的区块链,上述4个节点也可以称为区块链节点,每个节点都可以包括硬件层、中间层、操作***层和应用层。可以理解的是,节点可以包括计算机设备。
上述节点可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。节点还可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。各节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。目前,技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
目前,云技术主要分为云基础技术类以及云应用类;云基础技术类可以进一步细分为:云计算、云储存、数据库以及大数据等;云应用类可以进一步细分为:医疗云、云物联、云安全、云呼叫、私有云、公有云、混合云、云游戏、云教育、云会议、云社交以及人工智能云服务等。
本申请的数据处理方法可以涉及云技术下属的云计算和云储存:
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
在本申请中,可以由节点通过云计算技术获取足够算力和存储空间,进而执行本申请中所涉及的第一交易操作和第二交易操作。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
在本申请中,区块链可以由节点通过云存储技术存储在“云”上,当需要从区块链上读取区块或需要向区块链上写入区块时,可以从云存储设备中拉取区块或者向云存储设备发送区块,以降低节点的存储压力。
本申请所涉及的数据处理方法的应用场景为:在区块链上执行事务,即当多个操作在区块链上执行,且这多个操作中部分操作执行成功,部分操作执行失败时,将执行成功的操作进行回滚,保证区块链上多个操作具有一致性和原子性,避免区块链上出现不准确的交易数据,进而提高区块链的稳定性。
下述图2a-图2b对应的实施例以在区块链上进行资源转移操作为例进行具体说明:请参见图2a-图2b,是本申请实施例提供的一种数据处理的场景示意图。图2a所示的区块链网络包括4个节点,4个节点分别是:节点1、节点2、节点3以及节点4。这4个节点都会存储一条区块链,从图2a可以看出此时区块链中包括3个区块。
节点获取事务20c,事务20c包括请求20a和请求20b,请求20a的具体内容为:请求向区块链上的账户2转入数量为10的资源数据;请求20b的具体内容为:请求从区块链上的账户1转出数量为10的资源数据。通俗来说,事务20c所请求的就是从区块链上的账户1向账户2转移数量为10的资源数据。
假设请求20a和请求20b之间具有数据依赖关系,且请求20b依赖于请求20a,节点首先执行请求20a所请求的操作1:节点判断账户2是否是区块链上的账户,当前区块链的长度是否达到最大存储容量等等。若判断出账户2是区块链上的账户,且判断出当前区块链的长度未达到最大存储容量,向账户2转入数量为10的资源数据,操作1执行成功。在区块链上转移资源数据的实质即是将请求20a对应的交易记录存储至区块链上。
将请求20a对应的交易记录存储至区块链的具体过程为:获取请求20a对应的交易记录1,交易记录1可以具体为:(转出地址:无,转入地址:账户2,数量:10)。将上述交易记录1存储至区块体,计算交易记录1的默克尔根,获取当前区块链的最后一个区块(即是第3个区块)的哈希散列值以及当前时间戳,将上述默克尔根、最后一个区块的哈希散列值以及当前时间戳存储至区块头,将上述区块头以及存储了交易记录1的区块体组合为区块20d,将新生成的区块20d添加至区块链中。
如图2b所示,操作1执行成功后,区块链就包括了4个区块,最后一个区块是新生成的区块20d,区块20d中存储了请求20a对应的交易记录1。
操作1执行成功后,节点接着执行请求20b所请求的操作2:节点首先判断账户1是否为区块链上的账户,当前区块链的长度是否达到最大存储容量等,由于请求20b是请求从账户1转出资源数据,因此节点还需要判断账户1的剩余资源量是否不小于10。当然,若判断出账户1在区块链上根本不存在,或者判断出当前区块链的长度已经达到最大存储容量(即,不能再向区块链中写入数据了),或者判断出账户1的剩余资源量小于10,表明操作2执行失败。
此时,请求20a对应的操作1执行成功,但请求20b对用的操作2执行失败,节点需要对执行成功的操作(即操作1)进行回滚。对操作1进行回滚的具体过程为:由于成功执行了操作1后,请求20a对应的交易记录1已经被存储在区块链上,因此需要将区块链上的交易记录1作废,且由于区块20d中只存储了交易记录1,还可以进一步地将新生成的区块20d设置为无效区块。
分析知道,若不对操作1进行回滚,相当于账户2中凭空“出现”了数量为10的资源数据,或者说在区块链上凭空“出现”了数量为10的资源数据,这种由于多个操作不具有一致性所凭空出现的资源数据,就是区块链上的不正确的交易数据,可见不正确的交易数据会破坏区块链的稳定性。
后续基于区块链统计账户1的剩余资源量和账户2的剩余资源量时,由于区块20d是无效区块,且区块20d的交易记录1是无效交易记录,因此遍历区块链中的所有区块时,可以不必遍历区块20d;或者遍历区块链中的所有区块时,可以不将区块20d中的交易记录1纳入统计范围内。
或者,后续再对账户2进行资源转出操作时,由于上述对账户2的转入操作已经被回滚,因此账户2下属的资产不包括上述转入操作对应的数量为10的资源数据。
上述可知,虽然事务20c执行失败了,对区块链以及区块链上的账户1和账户2来说,相当于回到了事务20c未执行之前的状态,即未从账户1转出资源数据,也未将资源数据转入账户2。多个操作具有一致性和原子性,能够保证区块链上的交易数据的准确性完整性。
其中,获取操作事务(如上述实施例中的事务20c),执行第一操作(如上述实施例中的操作1),执行第二操作(如上述实施例中的操作2),以及执行回滚处理(如上述将交易记录1作废以及将区块20d设置为无效区块)的具体过程可以参见下述图3-图6对应的实施例。
请参见图3,是本申请实施例提供的一种数据处理方法的示意图,数据处理方法包括如下步骤:
步骤S101,获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求。
具体的,本申请的数据处理方法可以应用于区块链,下述实施例以区块链节点(如上述实施例中的节点)为执行主体进行描述,区块链节点是区块链网络(如上述图2a-图2b对应实施例中的节点1、节点2、节点3以及节点4所组成的网络)中的任一节点。
区块链节点获取区块链上的操作事务(如上述图2a-图2b对应实施例中的事务20c),操作事务包括至少两个交易请求,下述以至少两个交易请求中的其中两个交易请求为例进行说明。将这两个交易请求称为第一交易请求(如上述图2a-图2b对应实施例中的请求20a)和第二交易请求(如上述图2a-图2b对应实施例中的请求20b)。
例如,第一交易请求是:请求将资源量为10的资源数据从账户1转移至账户2;第二交易请求是:请求将资源量为20的资源数据从账户3转移至账户4,资源数据可以是游戏币,资源量为10的资源数据即是10个游戏币。包含上述2个交易请求的操作事务所请求的即是:从账户1转移资源数据至账户2,且从账户3转移资源数据至账户4。
再例如,第一交易请求是:请求从账户5转出资源量为30的资源数据;第二交易请求是:请求将资源量为30的资源数据转入至账户6。包含上述2个交易请求的操作事务所请求的即是:从账户5转移资源数据至账户6。
第一交易请求包括交易账户(称为第一交易账户)和交易量(称为第一交易量),第二交易请求也包括交易账户(称为第二交易账户)和交易量(称为第二交易量)。如上述举例中的账户1和账户2即对应第一交易账户,资源量为10即对应第一交易量;账户3和账户4即对应第二交易账户,资源量为20即对应第二交易量。
下面对如何获取操作事务进行具体说明:
区块链节点获取区块链上的第一交易请求和第二交易请求,第一交易请求和第二交易请求可以是由用户发起,也可以是智能合约自动触发生成的。区块链节点判断第一交易请求和第二交易请求之间是否存在数据依赖关系,若存在,则确定第一交易请求和第二交易请求的操作顺序为串行操作顺序,以及还需要进一步确定第一交易请求和第二交易请求的执行顺序;反之,若第一交易请求和第二交易请求之间不存在数据依赖关系,则确定第一交易请求和第二交易请求的操作顺序为并行操作顺序。按照该操作顺序,将第一交易请求和第二交易请求组合为操作事务。
此处的数据依赖关系是指第一交易请求和第二交易请求之间的相互制约关系。举例来说,若第一交易请求为:请求将资源量为10的资源数据从账户1转移至账户2,第二交易请求为:请求将资源量为20的资源数据从账户3转移至账户4,可见,第一交易请求和第二交易请求之间不存在数据依赖关系,因此第一交易请求和第二交易请求之间的操作顺序可以为并行操作顺序。
再例如,若第一交易请求为:请求将资源量为10的资源数据从账户1转移至账户2,第二交易请求为:请求将资源量为20的资源数据从账户1转移至账户3,由于第一交易请求和第二交易请求都是从账户1转出资源数据,而成功执行完第一交易请求(或者第二交易请求)对应的交易操作后,账户1的剩余资源量可能不足以成功执行第二交易请求(或者第一交易请求)对应的交易操作。此时第一交易请求和第二交易请求之间存在数据依赖关系,因此第一交易请求和第二交易请求之间的操作顺序为串行操作顺序,且第一交易请求和第二交易请求的执行顺序不限。
步骤S102,在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作。
具体的,区块链节点获取第一交易请求和第二交易请求的操作顺序:
若第一交易请求和第二交易请求的操作顺序是串行操作顺序,区块链节点再获取第一交易请求和第二交易请求之间的执行顺序,按照该执行顺序,依次在区块链上执行第一交易请求对应的第一交易操作和第二交易请求对应的第二交易操作。
若第一交易请求和第二交易请求的操作顺序是并行操作顺序,区块链节点在区块链上并发执行第一交易请求对应的第一交易操作和第二交易请求对应的第二交易操作。
第一交易操作和第二交易操作可以包括:区块链上的资源数据(资源数据可以游戏币)转移操作,区块链上的消费凭证信息(消费凭证信息可以是消费***)转移操作,区块链上的鉴权证明操作,区块链上的物流防伪追溯证明操作,以及与区块链相关联的记录表的调整操作等中的至少一个。
资源数据(或者消费凭证信息)的转移操作是指将资源数据在区块链上的账户之间进行转移;鉴权证明操作是指将权益证明文件等添加至区块链上(也就是通俗理解的登记),后续可以从区块链上查询权益;物流防伪追溯证明操作是指商品生产到销售过程都被存储至区块链上,依赖于区块链的数据不可篡改性,保证已销售出去的商品信息被永久记录,实现商品从生产到销售的整个过程都有迹可循;记录表的调整操作是指在记录表中调整区块链上所有账户的剩余资源量。
例如,第一交易操作是资源数据转移操作,第二交易操作是权益证明文件上链操作,通俗理解就是,就是用户在区块链上支付一定的资源数据,可以在区块链上保存自己的权益证明文件。又或者,第一交易操作是资源数据转移操作,第二交易操作是商品物流上链操作,通俗理解就是,就是用户在区块链上支付一定的资源数据,可以在区块链上保存商品的物流轨迹,生产视频等。
下述以第一交易操作和第二交易操作均包括转移操作(即是前述中的资源数据转移操作)和调整操作(即是前述中的记录表的调整操作)为例进行说明:
为了区块链节点执行操作事务过程中具有隔离性,在执行第一交易操作和第二交易操作过程中第一交易账户和第二交易账户处于锁定状态,换句话说,处于锁定状态的第一交易账户和第二交易账户不能被执行除操作事务以外的其他交易操作。
第一交易操作包括转移操作(称为第一转移操作)以及调整操作(称为第一调整操作),其中第一转移操作是指在区块链上转移与第一交易量等量的资源数据,第一调整操作是指在与区块链相关联的交易记录表中调整第一交易账户的剩余资源量,第一转移操作和第一调整操作也可以称为第一交易操作的子操作。其中,交易记录表是用于记录区块链上所有账户的剩余资源量,当然区块链上的所有账户会包括前述中的第一交易账户以及第二交易账户。
同样地,第二交易操作也包括转移操作(称为第二转移操作)以及调整操作(称为第二调整操作),其中第二转移操作是指在区块链上转移与第二交易量等量的资源数据,第二调整操作是指在与区块链相关联的交易记录表中调整第二交易账户的剩余资源量。
可见,第一交易操作和第二交易操作的目的基本相同,只是一个操作对象是第一交易账户和第一交易量,另一个操作对象是第二交易账户和第二交易量。
下面以第一交易操作为例,具体说明如何执行第一转移操作以及如何执行第一调整操作,首先说明如何执行第一转移操作:
在区块链中实现资源数据的转移,等同于在区块链网络中广播交易记录,交易记录被打包成区块,以及添加区块至区块链上等一系列操作。换句话说,一旦将交易记录添加至区块链上,就证明完成了对资源数据的转移操作。
第一交易账户可以包括第一转出账户和第一转入账户,区块链节点可以从交易记录表中获取当前第一转出账户的剩余资源量,若第一转出账户的剩余资源量不小于第一交易量,生成与第一交易请求对应的交易记录(称为第一交易记录),例如,第一交易请求为:请求将资源量为10的资源数据从账户1转移至账户2,从交易记录表中查询到账户1的剩余资源量等于40,因此账户1的剩余资源量大于第一交易量,可以生成第一交易记录:(转出地址:账户1;转入地址:账户2;资源量:10)。
当然,若第一转出账户的剩余资源量小于第一交易量,或者区块链上根据就不存在第一转出账户或者第一转入账户,说明当前不满足资源数据转移条件,可以确定第一转移操作执行失败,进而说明第一交易操作执行失败,可以停止执行第一交易操作中其他还未开始执行的子操作。
区块链节点获取到第一交易记录后,将第一交易记录添加至区块体,获取当前区块链中最后一个区块的哈希散列值,以及获取第一交易记录的默克尔根,将上述哈希散列值、默克尔根以及当前时间戳添加至区块头,将添加了第一交易记录的区块体以及上述区块头组合的区块(称为第一区块,如上述图2a-图2b对应实施例中的区块20d),将这个新的第一区块添加区块链。
至此,将交易记录添加至区块链后,区块链节点就成功执行了第一转移操作。
接下来再说明如何执行第一调整操作:
在交易记录表中获取第一转出账户的剩余资源量和第一转入账户的剩余资源量,若交易记录表中根据就不存在第一转出账户或者第一转入账户,或者若第一转出账户的剩余资源量小于第一交易量,说明当前不满足资源数据转移条件,可以确定第一调整操作执行失败,进而说明第一交易操作执行失败,可以停止执行第一交易操作中其他还未开始执行的子操作。
反之,若交易记录表中存在第一转出账户和第一转入账户,且第一转出账户的剩余资源量不小于第一交易量,根据第一交易请求调整第一转出账户的剩余资源量和第一转入账户的剩余资源量。
举例来说,第一交易请求为:请求将资源量为10的资源数据从账户1转移至账户2,从交易记录表中查询到当前账户1的剩余资源量等于40,账户2的剩余资源量等于20,第一调整操作即是在交易记录表中将账户1的剩余资源量调整为:40-10=30,在交易记录表中将账户2的剩余资源量调整为:20+10=30。
需要说明的是,在区块链上的第一转移操作和在交易记录表中的第一调整操作可以并发执行,也可以先后执行。
对第二交易操作中的第二转移操作和第二调整操作和上述第一转移操作和第一调整操作基本相同,只需要将操作对象由第一转出账户和第一转入账户修改为第二转出账户和第二转入账户,将第一交易量调整为第二交易量即可,因此,成功执行第二转移操作后,在区块链上也会多一个区块(称为第二区块),该第二区块用于存储第二交易记录;执行完第二调整操作后,对交易记录表中的第二交易账户的剩余资源量会存在更新。
步骤103,当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
具体的,当第一交易操作执行失败,且第二操作执行成功时,说明此时第一交易操作和第二交易操作中存在一个操作结果失败,将操作结果成功的第二交易操作作为目标交易操作,对目标交易操作(即第二交易操作)执行回滚处理。
当第一交易操作执行成功,且第二操作执行失败时,说明此时第一交易操作和第二交易操作中存在一个操作结果失败,将操作结果成功的第一交易操作作为目标交易操作,对目标交易操作(即第一交易操作)执行回滚处理。
将目标交易操作对应的交易请求称为目标交易请求,将目标交易请求所包含的交易账户称为目标交易账户,将目标交易请求所包含的交易量称为目标交易量。可以知道,此处的目标交易请求即对应前述中的第一交易请求或第二交易请求,目标交易账户即对应前述中的第一交易账户或第二交易账户,目标交易量即对应前述中的第一交易量或第二交易量。
从前述可知,目标交易操作可以包括转移操作和调整操作,转移操作是指在区块链上转移与目标交易量等量的资源数据,调整操作是指在于区块链关联的交易记录表中调整目标交易账户的剩余资源量。执行完目标交易操作中的转移操作后,在区块链上会新生成区块(称为目标区块,此处的目标区块即是前述中的第一区块或者第二区块),该区块的区块体中会存储交易记录(称为目标交易记录,此处的目标交易记录即是前述中的第一交易记录或者第二交易记录)。
由于目标交易操作包括转移操作和调整操作,因此需要对这两个操作进行回滚处理,对这两个操作进行回滚处理的前后顺序没有限定,或者可以对这两个操作进行并发回滚处理。对转移操作进行回滚处理的具体过程如下:
区块链节点将存储在目标区块中的目标交易记录进行作废处理,使得目标交易记录成为无效交易记录,进一步地,若目标区块中仅存储了目标交易记录而没有存储其他交易记录,还可以将目标区块设置无效区块。后续,当通过遍历区块链上的区块来确定目标交易账户中的剩余资源量时,由于目标交易记录已经被作废了,因此不必将目标交易记录纳入统计范围内;再有,若目标区块是无效区块,甚至可以不必遍历目标区块。
或者,区块链节点根据目标交易请求再生成新的交易请求(称为回滚交易请求),回滚交易请求中的交易账户以及交易量和目标交易请求中的交易账户和交易量完全相同,不同之处在于目标交易请求中的转入账户是回滚交易中的转出账户,目标交易请求中的转出账户是回滚交易中的转入账户。
例如,目标交易请求为:请求将资源量为10的资源数据从账户1转移至账户2,目标回滚交易请求为:请求将资源量为10的资源数据从账户2转移至账户1。
区块链节点可以执行回滚交易请求对应的交易操作,执行完回滚交易请求对应的交易操作后,所达到的效果等同于对目标交易操作中的转移操作进行了回滚处理。
对调整操作进行回滚处理的具体过程如下:
区块链节点获取目标交易请求中的目标交易量,根据该目标交易量在交易记录表中更新目标交易账户的剩余资源量,使得更新后的目标交易账户的剩余资源量与执行调整操作前的目标交易账户的剩余资源量相同。
举例来说,目标交易请求为:请求将资源量为10的资源数据转入至账户1,执行调整操作前,账户1的剩余资源量等于20,成功执行调整操作后,账户1的剩余资源量等于20+10=30;对该调整操作进行回滚处理即是,再将账户1的剩余资源量调整回20:30-10=20。
再例如,目标交易请求为:请求将资源量为10的资源数据从账户1转移至至账户2,执行调整操作前,账户1的剩余资源量等于20,账户2的剩余资源量等于30,成功执行调整操作后,账户1的剩余资源量等于20-10=10,账户2的剩余资源量等于30+10=40;对该调整操作进行回滚处理即是,再将账户1的剩余资源量调整回20:10+10=20,将账户2的剩余资源量调整回30:40-10=30。
对目标交易操作执行完回滚处理后,解除第一交易账户的锁定状态以及第二交易账户的锁定状态。
需要说明的是,交易操作可以包括多个子操作(例如,前述中的转移操作和调整操作),只有这多个子操作都执行成功,才确定该交易操作执行成功,反之一旦存在至少一个子操作执行失败,就确定该交易操作执行失败。因此,进行回滚处理时,不仅需要对操作成功的交易操作进行回滚,还需要对操作失败的交易操作中已经执行成功的子操作进行回滚处理。
举例来说,第一交易操作包括第一转移操作和第一调整操作,第二交易操作包括第二转移操作和第二调整操作。若第一转移操作执行失败,但第一调整操作执行成功,可以表明第一交易操作执行失败;若第二转移操作执行成功,且第二调整操作执行成功,可以表明第二交易操作执行成功,此时区块链节点不仅需要对第二转移操作和第二调整操作执行回滚处理,还需要对第一调整操作也执行回滚处理。
再进一步,当第一交易操作和第二交易操作都执行失败,且第一交易操作和第二交易操作都包括多个子操作时,还需要对第一交易操作中已经成功执行的子操作以及第二交易操作中已经成功执行的子操作执行回滚处理。
上述可知,当第一操作和第二操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理,执行回滚处理可以保证在区块链上的多个操作具有一致性,使得区块链可以回到执行第一操作和第二操作之前的状态,避免区块链上出现不准确的交易数据,提高区块链的稳定性。
请参见图4,是本申请实施例提供的一种数据处理方法的交互示意图,数据处理方法包括轻量节点,第一共识节点和第二共识节点,交互过程如下:
步骤S201,轻量节点获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求。
具体的,区块链节点可以分为轻量节点(轻量节点可以是spv节点,SimplifiedPayment Verification)和共识节点,共识节点会存储完整的区块链以及参与共识;轻量节点可以不必存储区块链以及不参与共识,当存在业务需求时,轻量节点可以随时从共识节点那里同步区块。
本申请中的区块链包括第一区块链和第二区块链,第一区块链和第二区块链具有关联关系,通俗理解就是第一区块链和第二区块链提供相同或相似的服务。第一区块链对应的区块链网络称为第一区块链网络,第二区块链对应的区块链网络称为第二区块链网络。轻量节点和第一共识节点均是第一区块链网络中的节点,第一共识节点还是第一区块链网络中的共识节点;轻量节点和第二共识节点均是第二区块链网络中的节点,第二共识节点还是第二区块链网络中的共识节点。
多条区块链部署在不同的区块链网络中,但这多条链是相关的,都是可以提供相同或相似的服务。分布式的部署可以降低每个节点的存储要求,以及提高区块链的性能。
轻量节点获取操作事务,操作事务包括第一区块链上的第一交易请求,以及第二区块链上的第二交易请求。其中,轻量节点获取操作事务的具体过程可以参见上述图3对应实施例中的步骤S101,只需要将执行主体由区块链节点调整为轻量节点即可。
步骤S202,轻量节点将所述第一交易请求发送至所述第一共识节点,以使所述第一共识节点在所述第一区块链上执行第一交易操作。
具体的,第一共识节点会存储完整的第一区块链,第二共识节点会存储完整的第二区块链。轻量节点可以不存储第一区块链以及不存储第二区块链,但可以随时从第一共识节点(或者第二共识节点)那同步区块,这样可以降低轻量节点的存储要求。
从前述可知,第一交易操作涉及验证,生成区块以及添加区块至区块链等多个操作,而轻量节点存储的信息有限,因此轻量节点可以将第一交易请求发送至第一共识节点,以使第一共识节点在第一区块链上执行第一交易操作,其中第一共识节点执行第一交易操作的具体过程可以参见上述图3对应实施例中的步骤S102,只需要将执行主体由区块链节点调整为第一共识节点即可。
步骤S203,轻量节点将所述第二交易请求发送至所述第二共识节点,以使所述第二共识节点在所述第二区块链上执行第二交易操作
同样地,轻量节点将第二交易请求发送至第二共识节点,以使第二共识节点在第二区块链上执行第二交易操作,其中第二共识节点执行第二交易操作的具体过程可以参见上述图3对应实施例中的步骤S102,只需要将执行主体由区块链节点调整为第二共识节点即可。
步骤S204,轻量节点获取第一共识节点发送的第一交易操作的操作结果以及获取第二共识节点发送的第二交易操作的操作结果。
步骤S205,当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,轻量节点对操作结果成功的交易操作执行回滚处理。
具体的,若第一交易操作的操作结果是操作失败,且第二交易操作的操作结果是操作成功,则可以确定第一交易操作和所述第二交易操作中存在一个操作结果失败,进而轻量节点可以将第二交操作作为目标交易操作,通知第二共识节点对目标交易操作执行回滚处理。第二共识节点对目标交易操作(即是第二交易操作)进行回滚处理的具体过程可以参见上述图3对应实施例中的步骤S103,只需要将执行主体由区块链节点调整为第二共识节点即可。
若第一交易操作的操作结果是操作成功,且第二交易操作的操作结果是操作失败,则同样可以确定第一交易操作和所述第二交易操作中存在一个操作结果失败,进而轻量节点可以将第一交易操作作为目标交易操作,通知第一共识节点对目标交易操作(即是第一交易操作)执行回滚处理。第一共识节点对目标交易操作进行回滚处理的具体过程可以参见上述图3对应实施例中的步骤S103,只需要将执行主体由区块链节点调整为第一共识节点即可。
当然,若交易操作包括多个子操作,只有这多个子操作都执行成功,才确定该交易操作执行成功,反之一旦存在至少一个子操作执行失败,就确定该交易操作执行失败。因此,进行回滚处理时,轻量节点不仅需要通知第一共识节点(或者第二共识节点)对操作成功的交易操作进行回滚,还需要通知第二共识节点(或者第一共识节点)对操作失败的交易操作中已经执行成功的子操作进行回滚。
可选的,前述中为了降低轻量节点的存储要求,轻量节点以第一共识节点(或者第二共识节点)为桥梁,间接在第一区块链(或者第二区块链)上执行了第一交易操作(或者第二交易操作)。进一步,轻量节点可以既存储完整的第一区块链也存储完整的第二区块链,且此时轻量节点既是第一区块链网络中的共识节点,也是第二区块链网络中的共识节点。在这种情况下,轻量节点可以直接在第一区块链上执行第一交易操作,以及在第二区块链上执行第二交易操作,而不必借助于第一共识节点和第二共识节点。
请参见图5,是本申请实施例提供的一种跨链执行事务的示意图,从图5可以看出,轻量节点和第一共识节点集群可以组合为第一区块链网络,第一共识节点集群中的任一节点都会存储第一区块链,第一区块链包括区块1、区块2、区块3等等;轻量节点和第二共识节点集群可以组合为第二区块链网络,第二共识节点集群中的任一节点都会存储第二区块链,第二区块链包括区块1、区块2、区块3等等。第一共识节点集群和第二共识节点集群之间不能直接通信,但可以通过上层路由、客户端或者轻量节点进行请求转发。
轻量节点可以将第一区块链上的第一交易请求发送至第一共识节点集群,第一共识节点集群执行第一交易请求对应的第一交易操作;同样地,轻量节点可以将第二区块链上的第二交易请求发送至第二共识节点集群,第二共识节点集群执行第二交易请求对应的第二交易操作。若第一共识节点集群执行第一交易操作成功,且第二共识节点集群执行第二交易操作失败,轻量节点可以通知第一共识节点集群回滚第一交易操作;若第一共识节点集群执行第一交易操作失败,且第二共识节点集群执行第二交易操作成功,轻量节点可以通知第二共识节点集群回滚第二交易操作。
上述可知,当执行于第一区块链上的第一操作和执行于第二区块链上的第二操作中存在任一个操作失败时,对操作成功的交易操作执行回滚处理,执行回滚处理可以保证在多条区块链上的多个操作具有一致性,使得多条区块链可以回到执行第一操作和第二操作之前的状态,避免任意区块链上出现不准确的交易数据,提高区块链的稳定性。
请参见图6,是本申请实施例提供的一种数据处理方法的流程示意图,本申请实施例主要描述在多条区块链转账场景下,如何保证多个操作的一致性。数据处理方法包括如下步骤:
用户A在第一区块链中注册有账户1,且在第二区块链中注册有账户2;现在用户A需要向用户B转账,且用户B在第一区块链中注册有账户3,在第二区块链中注册有账户4。
步骤S301,用户A发起转账请求1和转账请求2。
具体的,转账请求1的具体内容为:请求在第一区块链中将账户1中的20游戏币转账至账户3;用户A再发起转账请求2,转账请求2的具体内容为:请求在第二区块链中将账户2中的20游戏币转账至账户4。轻量节点将转账请求1和转账请求2组合为事务,将转账请求1分发至第一区块链对应的共识节点A,将转账请求2分发至第二区块链对应的共识节点B。
由于转账请求1和转账请求2之间不存在依赖关系,因此共识节点A和共识节点B可以并发响应这两个请求可以。若存在依赖关系,只能串行响应这两个请求。
步骤S302,检测账户1的余额是否满足转账要求,以及检测账户2中的余额是否满足转账要求。
具体的,共识节点A锁定账户1和账户3,检测账户1的余额是否不小于20游戏币;共识节点B锁定账户2和账户4,检测账户2的余额是否不小于20游戏币。
若账户1的余额小于20游戏币,且账户2的余额不小于20游戏币,执行步骤S303-步骤S304;
若账户1的余额不小于20游戏币,且账户2的余额不小于20游戏币,执行步骤S305-步骤S306;
若账户1的余额小于20游戏币,且账户2的余额不小于20游戏币,执行步骤S307-步骤S308。
步骤S305,将20游戏币从账户2转移至账户4。
具体的,共识节点B从账户2转移20游戏币至账户4,转移后在第二区块链上会新生成一个区块,该区块存储此次转移游戏币的交易记录。共识节点B在链下记录表中修改账户2的余额以及账户4的余额,当然,修改后相比修改前,账户2的余额变少,账户4的余额变多。
步骤S304,对将20游戏币从账户2转移至账户4的操作进行回滚。
具体的,由于账户1的余额小于20游戏币,因此请求1对应的转账操作执行失败,共识节点B对请求2对应的转账操作执行回滚处理,即将步骤S305所生成的交易记录作废,以及撤销在链下记录表中对账户2的余额以及账户4的余额的修改,将账户1、账户2、账户3以及账户4都解锁,生成事务执行失败的通知消息。
步骤S305,将20游戏币从账户1转移至账户3,将20游戏币从账户2转移至账户4。
具体的,共识节点A从账户1转移20游戏币至账户3,转移后在第一区块链上会新生成一个区块,该区块存储此次转移游戏币的交易记录。共识节点A在链下记录表中修改账户1的余额以及账户3的余额,当然,修改后相比修改前,账户1的余额变少,账户3的余额变多。
共识节点B从账户2转移20游戏币至账户4,转移后在第二区块链上会新生成一个区块,该区块存储此次转移游戏币的交易记录。共识节点B在链下记录表中修改账户2的余额以及账户4的余额,当然,修改后相比修改前,账户2的余额变少,账户4的余额变多。
步骤S306,将账户1、账户2、账户3以及账户4都解锁,生成事务执行成功的通知消息。
步骤S307,将20游戏币从账户1转移至账户3。
具体的,共识节点A从账户1转移20游戏币至账户3,转移后在第一区块链上会新生成一个区块,该区块存储此次转移游戏币的交易记录。共识节点A在链下记录表中修改账户1的余额以及账户3的余额,当然,修改后相比修改前,账户1的余额变少,账户3的余额变多。
步骤S308,对将20游戏币从账户1转移至账户3的操作进行回滚。
具体的,由于账户2的余额小于20游戏币,因此请求2对应的转账操作执行失败,共识节点A对请求1对应的转账操作执行回滚处理,即将步骤S307所生成的交易记录作废,以及撤销在链下记录表中对账户1的余额以及账户3的余额的修改,将账户1、账户2、账户3以及账户4都解锁,生成事务执行失败的通知消息。
后续,当通过区块链上的区块统计4个账户的余额时,若某个区块中的某个交易记录已经被作废,在统计账户的余额时,不必将该交易记录纳入统计范围内。
可选的,本申请也可以应用于在一条链上执行包括多个转账请求的转账事务。下述以区块链上的账户1同时转账给账户3以及账户5为例进行说明。
转账请求1的具体内容为:请求将20游戏币从账户1中转账至账户3,转账请求2的具体内容为:请求将20游戏币从账户1转账至账户5。
由于转账请求1和转账请求2之间存在依赖关系,只能串行响应这两个请求。首先响应转账请求1,锁定账户1和账户3,检测账户1中的余额是否不小于20。
若否,停止流程,生成转账事务执行失败的通知消息。
若是,则将20游戏币从账户1转移至账户3,转移后在区块链上会新生成一个区块,该区块用于存储此次转移游戏币的交易记录。在链下记录表中修改账户1的余额以及账户3的余额,当然,修改后相比修改前,账户1的余额变少,账户3的余额变多。
成功响应转账请求1后,再响应转账请求2,锁定账户5,检测此时账户1中的余额是否不小于20(此时账户1的余额相比最初已经减少了20游戏币)。
若否,将上述新生成的区块中的交易记录作废,以及撤销在链下记录表中对账户1的余额以及账户3的余额的修改,生成转账事务执行失败的通知消息。
若是,则将20游戏币从账户1转移至账户5,转移后在区块链上会又新生成一个区块,该区块用于存储此次转移游戏币的交易记录。在链下记录表中再次修改账户1的余额以及修改账户5的余额,当然,修改后相比修改前,账户1的余额再次变少,账户5的余额变多,生成转账事务执行成功的通知消息。
进一步的,请参见图7,是本申请实施例提供的一种数据处理装置的结构示意图。如图7所示,数据处理装置1可以应用于上述图3对应实施例中区块链节点以及图4-图6对应实施例中轻量节点,具体的,数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置1为一个应用软件;该数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。
数据处理装置1可以包括:获取模块11、执行模块12以及回滚模块13。
获取模块11,用于获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
执行模块12,用于在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
回滚模块13,用于当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
回滚模块13具体用于:
当所述第一交易操作是操作结果失败的交易操作,且第二交易操作是操作结果成功的交易操作时,将所述第二交易操作作为目标交易操作,对所述目标交易操作执行回滚处理;
当所述第二交易操作是操作结果失败的交易操作,且第一交易操作是操作结果成功的交易操作时,将所述第一交易操作作为目标交易操作,对所述目标交易操作执行回滚处理。
在一个实施例中,所述目标交易操作包括转移操作和调整操作,所述转移操作是指在区块链上转移与目标交易量等量的资源数据,所述调整操作是指在与所述区块链关联的交易记录表中调整目标交易账户的剩余资源量;所述交易记录表用于记录所述区块链上的所有交易账户的剩余资源量;所述目标交易操作对应的交易请求包括所述目标交易量和所述目标交易账户。
在一个实施例中,回滚模块13在对所述目标交易操作执行回滚处理时,具体用于:将存储在目标区块中的目标交易记录进行作废处理;所述目标区块属于所述区块链,所述目标区块是执行述转移操作后生成的区块,所述目标区块用于存储所述目标交易记录,根据所述目标交易量,在所述交易记录表中更新所述目标交易账户的剩余资源量;更新后的目标交易账户的剩余资源量与执行所述调整操作前的目标交易账户的剩余资源量相同。
获取模块11、执行模块12以及回滚模块13的具体功能实现方式可以参见上述图3对应实施例中的步骤S101-步骤S103。
请再参见图7,获取模块11可以包括:获取单元111以及组合单元112。
获取单元111,用于获取所述区块链上的第一交易请求和第二交易请求;
组合单元112,用于确定所述第一交易请求和所述第二交易请求的操作顺序,按照所述操作顺序将所述第一交易请求和所述第二交易请求组合为所述操作事务。
在一个实施例中,所述操作顺序包括:并行操作顺序和串行操作顺序;
所述获取单元111,具体用于:若所述第一交易请求和所述第二交易请求存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为串行操作顺序;若所述第一交易请求和所述第二交易请求不存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为并行操作顺序。
其中,获取单元111以及组合单元112的具体功能实现方式可以参见上述图3对应实施例中的步骤S101。
在一种实施例中,所述区块链包括第一区块链和第二区块链,所述第一区块链和所述第二区块链具有关联关系;所述第一交易请求是所述第一区块链上的请求,所述第二交易请求是所述第二区块链上的请求;
所述执行模块12,具体用于在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作。
在一种实施例中,所述数据处理方法由轻量节点执行,所述第一区块链对应第一区块链网络,所述第二区块链对应第二区块链网络,所述第一区块链网络包括所述轻量节点和第一共识节点,所述第二区块链网络包括所述轻量节点和所述第二共识节点;
所述执行模块12在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作时,具体用于将所述第一交易请求发送至所述第一共识节点,以使所述第一共识节点在所述第一区块链上执行第一交易操作;以及,将所述第二交易请求发送至所述第二共识节点,以使所述第二共识节点在所述第二区块链上执行第二交易操作。
其中,执行模块12的具体功能实现方式可以参见上述图4对应实施例中的步骤S202-步骤S203。
请参见图7,所述第一交易请求包括第一交易账户,所述第二交易请求包括第二交易账户,执行第一交易操作和第二交易操作时,所述第一交易账户和所述第二交易账户处于锁定状态;
数据处理装置1可以包括:获取模块11、执行模块12以及回滚模块13;还可以包括:解除模块14。
解除模块14,用于解除所述第一交易账户和所述第二交易账户的锁定状态,生成所述操作事务执行失败的通知消息。
其中,解除模块14的具体功能实现方式可以参见上述图3对应实施例中的步骤S103。
请参见图7,数据处理装置1可以包括:获取模块11、执行模块12以及回滚模块13;还可以包括:接收模块15。
接收模块15,用于接收所述第一共识节点发送的第一交易操作的操作结果,以及接收所述第二共识节点发送的第二交易操作的操作结果。
其中,接收模块15的具体功能实现方式可以参见上述图4对应实施例中的步骤S204。
进一步地,请参见图8,是本申请实施例提供的一种计算机设备的结构示意图。上述图3对应实施例中的区块链节点,以及图4-图6对应实施例中的轻量节点可以为计算机设备1000。如图8所示,计算机设备1000可以包括:用户接口1002、处理器1004、编码器1006以及存储器1008。信号接收器1016用于经由蜂窝接口1010、WIFI接口1012、...、或NFC接口1014接收或者发送数据。编码器1006将接收到的数据编码为计算机处理的数据格式。存储器1008中存储有计算机程序,处理器1004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。存储器1008可包括易失性存储器(例如,动态随机存取存储器DRAM),还可以包括非易失性存储器(例如,一次性可编程只读存储器OTPROM)。在一些实例中,存储器1008可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备1000。用户接口1002可以包括:键盘1018和显示器1020。
在图8所示的计算机设备1000中,处理器1004可以用于调用存储器1008中存储计算机程序,以实现:
获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3-图6所对应实施例中对数据处理方法的描述,也可执行前文图7所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3-图6所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,分布在多个地点且通过通信网络互联的多个计算机设备上执行,分布在多个地点且通过通信网络互联的多个计算机设备可以组合为区块链网络。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (13)

1.一种数据处理方法,其特征在于,包括:
获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
2.根据权利要求1所述的方法,其特征在于,所述第一交易请求包括第一交易账户,所述第二交易请求包括第二交易账户,执行第一交易操作和第二交易操作时,所述第一交易账户和所述第二交易账户处于锁定状态;
在对操作结果成功的交易操作执行回滚处理的步骤之后,还包括:
解除所述第一交易账户和所述第二交易账户的锁定状态,生成所述操作事务执行失败的通知消息。
3.根据权利要求1所述的方法,其特征在于,所述当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理,包括:
当所述第一交易操作是操作结果失败的交易操作,且所述第二交易操作是操作结果成功的交易操作时,将所述第二交易操作作为目标交易操作,对所述目标交易操作执行回滚处理;
当所述第二交易操作是操作结果失败的交易操作,且所述第一交易操作是操作结果成功的交易操作时,将所述第一交易操作作为目标交易操作,对所述目标交易操作执行回滚处理。
4.根据权利要求3所述的方法,其特征在于,所述目标交易操作包括转移操作和调整操作,所述转移操作是指在区块链上转移与目标交易量等量的资源数据,所述调整操作是指在与所述区块链关联的交易记录表中调整目标交易账户的剩余资源量;所述交易记录表用于记录所述区块链上的所有交易账户的剩余资源量;所述目标交易操作对应的交易请求包括所述目标交易量和所述目标交易账户。
5.根据权利要求4所述的方法,其特征在于,所述对所述目标交易操作执行回滚处理,包括:
将存储在目标区块中的目标交易记录进行作废处理;所述目标区块属于所述区块链,所述目标区块是执行述转移操作后生成的区块,所述目标区块用于存储所述目标交易记录;
根据所述目标交易量,在所述交易记录表中更新所述目标交易账户的剩余资源量;更新后的目标交易账户的剩余资源量与执行所述调整操作前的目标交易账户的剩余资源量相同。
6.根据权利要求1所述的方法,其特征在于,所述获取区块链上的操作事务,包括:
获取所述区块链上的第一交易请求和第二交易请求;
确定所述第一交易请求和所述第二交易请求的操作顺序,按照所述操作顺序将所述第一交易请求和所述第二交易请求组合为所述操作事务。
7.根据权利要求6所述的方法,其特征在于,所述操作顺序包括:并行操作顺序和串行操作顺序;
所述确定所述第一交易请求和所述第二交易请求的操作顺序,包括:
若所述第一交易请求和所述第二交易请求存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为所述串行操作顺序;
若所述第一交易请求和所述第二交易请求不存在数据依赖关系,则确定所述第一交易请求和所述第二交易请求的操作顺序为所述并行操作顺序。
8.根据权利要求1所述的方法,其特征在于,所述区块链包括第一区块链和第二区块链,所述第一区块链和所述第二区块链具有关联关系;所述第一交易请求是所述第一区块链上的请求,所述第二交易请求是所述第二区块链上的请求;
所述在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作,包括:
在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作。
9.根据权利要求8所述的方法,其特征在于,所述数据处理方法由轻量节点执行,所述第一区块链对应第一区块链网络,所述第二区块链对应第二区块链网络,所述第一区块链网络包括所述轻量节点和第一共识节点,所述第二区块链网络包括所述轻量节点和第二共识节点;
所述在所述第一区块链上执行所述第一交易请求对应的第一交易操作,以及在所述第二区块链上执行所述第二交易请求对应的第二交易操作,包括:
将所述第一交易请求发送至所述第一共识节点,以使所述第一共识节点在所述第一区块链上执行第一交易操作;以及,
将所述第二交易请求发送至所述第二共识节点,以使所述第二共识节点在所述第二区块链上执行第二交易操作。
10.根据权利要求9所述的方法,其特征在于,还包括:
接收所述第一共识节点发送的第一交易操作的操作结果,以及接收所述第二共识节点发送的第二交易操作的操作结果。
11.一种数据处理装置,其特征在于,包括:
获取模块,用于获取区块链上的操作事务;所述操作事务包括第一交易请求和第二交易请求;
执行模块,用于在所述区块链上执行所述第一交易请求对应的第一交易操作,以及执行所述第二交易请求对应的第二交易操作;
回滚模块,用于当所述第一交易操作和所述第二交易操作中存在任一个操作结果失败时,对操作结果成功的交易操作执行回滚处理。
12.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-10中任一项所述方法的步骤。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-10任一项所述的方法。
CN202010402598.2A 2020-05-13 2020-05-13 数据处理方法、装置、计算机设备以及存储介质 Active CN111597077B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010402598.2A CN111597077B (zh) 2020-05-13 2020-05-13 数据处理方法、装置、计算机设备以及存储介质
PCT/CN2021/085854 WO2021227706A1 (zh) 2020-05-13 2021-04-08 数据处理方法、装置、计算机设备以及存储介质
US17/738,612 US20220269670A1 (en) 2020-05-13 2022-05-06 Data processing method and apparatus, computer device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010402598.2A CN111597077B (zh) 2020-05-13 2020-05-13 数据处理方法、装置、计算机设备以及存储介质

Publications (2)

Publication Number Publication Date
CN111597077A true CN111597077A (zh) 2020-08-28
CN111597077B CN111597077B (zh) 2022-04-29

Family

ID=72185340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010402598.2A Active CN111597077B (zh) 2020-05-13 2020-05-13 数据处理方法、装置、计算机设备以及存储介质

Country Status (3)

Country Link
US (1) US20220269670A1 (zh)
CN (1) CN111597077B (zh)
WO (1) WO2021227706A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112150286A (zh) * 2020-09-27 2020-12-29 深圳壹账通智能科技有限公司 基于区块链的交易处理方法、装置、电子设备及存储介质
CN112487010A (zh) * 2020-12-14 2021-03-12 深圳前海微众银行股份有限公司 一种区块链用户数据表更新方法、设备及存储介质
CN113515707A (zh) * 2020-09-21 2021-10-19 腾讯科技(深圳)有限公司 一种数据处理方法、智能装置、智能设备以及存储介质
WO2021227706A1 (zh) * 2020-05-13 2021-11-18 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111640020B (zh) * 2020-05-22 2023-09-19 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107085810A (zh) * 2017-04-19 2017-08-22 朱皞罡 一种区块链的跨链操作方法及区块链管理***
CN108876618A (zh) * 2018-06-15 2018-11-23 浙江华信区块链科技服务有限公司 一种交换区块链***及相应的通用区块链互操作方法和网络
CN109150943A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 信息的传输方法、装置和***
CN110199302A (zh) * 2018-12-13 2019-09-03 阿里巴巴集团控股有限公司 事件驱动的区块链工作流处理
CN110428332A (zh) * 2019-07-29 2019-11-08 杭州复杂美科技有限公司 一种平行链跨链交易方法、设备和存储介质
CN110992038A (zh) * 2020-03-03 2020-04-10 支付宝(杭州)信息技术有限公司 交易处理方法、装置及设备
CN111028084A (zh) * 2020-03-11 2020-04-17 支付宝(杭州)信息技术有限公司 一种基于区块链的交易处理方法、装置及设备
CN111095326A (zh) * 2019-04-12 2020-05-01 阿里巴巴集团控股有限公司 在分布式账本***中进行交易的并行执行
CN111105222A (zh) * 2019-12-16 2020-05-05 南方科技大学 一种区块链跨链操作方法及装置技术领域

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409795B2 (en) * 2018-09-06 2022-08-09 International Business Machines Corporation Atomically executed application program interfaces
US20200134606A1 (en) * 2018-10-31 2020-04-30 EMC IP Holding Company LLC Asset management in asset-based blockchain system
US10761948B1 (en) * 2019-07-13 2020-09-01 Alibaba Group Holding Limited Method, apparatus, and electronic device for restoring state data of blockchain
US10659219B1 (en) * 2019-08-23 2020-05-19 Capital One Services, Llc Workflow management via distributed ledgers and smart contracts
US11388010B2 (en) * 2019-10-18 2022-07-12 Arcblock, Inc. Blockchain account migration
US11544252B2 (en) * 2019-12-17 2023-01-03 Akamai Technologies, Inc. High performance distributed system of record with extended transaction processing capability
CN111597077B (zh) * 2020-05-13 2022-04-29 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质
US20230214832A1 (en) * 2020-05-13 2023-07-06 The Hongkong And Shanghai Banking Corporation Limited Integration of blockchain transactions with off-chain processing
US11789829B2 (en) * 2021-04-27 2023-10-17 Capital One Services, Llc Interprocess communication for asynchronous tasks
US11477279B1 (en) * 2021-06-18 2022-10-18 Compellio S.A. Digital assets exchange coordination

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107085810A (zh) * 2017-04-19 2017-08-22 朱皞罡 一种区块链的跨链操作方法及区块链管理***
CN109150943A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 信息的传输方法、装置和***
CN108876618A (zh) * 2018-06-15 2018-11-23 浙江华信区块链科技服务有限公司 一种交换区块链***及相应的通用区块链互操作方法和网络
CN110199302A (zh) * 2018-12-13 2019-09-03 阿里巴巴集团控股有限公司 事件驱动的区块链工作流处理
CN111095326A (zh) * 2019-04-12 2020-05-01 阿里巴巴集团控股有限公司 在分布式账本***中进行交易的并行执行
CN110428332A (zh) * 2019-07-29 2019-11-08 杭州复杂美科技有限公司 一种平行链跨链交易方法、设备和存储介质
CN111105222A (zh) * 2019-12-16 2020-05-05 南方科技大学 一种区块链跨链操作方法及装置技术领域
CN110992038A (zh) * 2020-03-03 2020-04-10 支付宝(杭州)信息技术有限公司 交易处理方法、装置及设备
CN111028084A (zh) * 2020-03-11 2020-04-17 支付宝(杭州)信息技术有限公司 一种基于区块链的交易处理方法、装置及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021227706A1 (zh) * 2020-05-13 2021-11-18 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质
CN113515707A (zh) * 2020-09-21 2021-10-19 腾讯科技(深圳)有限公司 一种数据处理方法、智能装置、智能设备以及存储介质
CN113515707B (zh) * 2020-09-21 2024-02-09 腾讯科技(深圳)有限公司 一种数据处理方法、智能装置、智能设备以及存储介质
CN112150286A (zh) * 2020-09-27 2020-12-29 深圳壹账通智能科技有限公司 基于区块链的交易处理方法、装置、电子设备及存储介质
CN112487010A (zh) * 2020-12-14 2021-03-12 深圳前海微众银行股份有限公司 一种区块链用户数据表更新方法、设备及存储介质
CN112487010B (zh) * 2020-12-14 2024-02-23 深圳前海微众银行股份有限公司 一种区块链用户数据表更新方法、设备及存储介质

Also Published As

Publication number Publication date
WO2021227706A1 (zh) 2021-11-18
US20220269670A1 (en) 2022-08-25
CN111597077B (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN111597077B (zh) 数据处理方法、装置、计算机设备以及存储介质
US11790370B2 (en) Techniques for expediting processing of blockchain transactions
US12008524B2 (en) Method and system of mining blockchain transactions provided by a validator node
CN109426949B (zh) 一种跨链交易方法及装置
US11070360B2 (en) Parallel transaction validation and block generation in a blockchain
EP3438903B1 (en) Hierarchical network system, and node and program used in same
EP4318362A1 (en) Blockchain-based data processing method, apparatus and device, and storage medium
CN112422341B (zh) 区块链网络的故障检测方法及相关设备
EP3957025B1 (en) System and method for providing privacy and security protection in blockchain-based private transactions
CN112612856B (zh) 基于区块链的数据处理方法和装置
CN116670701A (zh) 实施同步信任共识模型的分布式分类账网络
US11372847B2 (en) Block verification device, block verification method, and program
CN112417001B (zh) 基于区块链网络的数据处理方法及相关设备
AU2019381980A1 (en) Taking snapshots of blockchain data
CN116827957B (zh) 基于多区块链的信息处理方法、装置、设备以及介质
Decker On the scalability and security of bitcoin
WO2023082883A1 (zh) 跨区块链处理事务的方法、装置、计算机设备、计算机存储介质及计算机程序产品
JP7421443B2 (ja) データ移行方法、データ移行システム、およびノード
US20200358597A1 (en) Blockchain-based data processing
CN115842866A (zh) 数据处理方法、装置、计算机可读介质及电子设备
CN117057799B (zh) 资产数据处理方法、装置、设备及存储介质
CN118070339A (zh) 跨区块链的数据处理方法、装置、计算机设备和存储介质
CN116226827A (zh) 基于区块链网络的数据处理方法、装置、设备及存储介质
CN117917681A (zh) 基于多区块链的资产转移方法、装置、设备、介质及产品
JP6359762B2 (ja) 口座データ管理システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40027391

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant