Patent Description:
Further aspects relate to a computing system and a computer program product.

Computing systems, in particular distributed computing systems such as in distributed networks, provide computing services, in particular distributed computing services. In such computing systems it is often a challenge to provide efficient mechanisms for providing access to computational results of the computing system/the computing services, and in particular to provide such access in an authenticable manner.

In this respect accumulators are known as a means to store data in a way that allows to access it in an authenticable manner. In general, accumulators are entities, units, logics or algorithms which combine a set of accumulator elements into a digest. One prominent and widely used example of an accumulator are hash trees.

Accumulators may be used in particular to certify the membership of an accumulator value in the accumulator. This can be done by computing a witness for a corresponding accumulator value.

<CIT> discloses an apparatus including a memory storing data and a processor performing operations. The apparatus generates or maintains an accumulation tree for the stored data, in particular an ordered tree structure with a root node, leaf nodes and internal nodes. Each leaf node corresponds to a portion of the data. A depth of the tree remains constant. A bound on a degree of each internal node is a function of a number of leaf nodes of a subtree rooted at the internal node. Each node of the tree has an accumulation value. Accumulation values of the root and internal nodes are determined by hierarchically employing an accumulator over the accumulation values of the nodes lying one level below the node in question. The accumulation value of the root node is a digest for the tree.

The document by <NPL>, discloses how to use the RSA one-way accumulator to realize an efficient and dynamic authenticated dictionary, where untrusted directories provide cryptographically verifiable answers to membership queries on a set maintained by a trusted source.

Accordingly, one object of an aspect of the invention is to provide an advantageous method for storing data, in particular heterogeneous data, in a way that allows an efficient access to the data, in particular in a way that facilitates an efficient authentication and/or signing of the data.

According to an embodiment of an aspect of the invention there is provided a computer-implemented method for storing data, in particular heterogeneous data. The method comprises storing the data in a hierarchical accumulator structure. The hierarchical accumulator structure comprises at least a first level and a second level. The first level comprises a first level accumulator and the second level comprises a plurality of second level accumulators. The first level accumulator encompasses a plurality of first level elements and a first level digest of the plurality of first level elements. Each of the plurality of second level accumulators encompasses a plurality of second level elements and a second level digest of the plurality of second level elements and each of the second level digests of the plurality of second level accumulators corresponds to one of the plurality of first level elements. At least a subset of the plurality of first level elements comprises or is associated with metadata. The metadata comprises accumulator information for the corresponding second level accumulator. The step of storing the data comprises computing the plurality of second level accumulators in dependence on the respective accumulator information of the metadata of the first level elements.

Such a hierarchical accumulator structure allows a flexible and efficient storage of the data. This is in particular useful for heterogeneous data, i.e. data which have different characteristics and/or access patterns. The accumulator information of the metadata may be used to specify any desired or useful property for the computation of the corresponding second level accumulator. The accumulator information of the metadata is then taken into account for the computation of the corresponding accumulator. This allows to adapt each computation of the accumulators to the specifics of the data that is stored in the respective accumulator. As a result, each of the plurality of second level accumulators may be individually adapted and computed in dependence on the metadata.

The digest of each of the second level accumulators has a corresponding first level element. Accordingly, the respective first level elements correspond and hence form an interface between the first level accumulator and the respective second level accumulator. This structure allows in particular that each of the second level accumulators can be changed and updated independently from the other second level accumulators.

According to an embodiment, storing the data comprises computing different accumulator types of the second level accumulators in dependence on the respective accumulator information of the metadata of the first level elements.

Hence according to embodiments, the hierarchical accumulator structure may comprise a heterogeneous set of different types of second level accumulators. Each accumulator type may be chosen and computed in dependence on the metadata/the accumulator information of the metadata and may hence be optimized for the respective characteristics of the data that is stored in the respective second level accumulator.

According to embodiments, the hierarchical accumulator structure may further comprise a third level comprising a plurality of third level accumulators. Each of the plurality of third level accumulators may encompass a plurality of third level elements and a third level digest of the plurality of third level elements. Each of the third level digests of the plurality of third level accumulators corresponds to one of the plurality of second level elements. Furthermore, at least a subset of the plurality of second level elements comprises metadata and the metadata comprises accumulator information for the corresponding third level accumulator.

