Installer un portefeuille Bitcoin et effectuer un paiement

Magazine
Marque
Linux Pratique
Numéro
104
Mois de parution
novembre 2017
Spécialité(s)


Résumé
Effectuer un paiement en Bitcoin est une opération appelée à devenir courante vu le succès des monnaies numériques par chiffrement. Toutefois, ce n’est, sur le principe, pas tout à fait aussi simple qu’envoyer un courriel, et encore, en considérant ici leur version chiffrée… Nous allons donc consacrer ce tutoriel à regarder les différentes étapes de ce processus d’un peu plus près.

Body

Outil utilisé : bitcoincore 0.14.2

Étape 1 : Instructions d'installation

Pour commencer, il faut disposer d’un portefeuille Bitcoin. Plus d’une dizaine de logiciels existent en la matière (comme on peut s’en convaincre à l’adresse suivante : https://en.bitcoin.it/wiki/Clients), et on ne compte plus les sites web proposant ce service, toutefois, dans le cadre de ce tutoriel, nous allons nous concentrer sur la solution de base : le portefeuille officiel Bitcoin Core (au lieu d’une version certes simplifiée, mais incomplète du coup, ou plus sophistiquée et donc plus compliquée). Parler de « portefeuille » dans ce cas est d’ailleurs un poil réducteur dans la mesure où le logiciel Bitcoin Core est en fait un nœud Bitcoin complet, capable non seulement de recevoir et de renvoyer des Bitcoins, mais également d’en miner (avec votre CPU, donc plutôt en théorie…), et de valider des transactions. Notons que face à une liste de clients Bitcoin, il est naturel de chercher à différencier les options (souvent avec un commentaire rapide, repris du site officiel de la solution en question), tous les fournisseurs de solutions alternatives ont alors beau jeu de critiquer la solution « par défaut » retenue ici (il en va de la justification de leur travail et bien souvent de la simple promotion de leur offre commerciale). Toutefois, il faut reconnaître que disposer d’un nœud Bitcoin complet et fonctionnel implique de le faire tourner plusieurs heures par jour pour qu’il se synchronise, et donc de disposer d’une connectivité à Internet adéquate, avec au moins 50ko/s de débit ascendant. Enfin, l’utilisation du Bitcoin est tout simplement illégale dans certains pays comme le Bangladesh, la Bolivie, l’Équateur ou le Kirghizistan (cf. https://bitcoin.org/en/full-node#costs-and-warnings).

J’imagine que ces dernières considérations n’ont pas même égratigné votre enthousiasme, et que vous êtes au contraire impatient de commencer par le téléchargement de l’une des versions précompilées de Bitcoin Core proposées sur Bitcoin.org : https://bitcoin.org/fr/telecharger.

Il faut ensuite décompresser l’archive et se déplacer dans le dossier bin/ ainsi créé pour y lancer la commande :

./bitcoind

Cette dernière se charge alors automatiquement de créer un portefeuille et de télécharger la blockchain du Bitcoin afin de pouvoir à son tour émettre des transactions (à la suite des précédentes dans l’historique mondial). Cette dernière opération se révèle de plus en plus problématique, car cela représente fin 2017 un téléchargement d’environ 150Go (et cela ne fera qu’augmenter). C’est donc long, puis encombrant, mais c’est le prix de la liberté (vous ne dépendrez ainsi d’aucun autre fournisseur de service).

Le résultat du lancement du démon Bitcoin Core (bitcoind) se matérialise dans le dossier caché ~/.bitcoin/. situé à la racine de votre répertoire utilisateur (dont le chemin est symbolisé ici par un tilde, comme votre interpréteur de commandes le comprend). Dans ce dossier, on trouvera principalement deux choses intéressantes :

- un fichier de configuration bitcoin.conf qui permet d’affiner le comportement de notre nœud Bitcoin ;

- un ensemble de fichiers constituant la blockchain (pour un total d’environ 150Go fin 2017).

Enfin, lancer bitcoind c’est bien, mais le lancer à chaque démarrage c’est mieux. Il est ainsi envisageable de créer un service systemd ou une instruction cron qui se chargerait de démarrer le logiciel avec votre ordinateur. Pour les ordinateurs personnels, une solution peut consister à ajouter une tâche au démarrage de Xfce (ou de votre environnement de bureau préféré) pour lancer bitcoind. Notez de plus qu’il existe une version graphique du client officiel Bitcoin Core, livrée dans l’archive que vous avez décompressée et nommée : bitcoin-qt (Figure 1). Cette version est pratique pour effectuer les opérations courantes à la souris, mais encombre votre mémoire RAM pour rien le reste du temps. Je la cite ici, car elle propose une case à cocher libellée : Lancer automatiquement au démarrage, mais cette fonctionnalité n’a d’effet que sous Microsoft Windows (ce qui est plutôt rassurant pour un logiciel lancé depuis un simple utilisateur de votre système).

bitcoin-qt

Figure 1

Étape 2 : Premiers pas

Si vous avez bien suivi ce tutoriel, vous vous retrouvez avec une console occupée, où les messages du journal d’exécution de Bitcoin Core défilent au rythme des téléchargements de portions de blockchain. En partant de là, vous pourriez récupérer la main sur votre console en effectuant la combinaison de touches [CTRL]+[Z] pour suspendre le processus en cours d’exécution et retrouver une invite de commande, puis lancer la commande bg pour que le processus ainsi suspendu reprenne son cours, mais en arrière-plan, vous laissant la main dans le terminal. Cette manipulation peut vous tirer d’affaire chaque fois que vous avez oublié de mettre un & à la fin d’une commande qui garde la main trop longtemps à votre goût. Toutefois, dans notre cas, une fois revenu à la vie, bitcoind va continuer à polluer votre console avec son journal d’exécution… Lancer un deuxième terminal est donc préférable pour continuer à jouer (pour un prochain lancement, essayez donc l’option -daemon de bitcoind).

Dans ce deuxième terminal, nous allons afficher l’adresse qui a été créée pour vous, à l’aide de la commande suivante :

./bitcoin-cli listreceivedbyaddress 0 true

Cette dernière vous retournera les quelques lignes de texte représentant un tableau JSON contenant des objets dont les entrées sont les suivantes :

- adresse ;

- compte ;

- montant ;

- confirmations.

On s’attend ici à trouver un seul objet, avec votre nouvelle adresse et un montant associé de 0 BTC.

La commande :

./bitcoin-cli newaddress

Vous permettra, à tout moment, de disposer directement d’une nouvelle adresse. Comme nous l’avons vu dans l’article principal, toute transaction en Bitcoin est publique et l’historique d’une adresse est facilement retrouvable sur le Web. De ce point de vue, être capable de générer rapidement une nouvelle adresse se révèle intéressant. Par exemple chaque interlocuteur peut ainsi être cloisonné avec une nouvelle adresse, voire même chaque nouvelle entrée d’argent. Vous n’être propriétaire d’une adresse que si vous en connaissez sa clé secrète, et ça, tant que vous n’en avez pas fait un usage révélateur, ça reste discret.

Étape 3 : Protéger son portefeuille numérique

Il ne serait pas sérieux d’aller plus loin dans ce tutoriel sans prendre le temps de chiffrer son portefeuille Bitcoin à l’aide d’une clé privée elle-même déverrouillable par mot de passe, lui-même plus sérieusement dénommé phrase de passe. Pour ce faire, il convient donc d’élaborer une phrase de passe décente (c’est-à-dire de plus de douze caractères, avec de la ponctuation et des chiffres). Mon truc sur la question, c’est de lancer plusieurs fois la commande mkpasswd dans un terminal (en saisissant une nouvelle série de caractères aléatoires au clavier en guise de sel ou graine d’aléa à chaque exécution), et d’assembler plusieurs résultats (mais pas tous) dans mon gestionnaire de mots de passe (type keypassx). Cette manipulation ne protège pas de tout, mais elle éviterait certains désagréments liés à une découverte future de failles dans l’algorithme de hachage mis en œuvre par défaut dans mkpasswd.

Une fois qu’on a décidé d’une bonne passphrase, on peut chiffrer son portefeuille avec la commande :

./bitcoin-cli encryptwallet <passphrase>

Une fois l’opération réussie, une petite sauvegarde de portefeuille s’impose… Elle prendra la forme d’un simple fichier binaire, qui pourra être utilisé pour rétablir votre portefeuille sur une nouvelle machine. L’objectif étant de faire en sorte que cette copie du portefeuille ne disparaisse pas avec votre ordinateur principal en cas de gros crash, de vol ou d’autodestruction complète. Il vous faudra donc copier ce fichier sur plusieurs autres supports physiques, si possible pas tous stockés chez vous, car un incendie pourrait encore venir à bout de l’ensemble des copies, que l’on peut par contre disséminer chez des amis, dans son téléphone, dans le grenier de sa grand-mère, dans la bibliothèque du bureau du boulot, etc. (même si ce dernier concept est en train de disparaître entre openspace temporaire de pépinière d’entreprises et travail à domicile…).

./bitcoin-cli backup <path>

Voici donc la commande qui copiera un wallet.dat au bout du chemin passé en argument. Après c’est à vous de jouer…

Étape 4 : Effectuer une transaction

Faisons maintenant un bond en avant dans le temps et considérons que votre nœud Bitcoin a fini de se synchroniser avec le réseau et qu’il valide joyeusement des transactions pour vous (vous rapportant peut être quelques satoshis au passage… Satoshis ? C’est le nom donné à la plus petite unité de valeur de Bitcoin, le dix-millionième, soit : 0,000 000 01 BTC). Considérons également que vous disposez en plus d’un solde positif pour l’une de vos adresses, ce que nous allons commencer par vérifier avec la commande suivante (et nous jetterons un voile pudique sur tout ce qu’il vous aura fallu faire pour parvenir à cette fin, notamment sur le nombre vertigineux de CAPTCHA qu’il vous aura fallu résoudre auprès de dizaines de faucets, ces robinets à satochis en libre service sur le Web. Après en avoir trouvé qui honorent vraiment leurs promesses, on est considérablement enrichi, car d’une part on a acquis quelques fractions de Bitcoin, mais surtout on s’est souvenu d’à quel point son temps est précieux, chaque instant perdu ne se représentant plus… Et dire que c’est aujourd’hui un métier à part entière (en Chine) de résoudre des CAPTCHA pour les autres. Car oui, on trouve plusieurs offres sérieuses à ce sujet sur le Web, puisque les centimes des uns font vivre les familles des autres et qu’il n’y a semble-t-il que Thorgal et moi qui refusent d’avoir un maître, comme d’en être un) :

./bitcoin-cli getwalletinfo

La sortie obtenue sur la console devrait alors entre autres comporter une valeur nommée balance, résumant votre solde, toutes adresses confondues.

Voici un exemple de résultat :

{

    "walletversion" : 60000,

    "balance" : 0.00200000,

    "txcount" : 17,

    "keypoololdest" : 1398809500,

    "keypoolsize" : 196,

    "unlocked_until" : 0

}

Notons au passage qu’il est possible de regrouper plusieurs adresses au sein d’un même compte, et de disposer de plusieurs comptes dans son portefeuille. Ce niveau intermédiaire (les comptes) vient donc surcharger bon nombre de commandes d’arguments optionnels, et a même été récemment supprimé pour certaines monnaies dérivées, comme le Gridcoin. L’idée d’avoir plusieurs adresses pour un même compte (disons pour un même cas d’usage) n’étant pourtant pas tout à fait dénuée de sens comme nous l’avons vu concernant la mis en place d’un minimum de vie privée à l’usage du Bitcoin.

À partir de là, il est possible de transférer vos 0,002 BTC à quelqu’un d’autre, en utilisant la commande suivante :

./bitcoin-cli sendtoaddress <bitcoinaddress> <montant> [commentaire] [commentaire-dest]

Les deux arguments à fournir impérativement sont l’adresse Bitcoin du destinataire et le montant. Ce dernier ne doit pas comporter plus de 8 décimales, marquées par un point (et non une virgule) à la monde anglaise donc. Les deux champs de commentaire correspondent à ce qui apparaîtra dans votre historique, et celui du destinataire, pour documenter la transaction.

Si vous avez bien suivi toutes les étapes, le logiciel doit vous renvoyer un message d’erreur, arguant du fait que vous n’avez pas préalablement déverrouillé votre portefeuille, et que les opérations importantes sont donc refusées. En effet, pour pouvoir dépenser vos Bitcoins, il faut indiquer au portefeuille que c’est bien le propriétaire qui est à l’initiative, en saisissant la passphrase pour obtenir temporairement les privilèges adéquats (fonctionnement qui n’est pas sans rappeler le déverrouillage d’une clé PGP par exemple).

./bitcoin-cli walletpassphrase <passphrase> <durée>

Vous disposerez alors de la durée exprimée en seconde pour réaliser votre transaction. Si vous indiquez 3600 secondes, et que vous souhaitez reverrouiller votre portefeuille au bout de quelques minutes, la commande suivante est faite pour vous :

./bitcoin-cli walletlock

Une fois votre transaction lancée, Bitcoin Core vous répond avec object JSON comme il est de coutume, et entre autres valeurs un txid ou numéro de transaction. Ce numéro vous permet ensuite de suivre l’avancée des opérations via la commande :

./bitcoin-cli gettransaction <txid>

On suivra notamment ici, et avec avidité, l’arrivée des premières confirmations de la transaction (dans le listing JSON retourné) par les autres nœuds Bitcoin complets du réseau scellant la destinée de cette transaction. La plupart des marchands en ligne attendent en effet 3 à 5 confirmations avant de considérer une transaction comme réelle et complètement effectuée.

Aller plus loin

L’interface de commande de Bitcoin Core permet bien d’autres opérations, comme les paiements à multiples destinataires, le réglage des frais de transaction (ajustés à la valeur courante sinon), et le suivi de nombreux paramètres du réseau. Pour creuser un peu les possibilités de cette interface, voici deux pistes :

- https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

- https://bitcoin.org/en/developer-reference

D’autres opérations méritent sinon votre attention, comme les transactions à multi-signature, ou les transactions dites hors ligne, qui s’appuient sur un couple de portefeuilles : l’un plénipotentiaire, mais caché sur une machine hors ligne, séparée de toute connectivité dans l’idéal, et l’autre connecté, mais incapable de valider une transaction, de sorte qu’aucune escalade de privilège depuis l’Internet sur votre machine connectée ne puisse déboucher sur une dépense ; certains portefeuilles se sont spécialisés dans cette démarche de sécurité, mais ça, je vous laisse le découvrir en ligne.




Article rédigé par

Par le(s) même(s) auteur(s)

Solar Hammer : pourquoi les tâches solaires menacent les réseaux ?

Magazine
Marque
Hackable
Numéro
26
Mois de parution
septembre 2018
Spécialité(s)
Résumé

Ce phénomène des tâches solaires, découvert en 1859, est à l’origine de bourrasques de vent solaire qui, lors des périodes cycliques de forte activité, impactent sur Terre l’équilibre des phénomènes électriques et électromagnétiques sur lesquels s’appuie une grande partie de la civilisation occidentale.

Monnaies cryptographiques : du Bitcoin au LHC@home

Magazine
Marque
Linux Pratique
Numéro
104
Mois de parution
novembre 2017
Spécialité(s)
Résumé

Le monde est doté de monnaies basées sur le chiffrement depuis presque une décennie, avec l’invention du Bitcoin en 2008. Le pari était osé : inventer une valeur et il est réussi avec une cote avoisinant les 4000 € en cet automne 2017. Si le cours du Bitcoin atteste de ses qualités (et de la confiance qu’il inspire à ses utilisateurs), il ne saurait éclipser ses défauts, que déjà de nombreuses monnaies alternatives proposent de corriger.

Les derniers articles Premiums

Les derniers articles Premium

Cryptographie : débuter par la pratique grâce à picoCTF

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’apprentissage de la cryptographie n’est pas toujours évident lorsqu’on souhaite le faire par la pratique. Lorsque l’on débute, il existe cependant des challenges accessibles qui permettent de découvrir ce monde passionnant sans avoir de connaissances mathématiques approfondies en la matière. C’est le cas de picoCTF, qui propose une série d’épreuves en cryptographie avec une difficulté progressive et à destination des débutants !

Game & Watch : utilisons judicieusement la mémoire

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Au terme de l'article précédent [1] concernant la transformation de la console Nintendo Game & Watch en plateforme de développement, nous nous sommes heurtés à un problème : les 128 Ko de flash intégrés au microcontrôleur STM32 sont une ressource précieuse, car en quantité réduite. Mais heureusement pour nous, le STM32H7B0 dispose d'une mémoire vive de taille conséquente (~ 1,2 Mo) et se trouve être connecté à une flash externe QSPI offrant autant d'espace. Pour pouvoir développer des codes plus étoffés, nous devons apprendre à utiliser ces deux ressources.

Raspberry Pi Pico : PIO, DMA et mémoire flash

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Le microcontrôleur RP2040 équipant la Pico est une petite merveille et malgré l'absence de connectivité wifi ou Bluetooth, l'étendue des fonctionnalités intégrées reste très impressionnante. Nous avons abordé le sujet du sous-système PIO dans un précédent article [1], mais celui-ci n'était qu'une découverte de la fonctionnalité. Il est temps à présent de pousser plus loin nos expérimentations en mêlant plusieurs ressources à notre disposition : PIO, DMA et accès à la flash QSPI.

Les listes de lecture

8 article(s) - ajoutée le 01/07/2020
Découvrez notre sélection d'articles pour faire vos premiers pas avec les conteneurs, apprendre à les configurer et les utiliser au quotidien.
11 article(s) - ajoutée le 02/07/2020
Si vous recherchez quels sont les outils du DevOps et comment les utiliser, cette liste est faite pour vous.
8 article(s) - ajoutée le 02/07/2020
Il est essentiel d'effectuer des sauvegardes régulières de son travail pour éviter de perdre toutes ses données bêtement. De nombreux outils sont disponibles pour nous assister dans cette tâche.
Voir les 49 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous