Orgchain v1.14: soulbound belts ride their seats' sats
A belt is soulbound: the reducer already bound it to the seat it names, and now the lab inscribes it on that seat's own sat, so by ordinal theory it goes wherever the seat goes and never sells apart from it. One reveal carries an award, three coins in: the seat's, which the pointer puts the belt in and the seat's own key signs, accepting it; the issuer's, the parent; and the commit, which pays the fee. Both coins come back unchanged, so an award needs no postage and costs two fees (1,000 sats). ord marks it a reinscription and vindicated, since a pointer and an envelope past the first input would have cursed it before the jubilee. The engine takes that three-input reveal and nothing looser: the parent spent from the inscriber's key, both coins returned unchanged, the pointer on an inscribed sat of the first. A belt is never a lot, and an award can't land in a tree that is listed or sold. Trees count and split by inscribed sat, so a seat's belts stay on it through every sale. Inspect shows a node's belts and ord's charms, and the award form says whose sat the belt will ride. Belts from before v1.14 stay with their issuers and count the same. Rehearsed on Bitcoin Core regtest from height 161: sixteen beats and 131 transactions; ord charms the three belts as the lab does, and after two whole-tree sales each belt shares its seat's satpoint. The compare now checks satpoints and charms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
This commit is contained in:
1 parent
74ed801176
commit
c8c18b073e
18 files changed
+368
-107
No files matched your search
@@ -51,7 +51,12 @@ test('real ord indexed the regtest rehearsal, and the same reducer folds it into
|
||||
// keys). Only the miner's order within blocks differs, a join and its adoption included.
|
||||
const { problems, reordered } = compareWithLab({ chain: new LocalChain(fixture.chain) }, events);
|
||||
assert.deepEqual(problems, []);
|
||||
assert.equal(reordered, 17);
|
||||
assert.equal(reordered, 15);
|
||||
// Belts ride their seats' own sats: on ord, each award shares its recipient's satpoint, through both trees' sales and
|
||||
// their splits, and is marked ♻️ reinscription (and ❤️🔥 vindicated: it was inscribed from the reveal's third input).
|
||||
const on = new Map(events.map(e => [e.id, e]));
|
||||
assert.deepEqual(s.log.filter(e => e.op === 'award').map(e => [s.nodes.get(e.meta.to).name, on.get(e.id).satpoint === on.get(e.meta.to).satpoint, on.get(e.id).charms]),
|
||||
[['sol', true, ['reinscription', 'vindicated']], ['luna', true, ['reinscription', 'vindicated']], ['scout', true, ['reinscription', 'vindicated']]]);
|
||||
});
|
||||
|
||||
test('a reveal commits to its exact script (BIP-341), and the lab still loads reveals made the old way', () => {
|
||||
|
||||
Reference in new issue
Block a user