Bitcoin: Comment calculer les frais de transaction.

Comme je l’ai mentionné dans l’épisode 13 sur les bitcoins et la crypto-monnaie, je vais décrire dans ce billet la manière dont les mineurs sélectionnent les transactions à mettre sur le prochain bloc. J’ai dit entre autre que les frais à payer sont indépendants du montant transféré, et c’est vrai. J’ai aussi mentionné qu’une transaction de $5 coûte aussi cher qu’une transaction de $5,000, et c’est aussi vrai – si la transaction prend le même espace sur la blockchain.

Mais commençons par le commencement, et discutons un peu d’espace mémoire. Ce n’est pas très excitant, mais un concept nécessaire à comprendre pour la suite.

Bits et Octets

La mémoire, que ce soit dans un ordinateur ou sur un disque dur, est séparé en unité de longueur fixe. Il y a deux unités qui nous intéressent quand on parle de bitcoins.

  • La plus petite unité est le bit, un morceau si petit qu’il ne peut contenir que deux valeurs: 0 ou 1.
  • Un regroupement de 8 bits forme un octet, ou byte en anglais. Un octet peut contenir 256 valeurs différentes, et est suffisant pour représenter un caractère, comme une lettre dans un texte.

Nous avons également les unités de mesure suivantes qui sont importantes:

  • Un kilooctet (Ko) correspond à 1024 octets.  Pourquoi 1024, et pas 1000? Parce que les ordinateurs fonctionnent en base 2, et non en base 10 comme nous. 1024 est la puissance de 2 le plus près de 1000.
  • Un mégaoctet (Mo) contient 1024 Ko, ou 1,048,576 octets.

Sous sa forme actuelle, chaque bloc de bitcoin mesure 1 Mo, donc environ 1 millions d’octets. Bitcoin Cash, par comparaison, permet des tailles variables, avec un défaut de 8 Mo.

Comment calculer la taille d’une transaction

J’ai mentionné dans l’épisode que la taille d’une transaction est variable. Pour chaque transaction, il est possible d’indiquer plusieurs adresses entrantes, c’est-à-dire qui vont faire le paiement, et le montant qu’elles vont payer chacune. Il est également possible d’indiquer plusieurs adresses sortantes, c’est-à-dire qui vont être payés, et le montant en bitcoin que chacune recevra. Toute transaction devrait contenir au minimum une adresse entrante (l’acheteur) et deux adresses sortantes (celle du vendeur, et du mineur qui recevra les frais). Mais rien ne vous empêche de faire un achat à partir de 234 adresses entrantes et d’envoyer l’argent à 73 adresses sortantes. Rien sauf la taille de la transaction résultante.

Chaque entrant et chaque sortant augmente la taille de la transaction. Chaque adresse entrante demande 180 octets, et chaque adresse sortante demande 34 octets. Chaque transaction a également une section fixe de 10 octets.

La taille d’une transaction normale avec un vendeur, un acheteur et un mineur, est de 180×1 + 34×2 + 10 = 258 octets. Dans un bloc de 1 Mo, on pourrait donc en entrer 1,048,576 / 258 = 4065. Par contre, la méga transaction que je décrivais plus haut aurait une taille de 234×180 + 73*34 + 10 =  44,612 octets, et un bloc ne pourrait en contenir que 23.

Comment les mineurs sélectionnent les transactions à confirmer

Du point de vue des mineurs, tout est une question de maximiser le total des frais qu’ils vont empocher dans un bloc. Pour ce faire, la seule statistique importante est le ratio entre les frais payés et la taille de la transaction en octets. Les mineurs vont calculer ce ratio pour chacune des transactions et choisir celles qui ont la meilleure valeur. Par exemple, pour une transaction de 500 octets avec des frais de $50, le ratio est de $0,10 par octet, alors que pour des frais de $20 pour une transaction de 100 octets, le ratio est de $0,20 par octet. La deuxième transaction sera donc sélectionnée avant la première.

À noter que je parle ici de frais en dollar pour rendre les choses plus facile à comprendre. En fait, les frais sont payés en satoshi, qui si vous vous rappelez bien, valent un cent millionième de bitcoin. Selon le site bitcoinfees.earn.com, les frais à payer actuellement pour qu’une transaction soit acceptée rapidement est de 510 satoshi par octet.

Publicités

