Data processing method and data processing chip

Through the operation process of the SPHINCS+ algorithm, using nodes or sequential chains in the Merkle tree as calculation objects, the problems of large storage space, poor parallel effect and low computing efficiency are solved, and efficient parallel computing and resource utilization are achieved.

CN119557261AActive Publication Date: 2025-03-04OPEN SECURITY RES INC

Patent Information

Application Number
CN202510123041.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-01-26
Publication Date
2025-03-04
Estimated Expiration
2045-01-26

AI Technical Summary

Technical Problem

In the process of implementing the SPHINCS+ algorithm, there are problems such as large storage space, poor parallel effect and low computing efficiency.

Method used

When any computing unit is in an idle state, the nodes or sequential chains in the Merkle tree are used as computing objects, parallel operations of each computing unit are realized, storage space requirements are reduced, and the computing unit is fully utilized to improve parallelism.

Benefits of technology

High parallel computing is realized under a smaller storage space, improving the utilization rate and parallel effect of the computing unit, thereby improving the computing efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119557261A_ABST
    Figure CN119557261A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a data processing method and a data processing chip, and the method comprises the steps: determining a first operation object corresponding to a first operation unit under the condition that the state of the first operation unit is an idle state, the first operation unit is any one of at least two operation units, and the first operation object corresponds to the first operation unit; the first operation object comprises one of a first node in the first Merkel tree and a target sequence chain of a second node in the first Merkel tree; and operating the first operation object by using the first operation unit to obtain an operation result. Thus, when any operation unit is in the idle state, the nodes or the sequence chains in the Merkle tree serve as the operation objects of the operation unit, the storage space can be reduced, high-parallel operation under the small storage space is achieved, all the operation units are fully utilized, and the operation efficiency is improved. And the parallel effect is improved while the utilization rate of the operation unit is improved, so that the operation efficiency is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to but is not limited to the field of information security technology, and in particular to a data processing method and a data processing chip. Background Art

[0002] In the related technology, since the amount of computation of the SPHINCS+ algorithm is very large, hardware parallelism can be used to improve the computing performance. However, at present, basically N leaf nodes in the Merkle tree are first calculated in parallel according to the parallelism N. Then, the storage space needs to store at least all the sequence chains of the N leaf nodes, which makes the storage space large. At the same time, in the Merkle tree, since the number of nodes in the previous layer is less than the number of nodes in the next layer, when calculating the nodes in the previous layer in parallel, the parallelism of the nodes in the previous layer will be lower than the parallelism of the nodes in the next layer, resulting in poor parallel effect, thereby reducing the computing efficiency. Summary of the invention

[0003] The embodiments of the present application provide a data processing method and a data processing chip to solve the problems of large storage space, poor parallel effect, low computing efficiency, etc. in the related art in the process of implementing the SPHINCS+ algorithm.

[0004] The technical solution of the embodiment of the present application is implemented as follows: The present application provides a data processing method, including: In the case where the state of the first operation unit is an idle state, determining a first operation object corresponding to the first operation unit, the first operation unit is any one of the at least two operation units, and the first operation object includes one of the following: a first node in a first Merkle tree, and a target sequence chain of a second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains; The first operation unit is used to operate the first operation object to obtain an operation result.

[0005] The present application embodiment provides a data processing chip, in which a processing unit is deployed, wherein: The processing unit is used to: when the state of the first operation unit is an idle state, determine the first operation object corresponding to the first operation unit, the first operation unit is any one of the at least two operation units, and the first operation object includes one of the following: a first node in a first Merkle tree, a target sequence chain of a second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains; use the first operation unit to operate on the first operation object to obtain an operation result.

[0006] In an embodiment of the present application, when any operation unit is in an idle state, a node or sequence chain in a Merkle tree is used as an operation object of the operation unit. On the one hand, since each operation unit of the present application can simultaneously and parallelly operate multiple sequence chains in a leaf node, the present application only needs to store the operation results of the operation objects corresponding to each operation unit, while in the related art, since each operation unit simultaneously and parallelly operates a sequence chain of multiple leaf nodes, it is necessary to store all sequence chains in multiple leaf nodes. Therefore, the scheme of the present application can reduce the storage space and realize high parallel operation in a smaller storage space. On the other hand, since each operation unit of the present application can simultaneously and parallelly operate sequence chains and nodes, the purpose of horizontal parallel operation of sequence chains and vertical parallel operation of nodes is achieved, all operation units are fully utilized, and the degree of parallelism will not decrease as the node height increases. In the related art, since all operation units are used to simultaneously and parallelly operate sequence chains or nodes, the degree of parallelism will decrease as the node height increases. Therefore, the present application improves the utilization rate of the operation unit while improving the parallel effect, thereby improving the operation efficiency.

[0007] It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the present application. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The drawings herein are incorporated into the specification and constitute a part of the specification. These drawings illustrate embodiments consistent with the present application and are used together with the specification to illustrate the technical solution of the present application.

[0009] Figure 1 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 1 ; Figure 2 A schematic diagram of a Merkle tree provided in an embodiment of the present application; Figure 3 A schematic diagram of a leaf node provided in an embodiment of the present application; Figure 4 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 2 ; Figure 5 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 3 ; Figure 6 A schematic diagram of the structure of a data processing chip provided in an embodiment of the present application; Figure 7 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 4 ; Figure 8 A schematic diagram of a Merkle tree operation process provided in an embodiment of the present application; Fig. 9 A schematic diagram of the structure of a data processing system provided in an embodiment of the present application. DETAILED DESCRIPTION

[0010] In order to make the purpose, technical solutions and advantages of the present application clearer, the present application will be further described in detail below in conjunction with the accompanying drawings. The described embodiments should not be regarded as limiting the present application. All other embodiments obtained by ordinary technicians in the field without making creative work are within the scope of protection of this application. In the following description, reference is made to “some embodiments”, which describe a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.

[0011] In the following description, the terms "first\second\third" involved are merely used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described herein can be implemented in an order other than that illustrated or described herein.

[0012] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those commonly understood by those skilled in the art to which this application belongs. The terms used herein are only for the purpose of describing the embodiments of this application and are not intended to limit this application.

[0013] With the application and development of quantum computers, post-quantum signature algorithms have received widespread attention. Post-quantum signature algorithms are a type of digital signature algorithm designed to resist attacks from quantum computers. They are implemented by using hash functions to improve the efficiency and security of signatures. Post-quantum signature algorithms can provide stronger security guarantees in the face of threats from quantum computing technology. Post-quantum signature algorithms may include but are not limited to LMS (Leighton-Micali Signature), Falcon, SPHINCS+, etc.

[0014] The SPHINCS+ algorithm has high security and quantum resistance, and was selected by NIST as one of the standard algorithms for its post-quantum cryptography standardization program. The SPHINCS+ algorithm is a post-quantum algorithm based on hash operations, which includes multiple XMSS (eXtended Merkle Signature Scheme) trees. The XMSS tree is an extended Merkle tree, and each leaf node of the Merkle tree includes a one-time signature (WOTS, Winternitz One-Time Signature) operation. Therefore, the SPHINCS+ algorithm has a large amount of calculations.

[0015] In related technologies, since the amount of computation of the SPHINCS+ algorithm is large, hardware parallelization can be used to improve computing performance. Currently, common parallel solutions include: Solution 1: First, according to the parallelism N, a sequential chain (Chain) of N leaf nodes is calculated simultaneously until all leaf nodes are calculated, and then the parent nodes of the leaf nodes are calculated in parallel until the calculation of the entire Merkle tree is completed.

[0016] Solution 2: First, according to the parallelism N, a sequential chain (Chain) of N leaf nodes is calculated simultaneously. After the calculation of N leaf nodes is completed, the N leaf nodes are used as subtrees, and the root calculation of the subtree is completed in parallel (that is, the parent node is calculated vertically until it cannot go up), and then the remaining leaf nodes are calculated, and the cycle is repeated until the calculation of the entire Merkle tree is completed; Solution 3: Calculate N chains simultaneously. After completing the Chain calculation of all leaf nodes, calculate other nodes of the entire Merkle tree in parallel horizontally or vertically.

[0017] From the above, it can be seen that schemes 1 to 3 all need to store the calculation results of all Chains of at least N leaf nodes, which makes the storage space large. At the same time, in the Merkle tree, since the number of nodes in the previous layer is less than the number of nodes in the next layer, when calculating the nodes in the previous layer in parallel, the parallelism of the nodes in the previous layer will be lower than the parallelism of the nodes in the next layer, resulting in poor parallel effect and thus reducing the computing efficiency.

[0018] The embodiment of the present application provides a data processing method. When any operation unit is in an idle state, a node or sequence chain in a Merkle tree is used as the operation object of the operation unit. On the one hand, since each operation unit of the present application can simultaneously and parallelly operate multiple sequence chains in a leaf node, the present application only needs to store the operation results of the operation objects corresponding to each operation unit, while in the related art, since each operation unit simultaneously and parallelly operates a sequence chain of multiple leaf nodes, it is necessary to store all sequence chains in multiple leaf nodes. Therefore, the scheme of the present application can reduce the storage space and realize high parallel operation in a smaller storage space. On the other hand, since each operation unit of the present application can simultaneously and parallelly operate sequence chains and nodes, the purpose of horizontal parallel operation of sequence chains and vertical parallel operation of nodes is achieved, all operation units are fully utilized, and the degree of parallelism will not decrease as the height of the node increases. In the related art, since all operation units are used to simultaneously and parallelly operate sequence chains or nodes, the degree of parallelism will decrease as the height of the node increases. Therefore, the present application improves the utilization rate of the operation unit while improving the parallel effect, thereby improving the operation efficiency.

