Affichage des articles dont le libellé est BLOCKCHAIN. Afficher tous les articles
Affichage des articles dont le libellé est BLOCKCHAIN. Afficher tous les articles

dimanche 5 avril 2020

La blockchain expliquée à mes filles




Dis Papa, c’est quoi la Blockchain ?

La blockchain c’est un programme d’ordinateur qui permet de jouer à plusieurs en toute sécurité.
Prenons un exemple et rappelez vous quand vous jouez au Monopoly avec vos cousines. Vous êtes obligées de tout le temps vérifier ce qu’elles font car elles trichent beaucoup. Avec une blockchain, c’est le programme qui va assurer la sécurité, c’est à dire que personne ne peut tricher.

Mais pourquoi cela s’appelle une blockchain, il y a des blocs enchaînés ?

Oui et pour vous l’expliquez nous allons prendre un autre jeu : Scotland Yard. Vous vous rappelez, le joueur qui a le rôle de cambrioleur : il ne met pas sa position sur le plateau de jeu mais l’indique sur un papier. Et tous les 3 tours il doit l’indiquer à tout le monde sa position.  
Les mouvements du voleur entre 2 phases pour laquelle la position est connue constitue un ‘bloc”. Et les différents blocs sont mis bout à bout pour faire une chaîne de blocs.


Dans Scotland Yard, ce sont les autres joueurs qui contrôlent si  chaque bloc est correct et si la suite des bloc est correct, dans la blockchain c’est le programme informatique qui vérifie.


Mais si le voleur change ce qu’il a écrit, il peut tricher ?

On peut l’imaginer. Le joueur-voleur efface vite son papier et remet d’autres positions. C’est déjà compliqué dans Scotland Yard car le joueur-voleur et tricheur doit recalculer toutes les autres positions des autres joueurs à chaque tour pour ne pas les utiliser. Donc cela prend du temps et il n‘en a pas assez.
Si en plus on utilise un bic indélébile et un bloc de papier dont les pages ne peuvent ni s’effacer ni se détruire cela rend toutes tentatives de tricherie presque impossibles.

Mais comment la blockchain fait pour empêcher de tricher ?

Un peu comme vous au Monopoly : chaque joueur surveille les autres et tout le temps. On recompte dans sa tête le nombre de cases, on regarde qu’ils ne déplacent pas un pion en douce, on regarde qu’ils rendent bien la monnaie et qu’ils n’en prennent pas en direct dans la banque.
Le programme blockchain fait pareil : le même programme avec les mêmes données est installé à l’identique sur les ordinateurs des joueurs et chaque ordinateur fait exactement les mêmes calculs que les autres. Les ordinateurs des joueurs sont appelés “node” (ou noeud en français).
Si un seul joueur change le programme sur son propre ordinateur, il sera vite repéré. Si beaucoup de joueurs se mettent d’accord pour tricher, on peut imaginer qu’ils y arrivent mais cela se verra vite et demande une grosse organisation.
En plus, la Blockchain utilise un équivalent de bloc de papier que l’on ne peut pas effacer, les pages ne peuvent pas être déchirées ni mises dans un ordre différent. Un peu comme dans notre Mister X amélioré.
La blockchain peut être changée mais il faudrait tout recalculer et beaucoup plus vite que tous les autres joueurs.

Mais la maîtresse nous a dit que la blockchain permettait de mettre tout le monde d’accord ?

Le fait de se mettre d’accord ensemble se nomme, dans le monde blockchain, le consensus. En réalité, il y a deux consensus.
  1. Le premier permet définir le jeu auquel on va jouer et les règles. Par exemple, on dit que l’on va jouer au Monopoly ! et si tout le monde est d’accord on y joue. Et si un ou plusieurs ne sont pas d’accord, ils n’y jouent pas.
    Ce premier consensus, celui qui va définir le jeu et les règles est le plus important. Et sur celui-ci, la blockchain n’aide pas. Nous ne sommes pas en train de jouer mais de choisir le jeu.
  2. Une fois le choix fait, les règles sont écrites sous forme informatique et la blockchain va les mettre en oeuvre sans que l’on puisse tricher. Et “tricher” signifie simplement changer les règles au profit d’un ou plusieurs joueurs.
    Le consensus que la blockchain réalise est de garantir à chaque nouveau bloc que les règles ont été respectées.
    Il serait plus juste de parler de “consensus de bonne exécution des règles initiales”.


Mais tout le monde peut jouer sur la blockchain ?

