Home » E-Monnaies

Comment ça marche les bitcoins (5)

22 avril 2013 11 commentaires
tags : , , ,
Download PDF

20120422 - bitcoin merklePrécédemment, sur ce blog, nous avons vu comment les blocs de bitcoins sont découpés en transactions. Ce qui ne vous a, finalement, avancé que sur le mystère de comment un simple petit bloc de quelques octets peut contenir des milliards de satoshis.

Vous n’en savez par contre toujours pas plus sur comment ces transactions sont incluses dans la chaîne de blocs ni comment on va bien pouvoir se débrouiller pour que cette chaîne ne devienne pas énorme au fur et à mesure qu’elle enregistre des transactions.

J’ai un peu menti par omission dans les articles précédent. Lors de la fabrication d’un bloc, il n’y a pas que le hash du bloc précédent et un nombre à trouver qui entrent en ligne de compte. L’ensemble des transactions déjà validées et pas encore incluses dans la chaîne sont à prendre en compte lors du calcul.

La chaîne qui doit être hachée deux fois pour trouver une chaîne contenant le nombre de zéros requis au début est donc composée du double hash du bloc précédent, du hash des transactions en attente d’inclusion et de quelques autres données (chaîne aléatoire, version du logiciel utilisé, timestamp, première transaction affectant le bloc à son mineur…).

L’avantage de cette méthode, c’est qu’un bloc peut contenir autant de transactions qu’on le souhaite et qu’il n’y a absolument pas besoin d’aller toucher aux blocs précédents lorsqu’une transaction a lieu. On est, en prime, certain de pouvoir, à un instant T, retrouver l’ensemble des transactions ayant été effectuées puisqu’elles sont toutes inscrites dans un bloc ou dans un autre. La traçabilité est donc garantie. Là où c’est un peu déroutant, c’est qu’une transaction n’est pas nécessairement inscrite dans le bloc contenant les bitcoins dont elle fait l’objet.

Abordons à présent le petit bout de théorie de Merkle qui va nous permettre (ça n’a, à priori, pas encore été mis en route dans les logiciels utilisés actuellement sur le réseau bitcoin) de gagner de l’espace disque et d’éviter que, dans 20 ans, la chaîne de bitcoins pèse plusieurs Go.

Il y a deux schémas de données imbriqués :

  • D’une part, chaque transaction est enregistrée chronologiquement dans les blocs en fonction du moment où elles interviennent, chaque bloc contenant un hash de l’ensemble des transactions qu’il contient.
  • D’autre part, chaque transaction fait référence à une transaction (très probablement enregistrée dans un autre bloc) précédente pour assurer la traçabilité de qui a combien de bitcoins.

En regardant le second schéma, on se rend donc compte que les transactions forment un arbre qui commence par la fausse transaction attribuant tous les bitcoins du bloc à son mineur et se terminant par l’ensemble des transactions n’ayant pas de transactions suivantes et qui composent donc la répartition actuelle de l’ensemble des bitcoins.

L’idée étant qu’une transaction totalement dépensée (c’est à dire qu’il existe une ou plusieurs autres transactions ultérieures qui répartissent la totalité des bitcoins de la transaction d’origine) n’a pas besoin d’être conservée outre mesure si l’ensemble des sous-transactions qui vont après ont été déjà validées par le réseau, les nouvelles transactions se basant uniquement sur des transactions non totalement dépensées.

Le premier schéma est celui de l’enregistrement réel des transactions dans la chaîne. Il s’agit d’un arbre binaire comprenant autant de branches finales que de transactions à valider. Chaque niveau de l’arbre hash deux entrées du niveau inférieur (voir le schéma en tête d’article ou dans le doc d’origine, page 4).Pour permettre de vérifier que le hash racine (Merkle Root) inclus dans le bloc est toujours bon, on conserve toujours au moins un niveau de hash ainsi que tous les sous-hash permettant d’aller vérifier les transactions qui n’ont pas encore été dépensées et qui ne peuvent donc être supprimées.

La beauté de la chose est que chacun est libre ou pas d’effectuer cette compression : le but du jeu est d’alléger la charge pour la quasi totalité des gens, sauf quelques malades qui prendront plaisir à conserver l’ensemble de la chaîne… pour pas grand chose si ce n’est la gloire de conserver tout l’historique monétaire.

