Partager cet article

Construire un meilleur marché des frais Bitcoin

Bitcoin a peut-être désormais un marché de frais, mais cette réalité ne signifie T que le réseau est optimisé pour cet environnement, soutient le développeur Jameson Lopp.

bitcoin-fee-market-header

Au cours de l'année écoulée, nous avons observé une évolution rapide du marché des frais de transaction en Bitcoin . L'augmentation constante du volume de transactions s'accompagne d'une demande accrue d'espace de bloc, dont l'offre reste limitée à environ 1 mégaoctet (Mo) toutes les 10 minutes.

Puisque nous avonsdébattu la question de l'augmentation de l'offre d'espace de bloc ad nauseam, cet article se concentrera sur l'histoire et l'état actuel des frais de transaction Bitcoin .

La Suite Ci-Dessous
Ne manquez pas une autre histoire.Abonnez vous à la newsletter Crypto Long & Short aujourd. Voir Toutes les Newsletters

Le fait est que les pressions résultant d’une forte concurrence pour l’espace de bloc ont dégradé l’expérience utilisateur et ont donc incité les portefeuilles Bitcoin à procéder à des ajustements afin de KEEP leurs utilisateurs satisfaits en garantissant une confirmation rapide des transactions.

Nous sommes cependant loin d’un marché des frais optimal.

L'histoire des frais de transaction

Pendant les premières années d’existence du Bitcoin, les frais de transaction étaient facultatifs : ils étaient considérés comme un don aux mineurs.

Paramètres des frais de CORE de Bitcoin
Paramètres des frais de CORE de Bitcoin

Les portefeuilles payaient les mêmes frais sur chaque transaction, en appliquant par défaut les frais que le développeur du portefeuille jugeait appropriés.

Bitcoin CORE

Les frais par défaut de ont changé plusieurs fois au fil des ans, à mesure que le taux de change du Bitcoin augmentait, passant de 0,01 BTC à 0,0005 BTC , puis à 0,0001 BTC. Des règles s'appliquaient également à ce sujet.transactions prioritaires" qui permettait aux utilisateurs d'envoyer des transactions sans frais si les entrées étaient anciennes et de valeur suffisamment élevée, bien que les mineurs les aient pour la plupart éliminées à ce stade.

Nous avons appris au fil des années que les frais de transaction statiques codés en dur sont terribles pour plusieurs raisons :

  • Ce n'est pas le montant absolu des frais qui importe aux mineurs, mais plutôt le taux de commission par octet de données de transaction. De leur point de vue, les mineurs ne disposent que d'1 Mo d'espace, dans lequel ils souhaitent insérer un maximum de transactions afin de percevoir davantage de frais. Ainsi, une transaction de 200 octets avec des frais de 0,0001 BTC est préférable à une transaction de 1 000 octets avec des frais de 0,0001 BTC, car ils peuvent en insérer cinq et percevoir cinq fois plus de frais.
  • Du point de vue de l’utilisateur, si vous définissez toujours des frais statiques, vous finirez probablement par créer une transaction de grande taille (en raison de la dépense de nombreuses entrées de faible valeur) avec un taux de frais très bas qui pourrait ne jamais être confirmé.
  • Les portefeuilles à frais fixes T s'adapter aux fluctuations rapides des conditions du marché, ce qui pousse les utilisateurs à diffuser des transactions soit trop rémunératrices, soit sous-rémunératrices. Dans le premier cas, les transactions ne seront T confirmées beaucoup plus rapidement, tandis que dans le second, les délais de confirmation seront longs, car les mineurs les ignorent au profit de transactions plus rentables à confirmer.

La sortie deBitcoin 0.3.15En novembre 2010, un changement a été apporté pour calculer les frais en fonction de la taille des données de la transaction. Cependant, tous les logiciels de portefeuille n'ont pas suivi cette tendance et de nombreux utilisateurs ont continué à fixer aveuglément les mêmes frais fixes pour chaque transaction. Ce n'était généralement pas un problème jusqu'à ce que la taille maximale des blocs soit atteinte, car les mineurs confirmaient pratiquement toutes les transactions valides qui leur étaient transmises.

