Try Bitcoin


🇬🇧 | đŸ‡Ș🇾 | đŸ‡©đŸ‡Ș

Bienvenue !

Il s'agit d'un tutoriel interactif destiné aux débutants qui souhaitent en savoir plus sur l'aspect technique du bitcoin. Une expérience du codage est utile, mais pas obligatoire.

Cela prend environ 20 minutes à compléter. Il est conçu pour un ordinateur de bureau, alors s'il vous plaßt, je vous en supplie, n'essayez pas sur un mobile.

Try Bitcoin utilise des bibliothÚques JavaScript Bitcoin populaires comme bitcoinjs et bip-schnorr pour expliquer les différentes parties du systÚme. Il présente également quelques commandes Bitcoin Core CLI .

Certains concepts ont été simplifiés à des fins pédagogiques, mais ne vous laissez pas décourager ! L'objectif est de permettre aux participants de mieux comprendre le fonctionnement de Bitcoin et d'acquérir la confiance nécessaire pour s'attaquer aux nombreux livres, cours et sites Web qui permettent d'approfondir le sujet.

Sur la droite, nous avons quelque chose qui s'appelle une 📟 console 📟. Vous devrez y taper des commandes et appuyez sur la touche "EntrĂ©e" de votre clavier. AprĂšs cela, la commmande renverra une rĂ©ponse.


Pour commencer, tapez start dans la console.

Leçon 1

La plupart des gens connaissent le bitcoin en tant que type de monnaie, mais qu'est-ce que cela signifie d'en posséder ?

Les unitĂ©s de bitcoin sont attribuĂ©es Ă  des Ă©lĂ©ments appelĂ©s 🔑 clĂ©s publiques. 🔑.

Dans des situations avancĂ©es, les bitcoins peuvent ĂȘtre assignĂ©s Ă  plusieurs clĂ©s publiques. Des scripts rendent cela possible, mais nous ne les aborderons pas.

Pour l'instant, il est possible de corréler la propriété des bitcoins avec une seule clé publique.

À chaque clĂ© publique correspond une 🔑 clĂ© privĂ©e 🔑.

Si la clĂ© publique peut ĂȘtre partagĂ©e, la clĂ© privĂ©e ne doit jamais ĂȘtre rĂ©vĂ©lĂ©e Ă  quiconque.


Commençons par générer une paire de clés publiques et privées pour voir à quoi elles ressemblent.

Tapez generateKeys() dans la console pour créer une paire de clés.

Leçon 2 - Signatures

Comme vous pouvez le constater, les clés publiques et privées peuvent ressembler à de grosses chaßnes de lettres et de chiffres. Ceux-ci sont encodés en hexadecimale.

Vous verrez que l'hexadécimale est souvent utilisé. Vous n'avez pas nécessairement besoin de savoir comment il fonctionne, mais simplement qu'il s'agit d'un moyen de représenter des données. Il est beaucoup plus facile pour l'homme de regarder et de reconnaßtre l'hexadécimale qu'un tas de 1 et de 0 !

Il s'avÚre que l'on peut faire des choses plutÎt cool avec des clés publiques et privées.

Une clĂ© privĂ©e peut ĂȘtre utilisĂ©e pour signer certaines donnĂ©es et crĂ©er une đŸ–‹ïž signature numĂ©rique đŸ–‹ïž.

La clé publique est ensuite utilisée pour vérifier que la signature est authentique. A-t-elle vraiment été signée par qui vous pensez ?

Cela signifie que vous pouvez signer numériquement un élément de données et que toute personne possédant votre clé publique peut vérifier que la signature provient bien de vous.


La clé privée que vous venez de générer a été enregistrée dans une variable appelée privateKey. Désormais, à chaque fois que vous tapez privateKey, le programme saura que vous faites référence à cette longue chaßne de lettres et de chiffres qui représente votre clé privée.

Créons une signature numérique en signant un message. Tapez signMessage(privateKey, "Hello World") dans la console. Vous pouvez changer la partie Hello World pour quelque chose de plus excitant (assurez-vous de garder les guillemets !).

AprÚs avoir appuyé sur Entrée, la signature numérique sera renvoyée.

Leçon 3 - Vérification de la signature