[0019] The method provided in the embodiment of the present application can be executed by a data processing chip. Below, the technical solution in the embodiment of the present application will be clearly and completely described in conjunction with the drawings in the embodiment of the present application.

[0020] Figure 1 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 1 ,like Figure 1 As shown, the method includes step S11 and step S12, wherein: Step S11, when the state of the first operation unit is an idle state, determine the first operation object corresponding to the first operation unit, the first operation unit is any one operation unit of at least two operation units, and the first operation object includes one of the following: the first node in the first Merkle tree, the target sequence chain of the second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains.

[0021] Here, the operation unit can be any suitable unit capable of performing operations, and the operation unit is mainly used for operations such as key generation and signature. For example, hash core, digital circuit, analog circuit, etc. The operation unit is mainly used for hash operations of Chain, node, etc. The number of the operation units can be any suitable number, for example, 2, 4, 8, etc. During implementation, those skilled in the art can independently set the number of the operation units according to actual needs, and the embodiments of the present application are not limited. In some embodiments, each operation unit can be integrated into a data processing chip, or it can be connected to the data processing chip by means of a bus, hard wire, interface, etc. In some embodiments, the number of the operation units is not less than the degree of parallelism. For example, the number of the operation units is the same as the degree of parallelism. For another example, the number of the operation units is greater than the degree of parallelism.

[0022] The state of the operation unit may include, but is not limited to, an idle state, a working state, and the like. The idle state indicates that the operation unit is not occupied and can be allocated for operation. The working state indicates that the operation unit is currently performing operation. In some embodiments, the state of the operation unit can be determined according to the working identifier of the operation unit, and different values ​​of the working identifier are used to indicate the state of the operation unit. For example, when the working identifier is a first value, it indicates that the operation unit is in an idle state; when the working identifier is a second value, it indicates that the operation unit is in a working state. During implementation, the value of the working identifier can be represented in any suitable manner. For example, the first value is 0 and the second value is 1. For another example, the first value is "TURE" and the second value is "FALSE".

[0023] Merkle tree (including the first Merkle tree and other Merkle trees in the following text) is a tree data structure, which is usually used to verify the integrity and consistency of large-scale data sets. Merkle tree is a hash binary tree with a height of h (not less than 1). In computer science, binary tree is an important data structure, which consists of multiple nodes (Node), each node has at most two child nodes, called left child node and right child node. Child node refers to the node connected below a node. Parent node refers to the node connected above a node.

[0024] The Merkle tree includes at least two leaf nodes and at least one non-leaf node. A leaf node refers to the bottom node of a binary tree and has no child nodes, and the height of a leaf node is 0. The height of a node refers to the number of the longest simple path edges from the node to the leaf node. The at least one non-leaf node includes a root node, an intermediate node, etc. The root node is the top node of a binary tree and has no parent node, and the height of the root node is the height of the tree. An intermediate node refers to the remaining nodes except the root node. The height of the intermediate node is greater than 0 and less than the height of the tree.

[0025] Figure 2 A schematic diagram of a Merkle tree provided in an embodiment of the present application, such as Figure 2 As shown, the height of the Merkle tree is 3, so the Merkle tree includes: There are 8 leaf nodes with a height of 0, namely: node (0,0), node (0,1), node (0,2), node (0,3), node (0,4), node (0,5), node (0,6), node (0,7). Each leaf node includes three sequential chains. The four intermediate nodes with a height of 1 are: node (1,0), node (1,1), node (1,2), and node (1,3); Two intermediate nodes with a height of 2, namely: node (2, 0) and node (2, 1); 1 root node, namely: node (3, 0).

[0026] The operation object (including the first operation object and other operation objects) can be any suitable object that needs to be operated in the Merkle tree. For example, a node, a Chain, etc. The first node can be any non-leaf node in the first Merkle tree. The second node can be any leaf node in the first Merkle tree. In implementation, the number of Chains of a node can be any suitable number, for example, 3, 5, etc.

[0027] The first operation object may be determined in any appropriate manner.

[0028] In some embodiments, the first operation object can be determined based on the first object set. The first object set can be empty or include at least one second operation object that has completed the operation. In some embodiments, if the first object set meets the first preset condition, the first node is used as the first operation object; if the first object set does not meet the first preset condition, the target sequence chain of the second node is used as the first operation object. The first preset condition can be any suitable condition that represents the ability to operate vertically upward. For example, the first preset condition represents that the first object set includes the first node and the brother node of the first node.

[0029] In some embodiments, when the operation of a certain operation object is completed, the first object set may be empty. In some embodiments, after the operation of a certain operation object is completed, the first object set may be updated based on the operation object. The updating method may include but is not limited to adding, deleting, etc. For example, after the operation is completed to obtain a certain parent node, the two child nodes of the parent node may be deleted from the first object set, and the parent node may be added to the first object set. For another example, when a Chain of a certain leaf node is completed, the Chain is added to the first object set. For another example, after the operation of a leaf node is completed, all Chains of the leaf node may be deleted from the first object set.

[0030] In some embodiments, the first operation object may be determined based on the operation objects corresponding to all other operation units. For example, the first operation object is determined based on the operation object corresponding to the third operation unit, and the third operation unit may be the operation unit that most recently determined the operation object. For example, in the case where the operation object corresponding to the third operation unit is a Chain of a leaf node, if the Chain is not the last Chain of the leaf node, then the next Chain of the Chain may be used as the first operation object; if the Chain is the last Chain of the leaf node, then the first Chain of the next leaf node may be used as the first operation object.

[0031] In some implementations, the first operation object may be determined based on the first object set and the operation objects corresponding to all other operation units. For example, if the first object set is empty and the operation object corresponding to the third operation unit is the first Chain of a leaf node, then the second Chain of the leaf node may be used as the first operation object.

[0032] In some implementations, operations on each leaf node in the Merkle tree may be performed from left to right. Figure 2 In the Merkle tree shown, when the number of operation units is 3, then: first, the three chains of node (0, 0) can be used as the first operation objects corresponding to the three operation units respectively; after the operation of node (0, 0) is completed, since it is not possible to operate upward, at this time, the three chains of node (0, 1) can be used as the first operation objects corresponding to the three operation units respectively; after the operation of node (0, 1) is completed, since it is possible to operate upward, at this time, node (0, 1) can be used as the first operation object corresponding to one operation unit, and the two chains of node (0, 2) can be used as the first operation objects corresponding to the other two operation units... and so on and so forth until the root node is reached to complete the operation of the entire Merkle tree.

[0033] In some implementations, the first operation object is determined based on the chain indicator and the node indicator. The chain indicator is used to identify the current latest operation Chain, and the node indicator is used to identify the node that has completed the operation. In implementation, when it is determined that the operation object corresponding to a certain operation unit is a Chain, the chain indicator is used to identify the Chain; when a certain node operation is completed, the node indicator is used to represent the node. In this way, the first operation object is determined based on these two indicators, which shortens the time for determining the first operation object and improves the operation efficiency.

[0034] For example, when the node indicator is an even number, the node pointed to by the node indicator is taken as the first node; when the node indicator is an odd number, the first operation object is determined according to the chain indicator. For example, the next chain of the chain currently identified by the chain indicator is taken as the first operation object. During implementation, the sequential chains of each leaf node are arranged from left to right.

[0035] In some implementations, the first operation object may also be empty. For example, when vertical upward operation is not possible and all Chain operations are completed, the first operation object may be empty, and when vertical upward operation is possible, the first node is re-determined and used as the first operation object corresponding to the first operation unit.

[0036] Step S12: Utilize the first operation unit to operate on the first operation object to obtain an operation result.

[0037] Here, the operation result may include but is not limited to the parent node of the first node, the second node, the chain tail corresponding to the second node, etc. In some embodiments, the chain tail corresponding to the second node is determined based on at least one sequence chain of completed operations of the second node.

[0038] In some implementations, if the first operation object is the first node, then the operation result is the parent node of the first node. Figure 2 In the Merkle tree shown, if the first operation object corresponding to a certain operation unit is the node (0, 1), then the operation result of the operation unit is the parent node (1, 0) of the node (0, 1).

[0039] In some implementations, if the first operation object is the target sequence chain of the second node, then the operation result may be the second node or the tail of the chain corresponding to the second node. Figure 2In the Merkle tree shown, if the first operation object corresponding to a certain operation unit is the first Chain of node (0, 1), then the operation result of the operation unit is the tail of the first Chain of node (0, 1), and the tail of the first Chain of node (0, 1) can be used as the tail of the chain corresponding to node (0, 1); if the first operation object corresponding to a certain operation unit is the last Chain of node (0, 2), then the operation result of the operation unit can be node (0, 2).

