Skip to content

fix(overlay-topics): reject unlinked Mandala token outputs; release 1.7.3 - #535

Merged
sirdeggen merged 2 commits into
bsv-blockchain:mainfrom
sirdeggen:fix/mandala-unlinked-token-reject
Sep 15, 2026
Merged

sirdeggen merged 2 commits into
bsv-blockchain:mainfrom
sirdeggen:fix/mandala-unlinked-token-reject

Conversation

@sirdeggen

Copy link
Copy Markdown
Contributor

Summary

Two things, both for @bsv/overlay-topics:

  1. Reject, never skip, a token output without a verified linkage. verifyFtOutputs used to continue past a MandalaToken-shaped output whose linkage was missing, verified to a different key, or could not be opened, and conservationHolds summed only the admitted subset. A transaction could therefore carry an extra token output of any value, still have its siblings admitted, receive the admission signature and be broadcast: a phantom coin mined inside an attested transaction, which an offline verifier that stops its coverage walk at "this txid was admitted" then credits. Such an output now rejects the whole transaction with output N: MandalaToken-decodable output with no verified linkage (wire contract §6, byte-identical to the Go engine). Plain non-token outputs are unaffected.
  2. Release 1.7.3. fix(overlay-topics): anchor the Mandala admin chain and name spenders from state #532 merged before its version bump landed, so main still says 1.7.2. This carries the bump (package.json, health baseline, release notes, package docs, stack facts, API migrations) covering fix(overlay-topics): anchor the Mandala admin chain and name spenders from state #532 and this fix.

Tests

  • UnlinkedTokenOutput.test.ts: fully linked transfer admits; one unlinked sibling rejects; wrong-party linkage rejects; malformed linkage rejects; plain change output is outside the rule; reason string pinned.
  • mandala.test.ts: the former "does not admit FT outputs lacking valid linkage" now asserts the rejection.
  • Topics package: 71 Mandala tests green; lint and typecheck clean; docs:facts:check and the governance/documentation health tests pass.

🤖 Generated with Claude Code

sirdeggen and others added 2 commits September 15, 2026 15:48
Bumps @bsv/overlay-topics to 1.7.3 for the Mandala admin-chain anchoring and
spender-identity fixes, with the governed release notes, health baseline and
package documentation (docs page, stack facts, API migrations) updated to
match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 7a4ffc6fc7a14e4cda2b91f72d04655f28ef7b1f)
…ed linkage

verifyFtOutputs skipped a MandalaToken-shaped output whose linkage was
missing, mismatched or unreadable, and conservationHolds summed only the
admitted subset. A transaction could therefore carry an extra token output of
any value, still have its siblings admitted, receive the overlay's admission
signature and be broadcast: a phantom coin mined inside an attested
transaction, credited by any offline verifier that stops its coverage walk at
"this txid was admitted".

Such an output now rejects the whole transaction with
"output N: MandalaToken-decodable output with no verified linkage" (wire
contract §6), byte-identical to the Go engine. Plain non-token outputs are
unaffected.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@sirdeggen
sirdeggen merged commit d467d83 into bsv-blockchain:main Sep 15, 2026
10 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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