Bon travail ! Nous avons créé une signature numérique en utilisant la clé privée. Nous pouvons maintenant utiliser la clé publique correspondante pour vérifier l'authenticité de la signature.


Semblable Ă  la leçon prĂ©cĂ©dente, ce tutoriel a automatiquement enregistrĂ© les valeurs publicKey,message et signature vers des variables de mĂȘme nom.

Ce qui siginfie que tout ce que vous avez à faire est de taper verifySignature(publicKey, message, signature) pour vérifier que la signature provient bien de la clé privée que l'on pense.

Leçon 4 - Hachage

Comme prévu, la signature est valide !

Les signatures numĂ©riques de ce type font partie des technologies les plus importantes au cƓur du bitcoin. DĂ©penser des bitcoins revient en fait Ă  signer un message - un message de transfert de propriĂ©tĂ©.

Vous avez peut-ĂȘtre entendu parler de l'importance de protĂ©ger vos clĂ©s (privĂ©es). Voici pourquoi ! Toute personne qui y a accĂšs peut signer des messages en votre nom, des messages qui transfĂšrent la propriĂ©tĂ©, c'est-Ă -dire dĂ©penser, de vos bitcoins.

Une autre partie essentielle et connexe de Bitcoin est #ïžâƒŁ le hachage #ïžâƒŁ.

Le hachage est en quelque sorte la création d'une empreinte numérique pour un élément de données.

Tout commence par une fonction, la fonction de hachage, qui renvoie toujours des sorties, ou des hachages d'une taille définie. Cela est vrai quelle que soit la taille de l'entrée.

  • Tout comme les empreintes digitales, les hachages sont uniques. Sauf circonstances exceptionnelles, les hachages de deux choses diffĂ©rentes ne devraient jamais ĂȘtre les mĂȘmes.
  • Les fonctions de hachage sont Ă  sens unique. Vous ne pouvez pas faire de l'ingĂ©nierie inverse sur un hachage et dĂ©couvrir les donnĂ©es utilisĂ©es pour le faire.
  • Les hachages sont extrĂȘmement fiables dans le sens oĂč ils sont dĂ©terministes. Cela signifie que vous pouvez hacher le mĂȘme Ă©lĂ©ment de donnĂ©es encore et encore et vous obtiendrez toujours le mĂȘme rĂ©sultat.


Exemple

J'ai pris la phrase "Cypherpunks write code" et je l'ai fait passer par une fonction de hachage, représentée par cette boßte noire étincelante. Sur la droite, une chaßne de lettres et de chiffres apparaßt.

Cela n'a probablement pas l'air trÚs excitant. Le hachage résultant est en fait plus long que la phrase qui a été entrée, et il est maintenant complÚtement indéchiffrable. Mais si nous essayions de hacher quelque chose de plus long ? Que diriez-vous de hacher le premier paragraphe du livre blanc du Bitcoin ?

Regardez ça ! Ce long paragraphe a Ă©tĂ© rĂ©duit Ă  une chaĂźne unique de lettres et de chiffres. Comme prĂ©vu, il est totalement diffĂ©rent du hachage de "Cypherpunks write code", pourtant les deux hachages ont la mĂȘme longueur.

Vous voyez des hachages partout dans Bitcoin, des identifiants de transaction à la création d'adresses, en passant par les scripts qui définissent des conditions de dépense particuliÚres. Souvent, un élément d'information sera réduit à son hash pour gagner de la place.


Testons la propriété déterministe des fonctions de hachage.

Nous allons rĂ©gĂ©nĂ©rer ce hash nous-mĂȘmes. Tapez hash('Cypherpunks write code') pour voir que le hachage est le mĂȘme que celui de l'exemple.

Leçon 5 - Adresses

Les hashs correspondent ! Maintenant que nous connaissons les paires de clĂ©s publiques/privĂ©es et le hachage, nous pouvons commencer Ă  comprendre ce que signifie recevoir des bitcoins. Lorsque vous voulez en recevoir, vous fournissez une đŸ“Ș adresse đŸ“Ș pour que quelqu'un puisse l'envoyer.

En voici un exemple : 2NEwkTybLpYyaRooBFMXAJDtchRdA8FMM4G