Alors que les blocs ont commencé à se remplir en 2015, il est devenu évident que la meilleure pratique consiste à utiliser un algorithme de frais dynamique, car il peut répondre aux conditions changeantes du réseau.

Bitcoin CORE a commencé à calculer des estimations de frais dynamiques à partir de la version 0.10en février 2015, et Alex Morcos les a constamment améliorés depuis. L'algorithme d'estimation des frais de Core est assez complexe ; vous pouvezvoir son code iciet leexplication en anglais ici.

Un marché des honoraires émerge

Antoine Le Calvez, développeur de p2sh.info, fournit une analyse historique des frais dynamiques et statiques.

Voici les deux dernières années :

capture d'écran - 05/05/2016 à 10h41

Nous pouvons constater des sauts significatifs dans l'utilisation des frais dynamiques lors des tests de résistance et des attaques du réseaul'automne dernier.

Cependant, je soupçonne que cela n'était pas dû au fait que les utilisateurs normaux passaient aux portefeuilles à frais dynamiques, mais plutôt au fait queles attaquants eux-mêmes paient des fraisqu'ils ont intentionnellement fixés à un niveau supérieur aux frais statiques utilisés par la plupart des portefeuilles à l'époque.

Certains utilisateurs parmi les plus avertis ont ajusté leurs frais fixes pendant les attaques, mais ils ne représentaient probablement qu'une petite minorité du total des transactions. On observe également une hausse début mars 2016, probablement en partie due au nouveau portefeuille blockchain.déploiement de frais dynamiquesà propos d'unmois plus tôt.

Rusty Russell a jouéune excellente analysedu marché émergent des frais en décembre 2015, qui a montré que davantage de transactions utilisent des frais calculés de manière dynamique et que la valeur moyenne d'une transaction augmente à mesure que les petits paiements sont exclus de la blockchain.

tx-par-valeur
tx-par-valeur

AJ Towns a donné suite au message de Rusty avecune analyse plus approfondieIl a identifié huit phases distinctes du marché des frais au cours de l’histoire du bitcoin :

Towns a poursuivi son enquête enun deuxième postet est parvenu à plusieurs conclusions sur les effets que l’émergence du marché des frais a eu sur les utilisateurs.

Il s'agissait de :

  • Un nombre important de portefeuilles calculent les frais de manière dynamique, avec une granularité par octet.
  • De nombreux portefeuilles ne calculent toujours T les frais de manière dynamique, ni même au niveau de l'octet.
  • Les frais déterminés par le marché ne pourront qu’augmenter davantage avec l’adoption accrue de portefeuilles prenant en charge les estimations de frais dynamiques.
  • Payer un prix considérablement supérieur au taux du marché ne permettra pas de confirmer votre transaction plus rapidement.
  • Il y a eu deux Événements de frais qui ont eu un impact sur les portefeuilles avec des frais statiques, et un troisième événement de frais arrive bientôt.
  • Les portefeuilles qui calculent les frais de manière dynamique paient en moyenne des frais nettement inférieurs à ceux qui ne le font T.

J'ai suivi les estimations des frais de Bitcoin Core avec Statoshi ; ici vous pouvez voir qu'ils ont triplé au cours des six derniers mois alors que la concurrence pour l'espace de bloc continue d'augmenter.

capture d'écran - 05/05/2016 à 10h26 - 07h00

Calvez fournit également un tableau de bord avec toutes les API d'estimation des frais disponibles publiquement et leurs données d'estimation historiques :

capture d'écran - 05/05/2016 à 10h43 - 11h00

Il est intéressant de noter que les estimations de frais de 21, BitGo et Blocktrail semblent être les plus réactives aux conditions changeantes du marché, tandis que BitPay, Blockchain et BlockCypher ont des estimations moins volatiles.