Providing additional levels increases the flexibility of the accumulator structure and allows to increase the overall number of individual accumulators which are stored in the accumulator structure. According to embodiments a fourth, fifth, and further levels may be added to the accumulator structure.

According to embodiments, the accumulator information of the metadata comprises information of the data type of the corresponding second level and/or third level accumulators.

According to such an embodiment, the method may take into account the data type to compute the corresponding second or third level accumulator. The data type may specify e.g. that the data of the corresponding accumulator stores data in a queue structure or that the data is a mapping, e.g. a key mapping.

According to another embodiment, the accumulator information defines an accumulator type for the corresponding second level and/or third level accumulators.

According to such an embodiment, it is specified in advance which kind of accumulator type shall be computed for the respective accumulator. Possible accumulator types include e.g. that the accumulator shall be computed as a hash tree which represents the data as a balanced tree, a red-black tree, a Patricia trie or a hash chain. Each of such trees may be suitable and chosen for a particular type of data. As an example, a Patricia trie may be in particular suitable for the storage of mappings, e.g. key mappings. On the other hand, a hash chain may be in particular suitable for the storage of queues.

According to another embodiment, the accumulator information comprises information of write and/or read access patterns of the corresponding accumulator.

This information can then be used to compute the corresponding accumulator in such a way that future write and/or read accesses are improved. As an example, accumulator elements which are accessed very often may be stored e.g. close to the digest of the accumulator.

According to embodiments, the method comprises selecting the respective accumulator type such that one or more predefined operations on the data of the corresponding accumulator can be performed in an optimized way.

Such operations may include e.g. write accesses such as inserts, updates, and deletes of data as well as read accesses.

According to an embodiment, the method comprises computing the first level accumulator and/or one or more of the plurality of second level accumulators and/or one or more of the plurality of third level accumulators as cryptographic accumulators, in particular as hash trees.

This facilitates in particular an efficient authentication and /or signing of the accumulator elements.

According to embodiments, storing the data comprises regularly analysing write accesses and/or read accesses to the hierarchical accumulator structure. The method may further comprise adapting the metadata of the plurality of first level elements and/or one or more of the plurality of second level elements and/or one or more of the plurality of third level elements in dependence on the analysis of the write accesses and/or the read accesses.

Such an embodiment allows to adapt the computation of the respective accumulator dynamically to changing access patterns of the data. This may then in return dynamically improve an efficient authentication and/or signing of the corresponding accumulator elements.

According to another embodiment, the method comprises regularly computing a sequence of payloads, regularly storing computational results of the sequence of payloads in the hierarchical accumulator structure and regularly analysing the computational results. According to such an embodiment the method may include regularly adapting the metadata of the plurality of first level elements and/or the plurality of second level elements and/or the plurality of third level elements in dependence on the analysis of the computational results.

Hence according to such an embodiment the computational results are analysed and used to adapt the metadata.

According to an embodiment, the method comprises receiving a request for a computational result, computing a witness for the computational result and providing the witness, the computational result and the digest of the first level accumulator as response to the request.

Such a witness benefits in particular from the fact that the hierarchical accumulator structure allows to flexibly adapt and optimize the respective accumulator in view of an efficient provisioning of witnesses.

According to embodiments the accumulators may be computed in particular to improve/reduce the witness size. More particularly, the plurality of second level accumulators and/or the plurality of third level accumulators may be computed in such a way that an average witness size of witnesses for the accumulator elements of the second level accumulators and/or the plurality of third level accumulators is minimized. This can be achieved according to embodiments by placing accumulator elements which are frequently/often accessed on a higher level of the accumulator, i.e. closer to the digest, than accumulator elements which are less frequently updated.

According to an embodiment of another aspect of the invention, a computing system, e.g. a distributed network, is provided which is configured to perform the method aspects of the invention.

According to an embodiment of another aspect of the invention, a computer program product for operating a computing system is provided. The computer program product comprises a computer readable storage medium having program instructions embodied therewith, the program instructions executable by one or more of a plurality of nodes of the distributed network to cause the one or more of the plurality of nodes to perform steps of the method aspect of the invention.

