Le développeur bitcoin 0xb10c a annoncé cette semaine avoir réussi une prouesse technique longtemps jugée impossible : produire, exclusivement avec l’outil Nix, un binaire « bitcoind » dont l’empreinte SHA-256 est identique à celle du binaire officiel de la version 31.0 de Bitcoin Core compilée via le système Guix. Sur une machine x86_64 équipée de Nix, l’exécution de la commande nix build suivie d’une comparaison des hashs a en effet retourné la même chaîne hexadécimale des deux côtés : dae69848ae9aaadcc3aa697d1c92b1283273a59c8d87b220b29ddc2813e25eb6.

Ce résultat constitue une première dans l’histoire du projet Bitcoin. Alors que le protocole Bitcoin repose sur des builds reproductibles pour garantir l’intégrité des exécutables distribués, la reproduction d’un binaire Guix via un outil indépendant – Nix – était considérée comme un défi de taille en raison des très nombreuses sources de divergence possibles : version du compilateur, chemins de fichiers, horodatages, métadonnées du lieur, versions des dépendances, ou variables d’environnement.

L’utilisation d’une intelligence artificielle générative

Pour relever ce défi, le développeur a eu recours à des outils d’IA générative. Il a confié à Claude Code – une version de l’assistant Claude – un objectif clair : « produire un binaire Nix dont le hash corresponde à celui du binaire de release Bitcoin Core v31.0 pour x86_64-pc-linux-gnu ». Il a mis à disposition de l’IA un environnement comportant Nix, le dépôt « bitcoind-gunix », puis un checkout du code source de Bitcoin Core à la balise v31.0, le journal de construction Guix, les artefacts de compilation, et enfin le dépôt du projet Guix à la révision utilisée par Bitcoin Core.

Après environ une semaine et demie d’utilisation intensive de Claude Pro, comprenant des cycles automatisés de deux heures, le système est parvenu à produire le binaire correspondant. Le développeur a utilisé un mélange de modèles Claude Sonnet 4.6 et Opus 4.7. Au total, l’IA a généré environ 80 commits de code.

Des contournements nécessaires

Si l’exploit technique est réel, il n’est pas exempt de compromis. Le développeur reconnaît que l’IA a contourné plusieurs obstacles en inscrivant en dur des remplacements de quelques octets, notamment dans les notes ELF de la bibliothèque glibc, et en modifiant un CRC32 de section de débogage dans le binaire bitcoind. « Se débarrasser de ces contournements nécessiterait probablement davantage de tokens LLM, ou d’argent, que je ne prévois pas d’y consacrer », commente-t-il.

Portée et limites

Cet exploit démontre que le processus de construction de Bitcoin Core est suffisamment déterministe pour qu’une chaîne d’outils indépendante puisse aboutir au même artefact. « La reproductibilité ne semble pas provenir uniquement de Guix comme environnement spécial, mais de la construction elle-même », analyse le développeur. Il estime que cela pourrait, à l’avenir, faire de Guix « un participant parmi d’autres dans un modèle de chaîne d’approvisionnement où la confiance émerge de compilations indépendantes convergeant vers le même artefact ».

Il précise néanmoins que le binaire produit ne peut pas être exécuté directement sous NixOS en raison de différences dans la gestion des bibliothèques dynamiques. De plus, seuls le binaire « bitcoind » pour Linux x86_64 a été reproduit ; les autres exécutables comme « bitcoin-cli » ne sont pas encore concernés, et le travail pour les environnements macOS et Windows reste à accomplir.

Le développeur indique ne pas souhaiter poursuivre ces travaux, préférant se concentrer sur d’autres projets. Il invite toute personne intéressée à utiliser des tokens LLM inutilisés pour tenter de résoudre les problèmes résiduels.