Ou: comment je me suis fourvoyé pendant 2 jours.
Nous sommes le 15 janvier 2009, cinq heures et six minutes après le dernier test de Satoshi, lui permettant de vérifier que Bitcoin fonctionnait correctement; même dans le cas de transactions “compliquées” (voir BBFF #5).
Tout débute alors au bloc 286, miné dans la matinée du 13 janvier par Satoshi (comme l'immense majorité des blocs au lancement de Bitcoin). 25 BTC sont alors envoyés à une nouvelle adresse, pour le moment inconnue.
Cet envoi est d'ailleurs étonnant: Satoshi n'envoyait jusqu'à présent qu'entre 1 et 10 BTC, pas 25. Mais comme toujours, il y a une explication !
En effet, après la publication du livre blanc le 31 octobre 2008, plusieurs cryptographes et informaticiens se sont beaucoup intéressés à Bitcoin. Hal Finney était l'un d'eux.
La seconde personne dont on connaît l'identité est Dustin Trammel.
Cet informaticien aurait alors conversé pendant une dizaine de mails avec Satoshi, lui faisant part de remarques; notamment le fait qu'initialement, il fallait disposer de l'IP du destinataire pour envoyer des bitcoins. Et cela posait un véritable problème de sécurité (cas des attaques DDos).
Suite à une discussion que D. Trammel a rendu publique, Satoshi lui aurait envoyé ces 25 BTC en compensation de quelques bugs auxquels D. Trammel a fait face.
C'est ainsi que les blocs 545 et 546, le 15 janvier à 8h08, arrivèrent. Les blocs les plus bizarres jusqu'à présent (à mes yeux).
En effet, dans ces derniers, D. Trammel a réalisé 3 échanges très étonnants.
Dans le MÊME bloc, il a:
envoyé le seul BTC de l'adresse ...45af vers l'adresse ...dc0c → jusque là, ok
envoyé 24 BTC de l'adresse ...92dc vers ...45af → ok
puis a envoyé les 24 BTC pas encore reçus sur ...45af vers ...dc0c → wtf
s'est envoyé à la même adresse (...dc0c vers ...dc0c) le 1 BTC pas encore reçu → wtf
a envoyé le 1 BTC pas encore reçu de l'adresse ...dc0c à l'adresse ...45af → wtf
enfin, s'est envoyé à la même adresse (...dc0c vers ...dc0c) les 24 BTC pas encore reçus → wtf
Et là, vous avez tout a fait raison de vous dire "Mais What The Fuck".
Pour deux raisons:
plutôt que de réaliser ces 6 échanges franchement bizarres, il aurait simplement pu envoyer 24 BTC de ...92dc vers ...dc0c. Et c'est tout !!! En 1 transaction, c’était réglé, quoi !
"Mais attends Prof', t'es entrain de me dire qu'il a dépensé dans un même bloc des BTC qui n'avaient même pas encore été minés / sécurisés dans un bloc?!?!"
La réponse: oui. Et rien dans le code de Bitcoin n'empêche cela. À la manière des transactions du type CPFP (Child Pays for Parents), cela est tout à fait possible; à condition évidemment que les transactions soient ajoutées au bloc dans l'ordre, de telle manière à ce que chaque adresse ait le bon solde "intermédiaire" pour réaliser la transaction "suivante".
Bon. Donc D. Trammel s'est envoyé 25 BTC de manière trèèèès atypique. Mais est-on sûr que c'est lui?
À cette question, la réponse est: oui.
En effet, sur son blog, il a démontré via signature qu'il possédait bien l'adresse de réception des 25 BTC, provenant initialement du bloc 286 (qu'on estime donc provenir et avoir été miné Satoshi). J'ai moi-même vérifié la signature, comme visible ci-dessous:
Conclusion?
La signature prouve à 100% que D. Trammel possède bien l'adresse sur laquelle il a reçu les 25 BTC initiaux. C'est donc bien lui qui a réalisé les transactions (bizarres) du bloc 546.
Il n'a jamais expliqué ce qu'il s'était passé dans ce bloc (et il m’a répondu évasivement sur Twitter lorsque je lui ai posé la question il y a quelques semaines); mais l'explication la plus simple est que, comme il débutait sur Bitcoin, il ait simplement voulu effectuer la première transaction; mais observant que cette dernière ne passait pas automatiquement (bah oui Dustin, faut attendre 10 minutes !), il ait pris peur et dans l’impossibilité d’annuler sa transaction, il ait simplement spammé les transactions contraires pour essayer de revenir à l'état initial. Tout simplement?
"Mais Prof', pourquoi disais-tu au tout départ que tu t'étais planté?"
Eh bien tout simplement parce que j'étais persuadé que les transactions du bloc 546 étaient en fait un autre test de Satoshi, testant le CPFP sur Bitcoin et vérifiant que cela n'impliquait pas de bugs. J'en étais vraiment persuadé. Ça collait tellement bien !
Je dois toutefois admettre que la signature de D. Trammel sur l'adresse ...92dc est "troublante" et en même temps claire, car elle prouve bien qu'il dispose la clé privée de cette dernière (i.e. qu'elle lui appartient).
Un nouveau Bitcoin Blockchain Fun Fact résolu, semble-t-il !
À très vite ! :)