Pourquoi puis-je perdre de l’argent à cause des adresses de change ?

Il y a plusieurs cas de figure où vous pourriez perdre vos bitcoins en raison d’une mauvaise compréhension et/ou gestion de vos adresses de change. Pour vous aider à travers cette broussaille labyrinthique que sont les adresses Bitcoin, nous allons donner quelques exemples – fictifs mais qui reflètent des expériences très réelles d’utilisateurs malchanceux – de situations où de fait vous perdriez une partie de vos fonds.

 

Ne pas garder un oeil sur ses adresses

Mettons que vous utilisiez un wallet déterministe, comme Electrum ou Armory, mais que vous ne soyez pas non plus un utilisateur très régulier de la chose. Vous décidez quand même de vérifier l’état de vos adresses, c’est-à-dire, un oeil sur vos fonds.

Vous vous rendez alors sur blockchain.info, pour voir ce qu’il en est. En passant en revue vos adresses, vous vous rendez compte qu’une seule d’entre elle contient des bitcoins. Vous décidez alors de garder un oeil sur cette adresse pour avoir désormais une idée de votre balance de fonds.

Quelques jours plus tard, vous effectuez un paiement depuis cette adresse. Mettons que vous aviez 1 bitcoin sur votre adresse que vous avez payé pour un service qui coûtait 0.5 bitcoin. Vous vous attendez à voir 0.5 (ou un peu moins, s’il y a eu des frais de transfert) sur votre adresse. Mais là, surprise, vous voyez, sur blockchain.info, que votre adresse est vide et que le change a été envoyé à une adresse inconnue.

Vous vous dites alors que quelqu’un a piraté votre wallet et s’est approprié vos bitcoins. Vous décidez de formater votre ordinateur sur lequel tourne votre programme Bitcoin. Grossière erreur puisque l’activité du porte-monnaie était tout à fait normale. Le change a été envoyé sur une adresse générée de manière déterministe, de sorte que l’adresse de paiement s’est retrouvée vide.

Vous pouvez toujours récupérer l’argent de l’adresse de change en générant à nouveau votre ancien wallet à partir de la phrase en 12 mots que vous avez reçue à la création de votre wallet.

 

Mauvaise gestion des sauvegardes I

Bitcoin-Qt est un porte-monnaie à réservoir d’adresses créées aléatoirement. Ce réservoir contient 100 adresses parmi lesquelles votre wallet va choisir lorsqu’il renverra le change d’une transaction. Régulièrement, il est important d’effecteur une sauvegarde, un « backup » du wallet et de conserver cette sauvegarde en sécurité – comme vous devriez faire avec votre ordinateur personnel.

Admettons qu’après avoir fait une sauvegarde il y a plusieurs mois de cela, et avoir depuis utilisé très fréquemment Bitcoin, votre disque dur lâche. Heureusement, vous possédez une sauvegarde de votre wallet et vous le réinstaller sur votre nouvel ordinateur. En temps normal, une copie de votre portefeuille électronique devrait être capable de générer toutes les adresses qu’il a un jour contenues, puisque ces adresses sont sur le réseau Bitcoin, en attente d’être décryptées par des clés – clés que possède votre porte-monnaie.

Mais à votre désagréable surprise, lorsque vous réinstallez votre porte-monnaie, il est vide. Ce qui s’est passé est la chose suivante : vous avez généré assez de change depuis votre dernière sauvegarde pour remplir l’entièreté des 100 adresses du réservoir de votre wallet. Lors de la 100ème transaction, votre wallet a déplacé votre change sur une adresse qui, du coup, ne faisait pas partie des 100 adresses sauvegardées. Et comme votre change constituait l’entièreté de vos fonds, tous les bitcoins de vos 100 adresses ont été déplacés.

La seule manière de récupérer, dans ce cas, vos bitcoins est de demander à des professionnels de tenter de récupérer le programme de votre wallet depuis votre disque dur défectueux. Vous auriez alors une chance de récupérer les adresses que vous n’avez pas sauvegardées.

 

 

Mauvaise gestion des sauvegardes II

Continuons avec les wallets de type Bitcoin-Qt. Admettons que tous vos fonds se trouvent sur une seule adresse, et que ces fonds soient constitués de plusieurs unspent output. Une adresse unique recevant plusieurs paiement aura pluseurs unspent outputs. Conséquemment, lorsque l’utilisateur dépensera des bitcoins, la balance du wallet sera répartie alors sur plusieurs adresses de change.

Mettons que vous ayez une adresse qui contiennent 3 unspent outputs de respectivement de 3, 5, et 7 bitcoins. Vous effectuez une transaction de 6 bitcoins. Votre wallet va fondre l’unspent output de 7 bitcoins en deux : un de 6 bitcoins et un de 1 bitcoin. Le change de 1 bitcoin va être renvoyé sur une nouvelle adresse. Votre wallet affichera alors une balance de 9 bitcoins.