Il serait toutefois négligent de ma part de recommander à tout le monde de passer à des frais de transaction calculés dynamiquement sans avoir d’abord pris conscience des dangers encourus.

Comme le dit le dicton, toute solution engendre de nouveaux problèmes. Les frais de transaction dynamiques ne font pas exception.

Difficultés dynamiques

Les estimations de frais dynamiques ne seront jamais parfaites car elles constituent une tentative de prédire l’avenir (NEAR).

Comme physicien danoisNiels Bohr a dit un jour avec ironie : « Prédire est très difficile, surtout pour l’avenir. » Si un algorithme d’estimation des frais ne parvient pas à prédire correctement l’état futur du marché des frais, les utilisateurs se retrouvent bloqués dans une situation difficile.piège à frais" comme l'a noté le Dr Washington Sanchez d'OpenBazaar.

Cela peut se produire si vous diffusez une transaction avec des frais parfaitement raisonnables compte tenu des conditions actuelles du marché, mais que, immédiatement après, de nombreuses autres transactions à frais plus élevés sont diffusées par d'autres utilisateurs, ce qui relégue votre transaction au second plan des mineurs. Le problème est que vous ne pouvez T, sans Remplacer par des frais(RBF), mettez à jour votre « offre » afin de compenser les nouvelles conditions du marché.

Les bugs dans les algorithmes d'estimation des frais peuvent également perturber le marché des frais. Prenons l'exemple d'une erreur récente d'un utilisateur qui a conduit à la création d'une transaction avec un montant exorbitant.Frais de 300 BTC. C'était déjà assez grave pour l'utilisateur malheureux qui avait probablement maladroitement inséré les montants des « frais » et de la « valeur » dans un logiciel mal codé, mais cela avait aussi des répercussions :

[intégrer]https://twitter.com/khannib/status/725090752531959808[/intégrer]

Il s'agit d'une estimation éclairée, mais il semble que l'objectif de 1 à 2 blocs de BlockCypher utilise un algorithme d'estimation des frais basé sur une moyenne mobile pondérée des frais des deux derniers jours de blocs. Par conséquent, lors du minage de la transaction de 300 BTC , la moyenne des frais récents, et donc leur estimation, a grimpé de 800 %.

Mais je ne vise pas BlockCypher, car nous avons constaté que de nombreux portefeuilles rencontrent des problèmes de frais de transaction. Même Bitcoin CORE n'y échappe pas, car j'ai récemment observé une hausse inattendue des estimations de frais pour Bitcoin CORE 0.12.0 :

capture d'écran - 05/05/2016 à 10h46

J'ai remarqué que l'estimation des frais « objectif de deux blocs » de Statoshi.info est passée de 44 à 112 satoshis par octet le 27 février, sans raison apparente. Mes autres nœuds Bitcoin n'ont pas signalé la même hausse.

Cela pourrait peut-être s’expliquer par des différences dans les transactions mempool puisque l’algorithme d’estimation des frais de Core utilise uniquement les frais des transactions qui ont été initialement reçues comme non confirmées.

C'est inquiétant et cela démontre un inconvénient de l'extrapolation de l'avenir en fonction de la vision de votre nœud sur le réseau, qui n'est pas garantie d'être la même que celle de tout le monde.

Effondrement macroéconomique

Bien que les développeurs de Bitcoin soient confrontés à de nombreux défis pour chaque transaction, nous devons également être conscients des effets sur le marché des frais dans son ensemble.