Oui, je sais, une autre chaßne de lettres et de chiffres qui semble aléatoire... mais c'est en fait un hash !

Pour simplifier, les adresses sont des hachages de clés publiques. Vous vous souvenez, plus tÎt, quand nous avons appris que la propriété des bitcoins est corrélée aux clés publiques ? Voici comment.

Pour les applications avancées, les adresses peuvent correspondre à plusieurs clés publiques. Cela est rendu possible par ce qu'on appelle les scripts, mais cela dépasse le cadre de ce tutoriel.

Nous savons, grùce à la leçon précédente, que vous ne pouvez pas revenir en arriÚre avec les hachages. Si quelqu'un vous donne une adresse, vous ne pouvez pas faire l'ingénierie inverse de la clé publique utilisée pour la créer.


Essayez de gĂ©nĂ©rer une adresse pour vous-mĂȘme ! Tapez createAddress(publicKey). Cela invoquera la fonction createAddress() avec la clĂ© publique que vous avez crĂ©Ă©e prĂ©cĂ©demment.

Leçon 6 - Transactions et Coins

VoilĂ  l'adresse !

À ce stade, je dois dire ce qui est Ă©vident. N'envoyez pas de bitcoin Ă  cette adresse. Vous ne les reverrez jamais. Selon les mots du crĂ©ateur anonyme de Bitcoin, Satoshi Nakamoto,

"Les piÚces perdues ne font qu'augmenter légÚrement la valeur des piÚces des autres. Considérez cela comme un don à tout le monde."

Le mouvement du bitcoin est suivi par les đŸ§Ÿ transactions đŸ§Ÿ. Si Alice possĂšde un bitcoin et veut vous l'envoyer, la transaction ressemblerait Ă  ceci :

Vous verrez que la transaction est divisĂ©e en deux parties, l' âŹ‡ïž entrĂ©e âŹ‡ïž et laâŹ†ïž sortie âŹ†ïž.


Ceci est similaire à la comptabilité à double entrée, une pratique populaire chez les marchands italiens au 14Úme siÚcle. Leurs grands livres comportaient deux colonnes, une pour les débits et une pour les crédits.

La partie d'entrée de la transaction est comme la colonne "débit" et la partie de sortie est comme la colonne "crédit".

Source : Livre de comptes de Christopher Watrous, Débits et Crédits pour les comptes de Vincent Stillwill, Durham, Connecticut, 1817


