Module akd::tree_node

source ·
Expand description

The implementation of a node for a history patricia tree

Structs

Wraps the label with which to find a node in storage.
A TreeNode represents a generic node of a Merkle Patricia Trei with ordering. The main idea here is that the tree is changing at every epoch and that we do not need to touch the state of a node, unless it changes. The leaves of the tree represented by these nodes is supposed to allow for a user to monitor the state of a key-value pair in the past. We achieve this by including the epoch a leaf was added as part of the hash stored in it. At a later time, we may need to access older sub-trees of the tree built with these nodes. To facilitate this, we require this struct to include the last time a node was updated as well as the oldest descendant it holds.
Represents a TreeNode with its current state and potential future state. Depending on the epoch which the Directory believes is the “most current” version, we may need to load a slightly older version of the tree node. This is because we can’t guarantee that a “publish” operation is globally atomic at the storage layer, however we do assume record-level atomicity. This means that some records may be updated to “future” values, and therefore we might need to temporarily read their previous values.

Enums

There are three types of nodes: root, leaf and interior. This enum is used to mark nodes using the node_type variable of a TreeNode.

Functions

Create an empty root node.
Create a specific leaf node.