Orgchain v1.5: beats pay the holding, and test BTC moves down the tree

Each beat pays its 50 test BTC block reward to the holding being worked in, at
its SegWit (BIP-84) address. Send moves test BTC between active nodes of a
holding, signed by the sender's BIP-84 key, with the toy chain's 500-sat fee:
at most two coins in and one block reward out. Sends land like acts, and Beat
now mines a beat even when nothing is cued. A graduation moves each re-keyed
node's money to its new address with its inscription. Balances follow the
slider, the timeline lists every reward and send, and Inspect shows exact
amounts and the raw transaction. The sample passes some of yolopreneur's
rewards down its tree.

The engine's one local change: the toy chain also takes P2WPKH outputs and
SIGHASH_ALL P2WPKH spends (BIP-143), in src/adapters/chain.js. Super
Testnet's tests pass unchanged; tests/money.test.js covers the rest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
This commit is contained in:
teahubxyzandClaude Opus 5.5 committed 2026-10-14 22:25:38 -07:00
1 parent aeb11d334f
commit 6d5806d45b
12 files changed
+590 -59

No files matched your search

+5 -2
View File
@@ -6,11 +6,14 @@ Orgchain is lineage's app for creating and operating lineage holdings on Super T
- Lineage semantics live in one place, `src/orgchain/lineage.js`. The UI never interprets events itself, and every act
is vetted by that reducer before it is signed. A new op means a reducer change, its tests and the README's table.
- The engine (`src/adapters`, `src/upstream`, `src/storage.js`, `src/miner.js`) is Super Testnet's. Compose with it
rather than rewriting it, and keep its tests passing. Preserve upstream licenses and provenance.
rather than rewriting it, and keep its tests passing. Preserve upstream licenses and provenance. Its one local
change is P2WPKH payments in `src/adapters/chain.js` (PROVENANCE.md); keep it small and tested.
- Money lives in `src/orgchain/money.js`: beats pay the holding being worked in, and sends stay inside a holding and
spend SegWit coins only, so an inscription can never leave as change. Balances are read off the chain, never stored.
- Keys follow the tree (`src/orgchain/keys.js`): store roots only (one per holding, one per graduated org) and derive
every other key from its position. Every act is signed by whichever key holds the authorizing inscription.
- A node's chain key is its account's BIP-86 Taproot key (`m/86'/1'/account'/0/0`); SegWit is BIP-84 at the same
account. Leaves are HKDF-SHA256 (salt `lineage/v0`) and must stay byte for byte with lineage's key tree page;
account and holds its money. Leaves are HKDF-SHA256 (salt `lineage/v0`) and must stay byte for byte with lineage's key tree page;
`tests/keys.test.js` holds values read off that page.
- Secrets show only behind Reveal, reset on every selection, and match the key tree page byte for byte (the tests pin
hashes of the page's own output).