summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ht.erl22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/ht.erl b/src/ht.erl
index 9e99d16..0ef95fe 100644
--- a/src/ht.erl
+++ b/src/ht.erl
@@ -1,3 +1,25 @@
+%%%
+%%% Implementation of a history tree similar to what is described in
+%%% Efficient Data Structures for Tamper-Evident Logging [0]. This
+%%% implementation follows RFC 6962 and differs from [0] only in how
+%%% non-full trees are handled.
+%%%
+%%% Useful terminology:
+%%% C -- Commitment.
+%%% X -- Event, stored in leaf nodes.
+%%% I(i,r) -- Interior node with index i, on layer r.
+%%% A(v)(i,r) -- Hash of I(i,r) in tree of version v.
+%%% d -- Depth of tree.
+%%%
+%%% Nodes are identified by their index i and layer r.
+%%% I(i,r) has left child I(i,r-1) and right child I(i+2^(r-1),r-1).
+%%%
+%%% A version-n tree stores n+1 events.
+%%% In a version-n tree, I(i,r) is frozen when n >= i + 2^r - 1.
+%%%
+%%% [0] https://www.usenix.org/event/sec09/tech/full_papers/crosby.pdf
+%%%
+
-module('ht').
-include_lib("eunit/include/eunit.hrl").