Skip to content

CIP-0160, CIP-0019 | Specify per-output Receiving and protected addresses - #1

Open
colll78 wants to merge 2 commits into
masterfrom
codex/cip-160-receiving-contract
Open

colll78 wants to merge 2 commits into
masterfrom
codex/cip-160-receiving-contract

Conversation

@colll78

@colll78 colll78 commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

Specify one Receiving execution for every protected Plutus output. Each output uses its original body-local index, its own redeemer and execution budget, and a context containing the indexed output. Same-hash and byte-identical outputs remain separate executions; parent and child bodies remain isolated. Protected key and native destinations retain their existing authorization rules.

This is our proposed implementation decision, supported by the CIP's per-output validation wording and lehins's resolved-TxOut discussion. The exact index representation and Data fields still require upstream review.

The amendment also specifies payment-header bit 0x08, base/enterprise protection, Receiving tag 7 alongside Guarding tag 6, protected collateral-return rejection, legacy-language visibility, and collateral-only failure behavior. CIP-19 includes twelve address vectors. Dijkstra/V4 activation remains subject to agreement and format availability.

Evidence

GitHub Actions runs in this fork. Earlier upstream CI links are historical evidence.

  • Receiving uses Constr 7 [scriptHash, originalOutputIndex]; ReceivingScript uses Constr 7 [originalOutputIndex, resolvedOutput].
  • Patch applicability and whitespace checks pass. The address encoding retains the independently validated twelve vectors.
  • Revised implementation and validation are underway in ledger #1, Plutus #1, and formal ledger #1.

Merge Danger

Door: two-way before activation

Blast Radius: protocol

Address consumers, ledger contexts, validators and builders must agree on the proposed formats. The V4 Address schema change requires an unfrozen language version and coordinated activation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant