Support Bitcoin un système de monnaie électronique de pair à pair

Support Bitcoin un système de monnaie électronique de pair à pair, tutoriel & guide de travaux pratiques en pdf.

Preuve-de-travail

Pour implémenter un agent horodateur avec une approche de pair à pair, nous aurons besoin d’un système de preuve-de-travail similaire au Hashcash de Adam Back, plutôt qu’un système de publication d’articles d’actualités ou de messages Usenet. La preuve-de travail implique la recherche d’une valeur qui, une fois hachée, avec un algorithme comme SHA-256, débute avec un certain nombre de bits à zéro. Le travail moyen croit exponentiellement avec le nombre de bits requis, et peut être vérifié avec une seule exécution de la fonction de hachage.
Pour notre réseau d’agents horodateurs, nous implémentons la preuve-de-travail par incrément d’un nonce défini pour le bloc, jusqu’à obtenir les bits à zéro requis par hachage du bloc. Une fois que l’effort de calcul a été investi pour satisfaire la preuve-de-travail, le bloc ne peut être changé sans refaire le calcul. Etant donné que les blocs ultérieurs seront chaînés après celui-ci, le travail de changement du bloc exigerait de recalculer tous les blocs qui suivent.
La preuve-de-travail répond aussi au problème de représentation dans la prise de décision à la majorité. Si la majorité était basée sur une-adresse-IP = un-vote, elle pourrait être subvertie par quiconque serait capable d’allouer beaucoup d’adresses IP. La preuve-de travail est essentiellement basé sur un-processeur = un-vote. La décision majoritaire est représentée par la plus longue chaîne dans laquelle est investi le plus grand effort de preuve-de-travail. Si une majorité de processeurs est contrôlée par les nœuds honnêtes, la chaîne la plus honnête grandira la plus vite et distancera les autres chaînes en compétition.
Pour modifier un bloc antérieur, un pirate devrait refaire la preuve-de-travail de ce bloc et de tous les blocs qui lui sont postérieurs puis rattraper et surpasser le travail des nœuds honnêtes. Nous exposerons peu après que la probabilité que les nœuds honnêtes soient rattrapés par un pirate diminue exponentiellement à mesure que des blocs sont ajoutés.
Pour compenser la vitesse croissante du matériel et stimuler la participation des nœuds sur la durée, la difficulté de la preuve-de-travail est déterminée par une moyenne glissante ciblant un nombre moyen de blocs créés par heure. S’ils sont générés trop rapidement la difficulté augmente.

Réseau

Les étapes pour faire fonctionner le réseau sont les suivantes :
1. Les nouvelles transactions sont diffusées à tous les nœuds ;
2. Chaque nœud collecte les nouvelles transactions dans un bloc ;
3. Chaque nœud travaille à la résolution d’une preuve de travail difficile pour son bloc ;
4. Quand un nœud résout une preuve de travail, il diffuse le bloc à tous les nœuds ;
5. Les nœuds acceptent le bloc si toutes ses transactions sont valides et ne sont pas déjà dépensées ;
6. Les nœuds expriment l’approbation d’un bloc en travaillant sur le bloc suivant utilisant l’empreinte numérique du bloc approuvé comme l’empreinte à utiliser.
Les nœuds considèrent systématiquement la plus longue chaîne comme la seule chaîne correcte, et s’appliqueront à l’étendre. Si deux nœuds propagent simultanément deux versions différentes du bloc ajouté, certains nœuds réceptionneront l’une ou l’autre en premier. Dans ce cas de figure ils travailleront sur la première branche , mais sauvegarderont la branche alternative au cas où elle deviendrait la chaîne la plus longue. Le choix est tranché dès que la prochaine preuve-de-travail est élucidée et dès que l’une des branches devient plus longue ; tous les nœuds qui travaillent sur l’autre branche se reportent alors sur la plus longue.
Les nouvelles transactions propagées n’atteignent pas nécessairement tous les nœuds.
Tant qu’elles atteignent de nombreux nœuds, elles finiront par être ajoutées à un bloc. La diffusion des blocs est tolérante à la perte de blocs. Si un nœud ne reçoit pas un bloc, il le demandera lors de la réception du bloc suivant en constatant qu’il est manquant.

Incitation

Par convention, la première transaction d’un bloc est une transaction spéciale qui crée une nouvelle monnaie attribuée au créateur du bloc. Cela incite les nœuds à participer au réseau et fournit un moyen d’introduire de la monnaie en circulation, car il n’existe pas d’autorité centrale pour émettre cette monnaie. Cette participation constamment monnayée est analogue à la démarche des chercheurs d’or qui affectent des ressources pour introduire de l’or en circulation. Dans notre cas c’est l’électricité et le temps de calcul qui sont affectés.
L’incitation peut aussi être financée avec des frais de transaction. Lorsque la valeur résultante d’une transaction est inférieure à sa valeur émise, la différence correspond à un frais de transaction ajouté au montant d’incitation de création du bloc contenant la transaction. Une fois qu’un montant prédéterminé de monnaie est entré en circulation, l’incitation peut être convertie entièrement en frais de transaction, évitant une inflation.
L’incitation peut encourager les nœuds à rester honnêtes, si un pirate cupide est en capacité de mobiliser plus de puissance de calcul que les nœuds honnêtes, il aura à choisir entre la fraude, pour récupérer ses paiements, et la création de monnaie. Il pourrait trouver plus profitable de respecter les règles qui favorisent sa position, plutôt que d’ébranler le système et donc nuire à son enrichissement personnel.

Récupération d’espace disque

Lorsqu’un bloc est enfoui sous un nombre suffisant de blocs , les transactions dépensées avant la transaction la plus récente de ce bloc peuvent être retirées pour économiser de l’espace disque.
Pour faciliter ceci sans remettre en cause le hachage du bloc, le hachage des transactions est effectué avec un arbre de Merkle, en injectant uniquement la racine dans le hachage du bloc. Les blocs anciens peuvent être compactés en retirant des branches de l’arbre. Il n’est pas nécessaire de stocker les résultats de hachage internes.
La taille d’un en-tête de bloc sans les transactions serait de 80 octets environ. Si nous supposons que les blocs sont générés toutes les 10 minutes, cela représente 80 octets * 6 * 24 * 365 = 4,2 Mo par an. Etant donné des ordinateurs vendus typiquement avec 2 Go de mémoire vive en 2008, et d’une loi de Moore qui prédit un accroissement de la mémoire de 1,2 Go par an, le stockage ne devrait pas poser de problème même si les en-têtes doivent être conservés en mémoire.

Résumé
1. Introduction
2. Transaction
3. Agent horodateur
4. Preuve-de-travail
5. Réseau
6. Incitation
7. Récupération d’espace disque
8. Vérification simplifiée du paiement
9. Somme et fractionnement des avoirs
10. Confidentialité
11. Calculs probabilistes
12. Conclusion
Références
Glossaire
Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Support Bitcoin (680 KO) (Cours PDF)
Support Bitcoin

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *