Nouvelle version 0.40 ! Vers un protocole d'exploitation

Duniter passe aujourd’hui en version majeure 0.40, exploitant donc le protocole 0.4 qui sera probablement le socle d’une première monnaie libre à voir le jour soutenue par les développeurs de Duniter.

En effet, sauf revirement de situation, cette version du protocole nous paraît acceptable pour le lancement d’une monnaie libre. Il ne nous reste désormais plus qu’à choisir correctement les paramètres initiaux de la monnaie à faire naître, de coordonner l’inscription des membres fondateurs, et la monnaie pourra commencer à exister.

Mais avant tout, il nous faut tester cette version 0.4 du protocole. Il vous faudra donc installer la nouvelle version du logiciel pour nous faire des retours.

N.B.: Cette version change les règles monétaires et produira inévitablement un embranchement réseau. Il est donc important de se mettre à jour le plus massivement possible pour éviter les instabilités et incohérences sur la vision commune de la monnaie.

Les changements apportés

Cette nouvelle version clôture pas moins de 30 tickets, formés à la fois de correctifs et d’évolutions.

Version de block

Le document Block passe en Version 4 et apporte les 3 modifications ci-dessous.

Formule DUĞ

La formule du DU change à nouveau au profit de celle énoncée par @Galuel :

DU(t+1) = DU(t) + c² * M / N

Difficulté personnalisée

La difficulté personnalisée change et permettra de mieux répartir la part de blocs que chacun peut calculer dans la fenêtre de calcul courante. Pour résumer, les plus gros calculateurs se verront handicapés par rapports aux plus petits présents sur le réseau.

Les points de contrôle

Enfin, la formule définissant les points de contrôle à changé suite à une réflexion sur la taille maximale de la toile de confiance.

Ancienne formule :

Y[N] = 1.2 x CEIL(EXP(LN(membersCount)/stepMax))

Nouvelle formule :

Y[N] = CEIL(membersCount ^ (1 / stepMax))

Toutefois le changement est à peine perceptible, à tel point que le changement est rétro-compatible sur TestNet.

Détails de la version

Lien vers la page de notes de version.

Mettre à jour sa version

4 Likes

Avec cette version, on va pouvoir se poser et commencer à réfléchir sérieusement à la suite des événements :

  1. choix des paramètres pour une monnaie de production (à peu de choses près, c’est fait)
  • vérification des algorithmes appliqués dans TestNet (la distance joue-t-elle bien son rôle ?)
  • simulations d’une monnaie à 1 million d’utilisateurs, avec différentes hypothèses de comportement des utilisateurs

Je partagerai mes analyses sur le forum comme d’habitude. Mieux, je partagerai aussi les outils pour que vous puissiez vous-mêmes exploiter les données.

Je ne sais pas encore exactement comment je vais procéder techniquement pour les points 2. et 3., mais je pense qu’il y a déjà bien assez de données pour tirer des enseignements de TestNet et des comportements à avoir / ne pas avoir pour une monnaie de production, et qu’il serait dommage de s’en priver !

Sans oublier qu’il y a aussi les RML8 à préparer ! Cela nous laisse du temps pour obtenir des retours de cette version 0.40.

Bref, on n’est pas prêt de s’ennuyer :slight_smile:

6 Likes

Je me permets de mettre en copie @vincentux, @hacky, @mamygeek, @nay4, @Pafzedog, @Moul, @RavanH, @urodelus, @modulix, @Inso et @ktorn qui ont tous installé un nœud visible sur le réseau TestNet.

Merci de vous mettre à jour !

Chargement en cours avec adsl escargot ! :rage:

edit: C’est parti !

C’est fait :wink:

Wahou, vous gérer les gars! C’est même un peu rapide pour moi… j’ai du mal à vous suivre :slight_smile:

tien j’apparais parmi les 19 membres ayant calculés des blocks !
Je viens de me mettre à jours vers la version 0.40 :wink:

Je constate sur Sakia que la blockchain semble s’être forkée en 3 branches, c’est la première fois que j’ai l’occasion d’observer un fork depuis que je tourne un nœud, comment ça se passe dans ces cas là ?

1 Like

Observes ce moment avec attention, ça va être grandiose dans quelques minutes !

Bon c’est pas aussi spectaculaire que d’habitude, mais tu dois entrevoir l’issue de tous ces forks :slight_smile:

1 Like

hoo ca y ai tout le monde s’est calé sur les nœud les plus “en avance” en nombre de block, comment cette magie opère techniquement ?
A partir de combien de block de retard les nœud en retard abandonne leur vision de la blockchain pour se calquer sur les nœud les plus en avance ?

Techniquement, chaque nœud observe ses pairs et, quand il en repère un qui 6 blocs et 30 minutes d’avance sur lui, il tente de dépiler ses propres blocs jusqu’au bloc qu’ils ont en commun (il l’a préalablement vérifié), puis rempile les blocs qu’il a trouvé sur ce pair. En cas d’échec, il annule l’opération.

Ca ressemble beaucoup aux git revert puis git merge mais appliqué à la blockchain.

1 Like

Je t’invite à lire la section « Consensus émergeant » de mon article de blog.

merci cgeek pour cette réponse très précise,
je suis en train de réaliser une vidéo pour expliquer le fonctionnement de la blockchain alors je m’intéresse aux détails. J’ai essayer de lire un peu le protocole officiel mais je ne suis pas très a l’aise avec l’anglais !

EDIT : merci je vais lire cela de suite :slight_smile:

Oui et puis le protocole Duniter c’est pas vraiment la meilleure porte d’entrée … l’article de Moul est bien plus adapté !

1 Like

@Pafzedog, @ktorn, @RavanH, @hacky could you update your node to last version.
There is currently two branches with protocols 0.4 and 0.3.

C’est fait !

OK. Do we also need to wipe the existing data and re-sync in order to deal with the fork?

It depends if it works or not.
I have one node which didn’t needs to reset database and the other which is capricious.

Please update to 0.40.2 and try to join main fork.

If your node is < 0.40.2, it won’t accept blocks and will stayed stucked.

Also explained here:
https://forum.duniter.org/t/forks-sur-la-vesion-0-40/1340/1