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
7.8 KiB
Provenance
Reviewed 2026-10-04 against the exact upstream revisions below. Upstream repositories were inspected outside this worktree; only the small adaptations identified here were imported. Original adapter/UI code is distinct from the upstream projects and is not endorsed by their authors.
| Upstream | Revision | License | Use in v0 |
|---|---|---|---|
| supertestnet/testnet_generator | 498be4cc775ef18e7ff17357d007918518f47b98 |
CC0-1.0 | getVin/getVout object helpers from index.html adapted into src/upstream/primitives.js; converted to ES exports, explicit scripts, explicit final sequence. Inspiration for browser-owned UTXO chain, immediate 50-coin reward, button mining and integrated explorer. The upstream consensus/Script engine and relay system are not imported. |
| supertestnet/inscriptions-online | 470b8bdf29ead319cff9dc119a005cbf58ee598c |
CC0-1.0 | index.html ord envelope array adapted in src/adapters/inscription.js. Modern tapscript API, locally extended with MIME/byte payloads, explicit data-push encoding, 16 KiB cap, tag-3 parent serialization, parent-preserving child reveals and repeated tag-5 CBOR metadata fields. Single commit/reveal, same-wallet destination, no external broadcast or fee services. These extensions and the safe preview UI are original local adapter code. |
| supertestnet/vanilla-js-browser-wallet | 19ae5097f4645bf5b1103a39abc04155a8b072fc |
CC0-1.0 | Conceptual inspiration for minimal vanilla-JS wallet and local signing. No copied implementation. |
| supertestnet/node_faker | 2fae6056a7e93322a00a4150468934542ddc937d |
CC0-1.0 | Evaluated, not imported: its bitcoind-like API obtains data through Electrum connections. That introduces an unnecessary external backend for the self-contained v0. LocalRPC is a new, intentionally partial in-process read facade, not a claim of node_faker compatibility. |
The upstream CC0 legal text is retained unchanged at public/licenses/supertestnet-CC0.txt. Source comments identify the exact adapted code and revisions.
Runtime dependencies are pinned in package.json and package-lock.json:
- @cmdcode/tapscript 1.5.3, Christopher Scott, upstream, CC-BY-1.0. Used for transaction encoding, signing/verification, Taproot commitments and addresses, and the BIP-143 digests and signatures of SegWit payments. Installed package license retained unchanged at
public/licenses/tapscript.txt. Library source is unmodified; Vite bundles/minifies it for the browser. - @noble/curves 1.9.7, Paul Miller and contributors, upstream, MIT. Used for key generation/validation and public keys, to verify the low-S DER signatures of SegWit payments, and to make and check keyrings' proofs (BIP-340, low-S ECDSA, and the public-key recovery EIP-191 relies on): secp256k1 for chain, nostr and Ethereum keys, Ed25519 and X25519 for lineage's leaves. License retained at
public/licenses/noble-curves.txt. - @noble/hashes 1.8.0, Paul Miller and contributors, upstream, MIT. Used for synthetic block hashes, BIP-85's HMAC, the leaves' HKDF-SHA256, the RIPEMD-160 of P2WPKH key hashes, the tagged hashes of BIP-322, and the Keccak-256 of Ethereum addresses (EIP-55) and EIP-191. License retained at
public/licenses/noble-hashes.txt. - @scure/base 1.2.6, Paul Miller, upstream, MIT. Used for bech32 npubs, base64 leaf keys, and the bech32 and bech32m addresses and base64 BIP-322 signatures in keyrings. License retained at
public/licenses/scure-base.txt. - @scure/bip32 1.7.0, Patricio Palladino and Paul Miller, upstream, MIT. Used for HD derivation under the BIP-85, BIP-86, BIP-84, NIP-06 and BIP-44 Ethereum paths. License retained at
public/licenses/scure-bip32.txt. - @scure/bip39 1.6.0, Patricio Palladino and Paul Miller, upstream, MIT. Used for the 24-word lab roots and their seeds. License retained at
public/licenses/scure-bip39.txt.
Six local changes to the engine, all original code in src/adapters/chain.js, tested in tests/money.test.js unless noted, with Super Testnet's tests (tests/adapters.test.js) passing unchanged. Orgchain v1.5: the chain also accepts native SegWit (P2WPKH) outputs and SIGHASH_ALL P2WPKH spends, verified per BIP-143, so lineage accounts can hold and send test BTC at their BIP-84 addresses; everything about inscriptions stays Taproot-only. Orgchain v1.6: a coinbase may split the block reward across up to 64 outputs (mineTo; mine still pays one script), so one beat can pay several holdings. Orgchain v1.7: ordinary (non-reveal) spends may take up to eight inputs and outputs (MAX_IO), and their key-path Taproot signatures may carry SIGHASH_SINGLE|ANYONECANPAY (0x83, the sell-order flag), so one transaction can carry a deal: an item, the buyer's coins, the price and change. Reveals keep their two-in, two-out shape and default signatures. Orgchain v1.13 raised MAX_IO to 64, so a whole tree can travel in one transaction. Orgchain v1.9: a chain may start from coins imported from a real chain (importCoin; MetadataIndex numbers their sats the same way, importRanges in src/adapters/sats.js), so the regtest rehearsal can broadcast the lab's transactions byte for byte; and a reveal's script path is checked per BIP-341 and BIP-342 against the exact script bytes (tapscriptValid), with tapscript's own check kept as a fallback so labs saved earlier still load. That rehearsal also found that the inscription adapter (src/adapters/inscription.js, adapted from inscriptions-online) committed its reveals to tapscript's encodeScript of a hex script, which re-encodes one-byte pushes, so real Bitcoin rejected them; it now commits to the exact bytes (tapleafOf). Tested in tests/indexer.test.js. Orgchain v1.14: a reveal may take three inputs to inscribe on a sat another key holds (a belt, on its recipient's own sat): that sat's coin, whose holder co-signs; the parent's coin, at the inscriber's key; and the commit, which pays the fee. Both coins come back unchanged, and the pointer must name an inscribed sat of the first. Other reveals keep their two-in, two-out shape. Tested in tests/belts.test.js.
Keyrings (src/orgchain/keyring.js, original code) sign with each chain's own message standard: BIP-322 simple signatures, EIP-191 personal_sign, and a NIP-01 event. tests/keyring.test.js pins BIP-322's published vectors, and values that bip322-js 3.0.0, ethers 6 and nostr-tools 2 produced or accepted in a one-time cross-check; none of those is a dependency.
Vite and Playwright are build/test dependencies, not runtime network services. Their installed package notices remain in the locked dependency installation. No unlicensed upstream code was copied.
The bounded JSON/CBOR codec, byte-derived MetadataIndex, trusted event-counter reducer, local API facade and persisted auto-miner schedule are original adapter code. Metadata encoding and endpoint naming were checked against the Ordinals metadata and endpoint references; no ord source code was copied.