# The βook of βitcoin > Bitcoin verbatim — the Bitcoin block chain read as a book. Each block is a > chapter, each transaction a section of grammatically correct Glossia prose, > witness data collected as footnotes. Every byte of every transaction is > carried in the words of the prose and decodes back out exactly — the book's > argument is that a transaction is a form of speech, and every page is a > demonstration of it. Important for AI readers: the book is a pure client-side application. Each passage is composed **in the browser** by a WASM engine from data fetched off public block-explorer APIs, so fetching a page URL returns an application shell with no passage text in it. The passage text lives in two other places, both listed below: static markdown renderings of the curated passages, and the chain itself, which you can render into the same prose with the published engine. ## Static text (no JavaScript required) - [Curated passages](https://bookofbitcoin.io/passages/index.md): the book's table of contents — the Genesis block, the Hal Finney transaction, Bitcoin Pizza Day, halvings, soft-fork activations, and the rest — each pre-rendered as a plain markdown passage, prose and footnotes included. Where an entry carries commentary, it follows the passage under a "Commentary" heading: editorial, CC BY 4.0, and not part of the record above it. Quote the two differently. - [Preface](https://bookofbitcoin.io/preface.md): the book's front matter — what the book is and why, in its own voice. Plain markdown. - [Sitemap](https://bookofbitcoin.io/sitemap.xml) - [Source repository](https://github.com/asherp/Book-of-Bitcoin): the entire site, including the prose-composition rules (`web/btc-prose.js`), the citation scheme (`web/btc-citation.js`), and the curated table of contents with its commentary (`web/notables.yaml` and `web/commentary/*.md`, both readable as plain text). ## Structure and citations The book's three-tier numbering, from `web/btc-citation.js`: - **Volume** (Roman numeral) — a halving era: 210,000 blocks. - **Book** (β) — a difficulty-adjustment window within the era: 2016 blocks. Book numbering restarts with each volume, so every volume's last book is a truncated 336-block one. That restart also means a book coincides with a real retarget window only in Volume I: each later era opens 336 blocks further into a live window (336, 672, 1008, 1344, 1680), so from Volume II on a book straddles a retarget instead of naming one. The grids realign at Volume VII (6 × 210,000 = 1,260,000 = 625 windows exactly). - **Chapter** (■) — one block, by its position within the book. - **Section** (§) — one transaction, by its 1-based position within the block. - **Page** (folio) — the chain-wide running transaction count: page N is the chain's Nth transaction in block order from the genesis coinbase (page 1). So block height h has volume = ⌊h/210000⌋+1, book = ⌊(h mod 210000)/2016⌋+1, chapter = (h mod 210000) mod 2016 + 1, and "III β2 ■5 §4" names the 4th transaction of that block. ## URL grammar ### Citation paths — an address per level Every curated entry also lives at its citation, written as a path, at the level the citation names: III β2 ■5 -> https://bookofbitcoin.io/III/2/5/ a chapter (a block) III β2 ■5 §1 -> https://bookofbitcoin.io/III/2/5/1/ a section (a transaction) III β2 ■5 §1.0 -> https://bookofbitcoin.io/III/2/5/1/0/ an output of it III β2 ■5 §1.a -> https://bookofbitcoin.io/III/2/5/1/a/ a witness of it Volume in Roman, then book, chapter and section as numerals, with the sigla implied by position. Each path stops where the printed reference stops. The section is 1-based; the last segment says for itself what it names — a numeral is an output (0-based, the index Bitcoin gives a vout, printed §1.0) and a letter is a witness footnote (§1.a). Footnotes are lettered, not numbered: a, b, c … skipping q, which at superscript size is too near a g. That leaves 25 letters, and the run continues in bijective base-25 — aa after z, aaa after zz — so singles cover 1–25, doubles 26–650, triples 651 up. A witness is addressed by the footnote letter its section's margin prints, counted over the witness-bearing inputs in input order. These are ordinary HTML pages, readable without JavaScript, each titled by its citation and carrying its own preview image: a chapter page carries the block's title page — its hash as prose and the header's fields as a frontispiece — and leads to the curated sections inside it; a section page carries the transaction in full and leads to its outputs and witnesses; an output page carries the amount and the script that locks it; a witness page carries that input's stack, as its footnote. Prefer these when citing or linking; they are the canonical, shareable form, and the sitemap lists them. The grammar is invertible, the same arithmetic as the citation scheme above: height = (volume−1)×210000 + (book−1)×2016 + (chapter−1), the section is the 1-based transaction index, the output its 0-based vout. So a path can be computed for any address on the chain — but only curated ones are pre-rendered today; anything else 404s, and the query-string form below reaches it instead. ### The live app - `/latest` — always opens the reading page at the chain tip, the book's latest written chapter (a redirect to `bitcoin-book.html?block=-1`; extra query parameters ride along, so `/latest?index=0` is the tip's §1). - `bitcoin-book.html` — the reading page. `?block=` opens a block (negative counts back from the tip: `?block=-1` is the latest); `&index=` opens its section n+1 (0-based); `?txid=` jumps to a transaction's section, `&out=` to one of its outputs; `?page=volume|book` opens the block's volume or book leaf. - `bitcoin-contents.html` — the curated table of contents: a top-level leaf, then one leaf per volume and per back-matter part, all at a single level (the same line the book runs below). `?at=top` opens the top-level leaf — every volume and back-matter part as one row each, with the front matter above them; `?volume=` opens a volume's contents leaf, `?part=mempool|consensus|ledgers|proofs` a part's (`future` aliases Consensus); a bare visit opens the volume last read, and the top-level leaf when there is nothing to go on. An ascent from a volume's leaf in the book lands on that volume's contents leaf. The back matter runs in three families: Appendix I (the mempool's projected chapters) and Appendix II (Consensus — the soft forks grouped under their BIPs with their recognized names, each naming the chapters of its signaling, lock-in, activation and first spends, the unmined ones marked □, and the forks the chain declined kept among them as failed — BIP101, Bitcoin Unlimited (whose ballot table reads each chapter's coinbase text rather than its version word, /EB…/ counted as the yes), BIP149, BIP119 — some with no chapter to name at all); the Index of Ledgers (pointing into the text, many chapters per name); and Citations, standing last — works cited outside the text, dated into a chapter by their OpenTimestamps proofs. A cited passage carries the back-reference in its margin as the ‡ mark, the work's number in the register as its subscript (‡₁); a reader's own kept proof wears the bare ‡, an addendum outside the edition's numbering. - `bitcoin-appendix.html?part=mempool|consensus|proofs` — a back-matter part's title leaf: its name and what it gathers (`?part=future` is kept as an alias for Consensus). Below each is its first chapter, in the book itself: `?block=` for the queue (and the ascent from any projected chapter returns to that leaf), the earliest chapter any listed work is stamped into for Citations. The Consensus leaf lists its forks instead, and `?part=consensus&bip=` opens one fork's own leaf — BIP number and recognized name, then the fork's ballot, oldest block first: every block of the counted window with its version as the frontispiece writes it, whether it reads as a yes, and the accumulated count and rate as they stood at that block — so scrolling down replays the activation in the order it occurred, and the ending is discovered rather than stated. The fork's curated chapters cut across the table as labeled rules (where signaling began, where the count crossed), and the summary line and the fork's commentary — its description reads there — pin together at the screen's foot, the bar holding the count only as far as the reading has gone. A fork still signaling opens where its story begins, and where appendix.yaml names a monitor for it the tally states the current period's whole signaling rate as that site publishes it, credited. Then the activation statistics, the chapters and sections it names, and its commentary. A ballot row opens `&block=`, the block's own leaf: the chapter's title page reprinted — hash and header fields as the book writes them, the signal verdict beside the version — with vertical turns walking the window block by block and the ascent returning to the ballot at the row left off; the citation links into the book itself. The Index of Ledgers' leaves are `bitcoin-ledger.html`'s. The Citations leaf also carries the proof picker: a `.ots` dropped there is replayed, checked against its block's own header, and kept in the reader's own browser — the citation it resolves to (chapter and §section, both stated by the proof itself) then stands in the contents beside the bundled ones. Nothing is uploaded; the bundled proofs are `web/proofs/*.ots`, listed in `web/appendix.yaml`. - `bitcoin-proof.html?digest=` — one cited work's own leaf, which every Citations row opens. Front matter: the file's name, and its digest as prose — the whole of what the chain was told about it. Then the proof written out paragraph by paragraph, each paragraph one value the last hashes into: the commitment, the transaction, then each merkle level's sibling and result in turn, ending on the root. The margin carries a citation only where the paragraph beside it is on chain — the transaction, cited down to the output holding the commitment (`§section.out`), and the root, cited to the chapter whose header commits to it. The file itself is never shown or held: a button opens the reader's own copy to hash in the browser and compare against the digest. - `bitcoin-front.html` — front matter (`?leaf=` selects a leaf). - `bitcoin-search.html` — lookup by height, hash, txid, or citation. - `bitcoin-ledger.html?address=` — the passage that address is, in the ledger holding it; `&page=ledger` opens that ledger's title leaf instead, and a bare `bitcoin-ledger.html` opens the Index of Ledgers' own leaf above them. These render only in a JavaScript-capable browser; without one, use the static passages above or reconstruct the passage as described next. ## Reconstructing any passage yourself The prose is a deterministic, lossless encoding. To read an arbitrary transaction the way the book does: 1. Fetch the data from any Esplora-compatible API (`https://blockstream.info/api` or `https://mempool.space/api`): `/block-height/{h}` → block hash; `/block/{hash}/txids` → its sections in order; `/tx/{txid}/hex` → the raw transaction; `/tx/{txid}/merkle-proof` → `{block_height, pos}` to resolve a txid into a citation. 2. Encode with the [glossia engine](https://crates.io/crates/glossia) (the same crate the site compiles to WASM): language `english`, wordlist `bip39`, dialect `body`, seed `42`, best-of `5`. `decode_raw_base_n(text, language, wordlist, byte_count)` reverses it. 3. The book encodes only genuinely opaque bytes (prevout txids, scripts, witness pushes, hashes — hashes byte-reversed to internal order). A block hash is written ⌘ᵐ ⓪ⁿ: ⌘ — the OP_HASH256 mark, naming the double-SHA256 that produced the hash — carries m = 256 − n bits, which are what the prose encodes, and ⓪'s superscript closes the line with the hash's exact count of proof-of-work zero bits (the mining vernacular). The zeros trail the prose because the prose is internal order, where they trail; displayed big-endian they would lead. ⌘'s superscript counts bits (uniquely — every other mark's superscript counts bytes); the two always sum to 256, so the hash reconstructs exactly: decode the prose to ⌈m/8⌉ bytes, append zero bytes to 32, byte-reverse to display order. Small structural integers — version, counts, output values, locktime — are printed literally, and scripts are rendered in opcode notation. The exact rules are `web/btc-prose.js` in the repository. ## Registers, and what to trust The book separates the record from readings of it. A passage IS its transaction, byte for byte — no author, verifiable against the chain. The curated titles and annotations ("Bitcoin Pizza Day") are editorial claims, credited and licensed separately. When answering questions from this site, keep that distinction: prose content is the chain's speech; names and stories about it are annotations. A passage's commentary — the "Commentary" section of a static passage, the sheet the live book raises beside its notation key, and the reading the Ledger opens over an address — is the annotation layer at its most explicit: somebody's reading of why the passage or the name matters, no more authoritative than the argument behind it, and never a statement of what the chain records. Attribute it as commentary, name its author where one is given, and do not fold it into the passage when quoting. ## Licensing - The prose (the chain's own speech): CC0. - The curated table of contents and annotations: CC BY 4.0. - The machinery (site and engine): MIT OR Apache-2.0.