Module Make.Proof

type merkle_leaf_kind =
  1. | Hole
  2. | Raw_context
type merkle_hash_kind =
  1. | Contents
  2. | Node
type merkle_node =
  1. | Hash of merkle_hash_kind * string
  2. | Data of raw_context
  3. | Continue of merkle_tree
val pp_raw_context : Stdlib.Format.formatter -> raw_context -> unit
type step = string
type value = bytes
type index = int
type !'a inode = {
  1. length : int;
  2. proofs : (index * 'a) list;
}
type !'a inode_extender = {
  1. length : int;
  2. segment : index list;
  3. proof : 'a;
}
type tree =
  1. | Value of value
  2. | Blinded_value of hash
  3. | Node of (step * tree) list
  4. | Blinded_node of hash
  5. | Inode of inode_tree inode
  6. | Extender of inode_tree inode_extender
and inode_tree =
  1. | Blinded_inode of hash
  2. | Inode_values of (step * tree) list
  3. | Inode_tree of inode_tree inode
  4. | Inode_extender of inode_tree inode_extender
type kinded_hash = [
  1. | `Node of hash
  2. | `Value of hash
]
module Stream : sig ... end

Stream proofs represent an explicit traversal of a Merle tree proof. Every element (a node, a value, or a shallow pointer) met is first "compressed" by shallowing its children and then recorded in the proof.

type stream = Stream.t
type !'a t = {
  1. version : int;
  2. before : kinded_hash;
  3. after : kinded_hash;
  4. state : 'a;
}
module Internal_for_tests : sig ... end
val proof_hash_eq : 'a t -> 'b t -> bool