Glossaire / Référence pour développeurs
Protocole de paiement (BIP70)
Aussi appelé Protocole de paiement, BIP70.
- Qu'est-ce que le protocole de paiement (BIP70) ?
- Le protocole de paiement (BIP70) était la tentative du bitcoin de remplacer les adresses brutes par des demandes de paiement signées et couvertes par un certificat, et Bitcoin Core en a supprimé la dernière prise en charge dans la version 0.20.0.
Spécifié dans BIP-70.
De l'ambition, puis l'abandon. Gavin Andresen et Mike Hearn ont publié le BIP70 le 29 juillet 2013, Bitcoin Core l'a livré dans la version 0.9.0 en mars 2014, l'a déclaré obsolète dans la version 0,19 en novembre 2019, puis l'a supprimé dans la version 0.20.0 le 3 juin 2020. Si un tunnel de paiement demande encore à votre portefeuille de le parler, considérez cela comme le signe que l'intégration n'a pas été touchée depuis des années.
Comment cela fonctionne
Statut : déclaré obsolète dans Bitcoin Core 0,19 et supprimé purement et simplement dans 0.20.0 le 3 juin 2020. Aucun portefeuille maintenu ne l'implémente. Ce que les gens utilisent à la place est un simple URI BIP21 pour les paiements on-chain, des factures BOLT11 ou BOLT12 sur Lightning, et les paiements silencieux BIP352 lorsqu'une destination réutilisable est souhaitée.
La conception formait une famille de quatre BIP. Le BIP70 définissait les messages, le BIP71 enregistrait un type MIME pour chacun des trois qui circulaient sur le réseau, le BIP72 ajoutait le paramètre r= pour qu'un URI puisse pointer vers une demande, et le BIP73 gérait la négociation de contenu pour les portefeuilles incapables d'analyser le protocole.
Le déroulement ressemblait à celui d'un terminal de carte. Un commerçant servait une PaymentRequest signée via HTTPS. Le portefeuille du client la récupérait, remontait la chaîne de certificats X.509 jointe jusqu'à une racine déjà approuvée, et affichait un nom d'entreprise au lieu d'une suite de caractères. Le client approuvait, le portefeuille diffusait la transaction et renvoyait aussi un message Payment au commerçant contenant les octets bruts de la transaction et une adresse de remboursement. Le commerçant répondait par un PaymentACK, qui tenait lieu de reçu.
Quatre raisons à son effondrement, et elles méritent d'être comprises parce que chacune réapparaît chaque fois que quelqu'un propose une identité par-dessus le bitcoin.
Il empruntait sa confiance aux autorités de certification. N'importe laquelle des centaines d'autorités de certification d'un magasin de racines typique peut émettre un certificat pour n'importe quel nom, ce qui est précisément le mode de défaillance que le bitcoin a été conçu pour éviter. Le BIP70 permettait aussi un type de signature x509+sha1, et une collision pratique de SHA-1 a été publiée le 23 février 2017.
Il exigeait que le commerçant soit en ligne. Un paiement ne pouvait pas être construit si le point d'accès HTTPS du commerçant ne répondait pas, de sorte qu'une panne bloquait des paiements qui auraient sinon fonctionné à partir d'une simple adresse.
Il divulguait des informations. Le portefeuille envoyait une requête sortante au serveur du commerçant, exposant l'adresse IP du client, et le champ de remboursement livrait une adresse fraîche appartenant au payeur.
Il apportait très peu. Le certificat prouvait que quelqu'un contrôlait un nom de domaine, pas que la facture était légitime ni que les marchandises étaient réelles.
Où le voir
La principale raison pour laquelle le BIP70 circule encore comme terme est que la référence pour développeurs de bitcoin.org décrit le protocole au présent, et que cette référence n'a pas suivi Bitcoin Core depuis des années.
Au-delà, vous rencontrez le BIP70 dans du code source de portefeuille archivé, dans d'anciens guides d'intégration rédigés à l'époque où de gros processeurs le poussaient, et parfois dans un fichier .bitcoinpaymentrequest joint à une facture vieille de dix ans. Rien de ce que vous achetez aujourd'hui ne l'exigera. Les commerçants qui veulent un tunnel de paiement utilisent des logiciels tels que BTCPay Server, qui émet des URI BIP21 et des factures Lightning, et ne demande rien d'inhabituel au portefeuille du client.
Protocole de paiement (BIP70) vs PaymentRequest
Le protocole de paiement est l'échange entier ; PaymentRequest est un message à l'intérieur. Trois messages circulaient entre le portefeuille et le commerçant, et PaymentRequest était le premier d'entre eux, l'enveloppe signée que servait le commerçant. Employer les deux noms de façon interchangeable rend les anciens documents plus difficiles à lire qu'ils ne devraient l'être. Notez aussi que PaymentRequest est le nom d'une norme de navigateur sans rapport avec le bitcoin, pour le paiement par carte et par portefeuille, de sorte qu'un développeur qui emploie ce mot aujourd'hui ne parle probablement pas du bitcoin.