Je suis préoccupé par quelques scénarios potentiels qui pourraient faire augmenter les taux de frais plus rapidement que nécessaire :

  • Des algorithmes de frais dynamiques mal codés pourraient créer une boucle de rétroaction qui ferait grimper le taux de frais sans limite, les transactions continuant d'inonder le réseau sans tenir compte de l'arriéré du pool de mémoire. Ce problème ne pose pas de problème majeur si la plupart des transactions sont initiées par des humains qui voient ensuite les frais affichés et décident s'ils sont trop élevés à leur goût. En revanche, si de nombreuses transactions sont créées automatiquement, sans intervention Human , et que les algorithmes qui les créent ne vérifient T le montant maximal des frais payés, le marché pourrait s'emballer jusqu'à ce que les ingénieurs qui ont conçu ces algorithmes s'en rendent compte et les modifient.
  • Les utilisateurs frustrés (ou les développeurs paresseux) qui continuent de s'appuyer sur des frais codés en dur risquent de KEEP à mettre à jour manuellement les paramètres de leur portefeuille jusqu'à ce que leurs transactions soient confirmées, ce qui risque de surpayer considérablement, mais forcera finalement les autres utilisateurs de frais statiques à faire de même pour rester compétitifs. Les utilisateurs de frais dynamiques verront leur taux de croissance augmenter. J'ai déjà observé ce phénomène, mais pas encore au point d'affecter significativement les frais dynamiques.

[intégrer]https://twitter.com/lopp/status/713095965155192832[/embed]

Un développement récent qui n’a T reçu beaucoup d’attention malgré le fait qu’il ait le potentiel d’affecter le marché des frais est le développement des Marchés secondaires des frais de mineurs.

Cela peut prendre la forme de programmes spéciaux d’incitation pour les clients, tels queService BlockPriority de BTCC Cela peut aussi prendre la forme d'achats privés d'espaces de blocs prépayés. Cela pose problème aux développeurs qui écrivent des algorithmes d'estimation des frais, car il existe désormais des Marchés de frais opaques, invisibles au reste du monde.

Pour citer le communiqué de presse du BTCC :

« BlockPriority donne la priorité à toutes les transactions des clients de BTCC, y compris ceux qui ne paient aucun frais de transaction. »

Cela ne devrait pas poser de problème à l'algorithme d'estimation des frais de Bitcoin Core, car il exige que 95 % des transactions du pool de mémoire avec un taux de frais donné soient confirmées en X blocs après avoir été vues. Cependant, cela pourrait affecter les algorithmes plus naïfs. La leçon à retenir pour les développeurs est que le simple fait de voir des transactions confirmées avec un faible taux de frais de X ne signifie pas que votre service peut diffuser des transactions à ce taux en toute sécurité.

Il peut être judicieux sur le plan économique pour les pools miniers de vendre des contrats d'espace de bloc prépayés, car cela leur offre une nouvelle source de revenus prévisible.

Cependant, je tiens à avertir les pools : vous ne pourrez T dissimuler cette activité si elle représente une part importante de vos transactions minées. De nombreux ingénieurs de portefeuille, comme moi, surveillent ce type de comportement, et si cela devient problématique, nous le divulguerons publiquement. Je soupçonne que les pools de minage publics impliqués dans ce comportement ne s'en sortiront pas aussi bien si les hacheurs individuels découvrent que le pool a miné des transactions à faibles frais et ne partage pas les bénéfices des contrats d'espace de bloc privé.

Cela pourrait amener les hasheurs à se déplacer vers un pool qu'ils pensent plus rentable.

Témoin séparéCela aura probablement également un impact sur le marché des frais. Une réduction de 75 % des frais sera proposée afin de rééquilibrer les coûts de création et de consommation des transactions non dépensées.

Cela devrait encourager les utilisateurs à privilégier l'utilisation de transactions qui minimisent l'impact sur l'ensemble UTXO afin de minimiser les frais et d'encourager les développeurs à concevoir des contrats intelligents et de nouvelles fonctionnalités d'une manière qui minimisera également l'impact sur l'ensemble UTXO.

David Harding a rédigé un article utilerépartition des économies de donnéesfourni par SegWit.

[intégrer]https://twitter.com/lopp/status/705122188106604546[/embed]

Je pense que c'est la bonne voie à suivre, même si je ne suis pas certain que 75 % soit le chiffre optimal. Il me semble que la réduction la plus équitable serait dynamique et basée sur le rapport entre la taille des données de sortie et la taille des données correspondantes de cette même sortie lorsqu'elle est utilisée comme entrée.

