summaryrefslogtreecommitdiff
path: root/Comment_a_marche_les_bitcoins_4.txt
blob: feaefb417bfe47faaed3a9c494f00a0492640853 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Titre: Comment ça marche les bitcoins (4)
Auteur: Bruno
Date: Mon 22 Apr 2013 19:55:47 +0200
Lien: https://blog.spyou.org/wordpress-mu/2013/04/22/comment-ca-marche-les-bitcoins-4/

[image 2][2]

Crédit photo : 401(K)

Avec le dernier article[3], vous avez théoriquement une bonne vue de ce qu’est 
la chaîne des bitcoins. Je récapitule, elle est composée de blocs dont le 
double hachage SHA256 donne une chaîne de 32 octets qui commence par un certain
nombre de zéros qui représentaient la difficulté du moment lors de la création 
du bloc. Cette chaîne sert à constituer le bloc suivant, permettant de 
s’assurer que la chaîne est valide de bout en bout.

L’unicité de la chaîne est garantie par le fait que les clients du réseau 
bitcoin ont pour consigne de toujours choisir la chaîne la plus longue possible
si ils ont plusieurs alternatives, situation qui n’arrive heureusement que peu 
fréquemment.

Maintenant, comment se passent les transactions ? Pour comprendre, vous devez 
remonter au premier article qui décrit le fonctionnement du chiffrement 
asymétrique. Chaque participant au réseau bitcoin dispose d’un couple clé 
privée / clé publique qui a été automatiquement généré par son ordinateur lors 
du premier lancement du logiciel bitcoin. La clé publique représente son 
identité sur le réseau bitcoin et la privée est jalousement conservée 
localement par l’ordinateur.

L’unité la plus petite en bitcoin (le Satoshi) se trouve à huit décimales après
la virgule. On peut donc virtuellement (concrètement c’est encore assez 
difficile) faire une transaction de 0.000000001 bitcoin. Vous allez me dire, « 
comment est-ce possible alors que les bitcoins ne soient définis aujourd’hui 
que par des blocs de 50 ou 25 unités ? »

Partons d’un bloc vierge de 50 bitcoins, encore sous la houlette du mineur qui 
l’a découvert. Admettons que ce mineur souhaite transférer ces 50 bitcoins en 
totalité. Une transaction va être créée qui va, pour simplifier, prendre le 
bloc comme référence (input) et indiquer l’adresse publique du destinataire 
comme sortie (output).

Le bloc originellement miné contient déjà la signature de son mineur associé 
sous forme d’une transaction à lui même. C’est un petit détail volontairement 
omis dans les articles précédents, mais il permet, puisque cette signature est 
incluse dans le hash servant à créer le bloc suivant, de toujours connaître le 
mineur originel d’un bloc.

Mathématiquement la transaction consiste, pour simplifier, à ce que le 
propriétaire du bloc signe le hash du bloc en question assorti de la clé 
publique du destinataire. Le résultat sera donc 
une chaîne de caractère contenant à la fois l’identifiant du bloc, 
l’identifiant du bénéficiaire et la signature de l’émetteur.

Comme pour le minage, l’ensemble du réseau bitcoin va valider cette transaction
en vérifiant  que l’émetteur est bien le propriétaire du bloc en question. Une 
fois un certain nombre de validations reçues  l’argent sera considéré comme 
ayant été transféré au destinataire. La transaction suivante ne se basera non 
plus sur le bloc d’origine mais sur la transaction précédente, créant ainsi 
une chaîne valide et vérifiable de l’ensemble des transactions permettant de 
remonter à l’émetteur du bloc puis de vérifier sa validité dans l’ensemble de 
la chaîne.

C’est bien joli, mais vu comme ça, ça ne permet de transférer les bitcoins que 
par paquets de 50 ou de 25 en fonction du bloc qu’on a sous la main. Pas super 
pratique.

Du coup, il est possible de faire une transaction d’un bloc complet en 
affectant plusieurs destinataires et différents montants. Admettons que j’ai 
mon bloc de 50 bitcoins et que je veuille en envoyer 25 à Tatie Martine. Le 
logiciel bitcoin va créer une transaction avec mon bloc originel en entrée et 
deux sorties, l’une de 25 bitcoins à destination de Tatie Martine, et l’autre 
de 25 à… moi-même.

On se retrouve ainsi, pour les transactions suivantes, avec une référence à 
cette précédente transaction qui a coupé le bloc en deux. Cette transaction 
suivante (par exemple Tatie Martine qui envoie 10 bitcoins à son fils) fera 
référence à la transaction de 25 bitcoins entre moi et Tatie Martine.

La conclusion est un peu déroutante, puisque dans la vraie vie on a l’habitude 
de pouvoir distinguer les 50 pièces de 1 euro qu’on a dans la main, mais le 
constat est sans appel, dans un bloc de 50 bitcoins, rien ne différencie les 5 
milliards de Satoshi qui le compose. Et c’est heureux, sinon, il faudrait à 
minima 5 milliards de bits, quelque chose comme 600Mo d’espace disque, au bas 
mot, pour stocker un bloc de bitcoin.

La différenciation se fait au niveau des transactions, chacune d’elle étant en 
mesure de découper la précédente en plusieurs morceaux.

Je vois d’emblée venir les questions qui taraudent l’esprit de ceux qui ont eu 
le courage de me suivre jusqu’ici :

  * ou et comment sont stockées les transactions
  * à chaque transaction effectuée, la chaîne des bitcoins voit sa taille 
    augmenter, et plus ça va, plus il y en a.

Ce sera l’objet du prochain article[4] dans lequel j’essaierai, tant bien que 
mal, de vulgariser la théorie des arbres de Merkle, qui permet de solutionner 
une bonne partie du problème, et de vous expliquer comment les transactions 
entrent dans la fabrication des nouveaux blocs.

Liens:
[1]: http://www.flickr.com/photos/68751915@N05/6736150457/ (lien)
[2]: http://blog.spyou.org/wordpress-mu/files/2013/04/20130418-Cochon-monnaie-225x300.jpg (image)
[3]: http://blog.spyou.org/wordpress-mu/2013/04/18/comment-ca-marche-les-bitcoins-3/ (lien)
[4]: http://blog.spyou.org/wordpress-mu/2013/04/22/comment-ca-marche-les-bitcoins-5/ (lien)