La blockchain expliquée dans un tableur (exercice)

Je viens de tomber sur cette vidéo qui explique bien la blockchain Bitcoin en la simulant dans un tableur.

Cela m’a donné envie de proposer l’exercice pour la blockchain Duniter, à destination des geeks qui s’ennuient. Enjoy !

A vos claviers, faîtes comme dans la vidéo, construisez un simulateur de blocs, mais à la sauce Duniter pour la difficulté.

Si on peut arriver à comparer le simulateur de la vidéo et le notre dans un même tableur, on peut peut-être le montrer à l’auteur de la vidéo pour lui parler de notre blockchain atypique…

Duniter - une blockchain atypique - 05.pdf (1004,2 Ko)

Note : je partage cette vidéo pour l’exercice du tableur, pas pour le point de vue de l’auteur, qui mériterait un autre sujet, ou pas. Merci de votre compréhension. :wink:

2 Likes

Quand il dit que ce n’est pas une cryptomonnaie, en fait il ne parle que de la blockchain, pas de la monnaie, qui est en partie protégée par la crypto.

Il dit qu’on « donne » des bitcoins au mineur, qu’il « récupère » des bitcoins, c’est peu précis. On lui en donne et il en crée.

Il dit que le mot « travail » devrait être remplacé par « énergie », mais si les ordinateurs sont alimentés par des machines rotatives (ce qui est largement le cas) alors consommer de l’énergie c’est ralentir les turbines, c’est du travail. Et même si on utilise des panneaux solaires ou des piles, ça ne me choquerait pas de continuer l’analogie.

Edit: je chipote, mais sinon la vidéo est bien !

Re-edit: « travail » me semble même plus approprié que « énergie », car la quantité d’énergie peut être constante, mais sa capacité à travailler diminue.

1 Like

Toi, t’as pas lu ma note ! J’ai dit que les affirmations péremptoires et discutables du monsieur pouvaient faire l’objet d’un autre sujet.

Silence dans le fond ! Concentrez-vous sur l’exercice élève Tuxmain ! :rofl:
[Edit]
Bon allez, lâchez vous ! Ce sujet est déclaré libre !

Ah oui, j’avais lu la note de travers. Mais pour ma défense :

:innocent:

1 Like

le coup du tableur pour schématiser les bloc, c’est en effet assez didactique …

mais j’ai pas compris l’énoncé de ton exercice, peut tu le réexpliquer ?

J’ai précisé un peu dans le billet, il s’agit de faire comme dans la vidéo, mais avec la mécanique de Duniter.

mais, arrête moi si j’ai mal compris un truc, mais :

la spécificité de duniter, ça n’est pas la chaine de blocs, mais qui peut les écrire …

la chaîne est faite par des hasch, avec des nonces, comme dans le tableur de cette vidéo.

c’est peut être seulement au moment de l’établissement de la difficulté que ça change, car elle est personnalisée …

Comme la différence est dans le calcul de la difficulté, pour que l’exercice soit différent de celui du bitcoin, il faudrait simuler plusieurs mineurs, avec des puissances de calcul différentes…

Et pourquoi pas refaire le module Galilée de cette manière ? (en ajoutant le DU dans le tableur de la blockchain) :crazy_face:

1 Like

J’ai pas dit que c’était facile, ni même que c’était possible… :wink:

Mais je trouve que c’est un exercice intéressant et formateur, qui peut même aboutir à avoir un outil éducatif, pour démystifier un peu cette chaîne de blocs, et surtout la nôtre.

J’ai ajouté le pdf de ma présentation sur la blockchain Duniter, pour aider un peu.

powMin // 16 = X reste Y
70 // 16 = 4 reste 6

4*16+6=40+24+6=70

Ok donc pour une powMin de, disons 124, ça fait 7 zéro et un B pour le début du hash.

Pour la suite de mon raisonnement, je vais utiliser les données d’un bloc en particulier : 418650

calcul de diff :

powMin = 110

exFact = MAX [ 1 ; FLOOR (0.67 nbPreviousIssuers / (1 + nbBlocksSince)) ]
nbPreviousIssuers = issuersCount = 32
nbBlocksSince = 419 177 - 418650 = 527
32
0.67/528 = 0.04

exFact = 1

handicap = FLOOR(LN(MAX(1;
(nbPersonalBlocksInFrame + 1) /
medianOfBlocksInFrame)) / LN(1.189))
nbPersonalBlocksInFrame= 1
medianOfBlocksInFrame = 161
2/161/LN(1.189) = 0.07
LN(1)=0

handicap = 0

diff = 110

faut il comprendre que le hash à trouver par cette clef publique pour un prochain bloc serait 6 zéros et un D ?