A blockchain attack interception method and device

By generating a unique identifier for each sub-transaction operation on the blockchain platform and building a directed relationship graph to identify and intercept reentry attacks, the problem of not being able to intercept reentry attacks in advance in the existing technology is solved, and higher security and stability of business processing are achieved.

CN114049118BActive Publication Date: 2025-05-30WEBANK (CHINA)
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202111300723.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-11-04
Publication Date
2025-05-30
Estimated Expiration
2041-11-04

AI Technical Summary

Technical Problem

The existing technology cannot effectively intercept reentry attacks in blockchain in advance, resulting in security risks and losses.

Method used

By generating a unique sub-transaction identifier for each sub-transaction operation on the blockchain platform and recording its read and write records, a directed relationship graph is built to detect inter-node loops, thereby identifying and intercepting reentry attacks.

Benefits of technology

Pre-interception of reentry attacks is achieved, potential losses are avoided, and the security of blockchain business processing is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114049118B_ABST
    Figure CN114049118B_ABST
Patent Text Reader

Abstract

An embodiment of the present invention provides a blockchain attack interception method and apparatus. The method includes: during the execution of a transaction request by a blockchain platform, for a sub-transaction operation that invokes a smart contract, generating a sub-transaction identifier for the sub-transaction operation; for a read operation / write operation on a persistent storage space in the sub-transaction operation, generating a read / write record of the sub-transaction operation; the read / write record includes a read / write type, a sub-transaction identifier, and a read / write address; wherein, each sub-transaction identifier generated each time a smart contract is invoked is different; after the transaction request is executed, the blockchain platform performs a conflict check on the read / write records of each sub-transaction operation; if there is a read / write conflict for the same read / write address by different sub-transaction identifiers, forming an operation of invoking the smart contract, then rolling back the transaction request. The above method can achieve pre-interception of re-entrancy attacks and eliminate the losses caused by re-entrancy attacks.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the fields of blockchain and smart contracts, and particularly to a blockchain attack interception method and device. Background Art

[0002] In recent years, with the development of computer technology, more and more technologies have been applied in the financial field. The traditional financial industry is gradually transforming into financial technology (Fintech). However, due to the security and real-time requirements of the financial industry, higher requirements are also imposed on technologies. Due to the advantages of the cryptographic technology and the decentralized concept on which the blockchain is based, that is, the historical information on the chain cannot be tampered with, the blockchain technology is also widely used in the financial industry.

[0003] For example, currently, services such as deposits, withdrawals, and loans in the financial industry can rely on the underlying virtual machine as an execution machine, run in the smart contract of the blockchain, obtain the service processing results, and update the blockchain ledger according to the processing results. Compared with the prior art in which the above deposit and withdrawal and other services are completed through a central server, the service processing security is improved and the service processing speed is accelerated. However, there are still security risks in business processing through the blockchain. Now, in order to solve the security risk of reentry attacks, generally, the data during the operation of the smart contract is monitored, such as the fund flow. However, this monitoring method can only monitor the reentry attack based on the abnormality of the call data of the fund flow after the reentry attack has occurred. Therefore, it is not possible to completely intercept the reentry attack.

[0004] Therefore, there is an urgent need for a blockchain attack interception method and device that can achieve pre-interception of reentry attacks and eliminate the losses caused by reentry attacks. Summary of the Invention

[0005] Embodiments of the present invention provide a blockchain attack interception method and device that can achieve pre-interception of reentry attacks and eliminate the losses caused by reentry attacks.

[0006] In a first aspect, an embodiment of the present invention provides a blockchain attack interception method, which includes:

[0007] During the process of the blockchain platform executing a transaction request, for a sub-transaction operation that calls a smart contract, a sub-transaction identifier of the sub-transaction operation is generated; for a read operation / write operation on the persistent storage space in the sub-transaction operation, a read / write record of the sub-transaction operation is generated; the read / write record includes a read / write type, a sub-transaction identifier, and a read / write address; wherein, each sub-transaction identifier generated by each call to the smart contract is different;

[0008] After the blockchain platform completes the execution of the transaction request, it performs a conflict check on the read and write records of each sub-transaction operation; if there is a read-write conflict of different sub-transaction identifiers for the same read-write address, resulting in an operation to call a smart contract, the transaction request is rolled back.

[0009] In the above method, a sub-transaction identifier is generated for the sub-transaction operation instruction that calls the smart contract, and a read-write record of the sub-transaction operation is generated for each read operation / write operation on the persistent storage space corresponding to each sub-transaction operation. In this way, if there are multiple sub-transaction identifiers in a transaction, the conflict-dependent relationship between each sub-transaction can be determined through the read-write records corresponding to each sub-transaction identifier. If there is a conflict-dependent relationship, it is determined that there is an external call relationship between this sub-transaction and another sub-transaction. Further, if the dependent relationship forms a complete external call operation of this sub-transaction to another sub-transaction, that is, during the execution of this sub-transaction, after the execution of another sub-transaction, it returns to this sub-transaction to continue executing the remaining operations of this sub-transaction, then it can be determined that the transaction is a transaction with a re-entrancy attack and an alarm is generated. Compared with the prior art that determines whether there is a re-entrancy attack by analyzing historical transaction data, fund flows, etc., the present invention effectively intercepts the re-entrancy attack before processing the transaction processing request, that is, before the attack is executed.

[0010] Optionally, for the sub-transaction operation that calls the smart contract, generating the sub-transaction identifier of the sub-transaction operation includes: incrementally generating sub-transaction identifiers for each sub-transaction operation according to the execution order of each sub-transaction operation in the transaction request.

[0011] In the above method, for the sub-transaction operation in each transaction request, sub-transaction identifiers are incrementally generated, assigning a unique number to each sub-transaction, ensuring the uniqueness of the sub-transaction identifiers in the transaction request, and facilitating the construction of the subsequent directed relationship graph.

[0012] Optionally, performing a conflict check on the read and write records of each sub-transaction operation includes: generating a directed relationship graph according to the read and write records of each sub-transaction operation, where the directed relationship graph includes each node indicating each sub-transaction identifier and directed edges indicating read-write conflicts between nodes; performing a conflict check based on whether there is a loop between nodes in the directed relationship graph.

