Covenant UTXO types
📝 Draft. This chapter has not been reviewed yet — content may be incomplete or change.
Problem. Define an on-chain state whose address is a Taproot output built from one or more Simplicity programs.
🚧 This recipe is a stub. Outline of what it will cover:
- The
scriptblock as the tool reads it:type: "simplicity", asourcepath to the.simffile, and acompile_paramsmap wiring manifest params onto the program'sparam::*names (e.g.{ "PUB_KEY": "PUBKEY" }).- How the tool turns that into an address: compile the
.simf→ CMR → a Taproot output with aNUMSinternal key, so the key-path is unspendable and every spend goes through the script.- Covenant address determinism: same
.simf+ same params + samedebug_symbols→ same address, always. TheP2TR(NUMS, tapbranch(...))construction.paramson the type andargsat each site: closing a UTXO type's scope so its address derivation reads only what it declares.extra_leavesfor appending additional taproot leaves.
In the meantime, UtxoType and UtxoScript
in the field reference list every key, and
examples/last_will
is the smallest covenant with more than one leaf.