[0040] In some embodiments, after calculating a sequence chain of the second node to obtain its chain tail, the chain tail corresponding to the second node can be updated based on the chain tail of the sequence chain. For example, if the second node includes 4 chains, after calculating the second chain to obtain its chain tail, the chain tail corresponding to the second node can be updated according to the chain tail of the second chain, for example, the chain tail corresponding to the second node and the chain tail of the second chain are hashed to obtain the chain tail corresponding to the updated second node.

[0041] In some embodiments, when the first operation object is not empty, the first operation unit is used to operate on the first operation object. At this time, the state of the first operation unit needs to be switched from an idle state to a working state; when the first operation object is empty, no operation is required. At this time, the state of the first operation unit does not need to be switched, but remains in an idle state.

[0042] In an embodiment of the present application, when any operation unit is in an idle state, a node or sequence chain in a Merkle tree is used as an operation object of the operation unit. On the one hand, since each operation unit of the present application can simultaneously and parallelly operate multiple sequence chains in a leaf node, the present application only needs to store the operation results of the operation objects corresponding to each operation unit, while in the related art, since each operation unit simultaneously and parallelly operates a sequence chain of multiple leaf nodes, it is necessary to store all sequence chains in multiple leaf nodes. Therefore, the scheme of the present application can reduce the storage space and realize high parallel operation in a smaller storage space. On the other hand, since each operation unit of the present application can simultaneously and parallelly operate sequence chains and nodes, the purpose of horizontal parallel operation of sequence chains and vertical parallel operation of nodes is achieved, all operation units are fully utilized, and the degree of parallelism will not decrease as the node height increases. In the related art, since all operation units are used to simultaneously and parallelly operate sequence chains or nodes, the degree of parallelism will decrease as the node height increases. Therefore, the present application improves the utilization rate of the operation unit while improving the parallel effect, thereby improving the operation efficiency.

[0043] In some implementations, the step S11 of “determining, based on the first object set, the first operation object corresponding to the first operation unit” includes steps S111 and S112, wherein: Step S111: When the first object set meets a first preset condition, use the first node as a first operation object corresponding to the first operation unit.

[0044] Here, the first preset condition may be any suitable condition that indicates that vertical upward operation can be performed. In some embodiments, the first preset condition indicates that the first object set includes the first node and the first node's brother nodes. For example, Figure 2 In the Merkle tree shown, if the first object set includes node (0, 1) (corresponding to the first node) and node (0, 0) (corresponding to the sibling node of the first node), then node (0, 1) is used as the first operation object.

[0045] Step S112: When the first object set does not satisfy the first preset condition, determine the target sequence chain of the second node based on the operation objects corresponding to all other operation units except the first operation unit in at least two operation units, and use the target sequence chain of the second node as the first operation object corresponding to the first operation unit.

[0046] Here, since the first preset condition of the vertical upward operation is not met, then the target sequence chain can be determined according to the operation objects corresponding to other operation units. For example, the target sequence chain is determined according to the operation object corresponding to the third operation unit, and the third operation unit can be the operation unit that most recently determined the operation object. For another example, at least one second operation unit is determined from each operation unit, and the target sequence chain is determined according to the operation objects corresponding to each second operation unit, and the operation object corresponding to the second operation unit is a Chain. For example, the operation objects corresponding to each second operation unit are sorted, and the next Chain of the operation object corresponding to the target second operation unit is used as the first operation object, and the target second operation unit is the operation unit whose operation object is most recently determined to be a Chain.

[0047] In the implementation manner of the present application, the operation object of the first operation unit is accurately determined according to whether the first object set satisfies the first preset condition, thereby improving the accuracy of the operation object and thus improving the operation efficiency.

[0048] In some implementations, the step S112 of “determining the target sequence chain of the second node based on the operation objects corresponding to all other operation units except the first operation unit in the at least two operation units” includes step S1121 and step S1122, wherein: Step S1121: Determine a second operation unit from all other operation units based on the operation objects corresponding to all other operation units.

[0049] Here, the operation object corresponding to the second operation unit is a Chain. The number of the second operation units can be 0 or at least one. For example, during the first parallel operation, when determining the operation object corresponding to the first operation unit, the number of the second operation units is 0. For another example, after all Chain operations are completed, the number of the second operation units is 0. During implementation, if the operation object corresponding to a certain operation unit is a Chain, the operation unit is regarded as a second operation unit.

[0050] Step S1122: Determine the target sequence chain of the second node based on the operation object corresponding to the second operation unit.

[0051] Here, the target sequence chain can be any sequence chain in the second node. In implementation, if the number of second operation units is 0, then the first sequence chain of the first leaf node can be used as the target sequence chain of the second node; if the number of second operation units is at least one, then the next Chain of the operation object corresponding to the target second operation unit can be used as the target sequence chain of the second node, and the target second operation unit is the operation unit whose operation object is most recently determined to be Chain. In some embodiments, the operation object corresponding to the target second operation unit and the target sequence chain of the second node can be the same node or different nodes. For example, if the operation object corresponding to the target second operation unit is the last Chain of the target node, then the second node is different from the target node; if the operation object corresponding to the target second operation unit is a non-last Chain of the target node, then the second node is the same as the target node.

[0052] In the implementation manner of the present application, the target sequence chain is accurately determined according to the operation objects corresponding to all other operation units, thereby improving the accuracy of the target sequence chain, thereby improving the operation efficiency while ensuring the effectiveness of the operation.

[0053] In some embodiments, the data processing method further includes steps S131 to S133, wherein: Step S131: When the operation result is a non-root node, switch the state of the first operation unit to an idle state.

[0054] Here, after the first operation unit completes the operation, it is necessary to promptly recycle the first operation unit, that is, switch the state of the first operation unit from the working state to the idle state, so as to facilitate the next operation.

[0055] Step S132: Update the first object set based on the calculation result.

[0056] Here, the updating method may include but is not limited to adding, deleting, etc. For example, when the first operation object is the first node, the parent node of the first node may be added to the first object set, and the first node and the sibling nodes of the first node may be deleted from the first object set. For another example, when the first operation object is the target Chain, the target Chain may be added to the first object set.

[0057] Step S133: Determine the first operation object corresponding to the first operation unit based on the updated first object set.

[0058] Here, the updated first object set is used as a new first object set, and the first operation object corresponding to the first operation unit is re-determined according to the new first object set. In implementation, the determination process of the new first operation object can refer to the specific implementation of the aforementioned step S11.

[0059] In the implementation manner of the present application, firstly, the state of the first operation unit is switched to the idle state in time, so that the first operation unit can then process the next operation object, thereby improving the operation efficiency; secondly, the first object set is updated in time according to the operation result of the first operation unit to improve the accuracy of the operation unit in determining the corresponding operation object; finally, the operation object corresponding to each operation unit is determined in a cyclic manner to ensure the accuracy and completeness of the entire Merkle tree operation.

[0060] In some implementations, when the operation result is a second node and the second node is a signature node, the data processing method further includes step S141 and step S142, wherein: Step S141: Obtain hash values ​​of signature operation nodes corresponding to at least two sequential chains of the second node from the chain storage block.

[0061] Here, the signature node can be any leaf node. Each leaf node of the Merkle tree is a one-time key, which is used to generate a public key for the child node of the outer structure. In implementation, the signature node can be a leaf node in an unused one-time key.

[0062] The method for determining the signature node may be any suitable method. In some embodiments, a certain leaf node may be used as the signature node according to the customized configuration information. In some embodiments, a certain leaf node may be randomly selected from the leaf nodes of multiple unused one-time keys as the signature node. In some embodiments, the adjacent leaf node of the previous signature node may be used as the signature node according to the order of use of each leaf node. Among them, the order of use may include but is not limited to from left to right, from right to left, etc. For example, the Merkle tree includes 8 leaf nodes, and the third leaf node was used as the signature node last time, so this time the fourth leaf node can be used as the signature node. In some embodiments, the signature node may be determined according to the message to be processed. Among them, the message to be processed may be a message sent by the client. During implementation, those skilled in the art may independently select the method for determining the signature node according to actual needs, and the embodiments of the present application are not limited thereto.

[0063] The chain storage block includes at least two storage locations. In some embodiments, the number of storage locations of the chain storage block is adapted to the number of at least two sequential chains of the leaf node, and each sequential chain may correspond to one storage location. For example, if the leaf node includes three Chains, then the chain storage block may include 3 storage locations, one storage location for each Chain, and each storage location is used to store the hash value of the signature operation node in the corresponding Chain.

[0064] Each Chain includes a plurality of computing nodes connected in sequence. In implementation, the number of computing nodes can be any suitable number, for example, 8, 16, 24, etc. The number of computing nodes contained in each Chain is the same. The hash value of a computing node may include, but is not limited to, the hash value of the computing node, the hash value obtained by performing a hash operation on the hash value of the previous computing node, and the like. For example, the hash value of the first computing node is the hash value obtained by performing a hash operation on the first computing node, and the hash values ​​of other computing nodes are the hash values ​​obtained by performing a hash operation on the hash value of the previous computing node. Among them, the first computing node can be determined by a random number generated according to a private key. For example, the random number generated by the private key is used as the first computing node. For another example, the random number generated by the private key is weighted and used as the first computing node.