[0013] In the above method, a directed relationship graph is generated through the read and write records of each sub-transaction operation to record the order of sub-transaction operations, and a directed edge in the directed relationship graph is generated by judging whether there is a read-write conflict between the previous sub-transaction operation and the subsequent sub-transaction through the read and write records, facilitating the judgment of loops in the directed relationship graph and ensuring the reliability of attack interception.

[0014] Optionally, conflict checking is performed based on whether there is a loop between nodes in the directed relationship graph, including: determining whether there is a node with an in-degree of 0 in the directed relationship graph; deleting each directed edge emitted by the node with an in-degree of 0 from the directed relationship graph, thereby updating the directed relationship graph; adding the node with an in-degree of 0 to the summary record and returning to determine whether there is a node with an in-degree of 0 in the directed relationship graph until there is no node with an in-degree of 0 in the directed relationship graph; based on whether the summary record contains all nodes of the directed relationship graph, determining whether there is a loop between nodes.

[0015] In the above method, according to whether the number of nodes with an in-degree of 0 in the statistical directed relationship graph is the number of all sub-transactions, that is, whether it contains the number of all nodes in the directed relationship graph. If it contains, it is determined that there is no loop in the directed relationship graph; otherwise, there is a loop in the directed relationship graph (there is a re-entry attack). In addition, according to the read-write conflicts in the read-write records of the first sub-transaction operation and the read-write records of the second sub-transaction operation, the directed edge forming a closed loop between the first node and the second node can be determined, and then it is determined that there is a complete external call smart contract operation between the sub-transactions corresponding to the first node and the second node, that is, there is a re-entry attack. Otherwise, there is no re-entry attack. In this way, the call relationship between each sub-transaction in the transaction request can be clearly and quickly obtained, and the request with a re-entry attack can be intercepted. Among them, the first sub-transaction operation can be before the second sub-transaction operation in the execution order.

[0016] Optionally, generating a directed relationship graph according to the read-write records of each sub-transaction operation includes: generating each node in the directed relationship graph according to each sub-transaction identifier in the read-write records of each sub-transaction operation; for the read-write record of the i-th sub-transaction operation, obtaining the read-write record of the j-th sub-transaction operation; where the j-th sub-transaction operation is any sub-transaction operation after the i-th sub-transaction operation in the execution order; if the read-write addresses in the read-write record of the i-th sub-transaction operation and the read-write record of the j-th sub-transaction operation are the same and there is a conflict in the read-write types, then add a directed edge from the i-th node corresponding to the i-th sub-transaction operation to the j-th node corresponding to the j-th sub-transaction operation in the directed relationship graph; the conflict in the read-write types includes read operation and write operation / write operation and write operation / write operation and read operation.

[0017] In the above method, according to the read / write operation order of two sub-transaction operations with read-write conflicts, a directed edge between the nodes corresponding to the two sub-transaction operations is generated, and a directed relationship graph containing the directed edge is obtained, which is convenient for judging the loop in the relationship graph and ensures the reliability of attack interception.

[0018] Optionally, it further includes: if no read-write conflict of different sub-transaction identifiers for the same read-write address is found in the conflict check to form a call to the smart contract operation, then update the processing result of the transaction request to the blockchain ledger.

[0019] In the above method, if no read-write conflict of different sub-transaction identifiers for the same read-write address is found in the conflict check to form a call to the smart contract operation, then the smart contract of the sub-transaction does not have an external call, that is, there is no loop in the directed relationship graph, so there is no re-entry attack in the transaction processing request, and the transaction processing request can be processed, and the blockchain ledger is updated according to the processing result.

[0020] Optionally, after a read-write conflict of different sub-transaction identifiers for the same read-write address is found to form a call to the smart contract operation, it further includes: recording the relevant information of the transaction request in a log file and giving an alarm.

[0021] In the above method, it is convenient to analyze according to the log file to obtain the attacker.

[0022] In a second aspect, an embodiment of the present invention provides a blockchain attack interception device, and the device includes:

[0023] An analysis module, configured to generate a sub-transaction identifier of the sub-transaction operation for a sub-transaction operation that calls the smart contract during the execution of the transaction request; generate a read-write record of the sub-transaction operation for a read operation / write operation on the persistent storage space in the sub-transaction operation; the read-write record includes a read-write type, a sub-transaction identifier, and a read-write address; wherein, each sub-transaction identifier generated by each call to the smart contract is different;

[0024] A processing module, configured to perform a conflict check on the read-write records of each sub-transaction operation after the transaction request is executed; if there is a read-write conflict of different sub-transaction identifiers for the same read-write address to form a call to the smart contract operation, then roll back the transaction request.

[0025] In a third aspect, an embodiment of the present invention further provides a computing device, including: a memory for storing a program; a processor for calling the program stored in the memory and executing the method described in various possible designs of the first aspect according to the obtained program.

[0026] In a fourth aspect, an embodiment of the present invention further provides a computer-readable non-volatile storage medium, including a computer-readable program, and when a computer reads and executes the computer-readable program, the computer is caused to execute the method described in various possible designs of the first aspect.

[0027] These implementation manners or other implementation manners of the present invention will be more clearly understood in the following description of the embodiments. Description of the Drawings

[0028] To more clearly illustrate the technical solutions in the embodiments of the present invention, the following briefly introduces the accompanying drawings required for the description of the embodiments. Obviously, the accompanying drawings in the following description are only some embodiments of the present invention. For those of ordinary skill in the art, without creative efforts, other accompanying drawings can be obtained based on these drawings.

[0029] Figure 1 It is a schematic diagram of the architecture of a blockchain attack interception system provided by an embodiment of the present invention;

[0030] Figure 2 It is a schematic diagram of the architecture of a blockchain attack interception system provided by an embodiment of the present invention;

[0031] Figure 3 It is a schematic flowchart of a blockchain attack interception method provided by an embodiment of the present invention;

[0032] Figure 4 It is a schematic flowchart of a method for generating a directed relationship graph provided by an embodiment of the present invention;

[0033] Figure 5 It is a directed relationship graph provided by an embodiment of the present invention;

[0034] Figure 6 It is a directed relationship graph provided by an embodiment of the present invention;

[0035] Figure 7 It is a directed relationship graph provided by an embodiment of the present invention;

[0036] Figure 8 It is a directed relationship graph provided by an embodiment of the present invention;