Oui. L’avantage de la blockchain est que nous  pouvons imaginer de jouer au Monopoly avec plusieurs millions de joueurs, sans les connaître et en ayant confiance. Pour être précis, en ayant confiance qu’ils ne pourront pas changer les règles à leur profit. Une blockchain oú toute personne peut jouer est dite “persmissionedless”, c’est à dire sans permission préalable.


D’autres sont dites “permissioned” car seuls les joueurs autorisés peuvent venir : vous invitez vos cousines mais pas vos voisins !

Mais pourquoi limiter à certains joueurs si on peu avoir confiance même avec des inconnus ?

Rappelez-vous, on ne peut avoir confiance que dans l’exécution du jeu. Après, il faut savoir les enjeux du jeu.
Par exemple au Monopoly, on peut jouer uniquement car dehors il pleut : on dit qu’il n’y a pas d’enjeu.
On peut aussi jouer en disant que celui qui perd fera la vaisselle le soir, ou celui qui gagne aura deux parts de dessert. Dans ce cas, il faut pouvoir forcer le perdant à faire la vaisselle. Et pour cela, la blockchain ne peut rien. Il faut des parents ou être sûr que les joueurs seront “bon joueur” après la partie de Monopoly.

Mais à quoi cela peut servir à part pour jouer ?

Dans l’économie réelle, il y a beaucoup de situation qui ressemble à des jeux. Regardez encore le Monopoly : on circule, on achète des terrains, des maisons, on paie si on tombe chez un autre joueur. Cela ressemble à des situations que l’on rencontre dans la vie courante.


Et la blockchain est très pratique pour gérer ce type de situation : il y a un livre de compte, c’est à dire un peu comme des billets mais c’est écrit sur une feuille au lieu de les échanger physiquement. Ce livre s’appelle le “ledger”.
Ensuite, on peut utiliser un autre livre de compte mais pour compter les emplacements (“Avenue Mozart”, “rue de la Paix”,...) et éviter les tickets cartons. Le fait de mettre l’économie réelle sous forme de livres de compte s’appelle aussi “la tokenisation de l’économie”.

C’est quoi les tokens ?

Les billets de Monopoly vus par la blockchain se nomme crypto-monnaie. Cela fait plus chic !
Et quand cela représente autre chose, les emplacements, les maisons, les hôtels, on parle de préférence de tokens (le mot anglais pour jeton). Il peut y avoir pleins de sortes de tokens en fonction de ce qu’ils peuvent représenter dans la vie réelle.


C’est vraiment utile de tout mettre sous forme de tokens ?

Un autre avantage de la blockchain est la sécurité dans les échanges. Si je te donne 20 000 euros contre “Avenue Mozart”, il peut toujours y avoir un risque. Risque pour toi si tu me donnes la carte “Avenue Mozart” avant que je te donne l’argent et risque pour moi si je donne l’argent avant.
La blockchain, avec son système programmé, fait l’échange en même temps ou pas du tout.Un peu comme si tu donnes la carte à un autre joueur et moi je donne l’argent à ce joueur qui fait l’échange. Un tel joueur s’appelle dans la vie courante un “tiers de confiance”. Et dans la vie courante, ce “tiers de confiance” fait payer son rôle.
Dans notre Monopoly sur Blockchain, c’est la blockchain qui jouerait ce rôle de tiers de confiance.

On peut donc acheter une maison sans risque à un inconnu ?

Sur la blockchain, en théorie oui. Je mets mes euros de mon compte bancaire sur la blockchain et je fais l’échange. Je vais recevoir un “token de ma maison”. Mais il est toujours important que quelqu’un de sûr me garantisse que ce token est vraiment une maison. Sinon, je n’ai acheté qu’un token, c’est à dire un nombre sur un ordinateur !


Même si la blockchain peut remplacer le tiers de confiance pendant un échange, Il est donc important qu’il reste des tiers de confiance pour échanger les tokens avec des objets réels. Si j’achète une maison-token il faudra bien qu’un notaire me garantisse qu’il y a une vraie maison qui m’attend et mon acheteur devra aussi avoir une banque pour que la crypto-monnaie que je lui ai échangée deviennent des euros.

Mais comment la blockchain sait qui sont les joueurs et si c’est bien eux qui jouent ?

Elle ne le sait pas ! Comme pour le Monopoly, sur le plateau on ne voit que des pions.


Il y a un mécanisme qui fait que le pion ne peut bouger qu’avec une clé secrète qui est créée au moment de commencer le jeu. Alors, surtout ne perd pas ou ne te fait pas voler ta clé secrète, car tu auras beau essayer de dire à la blockchain que ce n’est plus toi qui joue, elle est programmée pour ne croire que la clé secrète.


