module arch.system.state.resource_machine.primitive_interfaces.index;
Primitive interfacesΒΆ
This section defines the hierarchy of primitives used in resource machine design and describes interfaces for each primitive.
The diagram below illustrates the primitive types required for resource machine. Red nodes correspond to primitive interfaces, green nodes correspond to instantiations of the interfaces. Each primitive instantiation has an associated type, e.g. delta hash instantiation of Hash interface has an associated type DeltaHash. Primitive instantiations' names are derived from the type name but written in lower camel case, e.g., for DeltaHash the corresponding function would be deltaHash(..).
flowchart LR
    ProvingSystem
    Set --> OrderedSet
    Map --> MapInstance
    CommitmentAccumulator --> CommitmentAccumulatorInstance
    NullifierSet --> NullifierSetInstance
    OrderedSet --> OrderedSetInstance
    Set --> SetInstance
    style SetInstance fill:transparent
    style OrderedSetInstance fill:transparent
    style MapInstance fill:transparent
    style CommitmentAccumulatorInstance fill:transparent
    style NullifierSetInstance fill:transparent
    ProvingSystem --> ComplianceProvingSystem
    ProvingSystem --> ResourceLogicProvingSystem
    ProvingSystem --> IDeltaProvingSystem
    IDeltaProvingSystem --> DeltaProvingSystem
    style ComplianceProvingSystem fill:transparent
    style ResourceLogicProvingSystem fill:transparent
    style DeltaProvingSystem fill:transparentflowchart LR
    FixedSize --> Arithmetic
    FixedSize --> Hash
    FixedSize --> Nonce
    FixedSize --> RandSeed
    FixedSize --> NullifierKeyCommitment
    FixedSize --> NullifierKey
    style Nonce fill:transparent
    style RandSeed fill:transparent
    style NullifierKey fill:transparent
    style NullifierKeyCommitment fill:transparent
    Arithmetic --> Quantity
    Arithmetic --> Balance
    Arithmetic --> DeltaHash
    style Quantity fill:transparent
    style Balance fill:transparent
    style DeltaHash fill:transparent
    Hash --> LogicHash
    Hash --> LabelHash
    Hash --> ValueHash
    Hash --> DeltaHash
    Hash --> Commitment
    Hash --> Nullifier
    Hash --> Kind
    Hash --> LogicRefHash
    Hash --> MerkleTreeNodeHash
    style LogicHash fill:transparent
    style LabelHash fill:transparent
    style ValueHash fill:transparent
    style DeltaHash fill:transparent
    style Commitment fill:transparent
    style Nullifier fill:transparent
    style Kind fill:transparent
    style LogicRefHash fill:transparent
    style MerkleTreeNodeHash fill:transparent
    Hash --> AppDataValueHash
    style AppDataValueHash fill:transparent