[0037] Figure 9 It is a directed relationship graph provided by an embodiment of the present invention;

[0038] Figure 10 It is a directed relationship graph provided by an embodiment of the present invention;

[0039] Figure 11 It is a schematic flowchart of a blockchain attack interception method provided by an embodiment of the present invention;

[0040] Figure 12 It is a schematic diagram of a blockchain attack interception device provided by an embodiment of the present invention. Detailed implementation manners

[0041] To make the objectives, technical solutions and advantages of the present invention clearer, the present invention will be further described in detail below with reference to the accompanying drawings. Apparently, the described embodiments are only a part rather than all of the embodiments of the present invention. All other embodiments obtained by those of ordinary skill in the art based on the embodiments of the present invention without creative efforts shall fall within the protection scope of the present invention.

[0042] Figure 1 The figure is a schematic structural diagram of a blockchain attack interception system provided by an embodiment of the present invention. After receiving a transaction request sent by a user, a blockchain platform determines a sub-transaction operation for invoking a smart contract. During the process of invoking the smart contract by the sub-transaction operation, as the sub-transaction of the sub-transaction operation is created, a sub-transaction identifier is incrementally generated for each sub-transaction operation. In this way, a unique number is maintained for the sub-transaction corresponding to each sub-transaction operation. A record generation module records the read / write address of each read / write operation in each sub-transaction operation and the sub-transaction identifier of the sub-transaction operation corresponding to the read / write operation. A conflict check module performs a conflict check based on the read / write records of each sub-transaction operation (the read / write records include the read / write addresses of each read / write operation in the sub-transaction operation and the sub-transaction identifier of the sub-transaction operation corresponding to the read / write operation). That is, whether there are two sub-transaction operations, the sub-transaction identifiers of the read / write operations of the two sub-transaction operations are different, the read / write addresses are the same, and the read / write operations of the two sub-transaction operations are a read operation and a write operation / a write operation and a write operation / a write operation and a read operation respectively. If so, it is proved that there is a conflict between the two sub-transaction operations. Further, it is checked whether the read / write conflict between the two sub-transaction operations forms a smart contract invocation operation. That is, the read / write conflict between the read / write operations of the two sub-transaction operations is that another sub-transaction is performed during the process of a sub-transaction of one sub-transaction operation, and after the other sub-transaction is completed, it returns to the sub-transaction to execute the remaining process. Then it is determined that the transaction request needs to be rolled back and an alarm is generated.

[0043] Based on the above system architecture, another schematic structural diagram of a blockchain attack interception system provided by an embodiment of the present invention is shown in Figure 2As shown in the figure, the receiving module is used to receive the transaction requests sent by smart contract users. During the execution of the transaction requests by the blockchain platform, the identification generation and recording module generates sub-transaction identifiers for each sub-transaction operation in an incremental manner according to the execution order of each sub-transaction operation and records the sub-transaction identifiers. The operation monitoring module monitors the read operations / write operations corresponding to each sub-transaction operation. The relationship graph construction module generates read-write records containing read-write types, sub-transaction identifiers, and read-write addresses for each read operation / write operation according to the sub-transaction identifiers of the sub-transaction operations in the identification generation and recording module and the read operations / write operations of the sub-transaction operations in the operation monitoring module, and generates a directed relationship graph according to the read-write records of the read operations / write operations corresponding to each sub-transaction operation (the read-write records of the sub-transaction operations contain the read-write records of each read operation / write operation). The loop detection module detects whether there is a loop in the directed relationship graph. If there is, the transaction request processing is rolled back. If not, the update module stores the transaction processing request result in the blockchain ledger. In addition, the relevant information of the transaction request can be recorded in a log file, and an alarm is initiated for the transaction request with a loop in the directed relationship graph. In this way, the staff can analyze and obtain the attacker in time and take measures such as putting it on the blacklist, which not only intercepts the re-entrancy attack but also improves the security of smart contract calls.

[0044] Based on this, an embodiment of the present invention provides a flow of a blockchain attack interception method, as Figure 3 shown, including:

[0045] Step 301, during the execution of the transaction request by the blockchain platform, for the sub-transaction operations that call the smart contract, generate the sub-transaction identifiers of the sub-transaction operations;

[0046] Here, the transaction request can be a transaction such as deposit, withdrawal, data update, etc., and the smart contracts called by the corresponding sub-transaction operations can be deposit smart contracts, withdrawal smart contracts, or smart contracts for data update, etc. In one example, a sub-transaction operation can be: CALL instruction, CALLCODE instruction, STATICCALL instruction, DELEGATECALL instruction, etc., which are used to initiate external calls to smart contracts outside the currently running smart contract. Therefore, this kind of instruction - sub-transaction operation can also be regarded as creating a new sub-transaction.

[0047] Step 302, for the read operations / write operations on the persistent storage space in the sub-transaction operations, generate the read-write records of the sub-transaction operations; the read-write records include read-write types, sub-transaction identifiers, and read-write addresses; wherein, the sub-transaction identifiers generated each time the smart contract is called are all different;

[0048] Here, the persistent storage space, i.e., the STORAGE persistent storage space. The read and write records of the sub-transaction operations include the read / write types corresponding to each read operation / write operation in the sub-transaction operation, the sub-transaction identifier, and the read / write address. Here, the read / write address may include the smart contract address and the persistent storage space address. In one example, the read and write records may be recorded in a table manner. For example, with the read operation / write operation as the row, and the read / write types, sub-transaction identifiers, and read / write addresses corresponding to the read operation / write operation as the columns respectively. Or the read and write records may be recorded in an array manner. For example, each element in the array represents the read and write record of a read operation / write operation. If it is a read operation, the element corresponding to the read operation in the array may be recorded as: (Read, 1, (1,1)); Read indicates that the read / write type is a read operation, the first "1" from left to right represents the sub-transaction identifier 1, the second 1 represents the smart contract address 1, and the third 1 represents the persistent storage space address 1. Here, for each read operation or write operation, after the operation is completed, the read / write type, sub-transaction identifier, and read / write address of the operation are generated and added to the read and write record table or the write record array in sequence. Here, the specific recording method is not limited.

[0049] Step 303, after the execution of the transaction request is completed by the blockchain platform, conflict checking is performed on the read and write records of each sub-transaction operation; if there is a read and write conflict of different sub-transaction identifiers for the same read / write address that forms a call to the smart contract operation, then roll back the transaction request.