Features and advantages of one aspect of the invention may be applied to the other aspects of the invention as appropriate.

At first, some general aspects and terms of embodiments of the invention will be introduced.

According to embodiments, a distributed network comprises a plurality of nodes that are arranged in a distributed fashion. In such a distributed network computing, software and data is distributed across the plurality of nodes. The nodes establish computing resources and the distributed network may use in particular distributed computing techniques.

According to embodiments, distributed networks may be embodied as blockchain networks. The term "blockchain" shall include all forms of electronic, computer- based, distributed ledgers. According to some embodiments, the blockchain network may be embodied as proof-of-work blockchain network. According to other embodiments, the blockchain network may be embodied as proof-of-stake blockchain network.

Accumulator: Generally a digest accumulating a plurality of accumulator elements. More particularly any entity, unit, logic or algorithm which combines a set of accumulator elements, in particular a large set of accumulator elements, into a digest or in other words an accumulator value, in particular a short digest/accumulator value, such that there is a witness, that a given accumulator element is indeed a valid element of the accumulator. At the same time it is intractable to come up with a witness for an element not in the accumulator. According to embodiments an accumulator may be a hash of all the accumulator elements. A witness for an accumulator element X in such an embodiment would consist of all accumulator elements except X.

Cryptographic accumulator: A cryptographic accumulator may be defined as an accumulator which is configured to or allows to succinctly represent a set of accumulator elements as a compact digest or in other words as a compact accumulator value. For each accumulator element that is part of the accumulated set of accumulator elements one can obtain a compact witness to attest membership of the accumulator element relative to the compact accumulator value/digest, whereas it is intractable to obtain a valid witness for an element which is not part of the accumulated set of accumulator elements.

According to embodiments cryptographic accumulators may have additional, in particular sophisticated features like the support for non-membership witnesses for elements which are not in the accumulated set, or creating a single compact witness that allows to verify membership of multiple elements relative to the accumulator.

According to embodiments cryptographic accumulators may be viewed as a realization of the concept of accumulators introduced above, which relies on cryptographic hardness assumptions to realize succinctness features of the accumulator value/digest and/or the witnesses.

Hash tree: A hash tree may also be denoted as Merkle-tree and was originally described by <NPL>.

A hash tree may be generally described as a tree in which every leaf node is labelled with the cryptographic hash of data elements and every non-leaf node is labelled with the cryptographic hash of the labels of its child nodes. Hash trees may be considered as a generalization of hash lists and hash chains.

According to embodiments hash trees can be used to instantiate cryptographic accumulators, but may also provide additional features like assigning an implicit ordering to the accumulator elements.

A Patricia trie, which may also be denoted as a radix tree, is a data structure that represents a space-optimized trie (prefix tree) in which each node that is the only child is merged with its parent.

A red-black is a self-balancing binary search tree. Each node stores an extra bit representing "color" ("red" or "black"), used to ensure that the tree remains balanced during insertions and deletions.

A balanced tree may also be denoted as self-balancing tree. It may refer to any node-based binary search tree that automatically keeps its height (maximal number of levels below the root) small in the face of arbitrary item insertions and deletions. A red-black tree and a Patricia-trie are instantiations/examples of a balanced tree.

A hash chain may be defined as a binary hash tree where all right children, i.e. children on the right side of any inner nodes, are leaf nodes.

Metadata may be generally defined as data that provides information about the respective accumulator element and its corresponding digest. The metadata comprises in particular accumulator information about the accumulator of the corresponding lower level accumulator of the hierarchical accumulator structure. In other words, it may be any data about the corresponding accumulator. As an example, the first level elements comprise metadata on the corresponding second level accumulator, the second level elements comprise metadata on the corresponding third level accumulator and so forth. The accumulator information may be in particular any data that can be used to compute and store the lower level accumulator in an advantageous way. The accumulator information may directly define an accumulator type for the corresponding lower level accumulators, it may comprise a data type of the data that is stored in the lower level accumulator and/or it may comprise information of write and/or read access patterns of the corresponding lower level accumulator. The metadata may then be used by the underlying processing system/computing system to compute and store the respective accumulator. Metadata may include data structure parameters, i.e. parameters on the structure of the data such as the accumulator type.

