Une compile vieille de 17 ans. Le 8 janvier 2009, Satoshi Nakamoto annonçait son premier client Bitcoin. L’identité de son créateur faisait déjà débat, alors que personne ne vérifiait le fichier livré. Désormais, un développeur a relevé le défi avec son dépôt GitHub : recompiler bitcoin.exe à l’octet près.
Les points clés de cet article :
- Un dépôt GitHub a recompilé bitcoin.exe à partir du code source d’origine, avec un fichier identique à celui de 2009.
- L’exécutable est sorti d’un PC sous Windows XP, achevé le 10 janvier 2009 avec MinGW GCC 3.4.5.
- Le fichier distribué correspond exactement au code publié, sans aucun programme caché dans l’exécutable.
- Aucune copie vérifiée du paquet du jour du lancement n’a survécu, seul celui du 10 janvier existe.
Reconstituer la chaîne d’outils d’une compile de 2009
Compiler, c’est transformer du code source en programme exécutable. Ainsi, deux machines n’obtiennent jamais le même fichier, car leurs outils diffèrent, ce qui oblige à retrouver la chaîne d’outils de Satoshi.
La difficulté est immense, car le dépôt a dû réunir des paquets chinés dans les archives de 2006 à 2008. Il a fallu retrouver l’instantané exact employé par Satoshi.
Faute de remettre la main sur Windows XP, le projet rejoue la compilation sous Linux avec Wine, qui imite le Windows 32 bits de l’époque. La première tentative demande environ 6 minutes, selon le readme du dépôt.
À l’arrivée, la sortie annonce MATCH, puisque le bitcoin.exe reconstitué porte le même SHA-256 que le fichier d’origine, un programme de 6 440 960 octets. Également, l’archive .rar recopie les empreintes publiées par le Satoshi Nakamoto Institute.
En effet, cette identité prouve un fait qui manquait depuis dix-sept ans, car le fichier distribué en 2009 sortait bien du code publié avec lui. Aucun programme caché ne se glisse dans l’exécutable, ce que personne n’avait jamais garanti.
Ce que l’exécutable raconte de Satoshi
Ensuite, le fichier agit comme une empreinte digitale, car ses traces internes nomment chaque bibliothèque employée, avec sa version. La plus parlante reste MinGW GCC 3.4.5, dont le chemin de compilation figure dans le binaire.
De son côté, le readme de la version 0.1.5 alignait deux compilateurs possibles, également Visual C++ 6.0. Le binaire est bien sorti de MinGW, ce qui tranche une question ouverte depuis des années.
En effet, un test de la base Berkeley DB échoue d’une manière très précise, que seuls les fichiers système de Windows XP produisent. Le dépôt avance ici son indice le plus solide sur le système d’exploitation d’origine.
Par ailleurs, l’archive parle autant que le programme, puisque ses en-têtes conservent des dates réglées à la main, au minute près. Satoshi a empaqueté son logiciel avec un WinRAR déjà âgé de plus de trois ans, que le dépôt a retrouvé.
Cependant, le bitcoin-0.1.0 du dépôt n’est pas celui du jour du lancement. L’archive contient en réalité la mise à jour du 10 janvier, aucune copie vérifiée du paquet de lancement n’ayant survécu jusqu’à nous.
De surcroît, le script recopie trois horodatages lus sur le fichier d’origine, si bien que la reconstruction répète un geste sans le découvrir indépendamment. En revanche, Satoshi avait annoncé la couleur le 8 janvier 2009 :
« Windows uniquement pour l’instant. »
Satoshi Nakamoto, annonce du premier client Bitcoin
Toutefois, l’énigme humaine reste entière. L’ordinateur de Satoshi n’apparaît dans aucun document, et le dépôt ne dit rien de son utilisateur.
Les bitcoins de la première heure, eux, ne dorment pas éternellement. En octobre dernier, 100 BTC de l’ère Satoshi sont sortis de seize ans de sommeil.
Quoi qu’il en soit, n’importe qui peut relancer la compilation et vérifier le résultat soi-même, puisque les empreintes de chaque fichier sont publiées. Reste à savoir si le vrai créateur acceptera un jour que son PC se lise dans ses octets, lui qui détient 71 milliards de dollars en BTC.



