Exercice de Satoshi pour le lecteur

Le livre blanc Bitcoin est clair sur la fonctionnalité principale de Bitcoin : il est sans autorisation. N’importe qui dans le monde peut payer n’importe qui en rejoignant le réseau peer-to-peer et en diffusant une transaction. Le consensus sur la preuve de travail permet même à n’importe qui de devenir un producteur de blocs, et signifie que le seul moyen d’annuler un paiement est de dominer tout le monde grâce au hashpower.

Mais la preuve de travail définit uniquement comment choisir un gagnant parmi les chaînes concurrentes ; cela n’aide pas un nœud à le découvrir. Une attaque à 51 % – ou à 100 % – est beaucoup plus facile si un attaquant peut empêcher les nœuds d’entendre parler des chaînes concurrentes. Le travail de découverte appartient au module peer-to-peer, qui jongle avec de nombreuses tâches contradictoires : trouver des pairs honnêtes dans un réseau où les nœuds rejoignent et quittent constamment, mais sans authentification ni réputation. Soyez toujours à l’affût des blocs et des transactions, mais ne soyez pas surpris si la plupart des données sont des déchets. Soyez suffisamment robuste pour survivre à des conditions extrêmes, mais suffisamment léger pour fonctionner sur un Raspberry Pi.

Les détails de mise en œuvre d’un réseau peer-to-peer sans autorisation ont été laissés de côté dans le livre blanc, mais constituent aujourd’hui l’essentiel de la complexité du logiciel de nœud Bitcoin.

Les filtres sont pour le spam

Le livre blanc reconnaît le relais de transactions publiques comme la pierre angulaire de la résistance de Bitcoin à la censure, mais ne dit que quelques mots sur la façon dont il devrait fonctionner : « Les nouvelles transactions sont diffusées à tous les nœuds. Chaque nœud collecte les nouvelles transactions dans un bloc. Chaque nœud travaille à trouver une preuve de travail difficile pour son bloc. »1

Beaucoup trouvent amusant que Satoshi ait suggéré que chaque nœud serait exploité. En raison de la pression centralisatrice de la variabilité minière, la grande majorité des nœuds du réseau actuel ne s’efforcent pas de trouver une preuve de travail. Il s’agit peut-être là d’un résultat acceptable, voire réussi, des incitations économiques ; nous avons échangé une partie de la décentralisation contre une puissance de hachage accrue et donc une sécurité. Cependant, la résistance à la censure de Bitcoin s’effondrera si nous abandonnons également le relais de transactions décentralisé.

Notre désir de disposer d’un large pool de nœuds de relais de transactions doit composer avec le caractère pratique des ordinateurs quotidiens s’exposant à un réseau sans autorisation et traitant des données provenant de pairs anonymes. Ce modèle de menace est unique et nécessite une programmation hautement défensive.

Dans le téléchargement de blocs, la preuve de travail d’un bloc sert élégamment à la fois de prévention du déni de service (DoS) et de moyen sans ambiguïté d’évaluer l’utilité des données. En revanche, les données de transaction non confirmées sont pratiquement gratuites à créer et pourraient simplement être du spam. Par exemple, nous ne pouvons pas savoir si la transaction remplit ses conditions de dépenses tant que nous n’avons pas chargé l’UTXO, ce qui peut nécessiter une récupération à partir du disque. Cela ne coûte absolument rien aux attaquants de déclencher cette activité à latence relativement élevée : ils peuvent élaborer des transactions volumineuses à l’aide d’entrées qui ne leur appartiennent pas ou n’existent pas du tout.

Les étapes de validation telles que la vérification de la signature et la gestion des dépendances du pool de mémoire peuvent être coûteuses en termes de calcul. Il est connu que les transactions avec un grand nombre de signatures héritées (pré-segwit) peuvent prendre quelques minutes pour être validées sur certains matériels.2de sorte que la plupart des nœuds filtrent les transactions volumineuses. L’utilisation des ressources n’est pas seulement locale au nœud : les transactions acceptées sont généralement transmises à d’autres pairs, en utilisant une bande passante proportionnelle au nombre de nœuds sur le réseau.

