Payjoin est un protocole qui résout de nombreux problèmes d’une pierre deux coups en utilisant une astuce simple et intelligente pour construire des transactions Bitcoin. Il est conçu pour résoudre le plus grand problème de confidentialité de Bitcoin, mais il peut également aider à résoudre les problèmes de mise à l’échelle, et donc aider les gens à économiser sur les frais. Il est particulièrement compatible avec les nœuds du réseau Lightning, car sa conception actuelle exige que le destinataire de la transaction soit en ligne, ce qui signifie que le destinataire doit être en ligne (tout comme un nœud Lightning) lors de la réception du paiement. À l’avenir, même cette exigence sera éliminée afin qu’elle puisse être utilisée hors ligne. Il est facile à intégrer dans un logiciel de portefeuille, et il peut ouvrir de nombreux canaux Lightning à la fois tout en effectuant des paiements, et il est passif, de sorte que vous pouvez profiter des avantages sans même le savoir. Les avantages de Payjoin en matière de confidentialité sont superposés, de sorte que même si seul un petit pourcentage de personnes l’utilisent, tout le monde peut bénéficier des avantages en matière de confidentialité. Et, peut-être le meilleur de tous, PayJoin ne nécessite pas de hard fork ou de soft fork. Il peut être utilisé avec Bitcoin, et l’a été, et est en fait disponible depuis la première version du logiciel Bitcoin.
Payjoin est un dérivé de Coinjoin. Coinjoin est plus ancien et nécessite également plus d’interaction en ligne, ce qui signifie que les utilisateurs doivent s’engager fortement pour l’utiliser, ce qui ne manquera pas de réduire la convivialité et de décourager l’adoption. Cependant, malgré cela, l’adoption de CoinJoin à ce jour a été beaucoup plus élevée que celle de PayJoin, bien que les avantages et la facilité d’utilisation de PayJoin soient plus évidents. Pour les développeurs, la direction complexe et peu claire l’empêche d’être adoptée par les logiciels de portefeuille.
Payjoin existe depuis de nombreuses années et, en tenant compte :
Il a nombreux avantages mentionnés ci-dessus
La possibilité de fournir une interface utilisateur passive et non intrusive
La facilité avec laquelle les fournisseurs de portefeuilles peuvent l’intégrer
Pourquoi payjoin tarde-t-il à être adopté à grande échelle ?
En particulier, pourquoi le protocole Coinjoin, qui nécessite plus d’interaction, est plus difficile à utiliser et plus coûteux, mais a plutôt plus d’adoption ?
Dans cet article, nous examinerons les attaques actuelles contre la vie privée de Bitcoin, l’histoire de PayJoin du point de vue de la confidentialité, le fonctionnement de PayJoin et les raisons pour lesquelles il peut offrir tant d’avantages sans changer Bitcoin, et enfin, l’adoption actuelle. Si payjoin peut grandement améliorer la confidentialité, l’évolutivité et aider à économiser sur les frais, alors le petit effort du portefeuille pour l’intégrer en vaudra la peine.
Pourquoi la confidentialité est importante pour Bitcoin
Avant de discuter de l’importance de payjoin, nous devons comprendre l’importance de la confidentialité. Si vous n’avez plus besoin de moi pour vous convaincre, vous pouvez passer directement à la section suivante pour en savoir plus sur l’histoire et le fonctionnement de Pyajoin.
Dans les démocraties occidentales, l’importance de la vie privée est indescriptible, car ses avantages semblent encore invisibles pour les gens. Il est difficile d’expliquer de manière convaincante pourquoi la protection de la vie privée est importante (surtout face à des coûts plus élevés ou à des inconvénients plus importants), s’ils ne ressentent jamais les conséquences néfastes d’une trop grande quantité d’informations à leur sujet, ou parce que cela oblige les gens à réfléchir aux conséquences à long terme de ces intrusions.
Bien sûr, la vie privée semble être quelque chose dont de plus en plus de gens se soucient (en théorie), mais ils l’abordent généralement rarement activement, avec des barrières de déclenchement très faibles et aucun compromis sur la commodité. Par conséquent, les technologies qui veulent protéger la vie privée des gens doivent être conçues pour être aussi conviviales et pratiques que possible.
Homogénéité
La confidentialité n’est pas le seul problème que payjoin peut aider à résoudre, mais il a été créé pour le résoudre. Les gens se plaignent depuis longtemps du manque de confidentialité inhérent à Bitcoin, et la communauté Bitcoin prend ce problème très au sérieux. Bitcoin est conçu pour faciliter les transactions directes en tête-à-tête et résiste à la censure. Cependant, parce qu’il permet de retracer les paiements futurs, il peut conduire à une discrimination dès lors qu’une certaine somme d’argent est liée à une identité. Cela détruit l’homogénéité – le degré auquel certaines pièces d’une même monnaie sont indiscernables d’autres dans la même quantité – et l’homogénéité est l’attribut principal de la bonne monnaie.
Si les acheteurs peuvent être suivis, non seulement les pièces qui sont actuellement détenues par des personnes illégales seront rejetées, mais les portefeuilles qui étaient utilisés à des fins illégales pourraient également être signalés puis rejetés par les commerçants, que le détenteur actuel les ait acquis ou non par des moyens parfaitement légitimes. Imaginez que vous ne puissiez pas utiliser l’argent que vous avez pour acheter du lait parce qu’il a été utilisé par quelqu’un pour acheter de la drogue, et qu’ils disent : « Votre argent n’est pas propre », est-ce juste pour vous ? Devriez-vous être puni pour le péché de quelqu’un d’autre ? Que feriez-vous avec les pièces ? Vous auriez l’impression que l’argent ne vaut rien parce que le détenir ne ferait que nuire à votre pouvoir d’achat. Et cela n’a aucun sens qu’une partie des pièces (« argent propre ») ait plus de valeur qu’une autre. Un dollar doit être égal à un autre, peu importe ce qu’il est, sinon la capacité d’une telle pièce à transférer de la valeur sera altérée.
Confusion criminelle
Il y a souvent des dénigrements de Bitcoin et de la vie privée qui disent que seuls les criminels ont besoin de vie privée. C’est un peu comme « si tu ne fais pas quelque chose de mal, prends-le et tu n’as rien à cacher ». C’est facile à réfuter :
Très peu de gens sont prêts à se diffuser en direct en train de se baigner et d’utiliser les toilettes en ligne. Est-ce parce que c’est un crime ? Cela montre simplement que tout le monde veut cacher quelque chose, et que se cacher n’est pas nécessairement mal.
D’une manière plus générale, il incombe au Gouvernement de donner une définition juridique de ce qui constitue un crime, mais cette définition est toujours susceptible d’être modifiée. Si les gens ne sont pas libres d’avoir une vie privée, alors ils ne seront pas libres de posséder quoi que ce soit, parce que leurs actions seront sévèrement limitées par l’environnement social environnant (et même le gouvernement sera directement impliqué). Même s’il s’agit de quelque chose de tout à fait légal, les gens sont pointés du doigt et constamment attaqués. La vie privée est le droit de se dévoiler de manière sélective.
En plus de cette déclaration scandaleuse simpliste et évidente, en réalité, les délinquants, contrairement à la grande majorité des citoyens respectueux des lois, sont prêts à accepter un prix élevé pour leur vie privée, de sorte que les mesures qui compromettent la vie privée fondamentale sont beaucoup plus préjudiciables aux gens ordinaires qu’aux auteurs. Même si le gouvernement ne fait pas un mauvais travail en utilisant des mesures restrictives de la vie privée pour attraper les criminels, mais qu’il « choisit » et espionne sélectivement les citoyens, le résultat sera le même. Si un citoyen dit quelque chose que les gens au pouvoir n’aiment pas (et les choses que les gens au pouvoir n’aiment pas peuvent être les mêmes tous les jours), alors l’AT sera sélectivement arrêté et blessé.
Enfin, le désir de protection de la vie privée n’est pas simplement la crainte que le gouvernement outrepasse ses pouvoirs. Il a également des préoccupations pratiques, de sécurité et d’honneur. Si quelqu’un peut savoir combien d’argent vous avez, où vous vivez, à quel point est-il difficile de voler vos affaires ? Pensez au nombre d’endroits sur Internet où vous devez entrer votre adresse, vos informations de paiement, vos photos, etc. Faites-vous confiance à tous ceux qui gèrent ces sites pour assurer la sécurité de vos informations personnelles ? Vous ne devriez pas leur faire confiance, car même les meilleurs systèmes peuvent tomber en panne et les criminels seront prêts à payer de grosses sommes d’argent aux pirates pour faire exploser les systèmes et voler ces informations précieuses.
Vie privée et démocratie
Dans tout État totalitaire, la condition préalable pour contrôler les citoyens est de connaître la parole, les canaux d’information et les activités financières des citoyens. Sans cette compréhension, il n’y a aucun moyen de savoir ce qu’il faut attaquer ou ce qu’il faut arrêter, car il n’y a aucun moyen de manipuler le récit et de renforcer davantage le contrôle. Si le gouvernement n’a pas un accès fiable à cette information, il ne peut pas cibler un citoyen autant qu’il le voudrait. Dans les sociétés totalitaires du passé, telles que l’Union soviétique et l’Allemagne nazie, ils corrompaient la vie privée des gens et se méfiaient des relations au sein de leurs familles en leur lavant le cerveau pour qu’ils dénoncent les objections exprimées par les membres de leur famille dans des conversations privées. Lorsque les mêmes mesures de corruption de la vie privée se produisent pour l’argent, c’est encore plus terrifiant que la parole. Couper le financement est un moyen très efficace de lutter contre la dissidence politique.
La vie privée de Bitcoin est vulnérable
« Ne gâchez pas une crise qui est juste. "
– Machiavel
C’est au nom de la lutte contre la criminalité (l’attaque terroriste du Hamas) que de nouvelles mesures réglementaires sont spéculées pour caractériser les méthodes de protection de la vie privée dans Bitcoin comme illégales.
Le 10 octobre 2023, le Wall Street Journal a publié un article rapportant que le Hamas avait reçu 130 millions de dollars de financement par le biais de la crypto-monnaie. Une semaine plus tard, la sénatrice Elizabeth Warren a écrit une lettre ouverte au président Biden l’exhortant à aborder la question de la façon dont son exécutif réagit à « l’utilisation terroriste de la crypto-monnaie » d’ici le 31 octobre, citant le Wall Street Journal comme preuve du besoin urgent d’une telle réglementation. La lettre a reçu les signatures de 29 des 100 membres du Sénat, ainsi que de 76 membres de la Chambre des représentants. Curieusement, le 19 octobre, deux jours après l’envoi de la lettre, le Financial Crimes Enforcement Network (FCE) a publié une proposition visant à réglementer l’obscurcissement des crypto-monnaies pour les risques de blanchiment d’argent. La proposition énumère les méthodes utilisées pour brouiller le flux des transactions :
« L’utilisation de code programmatique ou algorithmique pour coordonner, gérer ou manipuler la structure d’une transaction : Cette approche implique l’utilisation d’un logiciel pour coordonner les transactions de deux personnes ou plus, de sorte que ces transactions sont combinées pour produire plusieurs sorties possibles à partir d’une seule entrée coordonnée, obscurcissant ainsi le caractère unique de chaque transaction et réduisant la probabilité d’identifier la personne impliquée dans chaque transaction. »
Cette définition inclut à la fois coinjoin et payjoin, bien que la description de « l’utilisation de code algorithmique » soit suffisamment large pour englober des transactions arbitraires, et permet donc une censure arbitraire.
Mais l’article du Wall Street Journal, qui a fourni une perspective sur la lettre ouverte et a tenté de défendre une telle réglementation, a très mal interprété les données – le montant réel qui était vraiment pertinent pour le Hamas n’était que de 450 000 dollars. Les crypto-monnaies n’ont jamais été la principale source de financement du Hamas. Le Hamas lui-même a clairement indiqué qu’il ne voulait pas recevoir de fonds par le biais du bitcoin, qui est traçable.
Ironiquement, les mesures réglementaires qui sont maintenant proposées, soi-disant pour faire face aux groupes terroristes, ont le moins d’impact sur les groupes terroristes, et le plus pour les gens ordinaires qui veulent utiliser Bitcoin et d’autres crypto-monnaies.
Il ne fait aucun doute que la bataille pour les droits à la vie privée de Bitcoin est déjà en cours aux États-Unis, et il est prévisible qu’elle le sera sous couvert de contrer des raisons de sécurité nationale étrangère. Plus important encore, à partir de maintenant, comprenez les technologies de préservation de la vie privée sur Bitcoin et commencez à les utiliser pour lutter contre les tentatives de les affaiblir.
« Quoi que nous voulions, nous devons défendre notre droit à la vie privée. »
1. La forme d’une transaction Bitcoin
Afin de comprendre ce que fait payjoin et comment il fonctionne, il est nécessaire de comprendre à quoi ressemblent les transactions Bitcoin. Chaque bitcoin est lié à des entrées et des sorties. La sortie définit la clé publique, ou « adresse », à laquelle ces bitcoins sont envoyés. L’entrée définit la « source » des fonds de la transaction, c’est-à-dire la sortie précédente utilisée pour créer la transaction (et sa nouvelle sortie). Une bonne analogie est que nous utilisons différentes coupures d’argent liquide pour payer. Supposons que vous vouliez payer 25 $ pour un dîner au restaurant et 5 $ pour le serveur, pour un total de 30 $ (c’est le résultat de votre transaction, deux « portions » d’argent différentes pour deux personnes différentes – le restaurant et le serveur).
Alors, comment payez-vous ? Supposons que vous ayez tant de notes en main (c’est-à-dire votre entrée) :
1 feuille de 20 yuans
2 feuilles de 10$
5 feuilles de 5 yuans
Ainsi, lors de la construction de cette offre, vous pouvez utiliser 1 billet de 20 $ et 2 billets de 5 $, dont l’un est de 5 $ et l’autre est donné au serveur seul :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-4a2caad01b-dd1a6f-cd5cc0.webp)
Notez un aspect important, et qu’il n’est pas approprié pour nous de faire l’analogie de l’argent : 20 $ et 5 $ ici vont fusionner en un seul morceau. C’est plus comme si vous fondiez deux pièces d’or en une plus grande afin de pouvoir payer le montant requis plutôt que de donner plusieurs pépites d’or. Bitcoin vous permet de diviser et de fusionner les entrées pour produire la sortie que nous voulons.
Vous pouvez également utiliser 2 billets de 10 $ et 2 billets de 5 $, comme ceci :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-0a70c8526f-dd1a6f-cd5cc0.webp)
Ou même utiliser 6 feuilles pour 5 $ :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-441fc7aa70-dd1a6f-cd5cc0.webp)
Jusqu’à ce que nous dépensions notre argent, ces « billets » individuels de Bitcoin sont appelés « sorties de transaction non dépensées (UTXO) ». Le nom semble étrange, mais si vous prenez le temps d’y réfléchir, vous vous rendrez compte qu’il est assez précis – ce sont les « résultats » (sorties) de certaines transactions, et ils n’ont pas encore été dépensés par une autre transaction. Une sortie de transaction qui n’a pas encore été dépensée est la sortie que vous pouvez dépenser. Donc, en fait, les UTXO sont comme du papier-monnaie dans votre portefeuille. Une fois qu’ils ont été dépensés, ils deviennent l’entrée d’une transaction, puis la sortie d’une autre transaction (de l’argent dans le portefeuille de quelqu’un d’autre), et vous ne pouvez plus le dépenser, cependant, l’enregistrement du billet que vous avez dépensé reste sur la blockchain pour toujours.
Contrairement à l’argent liquide, les transactions Bitcoin nécessitent l’autorisation de l’expéditeur pour être valides. Ceci est réalisé grâce à la signature numérique de l’expéditeur, qui sert également de preuve qu’il avait l’intention de dépenser les fonds. Une signature valide (c’est-à-dire une signature qui correspond à l’adresse de l’UTXO) doit être représentée dans l’entrée de transaction qui utilise l’UTXO. La présence de la signature « déverrouille » cet UTXO et indique que le propriétaire de cet UTXO a l’intention de le dépenser pour une telle transaction.
L’image suivante montre une transaction réelle qui a été confirmée par la blockchain 1 fois au moment de la rédaction de cet article :
! [Exemple d’une transaction réelle avec 1 entrée et trois sorties, l’une étant une redevance] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-c006e2488a-dd1a6f-cd5cc0.webp)
Comme vous pouvez le voir, la transaction ci-dessus a pris 1 entrée et a créé 2 sorties, l’une représentant le paiement réel et l’autre étant presque certainement renvoyée au dépensier sous forme de monnaie. La différence entre l’entrée et la sortie est la redevance, qui revient au mineur qui a miné le bloc qui a confirmé la transaction en premier.
Ce « mode UTXO » est très puissant. Parce que chaque transaction a une entrée et une sortie, et parce que la sortie d’une transaction devient l’entrée d’une autre transaction ultérieure, nous nous retrouvons avec une chaîne de transactions qui peut suivre le transfert de propriété de Bitcoin. Parce que l’offre de Bitcoin est limitée, et en raison de ce fait qu’il a une caractéristique clé « non inflationniste », il est important de pouvoir vérifier combien de Bitcoin est en circulation (ou « non dépensé ») à tout moment, et le modèle UTXO peut être utilisé dans l’oc.
C’est également la source des préoccupations de Bitcoin en matière de confidentialité. Chaque transaction a son propre historique. Tous les bitcoins qui vous sont remis, et où vous les envoyez, sont faciles à suivre. L’ensemble du système est explicitement conçu pour prendre en charge cette fonctionnalité, bien qu’il n’ait pas l’intention de suivre les individus. Dans ce système, votre seule véritable monnaie d’échange est de ne jamais associer votre véritable identité à votre clé publique, ce qui est très difficile à faire à l’ère de la surveillance de masse.
Les origines historiques de Payjoin
L’erreur mineure de Satoshi Nakamoto
Lorsque Satoshi Nakamoto a publié le livre blanc sur Bitcoin en 2008, il s’est rendu compte que les préoccupations en matière de protection de la vie privée provenaient de l’exigence que chaque transaction soit rendue publique, ce qui entrait en conflit avec l’exigence de la garder privée.
Il a fait deux suggestions pour éviter d’associer les identités réelles aux transactions :
Préserver l’anonymat de la clé publique
Ne réutilisez pas les clés publiques
Ce sont tous de bons conseils, mais pour 1) il est difficile de garantir que notre identité réelle est complètement isolée de nos paiements, à moins d’être extrêmement prudent lorsque nous effectuons des paiements en ligne ; Pour 2), même si la clé publique n’est pas réutilisée, il n’est pas difficile pour le tracker d’identifier quelles clés publiques appartiennent à quelle personne, tant que la sortie générée par plusieurs clés est dépensée ensemble dans les paiements ultérieurs. Ces suggestions, même lorsqu’elles sont mises ensemble, sont des solutions difficiles à faire et imparfaites.
Après ces suggestions, Satoshi Nakamoto a commis une autre petite erreur en exagérant la faiblesse de son système :
« En tant que pare-feu supplémentaire, une nouvelle paire de clés doit être utilisée pour chaque transaction afin de garantir qu’elles ne pointent pas vers un propriétaire commun. Certaines associations sont encore inévitables, et les transactions à entrées multiples indiqueront inévitablement que les entrées proviennent toutes du même propriétaire. Le risque est que si le propriétaire d’une clé publique est exposé, l’association expose d’autres transactions appartenant au même propriétaire. "
L’hypothèse de Satoshi, et tous les exemples que nous avons montrés jusqu’à présent, impliquent que toutes les entrées d’une transaction appartiennent au même propriétaire. En d’autres termes, tous les « billets de banque » dépensés pour une transaction proviennent de votre portefeuille, ce qui est une hypothèse raisonnable, mais pas nécessairement vraie. C’est ce qu’on appelle « entrer dans l’identité des indices de propriété ». C’est presque vrai pour n’importe quelle transaction, ce qui est également la base de la surveillance de l’activité on-chain.
Coinjoin (en anglais seulement)
Au début de l’année 2013, Gregory Maxwell a joué à un jeu intéressant sur les forums bitcointalk.org où il a proposé son propre UTXO (d’une valeur de 1 BTC) et son adresse, et a demandé si quelqu’un pouvait créer une nouvelle transaction en utilisant cet UTXO comme entrée. Si le créateur d’une telle transaction lui envoie moins de 1 BTC, cela lui prend de l’argent, et s’il lui envoie plus de 1 BTC, cela lui donne de l’argent supplémentaire, mais si le montant qui lui est envoyé n’est ni supérieur ni inférieur à 1 BTC, alors cela équivaut à utiliser ses fonds (et son adresse) pour plus de confidentialité, car l’entrée ressemble comme s’il s’agissait de l’UTXO du créateur de la transaction, mais ce n’est pas le cas. Lorsque l’une des sorties de Maxwell est dépensée et renvoyée à son adresse, il fournit un autre UTXO afin que les autres puissent continuer le jeu. Du point de vue d’une société d’analyse de l’activité blockchain, cela leur ferait penser que Maxwell a l’air riche ! Parce que ses adresses sont publiques et que de nombreux UTXO sont utilisés pour construire des transactions qui contiennent ces adresses, tout analyste qui analyse ces transactions et suppose que toutes les entrées des transactions proviennent de la même personne supposera que Maxwell a beaucoup, beaucoup de bitcoins (plus qu’il n’en possède réellement), d’où le titre de son post : « Je suis vraiment riche ! »
Bien sûr, le jeu n’est pas privé, car Maxwell a posté son adresse sur un forum public, mais il offre un concept très important qui voit le jour. Comme le dit Maxwell :
« Beaucoup de gens supposent à tort que si une transaction coûte plusieurs adresses, cela signifie qu’elles proviennent toutes de la même personne. C’est vrai en général, mais ce n’est pas nécessairement vrai : les gens peuvent coopérer les uns avec les autres pour construire une transaction ensemble, et il existe une approche sûre et sans confiance. "
Dans un article de suivi la même année, Mavwell a officiellement distillé l’idée dans un concept qu’il a appelé « Coinjoin » :
« Lorsque l’on pense à l’histoire de la possession de bitcoins, on peut penser qu’une transaction qui coûte plusieurs clés publiques scriptées différentes est la propriété de la mise en commun de ces fonds, et donc supposer : comment peuvent-ils être dépensés ensemble à moins que la même personne ne les contrôle ?
[......]
Cette hypothèse est incorrecte. Dans la même transaction, il ne prouve pas que la propriété de ces fonds est la même (bien que le statu quo soit fondamentalement vrai), et c’est pourquoi Coinjoin peut être réalisé :
signatures sont une pour chaque entrée et sont complètement indépendantes les unes des autres, même au sein d’une même transaction. Cela signifie que les utilisateurs de Bitcoin peuvent convenir ensemble de dépenser un ensemble d’entrées et de produire un ensemble de sorties, puis chacun signer la transaction séparément, puis fusionner ses signatures. À moins que tout le monde ne fournisse sa signature, la transaction ne sera pas valide, ne sera pas acceptée par le réseau et personne ne signera une transaction dont il n’est pas satisfait. "
Cela signifie qu’en effet, un nombre illimité de personnes peuvent collaborer pour créer des transactions, chacune fournissant et signant sa propre contribution, sans avoir à s’inquiéter du vol de fonds par quelqu’un d’autre.
Ensuite, il a introduit un autre avantage des transactions coinjoin, à savoir que les transactions peuvent être traitées par lots, ce qui permet d’économiser des frais : vous pouvez trouver d’autres personnes qui souhaitent également initier des paiements lorsque vous le souhaitez, et créer des transactions ensemble :
« La même idée pourrait être utilisée de manière plus décontractée. Lorsque vous souhaitez effectuer un paiement, trouvez d’autres personnes qui souhaitent également effectuer un paiement et créez ensemble un paiement conjoint. Non seulement cela augmentera la confidentialité, mais cela rendra également vos transactions plus petites et donc plus faciles à répartir sur le réseau (et avec des frais moins élevés), et la confidentialité supplémentaire est un avantage. "
En fin de compte, conjoin est un protocole où suffisamment de personnes l’utilisent, tout le monde y gagne et tout le monde en tire des avantages en matière de confidentialité :
« Une telle transaction est superficiellement impossible à distinguer d’une transaction créée à l’aide d’une méthode conventionnelle. Par conséquent, tant que ces transactions sont suffisamment répandues, elles augmenteront la vie privée même de ceux qui n’utilisent pas la technologie, car la saisie et le mélange ne peuvent plus être utilisés comme preuve solide du même contrôle. "
Pour donner un exemple concret, disons que nous trouvons 3 personnes qui souhaitent participer à un coinjoin. Ils ont convenu à l’avance de mélanger 0,1 bitcoin, et ils pourraient obtenir l’avantage de la confidentialité en produisant 3 sorties égales, ce qui rend impossible pour les autres de dire d’où vient chacune des trois adresses. Pour l’analyste, la relation entre l’adresse de changement et l’entrée est encore très claire, mais il n’est pas clair à qui appartient la sortie de ces trois montants égaux.
! [Exemple de coinjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-2603112d99-dd1a6f-cd5cc0.webp)
Lorsqu’il n’y a que 3 participants, l’avantage en matière de confidentialité n’est pas nécessairement significatif, d’autant plus que d’autres participants peuvent se désanonymiser (corréler à leur identité réelle) lors de transactions ultérieures, mais cela peut être amélioré par plusieurs tours de coinjoin ou en utilisant un ensemble d’anonymat plus grand.
Pour résumer, coinjoin est une transaction créée à l’aide d’entrées et de sorties de plusieurs parties, de sorte qu’il est difficile pour les autres de déterminer quelle sortie appartient à qui.
Pour en savoir plus sur la création d’une transaction Coinjoin et sur les outils disponibles, consultez ce guide.
Coinjoin est l’une des solutions de confidentialité Bitcoin les plus efficaces et les plus largement adoptées, mais elle présente également des inconvénients importants :
Interactivité : Coinjoin nécessite une forte interaction de la part des participants, qui doivent se mettre d’accord sur une dénomination de sortie égale, et tous doivent fournir leur signature dans un certain laps de temps. Le besoin d’une interaction intense crée des frictions pour les utilisateurs, ce qui entrave son adoption par un plus grand nombre d’utilisateurs.
Coordinateurs centralisés : Wasabi et Whirlpool sont actuellement les méthodes les plus populaires de Coinjoin. Ils facturent également des frais pour le travail de coordination qu’ils effectuent, ce qui n’inclut pas les frais de confirmation de bloc qui sont donnés aux mineurs pour participer à la transaction (ce qui est assez élevé en raison de la grande quantité de données de signature utilisées dans les transactions coinjoin). Le marché de jointure est un exemple de service non coordonné, mais la contrepartie est qu’il nécessite plus d’interaction de la part de l’utilisateur.
Nécessite plusieurs entrées pour renforcer la confidentialité : Pour une meilleure confidentialité, la recommandation habituelle est de participer à plusieurs coinjoins (car une seule participation peut entraîner peu de gains en raison du petit ensemble de contributions anonymes). Mais les engagements multiples prennent du temps, augmentent l’interaction et paient plus de frais.
Coinjoin ne ressemble pas exactement à une transaction normale : Les transactions Coinjoin ont une caractéristique définie et reconnaissable : plusieurs entrées de plusieurs parties produisent plusieurs sorties de la même dénomination. Cela signifie que si votre pièce a été identifiée avant que vous ne participiez au coinjoin, le chien de garde sera également présent dans le coinjoin jusqu’à ce que vous participiez. Ils ne savent peut-être pas où sont allés vos fonds ou ce que vous avez fait après le coinjoining, mais ils savent combien vous avez et combien vous avez participé à un coinjoin
De toute évidence, en raison de ces limitations, CoinJoin n’est pas la solution ultime pour la confidentialité de Bitcoin, en particulier pour les utilisateurs plus passifs qui souhaitent un système de confidentialité par défaut.
Quelques années plus tard, un meilleur résultat a émergé, qui n’obligeait pas les parties impliquées dans la transaction à prendre des mesures supplémentaires, qui était simple, qui ne nécessitait pas de coordinateur centralisé ou de place de marché (et qui permettait donc d’économiser du temps et de l’argent), et qui ressemblait à une transaction normale : Payjoin.
Payjoin est composé d’une série d’innovations antérieures, jetons un coup d’œil.
PIB-21
Une amélioration importante de l’expérience utilisateur (UX) pour les débuts de Bitcoin a été BIP-21. « BIP » est l’acronyme de « Bitcoin Upgrade Proposal » et contient un ensemble de critères qui nécessitent des modifications consensuelles du protocole Bitcoin (par exemple, des hard forks ou des soft forks) ou fournissent des informations et des méthodes utiles pour interagir avec Bitcoin.
BIP-21 est une norme qui définit l’utilisation des URI et simplifie le processus d’interaction avec Bitcoin en cliquant sur un lien ou en scannant un code QR pour initier un paiement. Un petit nombre de paramètres de requête, tels que le montant, la balise et le message, sont également définis, de sorte que le logiciel client peut facilement les récupérer et les analyser, offrant ainsi une meilleure expérience utilisateur. Voici un exemple d’URI BIP-21 avec quelques paramètres :
Il est important de noter que cette norme est extensible, que vous pouvez créer des paramètres de requête personnalisés et que de nouvelles normes peuvent être développées par-dessus. Par exemple, en plus de votre adresse Bitcoin, vous pouvez également ajouter un paramètre personnalisé appelé lightning qui vous permet de recevoir de l’argent sur le Lightning Network, afin que les utilisateurs puissent vous payer dans les deux cas :
! [BIP-21 avec Lightning] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-568740308b-dd1a6f-cd5cc0.webp)
Ce BIP puissant et flexible s’est avéré très utile lors de l’intégration des concepts de coinjoin.
Pay-to-Endpoint (P2EP)
Le premier document que j’ai trouvé mentionnant le concept de payjoin provenait de Blocksteam, publié en août 2018, citant un atelier qui a donné naissance au concept. L’article appelle l’idée finale « Pay-to-Endpoint » parce qu’elle combine le concept de coinjoin avec BIP-21, permettant à l’expéditeur et au destinataire d’une transaction de travailler ensemble pour fournir des informations à la transaction via un point de terminaison réseau conforme à la norme BIP-21 fourni par le destinataire. Le diagramme suivant est un exemple de ce à quoi ressemble un point de terminaison fourni par le récepteur :
Il convient de noter en particulier le paramètre p2ep, qui est un point de terminaison réseau (dans ce cas, une adresse .onion, mais il peut également s’agir d’une simple adresse http:// ou de tout autre point de terminaison réseau compatible) qui peut envoyer un signal au portefeuille du destinataire indiquant que l’expéditeur est prêt à tenter un paiement P2EP. Si le paiement P2EP échoue, le portefeuille retournera à l’expéditeur et demandera un paiement normal à une certaine adresse, et n’utilisera que l’entrée de l’expéditeur.
Étant donné que la contribution d’entrée est coordonnée par P2EP et ne produit pas une sortie de dénomination égale « corrompue » comme coinjoin, les transactions payjoin sont plus difficiles à identifier.
L’idée est un grand pas dans la bonne direction, mais elle n’en est encore qu’à ses balbutiements, elle n’est pas finalisée et une complexité supplémentaire doit être supprimée.
Hors sujet : le Pay-to-IP de Satoshi Nakamoto
Une variante de cette idée, appelée « Pay-to-IP », a en fait été mise en œuvre par Satoshi Nakamoto dans la première version du logiciel Bitcoin. Cependant, cette approche pose un dilemme important en matière de protection de la vie privée, elle a donc été abandonnée dans les versions ultérieures du logiciel Bitcoin.
Bustapay
Plus tard dans le même mois, Ryan Haver a proposé une version améliorée de P2EP sur la liste de diffusion des développeurs Bitcoin et a officialisé un BIP appelé « Bustapay ». Cette version simplifie le protocole P2EP d’origine, et par souci de simplicité et supprime une partie de la complexité, il pense que la simplicité est essentielle pour un accès omniprésent.
La proposition de Bustapay comporte encore des problèmes majeurs qui doivent être affinés, et le protocole n’est pas aussi complet qu’il devrait l’être. Mais c’est un autre pas dans la bonne direction, et l’accent mis sur la simplicité pour l’intégration des portefeuilles est une étape cruciale, en particulier pour l’écosystème lent et prudent des développeurs de Bitcoin. Bien que Bustapay n’ait jamais été promu, c’était le dernier précurseur de la proposition payjoin d’aujourd’hui – nous sommes prêts pour l’intégration du portefeuille, des changements positifs dans les transactions on-chain.
Offre Payjoin
Enfin, à la mi-2019, les concepts de Bustapay et de P2EP ont été affinés et améliorés par Nicolas Forier (fondateur de BTCPayServer) et Kukks pour former BIP-78, intitulé « A Simple Payjoin Proposal ».
Si l’on comprend le contexte du protocole qui a donné naissance à payjoin, le sens et l’objectif du résumé au début de cette proposition sont clairs :
« Ce document propose un protocole permettant à deux parties de négocier une transaction coinjoin lorsqu’elles effectuent un paiement. "
La proposition fournit des informations beaucoup plus rigoureuses que les méthodes précédentes, indiquant comment construire une transaction coinjoin entre un expéditeur et un destinataire, brisant le fil de l’identité de propriété des entrées de transaction, et est simple, flexible et peu coûteuse.
Fonctionnement de Payjoin
Supposons qu’Alice veuille payer Bob 1,1 BTC, et qu’une société de surveillance de la blockchain voit une transaction comme celle-ci :
! [Exemple en supposant l’heuristique de propriété des entrées communes] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-ca34b5b6d3-dd1a6f-cd5cc0.webp)
Ils pourraient penser qu’Alice a payé 0,5 BTC à Bob et qu’elle s’est ensuite transféré le reste de l’argent en guise de monnaie, et c’est tout :
! [Exemple qui suppose que l’heuristique de propriété des entrées communes a été utilisée] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-28843c7745-dd1a6f-cd5cc0.webp)
Et la plupart du temps, il n’y a rien de mal à le penser ! Après tout, la monnaie est généralement en grosses coupures, et 0,5 est plutôt un « entier » et est plus susceptible d’être utilisé dans les paiements (par rapport à 1,1).
Ils peuvent aussi se demander pourquoi Alice a utilisé une entrée qui n’était pas nécessaire (0.8 et 0.3 sont redondants), mais ils ne peuvent jamais être sûrs qu’il ne s’agit pas d’une transaction ordinaire, et ils ne peuvent pas conclure pourquoi une entrée supplémentaire a été utilisée - peut-être qu’Alice est juste en train d’organiser son portefeuille afin qu’elle puisse le gérer plus tard. C’est peut-être un payjoin, mais même si vous le pensez, quel UTXO est celui d’Alice et lequel est celui de Bob ? Il n’y a aucun moyen de le savoir. Étant donné que la plupart des transactions ne sont pas des payjoins, ils sont plus susceptibles de penser à tort qu’il ne s’agit pas d’une transaction payjoin.
Cependant, Alice est intelligente et veut protéger sa vie privée, et elle connaît payjoin, alors elle demande à Bob de fournir également une entrée pour la transaction. Bob a accepté, il a donc créé une transaction qui a coûté un (ou plusieurs) UTXO en entrée, et l’a renvoyée à Alice. Si l’accord n’a pas de problème avec Alice, elle le diffusera sur le réseau. L’accord se déroule en fait comme suit :
! [Exemple de transaction payjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-ba3b4aec83-dd1a6f-cd5cc0.webp)
Tant que les observateurs de la chaîne supposent que toutes les entrées proviennent d’Alice (comme dans le premier exemple, et c’est le cas maintenant), ils se tromperont complètement sur les entrées qui appartiennent à Alice et Bob !
Il est intéressant de noter qu’Alice et Bob offrent tous deux des avantages en matière de protection de la vie privée. Parce que, contrairement à CoinJoin, cette transaction ressemble davantage à une transaction normale, et tant qu’un nombre suffisant de personnes utilisent PayJoin, l’observateur ne peut pas déterminer quelles transactions sont normales. En déjouant les observateurs, Alice et Bob rendent également chaque transaction un peu suspecte. Tant qu’un nombre suffisant de personnes le feront, toutes les transactions deviendront suspectes. La confidentialité on-chain est souvent un jeu de chiffres, et plus il y a de personnes impliquées, meilleure sera la confidentialité pour tout le monde.
Dans ce cas-ci, Alice et Bob ont collaboré pour créer une transaction à l’aide de leurs entrées respectives afin de protéger la vie privée. Bien sûr, l’ensemble du processus est étrangement automatisé (et en réalité est automatisé).
Dans le BIP-78, l’ensemble du processus est défini de manière plus formelle comme suit :
Le destinataire présente à l’expéditeur un URI BIP-21 avec le paramètre de requête pj= pointant vers un point de terminaison/serveur réseau auquel on peut envoyer une « Transaction Bitcoin partiellement signée (PSBT) ». Ce point de terminaison peut utiliser HTTPS, . OnJoin ou tout autre protocole qui utilise le chiffrement d’identité, tel que :
! [Exemple PJ] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-d33ce79c42-dd1a6f-cd5cc0.webp)
2. L’expéditeur crée un PSBT formé et diffusable qui est envoyé au point de terminaison du destinataire en utilisant uniquement ses propres entrées qui sont entièrement suffisantes pour le paiement. Ce PSBT est appelé le « PSBT initial ».
3. Le destinataire modifie le PSBT pour inclure sa propre entrée, signe sa propre entrée et renvoie le PSBT modifié à l’expéditeur. Le destinataire ne modifie aucune des entrées ou sorties de l’expéditeur. Ce PSBT est appelé une « Offre Payjoin ».
4. L’expéditeur valide l’offre, puis re-signe sa saisie pour finaliser l’ensemble de la transaction et enfin la diffuser sur le réseau.
Quel que soit l’endroit où l’erreur est commise dans le processus, par exemple si le destinataire ne dispose pas d’un UTXO pouvant être utilisé pour créer la proposition Payjoin, l’AT n’a besoin que de diffuser le PSBT initial, qui est une transaction normale. Bien que toutes les entrées de cette transaction proviennent du même propriétaire et qu’il n’y ait qu’un nombre suffisant de personnes qui utilisent payjoins, vous ne pouvez pas conclure que les deux parties ne payent pas, et l’observateur devra supposer que tout le monde paie, puis trouver un autre moyen de suivre le paiement.
Les nombreux avantages de Payjoin
Décomposez plus d’indices de surveillance
L’hypothèse de l’identité de propriété n’est pas la seule qui peut être brisée par payjoin qui affecte la vie privée. Le BIP-78 indique deux autres indices qui peuvent être utilisés pour identifier le propriétaire :
Identification des modifications par clé publique de script :
Dans Bitcoin, la clé publique du script est le « script de verrouillage » qui spécifie les conditions dans lesquelles une somme de bitcoins peut être dépensée. On l’appelle une « clé publique de script » car la condition de verrouillage nécessite une signature valide qui correspond à une clé publique (adresse) pour la déverrouiller. En d’autres termes, seule la personne qui contrôle la clé privée de la clé publique associée de cet UTXO peut la déverrouiller.
Il existe plusieurs types de clés publiques de script, telles que : P2PKH, P2WPKH, P2SH, P2TR. En général, les portefeuilles utilisent la même clé publique de script pour toutes les transactions, de sorte que la sortie de modification (les fonds renvoyés à l’expéditeur par l’expéditeur à lui-même en plus des paiements et des frais) utilisera très probablement le même type de clé publique de script que l’entrée de l’expéditeur, et la sortie envoyée au destinataire est plus susceptible d’utiliser un type différent. Cela signifie que les UTXO qui utilisent le même type de script dans la même transaction peuvent être identifiés comme appartenant potentiellement à l’expéditeur, c’est-à-dire en supposant que la sortie envoyée au récepteur sera d’un type différent.
BIP-78 spécifie une méthode qui permet au destinataire d’utiliser uniquement le même type de clé publique de script que l’expéditeur, ce qui interrompt le thread ci-dessus qui pourrait exposer la sortie de paiement et la sortie de modification.
Identification de la monnaie et du paiement par le montant du paiement (nombre entier) :
Normalement, s’il vous plaît entrejambe, payer un ami choisira toujours un entier, car ce sera beaucoup plus naturel. Si Bob facturait Alice (et qu’ils ne facturaient pas Bitcoin à un prix fiduciaire « plus proche d’un entier »), alors il facturerait très probablement un ensemble e comme 0,0001 au lieu d’un nombre non entier comme 0,00010231. Si l’une des sorties d’une transaction est un entier, il est probable qu’il s’agisse d’une sortie de paiement, et qu’une sortie non entière soit une sortie de modification (du moins pour l’instant).
Payjoin décrit également un moyen pour le destinataire de rompre ce thread en ajoutant une sortie entière supplémentaire lors de la construction d’une proposition Payjoin.
Les avantages asymétriques sont obtenus en unissant un groupe plus large
Comme mentionné précédemment, l’un des principaux inconvénients de coinjoin du point de vue de la confidentialité est que 1) les transactions coinjoin se distinguent facilement des transactions régulières, et 2) peu de gens font des coinjoins spécifiquement, ce qui n’est pas le cas avec les transactions régulières. Cela crée le problème de l’homogénéité de Bitcoin, car il est probable que certaines personnes penseront que l’argent monnayé est pollué, parce que c’est quelqu’un qui a cette idée ridicule que « la poursuite de la vie privée équivaut à la malveillance ». Bien sûr, si la majorité des transactions, ou même seulement un certain pourcentage de transactions, sont privées, alors les transactions visant à protéger la vie privée sont discrètes.
Payjoin ressemble à n’importe quelle autre transaction, elle n’a donc rien de remarquable. Les observateurs extérieurs n’ont même aucune raison d’examiner une telle transaction, car elle ne montre pas l’intention de confondre le paiement et de modifier les résultats.
Parce que cela ressemble à autre chose, même les avantages marginaux de l’adoption de payjoin signifient que la vie privée de tout le monde sera plus difficile à violer, car les prospects surveillés deviennent rapidement peu fiables. Adam Gibson (contributeur fondateur de JoinMarket et expert en matière de confidentialité des bitcoins) résume très bien la situation :
« Même si vous êtes très prudent, ces transactions PayJoin ne sont pas différentes des paiements ordinaires [...] Eh bien, voici ce qui est cool : supposons que la petite adoption de cette technologie sera également observée. Supposons que 5 % des transactions utilisent cette méthode. Le fait est que personne ne sait exactement quels sont les 5 % de transactions PayJoin. Il s’agit d’une grande réussite [...] , car cela signifie que tous les paiements, y compris ceux qui n’utilisent pas Payjoin, bénéficient des avantages en matière de confidentialité !
Finition UTXO
De toute évidence, PayJoin et ses pionniers s’engagent à répondre aux préoccupations en matière de protection de la vie privée. Mais il y a un bon côté à l’utilisation de payjoin, et BIP-78 le montre clairement : le rangement UTXO.
Satoshi Nakamoto a proposé d’utiliser une adresse de pourboire pour chaque transaction de réception, ce qui a eu pour conséquence que le portefeuille d’un utilisateur avait de nombreux UTXO à gérer. Lorsque ces UTXO sont utilisés comme entrées pour générer une nouvelle transaction (en supposant qu’il ne s’agisse pas d’une transaction coinjoin ou payjoin), une telle transaction coûte beaucoup de frais. Étant donné que les frais sont facturés en fonction du volume de la transaction (nombre d’octets) (correspondant à l’espace de bloc qui est une ressource rare), plus d’entrées correspondent à des transactions plus importantes et à plus de frais.
Il est important de noter que l’utilisation de payjoin pour le tri UTXO ne permet pas nécessairement d’économiser des frais, car chaque UTXO qui apparaît sur la chaîne devra toujours payer des frais. Cependant, il répartit ces frais sur une longue période et offre la possibilité de regrouper les UTXO au moment du paiement. Le traitement par lots rendra l’organisation des UTXO moins coûteuse (que si vous deviez initier une transaction spécifiquement à des fins de classement). Il facilite également la liaison des UTXO et prend moins de place sur votre disque dur. De plus, les portefeuilles peuvent mettre en place un moyen d’automatiser et de fluidifier l’organisation des UTXO en permettant aux destinataires de spécifier à l’avance quels UTXO ils souhaitent organiser à faible coût.
Lightning Network et Payjoin : un mariage parfait dans la nature
Utiliser Payjoin pour ouvrir le canal Lightning
Le Lightning Network (LN) est une solution de couche 2 construite sur Bitcoin qui place les transactions hors chaîne pour un règlement instantané et très faible des frais, augmentant ainsi considérablement le débit des transactions, la confidentialité et permettant à Bitcoin d’entrer dans de nouveaux cas d’utilisation (tels que les « micropaiements »). Il utilise un réseau de canaux de paiement entre les nœuds pour acheminer les paiements, en transférant les fonds de leur origine vers leurs destinations. Ces canaux exigent que chaque opérateur de nœud verrouille une certaine « liquidité » (bitcoins) avec ses contreparties de canal, qui peuvent ensuite circuler entre un nœud et ses contreparties de canal. La quantité de bitcoins que vous pouvez dépenser dans un canal est limitée par la quantité de liquidité qu’il y a de votre côté du canal.
Lorsqu’il s’agit de maintenir un nœud Lightning, la majeure partie de la complexité provient de l’ouverture de ces canaux et de la gestion de la liquidité de chaque canal. L’intégration de nouveaux utilisateurs est l’un des plus gros problèmes, car il y a tellement d’étapes à franchir. Supposons qu’Alice veuille ouvrir un canal avec Bob et qu’elle ait installé un nouveau nœud Lightning, mais qu’elle n’ait pas encore été financée. Ensuite, elle doit faire ce qui suit :
Envoyez une transaction on-chain pour approvisionner son portefeuille Lightning nouvellement créé avec au moins suffisamment de fonds pour ouvrir le canal, et attendez que la transaction soit confirmée (au moins 10 minutes)
Utilisez son logiciel Lightning Wallet pour négocier une transaction avec Bob afin d’ouvrir le canal et d’attendre qu’elle soit confirmée
À tout le moins, Alice doit payer les frais deux fois et attendre environ 10 minutes pour chaque transaction, ce qui est fastidieux.
! [Processus d’ouverture du canal Lightning] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-1cabf5ff4a-dd1a6f-cd5cc0.webp)
Payjoin simplifie ce processus et permet à Alice d’économiser de l’argent : Alice peut approvisionner le Lightning Wallet et ouvrir le canal en une seule transaction.
Dans ce scénario, Alice préconfigure son point de terminaison de réception payjoin avec les détails du canal qu’elle souhaite ouvrir : le nombre de bitcoins à verrouiller et l’adversaire à ouvrir. Ensuite, à l’aide d’un portefeuille qui prend en charge payjoin, quelqu’un (y compris Alice) peut envoyer un PSBT initial au point de terminaison, négocier une transaction de paiement et le point de terminaison effectuera les appels d’API nécessaires pour ouvrir un canal avec le nœud de Bob.
En d’autres termes, l’expéditeur (dans ce cas, Alice) communique avec Alice avec le point de terminaison qui reçoit le payjoin, crée une transaction et envoie des fonds directement à la sortie multi-signature 2 sur 2 de Bob et Alice, créant ainsi un canal Lightning entre les deux nœuds. Cela transforme l’ensemble du processus en une transaction :
! [Lightning Channel avec Payjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-4c65326146-dd1a6f-cd5cc0.webp)
Une chose intéressante à savoir est que l’ouverture du canal Lightning et le payjoin ont tous deux des exigences live (bien que, au moins, le payjoin ne soit pas nécessaire avant longtemps), ce qui signifie que tous les participants doivent être en ligne au moment où la transaction a lieu. C’est très restrictif par rapport aux transactions Bitcoin on-chain (qui ne nécessitent que le payeur d’être en ligne au moment du paiement). Cependant, cela permet également aux deux ensembles de protocoles de s’intégrer parfaitement.
Par exemple, le Lightning Network est un excellent moyen d’améliorer la confidentialité en gardant les paiements hors chaîne, et il peut considérablement améliorer la capacité de Bitcoin à être utilisé comme moyen d’échange (c’est-à-dire qu’il peut réellement être utilisé pour acheter des produits de première nécessité) sans compromettre sa réserve de valeur. Cependant, la nécessité d’ouvrir un canal sur la chaîne signifie également que les fonds que vous utilisez pour ouvrir le canal, ainsi que les personnes qui ouvrent le canal avec vous, laisseront une trace sur la chaîne. Pour les raisons que nous avons déjà évoquées, payjoin peut confondre et détruire de nombreux indices des fouineurs.
Cela rend également les choses plus simples, car les utilisateurs n’auront besoin d’initier qu’une seule transaction au lieu de deux, deviendront plus rapides car ils n’auront qu’à attendre qu’une seule transaction pour être confirmées et moins chers car ils n’auront qu’à payer un seul frais. En fait, cette approche permet d’ouvrir plusieurs canaux à la fois. Vous pouvez créer une liste des nœuds que vous souhaitez ouvrir le canal, le configurer en un point de terminaison de réception BIP-21 payjoin, puis l’activer en une seule fois et automatiquement lors de la réception des paiements, et n’avoir à attendre qu’une seule confirmation et des frais de paiement. Absolument!
Il existe déjà un projet mettant en œuvre cette idée appelé « Nolooking », qui vous permet de répertorier un ensemble de clés publiques, puis d’ouvrir plusieurs canaux Lightning à la fois *par lots) ! Cela permet à Alice d’ouvrir un canal non seulement avec Bob, mais aussi avec Bob, Carol et Dina, avec une seule transaction on-chain ! C’est excitant d’y penser : à l’avenir, Payjoin sera activé par défaut dans les portefeuilles Lightning, et l’expérience utilisateur de facto est que vous n’avez qu’à sélectionner votre partenaire de distribution, initier une seule transaction Bitcoin, et le tour est joué ! N’est-ce pas surprenant ?
Il est facile d’imaginer que cela simplifierait l’adoption de canaux éclair auto-dépositaires. Il serait intéressant que le logiciel de portefeuille Lightning puisse avoir un bouton de « lancement rapide » où les utilisateurs entreraient simplement la quantité de bitcoins qu’ils souhaitent verrouiller (c’est-à-dire la quantité de liquidités qu’ils veulent), définiraient une valeur par défaut pour l’ouverture d’un petit nombre de canaux de taille raisonnable et sacrifieraient légèrement le routage et les frais. Pour les utilisateurs avancés, il suffit de fournir un bouton « Je sais ce que je fais ».
Faiblesses
Tout protocole a ses faiblesses, et PayJoin ne fait pas exception.
Un problème majeur réside dans les exigences de vivacité (mise en réseau). Dans l’implémentation actuelle, le serveur web payjoin du destinataire doit être assuré financièrement lors de la construction de la transaction, car l’expéditeur et le destinataire négocient la transaction finale (qui est programmée, bien sûr). Cela peut limiter l’adoption des serveurs marchands ainsi que des nœuds Lightning, qui sont les seules personnes qui ont une incitation à rester en ligne. Du point de vue de l’utilisateur, il serait encore mieux que la transaction puisse être envoyée à tout moment, que le serveur du destinataire soit en ligne ou non.
Une autre faiblesse moins probable mais plus dangereuse est que si un serveur payjoin (c’est-à-dire le serveur du destinataire) se trouve sur un serveur non sécurisé, la sortie du destinataire pourrait être altérée pendant le fonctionnement (avant d’être retransmise à l’expéditeur), entraînant le vol de fonds appartenant au destinataire.
Cependant, comme nous le dirons plus loin, des solutions ont été proposées pour résoudre ces deux problèmes.
Enfin, une autre faiblesse du protocole PayJoin est qu’il se heurte à un obstacle à l’adoption, car les portefeuilles doivent faire des efforts de développement pour l’intégrer. Un défi particulier est que l’interface utilisateur idéale devrait être payjoin par défaut. Le portefeuille de l’expéditeur et le portefeuille du destinataire tenteront de payer directement, sans avoir à être ouverts par l’utilisateur dans les paramètres de confidentialité. La meilleure protection de la vie privée est d’implémenter la confidentialité par défaut, car si vous demandez aux utilisateurs d’agir activement, ils risquent d’être découragés. Ainsi, pour que payjoin soit adopté par l’utilisateur moyen, il doit y avoir une expérience fluide qu’il n’a pas à se battre pour comprendre. Le portefeuille devrait être activé par défaut. Gardez à l’esprit que le protocole dispose déjà d’une réponse intégrée aux échecs de payjoin : il revient à une transaction normale sans intervention manuelle de l’utilisateur.
Pas de payjoin côté serveur requis
Dan Gould a soumis un projet de BIP pour la version 2 de payjoins, permettant d’effectuer des payjoins dans des scénarios asynchrones et sans serveur. Ce payjoin sans serveur résoudra le problème de l’obligation pour le destinataire d’être en ligne lors de la réception du paiement, ainsi que les problèmes de sécurité côté serveur associés. Étant donné que le serveur destinataire de payjoin toujours actif peut être le plus grand obstacle à l’adoption de payjoin par les utilisateurs, la mise en œuvre de ce BIP pourrait apporter des avantages significatifs à l’adoption de payjoin ainsi qu’à la confidentialité passive de Bitcoin.
L’état d’avancement de l’adoption de Payjoin
À la fin de l’année 2023, l’adoption de PayJoin est encore relativement faible, mais elle n’a cessé de croître depuis sa création en 2018. Étant donné que payjoin est actuellement disponible et ne nécessite aucun changement de consensus Bitcoin, le seul obstacle est d’écrire un logiciel de portefeuille qui le prend en charge, et les outils pour aider les développeurs s’améliorent chaque jour. Le kit de développement Payjoin (PDK) est une nouvelle implémentation de payjoin avec des modules que les portefeuilles peuvent utiliser pour intégrer payjoins. Il s’agit même d’un outil payjoin-cli que vous pouvez utiliser en ligne de commande pour créer un payjoin. Cette bibliothèque est écrite en Rust, mais des liaisons qui permettent à d’autres langages de l’utiliser sont en cours de développement.
Prise en charge du portefeuille
BTCPayServer et JoinMarket prennent déjà en charge l’envoi et la réception de payjoins, mais pas par défaut. BlueWallet, Sparrow, Wasabi et BitMask prennent en charge l’envoi. Une poignée d’autres portefeuilles le prennent en charge via un plugin, y compris Bitcoin Core. Il y a aussi des RP actifs qui essaient d’intégrer payjoin dans Mutiny Wallet. L’état actuel de l’adoption est répertorié ici.
Payjoin et l’avenir du Bitcoin
Adam Gibson a déjà déclaré que même si seulement 5 % des transactions on-chain sont construites à l’aide de payjoin, cela peut avoir un impact important sur la confidentialité de Bitcoin. Il suffit de franchir un seuil suffisant pour qu’une société d’analyse puisse supposer en toute confiance qu’elle peut interpréter correctement la transaction. Une fois que leurs méthodes d’espionnage seront brisées, les restrictions imprudentes, arbitraires et malveillantes imposées par ceux qui ne comprennent pas les avantages de la vie privée de Bitcoin et n’ont pas l’intention de protéger nos droits deviendront inutiles.
Et comme nous l’avons vu, en raison des nombreuses possibilités qu’apportera PayJoin, il ne s’agit pas seulement d’une solution de confidentialité, mais aussi d’un protocole de transaction évolutif et collaboratif qui permet des utilisations intéressantes telles que des économies de frais, plusieurs canaux Lightning pour une seule transaction, etc. Les avantages qu’il peut apporter au bitcoin sont illimités, et ils peuvent être réalisés maintenant sans changer le bitcoin lui-même.
Alors qu’est-ce qu’on attend ?
Oui
Si vous souhaitez soutenir ou contribuer à PayJoin, rejoignez le Discord, faites-nous un don ou apprenez-en plus sur payjoin.org.
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
Payjoin avec un meilleur Bitcoin
Auteur : Brandon Lucas, Source : Étude BTC
Payjoin est un protocole qui résout de nombreux problèmes d’une pierre deux coups en utilisant une astuce simple et intelligente pour construire des transactions Bitcoin. Il est conçu pour résoudre le plus grand problème de confidentialité de Bitcoin, mais il peut également aider à résoudre les problèmes de mise à l’échelle, et donc aider les gens à économiser sur les frais. Il est particulièrement compatible avec les nœuds du réseau Lightning, car sa conception actuelle exige que le destinataire de la transaction soit en ligne, ce qui signifie que le destinataire doit être en ligne (tout comme un nœud Lightning) lors de la réception du paiement. À l’avenir, même cette exigence sera éliminée afin qu’elle puisse être utilisée hors ligne. Il est facile à intégrer dans un logiciel de portefeuille, et il peut ouvrir de nombreux canaux Lightning à la fois tout en effectuant des paiements, et il est passif, de sorte que vous pouvez profiter des avantages sans même le savoir. Les avantages de Payjoin en matière de confidentialité sont superposés, de sorte que même si seul un petit pourcentage de personnes l’utilisent, tout le monde peut bénéficier des avantages en matière de confidentialité. Et, peut-être le meilleur de tous, PayJoin ne nécessite pas de hard fork ou de soft fork. Il peut être utilisé avec Bitcoin, et l’a été, et est en fait disponible depuis la première version du logiciel Bitcoin.
Payjoin est un dérivé de Coinjoin. Coinjoin est plus ancien et nécessite également plus d’interaction en ligne, ce qui signifie que les utilisateurs doivent s’engager fortement pour l’utiliser, ce qui ne manquera pas de réduire la convivialité et de décourager l’adoption. Cependant, malgré cela, l’adoption de CoinJoin à ce jour a été beaucoup plus élevée que celle de PayJoin, bien que les avantages et la facilité d’utilisation de PayJoin soient plus évidents. Pour les développeurs, la direction complexe et peu claire l’empêche d’être adoptée par les logiciels de portefeuille.
Payjoin existe depuis de nombreuses années et, en tenant compte :
Pourquoi payjoin tarde-t-il à être adopté à grande échelle ?
En particulier, pourquoi le protocole Coinjoin, qui nécessite plus d’interaction, est plus difficile à utiliser et plus coûteux, mais a plutôt plus d’adoption ?
Dans cet article, nous examinerons les attaques actuelles contre la vie privée de Bitcoin, l’histoire de PayJoin du point de vue de la confidentialité, le fonctionnement de PayJoin et les raisons pour lesquelles il peut offrir tant d’avantages sans changer Bitcoin, et enfin, l’adoption actuelle. Si payjoin peut grandement améliorer la confidentialité, l’évolutivité et aider à économiser sur les frais, alors le petit effort du portefeuille pour l’intégrer en vaudra la peine.
Pourquoi la confidentialité est importante pour Bitcoin
Avant de discuter de l’importance de payjoin, nous devons comprendre l’importance de la confidentialité. Si vous n’avez plus besoin de moi pour vous convaincre, vous pouvez passer directement à la section suivante pour en savoir plus sur l’histoire et le fonctionnement de Pyajoin.
Dans les démocraties occidentales, l’importance de la vie privée est indescriptible, car ses avantages semblent encore invisibles pour les gens. Il est difficile d’expliquer de manière convaincante pourquoi la protection de la vie privée est importante (surtout face à des coûts plus élevés ou à des inconvénients plus importants), s’ils ne ressentent jamais les conséquences néfastes d’une trop grande quantité d’informations à leur sujet, ou parce que cela oblige les gens à réfléchir aux conséquences à long terme de ces intrusions.
Bien sûr, la vie privée semble être quelque chose dont de plus en plus de gens se soucient (en théorie), mais ils l’abordent généralement rarement activement, avec des barrières de déclenchement très faibles et aucun compromis sur la commodité. Par conséquent, les technologies qui veulent protéger la vie privée des gens doivent être conçues pour être aussi conviviales et pratiques que possible.
Homogénéité
La confidentialité n’est pas le seul problème que payjoin peut aider à résoudre, mais il a été créé pour le résoudre. Les gens se plaignent depuis longtemps du manque de confidentialité inhérent à Bitcoin, et la communauté Bitcoin prend ce problème très au sérieux. Bitcoin est conçu pour faciliter les transactions directes en tête-à-tête et résiste à la censure. Cependant, parce qu’il permet de retracer les paiements futurs, il peut conduire à une discrimination dès lors qu’une certaine somme d’argent est liée à une identité. Cela détruit l’homogénéité – le degré auquel certaines pièces d’une même monnaie sont indiscernables d’autres dans la même quantité – et l’homogénéité est l’attribut principal de la bonne monnaie.
Si les acheteurs peuvent être suivis, non seulement les pièces qui sont actuellement détenues par des personnes illégales seront rejetées, mais les portefeuilles qui étaient utilisés à des fins illégales pourraient également être signalés puis rejetés par les commerçants, que le détenteur actuel les ait acquis ou non par des moyens parfaitement légitimes. Imaginez que vous ne puissiez pas utiliser l’argent que vous avez pour acheter du lait parce qu’il a été utilisé par quelqu’un pour acheter de la drogue, et qu’ils disent : « Votre argent n’est pas propre », est-ce juste pour vous ? Devriez-vous être puni pour le péché de quelqu’un d’autre ? Que feriez-vous avec les pièces ? Vous auriez l’impression que l’argent ne vaut rien parce que le détenir ne ferait que nuire à votre pouvoir d’achat. Et cela n’a aucun sens qu’une partie des pièces (« argent propre ») ait plus de valeur qu’une autre. Un dollar doit être égal à un autre, peu importe ce qu’il est, sinon la capacité d’une telle pièce à transférer de la valeur sera altérée.
Confusion criminelle
Il y a souvent des dénigrements de Bitcoin et de la vie privée qui disent que seuls les criminels ont besoin de vie privée. C’est un peu comme « si tu ne fais pas quelque chose de mal, prends-le et tu n’as rien à cacher ». C’est facile à réfuter :
En plus de cette déclaration scandaleuse simpliste et évidente, en réalité, les délinquants, contrairement à la grande majorité des citoyens respectueux des lois, sont prêts à accepter un prix élevé pour leur vie privée, de sorte que les mesures qui compromettent la vie privée fondamentale sont beaucoup plus préjudiciables aux gens ordinaires qu’aux auteurs. Même si le gouvernement ne fait pas un mauvais travail en utilisant des mesures restrictives de la vie privée pour attraper les criminels, mais qu’il « choisit » et espionne sélectivement les citoyens, le résultat sera le même. Si un citoyen dit quelque chose que les gens au pouvoir n’aiment pas (et les choses que les gens au pouvoir n’aiment pas peuvent être les mêmes tous les jours), alors l’AT sera sélectivement arrêté et blessé.
Enfin, le désir de protection de la vie privée n’est pas simplement la crainte que le gouvernement outrepasse ses pouvoirs. Il a également des préoccupations pratiques, de sécurité et d’honneur. Si quelqu’un peut savoir combien d’argent vous avez, où vous vivez, à quel point est-il difficile de voler vos affaires ? Pensez au nombre d’endroits sur Internet où vous devez entrer votre adresse, vos informations de paiement, vos photos, etc. Faites-vous confiance à tous ceux qui gèrent ces sites pour assurer la sécurité de vos informations personnelles ? Vous ne devriez pas leur faire confiance, car même les meilleurs systèmes peuvent tomber en panne et les criminels seront prêts à payer de grosses sommes d’argent aux pirates pour faire exploser les systèmes et voler ces informations précieuses.
Vie privée et démocratie
Dans tout État totalitaire, la condition préalable pour contrôler les citoyens est de connaître la parole, les canaux d’information et les activités financières des citoyens. Sans cette compréhension, il n’y a aucun moyen de savoir ce qu’il faut attaquer ou ce qu’il faut arrêter, car il n’y a aucun moyen de manipuler le récit et de renforcer davantage le contrôle. Si le gouvernement n’a pas un accès fiable à cette information, il ne peut pas cibler un citoyen autant qu’il le voudrait. Dans les sociétés totalitaires du passé, telles que l’Union soviétique et l’Allemagne nazie, ils corrompaient la vie privée des gens et se méfiaient des relations au sein de leurs familles en leur lavant le cerveau pour qu’ils dénoncent les objections exprimées par les membres de leur famille dans des conversations privées. Lorsque les mêmes mesures de corruption de la vie privée se produisent pour l’argent, c’est encore plus terrifiant que la parole. Couper le financement est un moyen très efficace de lutter contre la dissidence politique.
La vie privée de Bitcoin est vulnérable
C’est au nom de la lutte contre la criminalité (l’attaque terroriste du Hamas) que de nouvelles mesures réglementaires sont spéculées pour caractériser les méthodes de protection de la vie privée dans Bitcoin comme illégales.
Le 10 octobre 2023, le Wall Street Journal a publié un article rapportant que le Hamas avait reçu 130 millions de dollars de financement par le biais de la crypto-monnaie. Une semaine plus tard, la sénatrice Elizabeth Warren a écrit une lettre ouverte au président Biden l’exhortant à aborder la question de la façon dont son exécutif réagit à « l’utilisation terroriste de la crypto-monnaie » d’ici le 31 octobre, citant le Wall Street Journal comme preuve du besoin urgent d’une telle réglementation. La lettre a reçu les signatures de 29 des 100 membres du Sénat, ainsi que de 76 membres de la Chambre des représentants. Curieusement, le 19 octobre, deux jours après l’envoi de la lettre, le Financial Crimes Enforcement Network (FCE) a publié une proposition visant à réglementer l’obscurcissement des crypto-monnaies pour les risques de blanchiment d’argent. La proposition énumère les méthodes utilisées pour brouiller le flux des transactions :
Cette définition inclut à la fois coinjoin et payjoin, bien que la description de « l’utilisation de code algorithmique » soit suffisamment large pour englober des transactions arbitraires, et permet donc une censure arbitraire.
Mais l’article du Wall Street Journal, qui a fourni une perspective sur la lettre ouverte et a tenté de défendre une telle réglementation, a très mal interprété les données – le montant réel qui était vraiment pertinent pour le Hamas n’était que de 450 000 dollars. Les crypto-monnaies n’ont jamais été la principale source de financement du Hamas. Le Hamas lui-même a clairement indiqué qu’il ne voulait pas recevoir de fonds par le biais du bitcoin, qui est traçable.
Ironiquement, les mesures réglementaires qui sont maintenant proposées, soi-disant pour faire face aux groupes terroristes, ont le moins d’impact sur les groupes terroristes, et le plus pour les gens ordinaires qui veulent utiliser Bitcoin et d’autres crypto-monnaies.
Il ne fait aucun doute que la bataille pour les droits à la vie privée de Bitcoin est déjà en cours aux États-Unis, et il est prévisible qu’elle le sera sous couvert de contrer des raisons de sécurité nationale étrangère. Plus important encore, à partir de maintenant, comprenez les technologies de préservation de la vie privée sur Bitcoin et commencez à les utiliser pour lutter contre les tentatives de les affaiblir.
1. La forme d’une transaction Bitcoin
Afin de comprendre ce que fait payjoin et comment il fonctionne, il est nécessaire de comprendre à quoi ressemblent les transactions Bitcoin. Chaque bitcoin est lié à des entrées et des sorties. La sortie définit la clé publique, ou « adresse », à laquelle ces bitcoins sont envoyés. L’entrée définit la « source » des fonds de la transaction, c’est-à-dire la sortie précédente utilisée pour créer la transaction (et sa nouvelle sortie). Une bonne analogie est que nous utilisons différentes coupures d’argent liquide pour payer. Supposons que vous vouliez payer 25 $ pour un dîner au restaurant et 5 $ pour le serveur, pour un total de 30 $ (c’est le résultat de votre transaction, deux « portions » d’argent différentes pour deux personnes différentes – le restaurant et le serveur).
Alors, comment payez-vous ? Supposons que vous ayez tant de notes en main (c’est-à-dire votre entrée) :
Ainsi, lors de la construction de cette offre, vous pouvez utiliser 1 billet de 20 $ et 2 billets de 5 $, dont l’un est de 5 $ et l’autre est donné au serveur seul :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-4a2caad01b-dd1a6f-cd5cc0.webp)
Notez un aspect important, et qu’il n’est pas approprié pour nous de faire l’analogie de l’argent : 20 $ et 5 $ ici vont fusionner en un seul morceau. C’est plus comme si vous fondiez deux pièces d’or en une plus grande afin de pouvoir payer le montant requis plutôt que de donner plusieurs pépites d’or. Bitcoin vous permet de diviser et de fusionner les entrées pour produire la sortie que nous voulons.
Vous pouvez également utiliser 2 billets de 10 $ et 2 billets de 5 $, comme ceci :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-0a70c8526f-dd1a6f-cd5cc0.webp)
Ou même utiliser 6 feuilles pour 5 $ :
! [Paiement du restaurant] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-441fc7aa70-dd1a6f-cd5cc0.webp)
Jusqu’à ce que nous dépensions notre argent, ces « billets » individuels de Bitcoin sont appelés « sorties de transaction non dépensées (UTXO) ». Le nom semble étrange, mais si vous prenez le temps d’y réfléchir, vous vous rendrez compte qu’il est assez précis – ce sont les « résultats » (sorties) de certaines transactions, et ils n’ont pas encore été dépensés par une autre transaction. Une sortie de transaction qui n’a pas encore été dépensée est la sortie que vous pouvez dépenser. Donc, en fait, les UTXO sont comme du papier-monnaie dans votre portefeuille. Une fois qu’ils ont été dépensés, ils deviennent l’entrée d’une transaction, puis la sortie d’une autre transaction (de l’argent dans le portefeuille de quelqu’un d’autre), et vous ne pouvez plus le dépenser, cependant, l’enregistrement du billet que vous avez dépensé reste sur la blockchain pour toujours.
Contrairement à l’argent liquide, les transactions Bitcoin nécessitent l’autorisation de l’expéditeur pour être valides. Ceci est réalisé grâce à la signature numérique de l’expéditeur, qui sert également de preuve qu’il avait l’intention de dépenser les fonds. Une signature valide (c’est-à-dire une signature qui correspond à l’adresse de l’UTXO) doit être représentée dans l’entrée de transaction qui utilise l’UTXO. La présence de la signature « déverrouille » cet UTXO et indique que le propriétaire de cet UTXO a l’intention de le dépenser pour une telle transaction.
L’image suivante montre une transaction réelle qui a été confirmée par la blockchain 1 fois au moment de la rédaction de cet article :
! [Exemple d’une transaction réelle avec 1 entrée et trois sorties, l’une étant une redevance] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-c006e2488a-dd1a6f-cd5cc0.webp)
Comme vous pouvez le voir, la transaction ci-dessus a pris 1 entrée et a créé 2 sorties, l’une représentant le paiement réel et l’autre étant presque certainement renvoyée au dépensier sous forme de monnaie. La différence entre l’entrée et la sortie est la redevance, qui revient au mineur qui a miné le bloc qui a confirmé la transaction en premier.
Ce « mode UTXO » est très puissant. Parce que chaque transaction a une entrée et une sortie, et parce que la sortie d’une transaction devient l’entrée d’une autre transaction ultérieure, nous nous retrouvons avec une chaîne de transactions qui peut suivre le transfert de propriété de Bitcoin. Parce que l’offre de Bitcoin est limitée, et en raison de ce fait qu’il a une caractéristique clé « non inflationniste », il est important de pouvoir vérifier combien de Bitcoin est en circulation (ou « non dépensé ») à tout moment, et le modèle UTXO peut être utilisé dans l’oc.
C’est également la source des préoccupations de Bitcoin en matière de confidentialité. Chaque transaction a son propre historique. Tous les bitcoins qui vous sont remis, et où vous les envoyez, sont faciles à suivre. L’ensemble du système est explicitement conçu pour prendre en charge cette fonctionnalité, bien qu’il n’ait pas l’intention de suivre les individus. Dans ce système, votre seule véritable monnaie d’échange est de ne jamais associer votre véritable identité à votre clé publique, ce qui est très difficile à faire à l’ère de la surveillance de masse.
Les origines historiques de Payjoin
L’erreur mineure de Satoshi Nakamoto
Lorsque Satoshi Nakamoto a publié le livre blanc sur Bitcoin en 2008, il s’est rendu compte que les préoccupations en matière de protection de la vie privée provenaient de l’exigence que chaque transaction soit rendue publique, ce qui entrait en conflit avec l’exigence de la garder privée.
Il a fait deux suggestions pour éviter d’associer les identités réelles aux transactions :
Ce sont tous de bons conseils, mais pour 1) il est difficile de garantir que notre identité réelle est complètement isolée de nos paiements, à moins d’être extrêmement prudent lorsque nous effectuons des paiements en ligne ; Pour 2), même si la clé publique n’est pas réutilisée, il n’est pas difficile pour le tracker d’identifier quelles clés publiques appartiennent à quelle personne, tant que la sortie générée par plusieurs clés est dépensée ensemble dans les paiements ultérieurs. Ces suggestions, même lorsqu’elles sont mises ensemble, sont des solutions difficiles à faire et imparfaites.
Après ces suggestions, Satoshi Nakamoto a commis une autre petite erreur en exagérant la faiblesse de son système :
L’hypothèse de Satoshi, et tous les exemples que nous avons montrés jusqu’à présent, impliquent que toutes les entrées d’une transaction appartiennent au même propriétaire. En d’autres termes, tous les « billets de banque » dépensés pour une transaction proviennent de votre portefeuille, ce qui est une hypothèse raisonnable, mais pas nécessairement vraie. C’est ce qu’on appelle « entrer dans l’identité des indices de propriété ». C’est presque vrai pour n’importe quelle transaction, ce qui est également la base de la surveillance de l’activité on-chain.
Coinjoin (en anglais seulement)
Au début de l’année 2013, Gregory Maxwell a joué à un jeu intéressant sur les forums bitcointalk.org où il a proposé son propre UTXO (d’une valeur de 1 BTC) et son adresse, et a demandé si quelqu’un pouvait créer une nouvelle transaction en utilisant cet UTXO comme entrée. Si le créateur d’une telle transaction lui envoie moins de 1 BTC, cela lui prend de l’argent, et s’il lui envoie plus de 1 BTC, cela lui donne de l’argent supplémentaire, mais si le montant qui lui est envoyé n’est ni supérieur ni inférieur à 1 BTC, alors cela équivaut à utiliser ses fonds (et son adresse) pour plus de confidentialité, car l’entrée ressemble comme s’il s’agissait de l’UTXO du créateur de la transaction, mais ce n’est pas le cas. Lorsque l’une des sorties de Maxwell est dépensée et renvoyée à son adresse, il fournit un autre UTXO afin que les autres puissent continuer le jeu. Du point de vue d’une société d’analyse de l’activité blockchain, cela leur ferait penser que Maxwell a l’air riche ! Parce que ses adresses sont publiques et que de nombreux UTXO sont utilisés pour construire des transactions qui contiennent ces adresses, tout analyste qui analyse ces transactions et suppose que toutes les entrées des transactions proviennent de la même personne supposera que Maxwell a beaucoup, beaucoup de bitcoins (plus qu’il n’en possède réellement), d’où le titre de son post : « Je suis vraiment riche ! »
Bien sûr, le jeu n’est pas privé, car Maxwell a posté son adresse sur un forum public, mais il offre un concept très important qui voit le jour. Comme le dit Maxwell :
Dans un article de suivi la même année, Mavwell a officiellement distillé l’idée dans un concept qu’il a appelé « Coinjoin » :
Cela signifie qu’en effet, un nombre illimité de personnes peuvent collaborer pour créer des transactions, chacune fournissant et signant sa propre contribution, sans avoir à s’inquiéter du vol de fonds par quelqu’un d’autre.
Ensuite, il a introduit un autre avantage des transactions coinjoin, à savoir que les transactions peuvent être traitées par lots, ce qui permet d’économiser des frais : vous pouvez trouver d’autres personnes qui souhaitent également initier des paiements lorsque vous le souhaitez, et créer des transactions ensemble :
En fin de compte, conjoin est un protocole où suffisamment de personnes l’utilisent, tout le monde y gagne et tout le monde en tire des avantages en matière de confidentialité :
Pour donner un exemple concret, disons que nous trouvons 3 personnes qui souhaitent participer à un coinjoin. Ils ont convenu à l’avance de mélanger 0,1 bitcoin, et ils pourraient obtenir l’avantage de la confidentialité en produisant 3 sorties égales, ce qui rend impossible pour les autres de dire d’où vient chacune des trois adresses. Pour l’analyste, la relation entre l’adresse de changement et l’entrée est encore très claire, mais il n’est pas clair à qui appartient la sortie de ces trois montants égaux.
! [Exemple de coinjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-2603112d99-dd1a6f-cd5cc0.webp)
Lorsqu’il n’y a que 3 participants, l’avantage en matière de confidentialité n’est pas nécessairement significatif, d’autant plus que d’autres participants peuvent se désanonymiser (corréler à leur identité réelle) lors de transactions ultérieures, mais cela peut être amélioré par plusieurs tours de coinjoin ou en utilisant un ensemble d’anonymat plus grand.
Pour résumer, coinjoin est une transaction créée à l’aide d’entrées et de sorties de plusieurs parties, de sorte qu’il est difficile pour les autres de déterminer quelle sortie appartient à qui.
Pour en savoir plus sur la création d’une transaction Coinjoin et sur les outils disponibles, consultez ce guide.
Coinjoin est l’une des solutions de confidentialité Bitcoin les plus efficaces et les plus largement adoptées, mais elle présente également des inconvénients importants :
De toute évidence, en raison de ces limitations, CoinJoin n’est pas la solution ultime pour la confidentialité de Bitcoin, en particulier pour les utilisateurs plus passifs qui souhaitent un système de confidentialité par défaut.
Quelques années plus tard, un meilleur résultat a émergé, qui n’obligeait pas les parties impliquées dans la transaction à prendre des mesures supplémentaires, qui était simple, qui ne nécessitait pas de coordinateur centralisé ou de place de marché (et qui permettait donc d’économiser du temps et de l’argent), et qui ressemblait à une transaction normale : Payjoin.
Payjoin est composé d’une série d’innovations antérieures, jetons un coup d’œil.
PIB-21
Une amélioration importante de l’expérience utilisateur (UX) pour les débuts de Bitcoin a été BIP-21. « BIP » est l’acronyme de « Bitcoin Upgrade Proposal » et contient un ensemble de critères qui nécessitent des modifications consensuelles du protocole Bitcoin (par exemple, des hard forks ou des soft forks) ou fournissent des informations et des méthodes utiles pour interagir avec Bitcoin.
BIP-21 est une norme qui définit l’utilisation des URI et simplifie le processus d’interaction avec Bitcoin en cliquant sur un lien ou en scannant un code QR pour initier un paiement. Un petit nombre de paramètres de requête, tels que le montant, la balise et le message, sont également définis, de sorte que le logiciel client peut facilement les récupérer et les analyser, offrant ainsi une meilleure expérience utilisateur. Voici un exemple d’URI BIP-21 avec quelques paramètres :
! [BIP-21 Simple] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-16bce7b3b8-dd1a6f-cd5cc0.webp)
Il est important de noter que cette norme est extensible, que vous pouvez créer des paramètres de requête personnalisés et que de nouvelles normes peuvent être développées par-dessus. Par exemple, en plus de votre adresse Bitcoin, vous pouvez également ajouter un paramètre personnalisé appelé lightning qui vous permet de recevoir de l’argent sur le Lightning Network, afin que les utilisateurs puissent vous payer dans les deux cas :
! [BIP-21 avec Lightning] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-568740308b-dd1a6f-cd5cc0.webp)
Ce BIP puissant et flexible s’est avéré très utile lors de l’intégration des concepts de coinjoin.
Pay-to-Endpoint (P2EP)
Le premier document que j’ai trouvé mentionnant le concept de payjoin provenait de Blocksteam, publié en août 2018, citant un atelier qui a donné naissance au concept. L’article appelle l’idée finale « Pay-to-Endpoint » parce qu’elle combine le concept de coinjoin avec BIP-21, permettant à l’expéditeur et au destinataire d’une transaction de travailler ensemble pour fournir des informations à la transaction via un point de terminaison réseau conforme à la norme BIP-21 fourni par le destinataire. Le diagramme suivant est un exemple de ce à quoi ressemble un point de terminaison fourni par le récepteur :
! [Exemple P2EP] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-abd5791ea9-dd1a6f-cd5cc0.webp)
Il convient de noter en particulier le paramètre p2ep, qui est un point de terminaison réseau (dans ce cas, une adresse .onion, mais il peut également s’agir d’une simple adresse http:// ou de tout autre point de terminaison réseau compatible) qui peut envoyer un signal au portefeuille du destinataire indiquant que l’expéditeur est prêt à tenter un paiement P2EP. Si le paiement P2EP échoue, le portefeuille retournera à l’expéditeur et demandera un paiement normal à une certaine adresse, et n’utilisera que l’entrée de l’expéditeur.
Étant donné que la contribution d’entrée est coordonnée par P2EP et ne produit pas une sortie de dénomination égale « corrompue » comme coinjoin, les transactions payjoin sont plus difficiles à identifier.
L’idée est un grand pas dans la bonne direction, mais elle n’en est encore qu’à ses balbutiements, elle n’est pas finalisée et une complexité supplémentaire doit être supprimée.
Hors sujet : le Pay-to-IP de Satoshi Nakamoto
Une variante de cette idée, appelée « Pay-to-IP », a en fait été mise en œuvre par Satoshi Nakamoto dans la première version du logiciel Bitcoin. Cependant, cette approche pose un dilemme important en matière de protection de la vie privée, elle a donc été abandonnée dans les versions ultérieures du logiciel Bitcoin.
Bustapay
Plus tard dans le même mois, Ryan Haver a proposé une version améliorée de P2EP sur la liste de diffusion des développeurs Bitcoin et a officialisé un BIP appelé « Bustapay ». Cette version simplifie le protocole P2EP d’origine, et par souci de simplicité et supprime une partie de la complexité, il pense que la simplicité est essentielle pour un accès omniprésent.
La proposition de Bustapay comporte encore des problèmes majeurs qui doivent être affinés, et le protocole n’est pas aussi complet qu’il devrait l’être. Mais c’est un autre pas dans la bonne direction, et l’accent mis sur la simplicité pour l’intégration des portefeuilles est une étape cruciale, en particulier pour l’écosystème lent et prudent des développeurs de Bitcoin. Bien que Bustapay n’ait jamais été promu, c’était le dernier précurseur de la proposition payjoin d’aujourd’hui – nous sommes prêts pour l’intégration du portefeuille, des changements positifs dans les transactions on-chain.
Offre Payjoin
Enfin, à la mi-2019, les concepts de Bustapay et de P2EP ont été affinés et améliorés par Nicolas Forier (fondateur de BTCPayServer) et Kukks pour former BIP-78, intitulé « A Simple Payjoin Proposal ».
Si l’on comprend le contexte du protocole qui a donné naissance à payjoin, le sens et l’objectif du résumé au début de cette proposition sont clairs :
La proposition fournit des informations beaucoup plus rigoureuses que les méthodes précédentes, indiquant comment construire une transaction coinjoin entre un expéditeur et un destinataire, brisant le fil de l’identité de propriété des entrées de transaction, et est simple, flexible et peu coûteuse.
Fonctionnement de Payjoin
Supposons qu’Alice veuille payer Bob 1,1 BTC, et qu’une société de surveillance de la blockchain voit une transaction comme celle-ci :
! [Exemple en supposant l’heuristique de propriété des entrées communes] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-ca34b5b6d3-dd1a6f-cd5cc0.webp)
Ils pourraient penser qu’Alice a payé 0,5 BTC à Bob et qu’elle s’est ensuite transféré le reste de l’argent en guise de monnaie, et c’est tout :
! [Exemple qui suppose que l’heuristique de propriété des entrées communes a été utilisée] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-28843c7745-dd1a6f-cd5cc0.webp)
Et la plupart du temps, il n’y a rien de mal à le penser ! Après tout, la monnaie est généralement en grosses coupures, et 0,5 est plutôt un « entier » et est plus susceptible d’être utilisé dans les paiements (par rapport à 1,1).
Ils peuvent aussi se demander pourquoi Alice a utilisé une entrée qui n’était pas nécessaire (0.8 et 0.3 sont redondants), mais ils ne peuvent jamais être sûrs qu’il ne s’agit pas d’une transaction ordinaire, et ils ne peuvent pas conclure pourquoi une entrée supplémentaire a été utilisée - peut-être qu’Alice est juste en train d’organiser son portefeuille afin qu’elle puisse le gérer plus tard. C’est peut-être un payjoin, mais même si vous le pensez, quel UTXO est celui d’Alice et lequel est celui de Bob ? Il n’y a aucun moyen de le savoir. Étant donné que la plupart des transactions ne sont pas des payjoins, ils sont plus susceptibles de penser à tort qu’il ne s’agit pas d’une transaction payjoin.
Cependant, Alice est intelligente et veut protéger sa vie privée, et elle connaît payjoin, alors elle demande à Bob de fournir également une entrée pour la transaction. Bob a accepté, il a donc créé une transaction qui a coûté un (ou plusieurs) UTXO en entrée, et l’a renvoyée à Alice. Si l’accord n’a pas de problème avec Alice, elle le diffusera sur le réseau. L’accord se déroule en fait comme suit :
! [Exemple de transaction payjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-ba3b4aec83-dd1a6f-cd5cc0.webp)
Tant que les observateurs de la chaîne supposent que toutes les entrées proviennent d’Alice (comme dans le premier exemple, et c’est le cas maintenant), ils se tromperont complètement sur les entrées qui appartiennent à Alice et Bob !
Il est intéressant de noter qu’Alice et Bob offrent tous deux des avantages en matière de protection de la vie privée. Parce que, contrairement à CoinJoin, cette transaction ressemble davantage à une transaction normale, et tant qu’un nombre suffisant de personnes utilisent PayJoin, l’observateur ne peut pas déterminer quelles transactions sont normales. En déjouant les observateurs, Alice et Bob rendent également chaque transaction un peu suspecte. Tant qu’un nombre suffisant de personnes le feront, toutes les transactions deviendront suspectes. La confidentialité on-chain est souvent un jeu de chiffres, et plus il y a de personnes impliquées, meilleure sera la confidentialité pour tout le monde.
Dans ce cas-ci, Alice et Bob ont collaboré pour créer une transaction à l’aide de leurs entrées respectives afin de protéger la vie privée. Bien sûr, l’ensemble du processus est étrangement automatisé (et en réalité est automatisé).
Dans le BIP-78, l’ensemble du processus est défini de manière plus formelle comme suit :
! [Exemple PJ] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-d33ce79c42-dd1a6f-cd5cc0.webp) 2. L’expéditeur crée un PSBT formé et diffusable qui est envoyé au point de terminaison du destinataire en utilisant uniquement ses propres entrées qui sont entièrement suffisantes pour le paiement. Ce PSBT est appelé le « PSBT initial ». 3. Le destinataire modifie le PSBT pour inclure sa propre entrée, signe sa propre entrée et renvoie le PSBT modifié à l’expéditeur. Le destinataire ne modifie aucune des entrées ou sorties de l’expéditeur. Ce PSBT est appelé une « Offre Payjoin ». 4. L’expéditeur valide l’offre, puis re-signe sa saisie pour finaliser l’ensemble de la transaction et enfin la diffuser sur le réseau.
Quel que soit l’endroit où l’erreur est commise dans le processus, par exemple si le destinataire ne dispose pas d’un UTXO pouvant être utilisé pour créer la proposition Payjoin, l’AT n’a besoin que de diffuser le PSBT initial, qui est une transaction normale. Bien que toutes les entrées de cette transaction proviennent du même propriétaire et qu’il n’y ait qu’un nombre suffisant de personnes qui utilisent payjoins, vous ne pouvez pas conclure que les deux parties ne payent pas, et l’observateur devra supposer que tout le monde paie, puis trouver un autre moyen de suivre le paiement.
Les nombreux avantages de Payjoin
Décomposez plus d’indices de surveillance
L’hypothèse de l’identité de propriété n’est pas la seule qui peut être brisée par payjoin qui affecte la vie privée. Le BIP-78 indique deux autres indices qui peuvent être utilisés pour identifier le propriétaire :
Dans Bitcoin, la clé publique du script est le « script de verrouillage » qui spécifie les conditions dans lesquelles une somme de bitcoins peut être dépensée. On l’appelle une « clé publique de script » car la condition de verrouillage nécessite une signature valide qui correspond à une clé publique (adresse) pour la déverrouiller. En d’autres termes, seule la personne qui contrôle la clé privée de la clé publique associée de cet UTXO peut la déverrouiller.
Il existe plusieurs types de clés publiques de script, telles que : P2PKH, P2WPKH, P2SH, P2TR. En général, les portefeuilles utilisent la même clé publique de script pour toutes les transactions, de sorte que la sortie de modification (les fonds renvoyés à l’expéditeur par l’expéditeur à lui-même en plus des paiements et des frais) utilisera très probablement le même type de clé publique de script que l’entrée de l’expéditeur, et la sortie envoyée au destinataire est plus susceptible d’utiliser un type différent. Cela signifie que les UTXO qui utilisent le même type de script dans la même transaction peuvent être identifiés comme appartenant potentiellement à l’expéditeur, c’est-à-dire en supposant que la sortie envoyée au récepteur sera d’un type différent.
BIP-78 spécifie une méthode qui permet au destinataire d’utiliser uniquement le même type de clé publique de script que l’expéditeur, ce qui interrompt le thread ci-dessus qui pourrait exposer la sortie de paiement et la sortie de modification.
Normalement, s’il vous plaît entrejambe, payer un ami choisira toujours un entier, car ce sera beaucoup plus naturel. Si Bob facturait Alice (et qu’ils ne facturaient pas Bitcoin à un prix fiduciaire « plus proche d’un entier »), alors il facturerait très probablement un ensemble e comme 0,0001 au lieu d’un nombre non entier comme 0,00010231. Si l’une des sorties d’une transaction est un entier, il est probable qu’il s’agisse d’une sortie de paiement, et qu’une sortie non entière soit une sortie de modification (du moins pour l’instant).
Payjoin décrit également un moyen pour le destinataire de rompre ce thread en ajoutant une sortie entière supplémentaire lors de la construction d’une proposition Payjoin.
Les avantages asymétriques sont obtenus en unissant un groupe plus large
Comme mentionné précédemment, l’un des principaux inconvénients de coinjoin du point de vue de la confidentialité est que 1) les transactions coinjoin se distinguent facilement des transactions régulières, et 2) peu de gens font des coinjoins spécifiquement, ce qui n’est pas le cas avec les transactions régulières. Cela crée le problème de l’homogénéité de Bitcoin, car il est probable que certaines personnes penseront que l’argent monnayé est pollué, parce que c’est quelqu’un qui a cette idée ridicule que « la poursuite de la vie privée équivaut à la malveillance ». Bien sûr, si la majorité des transactions, ou même seulement un certain pourcentage de transactions, sont privées, alors les transactions visant à protéger la vie privée sont discrètes.
Payjoin ressemble à n’importe quelle autre transaction, elle n’a donc rien de remarquable. Les observateurs extérieurs n’ont même aucune raison d’examiner une telle transaction, car elle ne montre pas l’intention de confondre le paiement et de modifier les résultats.
Parce que cela ressemble à autre chose, même les avantages marginaux de l’adoption de payjoin signifient que la vie privée de tout le monde sera plus difficile à violer, car les prospects surveillés deviennent rapidement peu fiables. Adam Gibson (contributeur fondateur de JoinMarket et expert en matière de confidentialité des bitcoins) résume très bien la situation :
Finition UTXO
De toute évidence, PayJoin et ses pionniers s’engagent à répondre aux préoccupations en matière de protection de la vie privée. Mais il y a un bon côté à l’utilisation de payjoin, et BIP-78 le montre clairement : le rangement UTXO.
Satoshi Nakamoto a proposé d’utiliser une adresse de pourboire pour chaque transaction de réception, ce qui a eu pour conséquence que le portefeuille d’un utilisateur avait de nombreux UTXO à gérer. Lorsque ces UTXO sont utilisés comme entrées pour générer une nouvelle transaction (en supposant qu’il ne s’agisse pas d’une transaction coinjoin ou payjoin), une telle transaction coûte beaucoup de frais. Étant donné que les frais sont facturés en fonction du volume de la transaction (nombre d’octets) (correspondant à l’espace de bloc qui est une ressource rare), plus d’entrées correspondent à des transactions plus importantes et à plus de frais.
Il est important de noter que l’utilisation de payjoin pour le tri UTXO ne permet pas nécessairement d’économiser des frais, car chaque UTXO qui apparaît sur la chaîne devra toujours payer des frais. Cependant, il répartit ces frais sur une longue période et offre la possibilité de regrouper les UTXO au moment du paiement. Le traitement par lots rendra l’organisation des UTXO moins coûteuse (que si vous deviez initier une transaction spécifiquement à des fins de classement). Il facilite également la liaison des UTXO et prend moins de place sur votre disque dur. De plus, les portefeuilles peuvent mettre en place un moyen d’automatiser et de fluidifier l’organisation des UTXO en permettant aux destinataires de spécifier à l’avance quels UTXO ils souhaitent organiser à faible coût.
Lightning Network et Payjoin : un mariage parfait dans la nature
Utiliser Payjoin pour ouvrir le canal Lightning
Le Lightning Network (LN) est une solution de couche 2 construite sur Bitcoin qui place les transactions hors chaîne pour un règlement instantané et très faible des frais, augmentant ainsi considérablement le débit des transactions, la confidentialité et permettant à Bitcoin d’entrer dans de nouveaux cas d’utilisation (tels que les « micropaiements »). Il utilise un réseau de canaux de paiement entre les nœuds pour acheminer les paiements, en transférant les fonds de leur origine vers leurs destinations. Ces canaux exigent que chaque opérateur de nœud verrouille une certaine « liquidité » (bitcoins) avec ses contreparties de canal, qui peuvent ensuite circuler entre un nœud et ses contreparties de canal. La quantité de bitcoins que vous pouvez dépenser dans un canal est limitée par la quantité de liquidité qu’il y a de votre côté du canal.
Lorsqu’il s’agit de maintenir un nœud Lightning, la majeure partie de la complexité provient de l’ouverture de ces canaux et de la gestion de la liquidité de chaque canal. L’intégration de nouveaux utilisateurs est l’un des plus gros problèmes, car il y a tellement d’étapes à franchir. Supposons qu’Alice veuille ouvrir un canal avec Bob et qu’elle ait installé un nouveau nœud Lightning, mais qu’elle n’ait pas encore été financée. Ensuite, elle doit faire ce qui suit :
À tout le moins, Alice doit payer les frais deux fois et attendre environ 10 minutes pour chaque transaction, ce qui est fastidieux.
! [Processus d’ouverture du canal Lightning] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-1cabf5ff4a-dd1a6f-cd5cc0.webp)
Payjoin simplifie ce processus et permet à Alice d’économiser de l’argent : Alice peut approvisionner le Lightning Wallet et ouvrir le canal en une seule transaction.
Dans ce scénario, Alice préconfigure son point de terminaison de réception payjoin avec les détails du canal qu’elle souhaite ouvrir : le nombre de bitcoins à verrouiller et l’adversaire à ouvrir. Ensuite, à l’aide d’un portefeuille qui prend en charge payjoin, quelqu’un (y compris Alice) peut envoyer un PSBT initial au point de terminaison, négocier une transaction de paiement et le point de terminaison effectuera les appels d’API nécessaires pour ouvrir un canal avec le nœud de Bob.
En d’autres termes, l’expéditeur (dans ce cas, Alice) communique avec Alice avec le point de terminaison qui reçoit le payjoin, crée une transaction et envoie des fonds directement à la sortie multi-signature 2 sur 2 de Bob et Alice, créant ainsi un canal Lightning entre les deux nœuds. Cela transforme l’ensemble du processus en une transaction :
! [Lightning Channel avec Payjoin] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-4c65326146-dd1a6f-cd5cc0.webp)
Une chose intéressante à savoir est que l’ouverture du canal Lightning et le payjoin ont tous deux des exigences live (bien que, au moins, le payjoin ne soit pas nécessaire avant longtemps), ce qui signifie que tous les participants doivent être en ligne au moment où la transaction a lieu. C’est très restrictif par rapport aux transactions Bitcoin on-chain (qui ne nécessitent que le payeur d’être en ligne au moment du paiement). Cependant, cela permet également aux deux ensembles de protocoles de s’intégrer parfaitement.
Par exemple, le Lightning Network est un excellent moyen d’améliorer la confidentialité en gardant les paiements hors chaîne, et il peut considérablement améliorer la capacité de Bitcoin à être utilisé comme moyen d’échange (c’est-à-dire qu’il peut réellement être utilisé pour acheter des produits de première nécessité) sans compromettre sa réserve de valeur. Cependant, la nécessité d’ouvrir un canal sur la chaîne signifie également que les fonds que vous utilisez pour ouvrir le canal, ainsi que les personnes qui ouvrent le canal avec vous, laisseront une trace sur la chaîne. Pour les raisons que nous avons déjà évoquées, payjoin peut confondre et détruire de nombreux indices des fouineurs.
Cela rend également les choses plus simples, car les utilisateurs n’auront besoin d’initier qu’une seule transaction au lieu de deux, deviendront plus rapides car ils n’auront qu’à attendre qu’une seule transaction pour être confirmées et moins chers car ils n’auront qu’à payer un seul frais. En fait, cette approche permet d’ouvrir plusieurs canaux à la fois. Vous pouvez créer une liste des nœuds que vous souhaitez ouvrir le canal, le configurer en un point de terminaison de réception BIP-21 payjoin, puis l’activer en une seule fois et automatiquement lors de la réception des paiements, et n’avoir à attendre qu’une seule confirmation et des frais de paiement. Absolument!
Il existe déjà un projet mettant en œuvre cette idée appelé « Nolooking », qui vous permet de répertorier un ensemble de clés publiques, puis d’ouvrir plusieurs canaux Lightning à la fois *par lots) ! Cela permet à Alice d’ouvrir un canal non seulement avec Bob, mais aussi avec Bob, Carol et Dina, avec une seule transaction on-chain ! C’est excitant d’y penser : à l’avenir, Payjoin sera activé par défaut dans les portefeuilles Lightning, et l’expérience utilisateur de facto est que vous n’avez qu’à sélectionner votre partenaire de distribution, initier une seule transaction Bitcoin, et le tour est joué ! N’est-ce pas surprenant ?
Il est facile d’imaginer que cela simplifierait l’adoption de canaux éclair auto-dépositaires. Il serait intéressant que le logiciel de portefeuille Lightning puisse avoir un bouton de « lancement rapide » où les utilisateurs entreraient simplement la quantité de bitcoins qu’ils souhaitent verrouiller (c’est-à-dire la quantité de liquidités qu’ils veulent), définiraient une valeur par défaut pour l’ouverture d’un petit nombre de canaux de taille raisonnable et sacrifieraient légèrement le routage et les frais. Pour les utilisateurs avancés, il suffit de fournir un bouton « Je sais ce que je fais ».
Faiblesses
Tout protocole a ses faiblesses, et PayJoin ne fait pas exception.
Un problème majeur réside dans les exigences de vivacité (mise en réseau). Dans l’implémentation actuelle, le serveur web payjoin du destinataire doit être assuré financièrement lors de la construction de la transaction, car l’expéditeur et le destinataire négocient la transaction finale (qui est programmée, bien sûr). Cela peut limiter l’adoption des serveurs marchands ainsi que des nœuds Lightning, qui sont les seules personnes qui ont une incitation à rester en ligne. Du point de vue de l’utilisateur, il serait encore mieux que la transaction puisse être envoyée à tout moment, que le serveur du destinataire soit en ligne ou non.
Une autre faiblesse moins probable mais plus dangereuse est que si un serveur payjoin (c’est-à-dire le serveur du destinataire) se trouve sur un serveur non sécurisé, la sortie du destinataire pourrait être altérée pendant le fonctionnement (avant d’être retransmise à l’expéditeur), entraînant le vol de fonds appartenant au destinataire.
Cependant, comme nous le dirons plus loin, des solutions ont été proposées pour résoudre ces deux problèmes.
Enfin, une autre faiblesse du protocole PayJoin est qu’il se heurte à un obstacle à l’adoption, car les portefeuilles doivent faire des efforts de développement pour l’intégrer. Un défi particulier est que l’interface utilisateur idéale devrait être payjoin par défaut. Le portefeuille de l’expéditeur et le portefeuille du destinataire tenteront de payer directement, sans avoir à être ouverts par l’utilisateur dans les paramètres de confidentialité. La meilleure protection de la vie privée est d’implémenter la confidentialité par défaut, car si vous demandez aux utilisateurs d’agir activement, ils risquent d’être découragés. Ainsi, pour que payjoin soit adopté par l’utilisateur moyen, il doit y avoir une expérience fluide qu’il n’a pas à se battre pour comprendre. Le portefeuille devrait être activé par défaut. Gardez à l’esprit que le protocole dispose déjà d’une réponse intégrée aux échecs de payjoin : il revient à une transaction normale sans intervention manuelle de l’utilisateur.
Pas de payjoin côté serveur requis
Dan Gould a soumis un projet de BIP pour la version 2 de payjoins, permettant d’effectuer des payjoins dans des scénarios asynchrones et sans serveur. Ce payjoin sans serveur résoudra le problème de l’obligation pour le destinataire d’être en ligne lors de la réception du paiement, ainsi que les problèmes de sécurité côté serveur associés. Étant donné que le serveur destinataire de payjoin toujours actif peut être le plus grand obstacle à l’adoption de payjoin par les utilisateurs, la mise en œuvre de ce BIP pourrait apporter des avantages significatifs à l’adoption de payjoin ainsi qu’à la confidentialité passive de Bitcoin.
L’état d’avancement de l’adoption de Payjoin
À la fin de l’année 2023, l’adoption de PayJoin est encore relativement faible, mais elle n’a cessé de croître depuis sa création en 2018. Étant donné que payjoin est actuellement disponible et ne nécessite aucun changement de consensus Bitcoin, le seul obstacle est d’écrire un logiciel de portefeuille qui le prend en charge, et les outils pour aider les développeurs s’améliorent chaque jour. Le kit de développement Payjoin (PDK) est une nouvelle implémentation de payjoin avec des modules que les portefeuilles peuvent utiliser pour intégrer payjoins. Il s’agit même d’un outil payjoin-cli que vous pouvez utiliser en ligne de commande pour créer un payjoin. Cette bibliothèque est écrite en Rust, mais des liaisons qui permettent à d’autres langages de l’utiliser sont en cours de développement.
Prise en charge du portefeuille
BTCPayServer et JoinMarket prennent déjà en charge l’envoi et la réception de payjoins, mais pas par défaut. BlueWallet, Sparrow, Wasabi et BitMask prennent en charge l’envoi. Une poignée d’autres portefeuilles le prennent en charge via un plugin, y compris Bitcoin Core. Il y a aussi des RP actifs qui essaient d’intégrer payjoin dans Mutiny Wallet. L’état actuel de l’adoption est répertorié ici.
Payjoin et l’avenir du Bitcoin
Adam Gibson a déjà déclaré que même si seulement 5 % des transactions on-chain sont construites à l’aide de payjoin, cela peut avoir un impact important sur la confidentialité de Bitcoin. Il suffit de franchir un seuil suffisant pour qu’une société d’analyse puisse supposer en toute confiance qu’elle peut interpréter correctement la transaction. Une fois que leurs méthodes d’espionnage seront brisées, les restrictions imprudentes, arbitraires et malveillantes imposées par ceux qui ne comprennent pas les avantages de la vie privée de Bitcoin et n’ont pas l’intention de protéger nos droits deviendront inutiles.
Et comme nous l’avons vu, en raison des nombreuses possibilités qu’apportera PayJoin, il ne s’agit pas seulement d’une solution de confidentialité, mais aussi d’un protocole de transaction évolutif et collaboratif qui permet des utilisations intéressantes telles que des économies de frais, plusieurs canaux Lightning pour une seule transaction, etc. Les avantages qu’il peut apporter au bitcoin sont illimités, et ils peuvent être réalisés maintenant sans changer le bitcoin lui-même.
Alors qu’est-ce qu’on attend ?
Oui
Si vous souhaitez soutenir ou contribuer à PayJoin, rejoignez le Discord, faites-nous un don ou apprenez-en plus sur payjoin.org.