UTXO ou Account based ? Vous utilisez des Blockchains qui disposent de mécaniques différentes pour suivre votre solde sans forcément le savoir. Ces différences fondamentales font que certaines Blockchains sont plus adaptées à un type d'usage : Bitcoin pour des échanges d'argent et Ethereum pour l’exécution de smartcontract.

Le modèle UTXO

Il peut paraître compliqué mais finalement il est assez simple. C'est le modèle que nous utilisons dans la vie de tous les jours quand nous effectuons des transactions avec du Cash.

Dans ce modèle, chaque transaction a comme origine un output d’une transaction précédente et va générer à son tour de nouveaux outputs (UTXO). Votre wallet va garder la trace de toutes les UTXO associées aux adresses qu’il possède. Lorsque l’on consulte le solde de ses Bitcoins, il va en fait parcourir toutes les UTXO présentes afin de les consolider et d'en afficher la somme.

Quand vous importez la seed de votre wallet Monero, le wallet va parcourir l'intégralité de la Blockchain pour constituer votre solde. Cela peut durer plusieurs heures.

Exemple du modèle UTXO :

  1. Vous avec trois billets de 10€ et vous voulez acheter un DVD qui en coûte 25€.
  2. Vous allez donc donner 30€ (d'anciennes UTXO) au vendeur
  3. Le vendeur va prendre ce que vous lui devez (25€) et va vous rendre la monnaie sous la forme d'un UTXO de 5€.

Il existe deux exceptions à cette représentation simplifiée :

  • Les Blockchains ont des frais de transactions qui ajoutent un acteur à l'équation : le mineur. La formule exacte est New UTXO = (sum of original UTXO) – (sum of currency sent to a different address) – (transaction fees for that particular blockchain)
  • Contrairement aux billets de banques, il n'y a la contrainte de valeurs prédéfinies

Le travail du wallet

Dans ces Blockchains les wallets ont un travail spécifique à effectuer. Ils doivent choisir de manière intelligente les UTXO à regrouper quand vous voulez effectuer une transaction. En clair, faut-il mieux "casser un billet" ou réunir de nombreuses petites UTXO. Comme je l'explique ici, de trop nombreuses UTXO peuvent bloquer les hardware wallets.

Attention, si vous utilisez un "HD Wallet", ce qui est le cas du Ledger Nano S, vous avez la possibilité de disposer de nombreuses adresses pour un même compte. Lorsque vous effectuerez une transaction sortante, Ledger Live pourra aller piocher dans les UTXO de toutes vos sous-adresses. Cela peut diminuer votre anonymat. Utilisez plusieurs comptes pour chaque usage et non des sous adresses d'un même compte.

Les Blockchains utilisant UTXO

Ce sont principalement Bitcoin, Monero, Neo, Grin, ainsi que tous les dérivés de Bitcoin.


Le modèle Account / Balance

Ce modèle est également couramment utilisé. Il est similaire aux cartes bancaires, comptes Paypal et consort.

Exemple du modèle Account :

Ce modèle est plus simple car il est uniquement nécessaire de vérifier que le solde est supérieur ou égale au montant de la transaction que vous souhaitez effectuer.

D'un point de vue technique, votre compte est "stateful", c'est-à-dire que l'état qu'il affiche est le résultat des opérations entrantes. Cela permet d'afficher une vue consolidée instantanément, à l'inverse des Blockchains de type UTXO ou il est nécessaire de calculer le solde disponible avant chaque transaction.

A l'inverse de Monero, quand vous voulez connaitre le solde de votre wallet Ethereum il vous suffit d'indiquer votre adresse publique sur n'importe quel explorer. Il s'affichera instantanément.

Par contre, ce système ne permet pas une grande concurrence d'opérations car elles disposent toutes d'un numéro de suivi. C'est le fameux Nonce sur Ethereum. Il permet de s'assurer que les transactions s'exécutent dans un ordre précis et ne peuvent être rejouées (double spending). Ce que cela veut dire est que si vous effectuez la transaction n°10 avec un GAS (trop) faible, qui prendra plusieurs minutes à être validée, vous ne pourrez pas envoyer de transaction n°11.

Les Blockchains basées sur le mobèle Account :

Ce sont principalement Ethereum, EOS, Tron, ainsi que tous les dérivés d'Ethereum.


Le bon outil pour le bon travail

Ces deux modèles ont des avantages et inconvénients. En fonction du projet il peut être choisi l'un ou l'autre, voir l'association des deux.

Avantages Inconvénients
UTXO
  1. Parallélisation des transactions
  2. Transactions simples à suivre et transparentes
  3. Meilleur anonymat (ou pseudonymat)
  1. Absence du concept d'état (state)
  2. Difficilement utilisable avec les smartcontracts
  3. Complexe à comprendre et utiliser (pour les développeurs)
Account Model
  1. Simple à comprendre et utiliser (pour les développeurs)
  2. Plus fongible
  3. Moins gourmand en termes stockage
  1. Manque de parallélisation
  2. Risque de double dépense (double spending)

Les Blockchains qui utilisent massivement le sharding utilisent généralement les deux modèles en parallèle. La synchronisation entre shard s'effectue suivant le modèle UTXO et l'exécution de smartcontracts avec le modèle Account.


Finalement bien expliqué, ce n'est pas si compliqué :)