Les nœuds se protègent en limitant la mémoire utilisée pour les transactions non confirmées et les files d’attente de validation, en limitant le traitement des transactions par homologue et en appliquant des règles de politique en plus du consensus. Pourtant, ces limites peuvent également créer des vecteurs de censure lorsqu’elles ne sont pas conçues avec soin. La logique simple consistant à ne pas télécharger une transaction qui a déjà été rejetée auparavant, à limiter la taille de la file d’attente des transactions pour un seul homologue ou à abandonner les requêtes après des tentatives de téléchargement infructueuses peut conduire les nœuds à se rendre aveugles à une transaction. Ces bugs deviennent des vecteurs de censure accidentels lorsqu’ils sont exploités par le bon attaquant.

Dans cette optique, s’il est tout à fait logique de ne pas conserver les transactions non confirmées qui sont des dépenses doubles les unes des autres (une seule version peut être valide), le rejet d’une double dépense signifie qu’une diffusion antérieure empêche l’extraction d’une suivante. Une double dépense peut être une tentative intentionnelle de falsifier un paiement ou, lorsqu’un UTXO appartient à plusieurs parties, une attaque d’épinglage qui exploite la politique de mempool pour retarder ou empêcher l’extraction des transactions de règlement de deuxième couche. Comment les nœuds doivent-ils choisir ?

Cette question nous amène au deuxième élément du relais transactionnel : la compatibilité des incitations3. Bien que les frais ne soient pas pertinents pour le consensus au-delà de la limitation de ce qu’un mineur peut réclamer comme récompense globale, ils jouent un rôle énorme dans la politique des nœuds en tant que mesure d’utilité. En supposant que les mineurs soient motivés par des incitations économiques, les nœuds peuvent déterminer quelles transactions sont les plus intéressantes à exploiter et écarter les moins attrayantes. Lorsque les transactions dépensent le même UTXO, le nœud peut conserver le plus rentable. Bien que les nœuds ne perçoivent pas de frais, ils peuvent considérer les transactions sans frais comme du spam : elles sont susceptibles d’utiliser les ressources du réseau mais ne seront jamais exploitées, et pourtant leur création ne coûte pratiquement rien.

Ces deux objectifs de conception – la résistance au DoS et la compatibilité des incitations – sont en tension constante. Bien qu’il soit intéressant de remplacer une transaction par une version à tarif plus élevé, autoriser des remplacements répétés avec de minuscules augmentations de frais pourrait gaspiller la bande passante du réseau. La prise en compte des dépendances entre les transactions non confirmées peut créer des blocs plus rentables (et activer CPFP), mais peut s’avérer coûteuse pour les topologies complexes.

Historiquement, les nœuds s’appuyaient sur des heuristiques et des limites de dépendance, ce qui provoquait des frictions entre les utilisateurs et ouvrait de nouveaux vecteurs d’épinglage. Les pools de mémoire qui suivent les clusters peuvent évaluer la compatibilité des incitations avec plus de précision, mais doivent néanmoins limiter les dépendances des pools de mémoire. Ces types de restrictions créent des vecteurs d’épinglage pour les transactions impliquant plusieurs parties qui ne se font pas confiance : un attaquant peut empêcher son co-transacteur d’utiliser CPFP en monopolisant la limite.

Il est facile de banaliser ces problèmes : les attaques par épinglage constituent un type de censure de niche qui ne s’applique qu’aux transactions partagées et n’entraîne généralement que des retards temporaires dans les transactions. Cela vaut-il la peine d’aider les nœuds non miniers à réduire quelques satoshis supplémentaires de frais ?

Un accord avec le méchant

Les transactions partagées constituent l’épine dorsale des solutions de confidentialité UTXO et des protocoles de deuxième couche. Une grande partie du développement de Bitcoin se concentre sur la création d’applications évolutives, privées et riches en fonctionnalités dans une deuxième couche qui revient à s’installer en chaîne. Une tendance courante consiste à retarder temporairement les retraits ou le règlement, permettant aux parties de réagir à un mauvais comportement dans un délai donné. Mais de nombreuses conceptions – y compris celles qui sont utilisées pour motiver des changements consensuels – passent sous silence l’augmentation des frais dans ces scénarios.

Une fenêtre de temps destinée à prévenir les comportements inappropriés constitue également une fenêtre d’opportunité pour les attaquants. Ces deux conditions – transactions partagées et délais de confirmation pour éviter tout mauvais comportement – ​​créent la tempête parfaite qui fait passer la gravité des attaques d’épinglage de retards de transaction temporaires (meh) à un vol potentiel (oh non !).