[0050] In the above method, a sub-transaction identifier is generated for the sub-transaction operation instruction of calling the smart contract, and for the read and write operations on the persistent storage space corresponding to each sub-transaction operation, the read and write records of the sub-transaction operation are generated. In this way, if there are multiple sub-transaction identifiers in a transaction, the conflict-dependent relationship between each sub-transaction can be determined through the read and write records corresponding to each sub-transaction identifier. If there is a conflict-dependent relationship, it is determined that there is an external call relationship between this sub-transaction and another sub-transaction. Further, if the dependent relationship forms a complete external call operation of this sub-transaction to another sub-transaction, that is, during the execution of this sub-transaction, after the execution of another sub-transaction, return to this sub-transaction to continue executing the remaining operations of this sub-transaction, then it can be determined that the transaction is a transaction with a re-entrancy attack, and an alarm is generated. Effectively intercept the re-entrancy attack before processing the transaction processing request, that is, before the attack is executed.

[0051] The embodiments of the present invention provide a method for generating a sub - transaction identifier, which generates a sub - transaction identifier for a sub - transaction operation in a smart contract call, including: incrementally generating sub - transaction identifiers for each sub - transaction operation according to the execution order of each sub - transaction operation in the transaction request. That is to say, in the present invention, the sub - transaction identifiers generated for each sub - transaction operation are incremented. For example, if the sub - transaction identifier of the first - executed sub - transaction operation is 0, then the sub - transaction identifier of the second - executed sub - transaction operation is 1, and the sub - transaction identifier of the third - executed sub - transaction operation is 2. In one example, the present invention can set Context Num. When a user initiates a message call to the blockchain platform, Context Num is initialized to 0, and the value of Context Num is used as the Context ID of the current sub - transaction. The Context ID is the unique number of this sub - transaction. In this way, it can be distinguished among one or more sub - transactions in the transaction request. Context Num will be incremented with the creation of sub - transactions during the process of each sub - transaction operation in the entire transaction request, which is used to maintain the unique number of each sub - transaction. In the above example, two new operations can be added at the end of the semantic functions of instructions such as CALL instruction, CALLCODE instruction, STATICCALL instruction, and DELEGATECALL instruction: increment Context Num and use the incremented Context Num as the unique number Context ID of the currently created sub - transaction. In this way, it is realized to generate corresponding sub - transaction identifiers for each sub - transaction operation according to the execution order of each sub - transaction operation.

[0052] The embodiments of the present invention provide a method for intercepting blockchain attacks, which performs conflict checks on the read - write records of each sub - transaction operation, including: generating a directed relationship graph according to the read - write records of each sub - transaction operation, where the directed relationship graph includes each node indicating each sub - transaction identifier and directed edges indicating read - write conflicts between nodes; performing conflict checks based on whether there are loops between nodes in the directed relationship graph. That is to say, using the sub - transaction identifiers of each sub - transaction operation as nodes, through the read - write records of the corresponding read operation / write operation of each sub - transaction operation, it is determined whether there is a read - write conflict between the read operation / write operation of two sub - transaction operations. If there is a read - write conflict, then according to the read operation / write operation between the two sub - transaction operations, the directed edge between the nodes of the two sub - transaction operations is determined. In this way, the nodes included in the finally generated directed relationship graph are the nodes with read - write conflicts, and it can also be clearly known whether there is a loop formed by the directed edges between two nodes. If so, it is determined that the sub - transaction operations - sub - transactions corresponding to the two nodes have an external call relationship - there is a re - entry attack, and the transaction request is rolled back.

[0053] An embodiment of the present invention provides a method for detecting loops between nodes according to a directed relationship graph, and performs conflict checking based on whether there are loops between nodes in the directed relationship graph, including:

[0054] Determine whether there are nodes with an in-degree of 0 in the directed relationship graph;

[0055] Delete each directed edge emitted by the node with an in-degree of 0 from the directed relationship graph, thereby updating the directed relationship graph;

[0056] Add the nodes with an in-degree of 0 to the summary record and return to determine whether there are nodes with an in-degree of 0 in the directed relationship graph until there are no nodes with an in-degree of 0 in the directed relationship graph;

[0057] Based on whether the summary record contains all the nodes of the directed relationship graph, determine whether there are loops between nodes. That is, after constructing the directed relationship graph, according to whether the in-degree of the node is 0, a summary record can be obtained. If the summary record contains all the nodes corresponding to the sub-transaction identifiers, it is determined that there is no loop in the directed relationship graph and the transaction request has no re-entry attack. If the summary record does not contain all the nodes corresponding to the sub-transaction identifiers, it is determined that the directed relationship graph contains a loop, and further determine that the transaction request has a re-entry attack according to the directed relationship graph determined by the summary record.

[0058] An embodiment of the present invention provides a method for generating a directed relationship graph, which generates a directed relationship graph according to the read and write records of each sub-transaction operation, including:

[0059] Generate each node in the directed relationship graph according to each sub-transaction identifier in the read and write records of each sub-transaction operation;

[0060] For the read-write record of the $i$-th sub-transaction operation, obtain the read-write record of the $j$-th sub-transaction operation; where the $j$-th sub-transaction operation is any sub-transaction operation that is after the $i$-th sub-transaction operation in the execution order; if the read-write addresses in the read-write records of the $i$-th sub-transaction operation and the $j$-th sub-transaction operation are the same and there is a conflict in the read-write types, then add a directed edge from the $i$-th node corresponding to the $i$-th sub-transaction operation to the $j$-th node corresponding to the $j$-th sub-transaction operation in the directed relationship graph; the conflict in the read-write types includes read operation and write operation / write operation and write operation / write operation and read operation respectively. That is, according to the read-write records of each sub-transaction operation, determine two sub-transaction operations with read-write conflicts where the read-write addresses are the same, the sub-transaction identifiers are different, and the read-write types are read operation and write operation / write operation and write operation / write operation and read operation respectively; generate a directed edge between the nodes corresponding to the two sub-transaction operations according to the read / write operation order of the two sub-transaction operations to obtain a directed relationship graph, and the directed edge is from the node with the read / write operation in the front to the node with the read / write operation in the back. Here, the embodiments of the present application provide a method flow for generating a directed relationship graph, as Figure 4 shown, including:

