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.canonical_cmr: the CMR with params zeroed โ a stable identifier a wallet uses to recognize the program independent of instance parameters.- Covenant address determinism: same
.simf+ same params โ same address, always. TheP2TR(NUMS, tapbranch(...))construction.extra_leavesfor appending additional taproot leaves.
See Spec.md ยง14 "Covenant Address Determinism"
in the meantime.