46 lines
2.2 KiB
Markdown
46 lines
2.2 KiB
Markdown
# Regtest rehearsal
|
|||
|
|
|
||
|
|
Lineage is an ordinals metaprotocol (`SPEC.md`). This folder checks that on real Bitcoin Core and real `ord`: the lab's
|
||
|
|
own action code makes the yolopreneur sample, Bitcoin Core (regtest, standardness on) accepts its transactions byte
|
||
|
|
for byte, `ord` indexes the inscriptions, and the same reducer folds ord's view back into the same trees.
|
||
|
|
|
||
|
|
Regtest is local and private: nothing is downloaded, blocks are mined on demand, and the data folders stay a few MB.
|
||
|
|
Test coins only.
|
||
|
|
|
||
|
|
## Start
|
||
|
|
|
||
|
|
```
|
||
|
|
brew install bitcoin ord
|
||
|
|
mkdir -p ~/lineage-regtest/bitcoin ~/lineage-regtest/ord
|
||
|
|
cp tools/regtest/bitcoin.conf ~/lineage-regtest/bitcoin/
|
||
|
|
bitcoind -datadir=$HOME/lineage-regtest/bitcoin -daemon
|
||
|
|
bitcoin-cli -datadir=$HOME/lineage-regtest/bitcoin createwallet funder
|
||
|
|
ord --regtest --bitcoin-data-dir $HOME/lineage-regtest/bitcoin --data-dir $HOME/lineage-regtest/ord \
|
||
|
|
server --address 127.0.0.1 --http-port 8088 --polling-interval 1s &
|
||
|
|
```
|
||
|
|
|
||
|
|
`bitcoin.conf` keeps mainnet's standardness rules (`acceptnonstdtxn=0`) and lowers the minimum relay fee to 0.1 sat/vB,
|
||
|
|
since the lab pays a fixed 500 sats per transaction.
|
||
|
|
|
||
|
|
## Rehearse, index, compare
|
||
|
|
|
||
|
|
```
|
||
|
|
node tools/regtest/rehearse.mjs # nine beats; saves the lab to tools/regtest/out/lab.json
|
||
|
|
node bin/lineage-index.mjs --from 100 --compare tools/regtest/out/lab.json
|
||
|
|
node tools/regtest/record.mjs # refresh tests/fixtures/regtest-rehearsal.json (public data only)
|
||
|
|
```
|
||
|
|
|
||
|
|
The rehearsal funds the lab wallet with real regtest coins (`LocalChain.importCoin`) and pays every local beat to an
|
||
|
|
unspendable key, so nothing it signs spends a coin regtest doesn't have. After each beat it broadcasts that beat's
|
||
|
|
transactions and mines one regtest block. `--compare` checks that every event landed in the same beat with the same
|
||
|
|
metadata and parent, that every inscription sits in the same output, and that both fold into the same trees. Within a
|
||
|
|
block the miner may order independent events differently from the lab; that changes nothing (`SPEC.md`, section 2).
|
||
|
|
|
||
|
|
`out/` holds the lab backup, test keys included, and is not committed.
|
||
|
|
|
||
|
|
## Stop
|
||
|
|
|
||
|
|
```
|
||
|
|
bitcoin-cli -datadir=$HOME/lineage-regtest/bitcoin stop
|
||
|
|
pkill -f "ord --regtest"
|
||
|
|
```
|