[0065] The signature operation node is an operation node in the Chain. Different Chains have different locations of signature operation nodes.

[0066] Figure 3 A schematic diagram of a leaf node provided in an embodiment of the present application, such as Figure 3As shown, the leaf node includes 16 chains, namely: Chain0~Chain15, each Chain includes 16 operation nodes, then: the signature operation node corresponding to Chain0 can be the first operation node (0,0), the signature operation node corresponding to Chain1 can be the second operation node (1,1)... The signature operation node corresponding to Chain15 can be the last operation node (15,15). In some embodiments, the starting points of the 16 chains Chain0~Chain15 can be 16 random numbers generated based on the private key, and each Chain performs 16 hash operations to obtain the corresponding chain tail (i.e.: the hash value of the last operation node).

[0067] In some implementations, during the Chain operation, after the hash value of the signature operation node is determined, the hash value of the signature operation node can be directly output, or the hash value of the signature operation node can be stored in the chain storage block.

[0068] Step S142: Output the hash value of the signature operation node corresponding to at least two sequence chains of the second node as the signature.

[0069] Here, the hash value of each signature operation node can be output in sequence, or the hash values ​​of each signature operation node can be concatenated and output.

[0070] In the implementation manner of the present application, during the signing process, the hash value of the signature operation node in each sequential chain of the signature node is output in a timely manner to ensure the accuracy and completeness of the signature, thereby improving the signature efficiency.

[0071] In some implementations, the data processing method further includes step S151 and step S152, wherein: Step S151, receiving a signature sent by a sender; wherein the signature includes hash values ​​of signature operation nodes corresponding to at least two sequential chains of the third node in the second Merkle tree.

[0072] Here, the operation unit can also verify the signature sent by the sender. The signature can be generated by the sender, and the generation process of the signature is similar to the generation process of the aforementioned signature. The signature of the sender includes at least the hash value of each signature operation node.

[0073] Step S152: Determine the signature verification result corresponding to the signature based on the hash value of the signature operation node corresponding to at least two sequence chains of the third node.

[0074] Here, the signature verification result may include but is not limited to the first signature verification result, the second signature verification result, etc. The first signature verification result indicates that the verification is successful, and the second signature verification result indicates that the verification fails. Based on the signature, not only the identity of the sender can be verified, but also the integrity of the message can be determined.

[0075] In some implementations, the hash value of each signature operation node can be used as the starting point of the corresponding Chain, and each Chain performs M (not less than 0) hash operations to obtain the end of each Chain, and the verification result is determined based on the end of each Chain. The number of hash operations performed on each Chain is different. During implementation, the number of hash operations can be determined based on the starting point of the Chain and the number of operation nodes of the Chain. For example, Figure 3 In the leaf nodes shown, the number of Chain operation nodes is 16, so each Chain needs to perform 16-X hash operations, where X refers to the location of the starting point of the Chain, that is: Since the signature operation node corresponding to Chain0 is the first operation node, Chain0 needs to perform 16 hash operations; Since the signature operation node corresponding to Chain1 is the second operation node, Chain1 needs to perform 15 hash operations; … Since the signature operation node corresponding to Chain14 is the 15th operation node, Chain14 needs to perform one hash operation; Since the signature operation node corresponding to Chain15 is the last operation node, Chain15 needs to perform 0 hash operations, that is, the hash value of the signature operation node corresponding to Chain15 is used as the end of the chain.

[0076] In the implementation manner of the present application, during the signature verification process, the hash value of each signature operation node is verified to obtain the corresponding signature verification result to ensure the accuracy and completeness of the signature verification, thereby improving the signature verification efficiency.

[0077] In some implementations, step S152 includes steps S1521 to S1523, wherein: Step S1521: for each of the at least two sequence chains of the third node, determine the tail of the sequence chain based on the hash value of the signature operation node corresponding to the sequence chain.

[0078] Here, the hash value of the signature operation node is hashed M times to obtain the tail of the Chain, where M is an integer not less than 0. For example, for the last Chain, since the signature operation node corresponding to the Chain is the last operation node, the hash value of the signature operation node can be used as the tail of the Chain; for a non-last Chain, the hash value of the signature operation node can be hashed multiple times to obtain the tail of the Chain.

[0079] Step S1522: Determine the second public key based on the tail of each sequence chain of the third node.

[0080] Here, the second public key may include but is not limited to the first hash value, the weighted value of the first hash value, etc. The first hash value refers to the hash value obtained by performing a hash operation on the tail of each Chain. For example, the first hash value is used as the second public key.

[0081] Step S1523: Determine the signature verification result corresponding to the signature based on the second public key and the third public key sent by the sender.

[0082] Here, the second public key and the third public key are compared to obtain the signature verification result. In implementation, if the second public key and the third public key are the same, the first signature verification result is used as the signature verification result; otherwise, the second signature verification result is used as the signature verification result.

[0083] In the implementation manner of the present application, during the signature verification process, the public key obtained at the end of each sequence chain is compared with the public key sent by the sender to obtain the signature verification result, thereby improving the accuracy of the signature verification result and thus improving the signature verification efficiency.

[0084] Figure 4 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 2 ,like Figure 4 As shown, the method includes step S41 and step S43, wherein: Step S41, when the state of the first operation unit is an idle state, determine the first operation object corresponding to the first operation unit, the first operation unit is any one operation unit of at least two operation units, and the first operation object includes one of the following: the first node in the first Merkle tree, the target sequence chain of the second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains.

[0085] Here, the above step S41 corresponds to the above step S11. When implementing, please refer to the specific implementation of the above step S11.

[0086] Step S42, when the first operation object is the first node, obtain the brother node of the first node from the first storage position of the node storage block; wherein the node storage block includes multiple storage positions, the number of storage positions of the node storage block is adapted to the height of the first Merkle tree, all nodes of the same height in the first Merkle tree correspond to one storage position, and the first storage position is a storage position adapted to the height of the first node.

[0087] Here, the node storage block can be a section of storage space in a storage unit. The storage unit can be any suitable unit that can realize the storage function. For example, a random access memory. In some embodiments, different Merkle trees can correspond to different node storage blocks or reuse the same node storage block. During implementation, the node storage block can be reused to further reduce the storage space requirement; the node storage block can also be not reused to improve the independence of the values ​​of each node, thereby reducing the possibility of data anomalies.

[0088] In some embodiments, the number of storage locations included in the node storage block is adapted to the height of the first Merkle tree. For example, if the height of the first Merkle tree is 3, then the number of storage locations may be 3, that is, 8 leaf nodes with a height of 0 share a storage location P0, 4 intermediate nodes with a height of 1 share a storage location P1, and 2 intermediate nodes with a height of 2 share a storage location P2.

[0089] In some embodiments, when computing any node of the Merkle tree, once its parent node is computed, its child nodes are no longer needed. Then, the storage location occupied by the child node can store the values ​​of other child nodes of the same height, and the same node height only needs to occupy one storage location in the node storage block.

[0090] For example, in Figure 2 In the Merkle tree shown, for any node (i, j), when j is an even number, the node (i, j) is stored in the storage location p = i. Once its right node (i, j+1) is generated, their parent node (i+1, j / 2) can be hashed out by the node (i, j) and its right node (i, j+1). At this time, the storage location p = i can be used to store other nodes of the same height. Among them, i and j are both integers not less than 0, i is the height of the node, and j is the position index of the node. The position index of a node refers to the position of the node in the binary tree. Usually, the position index of the leftmost node is 0, and the position index increases from left to right.

[0091] Step S43: Use the first computing unit to compute the first node and the sibling nodes of the first node to obtain the parent node of the first node.

[0092] Here, a hash operation is performed between the first node and the sibling node of the first node to obtain a second hash value, and the parent node of the first node is determined according to the second hash value. For example, the second hash value is used as the parent node of the first node. For another example, the weighted value of the second hash value is used as the parent node of the first node.

[0093] In an embodiment of the present application, by setting the number of storage locations of the node storage block to the tree height, the number of storage locations is greatly reduced compared to the number of storage locations being the total number of leaf nodes, and the size of the storage space is reduced, thereby improving the utilization of the storage space while reducing resource consumption.

[0094] In some implementations, when the parent node of the first node is a non-root node, the data processing method further includes step S44, wherein: Step S44: When the position index of the parent node of the first node meets the second preset condition, the parent node of the first node is stored in the second storage position of the node storage block; wherein the second storage position is a storage position highly adapted to the parent node of the first node.

[0095] Here, the second preset condition may be any suitable condition. For example, an even number, divisible by 2, etc. The second storage location may be used to store at least one node. For example, Figure 2 In the Merkle tree shown, if the second storage position is P1 and the second preset condition is an odd number, P1 is used to store node (1, 0) and node (1, 2) respectively.

[0096] In some implementations, when the position index of the parent node of the first node does not satisfy the second preset condition, the representation can continue to be calculated vertically upward. At this time, the parent node of the first node can be used as the new first node, and step S43 is continued until the vertical upward calculation is no longer possible.

