Payjoin

Loïc MorelLoïc Morel
1 sept. 2024
1 sept. 2024

Comprendre les transactions Payjoin sur Bitcoin

Le Payjoin est une structure spécifique de transaction Bitcoin qui permet d'améliorer la confidentialité des utilisateurs lors d'une dépense en collaborant avec le destinataire du paiement.
C'est en 2015 que LaurentMT évoquait pour la première fois cette méthode sous l'appellation de « steganographic transactions », selon un document accessible ici. Cette technique fut ensuite adoptée par le portefeuille Samourai Wallet, qui en 2018, fut le premier client à l'implémenter avec l'outil Stowaway. On retrouve également le concept du Payjoin dans le BIP79 et le BIP78. Plusieurs termes sont ainsi utilisés pour désigner un Payjoin :
  • Payjoin ;
  • Stowaway ;
  • P2EP (Pay-to-End-Point) ;
  • Transaction stéganographique.
La particularité du Payjoin réside dans sa capacité à générer une transaction qui paraît ordinaire à première vue, mais qui est en réalité un mini Coinjoin entre deux personnes. Pour cela, la structure de la transaction fait intervenir le destinataire du paiement dans les entrées aux côtés de l'expéditeur réel. Le destinataire inclut donc un paiement vers lui-même au milieu de la transaction, qui permet de le payer.
Prenons un exemple concret : si vous achetez une baguette pour 4000 sats à l'aide d'un UTXO de 10 000 sats, et que vous optez pour un Payjoin, votre boulanger ajoutera un UTXO de 15 000 sats lui appartenant en entrée, qu'il récupèrera en intégralité en sortie, en plus de vos 4000 sats :
Dans cet exemple, le boulanger introduit 15 000 sats en entrée et ressort avec 19 000 sats, la différence est exactement de 4 000 sats, c'est-à-dire le prix de la baguette. De votre côté, vous entrez avec 10 000 sats et vous vous retrouvez avec 6 000 sats à la sortie, ce qui représente bien un solde de -4 000 sats, c'est-à-dire le prix de la baguette. Pour simplifier l'exemple, j'ai délibérément omis les frais de minage dans cette transaction.

Ça sert à quoi une transaction Payjoin ?

La transaction Payjoin remplit deux objectifs qui permettent aux utilisateurs d'améliorer la confidentialité de leur paiement.
Tout d'abord, le Payjoin vise à induire en erreur un observateur extérieur en créant un leurre dans l'analyse de chaîne. Ceci est rendu possible grâce à l'heuristique de propriété commune des entrées d'une transaction, également connue sous l'acronyme CIOH (Common Input Ownership Heuristic). Habituellement, lorsqu'une transaction sur la blockchain présente plusieurs entrées, on suppose que toutes ces entrées appartiennent vraisemblablement à une même entité ou à un même utilisateur. Ainsi, lorsqu'un analyste examine une transaction Payjoin, il est amené à croire que toutes les entrées proviennent d'une même personne. Toutefois, cette perception est erronée, car le destinataire du paiement contribue également aux entrées aux côtés du payeur réel. L'analyse de chaîne est donc déviée vers une interprétation qui se révèle être fausse.
Ensuite, le Payjoin permet également de tromper un observateur extérieur sur le montant réel du paiement qui a été opéré. En examinant la structure de la transaction, l'analyste pourrait croire que le paiement est équivalent au montant d'une des sorties. Or, en réalité, le montant du paiement ne correspond à aucun des outputs. Il est en fait la différence entre l'UTXO du destinataire en sortie et l'UTXO du destinataire en entrée. En ça, la transaction Payjoin rentre dans le domaine de la stéganographie. Elle permet de cacher le montant réel d’une transaction au sein d’une fausse transaction qui agit comme un leurre.
La stéganographie est une technique de dissimulation d'informations au sein d'autres données ou objets, de manière à ce que la présence de l'information cachée ne soit pas perceptible. Par exemple, un message secret peut être dissimulé à l'intérieur d'un point dans un texte qui n'a rien à voir, le rendant indétectable à l'œil nu (c'est la technique du micropoint). Contrairement au chiffrement, qui rend les informations incompréhensibles sans la clé de déchiffrement, la stéganographie ne modifie pas l'information. Elle reste affichée en clair. Son objectif est plutôt de cacher l'existence même du message secret, alors que le chiffrement révèle clairement la présence d'informations cachées, bien qu'inaccessibles sans la clé.
Reprenons notre exemple de transaction Payjoin pour le paiement d'une baguette. En voyant cette transaction sur la blockchain, un observateur extérieur qui suit les heuristiques habituelles de l'analyse de chaîne en fera l'interprétation suivante : « Alice a fusionné 2 UTXO en entrée de la transaction afin de payer 19 000 sats à Bob ». Cette interprétation est évidemment incorrecte, car comme vous le savez déjà, les deux UTXO en entrée n'appartiennent pas à la même personne. De plus, la valeur réelle du paiement n'est pas de 19 000 sats, mais bien de 4 000 sats. L'analyse de l'observateur externe est ainsi dirigée vers une conclusion erronée, ce qui garantit la préservation de la confidentialité des parties prenantes. Si vous souhaitez analyser une véritable transaction Payjoin, en voici une que j'ai réalisée sur le testnet : 8dba6657ab9bb44824b3317c8cc3f333c2f465d3668c678691a091cdd6e5984c
Ressources externes :
Cela a-t-il bien fonctionné pour vous ?
6
0

Auteur

Ce tutoriel a été écrit par Loïc Morel

Vous pouvez dire merci en donnant un pourboire au professeur.

Crédits

Ce tutoriel a été relu par Asi0Flammeus & CarlAdm12

2/3Statut de relecture

Même si cette page est dans sa langue d'origine, une relecture humaine est toujours nécessaire pour garantir son exactitude.

Progress: 2/3Asi0FlammeusCarlAdm120 sats
*Les récompenses peuvent varier en fonction du taux de change $

Chaque élément de contenu sur la plateforme est le produit d'un effort collaboratif : chaque leçon, traduction et révision est rendue possible grâce au travail des contributeurs. C'est pour cette raison que nous sommes toujours à la recherche de correcteurs qui peuvent examiner notre contenu dans un grand nombre de langues. Si vous souhaitez participer au processus de relecture, veuillez nous rejoindre dans notre groupe Telegram et consulter notre tutoriel. Nous vous rappelons que ce contenu est open-source - sous licence CC BY-SA - et peut donc être partagé et utilisé librement, à condition que la source originale soit reconnue.