Dans notre exemple, il n'y a qu'une entrée (le bitcoin d'Alice) et une sortie (maintenant votre bitcoin). Et si Alice avait 10 bitcoins ? Si elle ne veut vous en donner qu'un, elle doit préciser que les 9 autres lui seront rendus comme monnaie.

Voici Ă  quoi ressemble cette transaction :

Si Alice n'avait pas précisé qu'elle voulait récupérer la monnaie, les 9 bitcoins restants seraient allés à des personnes que nous appelons des mineurs (nous y reviendrons plus tard) !

L'analogie du billet d'un dollar

Comme vous le voyez, cette transaction a une entrée et deux sorties.

Les entrĂ©es et les sorties sont un peu comme des billets de banque. Ils ne peuvent pas ĂȘtre dĂ©composĂ©s sans une transaction. Si Alice n'a qu'un billet de 10 dollars et qu'elle veut vous donner 1 dollar, elle ne peut pas rendre la monnaie toute seule. Elle ne peut pas arracher 1/10e du billet et vous le donner. Elle doit crĂ©er une sorte de transaction, peut-ĂȘtre avec une caisse enregistreuse, et utiliser le billet de 10 $ comme entrĂ©e.

Les choses commencent à différer de l'argent traditionnel (aka fiat) quand nous regardons les dénominations. En Bitcoin, vous pouvez avoir un "billet" dans n'importe quelle dénomination. Dans cette analogie, Alice recevrait en fait un billet de 9 $ comme monnaie.

Les entrĂ©es et les sorties, l'entrĂ©e de 10 bitcoins d'Alice, sa monnaie de 9 bitcoins, et votre 1 bitcoin sont souvent appelĂ©s đŸȘ™ coins đŸȘ™.

Cela semble simple, mais n'oubliez pas qu'un "coin" peut ĂȘtre n'importe quelle dĂ©nomination de bitcoin. Il n'est pas nĂ©cessaire que ce soit 1 bitcoin. Il peut s'agir de 21 bitcoins, ou de fractions de bitcoins comme 0,1.

Vous entendrez souvent parler de "coin" lorsque les gens parleront de la vie privée.


Le logiciel "officiel" de Bitcoin, l' implémentation de référence, est quelque chose appelé Bitcoin Core. Bitcoin Core dispose d'un ensemble de commandes que vous pouvez utiliser pour gérer vos bitcoins.

Si nous jouons l'exemple oĂč Alice nous envoie un bitcoin, nous pouvons utiliser la commande getbalance pour voir que l'argent a Ă©tĂ© reçu.

Tapez bitcoin-cli getbalance dans la console.

Leçon 7 - Signature de la transaction

Le solde est correct ! Considérons maintenant le scénario dans lequel Bob vous envoie également 1 bitcoin (vous avez de la chance !).

Pour des raisons de confidentialité, il est déconseillé de réutiliser les adresses. Dans les exemples suivants, nous allons créer de nouvelles adresses lorsque cela est nécessaire.

Les détails sur la façon dont vous pouvez générer une gamme de nouvelles adresses sont en dehors du cadre de ce tutoriel. Vous pouvez en savoir plus en consultant BIP 32.

Vous créez une nouvelle adresse à donner à Bob, différente de celle que vous avez donnée à Alice.

Bob vous envoie un bitcoin, comme Alice l'a fait dans la leçon précédente. Vous avez maintenant 2 bitcoins.

Vous souhaitez acheter quelque chose à votre ami Hal pour 1,5 bitcoin. Pour ce faire, vous créez une transaction comme celle-ci :

  • Les deux entrĂ©es sont les bitcoins que vous avez reçus d'Alice et de Bob.
  • La premiĂšre sortie envoie 1,5 bitcoin Ă  Hal.
  • La deuxiĂšme sortie vous renvoie la monnaie de 0,5 bitcoin, Ă  une nouvelle adresse.

Cette transaction est presque prĂȘte, Ă  l'exception d'une chose trĂšs importante !

Nous avons appris prĂ©cĂ©demment que pour pouvoir dĂ©penser des bitcoins, vous devez signer un message qui autorise le transfert de fonds. C'est ainsi que vous empĂȘchez les autres de dĂ©penser vos bitcoins. Le message que vous signez est en fait la transaction !

Dans les exemples précédents, Alice et Bob devaient tous deux signer leurs transactions lorsqu'ils vous envoyaient des bitcoins.

Les transactions comportent une zone spĂ©ciale oĂč le dĂ©pensier ajoute sa signature numĂ©rique. Ce champ est nommĂ© scriptSig, bien qu'il existe de nombreux cas particuliers et de nombreuses rĂšgles Ă  ce sujet que nous ne couvrirons pas. Pour l'instant, tout ce que nous devons retenir, c'est :

1. les signatures vont dans le champ scriptSig, et

2. les transactions ne sont pas complÚtes tant qu'elles ne sont pas signées.


Vous trouverez ci-dessous les données brutes de notre transaction. Nous pouvons voir que les deux champs scriptSig (un pour chaque entrée) sont vides. Ils ne contiennent aucune signature.

Si nous essayons de diffuser cette transaction telle quelle sur le rĂ©seau Bitcoin, elle sera rejetĂ©e. La transaction doit ĂȘtre signĂ©e.


Nous utiliserons une fonction signTransaction() pour cela. C'est similaire à l'appel signMessage() fait précédemment, mais les données signées sont différentes. Au lieu d'accepter n'importe quel message arbitraire, ceci accepte une transaction. Il crée ensuite le nombre approprié de signatures, une par entrée.

La transaction brute que nous avons examinée ci-dessus a été sauvegardée dans la variable transaction.

Tapez signTransaction(privateKey, transaction) dans la console pour signer la transaction.

Leçon 8 - Diffusion d'une transaction

Vous voyez ces valeurs dans les champs scriptSig ? Cela signifie que la transaction a été signée !

Maintenant, nous pouvons aller de l'avant et la 📣 diffuser 📣. Cela signifie qu'il faut envoyer la transaction Ă  un nƓud Bitcoin. Ce nƓud va ensuite la propager au reste des nƓuds du rĂ©seau.

Chaque nƓud Bitcoin possĂšde un ensemble de pairs avec lesquels il "parle" rĂ©guliĂšrement. Lorsqu'un nƓud entend parler d'une nouvelle transaction, il la partage avec ses pairs.

il suffit seulement de quelques minutes pour qu'une transaction soit transmise au reste du réseau Bitcoin ! Au moment de la rédaction de cet article, il y a plus de 15,000 noeuds Bitcoin dans le monde.

Nous utiliserons le mĂȘme logiciel Bitcoin Core que prĂ©cĂ©demment pour faire la diffusion. Le nom de la commande est sendrawtransaction et elle accepte la transaction au format hexadĂ©cimal.

La conversion en hexadécimal a déjà été effectuée pour vous, mais vous remarquerez qu'il s'agit d'une longue chaßne de lettres et de chiffres ! Copiez la commande suivante et exécutez-la dans la console :

Leçon 9 - Attente des confirmations

Regardez ça ! AprÚs une diffusion réussie, le client Bitcoin Core renvoie l'identifiant de la transaction.

Comme il s'agit juste d'un exercice éducatif, nous ne pouvons pas faire grand-chose avec l'ID de la transaction, mais s'il était réel, nous serions en mesure de rechercher la transaction dans un explorateur de blocs et voir toutes sortes de détails à ce sujet.

Maintenant que le reste du rĂ©seau est au courant de votre transaction, celle-ci est presque finalisĂ©e, mais il reste encore une Ă©tape Ă  franchir : ⚒ le minage ⚒!

C'est lĂ  qu'intervient la partie "bloc" de la blockchain du bitcoin. AprĂšs avoir diffusĂ© une transaction, elle va dans une zone de stockage spĂ©ciale appelĂ©e le 🏊 mempool 🏊.

Les transactions non confirmĂ©es traĂźnent ici, attendant d'ĂȘtre ramassĂ©es par un mineur et mises dans un bloc.

Le mempool n'est pas un endroit unique et centralisĂ©. Chaque nƓud a son propre mempool. AprĂšs qu'une transaction soit diffusĂ©e, et avant qu'elle ne soit minĂ©e, elle se trouve dans les mempools de chaque nƓud qui a Ă©tĂ© mis au courant de la transaction.

Toutes les dix minutes environ, un mineur prend un ensemble de transactions non confirmées dans sa copie du mempool et les place, ou les "exploite", dans un bloc.


Frais

La probabilité que votre transaction se retrouve dans le bloc suivant dépend des autres transactions dans le pool de mémoire et des frais que vous choisissez de payer.

Nous n'avons pas explicitement abordĂ© les frais, mais nous en avons appris un peu plus Ă  leur sujet en examinant les sorties de monnaie. Vous vous souvenez de l'exemple oĂč Alice avait 10 bitcoins et voulait vous en envoyer un ? Elle a dĂ» prĂ©ciser que les 9 restants devaient lui ĂȘtre retournĂ©s, sinon ils auraient Ă©tĂ© considĂ©rĂ©s comme des frais ! Les frais vont au mineur qui crĂ©e le bloc.

Tout montant de bitcoin "restant" dans une transaction est considéré comme des frais.

Dans l'exemple prĂ©cĂ©dent, si Alice dĂ©cide de ne retourner que 8,5 bitcoins Ă  elle-mĂȘme, 0,5 bitcoin correspondra aux frais de transaction. Les calculs sont corrects : l'entrĂ©e totale de la transaction est de 10 (les 10 bitcoins d'Alice), et la sortie totale est de 9,5 (1 pour vous, et 8,5 pour Alice en tant que monnaie).

Aux premiers jours du bitcoin, les transactions n'avaient pas besoin de payer de frais, mais à mesure que le bitcoin mûrit, les frais sont de plus en plus importants.

Pour notre exercice, nous allons considĂ©rer le cas oĂč un certain temps s'est Ă©coulĂ© et oĂč la transaction que nous avons diffusĂ©e dans la leçon prĂ©cĂ©dente a Ă©tĂ© minĂ©e. Elle a fait son chemin dans un bloc.

Comment le saurions-nous ? Nous pourrions demander pĂ©riodiquement Ă  un nƓud Bitcoin, ou utiliser l'un des explorateurs de blocs mentionnĂ©s prĂ©cĂ©demment pour surveiller la blockchain et voir quand une transaction particuliĂšre est minĂ©e.


La derniÚre chose à faire est de vérifier une derniÚre fois notre solde pour s'assurer qu'il est exact et qu'il reflÚte les 1,5 bitcoin envoyés à notre ami Hal dans la leçon précédente.

Vous pouvez le faire avec la mĂȘme commande bitcoin-cli getbalance de la leçon prĂ©cĂ©dente. Nous nous attendons Ă  voir un solde restant de 0,5 bitcoin.

C'est tout pour le moment !

Le solde est correct ! Nous avons commencé avec 2 bitcoins (un d'Alice et un de Bob), avons envoyé 1,5 bitcoin à notre ami Hal et avons reçu 0,5 bitcoin en retour.




Merci d'avoir consulté ce petit tutoriel. Si vous souhaitez le refaire, vous pouvez utiliser la commande reset.

Le plaisir ne doit pas s'arrĂȘter lĂ  ! Vous ĂȘtes maintenant prĂȘt Ă  vous aventurer plus loin dans le terrier du lapin. Voici quelques-unes de mes ressources prĂ©fĂ©rĂ©es pour continuer Ă  apprendre sur le bitcoin :


Ressources générales

  • Hello Bitcoin: Votre source unique d'informations de base. Couvre un large Ă©ventail de sujets allant de l'autonomisation Ă©conomique et de la libertĂ© financiĂšre Ă  la consommation d'Ă©nergie et au rĂ©seau peer-to-peer. Si vous voulez en savoir plus sur le bitcoin, mais que vous n'avez pas envie de vous pencher sur des sujets plus techniques. Ce site est fait pour vous !
  • Bitcoin Money: A Tale of Bitville Discovering Good Money par Michael Caras : C'est un adorable livre pour enfants sur le bitcoin, mais je le recommande Ă  tous les Ăąges !
  • 6 week virtual seminars avec Chaincode Labs : Vous avez besoin d'une motivation externe ? Vous voulez apprendre avec des amis ? Chaincode rend cela amusant et gratifiant ! Ces sĂ©minaires sont pour tous les niveaux, vous devez juste ĂȘtre capable de vous engager pour 4-6 heures par semaine.
  • Mastering Bitcoin by Andreas Antonopoulos [free digital version]: Il s'agit du premier manuel sur le bitcoin et il doit ĂȘtre lu par tous ceux qui veulent construire sur le bitcoin ou y contribuer.
  • Learning Bitcoin from the command line par BlockChain Commons : Êtes-vous un magicien de la ligne de commande ? L'idĂ©e d'utiliser une interface graphique vous fait-elle bĂąiller ? Vous refusez d'aller quelque part si vous ne pouvez pas prendre votre bonbon shell avec vous ? BlockChain Commons est lĂ  pour vous. Apprenez votre chemin Ă  travers Bitcoin sans jamais avoir Ă  quitter le confort de votre terminal !
  • Still haven't found something for you? https://bitcoin.page propose tous les types de ressources sur le bitcoin que vous pouvez souhaiter, sur toutes les facettes du bitcoin auxquelles vous pouvez penser. Des podcasts aux vidĂ©os, en passant par les statistiques, la sĂ©curitĂ©, l'art et la musique, cette page contient tout. Je n'ai pas encore vu de ressource de qualitĂ© qui ne figure pas sur cette liste exhaustive, mais si vous parvenez Ă  trouver quelque chose qui manque, les PR (pull requests) sont toujours les bienvenus !

DĂ©veloppement de Bitcoin Core :

Pour ceux qui aiment boire au robinet et ĂȘtre jetĂ©s dans le grand bain, voici oĂč vous pouvez aller pour en savoir plus sur Bitcoin Core.

Saisir les commandes ici