📈 GH Trending Explorer 🎲 Surprise me

← all repos

t4t5 / bitcoin-0.1-rebuilt

git clone https://github.com/t4t5/bitcoin-0.1-rebuilt.git

the original bitcoin executable, rebuilt byte for byte

—
stars, 24h
+68
stars, 7 days · #740
+68
stars, 30 days · #3,917
68
★ total · +68% this week
12
forks · 0 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageShell
LicenseMIT
Created2026-10-18 (2d ago)
Last push1d ago
Watchers0
OwnerUser

Links

README excerpt
# Bitcoin 0.1.0, rebuilt byte for byte
This repository rebuilds `bitcoin.exe` from the source in Bitcoin's first release archive and produces a file identical to the one Satoshi Nakamoto shipped in January 2009:
 [code] 
It then packs the rebuilt exe into `bitcoin-0.1.0.rar` the way Satoshi did, and gets the release archive itself, with the MD5 and SHA-1 the Satoshi Nakamoto Institute publishes:
 [code] 
## Why it's interesting
- **It proves the binary matches the source.** The exe people downloaded in 2009 was built from exactly the source published with it. Nothing else was compiled in, and no byte of the exe is left unexplained.
- **Bitcoin 0.1 was never meant to be reproducible.** It was built once, on Satoshi's own Windows XP machine, with whatever MinGW toolchain was installed there. Matching it meant reconstructing that toolchain from public 2006–2008 packages, down to the binutils snapshot and the line endings of a wxWidgets manifest file.
- **The exe is a record of Satoshi's machine.** Getting every byte right pins down which compiler, libraries, shell and build settings Satoshi used, in what order things were built, and when. See Satoshi's build machine.
## Rebuild it
You need an x86-64 Linux host (the build runs 32-bit Wine, so not ARM), Docker, `curl` and about 2 GB of disk. Then run:
 [code] 
The first build takes about 6 minutes on a 12-core machine and ends with:
 [code] 
If a package has disappeared from its upstream URL, add another URL to its line in `downloads/MANIFEST`, or set `DOWNLOAD_MIRROR` to a directory that has the same file names.
## Satoshi's build machine
Everything here is read from the original exe and confirmed by the rebuild matching it. In order:
1. Around 28 November 2008, on Windows XP, Satoshi built wxWidgets 2.8.9 and Berkeley DB 4.7.25 with MinGW gcc 3.4.5 and a 2006–2007 binutils.
2. Some time after that, Satoshi upgraded binutils to the 2.18.50-20080109 snapshot.
3. On 10 January 2009, Satoshi built bitcoin with its own makefile, running `mingw32-make` from a plain `cmd` window rather than MSYS. The exe was finished at 23:16 UTC.
| Component | What Satoshi used | How we know |
|---|---|---|
| OS | Windows XP | Berkeley DB's configure failed a `%lld` check that XP's msvcrt can't pass |
| Compiler | MinGW gcc 3.4.5 | libgcc's source path is in the exe |
| MinGW runtime | mingw-runtime 3.13 | The shipped `mingwm10.dll` is byte-identical to that release's |
| w32api | 3.10 or 3.11 | The import hints match these two exactly |
| binutils, for the dependencies | 2.17.50 or a little older | wxWidgets' and Berkeley DB's code has an instruction encoding and padding that 2.18.50 doesn't produce |
| binutils, for bitcoin | 2.18.50-20080109 | Bitcoin's own objects, import thunks and section flags have the layout only 2.18.50 produces |
| wxWidgets | 2.8.9 from the Windows installer; debug, ANSI, static | Version-specific strings, and the embedded manifest has CRLF line endings, which only the installer ships |
| Berke