Logiciels clients > Problème des TX avec sources en "bases" différentes

Ma solution consiste à créer une transaction avec :

En Inputs de toutes les sources de base inférieure
En Outputs :

  • une ligne par source avec un “zéro” en dernier digit (ex: 25656 => 25650)
    • sur la dernière source, on ajoute en plus le reste qui tombe juste (un multiple de 10)
  • une nouvelle output, rassemblant le reste, forcément inférieur à 10.

Est-ce que cela vous convient ?

EX:

{
version: 2,
issuers: [
“4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv”
],
inputs: [
“D:4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv:1310” // montant=9387
“D:4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv:1405” // montant = 9568
“D:4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv:1650” // montant = 9729
“D:4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv:1870” // montant = 9580
],
outputs: [
“9380:0:SIG(4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv)”, // on recupere 7 unités
“9560:0:SIG(4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv)”, // on recupere 8
“9720:0:SIG(4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv)”, // on recupere 9
“9600:0:SIG(4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv)”, // dernière sources, à laquelle on ajoute la partie du reste qui tombe juste (=20)
“4:0:SIG(4ZvN25BZtirpYg59FyD2tko7oKWC4UBDwdECrrKZDWyv)” // le reste (24 - 20 = 4), toujours inférieur à 10
],

}

Par contre, ca pose le problème des nouveaux paiements recus en base 0 (et qui n’ont pas de zéro en dernier digit) :

  • On aura a nouveau des sources en base 0;
  • Nous proposons de relancer l’opération précédente, dès lors que, par exemple, suffisamment de sources sont en base 0 (cela pourrait etre un pourcentage du solde du portefeuille, ou bine un montant max exprimé en DU);

Qu’en dites vous ?

Refait on l’opération ? quand la déclenche t-on ?

La solution me semble correcte.

En fait, elle devrait être appliquée systématiquement afin de tendre vers la migration des unités d’une base vers la suivante, dès lors que celle-ci apparaît.

Par exemple ici, toute les unités restent en base 0. Mais quand une prochaine transaction tentera de puiser dans les sources terminant par une puissance de dix et de la joindre à une source de DU en base 1, alors les unités de base 0 seront automatiquement migrées dans la base supérieure.

Bien sûr quand de nouveaux paiements arrivent en base 0, il faut réitérer l’opération d’élévation des sources en puissance de 10. Mais du fait de l’algorithme précédent, de moins en moins de sources seront en base 0 et les unités faibles en base 0 se feront de plus en plus rare. Donc la problématique aussi.

Donc pour répondre : on déclenche l’opération dès que c’est possible !