Aller au contenu
buybitcoinsmart

Glossaire / Confidentialité et sécurité

Payjoin

Aussi appelé P2EP, Pay-to-endpoint.

Qu'est-ce qu'un payjoin ?
Un payjoin est un paiement où la personne qui reçoit les bitcoins ajoute discrètement une de ses propres entrées à votre transaction, si bien que le montant inscrit on-chain ne correspond plus au montant que vous avez réellement payé.

Spécifié dans BIP-78.

Les deux côtés apportent des entrées, ce qui brise la règle que les analystes utilisent pour regrouper les adresses en portefeuilles. Nicolas Dorier l'a spécifié comme le BIP78 en mai 2019, et il est déployé plutôt que théorique : BTCPay Server a intégré sa prise en charge en 2020. Pour le payeur, la transaction coûte un peu plus en frais et paraît tout à fait ordinaire.

Comment cela fonctionne

Le protocole payjoin est une courte conversation qui se déroule entre le moment où vous cliquez sur envoyer et le moment où la transaction est diffusée.

Votre portefeuille construit le paiement sous forme de PSBT non signée, exactement comme pour une dépense normale, et le transmet à un point de terminaison que le destinataire a annoncé dans la demande de paiement. Le destinataire ajoute une de ses propres sorties non dépensées comme deuxième entrée, augmente sa propre sortie du même montant pour recevoir tout de même le paiement correct, et renvoie la PSBT modifiée. Votre portefeuille vérifie que la destination et le montant sont inchangés, signe et diffuse.

Ce qui arrive on-chain comporte deux entrées détenues par deux personnes différentes. Un analyste qui applique la règle de regroupement standard fusionnera deux inconnus dans un même portefeuille, conclusion erronée enregistrée définitivement dans ses données. Le montant du paiement disparaît aussi : aucune des sorties n'égale ce que vous avez payé, car la sortie du destinataire correspond au paiement plus l'entrée qu'il a apportée. Un observateur ne peut plus lire la facture sur la transaction.

Le BIP78 plafonne le coût pour vous. Le paramètre maxadditionalfeecontribution indique combien de satoshis vous êtes prêt à payer pour l'entrée supplémentaire ajoutée par le destinataire, afin qu'il ne puisse pas gonfler discrètement vos frais. Si quelque chose ne va pas, si le point de terminaison est injoignable, si la réponse est mal formée, si les montants ne concordent pas, votre portefeuille revient à diffuser la transaction d'origine. Un payjoin échoué reste un paiement effectué, c'est pourquoi il peut être activé par défaut sans rien casser.

Les destinataires y gagnent un second avantage sans rapport avec la confidentialité. Chaque payjoin leur permet d'incorporer l'un de leurs propres bitcoins dans une transaction que quelqu'un d'autre paie en grande partie, un entretien gratuit contre un portefeuille rempli de petites sorties.

Où le rencontrer

Le payjoin vit du côté du marchand, si bien que la plupart des gens le rencontrent sans le remarquer.

BTCPay Server a été la première mise en œuvre en production et propose le payjoin sur les factures, ce qui explique qu'il apparaisse surtout sur les pages de don et les caisses auto-hébergées. Wasabi et Sparrow peuvent envoyer vers un point de terminaison payjoin depuis un ordinateur de bureau.

La faiblesse du design d'origine était que le destinataire devait exploiter un serveur public et être en ligne au moment du paiement, ce qui le limitait aux marchands. Le BIP77, « Async Payjoin » de Dan Gould et Yuval Kogman, créé en août 2023 et toujours à l'état de brouillon, remplace le point de terminaison direct par un annuaire de stockage et de transmission joint via Oblivious HTTP, de sorte que deux portefeuilles mobiles peuvent mener à bien un payjoin sans être en ligne en même temps. Bull Bitcoin et Cake Wallet ont déployé cette version dans des applications mobiles, ce qui est la première fois que le payjoin est accessible aux paiements ordinaires entre particuliers.

Le meilleur argument pour l'utiliser est celui que vous ne voyez jamais personnellement. Chaque payjoin présent dans les données rend la règle de propriété commune des entrées moins fiable pour tout le monde, y compris pour les personnes qui n'en ont jamais fait. Les techniques de confidentialité qui n'aident que leur utilisateur sont rares ; celle-ci dégrade la surveillance pour tout le réseau à chaque transaction.

À ne pas confondre avec

Questions fréquentes

Un payjoin coûte-t-il plus cher à l'expéditeur ?

Un peu. L'entrée supplémentaire du destinataire rend la transaction plus grande, et le BIP78 permet à votre portefeuille de plafonner ce coût avec le paramètre maxadditionalfeecontribution, de sorte que l'augmentation se limite généralement à quelques centaines de satoshis plutôt qu'à quelque chose de perceptible.

Que se passe-t-il si le point de terminaison payjoin du destinataire est hors service ?

Votre portefeuille diffuse la transaction d'origine à la place. Le repli est intégré au protocole, donc un payjoin échoué reste un paiement effectué et le destinataire reçoit exactement ce que vous avez envoyé.

Termes associés

Plus de termes : Confidentialité et sécurité

Lire cette page en anglais