Bitcoin/Blockchain
De WikiOpenTruc
< Bitcoin
- 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
- un (ou des ?) nouveaux blocs sont créés, en moyenne, toutes les 10 minutes -> https://blockchain.info/fr/
- 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.
Liens
- Blockchain : comment ça marche ? https://www.contrepoints.org/2016/09/09/265146-blockchain-comment-ca-marche bon article, avec un bon niveau de détail
- La Blockchain, au-delà du Bitcoin https://framablog.org/2016/01/30/la-blockchain-au-dela-du-bitcoin/
- Blockchain : La dénationalisation de la monnaie https://www.contrepoints.org/2014/09/13/180745-blockchain-la-denationalisation-de-la-monnaie