Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

Action — A single transaction recipe in a manifest: its inputs, outputs, and the witnesses each input supplies. An action inside a contract template is identical to a top-level one, except that its formulas may also reference instance.*.

allow_change — An action's bound on undeclared change: "none" (the default), "lbtc_only", or "any". Every output a transaction carries must be written in the manifest; the network fee is the one exception.

Blinding factor — The 32-byte scalar hiding an asset or an amount in a confidential output. An output's blinding block pins what the builder would otherwise pick at random — needed by any covenant that verifies its own UTXOs as Pedersen commitments.

CMR (Commitment Merkle Root) — The 32-byte hash of a compiled Simplicity program. Doubles as the program's on-chain identity.

Compute spec — How a param's value is produced instead of being prompted for: a bare formula string, or a structured expr, tapleaf, script_hash, wallet, simf_fn or hook.

Contract template — A typed contract definition with named fields and actions, under the top-level contract_templates map. Each deployment of a template is one instance, with its own field values.

Constructor — An action carrying a create_instance block, which creates a new instance when it runs. There is no separate flag: the block is what makes the action a constructor, and it is only legal inside a contract template.

Covenant — A script that constrains how its output may be spent — e.g. by introspecting the spending transaction's inputs and outputs.

debug_symbols — The simplicity_hl flag deciding whether covenants compile with debug information. It changes every program's CMR, and therefore every address derived from it, so two tools that disagree about it see different contracts.

Field — A contract template's compile-time value, baked into a covenant script at deploy time and stored per deployment as part of the instance. Changing one changes the script's address. Referenced as instance.NAME.

Instance — The field values of one deployment of a contract template. A wallet must keep them: without them it cannot rebuild the contract's addresses.

Manifest — The static JSON protocol definition (txmanifest.json).

NUMS point — "Nothing Up My Sleeve" — a public key with no known private key, used as a Taproot internal key to make the key-path provably unspendable.

Param — An action's runtime value: prompted for, computed, or set by a hook. It affects only the transaction being built, never an address. Referenced as params.NAME. params is the only runtime value namespace.

provided_inputs — UTXOs pre-filled alongside an instance, letting a wallet spend a counterparty's output it never indexed.

PSET — Partially Signed Elements Transaction (the Elements equivalent of a PSBT).

State — The live on-chain UTXO set for one instance, updated after every broadcast. How a wallet stores it is its own business; the format only requires that it survives between actions.

Tapleaf compute spec — A compute spec ("type": "tapleaf") that compiles a .simf file with params to produce a covenant script hash.

UTXO type — A named on-chain state with a known script, so a wallet can recognise the protocol's outputs.

Witness — A value supplied to satisfy a Simplicity program when spending: a signature, a path selector, a leaf selector, or a computed value. Witnesses are declared on the input whose script they satisfy.

$comment / $schema — Authoring keys, legal on any object at any depth and carrying no protocol meaning. A tool strips both before interpreting a manifest.