[0061] Step 401, initialize $i$ to 0.

[0062] Step 402, take out the triple (action i , context i , item i ) element with subscript $i$ in the array, and initialize $j$ to $i + 1$.

[0063] Here, in the triple (action i , context i , item i ), the read-write type action is "Write or Read", context is the sub-transaction identifier Context ID of the current sub-transaction. item is composed of the persistent storage space address pointed to by the instruction and the smart contract address currently being executed.

[0064] Step 403, take out the triple (action j , context j , item j ) with subscript $j$ in the array, and determine whether there is a read-write conflict between the $i$ element and the $j$ element, that is, whether there is a write operation on the same item for the $i$ element and the $j$ element, or a read operation and a write operation. If there is, execute Step 404. Otherwise, do not add a directed edge to the directed relationship graph and execute Step 405.

[0065] Step 404: Determine that there is a read-write conflict between element i and element j, and add a directed edge context to the directed relationship graph. j →context i 。

[0066] The physical meaning of this directed edge in the directed relationship graph is that the sub-transaction numbered context j must wait for the sub-transaction numbered context i to complete before it can be executed, otherwise it will cause a read-write conflict in the sub-transaction operation. Read-write conflicts are mainly divided into three types: read operation and write operation conflict (in two sub-transaction operations, element j of one sub-transaction operation is a read operation, and element i of one sub-transaction operation is a write operation), write operation and read operation conflict (in two sub-transaction operations, element j of one sub-transaction operation is a write operation, and element i of one sub-transaction operation is a read operation), and write operation and write operation conflict (in two sub-transaction operations, element j of one sub-transaction operation is a write operation, and element i of one sub-transaction operation is a write operation). The judgment criteria are as follows: Read and write conflict: context i is not equal to context j , item i is equal to item j , action j is "Read" while action i is "Write". Write and read conflict: context i is not equal to context j , item i is equal to item j , action j is "Write" while action i is "Read". Write and write conflict: context i is not equal to context j , item i is equal to item j , action i and action j are both "Write".

[0067] Step 405: If the length of the array is greater than or equal to j + 1, then set j = j + 1 and go back to Step 403, otherwise execute Step 406.

[0068] Step 406: If the length of the array is less than j + 1 and greater than i + 1, then set i = i + 1 and go back to Step 402, otherwise execute Step 407.

[0069] Step 407: Complete the construction of the directed relationship graph.

[0070] Based on Figure 4 the directed relationship graph in and the above example, if the transaction request is a withdrawal transaction request, the withdrawal transaction request contains three CALL instructions, the read-write record method is an array method, the address of the withdrawal smart contract is 1, the address of the persistent storage space is 1, and the sub-transaction identifiers of the three CALL instructions are 0, 1, and 2 in the execution order respectively, then the finally obtained array is {(Read 0 ,0 0 ,(1,1) 0 ), (Read 1 ,1 1 ,(1,1) 1 ), (Read 2 ,2 2 ,(1,1) 2 ), (Write 3 ,2 3 ,(1,1) 3 ), (Write 4 ,1 4 ,(1,1) 4 ), (Write 5 ,0 5 ,(1,1) 5 ),}. Among them, the subscripts 0, 1... 5 are used to represent the execution order of the read operations / write operations corresponding to each read-write record.

[0071] Then the steps for generating the directed relationship graph of this example include:

[0072] Step 401: Initialize i to 0.

[0073] Step 402: Take out the triple (Read 0 ,0 0 ,(1,1) 0 ) element with subscript i in the array, initialize j to i + 1, j = i + 1 = 1, and jump to step 403.