<FIG> shows a hierarchical accumulator structure <NUM> according to an embodiment of the invention which may be used for storing heterogeneous data. The hierarchical accumulator structure <NUM> may be in particular useful for facilitating an efficient authentication and/or signing of the heterogeneous data, in particular of selected parts of the heterogeneous data. The hierarchical accumulator structure <NUM> establishes a canonical representation which is universally understandable across representations.

The hierarchical accumulator structure <NUM> comprises a first level L<NUM>, a second level L<NUM>, a third level L<NUM> and a fourth level L<NUM>. The first level L<NUM> comprises a first level accumulator ACCL1 and the second level comprises a plurality of second level accumulators, more particularly the second level accumulators ACCL21, ACCL22 and ACCL23.

The first level accumulator ACCL1 encompasses a plurality of first level elements, namely the first level element E<NUM>, E<NUM> and E<NUM>, and a first level digest D<NUM> of the plurality of first level elements E<NUM>, E<NUM> and E<NUM>.

Each of the plurality of second level accumulators ACCL21, ACCL22 and ACCL23 encompasses a plurality of second level elements. More particularly, the second level accumulator ACCL21 comprises the second level elements E<NUM>, E<NUM> and E<NUM>. The second level accumulator ACCL22 comprises the second level elements E<NUM> and E<NUM>. The second level accumulator ACCL23 comprises the second level elements E<NUM> and E<NUM>. Furthermore, each of the plurality of second level accumulators comprises a second level digest of the plurality of second level elements. More particularly, the second level accumulator ACCL21 comprises the second level digest D<NUM>, the second level accumulator ACCL22 comprises the second level digest D<NUM> and the second level accumulator ACCL23 comprises the second level digest D<NUM>.

Each of the second level digests of the plurality of second level accumulators corresponds to one of the plurality of first level elements. More particularly, the second level digest D<NUM> of the second level accumulator ACCL21 corresponds or in other words is equal to the first level element E<NUM>. The second level digest D<NUM> of the second level accumulator ACCL22 corresponds or in other words is equal to the first level element E<NUM>. And the second level digest D<NUM> of the second level accumulator ACCL23 corresponds or in other words is equal to the first level element E<NUM>.

The third level L3 and the fourth level L4 are arranged in a corresponding manner. More particularly, the third level L3 comprises the third level accumulators ACCL31, ACCL32, ACCL33 and ACCL34 and the fourth level L4 comprises the fourth level accumulator ACCL41.

The third level accumulator ACCL31 comprises the third level elements E<NUM>, E<NUM>, E<NUM> and E<NUM>. The third level accumulator ACCL32 comprises the third level elements E<NUM> and E<NUM>. The third level accumulator ACCL33 comprises the third level elements E<NUM> and E<NUM>. And the third level accumulator ACCL34 comprises the third level elements E<NUM>, E<NUM> and E<NUM>. The third level accumulator ACCL31 comprises the third level digest D<NUM>, the third level accumulator ACCL32 comprises the third level digest D<NUM>, the third level accumulator ACCL33 comprises the third level digest D<NUM> and the third level accumulator ACCL34 comprises the third level digest D<NUM>. Each of the third level digests of the plurality of third level accumulators corresponds to one of the plurality of second level elements. As an example, the third level digest D<NUM> of the third level accumulator ACCL31 corresponds or in other words is equal to the second level element E<NUM>.

Finally, the fourth level accumulator ACCL41 comprises the fourth level elements E<NUM> and E<NUM> and the fourth level digest D<NUM>. The fourth level digest D<NUM> of the fourth level accumulator ACCL41 corresponds or in other words is equal to the third level element E<NUM>.