[0097] In the implementation manner of the present application, whether to store the parent node of the first node is determined according to the position index of the parent node of the first node and the second preset condition, thereby improving the accuracy of storing the parent node of the first node.

[0098] Figure 5 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 3 ,like Figure 5 As shown, the method includes step S51 and step S53, wherein: Step S51, when the state of the first operation unit is an idle state, determine the first operation object corresponding to the first operation unit, the first operation unit is any one operation unit of at least two operation units, and the first operation object includes one of the following: the first node in the first Merkle tree, the target sequence chain of the second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains.

[0099] Here, the above step S51 corresponds to the above step S11. When implementing, please refer to the specific implementation of the above step S11.

[0100] Step S52: When the first operation object is the target sequence chain of the second node, use the first operation unit to operate on the target sequence chain of the second node to obtain the tail of the target sequence chain of the second node.

[0101] Here, the target Chain includes multiple computing nodes connected in sequence. In implementation, the first computing unit can be used to perform multiple hash operations on multiple computing nodes of the target Chain to obtain the tail of the target Chain.

[0102] Step S53: Determine the operation result based on the tail of the target sequence chain of the second node.

[0103] Here, the operation result may include but is not limited to the second node, the tail of the chain corresponding to the second node, etc. The tail of the chain corresponding to the second node is determined based on at least one sequence chain of the completed operation of the second node. In implementation, the tail of the chain corresponding to the second node may be the tail of a chain or the hash value of the tails of multiple chains.

[0104] In the embodiment of the present application, the calculation result is determined according to the tail of the target sequence chain of the second node, which improves the accuracy of the calculation result and thus improves the calculation efficiency.

[0105] In some implementations, the target sequence chain of the second node includes a plurality of computing nodes connected in sequence, and step S52 includes steps S521 to S523, wherein: Step S521: Use the first operation unit to perform a hash operation on a first operation node among the multiple operation nodes to obtain a hash value of the first operation node.

[0106] Here, the first operation node is determined based on a random number generated by a private key. For example, the random number is used as the hash value of the first operation node. For another example, the weighted value of the random number is used as the hash value of the first operation node. In some embodiments, any suitable hash function can be used to perform the hash operation.

[0107] Step S522: for each operation node except the first operation node among the multiple operation nodes, using the first operation unit, based on the hash value of the previous operation node, determine the hash value of the operation node.

[0108] Here, for the non-first operation node, the determination method of the hash value of the remaining operation nodes may include but is not limited to the third hash value, the weighted third hash value, etc. The third hash value refers to the hash value obtained by performing a hash operation on the hash value of the previous operation node.

[0109] Step S523: Use the hash value of the last computing node among the multiple computing nodes as the tail of the target sequence chain of the second node.

[0110] Here, the hash value of the last operation node is used as the tail of the target Chain. Figure 3 In the leaf nodes shown, for Chain0, 16 hash operations can be performed on the operation node (0, 0) to obtain the hash value of the node (0, 15), and the hash value of the node (0, 15) is used as the tail of Chain0.

[0111] In the implementation manner of the present application, the tail of the target sequence chain is determined according to the hash value of each operation node, which improves the accuracy of the tail of the chain and thus improves the operation efficiency.

[0112] In some implementations, when the second node is a signature node, the data processing method further includes steps S541 and S542, wherein: Step S541: Determine the signature operation node corresponding to the target sequence chain from the multiple operation nodes of the target sequence chain of the second node.

[0113] Here, the signature operation node is an operation node in the target Chain. Different target Chains have different locations of signature operation nodes.

[0114] The signature operation node can be determined in any suitable manner, such as random, sequential, custom, etc. For example, Figure 3 Among the leaf nodes shown, in order, the signature operation node corresponding to Chain0 can be the first operation node (0, 0), the signature operation node corresponding to Chain1 can be the second operation node (1, 1)... The signature operation node corresponding to Chain15 can be the last operation node (15, 15).

[0115] Step S542: Store the hash value of the signature operation node corresponding to the target sequence chain in the third storage position of the chain storage block; wherein the chain storage block includes at least two storage positions, the number of storage positions of the chain storage block is adapted to the number of at least two sequence chains, each sequence chain corresponds to a storage position, and the third storage position is adapted to the storage position corresponding to the target sequence chain.

[0116] Here, each Chain corresponds to a storage location, and each storage location is used to store the hash value of the signature operation node in the corresponding Chain.

[0117] In an implementation manner of the present application, by setting the number of storage locations of the chain storage block to match the total number of sequential chains of the node, the number of storage locations is greatly reduced compared to the case where the number of storage locations is the same as that of all sequential chains, and the size of the storage space is further reduced, thereby improving the utilization of the storage space while reducing resource consumption.

[0118] In some implementations, step S53 includes step S531 and step S532, wherein: Step S531, when the target sequence chain of the second node is the first sequence chain of the second node, the tail of the target sequence chain of the second node is used as the tail of the chain corresponding to the second node, and the tail of the chain corresponding to the second node is used as the calculation result.

[0119] Here, for the first Chain in a node, the tail of the Chain can be used as the tail of the chain corresponding to the node. Figure 3 In the leaf node shown, the chain tail of Chain0 can be used as the chain tail corresponding to the leaf node.

[0120] Step S532: When the target sequence chain of the second node is another sequence chain of the second node, obtain the chain tail corresponding to the second node from the fourth storage position of the chain tail storage block, and use the first operation unit to operate on the chain tail corresponding to the second node and the chain tail of the target sequence chain of the second node to obtain an operation result; wherein, the chain tail storage block includes at least one storage position, and the number of storage positions of the chain tail storage block is determined based on the number of at least two sequence chains of the second node and the number of at least two operation units, and all sequence chains of a node correspond to one storage position.

[0121] Here, the chain tail storage block is used to store at least the chain tail of each leaf node. The number of storage locations contained in the chain tail storage block can be any suitable number. For example, 4, 8, etc. In some embodiments, the number of storage locations in the chain tail storage block can be adapted to the total number of leaf nodes. For example, in Figure 2In the Merkle tree shown, the Merkle tree includes 8 leaf nodes, so the chain tail storage block may also include 8 storage locations, each storage location is used to store the chain tail corresponding to a leaf node.

[0122] In some embodiments, the number of storage locations of the chain tail storage block can be adapted to the total number of operation units and the number of chains contained in the node. For example, if the total number of operation units is 4 and the node includes 3 chains, then the chain tail storage block can also include at least two storage locations. For another example, if the total number of operation units is 4 and the node includes 4 chains, then the chain tail storage block can also include at least one storage location. During implementation, the storage locations of the chain tail storage block are reused to achieve the storage of chain tails corresponding to multiple leaf nodes.

[0123] The calculation result may include but is not limited to the second node, the end of the chain corresponding to the second node, etc. In implementation, if the target Chain is not the last Chain, then the calculation result may be the end of the chain corresponding to the second node; if the target Chain is the last Chain, then the calculation result may be the second node.

[0124] In the implementation manner of the present application, on the one hand, the calculation result is determined according to the position of the target sequence chain, thereby improving the accuracy of the calculation result; on the other hand, the number of storage locations of the chain tail storage block is determined in real time according to the number of sequence chains contained in the node and the degree of parallelism. Compared with the number of storage locations for all leaf nodes, the number of storage locations is greatly reduced, and the size of the storage space is further reduced, thereby improving the utilization of the storage space while reducing resource consumption.

[0125] In some implementations, when the first operation object is the last sequence chain of the second node, the operation result includes the second node, and the data processing method further includes step S551 and / or step S552, wherein: Step S551: When the position index of the second node meets the second preset condition, the second node is stored in the fifth storage position of the node storage block, and the fifth storage position is a storage position highly adapted to the second node.

[0126] Here, the second preset condition can be any suitable condition. For example, an even number, divisible by 2, etc. In implementation, if the position index of the second node meets the second preset condition, the second node needs to be stored in the fifth storage position. In some implementations, the same node height only needs to occupy one storage position in the node storage block, then the fifth storage position is the storage position corresponding to the leaf node. For example, in Figure 2In the Merkle tree shown, eight leaf nodes share a storage location P0, which can be used to store node (0, 0), node (0, 2), node (0, 4), and node (0, 6).

[0127] Step S552: When the second node is the node corresponding to the key request, use the second node as the first public key.

[0128] Here, the key request may be any suitable request for obtaining a public key. In implementation, different key requests correspond to different leaf nodes, and a leaf node can only be used to generate a public key once. The node corresponding to the key request may be determined in any suitable manner, such as random, sequential, custom, etc.

[0129] In an implementation manner of the present application, the second node is processed based on whether the location index of the second node meets the second preset condition, whether the second node is the node corresponding to the key request, etc., thereby improving the accuracy and reliability of the processing of the second node.

[0130] In some implementations, when the first operation object is a non-last sequence chain of the second node, the data processing method further includes step S561, wherein: Step S561: Store the chain tail corresponding to the second node in the fourth storage position of the chain tail storage block.

[0131] Here, when the target Chain is not the last Chain, the chain tail corresponding to the second node needs to be stored until the second node is calculated.

