Bitcoin/Blockchain

De WikiOpenTruc
Aller à : navigation, rechercher

Les blocs

  • le premier bloc a été créé par Satoshi Nakamoto lui-même le 09/01/2009
  • la taille de chaque bloc est 1Mo maximum (il peut y avoir, pour raisons x ou y, des petits blocs)
  • chaque bloc (n+1) contient un hash du bloc n
    • c'est tout bête, mais cela garantit la bonne séquentialité des blocs. L'obligation pour créer un nouveau bloc d'intégrer une trace/empreinte/hash du dernier bloc créé, empêche de créer des blocs à l'avance
  • l'intégralité de la blockchain du 9/1/2009 au 9/1/2018 fait ~100GB
    • 9/1/2009 - 9/1/2018 = 9 années = 3285 jours = 78840 heures = 4730400 minutes = 473040 tranches de 10 minutes
    • 473.040 MB = 473 GB
    • 100 GB = 100.000 MB
  • Chaque ordinateur qui possède une copie de la blockchain + le logiciel d'écriture de la blockchain, est appelé un "noeud complet" du réseau
  • les transactions ne s'écrivent (évidemment) pas instantanément. Elles passent (pour chaque noeud) d'abord dans une liste d'attente, dont la durée de vie est d'environ 10 minutes.
  • la (grosse) problématique est le maintien de copies identiques (consensus) de la blockchain sur les milliers de noeuds répartis sur le globe. Dans un contexte où la méfiance envers les messages reçus est la norme.
  • chaque bloc est scellé/estampillé avec un sceau spécial, ce sceau étant la solution d'un problème mathématique complexe (inversion d'une fonction de hash). C'est la liste d'attente du premier ordinateur/noeud du réseau qui trouve la solution qui devient le bloc "validé". La fabrication du sceau (détermination d'un nonce qui permet la génération d'un hash avec plein de zéros) est appelée "preuve de travail" ("proof of work").
  • quand un noeud mineur pond un bloc scellé, il le diffuse aussi sec aux autres noeuds auxquels il est connecté. Dès qu'un noeud reçoit ainsi un bloc, il stoppe ses tâches en cours et s'occupe de valider (ou pas) le bloc, et si le bloc est valide, il l'ajoute à sa blockchain et diffuse le bloc à ses voisins. Très rapidement, les noeuds mineurs reçoivent eux aussi ce bloc (réputé valide) revérifient eux-mêmes la validité, et cessent le minage en cours pour s'occuper de refabriquer le bloc suivant. Chaque bloc mineur conserve sa liste locale de transactions, mais la purge néanmoins des transactions contenues dans le bloc qu'ils viennent d'ajouter à leur blockchain
  • il arrive (rarement mais ça arrive) que des blocs scellés et validés se propagent simultanément dans le réseau de noeuds. La blockchain se retrouve alors de facto avec une terminaison branchue. D'après h16 : une fois un fork avec 4 blocs, la plupart sont des forks de 1 bloc et qq uns de 2 mais c'est tout


Remarques

  • le terme blockchain, ainsi que le lien de hash entre blocs successifs, peuvent laisser imaginer un balayage de la chaîne d'un bloc au suivant ou au précédent. Il n'en est rien. La blockchain est très longue (100GB en 2017) et son accès se fait, très classiquement, par des index et tables recalculés en permanence. La blockchain sert et est le sous-jacent fondamental de référence ("qui fait foi"), mais les calculs en continu se font eux sur des tables remises à jour en permanence incrémentalement.

Blockchain : comment ça marche ? https://www.contrepoints.org/2016/09/09/265146-blockchain-comment-ca-marche :

  • Une dizaine de ces coopératives, regroupant un nombre indéterminé de mineurs, fournit 95 % des blocs admis dans la chaîne.


Navigateurs


Liens