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
@@ -7,13 +7,13 @@ inscription on a private toy chain in your browser, and its parent inscription i
|
||||
chain itself records who did what, and when.
|
||||
|
||||
- **Found** a holding (a root: the LLC). **Birth** orgs and agents under any org. **Award** a belt (one skill, one seat,
|
||||
in any holding: a registry like well-known certifies agents it doesn't hold). **Decide** (a decision on a node's
|
||||
record). **Make** an item (an inscription its maker holds, and can sell). **Buy** an item, an org or a whole holding,
|
||||
and **Sell** your own (both sides of a deal, below). **Keyring** (a node publishes its keys on each chain, each
|
||||
key signing the same statement). **Charter** (a node's legal form, from sole proprietor to series LLC). **Graduate**
|
||||
an org or an agent: its edge flips from derived to adopted, and it becomes a holding of its own, with its own tree,
|
||||
timeline and share of the mining, while its parent's tree keeps a row for it. **Close** a node (derived children close
|
||||
with it; graduated ones hold their own roots and stay open).
|
||||
in any holding: a registry like well-known certifies agents it doesn't hold), soulbound to its seat. **Decide** (a
|
||||
decision on a node's record). **Make** an item (an inscription its maker holds, and can sell). **Buy** an item, an org
|
||||
or a whole holding, and **Sell** your own (both sides of a deal, below). **Keyring** (a node publishes its keys on
|
||||
each chain, each key signing the same statement). **Charter** (a node's legal form, from sole proprietor to series
|
||||
LLC). **Graduate** an org or an agent: its edge flips from derived to adopted, and it becomes a holding of its own,
|
||||
with its own tree, timeline and share of the mining, while its parent's tree keeps a row for it. **Close** a node
|
||||
(derived children close with it; graduated ones hold their own roots and stay open).
|
||||
- **Time.** A beat is a block. At the default tempo each act is its own beat; at 10, 30 or 60 seconds, acts are cued and
|
||||
land together on the next beat; on manual they wait for *Beat now*. The slider and *Replay* show a holding as it
|
||||
stood at any beat.
|
||||
@@ -29,11 +29,12 @@ chain itself records who did what, and when.
|
||||
is cued. A graduation moves each re-keyed node's money to its new address along with its inscription. Balances
|
||||
follow the slider, the timeline lists every reward, send and gas top-up, and Inspect has the exact amounts and the
|
||||
raw transaction (`src/orgchain/money.js`).
|
||||
- **Gas.** Every act is paid by the acting node's own keys: its inscription's two fees and postage (2,000 sats),
|
||||
plus 500 for each handoff it makes. They come out of its gas tank, the plain coins at its Taproot key, which tops
|
||||
up from its own money 0.0001 test BTC at a time. A node with neither can't act until someone sends it money, and a
|
||||
graduating org pays for the claim on its new root itself. The lab wallet pays only for foundings (a holding owns
|
||||
nothing until it mines) and for holdings that predate lab keys.
|
||||
- **Gas.** Every act is paid by the acting node's own keys: its inscription's two fees and postage (2,000 sats; an
|
||||
award rides its seat's sat, so it needs no postage and costs 1,000), plus 500 for each handoff it makes. They come
|
||||
out of its gas tank, the plain coins at its Taproot key, which tops up from its own money 0.0001 test BTC at a time.
|
||||
A node with neither can't act until someone sends it money, and a graduating org pays for the claim on its new root
|
||||
itself. The lab wallet pays only for foundings (a holding owns nothing until it mines) and for holdings that predate
|
||||
lab keys.
|
||||
- **Deals.** Both sides of OpenOrdex's partially signed transaction, on a lot: an item, which its holder sells; an org
|
||||
inside a holding, which its parent sells with its tree; or a whole holding, which its owner sells (the lab wallet
|
||||
plays the owner). **Buy** makes an offer, the buy order: the buyer's SegWit key signs the whole deal at once
|
||||
@@ -55,11 +56,18 @@ chain itself records who did what, and when.
|
||||
tree sits in and merges them into one. The buyer then adopts it: a `join`, signed by the key that now holds its
|
||||
inscription, and an `adopt`, signed by the buyer, move it into the buyer's tree at the buyer's next index (a holding
|
||||
becomes an org there), where its keys and its tree's derive from the buyer's seed. Then the coin it came in splits
|
||||
back, each node's inscription to its new key and each item to the node that held it, by the layout the deal kept.
|
||||
Taking an ask adopts at once; after an accepted offer the buyer adopts when it's ready. The seller's tree keeps a row
|
||||
at the old index, marked with where the org went, and a holding bought whole brings its history into its buyer's
|
||||
timeline. The sample ends with both sides standing: lineage's offer for the launch kit, and well-known's ask for
|
||||
mailr; selling time with its ventures, or yolopreneur whole, is one Sell away.
|
||||
back, each node's inscription to its new key, its belts on the same sat, and each item to the node that held it, by
|
||||
the layout the deal kept. Taking an ask adopts at once; after an accepted offer the buyer adopts when it's ready. The
|
||||
seller's tree keeps a row at the old index, marked with where the org went, and a holding bought whole brings its
|
||||
history into its buyer's timeline. The sample ends with both sides standing: lineage's offer for the launch kit, and
|
||||
well-known's ask for mailr; selling time with its ventures, or yolopreneur whole, is one Sell away.
|
||||
- **Belts.** A belt is soulbound: it belongs to the seat it names, and Orgchain inscribes it on that seat's own sat,
|
||||
so it moves with the seat through every act, graduation and sale, and never sells on its own. One reveal carries it,
|
||||
three coins in: the seat's, which the pointer puts the belt in and the seat's key signs, accepting it; the issuer's,
|
||||
the parent that authorizes it; and the commit, which pays the fee. Both coins come back unchanged. `ord` gives the
|
||||
belt two charms: ♻️ reinscription, since its sat already carries the seat's inscription, and ❤️🔥 vindicated, since a
|
||||
pointer and an envelope past the first input would have cursed it before the jubilee. Inspect lists a node's belts
|
||||
with their charms (`src/orgchain/belts.js`); belts awarded before v1.14 stay with their issuers.
|
||||
- **Keyrings.** **Keyring** publishes a node's keys in one inscription whose parent is the node itself: its Taproot and
|
||||
SegWit addresses, its npub and its Ethereum address, so another chain or a registry like well-known can find them
|
||||
without deriving anything. Every key signs the same statement, the way its own wallets sign a message: BIP-322 for the
|
||||
@@ -109,7 +117,7 @@ keyring's is the statement its keys signed).
|
||||
| --- | --- | --- |
|
||||
| `found` | none | `name` |
|
||||
| `birth` | the parent | `name`, `kind` (`org` or `agent`) |
|
||||
| `award` | the issuing org or holding (`to` may sit in any holding) | `to`, `skill`, `belt` (`white`, `green`, `black`) |
|
||||
| `award` | the issuing org or holding (`to` may sit in any holding, and co-signs: the belt goes on its sat) | `to`, `skill`, `belt` (`white`, `green`, `black`) |
|
||||
| `decide` | the deciding node | `title`, `why` |
|
||||
| `make` | the making node, which then holds the item | `name`, `note` |
|
||||
| `keyring` | the node itself; the newest counts, and a graduation retires it | `taproot`, `segwit`, `nostr`, `ethereum`, and `proof` (each key's signature) |
|
||||
@@ -134,15 +142,16 @@ fold in, why a parent proves authority, and every rule the reducer applies. The
|
||||
node bin/lineage-index.mjs --ord http://127.0.0.1:8088 [--from <height>] [--compare <lab backup>]
|
||||
```
|
||||
|
||||
`tools/regtest/` rehearses the sample, keyrings, asks, offers and whole trees changing hands included, on Bitcoin Core
|
||||
regtest: the lab's own transactions, byte for byte, confirmed by Bitcoin Core and indexed by `ord`, which then tell the
|
||||
same story as the lab (`tests/indexer.test.js` replays a recorded run). The first rehearsal found that the lab's reveals
|
||||
committed to the wrong tapleaf, which real Bitcoin rejects; reveals are now checked the way Bitcoin checks them
|
||||
`tools/regtest/` rehearses the sample, keyrings, belts, asks, offers and whole trees changing hands included, on Bitcoin
|
||||
Core regtest: the lab's own transactions, byte for byte, confirmed by Bitcoin Core and indexed by `ord`, which then tell
|
||||
the same story as the lab (`tests/indexer.test.js` replays a recorded run). The first rehearsal found that the lab's
|
||||
reveals committed to the wrong tapleaf, which real Bitcoin rejects; reveals are now checked the way Bitcoin checks them
|
||||
(`SPEC.md`, section 1). The rehearsal of org sales found that a miner can put a join and its adoption in either order
|
||||
within a block, so a move records both halves and each half belongs to both holdings (`SPEC.md`, section 5). The
|
||||
rehearsal of whole trees sold an org with its six below it on an offer and a holding whole on an ask, bundling eleven
|
||||
inscriptions into one coin and splitting them again, and `ord` put every one in the same output as the lab (`SPEC.md`,
|
||||
section 7).
|
||||
nodes into one coin and splitting them again, and `ord` put every inscription on the same sat as the lab (`SPEC.md`,
|
||||
section 7). Three of those nodes wore belts, each inscribed on its own sat by a three-input reveal: `ord` charmed them
|
||||
♻️ and ❤️🔥, and after both sales every belt was still on its seat's sat.
|
||||
|
||||
## Build and test
|
||||
|
||||
@@ -161,11 +170,12 @@ Deploy: copy `dist/` to `ventures/lineage/orgchain/` on `teahubxyz/time` `gh-pag
|
||||
## Built on Super Testnet
|
||||
|
||||
The chain, wallet, inscriptions, metadata and index (`src/adapters`, `src/upstream`, with `src/storage.js` and
|
||||
`src/miner.js`) are [Super Testnet](https://supertestnet.lol)'s, with their tests (`tests/adapters.test.js`) and five
|
||||
`src/miner.js`) are [Super Testnet](https://supertestnet.lol)'s, with their tests (`tests/adapters.test.js`) and six
|
||||
additions: the chain also moves native SegWit (P2WPKH) payments, BIP-143 signatures included; a coinbase may split
|
||||
its reward across up to 64 outputs; ordinary spends take up to 64 inputs and outputs, whose key-path
|
||||
signatures may carry SIGHASH_SINGLE|ANYONECANPAY (0x83, the sell-order flag), while reveals keep their two-in,
|
||||
two-out shape (`tests/money.test.js`); a chain may start from coins imported from a real chain; and reveals'
|
||||
its reward across up to 64 outputs; ordinary spends take up to 64 inputs and outputs, whose key-path signatures may
|
||||
carry SIGHASH_SINGLE|ANYONECANPAY, the sell-order flag 0x83 (`tests/money.test.js`); a reveal, otherwise two in and
|
||||
two out, may inscribe on a sat another key holds, spending that sat's coin, its parent's and the commit and returning
|
||||
both coins unchanged (`tests/belts.test.js`); a chain may start from coins imported from a real chain; and reveals'
|
||||
script paths are checked per BIP-341 and BIP-342 (`tests/indexer.test.js`).
|
||||
See `PROVENANCE.md` and `public/licenses/`. Lineage's key derivation and the claim and
|
||||
countersign handoff (`src/adapters/lineage-keys.js`, `src/adapters/handoff.js`, with their spec vectors in
|
||||
|
||||
Reference in new issue
Block a user