[0132] In the implementation manner of the present application, whether to store the chain tail corresponding to the second node is determined according to whether the first operation object is the last sequential chain, thereby improving the accuracy of storing the chain tail of the second node.

[0133] Based on the above embodiments, the present application also provides a data processing chip. Figure 6 A schematic diagram of the structure of a data processing chip provided in an embodiment of the present application is shown in FIG. Figure 6 As shown, the data processing chip 60 is provided with a processing unit 61, wherein: The processing unit 61 is used to: when the state of the first operation unit is an idle state, determine the first operation object corresponding to the first operation unit, the first operation unit is any one of the at least two operation units, and the first operation object includes one of the following: a first node in a first Merkle tree, a target sequence chain of a second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains; use the first operation unit to operate on the first operation object to obtain an operation result.

[0134] Here, the processing unit may be any suitable hardware unit capable of realizing the function, such as a digital circuit, an analog circuit, etc.

[0135] The operation unit may be any suitable unit capable of performing operations, and the operation unit is mainly used for operations such as key generation, signing, and signature verification. For example, a hash core, a digital circuit, an analog circuit, etc. The state of the operation unit may include but is not limited to an idle state, a working state, etc. In some embodiments, the processing unit is externally connected to at least two operation units, and during implementation, the operation unit is connected to the processing unit in communication via a bus, a hard line, an interface, etc.

[0136] The first operation object may be any suitable object in the Merkle tree that needs to be operated, such as a node, a Chain, etc. In implementation, the process of the processing unit determining the first operation object may refer to the specific implementation of the aforementioned step S11.

[0137] The operation result may include but is not limited to the parent node of the first node, the second node, the tail of the chain corresponding to the second node, etc. In implementation, the process of the processing unit determining the operation result can refer to the specific implementation of the aforementioned step S12, step S42 to step S43, or step S52 to step S53.

[0138] In some embodiments, the processing unit 61 is further used to: in response to receiving a signature request transmitted by the server through the processor, determine the signature node from at least two leaf nodes of the first Merkle tree based on the pending message transmitted by the server through direct memory access; when the operation result is the second node and the second node is the signature node, obtain the hash value of the signature operation node corresponding to at least two sequential chains of the second node from the chain storage block, and output the hash value of the signature operation node corresponding to at least two sequential chains of the second node as the signature.

[0139] Here, the server may be any suitable unit capable of implementing the function, for example, an electronic device.

[0140] The processor may be any suitable processor capable of implementing the function, for example, a CPU (Central Processing Unit), a DSP (Digital Signal Processing), etc. The processor may be communicatively connected to the processing unit via a bus, a hard line, an interface, etc.

[0141] The message to be processed may include any appropriate content.

[0142] Direct Memory Access (DMA) is a function provided by some computer bus architectures. It enables data to be sent directly from an attached device (such as a disk drive) to the computer motherboard's memory to reduce data latency and improve data real-time performance and effectiveness.

[0143] The signature node may be determined in any suitable manner. In some implementations, a hash operation may be performed on the message to be processed to obtain a hash value of the message to be processed, and a number of bits may be selected from the hash value of the message to be processed to determine the signature node. For example, a leaf node that matches the number of bits may be used as the signature node.

[0144] The signature request can be any suitable request that can implement the signature. After receiving the signature request, the processing unit determines the signature node according to the message to be processed, and finally returns the hash value of each signature operation node output to the server.

[0145] In some implementations, the processing unit may have a built-in processing module, which is specifically used to perform signing operations, key generation operations, signature verification operations, etc.

[0146] In the implementation manner of the present application, on the one hand, DMA is used to transmit messages to be processed, thereby reducing the delay of messages to be processed and improving the real-time and effectiveness of messages to be processed; on the other hand, the server controls the processing unit through the processor to perform the signature operation to fully utilize the high-speed processing capability and low latency of the processor, which not only improves the overall signature efficiency, but also improves the performance and stability of the signature operation.

[0147] In some embodiments, when the first operation object is the first node, the operation result includes the parent node of the first node; the processing unit 61 is also used to: obtain the sibling node of the first node from the first storage position of the node storage block of the storage unit, and send the first node and the sibling node of the first node to the first operation unit, so that the first operation unit operates on the first node and the sibling node of the first node to obtain the parent node of the first node; wherein the node storage block includes multiple storage locations, the number of storage locations of the node storage block is adapted to the height of the first Merkle tree, all nodes of the same height in the first Merkle tree correspond to one storage location, and the first storage location is a storage location adapted to the height of the first node. Here, the storage unit can be any suitable unit capable of implementing a storage function. For example, a random access memory. The storage unit includes at least the node storage block. In some embodiments, different Merkle trees can correspond to different node storage blocks or reuse the same node storage block. During implementation, the number of storage locations contained in the node storage block is adapted to the height of the first Merkle tree.

[0148] In some embodiments, the first operation unit needs to return the parent node of the first node to the processing unit. The processing unit can first determine whether the parent node of the first node is a root node. If it is not a root node and the position index does not meet the second preset condition, the parent node of the first node can be used as the new first node, and the vertical upward operation can continue until the upward operation is no longer possible; if it is not a root node and the position index meets the second preset condition, the parent node of the first node is stored in the second storage position of the node storage block, and the second storage position is a storage position that is highly adapted to the parent node of the first node.

[0149] In an implementation manner of the present application, by setting the number of storage locations of the node storage block to the tree height, the number of storage locations is greatly reduced compared to the case where the number of storage locations is the total number of leaf nodes, and the size of the storage space is reduced, thereby improving the utilization of the storage space while reducing resource consumption.

[0150] Figure 7 A schematic diagram of an implementation process of a data processing method provided in an embodiment of the present application Figure 4 ,like Figure 7 As shown, the method includes steps S700 to S714, wherein: Step S700, start; Step S701: when the state of the first operation unit is an idle state, determine a first operation object corresponding to the first operation unit; Step S702: when the first operation object is the first node, obtain the brother node of the first node from the node storage block, and use the first operation unit to perform a hash operation on the first node and the brother node of the first node to obtain the parent node of the first node; Step S703, determine whether the parent node of the first node is a root node, if so, proceed to step S714, otherwise, proceed to step S704; Step S704: determine whether the position index of the parent node of the first node is an even number (corresponding to the second preset condition mentioned above); if so, proceed to step S705; if not, proceed to step S706; Step S705, storing the parent node of the first node in the second storage location of the node storage block, and proceeding to step S701; Step S706: Use the parent node of the first node as the new first node and proceed to step S702; Step S707: When the first operation object is the target sequence chain of the second node, use the first operation unit to perform a hash operation on the target sequence chain of the second node to obtain the tail of the target sequence chain of the second node; Step S708, determine whether the target sequence chain of the second node is the first sequence chain, if so, proceed to step S709, if not, proceed to step S710; Step S709: take the chain tail corresponding to the second node as the operation result, and store the chain tail corresponding to the second node in the fourth storage position of the chain tail storage block, and then proceed to step S701; Step S710, determine whether the target sequence chain of the second node is the last sequence chain, if so, proceed to step S711, if not, proceed to step S712; Step S711, taking the second node as the operation result, and proceeding to step S701; Step S712: determine whether the position index of the second node is an even number, if so, proceed to step S713, if not, proceed to step S701; Step S713, store the second node to the fifth storage position of the node storage block, and proceed to step S701; Step S714, end.

[0151] This application uses node-integrated sequential chain parallelism and Merkle tree pipeline to implement the operation of the SPHINCS+ algorithm based on the characteristics of horizontal data independence and vertical data dependence. Generally speaking, the entire XMSS tree (an extended Merkle tree) is regarded as a whole, and the parallel operation of Chain is performed in parallel. When a leaf node is completed, it is used for the node operation upward in the Merkle tree first. After completion, the Chain operation continues until all nodes are completed.

[0152] The following operation is performed with two operation units (operation unit A and operation unit B): Figure 2 The Merkle tree shown is taken as an example to illustrate the implementation process of the technical solution of the present application.

[0153] Figure 8 A schematic diagram of a Merkle tree operation process provided in an embodiment of the present application is shown in FIG. Figure 8 As shown: In the S1 phase, the two operation units continue to operate the two chains of the node (0, 0) in parallel, that is, operation unit A operates the first chain of the node (0, 0), and operation unit B operates the second chain of the node (0, 0); In the S2 phase, the two computing units continue to compute two chains in parallel, namely: computing unit A computes the third chain of node (0, 0), and computing unit B computes the first chain of node (0, 1); In the S3 stage, the operation unit A is used to operate the node (0, 0) according to the tail of the third chain of the node (0, 0), and the operation unit B is used to operate the second chain of the node (0, 1); In the S4 stage, since node operations are faster than sequential chain operations, operation unit A is used to operate the third Chain of node (0, 1), and operation unit B continues to operate the second Chain of node (0, 1); In the S5 stage, since the three chains of node (0, 1) have been calculated to obtain node (0, 1), then the calculation unit A is used to calculate nodes (0, 0) and node (0, 1), and the calculation unit B is used to calculate the first chain of node (0, 2); … And so on, until all operations are completed. During implementation, when there is an idle operation unit, the operation will be entered immediately to determine whether the upward operation can be performed at present. If the upward operation cannot be performed, this operation unit will be assigned to the Chain operation. After a Chain operation is completed, the resources will be recycled, and the state of the operation unit will be returned to the idle state, and the next judgment will be entered. If the upward operation can be performed, this operation unit will be assigned to the node operation. After a node operation is completed, it will be determined whether this node is the root node. If not, the resources will be recycled, and the state of the operation unit will be returned to the idle state, and the next judgment will be entered. If there are multiple nodes that can be executed continuously, this operation unit will perform node operations multiple times until it cannot be performed upward, and enter the Chain operation. If this node is the root node, the operation of the entire XMSS tree is completed.