In general, at least a subset of the plurality of first level elements comprise metadata which comprises or defines accumulator information for the corresponding second level accumulator. More particularly, each of the first level elements which correspond to a digest of a second level accumulator comprises such metadata. In other words, each of the first level elements which are not a leaf comprise such metadata. In the exemplary embodiment shown in <FIG>, each of the first level elements comprise such metadata. The first level element E<NUM> comprises the metadata MD<NUM> which defines or comprises the accumulator information of the corresponding second level accumulator ACCL21. The first level element E<NUM> comprises the metadata MD<NUM> which defines or comprises the accumulator information for the corresponding second level accumulator ACCL22 and the first level element E<NUM> comprises the metadata MD<NUM> which defines or comprises the accumulator information of the corresponding second level accumulator ACCL23.

Likewise, a subset of the plurality of second level elements comprise metadata which comprises the accumulator information for the corresponding third level accumulator and a subset of the plurality of third level elements comprise metadata which comprises the accumulator information for the corresponding fourth level accumulator. More particularly, each of the second level elements which correspond to a digest of a third level accumulator comprises such metadata. In the embodiment of <FIG>, the second level elements E<NUM>, E<NUM>, E<NUM> and E<NUM> comprises metadata MD<NUM>, MD<NUM>, MD<NUM> and MD<NUM> respectively for the corresponding third level accumulators.

More particularly, the second level element E<NUM> comprises the metadata MD<NUM> which comprises the accumulator information for the corresponding third level accumulator ACCL31. The second level element E<NUM> comprises the metadata MD<NUM> with the accumulator information for the corresponding third level accumulator ACCL32, the second level element E<NUM> comprises the metadata MD<NUM> which comprises the accumulator information for third level accumulator ACCL33 and the second level element E<NUM> comprises the metadata MD<NUM> with the accumulator information for third level accumulator ACCL34. Finally, the third level element E<NUM> comprises the metadata MD<NUM> with the accumulator information for the corresponding fourth level accumulator ACCL41.

The metadata of the hierarchical data structure as shown in <FIG> allows to compute the corresponding second level, third level and fourth level accumulators in dependence on the respective accumulator information of the metadata. This allows to adapt the respective instantiation of the corresponding accumulators in dependence on the accumulator information. As a result, the hierarchical accumulator structure may compute different types of the accumulators in dependence on the corresponding metadata. Hence the hierarchical accumulator structure <NUM> may consist of a heterogeneous structure of a plurality of different types of accumulators, wherein the "interfaces" between these different accumulator types are established by the digests of the lower level accumulators and their corresponding edges of the higher level accumulators. The accumulators may be optimized in dependence on the metadata in many directions. Exemplary embodiments include an optimization in terms of small witness size, efficient updates, inserts and deletes as well as compact storage.

The hierarchical accumulator structure <NUM> allows to adapt a respective accumulator "on the fly", i.e. during operation, e.g. in dependence on the current data that is to be stored as well as in dependence on an analysis of write and/or read accesses. Such a dynamic adaptation may be a complete change of the accumulator type, e.g. from a red-black tree to a Patricia trie as well as an adaption of the respective instantiation of the respective accumulator type. Furthermore, such an adaptation may be done on an individual level, i.e. an adaption/change of the accumulator may be done only for one or a selected subset of the plurality of accumulators.

According to embodiments, the accumulators of the hierarchical accumulator structure <NUM>, e.g. the first level, second level, third level and/or fourth level accumulators may be embodied as cryptographic accumulators, in particular as hash trees.

According to embodiments the hash tree may represent the data as a balanced tree, a red-black tree, a Patricia trie or a hash chain. The concrete type of tree may be selected such that it makes certain processing operations such as the insertion, the update and the deletion on the underlying data type efficient.

<FIG> shows an exemplary embodiment of a computation of an accumulator ACCL21 of the hierarchical accumulator structure <NUM> of <FIG>.

