Nombre de décimales et durée maximale sans rotation de base

Je relance le sujet après avoir vu ce post qui rapporte un bug de Tikka causé par la masse monétaire qui ne tient plus dans 63 bits.

En effet Duniter stocke les montants en 64 bits, et d’après mes calculs c’est largement suffisant pour la Ğ1 à long terme. (issue)

Mais j’avais oublié la Ğdev qui croît beaucoup plus vite. D’ailleurs la masse monétaire est bloquée :

universalDividend.monetaryMass = 18446744073709551615 = 2^64-1

Le DU n’étant pas distribué automatiquement, la total issuance n’est qu’à la moitié de la limite, mais déjà trop pour 63 bits.

La blockchain devrait y survivre puisque l’arithmétique sature (si la limite est dépassée, on prend la valeur max représentable).

Quelques solutions :

  • diminuer le taux de croissance et détruire des Ğ1 en sudo
    • il faut bricoler, mais ça ne change rien aux forgerons
  • relancer la Ğdev avec un taux de croissance plus faible
    • zéro dev, mais embête les forgerons
  • passer en 128 bits
    • il faut coder la migration ou relancer la chaîne
    • inutile pour la Ğ1 → gaspillage de place dans les bases de données, calculs plus lents, mauvais support par certains langages
5 Likes