Si vous avez tenu jusqu’ici sans lâcher, je vous tire mon chapeau, et je vous avoue humblement que j’ai découvert tout ceci au fur et à mesure que j’écrivais les articles, ce qui explique en partie les approximations de certains articles corrigées dans le suivant.

Si vous avez des questions, faites vous plaisir, j’ai pas d’autres idées sous la main pour la suite mais je peux continuer la série « on demand » :)

11 Comments »

  • Blupi said:

    Je voudrai bien voir un exemple d’une vraie chaîne pour illustrer le tout. Soit en complétant au fur à et mesure les articles soit en complétant par un dernier « mise en pratique » :)

  • Bruno (author) said:

    Tu veux parler d’un schéma ou bien de la suite réelle de caractère qui est dedans ?

  • Blupi said:

    Une suite réelle de caractères.

  • Bruno (author) said:

    Il suffit d’installer un client bitcoin et d’aller voir le fichier de la chaîne. Sinon, y’a des sites qui permettent de l’explorer de façon compréhensible, genre blockchain.info, par exmple, sur le bloc 101635 : http://blockchain.info/fr/block-height/101635

  • Blupi said:

    Pourquoi ce bloc contient-il des transactions qui ont plusieurs émetteurs (en particulier l’avant dernière) ?
    http://blockchain.info/fr/block/000000000003e41e441620a163762485ad85abf56b29056ec4bc52ba0c578730

  • Philippe Verdy said:

    @Blupi: étant donné le montant important de la transaction (2400 BTC), il n’a pas été possible de réunir cette somme avec un seul bloc. Plusieurs transactions avec des blocs provenant d’émetteurs ont donc été utilisées, afin de permettre d’émettre la nouvelle transaction sur ce bloc vers un autre destinataire.

    Une telle somme est aujourd’hui quasiment impossible à réunir en une seule fois, mais on voit ici l’intérêt de la chose: cela effectue une compression des historiques en réunissant plusieurs branches de transactions qui ont éclaté un bloc initial (et ce n’est pas un mal, au contraire car cela évite l’explosion exponentielle des arbres de Merkle qui scindent les blocs minés en de plus en plus nombreuses branches).

    Pour le nouveau destinataire de cette transaction, s’il l’a accepté, et pour les suivants, ils n’auront au bout d’un moment plus besoin de remonter toutes les branches s’ils en ont validé assez, sur assez de niveaux, et si les dates des transactions remontées sont assez anciennes pour arrêter de remonter plus loin dans le passé d’utilisation du bloc.

    Cependant fondamentalement cette grosse transaction est équivalente à plusieurs d’un montant total équivalent (mais c’est plus coûteux en aval pour le réseau qui doit vérifier des longues chaines : quand le réseau aval aura validé ce gros montant, il sera une brique de base importante permettant de valider de nombreuses nouvelles sous-branches sans avoir à remonter plus loin dans les vérifications d’historiques).

    Actuellement les Bitcoins sont vérifiés sur une durée de 2 ans (ce qui est suffisant pour gérer un exercice fiscal et la transition à l’exercice fiscal suivant, mais pas forcément suffisant si le fisc demande à justifier des sommes échangées sur une durée de 5 ans, comme en France, et ça peut expliquer qu’il n’y ait en France aucun broker de Bitcoins et qu’on les trouve surtout en Asie où le contrôle fiscal est moins strict).

    Si en Europe, les autorités demandent de pouvoir justifier les transactions sur 5 ans, il faudra conserver les historiques de transaction sur toute cette durée (et mettre en place une infrastructure lourde pour stocker ces historiques). Le risque alors c’est que plus aucun particulier ne puisse participer au réseau et que seuls pourront participer à ce stockage d’informations les grosses institutions monétaires et bancaires actuelles (qui au passage vont exiger des frais de transaction, comme pour les transactions bancaires ou boursières classiques).

    Le Bitcoin n’invente rien du tout en fait. Il va vite devenir une valeur financière comme une autre, au main des marchés boursiers, où il existe déjà sous une forme HYPER-spéculative, pire que les « warrants et options » et autres valeurs boursières à haut risque, mais très loin de l’objectif d’en faire une valeur décentralisée. Les gros
    détenteurs vont vite totalement le contrôler, ils seront présents dans toutes les chaines de transactions.

  • Philippe Verdy said:

    Sinon une idée pas encore exploitée dans le système:

    Les Bitcoins n’ayant actuellement AUCUN actif garnatissant sa valeur fondamentale, le risque hautement spéculatif de sa valeur sur les marchés va vite devenir un problème pour l’échanger si personne ne veut en garantif une valeur minimale, en offrant une garantie sur un fond de panier authentifié, tel que l’identité réelle d’un détenteur de fond détenu dans un compte de dépot sûr contenant des devises légales.

    Comment cela peut fonctionner ? En fait rien n’interdit dans une chaine de transactions signée, d’inclure d’autres éléments comme des transactions signées effectuées dans d’autres devises, une identité d’émetteur (un numéro fiscal par exemple, signée par son titulaire).

    Je pense qu’assez vite les autorités monétaires vont même exiger que tout détenteur de Bitcoin entrant dans une transaction signe son numéro fiscal, faute de quoi la transaction devra être rejetée, et les échanges faits sans cette identification permettant le suivi sera illégale (considérée comme du blanchiment), exposant en premier chef à des sanctions pénales ou fiscales celui qui aura « dématérialisé » des devises légales pour les convertir en cryptodevises: comme ce dernier voudra se prémunir de ce risque pénal ou fiscal, il ne va accepter d’échanger ses Bitcoins sûrs ainsi obtenus qu’en échange d’autres utilisateurs de Bitcoins qui accepteront de révéler leur identité sécurisée (numéro fiscal signé, ou preuve d’identité légale reconnue par le pays de celui qui transfère ses Bitcoins sûrs).

    D’autre part, en incluant dans le bloc de données signées des identités signées, on peut continuer en incluant à y inclure d’autres éléments, notamment des fonds dans d’autres devises, ou en métal précieux, ou tout actif négociable, liquide ou immobilisé, ou matérialisé par des contrats comme des hypothèques et prêts cessibles, et toutes sortes d’autres garanties financières y compris des fonds d’assurance, ou un panier de garantie en devises (sensé ne jamais servir, sauf en cas d’effondrement du Bitcoin pour lui laisser au moins une valeur minimale correspondant au contenu du panier de garantie).

    Tant que le Bitcoin n’aura pas de panier de garantie, cela restera une valeur boursière à très haut risque puisque sa seule « valeur » est seuement la confiance que ses utilisateurs lui accordent pour vouloir en acheter (en payant celui qui vend ses Bitcoins, avec d’autres devises bien réelles en dollars US ou en euros).

    Imaginons que le Bitcoin s’effondre complètement et que tout le monde se mette à vouloir les revendre pour les convertir en d’autres devises: personne ne voudra acheter ces Bitcoins au prix demandé en euros ou dollars, les vendeurs vont devoir baisser leurs prétentions, la chûte s’accélère, et très vite le Bitcoin tombera à zéro de façon explosive.

    Cela arrivera sauf s’il y a un panier de garantie minimale inclus dans les transactions signées, permettant à ceux qui n’arrivent plus à trouver d’acheteur de leurs Bitcoins invendables d’exiger la contrepartie sur le fond de garantie en d’autres valeurs (devises, or, diamants, ou en titres facilement négociables comme des emprunts d’Etat bien « notés » par les agences de notation, ou encore des parts de propriétés foncières, des productions de vin, des tonnes de céréales, des minerais, des baux de location, des licences de concessions sur un domaine public, des œuvres d’art…). Pour pouvoir exiger cela, il faut que celui qui offre la garantie ait publié un contrat donnant les termes de cette garantie, et signé numériquement cet engagement et le contenu de ce document ayant force contractuelle et opposable. C’est cette empreinte numérique du contenu, et de l’empreinte, qui permettra d’exiger une partie du panier de garantie.

    C’est d’ailleurs comme ça que fonctionnent déjà toutes les devises qui ont toutes un panier de garantie dans d’autres valeurs, les garanties (souvent en or, dollars US, euros, livres GB, et quelques autres grandes valeurs très liquides comme les emprunts fédéraux américains) étant en dépôt permanent dans les coffres chez des autres émetteurs de devises ou des banques qui ont accepté de participer à la création d’une devise par une autorité monétaire (et qui ont promis aussi de ne pas s’en servir pour garantir leurs propres activités).

    Comme ça aussi que fonctionnent bon nombre d’autres valeurs boursières (qui ont aussi des fonds de garantie, ne couvrant pas nécessairement la totalité des valeurs faciales, mais une partie acceptée au départ comme suffisante par les premiers qui ont accepté ces titres).

    Les devises nationales sans fond de garantie n’existent plus aujourd’hui au plan international (plus personne n’en veut). Elles n’existent que comme devises non négociables (souvent d’ailleurs pas exportables non plus selon les lois de ces pays) dans les dictatures à leur population à qui on impose l’usage de la devise sans aucune garantie financière.

    En revanche on a toujours des valeurs boursières aussi « foireuses » que les emprunts russes (ils avaient en théorie une garantie, mais la garantie n’était qu’une promesse de l’emprunteur lui-même qui a cessé d’exister du jour au lendemain sans successeur opposable reconnu), où des boursicoteurs prennent des risques spéculatifs inconsidérés sur les « produits dérivés » (comme les warrants et options qui n’ont eux non plus aucune valeur tant que les options ne sont pas exercées et réellement présentées au marché qui peut ne jamais en vouloir, ou les valeurs qui tomberont à zéro à une date programmée trop proche).

    Le Bitcoin appartient encore à cette catégorie de produits à très haut risque, qui n’a strictement aucun fondement valorisable que la seule « confiance » de ceux qui veulent « investir » dedans en les achetant contre les euros ou dollars de leur compte en banque.

    La confiance de ceux qui détiennent les Bitcoins ne sert à rien, elle ne garantie rien (c’est seulement de la pub qu’ils font pour convaincre d’autres acheteurs à investir dessus), elle ne vaut rien du tout (en cas de débandade ils voudront tous s’en défaire en même temps auprès d’acheteurs introuvables, ou auprès d’acheteurs gogos à qui ils auront sciemment menti). Bref la valeur du Bitcoin est entièrement liée à ceux qui veulent en acheter (et croient que c’est un bon investissement alors qu’ils auront du mal à les échanger à nouveau plus tard en euros ou dollars).

    En somme le Bitcoin n’est rien d’autre que le système (illégal) de vente pyramidale, où la seule chose qui est vendue à ceux qui se font avoir est la promesse qu’ils pourront le revendre et faire un profit : s’ils y croient, ils entre dans le même jeu des escrocs pour chercher à convaincre d’autres.

    Les **seuls** gagnants du Bitcoin (qui ne se font pas avoir et ne prennent strictement aucun risque) sont les mineurs de Bitcoin. En fait seulement les premiers qui les ont minés rapidement à très bas coût, s’ils les ont gardé pendant un certain temps (maintenant ces premiers mineurs ont du tous profiter de la bulle spéculative actuelle qui ne va pas durer, pour s’en débarrasser discrètement auprès d’investisseurs imprudents et les laisser essuyer ensuite des pertes énormes et inévitables).

    Aujourd’hui il est même inutile de se lancer à miner des Bitcoins, cela ne rapporte rien et vous coûte très cher (en matériel et énergie dépensée pur rien). Jouez au Loto, c’est plus rentable que miner des Bitcoins (du moins vous perdrez moins vite votre argent) !

    Les derniers qui minent encore des Bitcoins sont de vrais escrocs qui utilisent (sans leur dire) les PC des autres pour ne pas payer la facture que cela représente.

  • Bruno (author) said:

    @philippe : pas exploité ? Et les tainted bitcoin, c’est quoi ? :)

  • han said:

    Salut Turblog,
    Je n’ai pas compris pourquoi on ne peut pas faire des transactions de 1 satochi pour le moment ? :-(
    C’est le logiciel bitcoin qui impose un minimum pour une transaction, ou bien j’ai raté quelquechose ?

  • Terence said:

    Merci Bruno pour cette série d’articles.

    Si je comprends bien, l’énorme quantité de calculs effectuée n’a d’intérêt qu’en termes de sécurité informatique ?

    J’avais imaginé que ces calculs puissent avoir un intérêt scientifique / médical. De cette façon la valeur du bitcoin aurait été adossée à la valeur d’une potentielle avancée technologique.

    Comme tu peux le voir, j’ai du mal à saisir le fondement économique/monétaire derrière toute cette machinerie. Cela pourrait peut-être faire l’objet d’un 6ème article ?

  • Bruno (author) said:

    La sécurité mais surtout l’émission progressive de la monnaie. Elle n’a aucune valeur intrinsèque, uniquement celle qu’on veut bien lui donner.

    L’idée que ça serve n’est pas idiote, mais ça me semble compliqué à implémenter …

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


− cinq = 1