Si vous n’avez pas fait de sauvegarde récente et que vous utilisez un réservoir de 100 adresses aléatoires, alors le risque est que lors d’un crash de votre disque dur, vous allez réinstaller Bitcoin-Qt à partir de votre sauvegarde et vous verrez une balance de 8 bitcoins au lieu de 9. Ce qui se sera passé et que l’adresse sur laquelle a été envoyé le change de 1 bitcoin de votre dernière transaction ne fera partie des 100 adresses de votre sauvegarde.

 

Un seul wallet, plusieurs appareils

Bitcoin-Qt, encore. Imaginons que vous ayez deux appareils depuis lesquels vous utilisiez Bitcoin. Un ordinateur portable, et un ordinateur de salon. Si vous voulez avoir le même wallet sur les deux appareils, vous n’avez qu’à copier le fichier de sauvegarde wallet.dat depuis votre appareil principal, et l’importer sur l’autre appareil.

Il se peut qu’un jour vous remarquiez une différence entre votre wallet principal et le wallet de votre appareil secondaire. Une différence d’ailleurs assez remarquable, puisqu’il est fort probable que vous voyiez d’un côté « 0 bitcoin » et de l’autre le montant correct.

En fait, la copie de Bitoin-Qt sur l’appareil principal a utilisé la dernière adresse disponible du réservoir, détenu conjointement par l’appareil secondaire. Lors de la dernière transaction, le change a été envoyé sur une nouvelle adresse que l’appareil secondaire ne reconnaissait pas. Cela rend la copie de votre wallet inutilisable à moins que vous y remédiez.

Il vous faut sauvegarder les copies de votre wallet sur vos deux appareils. Exportez alors toutes les clés privés depuis vos deux ordinateurs et importez-les (il faudrait en vérité plutôt les « sweeper ») dans un nouveau wallet. Si vous ne l’aviez pas encore compris, à moins que vous vous sentiez parfaitement à l’aise avec les adresses de change, n’utilisez pas Bitcoin-Qt.

 

Les paper wallets

Les portefeuille physiques, qu’ils soient sous forme de papier ou autre, sont souvent un bon moyen de conserver ses bitcoins en sécurité. Mais c’est lorsqu’il s’agit de dépenser les bitcoins préservés sur ce type de wallet que des problèmes peuvent surgir.

Imaginons que vous possédiez un paper wallet, tel que vous pouvez en faire faire sur bitadress.org, avec 10 bitcoins dessus. Vous décidez un jour de dépensez une partie de ces bitcoins pour acheter quelque chose qui vaut 1 bitcoin. Ce qu’il vous faut faire, c’est alors importer votre paper wallet dans un programme de wallet électronique (un hot wallet). Vous importez alors votre clé privée dans le wallet de votre choix, et êtes ainsi en mesure de dépenser directement vos bitcoins.

Vous effectuez votre paiement de 1 bitcoin avec succès. Vous vous dites alors que vous préférez garder les 9 bitcoins restant en sécurité sur votre paper wallet. Vous supprimez alors le hot wallet de votre ordinateur. Malheureusement pour vous, la prochaine fois que vous vérifierez l’état de votre paper wallet, il sera complètement vide.

La réponse n’est pas mystérieuse : les 9 bitcoins de change ont été envoyé à une adresse de change, que vous pouvez voir depuis blockchain.info. Toutefois, puisque vous avez supprimé votre hot wallet de votre ordinateur, vous avez par la même occasion supprimer les clés permettant d’accéder aux bitcoins de cette adresse. Autrement dit, vous avez définitivement perdu ces bitcoins.

 

Se faire dérober ses bitcoins depuis une adresse de change

Un vol de ce genre est typique des paper wallets, qu’il faut importer sur son ordinateur, dans un hot wallet. Admettons que vous ayez 2 bitcoins sur un paper wallet et que vous les importiez sur un hot wallet, par exemple MultiBit. Une erreur serait de jeter votre paper wallet dans une poubelle, surtout si elle est publique (e.g. votre lieu de travail). Car il est fort probable que dans un futur proche, vous achetiez des bitcoins. Dans ce cas, les bitcoins que vous allez acheter iront dans votre wallet MultiBit ; or ce wallet contient aussi la clé privée de votre paper wallet.

Même si vous n’utilisez plus ce paper wallet, quelqu’un d’autre peut en réutiliser la clé privée. N’oubliez pas ceci : l’adresse associée à votre paper wallet a aussi été importée dans votre hot wallet. Elle est donc techniquement ré-utilisable, car votre hot wallet a été créé à partir de la clé privée de votre paper wallet. Autrement dit, votre wallet MultiBit est la version électronique de votre paper wallet. Sans le savoir, vous avez un wallet à double.

Et il existe en l’occurrence des programmes permettant d’importer des clés privées, et qui détectent des transfères de bitcoins liés à certaines adresses pour ensuite les détourner automatiquement. Or votre paper wallet contient une clé privée, qui pourrait être volée par quelqu’un qui récupérerait le papier dans une poubelle – croyez-nous, le scénario n’est pas si tiré par les cheveux.

Et le jour où vous effectuerez une transaction qui génère du change, ce change ira, ainsi que MultiBit fonctionne, à l’adresse privée associée au paper wallet qui a été importé dans le programme. Et bien entendu, à moins de connaître le responsable du vol, il est impossible de récupérer ces fonds.