For this example it is assumed that the metadata MD<NUM> comprises the information that the accumulator element E<NUM> and corresponding witnesses for the accumulator element E<NUM> are more often requested than the other accumulator elements E<NUM>/D<NUM> and E<NUM>/D<NUM>. Accordingly, the processing system stores the accumulator ACCL21 in such a way that it facilitates an efficient/improved access to the accumulator element E<NUM>, in particular in such a way that the witness size is reduced/minimized. In the embodiment of <FIG> it is assumed that the accumulator ACCL21 is stored as cryptographic accumulator, in particular as hash tree. As the metadata MD<NUM> specifies that witnesses for the accumulator element E<NUM> are often requested, the hash tree is computed in such a way that efficient witnesses may be computed. This can be achieved by placing the accumulator element E<NUM> on the highest level in the corresponding hash tree. A corresponding hash tree <NUM> is shown on the left side in <FIG>. A corresponding witness <NUM> comprises only the hash H1 of the hash tree <NUM>. Then, assuming that the digest D<NUM> of the hash tree <NUM> is known in a verifiable way, the accumulator element E<NUM> can be verified.

If on the contrary and in particular without the knowledge of the metadata MD<NUM> a hash tree <NUM> were computed, a witness would have a bigger size. More particularly, in the hash tree <NUM> the accumulator element E<NUM> is placed in the lowest level of the hash tree <NUM>. Accordingly, a corresponding witness <NUM> comprises the digests D<NUM> and D<NUM>, having a double witness size compared to the witness <NUM>.

<FIG> shows an exemplary embodiment of an accumulator of a hierarchical accumulator structure. More particularly, a canonical representation of an accumulator ACCXX, <NUM> is shown which represents a corresponding queue structure <NUM>. The accumulator ACCXX, <NUM> may be generally at any level and at any position of a respective level which is indicated by the subscript XX. The queue structure <NUM> may have a flexible number of elements which may change during its operation. In the shown example it assumed that the queue structure <NUM> has <NUM> elements EX1, EX2, EX3, EX4 and EX5. The underlying processing system may push elements into the queue structure <NUM> by push-operations and it may pull/pop elements out of the queue structure <NUM> by pull-operations or in other words pop-operations.

For this example it is assumed that the metadata MDXX of the accumulator <NUM> comprises the information that the accumulator <NUM> comprises or represents a queue structure as data type and that the accumulator <NUM> shall be computed as hash chain. <FIG> shows a corresponding hash chain <NUM>. The hash chain <NUM> comprises as leaves the accumulator elements or the hashes of the accumulator elements, wherein consecutive accumulator elements may be added by hashing its value or the hash of its value with the previous hash. In general, a hash chain may be defined as a binary hash tree where all right children/childrens on the right side are leaf nodes.

The hash chain <NUM> has a constant witness size of <NUM> for witnesses of the set of accumulator elements of the current queue structure <NUM>. More particularly, if the root hash, i.e. in the shown example the hash Hr=H<NUM> is known or can be received in a verifiable way, only the hash H<NUM> is needed as a witness <NUM> for the accumulator elements EX1, EX2, EX3, EX4 and EX5.

On the contrary and in particular without the knowledge of the metadata MDXX a hash tree <NUM> may have been computed which shows a balanced binary hash tree. Accordingly, a corresponding witness <NUM> comprises the accumulator element EX6 and the hash HX, having a double witness size compared to the witness <NUM>.

<FIG> illustrates an exemplary example of a push-operation of the queue structure <NUM> of <FIG>, more particularly an adding of an additional accumulator element EX6, resulting in a queue structure <NUM>, and an update of the corresponding hash chain <NUM>. Such an update can be done in a very efficient way. More particularly, the new accumulator element EX6 can just be added by computing a new root hash Hr/H<NUM>. Hence the specific accumulator type which has been computed as specified by the metadata provides not only advantages in terms of small witness sizes, but also in terms of efficient inserts.

<FIG> illustrates an exemplary example of a pop-operation of the queue structure <NUM> of <FIG>, more particularly a deletion or removal of the accumulator elements EX2 and EX1, resulting in a queue structure <NUM>, and an update of the corresponding hash chain <NUM>. Such an update can be done in a very efficient way. More particularly, the removed accumulator elements EX2 and EX1 can just be removed without any further computation. All that is needed is to keep the hash H<NUM>. Hence the specific accumulator type which has been computed as specified by the metadata provides not only advantages in terms of small witness sizes, but also in terms of efficient deletes.

