LeafOp represents the raw key-value data we wish to prove, and must be flexible to represent the internal transformation from the original key-value pairs into the basis hash, for many existing merkle trees.

key and value are passed in. So that the signature of this operation is: leafOp(key, value) -> output

To process this, first prehash the keys and values if needed (ANY means no hash in this case): hkey = prehashKey(key) hvalue = prehashValue(value)

Then combine the bytes, and hash it output = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue)

interface LeafOp {
    hash: HashOp;
    length: LengthOp;
    prefix: Uint8Array;
    prehashKey: HashOp;
    prehashValue: HashOp;
}

Properties

hash: HashOp
length: LengthOp
prefix: Uint8Array

prefix is a fixed bytes that may optionally be included at the beginning to differentiate a leaf node from an inner node.

prehashKey: HashOp
prehashValue: HashOp