Hashtree Plugin for Virtual Monotonic Counters

This plugin implements the hashtree implementation for virtual monotonic counters, as described in the following paper:

This implementation was written by Stephen Tate (2012), and there are a few differences from Sarmenta et al.'s 2006 paper. The most significant is that we allow dynamic growth in the number of counters - the original paper stated that the size (height) of the hashtree is set at the beginning, and while subtrees (or the whole tree) can be RESET, it's not possible to change the size of the tree. We use two different counter creation commands, CREATE and REUSE, to distinguish between adding a new counter - which may be outside of the current hashtree size - and reusing one that is within the currently defined hashtree. When CREATE is used and the counter number exceeds the size of the current hash tree, an extra level is added to the tree, with the current tree becoming the left subtree of the new tree.

Another enhancement is that we allow the user to retrieve a signed copy of the hashtree's root hash. This allows us to batch virtual monotonic counter attestations, significantly increasing throughput, as described in this paper:

Downloads