[GCli] Soucis affichage account balance quand trop de ĞD (+- 11.2337 BĞD) qui prête à confusion quand on fait des transferts

J’étais en train de faire des tests dans GCli, et je faisais des transfert d’argent depuis mon compte Nicolas80 / addresse 5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn

vers un compte que j’ai créé à partir d’un seed directement (pas de mnemonic) / addresse 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm

Depuis Polkadot-JS, le montant affiché pour mon compte 5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn est 11.2337 BĞD (11 billion ĞD ou 11 billion de cents de GD je ne sais pas trop mais en tout cas le DU est beaucoup trop haut :stuck_out_tongue: )

Depuis GCli la valeur est celle-ci:

gcli account balance
5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn has 11233705000 ĞD

Je remarque qu’il n’affiche pas non plus la partie décimale donc je pense que je ne vois qu’une valeur tronquée…

Et du coup, quand je fais un transfert; on ne voit pas le montant se modifier depuis la source

gcli account balance                                                       
5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn has 11233705000 ĞD

gcli -a 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm account balance
5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm has 52 ĞD

gcli account transfer 6100 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm
Enter password to unlock account 5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn
Password: 
transaction submitted to the network, waiting 6 seconds...
transfered 61 ĞD (5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn → 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm)

gcli -a 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm account balance
5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm has 113 ĞD

# Toujours le même affichage tronqué pour la source
gcli account balance                                                       
5Funkng8dL397H9ZEJ9sXDjFhStCqRYUj1a62ngcrEMy7ivn has 11233705000 ĞD

J’ai également fait un transfert depuis un autre compte qui a moins de ĞD et là l’affichage fonctionne bien (avec décimales visibles) et le montant diminue d’un côté et augmente de l’autre quand je crédite 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm.

gcli account balance                                                     
5GhAZBagx87sTGfMppfPPcWhxCKGWE8zDi1oHp7YiKosD9KZ has 96495.24 ĞD

gcli account transfer 100 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm                                                
Enter password to unlock account 5GhAZBagx87sTGfMppfPPcWhxCKGWE8zDi1oHp7YiKosD9KZ
Password: 
transaction submitted to the network, waiting 6 seconds...
transfered 1 ĞD (5GhAZBagx87sTGfMppfPPcWhxCKGWE8zDi1oHp7YiKosD9KZ → 5GNadia4kktgt3Zg3QgTKL8Lse78XXMcisnRhkPKA4ombYDm)

gcli account balance
5GhAZBagx87sTGfMppfPPcWhxCKGWE8zDi1oHp7YiKosD9KZ has 96494.24 ĞD

Bon, j’avoue qu’il y a sans doute peu de risque d’arriver à ce genre de montants dans le réseau de “prod”; mais ce serais bien d’avoir un affichage cohérant dans tous les cas :slight_smile:

Question subsidiaire; dans Polkadot, avec quelle action peut on voir la balance d’un compte ?
Je me demande si la valeur est bien complète à cet endroit. Pour moment je vois juste une valeur partielle quand je regarde la liste des mes comptes
image

Je vois dans le code GCli que Balance est un u64 (et exprimé en cents à priori); mais que l’on joue avec des f32 pour calculer le montant à afficher; avec la séparation décimale.

J’ai fais une MR pour une solution:

Seul soucis potentiel; on ne tient pas compte de la locale pour le choix du séparateur de décimales dans ma version (hardcodé à “.”).

Sinon on pourrait sans doute voir pour utiliser un équivalent BigDecimal à la place (en général, c’est une très mauvaise idée de jouer avec des floats pour des montants monétaires)

3 Likes

Pas directement lié, mais j’ai ajouté une autre MR pour permettre de sauver tous les types de SecretFormat dans le Vault (ce sur quoi j’étais occupé quand j’ai remarqué le soucis d’affichage des grands montants :wink:)

1 Like