examples: port cat_v2 as the marked asset layer - #8
Conversation
The CAT port under the committed leaf layout, with the per-holder wrapping kept: a holder's leaf is the shared asset body applied to the holder's quoted inner program, so the serialization splits into a shared PREFIX, the holder's SINNER and a constant suffix, and members rebuild each other's output keys from the revealed prefix the way the source rebuilds curried puzzle hashes. The committed PREFIXLEN pins the split, the contrast section demonstrates the boundary shift mint it closes. Conservation replaces the announcement ring with the transaction boundary: member outputs are marked by odd amounts, every odd output is claimed as a member or disclaimed by revealing its taproot preimage, and each asset's inputs must equal its outputs unless the revealed issuance program approves. The ported issuance program is genesis_by_coin_id, refusing every nonzero delta, so supply is fixed at the one transaction consuming the committed GENESIS outpoint. The disclaimer partition lets two assets share a transaction, the cross-asset swap in context H. Every context is a real spend validated through the spend command, regeneration is a byte comparison via gen-test-context.py cat with the --check comparison generalized over both marked targets.
Items 18 through 22: the shared prefix commitment recipe and its canonical split, provable non-membership as the composition mechanism, the locked supply consequences, foreign output key parity as witness data, and the muladd verdict convention.
The generator asserts the wrap byte split by serializing the whole wrapper around the compiled body, pins RD1's accept and out of range behaviors, the leftover output claim refusal, the non-minimal index re-encoding, and every holder's leaf rebuild, and the swap context gains two odd bystanders exercising the disclaimer's other shapes, a bll leaf far shorter than the committed length and a tapscript leaf behind a one sibling merkle path. The contrast section now exhibits the mint itself: a transaction paying the supply to a leaf that is the shortened prefix followed by an inner program the asset never admitted, vetted by the check-free body and refused by the committed one. Comment corrections: the CAT2 hash pin is a sibling conjunct, not a read ordering gate, the asserted leaf bound is [253, 0x7fff] and now covers the frozen and mint leaves, SOLELEAF joins SIGNMSG in deviation 10's dead bytes exception, the lineage claim helper delegates to the input claim form, and the stale generator docstring and the Chia terms outside the fidelity header are cleaned up.
|
Converting to draft. The port is reviewed and green, but the odd-amount membership marking forces plain payments and change beside a CAT onto an even-amount convention, a constraint the CLVM source does not have. Chia attributes outputs structurally through coin ids and the announcement ring, so bystander amounts are unconstrained there. Parked until the marking layer is redesigned. Candidate directions, smallest change first: a signed keypath disclaimer so cooperative odd bystanders can coexist, or an explicit member-set commitment output that removes amount marking entirely, with membership checked against the parent's committed set through the existing whole-transaction lineage reveal. See notes/b4-gaps.md items 17 and 19 for the recorded residue. |
B4 unit 3: the CAT v2 port under the committed leaf layout, per-holder wrapping kept.
The design in brief:
Contexts A through L cover the genesis spend, ancestry transfer, split, merge across both proof paths, the diamond child, the boundary shift refusal, unclaimed and uncoverable odd outputs, the swap with its refusals, the even payment freeze, both nonzero delta refusals, the unbacked donation, and the frozen SINNER, each validated through the spend command before emission. A differential section replays context B through the symbolic evaluator and the closing contrast section shows the PREFIXLEN clause is load bearing.
Findings recorded as b4-gaps items 18 through 22.