L’épinglage a fait l’objet d’années d’efforts de recherche et de développement, aboutissant au format de transaction TRUC (Topologically Restricted Until Confirmation).4Type de sortie Payer à Anchor (P2A)5Politique de poussière éphémère6Pool de mémoire du cluster7relais limité des colis8et diverses améliorations de la fiabilité du relais de transaction. Ces fonctionnalités sont conçues pour offrir des garanties plus solides pour la propagation de remplacements de frais plus élevés pour les transactions partagées.

Néanmoins, une bonne gestion des frais implique des frais généraux sous la forme de transactions plus importantes, une logique de portefeuille plus complexe et la gestion de cas extrêmes improbables. Un raccourci simple consiste à conclure un accord avec un mineur : en échange de frais, le mineur garantit que ses transactions seront minées rapidement. Cette solution peut s’avérer plus fiable que l’utilisation du réseau peer-to-peer, qui peut avoir une latence élevée et une mauvaise propagation en raison de politiques de pool de mémoire hétérogènes.

L’adoption de la soumission directe aux mineurs peut se développer rapidement lorsqu’il existe un intérêt commercial. Les bourses représentent une grande proportion du volume des transactions et préfèrent probablement un calendrier prévisible à l’optimisation des frais. Les applications populaires peuvent être victimes d’attaques d’épinglage ou vouloir utiliser des transactions non standard interdites par les politiques de nœuds courantes. Les entreprises et les dépositaires préoccupés par les attaques quantiques à courte portée peuvent créer un canal privé avec un mineur.

En tant que valeur extractible des mineurs privés (MEVil)9 devient nécessaire pour rester compétitif, le réseau peut faire boule de neige vers un modèle de courtiers en blocs centralisés. Ces services peuvent devenir des points d’étranglement pour les attaquants et les mandats gouvernementaux et remettre en cause le principe selon lequel devenir mineur est sans autorisation.

Si le réseau de relais de transactions devient inutile pour le fonctionnement des nœuds, y participer peut également sembler inutile. Dans cet avenir hypothétique, allons-nous rire à l’idée que chaque nœud du réseau relaye des transactions non confirmées, de la même manière que nous trouvons drôle que Satoshi ait envisagé chaque nœud comme un mineur ?

L’ironie est que la centralisation minière ne commence pas par une collusion ouverte ou une captation réglementaire. Cela commence par quelques raccourcis rationnels : des accords plus efficaces, des chemins de relais personnalisés ou des optimisations de performances bénéfiques pour leurs participants. Personne ne peut empêcher la conclusion de ces accords. Mais nous pouvons essayer de réduire l’avantage concurrentiel des services privés sur le réseau public : éliminer les vecteurs d’épinglage de mémoire avant d’envisager des propositions de changements consensuels qui augmentent le potentiel de Mevil ; faire du réseau de relais de transactions publiques un marché efficace pour soumissionner (et mettre à jour les offres) pour l’espace de bloc.

Le réseau peer-to-peer est le lieu où de nombreuses idéologies fondamentales de Bitcoin prennent vie. Il s’agit également d’un défi d’ingénierie avec des compromis douloureux entre le fonctionnement efficace des nœuds, la résistance à la censure, l’alignement des incitations et la complexité du protocole. Cela deviendra de plus en plus difficile à mesure que Bitcoin se développera. La manière dont il devrait choisir de concilier ces objectifs de conception concurrents est laissée au lecteur comme exercice.

Le trafic Bitcoin P2P devient sombre.webp
Obtenez votre exemplaire de The Core Issue dès aujourd’hui !

Ne manquez pas votre chance de posséder La question centrale — présentant des articles rédigés par de nombreux développeurs principaux expliquant les projets sur lesquels ils travaillent eux-mêmes !

Cet article est la lettre de l’éditeur présentée dans la dernière édition imprimée du magazine Bitcoin, The Core Issue. Nous le partageons ici comme un premier aperçu des idées explorées tout au long du numéro complet.

[1] https://bitcoin.org/bitcoin.pdf

[2] https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710

[3] https://delvingbitcoin.org/t/mempool-incentive-compatibility/553

[4] https://github.com/bitcoin/bips/blob/master/bip-0431.mediawiki

[5] https://github.com/bitcoin/bitcoin/pull/30352

[6] https://bitcoinops.org/en/topics/ephemeral-anchors/

[7] https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393?u=glozow

[8] https://bitcoinops.org/en/topics/package-relay/

[9] https://bluematt.bitcoin.ninja/2024/04/16/stop-calling-it-mev/

Laisser un commentaire