Erreur lors de transfert de monnaie

Bonjour à tous !

J’ai essayé de faire un premier virement il y a quelques jours pour tester ; j’ai tenté de virer 5TN, et j’ai eu cette erreur
"Only 0 test available on 0 sources", alors que j’avais une vingtaine de TN sur mon compte.
J’ai testé à nouveau aujourd’hui, avec la même erreur.
J’ai regardé sur ce post :
https://forum.duniter.org/t/transfer-error-only-945398-test-net/1033/14?u=wyllyjon
j’ai vu qu’ils parlaient de transfert en unité 10. Je n’ai pas compris l’histoire avec la blockchain, mais j’ai testé avec 10TN et ça a fonctionné (@cgeek, tu as dû recevoir le versement d’ailleurs).

Quelqu’un peut m’expliquer ?

Merci et bonne journée !

Pour info : j’ai bien reçu les 10 unités, à l’instant.

Toujours le même sujet - Transfer error only 945398 test_net

Le fonctionnement de Sakia a été amélioré pour être plus fonctionnel sur ce problème. Mais les releases sont bloquées du à un défaut du service sourceforge.net… Des qu’il est à nouveau disponible je vous livre ça :slight_smile:

Je viens de mettre à jour Sakia, et j’ai toujours des problèmes avec la version 0.20.3. J’ai ouvert une issue sur github à ce sujet (#481).
Mais j’ai aussi des problèmes avec Cesium. En gros, j’essaie de transférer 2 DU (c’est un chiffre rond en DU, mais bien sûr pas du tout en TN). Et j’ai le message d’erreur suivant:
“Not enough changes to send this amount in one time. Maximum amount: 0.0109 UD”. Bien sûr, je pourrais essayer de transférer 0,0109 d’abord et 1,9891 ensuite. Mais très franchement, je ne vois pas comment on va convaincre les gens que c’est la seule solution pour envoyer 2 DU. :slight_smile:

Quand je regarde mes sources, je vois que j’ai plein de sources en base 0, dont le total fait 66500 TN soit effectivement à peu près 0,0109 DU, et une unique source en base 1. Je remarque d’ailleurs que toutes les sources en base 0 sont des multiples de 100…
Admettons que je veuille envoyer 1.234.567 TN. Ne peut-on pas dans la même transaction prendre une source à 1000, envoyer 67 avec et garder le résultat dans une nouvelle source en base 0, puis envoyer le reste à partir de la source base 1? Je ne me suis jamais plongé dans le mécanisme donc ma question est peut-être idiote, j’essaie juste de comprendre ce qui bloque. :slight_smile:

Autre question connexe: il me semble avoir lu qu’on s’attache à garder 7 chiffres significatifs… n’est-ce pas trop peu? Dans le monde, on se retrouve avec des transactions en milliards d’euros (on parle même parfois de mille millards), et d’autres de potentiellement 1 centime. Ce qui fait quand même 15 chiffes significatifs entre 1.000.000.000.000 et 0,01. Il est probable que dans l’usage de la TRM, d’aussi grands écarts ne se reproduisent pas mais 7 chiffres significatifs me parait être un peu « court », surtout que techniquement l’impact de rajouter des chiffres significatifs est tout de même limité… En comparaison, le bitcoin a 8 décimales et peut aller jusqu’à 10^7 (en réalité plus mais il n’y aura normalement que 21 millions de bitcoin au total) soit 16 chiffres significatifs (tiens tiens), ce qui me paraît adéquat.

Pour le DU. Mais tu peux très bien avoir 100 DU sur ton compte, et donc 9 “chiffres significatif”.

Arg, c’est injuste cette monnaie! Y a que les riches qui ont droit à plus de chiffres significatifs! :smiley:

Plus sérieusement, combien y a-t-il de chiffres significatifs au niveau des TN (en absolu)? C’est un long? (donc jusqu’à 4 milliards et des bananes soit à peine 9 chiffres significatifs?). Si j’ai bien compris, on ne va jamais au-delà du million (puisque c’est à ce moment qu’on change de base, c’est ça?) et donc on se limite à 7 chiffres (et le reste est plus ou moins destiné à la poubelle puisqu’on n’a déjà plus cette granularité en base 1). Donc bien 7 chiffres au final? Qu’est-ce que j’ai raté au passage?

Il faut aussi tenir compte du nombre d’utilisateurs et de la fenêtre de conservation de la monnaie (160 ans). J’avais fait un post récapitulatif mi-février 2016 : on a besoin d’environ 10^18 unités.

Seul le DU est limité à 7 chiffres, les transactions ne sont pas limitées elles :wink:

Par contre avec des DU à 7 chiffres on ne peut plus faire des transactions avec des granularités à 8 chiffres de base inférieure.

Ceci dit, entre 1000 0000 et 1000 0009, tu vois beaucoup de différence ? Ca fait 0.0000009% d’écart…

Plutôt 0.00009%. Pour un individu qui doit acheter une allumette, il y a besoin d’avoir de la petite monnaie… et pour un conglomérat, un état ou un site d’échange de monnaies, il faut avoir la possibilité de manipuler des sommes potentiellement très importantes. Entre l’allumette et la construction d’un barrage ou la comptabilité d’un état, il y a un ordre de magnitude assez élevé. Et au niveau comptable, 10.000.000 et 10.000.009, ce n’est pas la même chose, surtout si on parle ici en DU! Pour un pays comme les US avec 300 millions d’habitants, donc avec une masse monétaire circulant correspondant à 30 milliards de DU, 10 millions de DU, ce n’est pas grand-chose à l’échelle du pays (peut-être qu’avec la monnaie libre, le système social ne pourra plus être sous forme d’état, mais rien n’est moins sûr. :slight_smile: ), alors que 9 DU reste tout de même la production annuelle de 9 personnes, ce qui n’est pas rien! Donc il faut d’un côté la granularité de l’allumette pour le péquin moyen (donc probablement au moins 6 chiffres après la virgule, en gros 1 centime comparé à une production annuelle de 10.000 euros), mais aussi la granularité au niveau de l’état (fonction de la population, si elle se compte en centaine de millions, il faut donc au strict minimum 8 à 9 chiffres entiers et même peut-être plus en fonction des transactions à faire)… donc 6 chiffres après la virgule et disons 9 pour l’entier d’avant la virgule, on retombe sur 15 ou 16 chiffres significatifs.

Mais le prix quantitatif de l’allumette évolue avec l’augmentation de la masse monétaire. Par contre à valorisation de l’allumette équivalente, son prix en DU est stable.
La plus petite monnaie possible est 1 TN initialement.
Lorsque le changement de virgule se fait, c’est que le DU a fait X10.
1 TN devient alors 10 TN.
Et l’allumette qui vallait en petite monnaie 1 TN vaudra alors 10 TN. Mais toujours autant en DU.

Je suis bien d’accord, mais ça ne change rien au problème du nombre de chiffres significatifs à avoir. À un moment donné, il faudra pouvoir faire une transaction de 111.111.111,111111 DU, ou bien si tu préfères 111.111.111.111.111 x 10^base TN. Et aujourd’hui, on n’a pas assez de chiffres significatifs, si je ne me trompe pas. Ou alors, est-ce que c’est simplement une limitation technique d’aujourd’hui mais ça serait faisable en coupant en 111.111 x 10^(base+9) + 111.111 x 10^(base+3) + 111 x 10^base? Sous réserve qu’on ait encore des sources de cette base, bien sûr, ce qui est loin d’être garanti.

Ce ne sont que les DU qui sont générés avec 7 chiffres significatifs. Et pour nettoyer la vieille monnaie, les transactions qui contiennent un input de base N ne peuvent pas générer de sources de base inférieur à N. Mais on peut tout à fait écrire des transactions générant des sources de base supérieure ou égale à N.

Ainsi, avec 10 DU de base 1 tel que :

  • 1.000.000
  • 1.100.000
  • 1.210.000
  • 1.331.000
  • 1.464.100
  • 1.610.510
  • 1.771.561
  • 1.948.717
  • 2.143.588
  • 2.357.947
  • 2.593.742

On peut tout à fait écrire une transaction qui enverrait 8 chiffres significatifs en sortie :

  • 18.531.167x10^1

Par contre si tu ajoutes une base 0 telle que "100 001"x10^0 tu ne peux pas écrire :

  • 185.411.671 x 10^0

Car tu générerais une base plus faible.

En fait tout ce problème de calcul me donne l’impression qu’il faut que l’on réalise tout nos paiement en DU. Ce faux problème n’apparait pas quand on réalise nos transactions dans ce référentiel…

J’avoue ne pas comprendre la logique entre les 2 phrases.
Que ce soit en DU ou en TN, ça n’a aucune importance, c’est juste une multiplication à faire entre les 2, et un certain nombre de chiffres significatifs d’un côté se traduit par le même nombre de chiffres significatifs de l’autre (en supposant qu’on écrit les valeurs en TN sous forme de 10^base).

Au final, ce qui m’intéresse, c’est d’avoir assez de chiffres significatifs, tant dans les transactions que dans les soldes des comptes.

En fait on a besoin de 6 ou 7 chiffres significatifs par individu auquel il faut ajouter le nombre de chiffres nécessaires pour représenter le nombre de personnes présentes dans la monnaie, donc 2 pour 100 personnes et 9 pour 1 milliard de personnes.

Je m’explique.
Dans un réseau de 2 personnes, on a au total 20 DU en moyenne en circulation donc on a besoin de nos chiffres significatifs après la virgule pour les allumettes (disons 6 chiffres après la virgule), mais les plus grosses transactions ne dépasseront probablement pas les 10 DU donc on n’a besoin que de deux chiffres significatifs pour désigner les entiers (en DU), soit 8 chiffres au total, tout va bien.

Par contre, dans un réseau de 1.000 personnes, la quantité de monnaie en circulation est en moyenne de 10.000 DU, et du coup, pour des projets communautaires par exemple on peut commencer à imaginer des transactions qui dépassent les 100 DU, donc on a toujours besoin de nos 6 chiffres après la virgule pour acheter des allumettes, mais cette fois on a besoin de 3 chiffres pour représenter les entiers. Soit 9 chiffres significatifs.

Lorsque que la population grossit au million, on a une masse monétaire de 10 millions et les plus grosses transactions (pour des grands projets d’infrastructure par exemple) vont avoir besoin de plus de chiffres pour représenter les entiers, probablement de l’ordre des 100.000 (voire plus, on ne peut pas vraiment présager des besoins à l’heure actuelle, peut-être qu’il n’y aura jamais de transactions ni de soldes de comptes dépassant les 10 DU, mais on ne peut pas en être certain et je suis plutôt persuadé du contraire), soit 6 chiffres avant la virgule… plus les 6 chiffres après la virgule pour acheter les allumettes, soit 12 chiffres (à mon avis même plus).

Et quand on passe au milliard, on rajoute encore 3 chiffres de plus.
Bien sûr, on n’est pas encore au jour où la population mondiale utilise Duniter, mais j’ai vu dans certaines vidéos qu’on envisage déjà que des populations de l’ordre du million sont gérables, donc il nous faut au strict minimum 12 (à mon avis 15 pour être tranquilles) chiffres significatifs pour satisfaire tous les besoins, de l’allumette en centimes au barrage hydroélectrique en centaines de millions.

Ce que j’essaie de te montrer c’est qu’à aucun moment le nombre de chiffres significatifs est bloqué à 7. Ce sont juste les DU qui sont générés avec 7 chiffres significatifs au maximum. Et pour élaguer la vieille monnaie, on ne peut pas faire de transaction avec une base inférieure.

Peut-être qu’il faudrait ceci dit élaguer la vieille monnaie moins vite, et bloquer les transactions de base inférieur à N-1 ou N-2…

Quel serait l’impact de monter ces 7 chiffres significatifs à, disons, 15? Impossibilité d’utiliser des long?
Si c’est bien ça la limitation, alors oui il faut autoriser les transactions avec des mix de base N-1, voire N-5 ou plus. Du coup on rajouterais des chiffres significatifs à chaque fois qu’on change de base, et du coup aussi en partie en fonction de la population, ce qui devrait régler le problème.