JAN09-X

Reconstruction · evidence level MODEL · not money

“OP_NOTEQUAL is disabled because it would be too easy to say something like n != 1 and have some wiseguy pass in 1 with extra zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001).”

Satoshi Nakamoto — script.cpp:494

Genesis — minted by this chain, not inherited

genesis
51eec236b4faf743b621f5b6bddbce272ac33904b2872cf537a2a4cb2234c6f2
coinbase
JAN09-X lab chain: v0.1.0 released rules, full vocabulary, not money
reward
50 coins — no value assigned, ever
proof-of-work
compact target, regtest-easy

This is not 000000000019d668…. JAN09-X mints its own genesis and starts from zero. It inherits no balances, no history and no coins, and its units are not historical satoshis. What it inherits is a rule set.

The constitution — January 2009, as released

denominationCOIN = 100,000,000 — the satoshi is genesis-bornmain.h:18
subsidy50 coinsmain.cpp:677
halvingevery 210,000 blocksmain.cpp:680
block spacing600 s — 10 minutesmain.cpp
proof-of-workcompact mantissa/exponent targetmain.h
coinbase valuemust be subsidy + fees — > rejectsmain.cpp:739

Frozen and source-anchored in rules_jan09.json — every value carries the line it came from.

Nothing disabled — OP_NOTEQUAL re-opened

already live
OP_CAT · OP_MUL · OP_DIV · OP_LSHIFT · OP_INVERT · OP_2MUL — the broad vocabulary BTC removed in 2010 is present in v0.1 and simply left alone
re-opened
OP_NOTEQUAL — the one functional opcode Satoshi commented out
realised as
OP_EQUAL then OP_NOT — both already live, so nothing is invented

This is the single deliberate departure, and it is disclosed with the reason it was fenced off. Satoshi’s own comment survives beside the change, and the test suite reproduces the footgun rather than hiding it: 0x01 OP_NOTEQUAL 0x0001 is true — byte-unequal — even though numerically 1 = 1. That is the honest face of “nothing disabled”: the full expressive power is available, and the hazard is preserved next to it.

Network identity — isolated by construction

magic
f0 0b a7 09  ·  mainnet is f9 be b4 d9
port
18009
address version
0x36
anchor
seed.bitcoin-lab.org:18009

A mainnet-framed message is refused. The isolation is not a policy or a promise — it is the wire format. JAN09-X cannot talk to Bitcoin, to NOV08-X, or to any historical chain, and no configuration mistake can make it.

Live

height
tip
status
# join it — one command, no setup
docker run --rm -v xnode-data:/data ghcr.io/original-bitcoin-laboratory/xnode

# or from source
python -m netnode --chain jan09x --datadir ./data-jan09 --connect seed.bitcoin-lab.org:18009

Images published from 15 Aug 2026 are signed — how to check with cosign. Earlier tags are not; that gap is stated, not back-dated.

Your node mints the genesis itself and re-validates every block — live status · explorer · the invitation

What “MODEL” means, and why it is stated first. JAN09-X is a reconstruction of a rule set, executed by the laboratory’s own engines in Python — not Satoshi’s binary running. That is a weaker class of evidence than Bitcoin, which runs the January 2009 client itself, and weaker than the two-node witness, which runs it twice. The laboratory does not flatten those three into one word. A model can be wrong in ways a binary cannot, and saying so is the point.

It is not the historical chain, and not “true Bitcoin.” Its genesis is its own, its units are not historical satoshis, and it inherits no balances. It is a new experimental descendant, released as a candidatea Bitcoin, not the Bitcoin, exactly as its sibling NOV08-X is. No chain on this site is privileged over another.

Paired with NOV08-X, it answers a counterfactual from both ends: what the November 2008 design and the January 2009 release each become when completed with nothing disabled. Neither is recovered history. Both are stated as experiments.

NOT money. No premine, no sale, no market, no value assigned, no promises. The 50-coin outputs are 50 of nothing.