InnerSpec contains all store-specific structure info to determine if two proofs from a given store are neighbors.

This enables:

isLeftMost(spec: InnerSpec, op: InnerOp) isRightMost(spec: InnerSpec, op: InnerOp) isLeftNeighbor(spec: InnerSpec, left: InnerOp, right: InnerOp)

interface InnerSpecAmino {
    child_order?: number[];
    child_size?: number;
    empty_child?: string;
    hash?: HashOp;
    max_prefix_length?: number;
    min_prefix_length?: number;
}

Properties

child_order?: number[]

Child order is the ordering of the children node, must count from 0 iavl tree is [0, 1] (left then right) merk is [0, 2, 1] (left, right, here)

child_size?: number
empty_child?: string

empty child is the prehash image that is used when one child is nil (eg. 20 bytes of 0)

hash?: HashOp

hash is the algorithm that must be used for each InnerOp

max_prefix_length?: number
min_prefix_length?: number