Compared e.g. with the balanced tree <NUM> of <FIG>, this is much more efficient and in particular flexible. Assuming e.g. that for the balanced tree <NUM> more than <NUM> elements are needed, a complete recomputing of the hash tree would be needed, while as shown in <FIG>, the hash chain structure <NUM> would only need a single hash-computation.

<FIG> shows an exemplary embodiment of another accumulator instantiation of a hierarchical accumulator structure. More particularly, a canonical representation of an accumulator ACCXX, <NUM> is shown which represents a corresponding mapping <NUM>. The accumulator ACCXX, <NUM> may generally be at any level and at any position of a respective level which is indicated by the subscript XX. The mapping <NUM> maps as source elements the source pairs <NUM>, <NUM>, <NUM> and <NUM> to the accumulator elements EX1, EX2, EX3 and EX4 respectively as destination elements.

For this example it is assumed that the metadata MDXX of the accumulator <NUM> comprises as accumulator information the information that the accumulator <NUM> comprises or represents a mapping as data type. In addition, it may be specified as accumulator information that the accumulator <NUM> shall be computed/instantiated as Patricia-trie. Such a mapping performs generally a mapping between a set of source elements and a set of destination elements.

<FIG> shows a corresponding Patricia-trie <NUM>. The Patricia-trie <NUM> comprises as leaves the accumulator elements or the hashes of the accumulator elements and as labels of the edges the source elements of the mapping. Accordingly, the Patricia-trie <NUM> establishes a labelled tree. Such a labelled Patricia-tree facilitates an efficient addition of additional mapping pairs as is illustrated with the Patricia-trie <NUM>. The Patricia-trie <NUM> comprises only three mappings comprising the source elements <NUM>, <NUM>, <NUM> and the destination elements EX1, EX2 and EX4 respectively. In order to add another mapping pair comprising the source element <NUM> and the destination element EX3, only the root hash Hr and the hash H<NUM> needs to be updated in order to arrive at the Patricia-tree <NUM>.

<FIG> shows a block diagram of a processing system <NUM> according to an embodiment of the invention. The processing system <NUM> is adapted to process payloads, in particular a sequence of payloads. The processing system <NUM> comprises a processing unit <NUM> and a storage unit <NUM>. The processing unit <NUM> comprises an accumulator processing unit <NUM>. The accumulator processing unit <NUM> comprises an accumulator analysis unit <NUM> and an accumulator computational unit <NUM>. The storage unit <NUM> comprises an accumulator storage unit <NUM> for storing data in a hierarchical accumulator structure, as shown e.g. in <FIG>. The accumulator analysis unit <NUM> is in particular configured to perform an analysis of data that is stored in the accumulator storage unit <NUM> and/or that is retrieved from the accumulator storage unit <NUM>.

The accumulator computational unit <NUM> is in particular configured to perform a computation of the accumulators of the hierarchical accumulator structure in dependence on metadata of the respective accumulators.

<FIG> shows a flow chart <NUM> of methods steps of a computer-implemented method according to an embodiment of the invention. The method may be performed e.g. by the processing system <NUM> as shown in <FIG>.

At steps <NUM>, the processing unit <NUM> (regularly) computes payloads, in particular a sequence of payloads.

At a step <NUM>, the accumulator processing unit <NUM> of the processing unit receives a request/message/instruction to store data, in particular a computational result, in the accumulator storage unit <NUM> of the storage unit <NUM>. The accumulator computational unit <NUM> checks then, at a step <NUM>, the metadata and the accumulator information as specified by the metadata of the corresponding accumulator of the hierarchical accumulator structure.

Next, at a step <NUM>, the accumulator computational unit <NUM> computes the respective accumulator in dependence on the metadata and stores it in the accumulator storage unit <NUM> of the storage unit <NUM>. In addition to the computation of the respective accumulator, the accumulator computational unit <NUM> also computes any necessary updates of the hierarchical accumulator structure, i.e. in particular updates of other accumulators as required. Furthermore, it stores the updated accumulator/accumulator structure in the accumulator storage unit <NUM> of the storage unit <NUM>.

The computation and storage of data in the accumulator storage unit <NUM> may be denoted as write accesses, while reading out data from the accumulator storage unit <NUM> may be denoted as read access.