[0154] From this, it can be seen that the parallelism of the present application can be any appropriate parallelism, the overall operation logic is consistent (vertical first and then horizontal), the storage space is small, and in the entire operation process, only the last execution chain number does not match the parallelism, and the sequential execution from the last leaf node to the root node, the operations at other times are all parallel, and the parallel performance is efficient.

[0155] In some implementations, the processing unit 61 is further used to: in response to receiving a key request transmitted by the server through the processor, determine the key node corresponding to the key request; when the second node is the key node, use the second node as the first public key.

[0156] Here, the key request may be any suitable request for obtaining a public key. In implementation, the server controls the processing unit to perform a public key generation operation through a processor. After the processing unit generates the first public key, it returns it to the server.

[0157] Fig. 9 A schematic diagram of the structure of a data processing system provided in an embodiment of the present application is shown in FIG. Fig. 9As shown, the data processing system includes a processing unit 61, a server 92, a CPU 93 (corresponding to the aforementioned processor), a hash core 94 with at least two operation units, and a memory 95 (corresponding to the aforementioned storage unit) in the algorithm core of the post-quantum SPHINCS+. The algorithm core supports DMA and the CPU to transfer data to the algorithm core through the bus, and at the same time, an external standard hash core 94 and memory 95 are connected to perform data operations and access. The processing unit 61 is an important component of the algorithm core and is used for key generation, signing, and signature verification of the post-quantum SPHINCS+ algorithm.

[0158] In an embodiment of the present application, when any operation unit is in an idle state, a node or sequence chain in a Merkle tree is used as an operation object of the operation unit. On the one hand, since each operation unit of the present application can simultaneously and parallelly operate multiple sequence chains in a leaf node, the present application only needs to store the operation results of the operation objects corresponding to each operation unit, while in the related art, since each operation unit simultaneously and parallelly operates a sequence chain of multiple leaf nodes, it is necessary to store all sequence chains in multiple leaf nodes. Therefore, the scheme of the present application can reduce the storage space and realize high parallel operation in a smaller storage space. On the other hand, since each operation unit of the present application can simultaneously and parallelly operate sequence chains and nodes, the purpose of horizontal parallel operation of sequence chains and vertical parallel operation of nodes is achieved, all operation units are fully utilized, and the degree of parallelism will not decrease as the node height increases. In the related art, since all operation units are used to simultaneously and parallelly operate sequence chains or nodes, the degree of parallelism will decrease as the node height increases. Therefore, the present application improves the utilization rate of the operation unit while improving the parallel effect, thereby improving the operation efficiency.

[0159] In some embodiments, the processing unit 61 is also used to: when the first object set satisfies a first preset condition, use the first node as the first operation object corresponding to the first operation unit; wherein the first preset condition represents that the first object set includes the first node and the first node's brother node; when the first object set does not satisfy the first preset condition, determine the target sequence chain of the second node based on the operation objects corresponding to all other operation units except the first operation unit in at least two operation units, and use the target sequence chain of the second node as the first operation object corresponding to the first operation unit.

[0160] In some embodiments, when the parent node of the first node is a non-root node, the processing unit 61 is also used to: when the position index of the parent node of the first node satisfies a second preset condition, store the parent node of the first node to a second storage location of the node storage block; wherein the second storage location is a storage location that is highly adapted to the parent node of the first node.

[0161] In some embodiments, when the first operation object is the target sequence chain of the second node, the processing unit 61 is also used to: use the first operation unit to operate on the target sequence chain of the second node to obtain the tail of the target sequence chain of the second node; and determine the operation result based on the tail of the target sequence chain of the second node.

[0162] In some embodiments, the target sequence chain of the second node includes multiple operation nodes connected in sequence; the processing unit 61 is also used to: use the first operation unit to perform a hash operation on the first operation node among the multiple operation nodes to obtain a hash value of the first operation node; wherein the first operation node is determined based on a random number generated based on a private key; for each operation node among the multiple operation nodes except the first operation node, use the first operation unit to determine the hash value of the operation node based on the hash value of the previous operation node of the operation node; and use the hash value of the last operation node among the multiple operation nodes as the tail of the target sequence chain of the second node.

[0163] In some embodiments, when the second node is a signature node, the processing unit 61 is further used to: determine the signature operation node corresponding to the target sequence chain from multiple operation nodes of the target sequence chain of the second node; store the hash value of the signature operation node corresponding to the target sequence chain in the third storage position of the chain storage block; wherein the chain storage block includes at least two storage locations, the number of storage locations of the chain storage block is adapted to the number of at least two sequence chains, each sequence chain corresponds to one storage location, and the third storage location is adapted to the storage location corresponding to the target sequence chain.

[0164] In some embodiments, the processing unit 61 is further used to: when the target sequence chain of the second node is the first sequence chain of the second node, use the tail of the target sequence chain of the second node as the tail of the chain corresponding to the second node, and use the tail of the chain corresponding to the second node as the operation result; when the target sequence chain of the second node is other sequence chains of the second node, obtain the tail of the chain corresponding to the second node from the fourth storage position of the tail storage block, and use the first operation unit to operate on the tail of the chain corresponding to the second node and the tail of the target sequence chain of the second node to obtain the operation result; wherein, the tail storage block includes at least one storage position, and the number of storage positions of the tail storage block is determined based on the number of at least two sequence chains of the second node and the number of at least two operation units, and all sequence chains of a node correspond to one storage position.

[0165] In some embodiments, when the first operation object is the last sequence chain of the second node, the operation result includes the second node; the processing unit 61 is also used for at least one of the following: when the position index of the second node satisfies the second preset condition, the second node is stored in the fifth storage position of the node storage block, and the fifth storage position is a storage position that is highly adapted to the second node; when the second node is the node corresponding to the key request, the second node is used as the first public key.

[0166] In some embodiments, when the first operation object is a non-last sequential chain of the second node, the operation result includes the tail of the chain corresponding to the second node, and the processing unit 61 is further used to: store the tail of the chain corresponding to the second node in the fourth storage position of the tail storage block.

[0167] In some implementations, the processing unit 61 is further configured to: determine a second hash value of the message to be processed; and determine a signature node from at least two leaf nodes of the current Merkle tree based on the second hash value.

[0168] In some embodiments, the processing unit 61 is also used to: when the operation result is a non-root node, switch the state of the first operation unit to an idle state; based on the operation result, update the first object set; based on the updated first object set, determine the first operation object corresponding to the first operation unit.

[0169] In some embodiments, when the operation result is a second node and the second node is a signature node, the processing unit 61 is also used to: obtain the hash value of the signature operation node corresponding to at least two sequential chains of the second node from the chain storage block; and output the hash value of the signature operation node corresponding to at least two sequential chains of the second node as a signature.

[0170] In some embodiments, the processing unit 61 is further used to: receive a signature sent by a sender; wherein the signature includes hash values ​​of signature operation nodes corresponding to at least two sequential chains of a third node in the second Merkle tree; and determine a verification result corresponding to the signature based on the hash values ​​of signature operation nodes corresponding to at least two sequential chains of the third node.

[0171] In some embodiments, the processing unit 61 is further used to: determine the tail of each sequence chain in at least two sequence chains of the third node based on the hash value of the signature operation node corresponding to the sequence chain; determine the second public key based on the tail of each sequence chain of the third node; and determine the signature verification result corresponding to the signature based on the second public key and the third public key sent by the sender.

[0172] The description of the above chip embodiment is similar to the description of the above method embodiment, and has similar beneficial effects as the method embodiment. For technical details not disclosed in the chip embodiment of the present application, please refer to the description of the method embodiment of the present application for understanding.

[0173] It should be understood that "one embodiment" or "an embodiment" mentioned throughout the specification means that specific features, structures or characteristics related to the embodiment are included in at least one embodiment of the present application. Therefore, "in one embodiment" or "in an embodiment" appearing throughout the specification does not necessarily refer to the same embodiment. In addition, these specific features, structures or characteristics can be combined in one or more embodiments in any suitable manner. It should be understood that in various embodiments of the present application, the size of the sequence number of the above-mentioned processes does not mean the order of execution, and the execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application. The above-mentioned sequence numbers of the embodiments of the present application are only for description and do not represent the advantages and disadvantages of the embodiments.

[0174] It should be noted that, in this article, the term "comprises", "includes" or any other variant thereof is intended to cover non-exclusive inclusion, so that a process, method, article or device including a series of elements includes not only those elements, but also includes other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of more restrictions, an element defined by the sentence "comprises a ..." does not exclude the existence of other identical elements in the process, method, article or device including the element.