Même si cela serait certainement beaucoup plus difficile à mettre en œuvre, si tant est que ce soit possible.

Aller de l'avant

De nombreux portefeuilles et services Bitcoin n'ont toujours pas mis en place de frais dynamiques. Vous savez qui vous êtes, et votre inaction risque d'entraîner une mauvaise expérience pour certains de vos utilisateurs. Si vous n'avez T mis en place de frais dynamiques, chaque transaction que vous diffusez entre dans ONEune des deux catégories suivantes :

  • Vous payez trop cher le prix du marché et n'obtenez pas une confirmation beaucoup plus rapidement.
  • Vous payez moins cher et les transactions restent bloquées, ce qui entraîne une mauvaise expérience utilisateur.

Il est très peu probable qu'une transaction diffusée avec des frais codés en dur atteigne le point idéal et paie le taux optimal pour correspondre aux conditions actuelles du marché.

Les développeurs de portefeuilles devraient ajouter des mécanismes de sécurité tels que des seuils de vérification de cohérence au niveau micro et des disjoncteurs au niveau macro pour empêcher les utilisateurs dese tirer une balle dans la tête dans le pied.

Les portefeuilles devraient définir un seuil minimum supérieur aux frais de relais minimum. En observant les transactions à frais minimum qui aboutissent à des blocs, nous constatons clairement qu'aujourd'hui, si vous payez moins de cinq satoshis par octet, vous allez passer un mauvais quart d'heure.

nouvelle intrigue

Les développeurs de portefeuilles doivent réfléchir de manière contradictoire à leurs algorithmes d'estimation des frais et les écrire de manière à ce qu'ils soient robustes face aux cas extrêmes qui pourraient survenir en raison d'erreurs dans d'autres logiciels de portefeuille ou d'attaques malveillantes par des entités essayant de manipuler le marché des frais. Ils doivent également surveiller leurs données d'estimation des frais et définir des alertes pour les avertir si les estimations deviennent plus volatiles que prévu.

Mais nous devons reconnaître qu’il n’existe pas d’algorithme d’estimation des frais « universel » – cela dépend vraiment du cas d’utilisation dans lequel s’inscrivent vos transactions Bitcoin .

L'algorithme de Bitcoin Core se veut aussi générique et conservateur que possible afin d'être extrêmement fiable. Cependant, dans certains cas d'utilisation, il peut entraîner des surpaiements. Chaque portefeuille et service devra déterminer le compromis qu'il est prêt à faire pour équilibrer le risque de retard de confirmation et la réduction des frais.

J'encourage donc tous les portefeuilles Bitcoin à rendre leurs estimations de frais accessibles via des API publiques. Je crains que les algorithmes d'estimation des frais eux-mêmes ne deviennent un sujet de concurrence et restent souvent des sources fermées. Cependant, si les estimations sont publiques, nous pourrons plus facilement détecter les activités anormales. Peut-être même que quelqu'un créera un « algorithme ».Moyenne du Bitcoin" agrégateur d'estimations de frais !

Il faut reconnaître que le « marché des honoraires » n’est T exactement un marché au sens traditionnel du terme.

Les utilisateurs peuvent placer une « offre » en diffusant une transaction, mais les mineurs ne publient T leurs « demandes » – les portefeuilles doivent deviner en fonction des transactions que les mineurs ont récemment confirmées et des transactions qui attendent actuellement d'être confirmées.

Konrad S. Grafa exprimé ses penséessur le « marché des honoraires » récemment :

Des frais sont payés ; des produits et des services sont achetés. Ce terme masque donc déjà le véritable produit. Les utilisateurs soumettent des transactions payantes sous forme d'enchères ouvertes dans l'espoir d'une confirmation. Je décris cela comme un marché de services d'inclusion de transactions. Les utilisateurs soumissionnent pour que les mineurs incluent des transactions dans des blocs candidats. L'inclusion dans davantage de blocs candidats, notamment par rapport au taux de hachage total de ces blocs, augmente les chances d'une confirmation plus rapide. Les utilisateurs préfèrent une confirmation rapide à une confirmation lente, toutes choses égales par ailleurs ; la rareté temporelle est donc essentielle. Il s'agit d'un marché de la priorité à la confirmation, un marché temporel.

