Am 8. Januar 2009 schickte jemand unter dem Namen Satoshi Nakamoto eine E-Mail an die Cryptography-Mailingliste von Metzdowd. Betreff: die erste Version einer Software namens Bitcoin, hochgeladen auf SourceForge. Kein Whitepaper-Nachtrag, kein Manifest — einfach ein Archiv mit C++-Dateien und eine kurze Anleitung zum Kompilieren.
Wer diesen Code heute öffnet, findet nicht das System, das wir kennen. Er findet einen Prototyp: kleiner, roher, an manchen Stellen erstaunlich fertig, an anderen voller Ideen, die nie umgesetzt wurden.
Ein Programm, das auf eine Diskette gepasst hätte
Die Kern-Dateien von Version 0.1 umfassen zusammen rund 7.000 Zeilen Code. Zum Vergleich: Das heutige Bitcoin Core liegt bei mehreren hunderttausend Zeilen, verteilt über ein Dutzend Subsysteme mit eigenen Maintainern.
Die Aufteilung war denkbar direkt:
| Datei | Zeilen | Aufgabe |
|---|---|---|
main.cpp |
~2.660 | Blockchain, Transaktionen, Mining, Wallet-Logik |
script.cpp |
~1.127 | Die Skriptsprache und ihre Opcodes |
net.cpp |
~1.020 | Peer-to-Peer-Netzwerk, Sockets, Threads |
db.cpp |
~604 | Persistenz über Berkeley DB |
sha.cpp |
~554 | SHA-256-Implementierung |
util.cpp |
~373 | Hilfsfunktionen |
irc.cpp |
~265 | Node-Discovery über IRC |
Gebaut wurde für Windows, mit Visual C++ 6.0 und Boost 1.35. Die Oberfläche lief über wxWidgets — ein Fenster mit Kontostand, einer Transaktionsliste und einem „Generate Coins“-Häkchen. Mining war ein Menüpunkt, kein Industriezweig. Lizenz: MIT.
main.cpp: die Zeile, die jeder kennt
Im Herzen der Datei steht die Konstruktion des Genesis-Blocks. Und darin ein char*, der als Kommentar in der Coinbase-Transaktion landet:
char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
Technisch ist das ein Zeitstempel — ein Beweis, dass der Block nicht vor dem 3. Januar 2009 erzeugt wurde. Inhaltlich ist es die einzige Stelle im gesamten Programm, an der der Autor politisch wird. Die Schlagzeile stammt von der Titelseite der Times und beschreibt genau das Problem, das die Software umgehen sollte: Banken, die gerettet werden müssen.
Der Genesis-Block-Hash steht hartkodiert im Code, ebenso der Merkle-Root, abgesichert per assert. Was danach kommt, ist bereits das vertraute Gerüst: CBlock, CTransaction, CTxIn, CTxOut, ConnectInputs, AcceptToMemoryPool. Diese Namen haben sechzehn Jahre überlebt.
Auch die Geldpolitik war von Anfang an fertig. Die Belohnung startet bei 50 BTC und wird alle 210.000 Blöcke durch einen Rechtsshift halbiert — vier Zeilen Code, aus denen sich das gesamte Emissionsmodell und die Obergrenze von 21 Millionen ergeben. Kein Governance-Prozess, kein Parameter zum Nachjustieren.
Der Vorläufer vom November 2008
Version 0.1 war nicht der erste Code. Im November 2008 verschickte Satoshi eine frühere Fassung privat an einige Leute von der Mailingliste — darunter Hal Finney, James A. Donald und Ray Dillinger. Dillinger veröffentlichte diese Dateien Jahre später.
Der Vergleich lohnt sich, denn er zeigt, was noch im Fluss war. Diese Vorabversion hat einen völlig anderen Genesis-Block mit anderem Hash — die Times-Schlagzeile existierte schlicht noch nicht. Der Coinbase-Output verwendet OP_CODESEPARATOR statt der späteren, schlankeren Konstruktion. Und die Beträge in den Beispielkommentaren stehen in einer anderen Größenordnung, was auf eine abweichende Einteilung der kleinsten Einheit hindeutet.
Mit anderen Worten: Zwischen November und Januar wurden Dinge geändert, die heute als unantastbar gelten.
IRC als Bootstrap
Wie findet ein neuer Knoten das Netzwerk, wenn es noch kein Netzwerk gibt? Satoshis Antwort war irc.cpp. Der Client verband sich mit einem IRC-Server, betrat einen Channel und las die Nicknames der anderen Anwesenden — darin kodiert deren IP-Adressen.
Das ist pragmatisch bis zur Schmerzgrenze: Die Verfügbarkeit eines dezentralen Geldsystems hing an einem Chatserver. Später ersetzten DNS-Seeds und hartkodierte Seed-Nodes diesen Mechanismus. Nebenbei war irc.cpp auch die Quelle eines Absturzes, den Hal Finney beim Testen von 0.1.0 fand — Satoshi zog eine korrigierte Fassung nach, was bis heute für Verwirrung über die „echte“ 0.1.0 sorgt.
Ein Marktplatz, der nie kam
Im Verzeichnis liegt Code für einen dezentralen Marktplatz — Klassen für Produkte, Nutzer und Bewertungen. Dieser Teil wurde nie fertiggestellt und verschwand in späteren Versionen ersatzlos.
Er verrät aber etwas über die ursprüngliche Ambition. Bitcoin war nicht als reines Zahlungsnetz gedacht, sondern als Infrastruktur für Handel ohne vertrauenswürdige Dritte. Ideen, die Jahre später unter Namen wie Escrow-Protokolle, Smart Contracts oder dezentrale Marktplätze zurückkehrten, waren im Januar 2009 bereits als toter Code vorhanden.
Was noch fehlte — und was zu viel war
Zwei Dinge überraschen beim Blick auf 0.1:
Kein 1-MB-Blocklimit. Die berühmte Obergrenze, um die zwischen 2015 und 2017 der Blocksize-War geführt wurde, stand nicht im Originalcode. Sie kam erst 2010 dazu, als Anti-Spam-Maßnahme. Die Grenze, die später als Bitcoins definierendes Merkmal galt, war ein nachträglicher Patch.
Zu viele Opcodes. script.cpp enthielt eine deutlich mächtigere Skriptsprache als heute, inklusive Operationen zum Verketten und Multiplizieren von Daten. Nach dem Value-Overflow-Bug im August 2010 deaktivierte Satoshi einen großen Teil davon. Sie sind bis heute abgeschaltet — jeder Versuch, einzelne davon zurückzuholen, ist seither ein eigenes Kapitel der Bitcoin-Politik.
Wo der Code liegt
Das offizielle Repository unter github.com/bitcoin/bitcoin beginnt nicht am Anfang. Der erste Commit stammt von Ende August 2009 und wurde von Martti Malmi eingespielt — die Versionen 0.1.0 bis 0.1.4 fehlen dort. Der ursprüngliche SourceForge-Link ist seit 2011 tot.
Erhalten geblieben ist der Code über Archive: das Satoshi Nakamoto Institute, gespiegelte GitHub-Repositories wie trottier/original-bitcoin, und Kopien, die Hal Finney selbst in Bitcointalk-Threads geteilt hat. Von Version 0.1.2 und 0.1.5 sind bislang keine Archive aufgetaucht.
Warum das mehr als Nostalgie ist
Der Code von 2009 ist kein Museumsstück, sondern eine Quelle. Er zeigt, welche Entscheidungen von Anfang an feststanden — Halving, Proof-of-Work, die UTXO-Struktur — und welche später hinzukamen oder wieder verschwanden. Diese Unterscheidung ist der Kern fast jeder Debatte darüber, was Bitcoin „eigentlich“ ist.
Und er zeigt etwas Unspektakuläres: 7.000 Zeilen C++, Windows-Fenster, IRC-Bootstrap, Berkeley DB. Kein Netzwerk aus Rechenzentren, kein ETF, keine Staatsreserve. Nur ein lauffähiges Programm und die Annahme, dass sich vielleicht jemand dafür interessiert.
Quellen: Bitcoin v0.1-Archive (Satoshi Nakamoto Institute, gespiegelte Repositories), Metzdowd-Cryptography-Mailingliste Januar 2009, Bitcointalk-Posts von Ray Dillinger und Hal Finney, Code-Walkthroughs von Version 0.1.
Heute vor 17 Jahren: Das Bitcoin-Whitepaper legte den Grundstein