At steps <NUM>, the accumulator analysis unit <NUM> of the processing unit <NUM> analyses the computational results and/or write accesses/write access patterns to the accumulator storage unit <NUM> and/or read accesses/read access patterns from the accumulator storage unit <NUM>. The analysis of the write accesses encompasses e.g. the detection of accumulators as well as accumulator elements which are frequently updated. Likewise, the analysis of the read accesses encompasses e.g. the detection of accumulators as well as accumulator elements which are frequently read and for which e.g. witnesses are frequently requested.

At steps <NUM>, the processing system <NUM> may update the metadata of the hierarchical accumulator structure in dependence on the analysis of the computational results and/or the write access patterns and/or the read access patterns.

At steps <NUM>, the processing system <NUM> may update the hierarchical accumulator structure in dependence on the analysis of the computational results and/or the write access patterns and/or the read access patterns and/or the metadata. In particular, the first level accumulator, one or more of the plurality of second level accumulators and one or/more of the plurality of further level accumulators may be updated.

Referring now to <FIG>, a more detailed block diagram of a computing system <NUM> according to embodiments of the invention is shown. The computing system <NUM> may be configured to perform a computer-implemented method for storing data in a hierarchical accumulator structure.

The computing system <NUM> may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. The computing system <NUM> is shown in the form of a general-purpose computing device. The components of computing system <NUM> may include, but are not limited to, one or more processors or processing units <NUM>, a system memory <NUM>, and a bus <NUM> that couples various system components including system memory <NUM> to processor <NUM>.

Bus <NUM> represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.

Computing system <NUM> typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computing system <NUM>, and it includes both volatile and non-volatile media, removable and non-removable media.

System memory <NUM> can include computer system readable media in the form of volatile memory, such as random access memory (RAM) <NUM> and/or cache memory <NUM>. Computing system <NUM> may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system <NUM> can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus <NUM> by one or more data media interfaces. As will be further depicted and described below, memory <NUM> may include at least one computer program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.

Program/utility <NUM>, having a set (at least one) of program modules <NUM>, may be stored in memory <NUM> by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules <NUM> generally carry out the functions and/or methodologies of embodiments of the invention as described herein. Program modules <NUM> may carry out in particular one or more steps of a computer-implemented method for providing a user of a distributed network access to computational results computed by the distributed network, e.g. of one or more steps of the methods as described above.

Computing system <NUM> may also communicate with one or more external devices <NUM> such as a keyboard or a pointing device as well as a display <NUM>. Such communication can occur via Input/Output (I/O) interfaces <NUM>. Still yet, computing system <NUM> can communicate with one or more networks <NUM> such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter <NUM>. According to embodiments the network <NUM> may be in particular a distributed network comprising a plurality of network nodes <NUM>, e.g. the network <NUM> as shown in <FIG>. As depicted, network adapter <NUM> communicates with the other components of computing system <NUM> via bus <NUM>. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computing system <NUM>.

Aspects of the present invention may be embodied as a system, in particular a distributed network comprising a plurality of subnets, a method, and/or a computer program product.

Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, networks, apparatus (systems), and computer program products according to embodiments of the invention.

Computer readable program instructions according to embodiments of the invention may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of networks, systems, methods, and computer program products according to various embodiments of the present invention.

Claim 1:
A computer-implemented method for storing data, the method comprising
storing the data in a hierarchical accumulator structure (<NUM>), the hierarchical accumulator structure (<NUM>) comprising at least a first level (L1) and a second level (L2), wherein
the first level (L1) comprises a first level accumulator and the second level (L2) comprises a plurality of second level accumulators;
the first level accumulator encompasses a plurality of first level elements and a first level digest of the plurality of first level elements; characterized in that
each of the plurality of second level accumulators encompasses a plurality of second level elements and a second level digest of the plurality of second level elements;
each of the second level digests of the plurality of second level accumulators corresponds to one of the plurality of first level elements; and
a subset of the plurality of first level elements comprises metadata, the metadata comprising accumulator information for the corresponding second level accumulator; wherein storing the data comprises
computing the plurality of second level accumulators in dependence on the respective accumulator information of the metadata of the first level elements.