Bon je confirme, Substrate est très orienté Comptes car développé pour Polkadot par Gavin Wood, ex-cofondateur et CTO d’Ethereum.
Quelques avantage et inconvénients du mode Comptes
Simplifier la gestion côté client et côté Duniter
Migrer Duniter vers un mode Comptes est assez simple dans la mesure où 100% des échanges se font déjà dans ce mode. De plus les clients n’auraient plus à gérer d’UTXO ni à réaliser des transactions de change intermédiaires (gain de temps à l’exécution d’une TX, plus simple à coder pour un client).
Pour les 0% restants, j’avais implémenté les fonctions CSV et CLTV dans Duniter v1 afin de pouvoir faire de l’Atomic Swap (échanges interblockchains sans tiers), mais Substrate peut aussi le faire en mode Comptes et dispose déjà d’une pallet toute faite.
Problème de la double-dépense
Les comptes ont toutefois ce problème de devoir gérer la double dépense, car concrètement en mode compte on signe des chèques : si le chèque est dupliqué par un attaquant, il peut « vider » le compte de l’émetteur. Ce n’est pas le cas en UTXO où chaque source de monnaie est bien identifiée et consommée à chaque transction.
Ce point est contré par l’ajout d’un Nonce (compteur) associé au compte, et chaque chèque numérique doit comporter ce n° afin que la blockchain puisse l’identifier et refuser un duplicata. Cela implique que, en émettant trois chèques numérotés 4, 5 et 6, tant que le n° 4 n’est pas passé, les n°5 et n°6 restent bloqués.
Moins rapide que les UTXO
Implication du point précédent, là où les UTXO permettent d’exécuteur plusieurs transactions en parallèle, les Comptes ne le permettent pas. Les dépenses sont séquentielles.
Pas de transactions lightning
Il faut développer une pallet permettant de créer un compte de type lightning, ou bien permettant aussi le transfert de monnaie en UTXO. Ce serait du travail supplémentaire.
Rester en UTXO pour Duniter ?
Je continue de me poser la question à ce stade, car pour les clients :
- Cesium est déjà compatible, pas de surcoût ;
- Tikka reprendrait le code de Sakia je suppose @vit ?
- Ğecko, je ne sais pas : les transferts de monnaie sont-il déjà gérés en UTXO, @poka ?
Mais bon, à part cette compatibilité existante, je n’ai pas trop d’arguments en faveur d’une conservation des UTXO à ce jour.