[0074] Step 403: Take out (Read 1 ,1 1 ,(1,1), (Read 1 ,1 1 ,(1,1) and (Read 0 ,0 0 ,(1,1) 0 ) from the array, and none of them belong to any read-write type of read-write conflict, write-read conflict, or write-write conflict. Do not add a directed edge to the directed relationship graph, and execute step 405.

[0075] Step 405: If the length of the array, which is 5, is greater than or equal to j + 1 = 2, then set j = j + 1 = 2 and go back to Step 403.

[0076] Step 403: Take out from the array (Read 2 , 2 2 , (1, 1) 2 ), (Read 2 , 2 2 , (1, 1) 2 ) and (Read 0 , 0 0 , (1, 1) 0 ) do not belong to any of the read - write types such as read - write conflict, write - read conflict, or write - write conflict. Do not add a directed edge to the directed relationship graph and execute Step 405.

[0077] Step 405: If the length of the array, which is 5, is greater than or equal to j + 1 = 3, then set j = j + 1 = 3 and go back to Step 403.

[0078] Step 403: Take out from the array (Write 3 , 2 3 , (1, 1) 3 ), (Write 3 , 2 3 , (1, 1) 3 ) and (Read 0 , 0 0 , (1, 1) 0 ) belong to a read - write conflict. Add a directed edge to the directed relationship graph and execute Step 404.

[0079] Step 404: Determine that there is a read - write conflict between element i and element j, and add a directed edge context 3 →context 0 . Obtain the directed relationship graph as shown in Figure 5 .

[0080] Step 405: If the length of the array, which is 5, is greater than or equal to j + 1 = 4, then set j = j + 1 = 4 and go back to Step 403.

[0081] Step 403: Take out from the array (Write 4 , 1 4 , (1, 1) 4 ), (Write 4 , 1 4 , (1, 1) 4 ) and (Read 0 , 0 0 , (1, 1) 0)It belongs to a read-write conflict. Add a directed edge to the directed relation graph and execute step 404.

[0082] Step 404: Determine that there is a read-write conflict between element i and element j, and add a directed edge context to the directed relation graph 4 →context 0 . Obtain the directed relation graph as Figure 6 shown.

[0083] Step 405: If the length of the array 5 is greater than or equal to j + 1 = 5, then let j = j + 1 = 5 and return to step 403.

[0084] Step 403: Take out (Write 5 , 0 5 , (1, 1) 5 ), (Write 5 , 0 5 , (1, 1) 5 ) and (Read 0 , 0 0 , (1, 1) 0 ) from the array, which do not belong to any of the read-write types of read-write conflict, write-read conflict, and write-write conflict. Do not add a directed edge to the directed relation graph and execute step 405.

[0085] Step 405: If the length of the array 5 is less than j + 1 = 6, then let j = j + 1 = 6 and execute step 406.

[0086] Step 406: If the length of the array 5 is less than j + 1 = 6 and greater than i + 1 = 1, then let i = i + 1 = 1 and return to step 402.

[0087] Step 402: Take out the triple (Read 1 , 1 1 , (1, 1) 1 ) element with index i from the array, initialize j as i + 1, j = i + 1 = 2, and jump to step 403.

[0088] Step 403: Take out (Read 2 , 2 2 , (1, 1) 2 ), (Read 2 , 2 2 , (1, 1) 2 ) and (Read 1 , 1 1 , (1, 1) 1 ) from the array, which do not belong to any of the read-write types of read-write conflict, write-read conflict, and write-write conflict. Do not add a directed edge to the directed relation graph and execute step 405.

[0089] Step 405: If the length of the array 5 is greater than or equal to j + 1 = 3, then let j = j + 1 = 3, and go back to step 403.

[0090] Step 403: Take out from the array (Write 3 , 2 3 , (1, 1) 3 ), (Write 3 , 2 3 , (1, 1) 3 ) and (Read 1 , 1 1 , (1, 1) 1 ) belong to write - read conflicts. Add a directed edge to the directed relation graph and execute step 404.

[0091] Step 404: Determine that there is a read - write conflict between element i and element j, and add a directed edge context 3 →context 1 to the directed relation graph. Get the directed relation graph as shown in Figure 7 .

[0092] Step 405: If the length of the array 5 is greater than or equal to j + 1 = 4, then let j = j + 1 = 4, and go back to step 403.

[0093] Step 403: Take out from the array (Write 4 , 1 4 , (1, 1) 4 ), (Write 4 , 1 4 , (1, 1) 4 ) and (Read 1 , 1 1 , (1, 1) 1 ) do not belong to any of the read - write types of read - write conflict, write - read conflict, or write - write conflict. Do not add a directed edge to the directed relation graph and execute step 405.

[0094] Step 405: If the length of the array 5 is greater than or equal to j + 1 = 5, then let j = j + 1 = 5, and go back to step 403.

[0095] Step 403: Take out from the array (Write 5 , 0 5 , (1, 1) 5 ), (Write 5 , 0 5 , (1, 1) 5 ) and (Read 1 , 1 1 , (1, 1) 1)It belongs to a read-write conflict. Add a directed edge to the directed relation graph and execute step 404.

[0096] Step 404: Determine that there is a read-write conflict between element i and element j, and add a directed edge context to the directed relation graph 5 →context 1 . Obtain the directed relation graph as Figure 8 shown.

[0097] Step 405: If the length of the array 5 is less than j + 1 = 6, then set j = j + 1 = 6 and return to step 406.

[0098] Step 406: If the length of the array 5 is less than j + 1 = 6 and greater than i + 1 = 2, then set i = i + 1 = 2 and return to step 402.

[0099] Step 402: Take out the triple (Read 2 , 2 2 , (1, 1) 2 ) element with subscript i in the array, initialize j as i + 1, j = i + 1 = 3, and jump to step 403.

[0100] Step 403: Take out (Write 3 , 2 3 , (1, 1) 3 ), (Write 3 , 2 3 , (1, 1) 3 ) and (Read 2 , 2 2 , (1, 1) 2 ) do not belong to any of the read-write types of read-write conflict, write-read conflict, and write-write conflict. Do not add a directed edge to the directed relation graph and execute step 405.

[0101] Step 405: If the length of the array 5 is less than j + 1 = 4, then set j = j + 1 = 4 and return to step 403.

[0102] Step 403: Take out (Write 4 , 1 4 , (1, 1) 4 ), (Write 4 , 1 4 , (1, 1) 4 ) and (Read 2 , 2 2 , (1, 1) 2 ) belong to any of the read-write types of read-write conflict, write-read conflict, and write-write conflict. Add a directed edge to the directed relation graph and execute step 404.

[0103] Step 404: Determine that there is a read-write conflict between element i and element j, and add a directed edge context to the directed relationship graph 4 →context 2 . Obtain the directed relationship graph, as shown in Figure 9 shown

[0104] Step 405: If the length of the array 5 is less than j + 1 = 5, then let j = j + 1 = 5, and go back to step 403

[0105] Step 403: Take out (Write 5 , 0 5 , (1, 1), (Write 5 , 0 5 , (1, 1) and (Read 2 , 2 2 , (1, 1) 2 ) from the array, which belong to read-write conflicts. Add a directed edge to the directed relationship graph and execute step 404

[0106] Step 404: Determine that there is a read-write conflict between element i and element j, and add a directed edge context to the directed relationship graph 5 →context 2 . Obtain the directed relationship graph, as shown in Figure 10 shown

[0107] Step 405: If the length of the array 5 is less than j + 1 = 6, then let j = j + 1 = 6, and go back to step 406

[0108] Step 406: If the length of the array 5 is less than j + 1 = 6 and greater than i + 1 = 3, then let i = i + 1 = 3, and go back to step 402

[0109] Step 402: Take out the triple (Write 3 , 2 3 , (1, 1) 3 ) element with subscript i from the array, initialize j as i + 1, j = i + 1 = 4, and jump to step 403

[0110] Step 403: Take out (Write 4 , 1 4 , (1, 1) 4 ), (Write 4 , 1 4 , (1, 1) 4 ) and (Write 3 , 2 3 , (1, 1) 3)Belongs to any one of read-write conflicts, write-read conflicts, and write-write conflicts. Add a directed edge to the directed relationship graph and execute step 404.

[0111] Step 404: Determine that there is a read-write conflict between element i and element j. There is already a directed edge from node 1 to node 2. A directed edge context can be added to the directed relationship graph. 4 →context 3 . Obtain the directed relationship graph as Figure 10 shown.

[0112] Step 405: If the length of the array 5 is less than j + 1 = 5, then let j = j + 1 = 5 and return to step 403.

[0113] Step 403: Take out (Write 5 , 0 5 , (1, 1), (Write 5 , 0 5 , (1, 1) and (Write 3 , 2 3 , (1, 1) 3 ) from the array. It belongs to a write-write conflict. Add a directed edge to the directed relationship graph and execute step 404.

[0114] Step 404: Determine that there is a read-write conflict between element i and element j. There is already a directed edge from node 0 to node 2. A directed edge context can be added to the directed relationship graph. 5 →context 3 . Obtain the directed relationship graph as Figure 10 shown.

[0115] Step 405: If the length of the array 5 is less than j + 1 = 6, then let j = j + 1 = 6 and return to step 406.

[0116] Step 406: If the length of the array 5 is less than j + 1 = 6 and greater than i + 1 = 4, then let i = i + 1 = 4 and return to step 402.

[0117] Step 402: Take out the triple (Write 4 , 1 4 , (1, 1) 4 ) with index i from the array. Initialize j as i + 1, j = i + 1 = 5, and jump to step 403.

[0118] Step 403: Take out (Write 5 , 0 5 , (1, 1), (Write 5 , 0 5 , (1, 1) and (Write4 ,1 4 ,(1,1) 4 ) belongs to a write-write conflict. Add a directed edge to the directed relationship graph and execute step 404.

[0119] Step 404, determine that there is a read-write conflict between element i and element j. There is already a directed edge from node 0 to node 1, and a directed edge context can be added to the directed relationship graph. 5 →context 4 . Obtain the directed relationship graph, as Figure 10 shown.

[0120] An embodiment of the present invention also provides a blockchain attack interception method, which further includes: if no read-write conflict formed by different sub-transaction identifiers for the same read-write address is found in the conflict check to form a call to the smart contract operation, update the processing result of the transaction request to the blockchain ledger. That is, if there is no re-entry attack in the transaction request, store the transaction processing result in the blockchain ledger to complete the final transaction processing.

[0121] An embodiment of the present invention also provides a blockchain attack interception method. After a read-write conflict formed by different sub-transaction identifiers for the same read-write address results in a call to the smart contract operation, it further includes: recording the relevant information of the transaction request in a log file and issuing an alarm. That is, for each transaction request, the directed relationship graph of the transaction request, the read-write records of the sub-transaction operations, the source address, the destination address, etc. can be recorded, which can be used for subsequent analysis to determine the attacker.

[0122] Based on the above method, an embodiment of the present invention provides a flow of a blockchain attack interception method, as Figure 11 shown, including:

[0123] Step 1101, receive a transaction request.

[0124] Step 1102, for each sub-transaction operation in the transaction request, generate a sub-transaction identifier for each sub-transaction operation in an increasing manner according to the execution order of the sub-transaction operations.

[0125] Step 1103, generate a read-write record including the read-write type, sub-transaction identifier, and the persistent storage space of the smart contract address and operation called for the read operation / write operation corresponding to the sub-transaction operation.

[0126] Step 1104, according to the read-write records of each sub-transaction operation, that is, according to the read-write records of the read operation / write operation corresponding to each sub-transaction operation, generate a directed relationship graph.

[0127] Step 1105: Determine whether there is a loop in the directed relationship graph. If there is, execute Step 1006; otherwise, execute Step 1008.

[0128] Step 1106: Roll back the transaction request.

[0129] Step 1107: Generate an alarm.

[0130] Step 1108: Update the transaction processing result to the blockchain ledger.

[0131] Step 1109: Generate a log file or update the log file according to the relevant information of the transaction request.

[0132] It should be noted that the above process steps are not unique. For example, Step 1109 can be before or after any step after Step 1101, and update the log file according to the relevant information of the transaction request generated by the current step.

[0133] Based on the same concept, an embodiment of the present invention provides a blockchain attack interception device. Figure 12 For the schematic diagram of a blockchain attack interception device provided by an embodiment of the present invention, as Figure 12 shown, it includes:

[0134] Analysis module 1201 is used to generate a sub - transaction identifier for the sub - transaction operation of calling the smart contract during the execution of the transaction request; for the read / write operation on the persistent storage space in the sub - transaction operation, generate a read / write record of the sub - transaction operation; the read / write record includes a read / write type, a sub - transaction identifier, and a read / write address; among them, each sub - transaction identifier generated by each call to the smart contract is different.

[0135] Processing module 1202 is used to perform a conflict check on the read / write records of each sub - transaction operation after the transaction request is executed; if there is a read / write conflict for the same read / write address with different sub - transaction identifiers, forming an operation of calling the smart contract, roll back the transaction request.

[0136] Optionally, the analysis module 1201 is specifically used to incrementally generate sub - transaction identifiers for each sub - transaction operation according to the execution order of each sub - transaction operation in the transaction request.

[0137] Optionally, the processing module 1202 is specifically used to generate a directed relationship graph according to the read / write records of each sub - transaction operation, where the directed relationship graph includes each node indicating each sub - transaction identifier and a directed edge indicating a read / write conflict between nodes, and perform a conflict check based on whether there is a loop between nodes in the directed relationship graph.

[0138] Optionally, the processing module 1202 is specifically configured to determine whether there is a node with an in-degree of 0 in the directed relationship graph; delete each directed edge sent by the node with an in-degree of 0 from the directed relationship graph, so as to update the directed relationship graph; add the node with an in-degree of 0 to the summary record and return to determine whether there is a node with an in-degree of 0 in the directed relationship graph until there is no node with an in-degree of 0 in the directed relationship graph; determine whether there is a loop between nodes based on whether the summary record contains all nodes of the directed relationship graph.

[0139] Optionally, the processing module 1202 is specifically configured to generate each node in the directed relationship graph according to each sub-transaction identifier in the read-write records of each sub-transaction operation; for the read-write record of the i-th sub-transaction operation, obtain the read-write record of the j-th sub-transaction operation; where the j-th sub-transaction operation is any sub-transaction operation that is located after the i-th sub-transaction operation in the execution order; if the read-write addresses in the read-write record of the i-th sub-transaction operation and the read-write record of the j-th sub-transaction operation are the same and there is a conflict in the read-write types, then add a directed edge from the i-th node corresponding to the i-th sub-transaction operation to the j-th node corresponding to the j-th sub-transaction operation in the directed relationship graph; the conflict in the read-write types includes being a read operation and a write operation / a write operation and a write operation / a write operation and a read operation respectively.

[0140] Optionally, the processing module 1202 is further configured to update the processing result of the transaction request to the blockchain ledger if no read-write conflict formed by different sub-transaction identifiers for the same read-write address is found in the conflict check.

[0141] Optionally, the processing module 1202 is further configured to record the relevant information of the transaction request in a log file and give an alarm.

[0142] Those skilled in the art should understand that the embodiments of the present invention can be provided as a method, a system, or a computer program product. Therefore, the present invention can take the form of a complete hardware embodiment, a complete software embodiment, or an embodiment combining software and hardware aspects. Moreover, the present invention can take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.

[0143] The present invention is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to the invention. It should be understood that each flow and / or block in the flowchart illustrations and / or block diagrams, and combinations of flows and / or blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing apparatus create means for implementing the functions specified in the flow Figure 1 one or more flows and / or blocks Figure 1 or means for implementing the functions specified in a block or blocks.

[0144] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means that implement the functions specified in the flow Figure 1 one or more flows and / or blocks Figure 1 or means for implementing the functions specified in a block or blocks.

[0145] These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions executed on the computer or other programmable apparatus provide steps for implementing the functions specified in the flow Figure 1 one or more flows and / or blocks Figure 1 or means for implementing the functions specified in a block or blocks.

[0146] It will be apparent to those skilled in the art that various modifications and variations can be made to the present invention without departing from the spirit and scope of the invention. Thus, if these modifications and variations of the present invention come within the scope of the claims of the present invention and their equivalent technologies, the present invention is also intended to include these modifications and variations.

Claims

1. A blockchain attack interception method, characterized in that, the method includes: During the process of the blockchain platform executing a transaction request, for a sub-transaction operation that calls a smart contract, generate a sub-transaction identifier for the sub-transaction operation; for a read operation / write operation on the persistent storage space in the sub-transaction operation, generate a read / write record of the sub-transaction operation; the read / write record includes a read / write type, a sub-transaction identifier, and a read / write address; wherein, each sub-transaction identifier generated for each call to the smart contract is different; After the transaction request is executed by the blockchain platform, perform a conflict check on the read / write records of each sub-transaction operation; if there is a read / write conflict for the same read / write address with different sub-transaction identifiers, forming an operation to call the smart contract, determine that the sub-transaction is a transaction with a re-entrancy attack, and roll back the transaction request; Performing a conflict check on the read / write records of each sub-transaction operation includes: Generating a directed relationship graph based on the read / write records of each sub-transaction operation, wherein the directed relationship graph includes each node indicating each sub-transaction identifier and a directed edge indicating a read / write conflict between nodes; performing a conflict check based on whether there is a loop between nodes in the directed relationship graph.

2. The method according to claim 1, characterized in that, Generating a sub-transaction identifier for a sub-transaction operation that calls a smart contract includes: Incrementally generate sub-transaction identifiers for each sub-transaction operation according to the execution order of each sub-transaction operation in the transaction request.

3. The method according to claim 2, characterized in that, Performing a conflict check based on whether there is a loop between nodes in the directed relationship graph includes: Determine whether there is a node with an in-degree of 0 in the directed relationship graph; Delete each directed edge emitted by the node with an in-degree of 0 from the directed relationship graph, thereby updating the directed relationship graph; Add the node with an in-degree of 0 to the summary record and return to determine whether there is a node with an in-degree of 0 in the directed relationship graph until there is no node with an in-degree of 0 in the directed relationship graph; Based on whether the summary record contains all nodes of the directed relationship graph, determine whether there is a loop between nodes.

4. The method according to claim 2, characterized in that, Generating a directed relationship graph based on the read / write records of each sub-transaction operation includes: Generate each node in the directed relationship graph according to each sub-transaction identifier in the read / write records of each sub-transaction operation; For the read / write record of the i-th sub-transaction operation, obtain the read / write record of the j-th sub-transaction operation; wherein, the j-th sub-transaction operation is any sub-transaction operation that is after the i-th sub-transaction operation in the execution order; if the read / write addresses in the read / write records of the i-th sub-transaction operation and the j-th sub-transaction operation are the same and there is a conflict in the read / write type, add a directed edge from the i-th node corresponding to the i-th sub-transaction operation to the j-th node corresponding to the j-th sub-transaction operation in the directed relationship graph; the read / write type conflict includes being a read operation and a write operation / a write operation and a write operation / a write operation and a read operation respectively.

5. The method according to any one of claims 1-4, characterized in that, It further includes: If no read / write conflict of different sub-transaction identifiers for the same read / write address is found in the conflict check to form a call to the smart contract operation, update the processing result of the transaction request to the blockchain ledger.

6. The method according to any one of claims 1-4, characterized in that, after a read / write conflict of different sub-transaction identifiers for the same read / write address is found to form a call to the smart contract operation, it further includes: Record the relevant information of the transaction request in a log file and give an alarm.

7. A blockchain attack interception device, characterized in that, the device includes: An analysis module, used to generate a sub-transaction identifier of the sub-transaction operation during the execution of the transaction request for the sub-transaction operation of calling the smart contract; generate a read / write record of the sub-transaction operation for the read / write operation of the persistent storage space in the sub-transaction operation; the read / write record includes a read / write type, a sub-transaction identifier, and a read / write address; among them, each sub-transaction identifier generated by each call to the smart contract is different; A processing module, used to perform conflict check on the read / write records of each sub-transaction operation after the execution of the transaction request is completed; if a read / write conflict of different sub-transaction identifiers for the same read / write address is found to form a call to the smart contract operation, determine that the sub-transaction is a transaction with a reentry attack, and roll back the transaction request; The processing module is further used to: generate a directed relationship graph according to the read / write records of each sub-transaction operation, where the directed relationship graph includes each node indicating each sub-transaction identifier and a directed edge indicating a read / write conflict between nodes; perform conflict check based on whether there is a loop between nodes in the directed relationship graph.

8. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a program, and when the program runs on a computer, it enables the computer to implement the method according to any one of claims 1 to 6.

9. A computer device, characterized in that, it includes: A memory, used to store a computer program; A processor, used to call the computer program stored in the memory and execute the method according to any one of claims 1 to 6 according to the obtained program.

Citation Information

Patent Citations

  • Transaction data processing method and device and computer equipment

    CN112508573A

  • Intelligent contract conflict detection method based on directed acyclic graph

    CN112837153A