[0175] In the several embodiments provided in the present application, it should be understood that the disclosed devices and methods can be implemented in other ways. The device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as: multiple units or components can be combined, or can be integrated into another system, or some features can be ignored or not executed. In addition, the coupling, direct coupling, or communication connection between the components shown or discussed can be through some interfaces, and the indirect coupling or communication connection of the devices or units can be electrical, mechanical or other forms.

[0176] The units described above as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units; they may be located in one place or distributed on multiple network units; some or all of the units may be selected according to actual needs to achieve the purpose of the present embodiment.

[0177] In addition, all functional units in the embodiments of the present application may be integrated into one processing unit, or each unit may be separately configured as a unit, or two or more units may be integrated into one unit; the above-mentioned integrated units may be implemented in the form of hardware or in the form of hardware plus software functional units.

[0178] A person skilled in the art can understand that: all or part of the steps of implementing the above method embodiment can be completed by hardware related to program instructions, and the aforementioned program can be stored in a computer-readable storage medium. When the program is executed, it executes the steps of the above method embodiment; and the aforementioned storage medium includes: various media that can store program codes, such as mobile storage devices, read-only memories (ROM), magnetic disks or optical disks.

[0179] Alternatively, if the above-mentioned integrated unit of the present application is implemented in the form of a software function module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application can essentially or in other words, the part that contributes to the relevant technology can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for an electronic device (which can be a personal computer, server, or network device, etc.) to execute all or part of the methods described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as mobile storage devices, ROMs, magnetic disks, or optical disks.

[0180] The above is only an implementation method of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with the technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application.

Claims

1. A data processing method, characterized in that: include: In a case where the state of the first operation unit is an idle state, determining a first operation object corresponding to the first operation unit, the first operation unit is any one operation unit of at least two operation units, and the first operation object includes one of the following: a first node in a first Merkle tree, and a target sequence chain of a second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains; The first operation unit is used to perform operation on the first operation object to obtain an operation result.

2. The data processing method according to claim 1, characterized in that: The determining the first operation object corresponding to the first operation unit includes: When the first object set satisfies a first preset condition, taking the first node as a first operation object corresponding to the first operation unit; wherein the first preset condition indicates that the first object set includes the first node and a brother node of the first node; When the first object set does not satisfy the first preset condition, the target sequence chain of the second node is determined based on the operation objects corresponding to all other operation units among the at least two operation units except the first operation unit, and the target sequence chain of the second node is used as the first operation object corresponding to the first operation unit.

3. The data processing method according to claim 2, characterized in that: The step of determining the target sequence chain of the second node based on the operation objects corresponding to all other operation units of the at least two operation units except the first operation unit includes: Determine a second operation unit from all the other operation units based on the operation objects corresponding to all the other operation units; Based on the operation object corresponding to the second operation unit, a target sequence chain of the second node is determined.

4. The data processing method according to claim 1, characterized in that: When the first operation object is the first node, the operation result includes the parent node of the first node; The using the first operation unit to operate the first operation object to obtain an operation result includes: Obtaining a sibling node of the first node from a first storage position of a node storage block; wherein the node storage block includes a plurality of storage positions, the number of storage positions of the node storage block is adapted to the height of the first Merkle tree, all nodes of the same height in the first Merkle tree correspond to one storage position, and the first storage position is a storage position adapted to the height of the first node; The first operation unit is used to operate the first node and the sibling nodes of the first node to obtain the parent node of the first node.

5. The data processing method according to claim 4, characterized in that: In the case where the parent node of the first node is a non-root node, the data processing method further includes: When the position index of the parent node of the first node meets the second preset condition, the parent node of the first node is stored in the second storage position of the node storage block; wherein the second storage position is a storage position that is highly adapted to the parent node of the first node.

6. The data processing method according to claim 1, characterized in that: In a case where the first operation object is the target sequence chain of the second node, the using the first operation unit to operate the first operation object to obtain an operation result includes: Using the first operation unit, operating the target sequence chain of the second node to obtain the tail of the target sequence chain of the second node; The operation result is determined based on the tail of the target sequence chain of the second node.

7. The data processing method according to claim 6, characterized in that: The target sequence chain of the second node includes a plurality of computing nodes connected in sequence; The using the first operation unit to operate the target sequence chain of the second node to obtain the tail of the target sequence chain of the second node includes: Using the first computing unit, performing a hash operation on a first computing node among the multiple computing nodes to obtain a hash value of the first computing node; wherein the first computing node is determined based on a random number generated based on a private key; For each computing node among the plurality of computing nodes except the first computing node, using the first computing unit, determine a hash value of the computing node based on a hash value of a previous computing node of the computing node; The hash value of the last operation node among the multiple operation nodes is used as the tail of the target sequence chain of the second node.

8. The data processing method according to claim 7, characterized in that: In the case where the second node is a signature node, the data processing method further includes: Determine a signature operation node corresponding to the target sequence chain from a plurality of operation nodes of the target sequence chain of the second node; The hash value of the signature operation node corresponding to the target sequence chain is stored in the third storage position of the chain storage block; wherein the chain storage block includes at least two storage positions, the number of storage positions of the chain storage block is adapted to the number of the at least two sequence chains, each sequence chain corresponds to a storage position, and the third storage position is adapted to the storage position corresponding to the target sequence chain.

9. The data processing method according to claim 6, characterized in that: The determining the operation result based on the tail of the target sequence chain of the second node includes: In the case where the target sequence chain of the second node is the first sequence chain of the second node, taking the tail of the target sequence chain of the second node as the tail of the chain corresponding to the second node, and taking the tail of the chain corresponding to the second node as the operation result; In the case where the target sequence chain of the second node is other sequence chains of the second node, the chain tail corresponding to the second node is obtained from the fourth storage position of the chain tail storage block, and the chain tail corresponding to the second node and the chain tail of the target sequence chain of the second node are operated using the first operation unit to obtain the operation result; wherein the chain tail storage block includes at least one storage position, the number of storage positions of the chain tail storage block is determined based on the number of at least two sequence chains of the second node and the number of the at least two operation units, and all sequence chains of a node correspond to one storage position.

10. The data processing method according to claim 9, characterized in that: In the case where the first operation object is the last sequence chain of the second node, the operation result includes the second node; and the data processing method further includes at least one of the following: When the position index of the second node satisfies a second preset condition, storing the second node in a fifth storage position of a node storage block, the fifth storage position being a storage position highly adapted to the second node; In the case where the second node is a node corresponding to the key request, the second node is used as the first public key.

11. The data processing method according to claim 9, characterized in that: In the case where the first operation object is a non-last sequence chain of the second node, the operation result includes the tail of the chain corresponding to the second node, and the data processing method further includes: The chain tail corresponding to the second node is stored in the fourth storage position of the chain tail storage block.

12. The data processing method according to claim 2, characterized in that: The data processing method further includes: When the operation result is a non-root node, switching the state of the first operation unit to an idle state; Based on the calculation result, updating the first object set; Based on the updated first object set, a first operation object corresponding to the first operation unit is determined.

13. The data processing method according to any one of claims 1 to 12, characterized in that: In a case where the operation result is the second node and the second node is a signature node, the data processing method further includes: Obtaining hash values ​​of signature operation nodes corresponding to at least two sequential chains of the second node from the chain storage block; The hash value of the signature operation node corresponding to at least two sequential chains of the second node is output as the signature.

14. The data processing method according to any one of claims 1 to 12, characterized in that: The data processing method further includes: Receive a signature sent by the sender; wherein the signature includes hash values ​​of signature operation nodes corresponding to at least two sequential chains of the third node in the second Merkle tree; Based on the hash values ​​of the signature operation nodes corresponding to at least two sequential chains of the third node, a signature verification result corresponding to the signature is determined.

15. The data processing method according to claim 14, characterized in that: The determining the signature verification result corresponding to the signature based on the hash value of the signature operation node corresponding to the at least two sequential chains of the third node includes: For each of the at least two sequence chains of the third node, determining the tail of the sequence chain based on the hash value of the signature operation node corresponding to the sequence chain; Determining a second public key based on the tail of each sequential chain of the third node; Based on the second public key and the third public key sent by the sender, determine the signature verification result corresponding to the signature.

16. A data processing chip, characterized in that: The data processing chip is provided with a processing unit, wherein: The processing unit is used to determine a first operation object corresponding to the first operation unit when the state of the first operation unit is an idle state, the first operation unit is any one operation unit of at least two operation units, and the first operation object includes one of the following: a first node in a first Merkle tree, a target sequence chain of a second node in the first Merkle tree, the first Merkle tree includes at least two leaf nodes and at least one non-leaf node, and each leaf node includes at least two sequence chains; use the first operation unit to operate on the first operation object to obtain an operation result.

Citation Information

Patent Citations

  • Arithmetic or logical operation tree computation

    CN101124538A

  • Method and system for distributed block chain function

    CN118633258A

  • Holochain - A Framework For Distributed Applications

    US20200389521A1

Cited By

  • Hash chain scheduling execution method and device

    CN122293345A

  • Method and apparatus for scheduling execution of hash chains

    CN122293345B