Si les pools de minage publiaient des API publiques avec leurs politiques de minage et leurs tarifs en vigueur, les services de portefeuille pourraient prendre des décisions plus éclairées lors du calcul des frais dynamiques, plutôt que de forcer les développeurs à se fier à des suppositions. Cela pourrait également contribuer à atténuer les problèmes causés par les mineurs qui créent des Marchés de frais secondaires opaques via des contrats d'espace de blocs privés.

Les utilisateurs de Bitcoin ne devraient pas avoir besoin de KEEP l’état actuel de la contention des blocs.

Les portefeuilles devraient gérer la complexité du marché des frais en toute discrétion, en offrant à l'utilisateur plusieurs options simples pour l'envoi d'une transaction. Une solution possible serait que l'utilisateur autorise des frais maximums en fonction de l'urgence de la transaction et que le portefeuille utilise RBF pour augmenter les frais payés après chaque bloc passé sans confirmation.

Les frais de transaction doivent être affichés dans l'unité de compte de l'utilisateur, par exemple en dollars. Il serait également judicieux de les afficher en pourcentage de la valeur de la transaction s'ils dépassent un certain seuil, par exemple 1 %. Cela permettra aux utilisateurs de déterminer plus facilement si le marché actuel des frais est trop controversé et s'ils préfèrent reporter la transaction jusqu'à ce qu'ils puissent la réaliser en toute sécurité à un taux plus bas.

Lorsqu'il est question de frais de transaction, les utilisateurs de Bitcoin devraient cesser de dire qu'ils ont payé « X centimes » ou « Y bits » de frais de transaction, car ce type d'affirmation est absurde sans connaître le montant de la transaction. Nous devrions normaliser l'utilisation des taux de frais dans les discussions, de préférence exprimés en satoshis par octet. Il est plus simple pour un humain d'écrire et de suivre « 20 satoshis par octet » que « 20 000 satoshis par kilo-octet ».

L’évolution du marché des frais de transaction du Bitcoin a été jusqu’à présent un chemin semé d’embûches.

Au début, les tarifs étaient fixés manuellement par les développeurs, puis manuellement par les utilisateurs, et nous nous trouvons désormais à un point plus chaotique et potentiellement dangereux où les développeurs jouent un rôle plus actif dans le pilotage de l'économie de ce marché émergent.

ATLAS de Kristov a noté avec éloquence les risques Nous adoptons une planification centralisée des changements économiques du Bitcoin sans les étudier en profondeur ; les développeurs doivent en KEEP compte lors de l'élaboration des algorithmes d'estimation des frais. Nous devons veiller à ce que le marché des frais reste piloté par des humains avec l'aide de machines, et non l'inverse. Les développeurs de portefeuilles doivent être vigilants lors de la conception de leur logique de frais afin de garantir une expérience utilisateur fluide sans priver les utilisateurs de leur liberté de choix, indispensable au bon fonctionnement du marché des frais.

Image via Dan Nott pour CoinDesk

Jameson Lopp

Jameson Lopp est le directeur technique et cofondateur de Casa, un service d'auto-conservation. Cypherpunk dont l'objectif est de développer une Technologies au service des individus, il développe des portefeuilles Bitcoin multisignatures depuis 2015. Avant de fonder Casa, il était ingénieur principal en infrastructure chez BitGo. Il est le fondateur du Bitcoin Special Interest Group de Mensa, du Triangle Blockchain and Business Meetup et de plusieurs projets Bitcoin open source. Durant cette période, il s'est efforcé de transmettre ses connaissances acquises à la dure, en développant des logiciels robustes, capables de résister aussi bien aux adversaires qu'aux utilisateurs finaux peu avertis.

Jameson Lopp