Je vais vous raconter un piège dans lequel je suis tombé : au début, je n’avais pas du tout compris ça.
Pour comptabiliser « qui possède combien de pièces », Bitcoin et Ethereum utilisent deux méthodes complètement différentes : Bitcoin enregistre des « billets non dépensés », tandis qu’Ethereum enregistre le solde de chaque compte. Comprendre cette différence permet d’expliquer de nombreux phénomènes qui peuvent sembler étranges.
$BTC utilise le modèle UTXO : le solde affiché par le portefeuille correspond en réalité à la somme de plusieurs sorties non dépensées. Actuellement : 70,800.01 (24 h : -4.08 %).
— UTXO : les billets non dépensés —
Bitcoin utilise le modèle UTXO (sorties de transaction non dépensées). Imaginez chaque UTXO comme un billet de valeur variable : chaque transaction dépense plusieurs anciens billets et crée plusieurs nouveaux billets pour les destinataires.
Le solde affiché dans votre portefeuille est calculé en additionnant tous les UTXO qui vous appartiennent. Sur la blockchain, il n’existe pas de chiffre appelé « solde ».
— Monnaie rendue et frais —
Un UTXO ne peut être dépensé qu’en totalité. Par exemple, si vous avez un « billet » d’une unité et que vous voulez en payer 0,3, la transaction crée deux sorties : 0,3 unité pour l’autre personne, et le reste, déduction faite des frais, vous est rendu à votre propre adresse. De nombreux portefeuilles envoient la monnaie rendue à une nouvelle adresse, si bien que l’explorateur de blocs affiche que « l’argent est revenu à vous ».
Les frais d’une transaction Bitcoin ne sont pas indiqués séparément : ils correspondent à la somme de toutes les entrées moins la somme de toutes les sorties. Cette différence revient au mineur qui inclut la transaction dans un bloc.
— Le modèle par comptes : le solde est enregistré directement —
Ethereum utilise un modèle par comptes : le solde de chaque compte est enregistré directement sur la blockchain. Un transfert consiste à débiter un compte et à créditer un autre, un peu comme avec un compte bancaire. Il existe deux types de comptes sur Ethereum : les comptes externes contrôlés par une clé privée et les comptes de contrat contrôlés par du code.
Pour éviter qu’une même transaction soit exécutée deux fois, chaque compte externe possède un nonce, qui augmente de 1 à chaque transaction envoyée. Les transactions doivent donc être exécutées dans l’ordre des nonces. Si une transaction est bloquée, les suivantes font donc la queue derrière elle.
— Chacun a ses avantages et ses inconvénients —
Avec le modèle UTXO, les transactions indépendantes peuvent être vérifiées en parallèle. Utiliser une nouvelle adresse pour recevoir la monnaie rendue favorise aussi la confidentialité, mais la rédaction de contrats complexes est moins pratique. Avec le modèle par comptes, les soldes sont plus intuitifs et la rédaction de contrats plus facile, mais les transactions d’un même compte doivent faire la queue. Cardano a étendu le modèle UTXO (eUTXO), ce qui permet d’associer une logique de script aux sorties.
— En résumé —
La prochaine fois que vous verrez dans un explorateur de blocs que des bitcoins sont « revenus à vous », ou qu’une transaction Ethereum est bloquée et que toutes les suivantes font la queue, vous saurez qu’il s’agit de particularités de ces deux méthodes de comptabilisation : pas de panique. Chaque avantage s’accompagne d’un risque correspondant. Commencez par réfléchir à la perte maximale que vous pourriez subir.
Vous connaissiez déjà ce point ?