CN112650627A - 智能合约的数据恢复方法、装置、终端设备及存储介质 - Google Patents
智能合约的数据恢复方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN112650627A CN112650627A CN202011606527.0A CN202011606527A CN112650627A CN 112650627 A CN112650627 A CN 112650627A CN 202011606527 A CN202011606527 A CN 202011606527A CN 112650627 A CN112650627 A CN 112650627A
- Authority
- CN
- China
- Prior art keywords
- transaction
- blockchain
- contract
- intelligent contract
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请适用于区块链技术领域,提供了一种智能合约的数据恢复方法、装置、终端设备及存储介质,包括:确定目标智能合约,所述目标智能合约是指存在异常数据的智能合约;根据所述目标智能合约,获取产生所述异常数据的第一区块链交易;获取每笔所述第一区块链交易的合约函数;根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔所述第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据。通过本申请可在不影响区块链平台上其他交易的情况下,对智能合约的异常数据进行恢复。
Description
技术领域
本申请属于区块链技术领域,尤其涉及一种智能合约的数据恢复方法、装置、终端设备及存储介质。
背景技术
智能合约是运行在区块链平台上的一种可执行程序,具有可编程的数据处理、数据存储能力,其每次数据处理都通过区块链交易执行。由于区块链本身的链式结构和不可篡改的特性,区块链交易一旦执行将不可篡改。
当智能合约发生逻辑错误或者操作失误时,将产生异常数据。在不影响区块链平台上其他交易的情况下,如何将异常数据恢复到执行错误操作之前的状态是亟待解决的技术问题。
发明内容
本申请实施例提供了一种智能合约的数据恢复方法、装置、终端设备及存储介质,以在不影响区块链平台上其他交易的情况下,对智能合约的异常数据进行恢复。
第一方面,本申请实施例提供了一种智能合约的数据恢复方法,所述数据恢复方法包括:
确定目标智能合约,所述目标智能合约是指存在异常数据的智能合约;
根据所述目标智能合约,获取产生所述异常数据的第一区块链交易;
获取每笔所述第一区块链交易的合约函数;
根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;
根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔所述第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据。
第二方面,本申请实施例提供了一种智能合约的数据恢复装置,所述数据恢复装置包括:
合约确定模块,用于确定目标智能合约,所述目标智能合约是指存在异常数据的智能合约;
交易获取模块,用于根据所述目标智能合约,获取产生所述异常数据的第一区块链交易;
函数获取模块,用于获取每笔所述第一区块链交易的合约函数;
逆向获取模块,用于根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;
数据恢复模块,用于根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔所述第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述数据恢复方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述数据恢复方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在终端设备上运行时,使得所述终端设备执行如上述第一方面所述数据恢复方法的步骤。
由上可见,本申请在确定存在异常数据的目标智能合约之后,可以根据目标智能合约,获取产生异常数据的第一区块链交易,并获取每笔第一区块链交易的合约函数,通过与该合约函数逻辑相反的逆向函数,能够对每笔第一区块链交易产生的异常数据进行恢复,从而在不影响区块链平台上其他交易的情况下,实现对异常数据的恢复,具有较强的可操作性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是区块链数据的组成示例图;
图2是本申请实施例一提供的智能合约的数据恢复方法的实现流程示意图;
图3是本申请实施例二提供的智能合约的数据恢复方法的实现流程示意图;
图4a是第一交易列表的示例图;图4b是第二交易列表的示例图;图4c是第三交易列表的示例图;图4d是第四交易列表的示例图;
图5是目标智能合约的升级示例图;
图6是本申请实施例三提供的智能合约的数据恢复装置的结构示意图;
图7是本申请实施例四提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在说明本申请实施例之前,为了便于读者理解,先对本申请实施例中所涉及的名词进行解释说明。
区块链平台是一种分布式的可信存储系统,通常由多个区块链节点组成。区块链平台具有数据不可篡改、去中心化、块链式存储结构等特点。
区块链节点通常是指下载了相关加密货币(例如比特币、以太坊、门罗币等)软件,以参与对等网络的计算机。即,区块链节点可以理解为区块链平台中的计算机,该计算机包括但不限于手机、矿机、服务器等。
智能合约是一种能够在区块链平台上运行的可执行程序,通过开放接口的方式提供服务。智能合约具有特定的编写语言,合约代码具备一定逻辑。
智能合约开发完成后,需部署到区块链平台上,以将智能合约发送到区块链平台中的所有区块链节点上。其中,智能合约的部署是智能合约上链的过程。
智能合约的地址是智能合约在区块链平台上部署完成后具备的唯一标识。
部署在区块链平台上的智能合约能够通过冻结方式和解冻方式修改其访问权限。
冻结智能合约是指关闭智能合约的接口服务权限,即不允许该智能合约再发生交易。合约所有者具有冻结智能合约的权限。
解冻智能合约是指开放智能合约的接口服务权限,即允许该智能合约发生交易。
智能合约包括存储结构和逻辑结构。存储结构用于存储智能合约的状态数据,智能合约的状态数据通过每次与智能合约相关的区块链交易的执行而变更。
智能合约的状态数据是指智能合约中存储的数据。
智能合约的逻辑结构是指智能合约的函数(即合约函数),该函数也可以称之为方法。
如图1所示是区块链数据的组成示例图,区块链数据包括区块数据和智能合约的状态数据。区块数据可以理解为区块。
区块是链式结构,随交易的产生不断增长。区块高度随区块的生成时间,顺序递增,区块中存储有区块的生成时间。
交易(即区块链交易)是指区块链数据变更的记录,所有对区块链平台的操作都是通过交易完成的。交易执行完成后,交易本身被存储在区块中。一个区块中可以存储一个或至少两个交易。
逻辑错误是指智能合约编写者在编码时产生的漏洞,即所实现的功能与业务目标不符合,或者是对语法理解不到位导致的代码漏洞。例如:语法为“a=a+1”,当a的数值超过unit256范围后,将发生溢出事件。
智能合约用于提供接口以供业务系统调用。操作失误是指调用方在调用智能合约后发现原操作并不是所需要的,但由于区块链平台的不可篡改等机制,导致不能回滚。
回滚是指程序或者数据处理错误,将程序或者数据恢复到上一次正确状态的行为。
应理解,本实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图2,是本申请实施例一提供的智能合约的数据恢复方法的实现流程示意图,该数据恢复方法应用于终端设备,如图所示该数据恢复方法可以包括以下步骤:
步骤201,确定目标智能合约。
其中,目标智能合约是指存在异常数据的智能合约。异常数据是指智能合约发生逻辑错误或者操作失误时产生的数据。异常数据也可以称之为脏数据或者无效数据。
在确定目标智能合约时,可以是人为检测智能合约中是否存在异常数据,在存在异常数据时,确定存在异常数据的智能合约为目标智能合约。例如,合约管理员在发现存在异常数据的智能合约时,通过账号向终端设备发送智能合约确认指令,智能合约确认指令中包含目标智能合约的地址,终端设备在接收到智能合约确认指令之后,确定处于上述地址的智能合约的目标智能合约。其中,合约管理员的账号是指部署目标智能合约的账号。
在确定目标智能合约时,还可以冻结上述目标智能合约,以防止产生更多的异常数据。
步骤202,根据目标智能合约,获取产生异常数据的第一区块链交易。
其中,上述第一区块链交易是指与目标智能合约相关的且产生异常数据的交易。与目标智能合约相关的交易可以是指接收方地址为目标智能合约的地址的交易。
根据目标智能合约的地址,能够较为准确地获取与目标智能合约相关且产生异常数据的交易,以防止获取到与目标智能合约无关的交易。与目标智能合约无关的交易包括但不限于其他智能合约产生的交易、非智能合约产生的交易等。
可选地,在根据目标智能合约,获取产生异常数据的第一区块链交易之前,还包括:
获取目标时间,目标时间是指产生异常数据的时间;
获取在目标时间内产生的所有区块链交易;
根据目标智能合约,获取产生异常数据的第一区块链交易包括:
根据目标智能合约,从所有区块链交易中,筛选出属于目标智能合约的区块链交易,并确定属于目标智能合约的区块链交易为第一区块链交易。
在确定目标智能合约中存在异常数据时,可以先获取产生异常数据的时间(即目标时间),再获取在目标时间内区块链平台上产生的所有区块链交易,最后根据目标智能合约的地址,从上述所有区块链交易中筛选出属于目标智能合约的区块链交易。其中,属于目标智能合约的区块链交易可以理解为与目标智能合约相关的区块链交易。
示例性的,目标智能合约中异常数据的产生时间为2020年12月15日,即上述目标时间为2020年12月15日,可以获取区块链平台在2020年12月15日产生的所有区块链交易,从上述所有区块链交易中筛选出属于目标智能合约的区块链交易。
可选地,获取在目标时间内产生的所有区块链交易包括:
获取在目标时间内产生的所有区块;
获取所有区块中每个区块包含的区块链交易,得到所有区块链交易。
由于区块链交易执行完成之后,区块链交易本身通常被存储至区块中,一个区块中可以存储一个或至少两个区块链交易,故可以通过获取在目标时间内产生的所有区块,得到在目标时间内产生的所有区块链交易。
示例性的,目标智能合约中异常数据的产生时间为2020年12月15日,即上述目标时间为2020年12月15日,可以获取区块链平台在2020年12月15日产生的所有区块,上述所有区块内的区块链交易即为在2020年12月15日产生的所有区块链交易。
一个区块中通常存储有该区块的生成时间,如果一个区块的生成时间在上述目标时间内,则确定该区块(即生成时间在上述目标时间内的区块)是在上述目标时间内产生的区块;如果一个区块的生成时间不在上述目标时间内,则确定该区块(即生成时间不在上述目标时间内的区块)不是在上述目标时间内产生的区块。
由于区块高度随区块的生成时间顺序递增,故可以通过获取生成时间在上述目标时间内第一区块和第二区块,第一区块是首次产生异常数据的区块,第二区块是末次产生异常数据的区块,第一区块和第二区块构成区块区间,处于该区块区间内的所有区块是在目标时间内产生的所有区块,该所有区块包含的所有区块链交易是在上述目标时间内产生的所有区块链交易。例如第一区块的区块高度为N,第二区块的区块高度为K,那么第一区块和第二区块构成的区块区间为[N,K],区块N到区块K之间所有的区块链交易即为在目标时间内产生的所有交易。其中,上述区块高度也可以理解为区块编号。
可选地,根据目标智能合约,从所有区块链交易中,筛选出属于目标智能合约的区块链交易包括:
获取所有区块链交易中每个区块链交易的接收方地址;
检测所有区块链交易中是否存在接收方地址与目标地址相同的区块链交易,目标地址是指目标智能合约的地址;
若所有区块链交易中存在接收方地址与目标地址相同的区块链交易,则确定该区块链交易属于所述目标智能合约。
区块链交易中包含区块链交易双方的地址,即区块链交易的发送方地址和接收方地址,可以通过将在目标时间内产生的所有区块链交易中每个区块链交易的接收方地址与目标智能合约的地址进行比较,从上述所有区块链交易中筛选出属于目标智能合约的区块链交易。
具体地,对于上述所有区块链交易中的第i个区块链交易,第i个区块链交易为上述所有区块链交易中的任一笔区块链交易,i为小于或等于上述所有区块链交易的总数量的正整数;从第i个区块链交易中,获取第i个区块链交易的接收方地址;判断第i个区块链交易的接收方地址与目标智能合约的地址是否相同;若第i个区块链交易的接收方地址与目标智能合约的地址相同,则确定第i个区块链交易属于目标智能合约;若第i个区块链交易的接收方地址与目标智能合约的地址不相同,则确定第i个区块链交易不属于目标智能合约。通过对上述所有区块链交易中的每个区块链交易均执行上述判断操作,可以判断上述所有区块链交易中的每个区块链交易是否属于目标智能合约,从而从上述所有区块链交易中筛选出所有属于目标智能合约的区块链交易。其中,上述判断操作是指上述判断第i个区块链交易是否属于目标智能合约的操作。
步骤203,获取每笔第一区块链交易的合约函数。
在本实施例中,产生异常数据的第一区块链交易的数量为至少一笔,可以通过对每笔第一区块链交易进行解析,得到该笔第一区块链交易的合约函数。例如,在步骤202中,获取到三笔第一区块链交易,可以通过分别对第一笔第一区块链交易、第二笔第一区块链交易和第三笔第一区块链交易进行解析,得到第一笔第一区块链交易的合约函数、第二笔第一区块链交易的合约函数和第三笔第一区块链交易的合约函数。其中,上述步骤203中具体可以是获取每笔第一区块链交易的合约函数的名称和参数。
具体地,可以采用目标智能合约的语法树,对每笔第一区块链交易的目标数据进行解析,得到该笔所述第一区块链交易的合约函数。
其中,上述目标智能合约的语法树具体可以是指目标智能合约的抽象语法树(Abstract Syntax Code,AST)。目标智能合约的AST是目标智能合约的源代码的抽象语法结构的树状表示,树上的每个节点均表示源代码中的一种结构。目标智能合约的AST用于定义目标智能合约的函数、参数、返回值的类型名称等,以构建目标智能合约的区块链交易和解析目标智能合约的区块链交易。上述目标智能合约的区块链交易是指属于目标智能合约的区块链交易。
需要说明的是,智能合约中的AST也可以使用应用程序二进制接口(ApplicationBinary Interface,ABI)命名。
上述第一区块链交易的目标数据包括但不限于第一区块链交易的payload等交易内容。通过采用目标智能合约的语法树,可以对第一区块链交易的payload等交易内容进行解析,得到第一区块链交易的合约函数的名称和参数。其中,上述第一区块链交易的payload是第一区块链交易的合约函数的名称和参数的封装编码。
上述第一区块链交易的合约函数可以是指生成该第一区块链交易时所调用的目标智能合约的函数。目标智能合约的函数用于实现目标智能合约的逻辑,目标智能合约的逻辑也可以称之为目标智能合约的逻辑结构。
步骤204,根据每笔第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反。
其中,一个合约函数的逻辑与该合约函数的逆向函数的逻辑相反,逻辑相反可以理解为数据操作相反。示例性的,一个合约函数的逻辑是“a=a+1”,那么该合约函数的逆向函数的逻辑是“a=a-1”。
步骤205,根据每笔第一区块链交易的合约函数的逆向函数,对该笔第一区块链交易产生的异常数据进行恢复,得到恢复后数据。
对于步骤202中获取的每笔第一区块链交易,由于该笔第一区块链交易的逆向函数(即该笔第一区块链交易的合约函数的逆向函数)与该笔第一区块链交易的合约函数的逻辑相反,故通过该笔第一区块链交易的逆向函数可以实现对异常数据的回滚,对由于目标智能合约发生逻辑错误或者操作失误时产生的异常数据进行恢复,得到恢复后数据。
本申请实施例在确定存在异常数据的目标智能合约之后,可以根据目标智能合约,获取产生异常数据的第一区块链交易,并获取每笔第一区块链交易的合约函数,通过与该合约函数逻辑相反的逆向函数,能够对每笔第一区块链交易产生的异常数据进行恢复,从而在不影响区块链平台上其他交易的情况下,实现对异常数据的恢复,具有较强的可操作性。
参见图3,是本申请实施例二提供的智能合约的数据恢复方法的实现流程示意图,该数据恢复方法应用于终端设备,如图所示该数据恢复方法可以包括以下步骤:
步骤301,确定目标智能合约。
该步骤与步骤201相同,具体可参见步骤201的相关描述,在此不再赘述。
另外,在确定目标智能合约时,还可以冻结该目标智能合约,以防止产生更多的异常数据。
具体地,合约管理员可以通过账号向目标智能合约发送合约冻结交易,目标智能合约在接收到上述合约冻结交易之后,执行上述合约冻结交易,在上述合约冻结交易执行成功后,终端设备冻结上述目标智能合约。上述合约冻结交易中包含目标智能合约的地址,以指示冻结处于该地址的智能合约,即冻结目标智能合约。
冻结目标智能合约可以是指停止对目标智能合约的调用权限,即无法成功执行以目标智能合约的地址为接收方地址的区块链交易。
步骤302,根据目标智能合约,获取产生异常数据的第一区块链交易,并由第一区块链交易形成第一交易列表。
该步骤与步骤202部分相同,相同部分具体可参见步骤202的相关描述,在此不再赘述。
在本实施例中,根据步骤302获取的产生异常数据的所有第一区块链交易,形成第一交易列表。在第一交易列表中所有第一区块链交易是按照生成时间的先后顺序排列的,生成时间越早的第一区块链交易在第一交易列表中排列位置越靠前,生成时间越晚的第一区块链交易在第一交易列表中排列位置越靠后。如图4a所示是第一交易列表的示例图,该第一交易列表中包含n笔第一区块链交易,第一区块链交易1的生成时间最早,故排列在第一交易列表的首位,第一区块链交易n的生成时间最晚,故排列在第一交易列表的末位。图4a中的from表示发送方地址,to表示接收方地址。
由于区块是链式结构,随区块链交易的产生不断增长,故区块之间的链式关系也表明了区块的生成时间的先后顺序,而产生异常数据的所有第一区块链交易是根据区块获得的,故根据区块之间的链式关系即可得到上述所有第一区块链交易在第一交易列表中的排列顺序。
步骤303,按照第一交易列表中第一区块链交易的排列次序,采用目标智能合约的语法树,依次对每笔第一区块链交易的目标数据进行解析,确定解析后的该笔第一区块链交易为第二区块链交易,并由第二区块链交易形成第二交易列表。
具体地,可以按照第一交易列表中所有第一区块链交易的排列次序,采用目标智能合约的语法树,依次对每笔第一区块链交易的目标数据进行解析,得到每笔第一区块链交易的合约函数的名称和参数,遍历完第一交易列表中所有第一区块链交易,即可得到所有第一区块链交易的合约函数的名称和参数。
示例性的,第一交易列表中包含三笔第一区块链交易,三笔第一区块链交易在第一交易列表中的排列次序依次为第一区块链交易1、第一区块链交易2和第一区块链交易3。可以先采用目标智能合约的语法树,对第一区块链交易1的payload进行解析,得到第一区块链交易1的合约函数的名称和参数;然后再采用目标智能合约的语法树,对第一区块链交易2的payload进行解析,得到第一区块链交易2的合约函数的名称和参数;最后再采用目标智能合约的语法树,对第一区块链交易3的payload进行解析,得到第一区块链交易3的合约函数的名称和参数。
需要说明的是,在实施例一中已对目标智能合约的语法树、目标数据和合约函数进行介绍,在此不再赘述。
在对每笔第一区块链交易的payload进行解析之后,可以得到该笔第一区块链交易的合约函数的名称和参数,故解析后的该笔第一区块链交易中包含合约函数的名称和参数,即该笔第一区块链交易对应的第二区块链交易中包含合约函数的名称和参数。
在对第一交易列表中所有第一区块链交易的目标数据进行解析之后,可以得到所有第一区块链交易各自对应的第二区块链交易,所有第一区块链交易各自对应的第二区块链交易形成第二交易列表。
由于第二交易列表中所有第二区块链交易是上述所有第一区块链交易按照排列次序依次进行解析得到的,故解析越早的第一区块链交易,其对应的第二区块链交易的生成时间越早,在第二交易列表中排列位置越靠前,解析越晚的第一区块链交易,其对应的第二区块链交易的生成时间越晚,在第二交易列表中排列位置越靠后。如图4b所示是第二交易列表的示例图,该第二交易列表中包含n笔第二区块链交易,上述n笔第二区块链交易是对图4a中n笔第一区块链交易解析后得到的,第二区块链交易1的生成时间最早,故排列在第二交易列表的首位,第二区块链交易n的生成时间最晚,故排列在第二交易列表的末位。图4b中addr表示目标地址,name表示函数名称,params表示参数,func1表示合约函数的名称。
在一实施例中,在获得第一交易列表中所有第一区块链交易的合约函数的逆向函数之后,还可以在目标智能合约中增加得到的所有逆向函数,以实现对目标智能合约的升级,得到升级合约(即升级后的目标智能合约),并将位于目标地址的智能合约由目标智能合约更新为升级合约。如图5所示是目标智能合约的升级示例图。
在得到升级合约之后,需要将升级合约部署到区块链平台,以方便区块链平台对升级合约的调用。
步骤304,按照第二交易列表中第二区块链交易的排列次序,依次将每笔第二区块链交易的函数名称更新为逆向函数的名称,生成该笔第二区块链交易对应的第三区块链交易,并按照生成时间对第三区块链交易进行逆序排列,形成第三交易列表。
具体地,可以按照第二交易列表中所有第二区块链交易的排列次序,依次将每笔第二区块链交易的函数名称由合约函数的名称更新为逆向函数的名称,函数名称更新后的该笔第二区块链交易即为该笔第二区块链交易对应的第三区块链交易,遍历完第二交易列表中所有第二区块链交易,即可得到第二交易列表中所有第二区块链交易各自对应的第三区块链交易。由于第三区块链交易是所有第二区块链交易按照排列次序依次进行函数名称变更生成的,故可以根据所有第三区块链交易的生成时间,对所有第三区块链交易进行逆序排列,即生成时间越早的第三区块链交易在第三交易列表中排列位置越靠后,生成时间越晚的第三区块链交易在第三交易列表中排列位置越靠前。如图4c所示是第三交易列表的示例图,该第三交易列表中包括n笔第三区块链交易,上述n笔第三区块链交易是对图4b中n笔第二区块链交易进行函数名称变更得到的,第三区块链交易n的生成时间最晚,故排列在第三交易列表的首位,第三区块链交易1的生成时间最早,故排列在第三交易列表的末位。图4c中addr表示目标地址,name表示函数名称,params表示参数,Rfunc1表示逆向函数的名称。
步骤305,按照第三交易列表中第三区块链交易的排列次序,依次对每笔第三区块链交易进行编码,生成该笔第三区块链交易对应的第四区块链交易,并由第四区块链交易形成第四交易列表。
其中,对第三区块链交易进行编码可以是指对第三区块链交易进行封装,形成可执行的交易。对第三区块链交易进行封装具体是指对第三区块链交易的函数名称和参数进行封装。
具体地,可以按照第三交易列表中第三区块链交易的排列次序,依次对每笔第三区块链交易进行编码,得到该笔第三区块链交易对应的第四区块链交易,遍历完第三交易列表中所有第三区块链交易,即可得到第三交易列表中所有第三区块链交易各自对应的第四区块链交易,所有第三区块链交易各自对应的第四区块链交易形成第四交易列表。
由于第四交易列表中所有第四区块链交易是上述所有第三区块链交易按照排列次序依次进行编码得到的,故编码越早的第三区块链交易,其对应的第四区块链交易的生成时间,在第四交易列表中的排列位置越靠前,编码越晚的第三区块链交易,其对应的第四区块链交易的生成时间越晚,在第四交易列表中的排列位置越靠后。如图4d所示是第四交易列表的示例图,该第四交易列表中包括n笔第四区块链交易,上述n笔第四区块链交易是对图4c中n笔第三区块链交易进行编码后得到的,第四区块链交易n的生成时间最早,故排列在第四交易列表的首位,第四区块链交易1的生成时间最晚,故排列在第四交易列表的末位。图4d中的from表示发送方地址,to表示接收方地址。
步骤306,按照第四交易列表中第四区块链交易的排列次序,依次将每笔第四区块链交易发送至区块链平台,以通过区块链平台执行该笔第四区块链交易,得到该笔第四区块链交易对应的恢复后数据。
具体地,可以按照第四交易列表中第四区块链交易的排列次序,依次将每笔第四区块链交易发送至区块链平台,区块链平台接收到该笔第四区块链交易之后,执行该笔第四区块链交易,执行完成后得到的数据即为该笔第四区块链交易对应的恢复后数据,区块链平台执行完第四交易列表中所有第四区块链交易之后,即可得到目标智能合约的所有异常数据对应的恢复后数据。
其中,对于第j笔第四区块链交易,第j笔第四区块链交易为第四交易列表中的任一笔第四区块链交易,j为小于或等于第四区块链交易的总数量的正整数,第j笔第四区块链交易对应的恢复后数据可以理解为:与第j笔第四区块链交易对应的第一区块链交易产生的异常数据对应的恢复后数据。例如,图4d中的第四区块链交易n对应图4c中的第三区块链交易n,图4c中的第三区块链交易n对应图4b中的第二区块链交易n,图4b中的第二区块链交易n对应图4a中的第一区块链交易n,那么图4d中的第四区块链交易n对应图4a中的第一区块链交易n,第四区块链交易n对应的恢复后数据即是第一区块链交易n产生的异常数据对应的恢复后数据。
需要说明的是,在将第四区块链交易发送至区块链平台之前,需要先对位于目标地址的智能合约(即升级合约)进行解冻,以便于区块链平台在执行第四区块链交易时,能够调用升级合约,得到恢复后数据。
在本实施例中,在对异常数据进行恢复之后,还可以通过查询恢复后数据是否符合恢复效果,实现对恢复后数据的验证。
本申请实施例通过获得逆向函数和升级合约,并将第四区块链交易发送至区块链平台,能够在不影响区块链平台上其他交易的情况下,通过区块链平台实现对异常数据的恢复,具有较强的可操作性。
参见图6,是本申请实施例三提供的智能合约的数据恢复装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
数据恢复装置包括:
合约确定模块61,用于确定目标智能合约,目标智能合约是指存在异常数据的智能合约;
交易获取模块62,用于根据目标智能合约,获取产生异常数据的第一区块链交易;
函数获取模块63,用于获取每笔第一区块链交易的合约函数;
逆向获取模块64,用于根据每笔第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;
数据恢复模块65,用于根据每笔第一区块链交易的合约函数的逆向函数,对该笔第一区块链交易产生的异常数据进行恢复,得到恢复后数据。
可选地,上述数据恢复装置还包括:
时间获取模块,用于获取目标时间,目标时间是指产生异常数据的时间;
目标获取模块,用于获取在目标时间内产生的所有区块链交易;
上述交易获取模块62具体用于:
根据目标智能合约,从所有区块链交易中,筛选出属于目标智能合约的区块链交易,并确定属于目标智能合约的区块链交易为第一区块链交易。
可选地,上述目标获取模块具体用于:
获取在目标时间内产生的所有区块;
获取所有区块中每个区块包含的区块链交易,得到所有区块链交易。
上述交易获取模块62具体用于:
获取所有区块链交易中每个区块链交易的接收方地址;
检测所有区块链交易中是否存在接收方地址与目标地址相同的区块链交易,目标地址是指目标智能合约的地址;
若所有区块链交易中存在接收方地址与目标地址相同的区块链交易,则确定该区块链交易属于目标智能合约。
可选地,上述函数获取模块63具体用于:
采用目标智能合约的语法树,对每笔第一区块链交易的目标数据进行解析,得到该笔第一区块链交易的合约函数。
可选地,上述数据恢复装置还包括:
列表形成模块,用于由第一区块链交易形成第一交易列表。
可选地,上述函数获取模块63具体用于:
按照第一交易列表中第一区块链交易的排列次序,采用目标智能合约的语法树,依次对每笔第一区块链交易的目标数据进行解析。
可选地,上述数据恢复装置还包括:
交易确定模块,用于确定解析后的每笔第一区块链交易为第二区块链交易,并由第二区块链交易形成第二交易列表;
上述数据恢复模块65包括:
函数更新单元,用于按照第二交易列表中第二区块链交易的排列次序,依次将每笔第二区块链交易的函数名称更新为逆向函数的名称,生成该笔第二区块链交易对应的第三区块链交易,并按照生成时间对第三区块链交易进行逆序排列,形成第三交易列表;
交易编码单元,用于按照第三交易列表中第三区块链交易的排列次序,依次对每笔第三区块链交易进行编码,生成该笔第三区块链交易对应的第四区块链交易,并由第四区块链交易形成第四交易列表;
交易发送单元,用于按照第四交易列表中第四区块链交易的排列次序,依次将每笔第四区块链交易发送至区块链平台,以通过区块链平台执行该笔第四区块链交易,得到该笔第四区块链交易对应的恢复后数据。
可选地,上述数据恢复装置还包括:
合约冻结模块,用于冻结位于目标地址的目标智能合约,目标地址是指目标智能合约的地址;
合约升级模块,用于在目标智能合约中增加逆向函数,得到升级合约,且位于目标地址的智能合约由目标智能合约变更为升级合约;
合约解冻模块,用于解冻位于目标地址的升级合约。
本申请实施例提供的数据恢复装置可以应用在前述方法实施例一和实施例二中,详情参见上述方法实施例一和实施例二的描述,在此不再赘述。
图7是本申请实施例四提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:一个或多个处理器70(图中仅示出一个)、存储器71以及存储在存储器71中并可在至少一个处理器70上运行的计算机程序72。处理器70执行计算机程序72时实现上述各个数据恢复方法实施例中的步骤。
终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器71可以是终端设备7的内部存储单元,例如终端设备7的硬盘或内存。存储器71也可以是终端设备7的外部存储设备,例如终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器71还可以既包括终端设备7的内部存储单元也包括外部存储设备。存储器71用于存储计算机程序以及终端设备所需的其他程序和数据。存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本申请实现上述实施例方法中的全部或部分流程,也可以通过一种计算机程序产品来完成,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种智能合约的数据恢复方法,其特征在于,所述数据恢复方法包括:
确定目标智能合约,所述目标智能合约是指存在异常数据的智能合约;
根据所述目标智能合约,获取产生所述异常数据的第一区块链交易;
获取每笔所述第一区块链交易的合约函数;
根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;
根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔所述第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据。
2.如权利要求1所述的数据恢复方法,其特征在于,在根据所述目标智能合约,获取产生所述异常数据的第一区块链交易之前,还包括:
获取目标时间,所述目标时间是指产生所述异常数据的时间;
获取在所述目标时间内产生的所有区块链交易;
所述根据所述目标智能合约,获取产生所述异常数据的第一区块链交易包括:
根据所述目标智能合约,从所述所有区块链交易中,筛选出属于所述目标智能合约的区块链交易,并确定所述属于所述目标智能合约的区块链交易为所述第一区块链交易。
3.如权利要求2所述的数据恢复方法,其特征在于,所述获取在所述目标时间内产生的所有区块链交易包括:
获取在所述目标时间内产生的所有区块;
获取所述所有区块中每个区块包含的区块链交易,得到所述所有区块链交易。
4.如权利要求2所述的数据恢复方法,其特征在于,所述根据所述目标智能合约,从所述所有区块链交易中,筛选出属于所述目标智能合约的区块链交易包括:
获取所述所有区块链交易中每个区块链交易的接收方地址;
检测所述所有区块链交易中是否存在接收方地址与目标地址相同的区块链交易,所述目标地址是指所述目标智能合约的地址;
若所述所有区块链交易中存在接收方地址与所述目标地址相同的区块链交易,则确定该区块链交易属于所述目标智能合约。
5.如权利要求1至4任一项所述的数据恢复方法,其特征在于,所述获取每笔所述第一区块链交易的合约函数包括:
采用所述目标智能合约的语法树,对每笔所述第一区块链交易的目标数据进行解析,得到该笔所述第一区块链交易的合约函数。
6.如权利要求5所述的数据恢复方法,其特征在于,根据所述目标智能合约,获取产生所述异常数据的第一区块链交易之后,还包括:
由所述第一区块链交易形成第一交易列表;
所述采用所述目标智能合约的语法树,对每笔所述第一区块链交易的目标数据进行解析包括:
按照所述第一交易列表中所述第一区块链交易的排列次序,采用所述目标智能合约的语法树,依次对每笔所述第一区块链交易的目标数据进行解析;
在依次对每笔所述第一区块链交易的目标信息进行解析之后,还包括:
确定解析后的每笔所述第一区块链交易为第二区块链交易,并由所述第二区块链交易形成第二交易列表;
所述根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据包括:
按照所述第二交易列表中所述第二区块链交易的排列次序,依次将每笔所述第二区块链交易的函数名称更新为逆向函数的名称,生成该笔所述第二区块链交易对应的第三区块链交易,并按照生成时间对所述第三区块链交易进行逆序排列,形成第三交易列表;
按照所述第三交易列表中所述第三区块链交易的排列次序,依次对每笔所述第三区块链交易进行编码,生成该笔所述第三区块链交易对应的第四区块链交易,并由所述第四区块链交易形成第四交易列表;
按照所述第四交易列表中所述第四区块链交易的排列次序,依次将每笔所述第四区块链交易发送至区块链平台,以通过所述区块链平台执行该笔所述第四区块链交易,得到该笔所述第四区块链交易对应的恢复后数据。
7.如权利要求6所述的数据恢复方法,其特征在于,在根据所述目标智能合约,获取产生所述异常数据的第一区块链交易之前,还包括:
冻结位于目标地址的所述目标智能合约,所述目标地址是指所述目标智能合约的地址;
在根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数之后,还包括:
在所述目标智能合约中增加所述逆向函数,得到升级合约,且位于所述目标地址的智能合约由所述目标智能合约更新为所述升级合约;
在按照所述第四交易列表中所述第四区块链交易的排列次序,依次将每笔所述第四区块链交易发送至区块链平台之前,还包括:
解冻位于所述目标地址的所述升级合约。
8.一种智能合约的数据恢复装置,其特征在于,所述数据恢复装置包括:
合约确定模块,用于确定目标智能合约,所述目标智能合约是指存在异常数据的智能合约;
交易获取模块,用于根据所述目标智能合约,获取产生所述异常数据的第一区块链交易;
函数获取模块,用于获取每笔所述第一区块链交易的合约函数;
逆向获取模块,用于根据每笔所述第一区块链交易的合约函数,获取该合约函数的逆向函数,该逆向函数的逻辑与该合约函数的逻辑相反;
数据恢复模块,用于根据每笔所述第一区块链交易的合约函数的逆向函数,对该笔所述第一区块链交易产生的所述异常数据进行恢复,得到恢复后数据。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述数据恢复方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据恢复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606527.0A CN112650627A (zh) | 2020-12-28 | 2020-12-28 | 智能合约的数据恢复方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606527.0A CN112650627A (zh) | 2020-12-28 | 2020-12-28 | 智能合约的数据恢复方法、装置、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112650627A true CN112650627A (zh) | 2021-04-13 |
Family
ID=75364489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011606527.0A Pending CN112650627A (zh) | 2020-12-28 | 2020-12-28 | 智能合约的数据恢复方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650627A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190234A (zh) * | 2021-05-21 | 2021-07-30 | 电子科技大学 | 针对区块链智能合约函数签名自动化恢复的方法及系统 |
-
2020
- 2020-12-28 CN CN202011606527.0A patent/CN112650627A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190234A (zh) * | 2021-05-21 | 2021-07-30 | 电子科技大学 | 针对区块链智能合约函数签名自动化恢复的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11611445B2 (en) | Changing smart contracts recorded in block chains | |
US20030216927A1 (en) | System and method for automated safe reprogramming of software radios | |
CN109885612B (zh) | 区块链智能合约的同步生效方法及装置 | |
CN114465998B (zh) | 多设备的文件传输方法、装置、终端设备及可读存储介质 | |
CN111694638A (zh) | 规则包加载方法、规则包执行方法及终端设备 | |
CN111343267B (zh) | 一种配置的管理方法及系统 | |
CN112650627A (zh) | 智能合约的数据恢复方法、装置、终端设备及存储介质 | |
CN116502283A (zh) | 一种隐私数据处理方法及装置 | |
CN112632619A (zh) | 跨链存证方法、装置、终端设备及存储介质 | |
CN111722994A (zh) | 一种任务请求的响应方法及设备 | |
CN109801166B (zh) | 一种基于状态锁的智能合约的安全函数的设计方法及系统 | |
CN109859038B (zh) | 一种区块链智能合约的生效方法及装置 | |
CN114217911A (zh) | 一种跨链事务处理方法、装置、计算设备和介质 | |
CN113986592A (zh) | 日志记录方法、装置、终端设备及可读存储介质 | |
CN114490135A (zh) | 一种任务处理方法、装置、电子设备以及存储介质 | |
CN114942797B (zh) | 基于边车模式的系统配置方法、装置、设备及存储介质 | |
CN112712610A (zh) | 车辆诊断日志处理方法、装置、终端设备及可读存储介质 | |
CN114270309A (zh) | 资源获取方法、装置以及电子设备 | |
CN111737274A (zh) | 交易数据的处理方法、装置和服务器 | |
CN110825406A (zh) | 一种软件升级的方法及相关设备 | |
CN113377348B (zh) | 应用于任务引擎的任务调整方法、相关装置和存储介质 | |
CN112748932B (zh) | 基于智能合约的数据处理方法、服务器 | |
CN112884586B (zh) | 交易执行方法和区块链节点 | |
CN113342275B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 | |
CN113360219B (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 |