Home » E-Monnaies

Comment ça marche les bitcoins (4)

22 avril 2013 3 commentaires
tags : , ,
Download PDF
20130418 - Cochon monnaie

Crédit photo : 401(K)

Avec le dernier article, 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 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.

3 Comments »

  • Seafire said:

    Très intéressant tout ça !!! Tu te trouves souvent des nouveaux passe-temps je vois :p
    Ceci étant je dois dire que un peu comme game of throne, j’attends avec impatience le nouvel épisode du « Fabriquer son Internet », je suis fan au plus haut point !

    Un sacré talent pour la vulgarisation en tout cas, bravo !!

  • Philippe Verdy said:

    « 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. »

    Là c’est justement faux. Dans la vraie vie rien ne permet de distinguer les pièces ou les billets (à moins de faire une recherche ADN ou utiliser des encres indélébiles de marquage des biller volés) qui s’échangent ensuite, ou se trouvent par terre « tombés du camion » par n’importe qui sans qu’on puisse prouver à qui il appartenait, ni par quelles transactions ce billet ou cette pièce est passé.

    Ce n’est pas le cas des Bitcoins dont chacun contient la trace de toutes les transactions par lesquels ils sont passés: si une autorité parvient à récupérer la clé privée de signature d’un utilisateur l’ayant utilisé pour effectuer une transaction, cette autorité peut connaître TOUTES les transactions qu’il a effectué et signé avec sa clé privée, puisque toutes les transactions sont publiées et associables à un propriétaire dès lors qu’il connait la clé privée.

    Donc un contrôle monétaire est possible par une autorité légale, qui peut être en droit de mette la main sur des clés privées (par exemple en saisissant un disque dur qui les contient).

    Si on veut limiter de pister les transactions, il faudra alors que chaque signataire de transaction utilise une clé paire de clé privée/publique unique pour CHACUNE de ces transactions, et dispose du moyen de stocker l’ensemble de son jeu de clés privées dans des endroits différents et sûrs (c’est l’équivalent d’aller ouvrir des comptes bancaires en nombre illimité dans des banques différentes, en espérant que personne ne pourra aller ouvrir tous leurs coffres).

    Reste maintenant à savoir comment protéger les clés d’accès à ces coffres stockant les clés privées de signature du propriétaire, et surtout ne pas les perdre ! Sinon ces monnaies ne pourront plus être utilisées par personne: c’est comme si on brûlait les billets dans son portefeuille: les autres peuvent encore savoir qu’il les ont eu en main, mais ils sont alors aussi dans l’incapacité de prouver que ces billets étaient authentiques puisque dans une transaction qu’ils ont signé ils les transféré à quelqu’un qui les a perdu.

    Il est inévitable alors que le stock de bitcoins disponibles s’épuise, du seul fait de leur perte. Cela peut aussi expliquer que, du fait de leur raréfaction progressive par cette « usure » et ces pertes, les Bitcoins restants deviennnent de plus en plus précieux et voient leur valeur monter: plus vite les gens entrent et sortent du réseau Bitcoin, plus vite la valeur du Bitcoin explose, même s’il y a de moins en moins d’utilisateurs. Les derniers qui restent se battent pour les rares Bitcoins encore disponibles.

    Le système explose, et devient hyper-inflationniste, car ceux qui en ont encore (et détiennent les clés de signature des transactions qui leur a permis d’en acquérir ou d’en miner eux-mêmes) décideront totalement seuls du prix d’échange qu’ils comptent proposer sur le marché pour ceux qui voudraient en acheter pour faire des échanges.

    Contrairement aux autres devises, où une autorité monétaire remet en circulation des devises pour garer un flux circulant disponible suffisant qui ne paralysera pas les échanges commerciaux.

    C’est le gros problème des Bitcoins: ces devises ne sont pas assez « liquides ». Le système n’est pas du tout « pair-à-pair » dans le sens « égal-à-égal ».

    A tout le moins une autorité monétaire nationale dispose d’une législation soumise au regard du public et ne fait pas ce qu’elle veut (si elle le fait, soit elle paralyse le commerce, ou dévalue unilatéralement la devise, ou la réévalue de façon excessive, et c’est toute l’économie faite avec qui en souffre, et cela conduit dans tous les cas à de l’inflation, ou de la déflation tout aussi dangereuse, où ce sont les petits épargnants et le petit commerce qui souffrira le plus).

    Le Bitcoin totalement décentralisé, sans autorité monétaire centrale de régulation, est une fausse bonne idée car il remplace une autorité monétaire connue, soumise plus ou moins à un fonctionnement et un contrôle démocratique, par un nombre indéterminé d’autorités monétaires qui se comportent chacune comme des dictatures et peuvent décider seules de ruiner la valeur des portefeuilles des petits épargnants et commerçants, et exercer un chantage inacceptable sur les autres gros épargnants.

    Tôt ou tard, le Bitcoin explosera et plus personne n’en voudra. La bulle exponentielle actuelle va pêter et le Bitcoin va retomber à plus rien du tout car plus personne n’aura confiance en cette devise totalement manipulée par les plus gros détenteurs qu’on ne connait pas mais font la pluie et le beau temps de cette devise.

    Il faudrait une parade à ça : un cycle de vie des Bitcoins qui oblige à les échanger contre de nouveaux Bitcoins, afin que la devise reste liquide et pas coincée dans de gros coffre-forts (ou les multiples coffres-forts détenus par les gros titulaires): tout Bitcoin non échangé dans une transaction avec des tiers « de confiance » verrait sa valeur automatiquement annulée, comme si un billet dans un coffre-fort resté non-ouvert trop longtemps s’autodétruisait automatiquement.

    Le réseau P2P peut savoir qu’une quantité de Bitcoins numérotés est gelée trop longtemps dans un coffre. Il devrait donc le contrôler, et alors émettre un avis signé reconnaissant que la valeur de ces devises n’est plus acceptée car non participante à aucune transaction à temps (le système implique que les transactions signent aussi la date de ces transactions, ce n’est pas une métadonnée mais un élément fondamental de la transaction elle-même, mais cela implique aussi de pouvoir disposer d’un horodateur sûr permettent d’avoir des dates avec assez de précision, sinon in risque de signer des transactions antidatées, ou d’émettre des avis antidatés de péremption des devises gelées).

    Si la péremption des devises est acceptée, alors le réseau P2P recevra instruction de miner de nouveaux Bitcoins qui seront acceptés en remplacement échange des devises périmées désignées (mais dont il ne sera pas nécessaire de prouver la détention, mais juste nécessaire de
    pouvoir prouver que ces devises sont bien périmées et qu’assez d’autres utilisateurs l’ont reconnu, en portant leur signature sur cette péremption, par exemple en payant un micromontant jusqu’à ce que le réseau atteignent un pourcentage suffisant des Bitcoins à périmer, par exemple à hauteur de 50% de leur valeur initiale).

    Là aussi il faut sécuriser le système pour éviter que quelqu’un ne décider de périmer les devises détenues par les autres de façon autoritaire: les Bitcoins en circulation doivent avoir une durée de validité suffisante mais (par exemple 6 mois) pour que leur utilisation normale permette des transactions durant cette durée et que ces transactions soient reconnues (ce qui renouvelle leur validité), ni faire exploser le nombre de transactions inutiles de simple renouvellement, mais assez courte pour ne pas susciter des accumulations par des gros détenteurs.

    Problème: un gros détenteur peut jouer à éviter la péremption simplement en détenant deux coffres-forts et effectuant des transactions de l’un vers l’autre, validées par le réseau.

    Pour l’éviter, il faudrait pouvoir disposer d’un marché, d’une bourse, où on ne sait pas à qui on transfère un montant mais on a juste à prouver qu’on l’y a transféré ou qu’on l’a obtenu depuis ce marché. Cela existe déjà, ce sont les « brokers » de Bitcoins qui apparaissent, et sont devenus les véritables autorités de contrôle monétaires, et aussi les principaux émetteur de devises; ce sont eux qui assurent la liquidité de la monnaie. Mais cela n’a rien à voir avec un réseau P2P.

    Mais la conséquence à cela sera qu’aucune transaction ne pourra être gratuite, il va falloir payer une micro-commission à un broker « de confiance » (prélevée sur une partie du montant de la transaction en Bitcoins, une partie que le broker peut décider et peut être forfaitaire et/ou en pourcentage), sinon il ne reconnaîtra pas la valeur de vos Bitcoins.

    Le risque alors est que ce Broker accumule par ces transactions des stocks importants de Bitcoins et les retiennent longtemps, jusqu’à la dernière limite pour les remettre en transaction juste avant leur péremption en se faisant des transactions à lui-même via un de ses propres coffres-forts… Un broker a la capacité d’avoir au moins autant (sinon plus) de comptes coffre-forts que de clients qui lui font confiance pour effectuer des transactions.

    Ces risques n’existent pas avec de vraies devises matérialisées (en métal précieux, en billets ou en pièces) mais il existe aussi pour les monnaies légales largement dématérialisées (comme l’euro ou le dollar US), sauf qu’elles ont des instituts d’émission qui décident seules du stocks de devises matérialisées à mettre (ou remettre) en circulation, et du stock d’autres devises gardées en garantie, et des taux d’intérêts pour émettre des devises sous forme de prêts à remboursables avant terme.

  • Bruno (author) said:

    @philippe : je voulais dire qu’on pouvait distinguer physiquement deux pièces qu’on a dans sa poche … Mais pas deux satoshis.

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.


7 + deux =