Et on peut faire tous les jeux que l’on veut ?

Pas vraiment. Les calculs pour enchaîner les blocs prennent du temps. Donc on utilise la Blockchain que pour les parties du jeu qu’il faut vraiment sécuriser. Un peu comme dans Scotland Yard : on laisse jouer et on contrôle de temps en temps. Dans votre jeu Star Stable (N.D.L.A : un MMO sur les chevaux), il n’y pas pas besoin de blockchain lorsque vous vous promenez simplement dans le décor.


Et si on a besoin de regarder dans le dictionnaire comme au Scrabble ?

C’est vrai, dans certains jeux, la blockchain peut avoir besoin d’informations hors du jeu. Pour cela on demande à quelqu’un en qui on peut avoir confiance : par exemple Larousse pour un dictionnaire informatique.
On appelle ce « quelqu’un » un Oracle. Pourquoi ? Comme aux temps des grecs, la blockchain n’a aucun moyen de vérifier ce que dit l’Oracle, elle doit lui faire confiance aveuglément. Imaginez si je pouvais pirater le dictionnaire et ajouter des mots imaginaires en jouant au Scrabble ? Enfin j’aurais une chance de gagner !
Vous comprenez bien que la blockchain ne résout pas l’ensemble des soucis venant des tricheurs.


Et c’est la blockchain qui lance les dés ?

C’est surement le problème le plus difficile à résoudre en informatique : on dit générer un nombre aléatoire. Le plus difficile est de savoir si personne ne triche: il faut que le joueur garde l’impression que c’est lui qui lance le dés et pourtant il faut que le résultat soit aléatoire.
Dans sa conception chaque noeud, c’est à dire chaque copie du programme sur chaque ordinateur des joueurs, fait les mêmes calculs que les autres donc chaque noeud doit avoir la copie du nombre aléatoire : on dit qu’elle est déterministe, c’est à dire sans aléa.

Les filles de la classe disent qu’un peut faire beaucoup d’argent avec la blockchain ?

C’est vrai et on peut en perdre beaucoup aussi. En fait les tokens sont un peu comme des cartes Pokémon. Ces tokens s’achètent et se vendent et comme certains croient que la blockchain va changer le monde, il y a de la spéculation. Un peu comme les collectionneurs qui vont achter très cher une carte Pikachu d’il y a 20 ans, enfin je suppose, ou bien une collectionneur qui achète des vieux billets de Monopoly. Mais tant pour la blockchain que pour les vieux billets c’est l’offre et la demande qui fait la valeur. Il n’y a pas de valeur d’usage intrinsèque comme un diamant ou une pépite d’or.

On ne voit pas bien à quoi cela pourrait servir dans la vie réelle ?

Dans l’économie réelle, il y a de nombreux échanges entre les personnes, les entreprises, les gouvernements et collectivités. Lorsque ces échanges sont deux à deux, comme quand vous jouez au Go, les technologies existent depuis longtemps. Par contre si l’échange implique de nombreux acteurs (plus de deux)  la Blockchain apporte un plus. En effet, Plus il y a d’échanges, plus les tricheries, petites ou grosses, arrivent. En utilisant à bon escient la blockchain on pourrait rendre ces échanges plus transparents et moins propices à la mauvaise foi des différents acteurs.

Dis Papa, comment on fait les bébés ?

Euh … mais … est-ce que je vous ai parlé des arbres de Merkel ? Ils entourent une clairière secrète et magique  dans le Vercors … mais pourquoi vous partez, je n’ai pas fini …

Cyril Vignet 




mercredi 1 avril 2020

Boulier Elliptique compatible Blockchain

Ce nouveau post va nous permettre de réaliser une boulier elliptique. Nous verrons en conclusion du post tous les intérêts dans le domaine des blockchain qui font un usage immodéré de la cryptographie elliptique.

Revenons un peu sur les courbes elliptiques. Comme l'explique Wikipédia ce sont des courbes de la forme Y^2=aX^3+bX+c  soit Y = RacineCarré  (aX^3+bX+c) pour une demi-courbe.


ce qui en BlockScad se traduit par le bloc suivant (pour les nouveaux sur ce site, voir les étapes précédentes sur BlockScad) avec des paramètres soigneusement choisi. Nous reviendrons sur le choix en fin de post.

Avec ce block nous allons construire une première courbe.


