Skip to content

examples: port cat_v2 as the marked asset layer - #8

Draft
EvanWinget wants to merge 3 commits into
masterfrom
b4-cat
Draft

examples: port cat_v2 as the marked asset layer#8
EvanWinget wants to merge 3 commits into
masterfrom
b4-cat

Conversation

@EvanWinget

Copy link
Copy Markdown
Owner

B4 unit 3: the CAT v2 port under the committed leaf layout, per-holder wrapping kept.

The design in brief:

  • 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 four byte suffix. Members rebuild each other's output keys from the revealed prefix, the port's form of curried puzzle hash reconstruction under a flat leaf hash. The committed PREFIXLEN makes the split canonical, and the contrast section demonstrates the boundary shift mint that opens without it.
  • Conservation replaces the announcement ring with the transaction boundary. Member outputs carry odd amounts, every odd output is either claimed as a member or disclaimed by revealing its taproot preimage and showing it is foreign, and each asset's claimed inputs must equal its odd outputs unless the revealed issuance program approves the delta.
  • The issuance program is genesis_by_coin_id's port, refusing every nonzero delta, so supply is fixed by the one transaction that consumes the committed GENESIS outpoint.
  • The disclaimer partition composes assets: context H is a two-asset atomic swap validated on both inputs, the shape the offer flow unit needs.

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.

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.
@EvanWinget
EvanWinget marked this pull request as draft July 26, 2026 15:21
@EvanWinget

Copy link
Copy Markdown
Owner Author

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.

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