6 commentaires sur “Bitcoin: Comment calculer les frais de transaction.

  1. Bonjour,

    merci pour ces 2 épisodes consacrés au BitCoin, qui m’ont permis d’en savoir un peu plus sur le fonctionnement des cryptomonnaies.
    Une petite chose que je n’ai pas bien compris cependant: puisque chaque transaction est inscrite dans la blockchain, ne sait-on pas tracer les transferts de BitCoin ? J’étais étonné d’apprendre que l’on pouvait simplement perdre des BitCoins (par exemple en perdant un clé USB sur lequel ils étaient stockés). Je me dis que si tout est enregistré dans la blockchain, alors il serait possible de prouver qu’on est bien le propriétaire d’un certain nombre de BitCoin. Mais j’ai peut être mal compris le fonctionnement.

    En tout cas, merci pour vos différents épisodes qui sont très intéressants et bien exposés, j’ai hâte d’écouter le prochain !

    Yoan

    J'aime

    1. Vous avez partiellement raison, le problème est, prouvé à qui? Il n’y a pas d’autorité pour renverser la transaction. Seul le possesseur de l’adresse destination peut retourner votre argent, et donc comme personne ne possède cette adresse, personne ne peut le faire. La solution serait évidemment de vérifier que l’adresse à laquelle on envoit la monnaie existe, mais encore là, ça demanderait d’avoir un registre central des adresses, comme pour les adresses postales. Mais ça va contre le principe d’anonymité. De plus, le nombre d’adresses explose littéralement, certains vont même jusqu’à créer une adresse séparée pour chacune de leurs transactions, pour éviter de se faire voler.

      J'aime

      1. Merci pour votre réponse rapide.

        Je comprends que dans le cas d’une transaction une fois que les Bitcoins sont envoyés, il n’a pas de moyen de porter réclamation pour les récupérer.

        Je me posais plutôt la question du côté d’une personne qui aurait reçu des Bitcoins et qui perdrait son « portefeuille » peu de temps après. Puisqu’il y a une trace de la transaction entrante et pas de transactions sortantes, alors il est possible de savoir que cette personne possède au moins la somme correspondant à la dernière transaction, non ? Et on pourrait étendre le raisonnement à toutes les transactions antérieures pour connaitre la somme finale de Bitcoins dans le portefeuille.
        Bon j’imagine que ça demanderait un travail d’analyse de toute la base de données, et il me semble me souvenir que vous disiez au premier épisode qu’elle pesait environ 170Go…

        Mon idée générale était de dire que si on connait l’historique de toutes les transactions et toutes les créations de Bitcoins car elle sont inscrites dans la blockchain, alors il serait possible de reconstituer le portefeuille associé à chaque adresse, et donc que les portefeuilles ne pourraient pas être simplement perdus. C’est peut être possible en théorie, mais peut être très difficile en pratique vu la taille de la base de données (qui en plus, évolue tout le temps).

        J'aime

  2. La raison pour laquelle ce que vous proposez ne peut fonctionner est que bien que par soucis de simplicité, on parle de portefeuille avec une balance, dans les fait, un portefeuille n’a pas d’argent dedans, il contient uniquement une liste des transactions entrantes et des transactions sortantes. Pour savoir si une personne a suffisamment de fonds dans son portefeuille, on doit toujours tout recalculer en additionnant les intrants et en soustrayant les sortantes.

    Pour ce qui est des portefeuilles perdus, cela ne veut pas dire qu’ils se sont volatilisés. Ils sont là, on sait qu’ils existent, mais comme on n’a plus le mot de passe pour les accéder, ils sont complètement inutilisables. Donc on dit qu’il est « perdu. » Oui, les transactions sont toujours sur la blockchain, mais ça ne change rien. Pensez-y, les bitcoins qu’on vous rembourseraient, d’où viennent-ils? Tous les bitcoins existants appartiennent à des personnes ou des compagnies privées; laquelle d’entre elles va se sacrifier et vous donner ses bitcoins alors qu’elle n’a rien à voir avec votre problème? Un gouvernement contrôle l’émission de sa monnaie, et peux donc en imprimer plus pour rembourser ces pertes. L’argent dans votre compte de banque est assurée, jusqu’à $100,000 au Canada, et ce sera donc la compagnie d’assurance qui va payer. Rien de cela n’existe avec la crypto-monnaie. Personne ne vous aidera. C’est le royaume du capitalisme sauvage.

    J'aime

    1. Merci beaucoup pour votre réponse, je comprends mieux les limites du système maintenant.
      Encore merci pour ces 2 podcasts intéressants sur les cryptomonnaies, et pour tous les autres qui sont tout aussi intéressants.

      Yoan

      J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s