la fonction Kx est une boucle entre -2.34862 (la valeur de X pour que Y soit nul et 4 pour ne pas faire un boulier trop grand.

Sur le graphique, l'axe rouge est le X et l'axe vert est le Y.

A ce stade, réalisons la courbe complète en utilisant une symétrie par rapport au plan XZ


Ne vous inquiétez pas, la taille des branches est la même : c'est simplement l'affichage 3D qui donne une impression de dissymétrie.

Maintenant, nous voulons ajouter un objet qui puisse facilement glisser sur la courbe elliptique pour agir comme tangente à la courbe.


Nous allons décrire dans le détail les différentes étapes.


En premier temps, un anneau torique (en bleu) qui devra coulisser sur la courbe. Le programme ne pose aucun souci. Je vous passe les détails sur le choix des mesures : un peu de calcul très simple et surtout beaucoup d'essais et de vérification sous plusieurs angles du dessin 3D.

En jaune, un cylindre creusé avec seulement 5 faces et en rouge l'axe qui rentre dans le cylindre.

Maintenant il s'agit de :

  1. positionner le tore sur la courbe
  2. d'orienter le tore pour qu'il soit bien perpendiculaire à la courbe.

Pour positionner notre axe sur la courbe, nous allons utiliser la fonction qui nous donne la courbe. Regardez le programme ci-dessous.



Nous avons seulement ajouter une fonction TRANSLATION  avec X et Y qui est le résultat de la courbe elliptique. Le paramètre "bool" est simplement à 1 ou -1 suivant que l'on veut un place sur les Y positifs (demi-courbe du haut) ou sur les Y négatifs (demi-courbe du bas).

En complément, nous avons mis ce petit bout de code sous forme d'un module "tangente" pour facilement passer les paramètres.

Mais, comme nous pouvons le constater sur la représentation 3D, ce nouvel objet interfère avec la courbe. Il est donc temps de faire la deuxième partie du programme, celle qui va orienter l'axe rouge comme tangente à la courbe.

Au passage, remarquons que le tore bleu et le cylindre jaune seront donc à 90° de la tangente.


Entouré d'un liseré jaune, nous avons ajouté une rotation verticale, c'est à dire suivant l'axe des Z.

Pour ce faire nous utilisons les propriétés suivantes des mathématiques du secondaire (je sais la seconde c'est loin mais ce n'est pas pour rien que l'on devait apprendre ces leçons ;-) 

  1. la tangente de l'angle à un courbe est donné par sa dérivée
  2. l'angle est donc donné par la fonction inverse de la tangente, c'est-à-dire ArcTangente (ou ATAN en BlocScad)
  3. et comme nous l'avons remarqué précédemment, il faut rajouter 90 pour rester orthogonal à la tangente
  4. et toujours notre variable "bool" pour choisir si c'est en haut ou en bas sur la courbe
Donc la formule du haut reste simple à comprendre. Il nous reste à calculer la dérivée de la courbe elliptique.
C'est le module en dessous. Petit rappel nécessaire sur les dérivées de RacineCarré ? Je vous ai trouvé un site tout à fait adapté. https://homeomath2.imingo.net/derirac.htm

et voici donc notre belle courbe avec 2 droites tangentes.


le reste du projet est un peu de cosmétique pour pouvoir en faire une impression 3D.

On ajoute un cadre pour mieux tenir la courbe et aussi pour la prochaine étape.


Pas de souci particulier pour ce programme. Les bonnes valeurs par essais successifs (comme d'hab !)

Maintenant, rajoutons une réglette verticale.


Bien qu'un peu long, le module est très simple. Il s'agit d'une réglette qui peut coulisser sur le cadre (axe des X) et qui représente une vertical sur l'axe des Y.

A partir de maintenant, nous avons tous les éléments pour graduer notre règle. Si nous partons du principe que la tangente est au point (1) le point (2) est représenté sur la figure.



d'où l'intérêt de réaliser la réglette.

le trois se déduit de l'intersection entre le 1 et le 2. 




Concernant l'impression 3D, il faut faire cela en deux fois. la courbe et le cadre puis les axes. Même si en dessous vous avez une simulation de la règle complète.




Revenons, un peu sur la courbe elliptique. Voici ce que cela donne sous GEOGEBRA.


Pour bien vous convaincre que le choix des paramètres est très important, voici un nouveau dessin avec des paramètres un peu changés.



et c'est ainsi que nous découvrons que nous aurions pu tomber dans un poisson d'avril ... uniquement si les paramètres initiaux avaient été mal choisis ;-)

Et pour tous ceux qui ont eu la patience de lire jusqu'au bout, voici le bidule réalisé avec SCULPTEO.


Il y a surement quelques optimisations à faire d'autant plus que cela n'a vraiment rien d'un boulier ;-)