Le problème : un Internet sans paiement natif

Les systèmes de paiement actuels sont globalement peu pratiques, peu efficaces et peu sécurisés. Alors qu’Internet a impacté beaucoup de domaines, les outils que nous utilisons au quotidien (cartes bancaires, virements, abonnements, identifiants, clés…) n’ont quasiment pas évolué.

Et si ces systèmes des paiement n’étaient déjà pas au top pour les humains, ils le sont encore moins pour les IA qui doivent désormais pouvoir acheter, par exemple, des documents (ex: études scientifiques payantes), des ressources (ex: serveurs), des données (ex: prévision météo) ou des services digitaux (ex: outil d’extraction d’information d’une image).

Du côté de ceux qui fournissent ces services en ligne, ce n’est pas mieux. Que ces services soient fournis par des humains, des entreprises ou des agents IA, il n’est pas facile de les monétiser. Vous devez ouvrir un compte, remplir des formulaires, utiliser des solutions complexes ou des plateformes avec des coûts non négligeables.

Bref, payer ou se faire payer sur Internet reste inutilement complexe et coûteux.

La solution : x402

x402 est un protocole ouvert proposé par Coinbase et qui a justement pour but de proposer un standard pour les paiements natifs sur Internet en reprenant le code d’état HTTP 402 “Paiement requis” qui existe depuis longtemps mais qui n’a jamais vraiment servi.

Concrètement, aujourd’hui, quand vous tapez une adresse sur Internet et que la page que vous demandez n’existe pas, par exemple : https://www.straumat.blog/nexistepas, vous allez recevoir un code d’état HTTP 404 “Not found” qui indique que la ressource que vous demandez n’existe pas (et une page va s’afficher pour vous l’expliquer).

Si vous voulez connaître le prix du Bitcoin et que vous tapez cette adresse https://www.google.com/search?q=bitcoin+price, le serveur google vous répond avec un code HTTP 200 “Ok” (que vous ne voyez pas) et une page s’affiche avec le résultat attendu.

Ce que propose x402 :

  • Quand vous essayez d’accéder à une ressource payante en utilisant son adresse (ex: https://www.x402.org/protected), le serveur va répondre avec le code d’état HTTP 402 “Paiement requis”. Il va aussi fournir une description du prix de cette ressource d’une façon qu’une machine puisse le comprendre (format JSON).
  • Vous pouvez alors refaire votre requête à la même adresse en ajoutant un fichier payload qui contient votre paiement en crypto-monnaies et qui correspond à ce que le serveur vous a indiqué - Le fichier payload ressemble beaucoup à un chèque signé.
  • Le serveur reçoit votre requête avec votre paiement. Il récupère ce paiement, le fait valider, l’envoi sur la Blockchain et vous laisse ensuite accéder à la ressource.

En résumé :

  1. Le client accède à une ressource, le serveur annonce le prix.
  2. Le client accède de nouveau à la ressource en joingnant le paiement correspondant au prix.
  3. Le serveur reçoit, vérifie et valide le paiement.
  4. Le serveur donne accès à la ressource au client.

En utilisant le protocole x402 et les paiements via blockchain, on peut réaliser très simplement un paiement direct sans intermédiaire, sans abonnement, sans carte bancaire, sans compte, sans clé d’API. Bref, nous pouvons payer sans intermédiaire.

Les stablecoins : la révolution derrière x402

Si vous ne connaissez pas les stablecoins, il faut que l’on prenne un moment pour comprendre ce qu’ils sont et pourquoi ils peuvent faire réussir x402.

Concrètement, les stablecoins sont des crypto-monnaies indexées sur une devise réelle, le plus souvent le dollar américain (ex USDC par Circle). Contrairement au Bitcoin ou à l’Ether, dont la valeur fluctue en permanence, un stablecoin USDC vaut toujours 1 $.

Grâce à eux, on peut combiner la stabilité d’une monnaie traditionnelle et la programmabilité d’un actif numérique sur la Blockchain - Imaginez posséder une sorte de compte en dollar offshore, sans contrainte.

Concrètement, comment cela se passe :

  • Circle a déployé un contrat ERC-20 sur différentes blockchains (Ethereum, Base, Solana…). Avec ce contrat ils peuvent émettre/détruire des USDC.
  • Pour le commun des mortels, avec des USD (Des dollars classiques), vous pouvez acheter des USDC auprès de Circle. Quand vous leur donnez un vrai dollar, ils vont créer un USDC sur la blockchain et vont vous l’envoyer sur votre wallet de crypto monnaies.
  • Le dollar que vous avez donné, ils vont le garder en réserve, sur des comptes bancaires ou dans des bons du Trésor américain à court terme.
  • Vous allez désormais pouvoir, sur la blockchain, faire plein de choses avec votre USDC (paiements, placements, prêts avec transactions quasi instantanées & coûts minimes…).
  • Et vous pourrez, quand vous le souhaitez, retourner voir Circle pour échanger les USDC que vous possédez contre des vrais dollars ! C’est ce qui fait la beauté de la chose.

Un transfert d’USDC coûte quelques centimes, se règle en quelques secondes et ne peut pas être annulé ce qui sont des propriétés parfaites pour les micro-paiements automatisés entre services, APIs ou agents IA. Les stablecoins comme l’USDC sont le carburant idéal pour x402 : une monnaie numérique stable, vérifiable, et utilisable directement dans le protocole HTTP.

Comment cela fonctionne techniquement ?

x402 repose sur trois acteurs :

  • Le client : un humain, un programme ou un agent IA, qui initie la requête.
  • Le serveur : qui fournit un service “protégé” par x402.
  • Le facilitator : un serveur chargé de vérifier et exécuter le paiement sur la blockchain.

Examinons un exemple concret :

  • Un client va vouloir appeler un serveur pour accéder à un service. Par exemple, un agent IA va appeler un service financier pour connaître le prix de l’action SpaceX.

  • Le serveur du service financier va retourner une erreur 402 avec le contenu JSON suivant:

  {
  "x402Version": 1,
  "error": "X-PAYMENT header is required",
  "accepts": [
    {
      "scheme": "exact",
      "network": "base",
      "maxAmountRequired": "1000",
      "resource": "http://localhost:4021/quote?spaceX",
      "payTo": "0x2980bc24bBFB34DE1BBC91479Cb712ffbCE02F73",
      "maxTimeoutSeconds": 60,
      "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
    }
  ]
}
  • En lisant le 1JSON ci-dessus, le client sait qu’il doit payer 0,1 USDC à l’adresse 0x2980bc24bBFB34DE1BBC91479Cb712ffbCE02F73. Il va donc générer un paiement qui va ressembler au JSON ci-dessous. note : le paiement repose sur l’EIP-3009, une sorte d’ordre de paiement signé qui autorise un transfert de stablecoins sans que l’expéditeur n’ait à envoyer lui-même la transaction.
  {
  "x402Version": 1,
  "scheme": "exact",
  "network": "base",
  "payload": {
    "signature": "0x2d6a7588d6acca505cbf0d9a4a227e0c52c6c34008c8e8986a1283259764173608a2ce6496642e377d6da8dbbf5836e9bd15092f9ecab05ded3d6293af148b571c",
    "authorization": {
      "from": "0x857b06519E91e3A54538791bDbb0E22373e36b66",
      "to": "0x209693Bc6afc0C5328bA36FaF03C514EF312287C",
      "value": "10000",
      "validAfter": "1740672089",
      "validBefore": "1740672154",
      "nonce": "0xf3746613c2d920b5fdabc0856f2aeb2d4f88ee6037b8cc5d04a71a4462f13480"
      }
  }
}
  • Le serveur va donc à nouveau être sollicité par le client mais cette fois avec un ordre de paiement signé. Afin de vérifier ce paiement et de le pousser sur la blockchain, Il va utiliser un facilitator qui est un serveur tiers dont c’est le métier. Si le paiement est valide et exécuté, le facilitator va répondre favorablement au serveur. Le serveur répondra alors au client en lui fournissant le prix de l’action SpaceX.

note : ni le client, ni le serveur n’ont de frais à payer, ils sont entièrement gérés par le facilitator ce qui permet globalement de simplifier la vie de ceux qui payent et de ceux qui sont payés.

Mogami : notre expérience et notre stack open source

À la sortie du protocole, j’ai tout de suite voulu creuser pour comprendre et quoi de mieux pour comprendre que de coder un projet sur le sujet.

Mon hypothèse de travail est que les entreprises pourraient s’approprier cette technologie et que beaucoup d’entre elles utilisent les technologies Java. J’ai donc développé une stack dédiée avec pour objectif que Mogami soit la meilleure stack Java Open Source pour x402 :

  • Mogami client SDK (sources/documentation) qui facilite l’intégration des paiements x402 dans les applications Java. En seulement quelques lignes de code, vous pouvez récupérer les exigences de paiement, signer et envoyer les transactions.
  • Mogami server SDK (sources/documentation) qui permet de transformer n’importe quel endpoint en API payante à l’appel grâce au protocole x402. Avec une simple annotation, vous pouvez exiger un paiement en stablecoins.
  • Mogami facilitator (sources/documentation) vérifie, autorise et transmet les transactions x402, connectant vos services à la blockchain de manière sécurisée tout en gardant vos clés privées protégées.
  • Mogami examples (sources) illustrent des flux de paiement x402 réels que vous pouvez exécuter et adapter instantanément.

Depuis le décollage de x402, j’ai passé pas mal de temps à travailler sur la partie “facilitator” qui est technologiquement agnostique et qui est disponible en tant que service en ligne. Au moment où j’écris l’article, le service a déjà traité plus de 10 000 transactions pour une valeur de plus de 275 000 $.

Aujourd’hui, la communauté grandit à une vitesse folle et le nombre de projets qui sortent est juste incroyable même si l’utilité de beaucoup d’entre eux peut être remise en question.

Conclusion

Si ce n’est pas déjà fait, je vous conseille de lire Read Write Own, de Chris Dixon. Il y décrit l’évolution d’Internet en trois grandes étapes :

  • Le Web 1.0, celui de la lecture (read), où l’on consultait des pages écrites par des propriétaires de sites.
  • Le Web 2.0, celui de la participation (read/write), où chacun peut publier, commenter et créer mais où la valeur est captée par les plateformes (Youtube, Facebook, Instagram…).
  • Le Web 3.0 à venir, celui de la propriété et de la valeur (read/write/own), où les utilisateurs possèdent et échangent directement ce qu’ils produisent.

x402 s’inscrit parfaitement dans cette logique de Web 3.0 et comble un réel manque. Grâce à ce protocole, payer et se faire payer sur Internet devient aussi simple que de partager une information..

x402 ouvre la voie à un web où les humains, les services, les API et les agents IA peuvent s’échanger de la valeur directement, sans comptes, sans abonnements, sans intermédiaires.

L’histoire du web a toujours été celle de la standardisation : TCP/IP pour la communication, HTTP pour le contenu, HTML pour l’affichage… x402 pourrait bien être la prochaine brique de cette évolution.

Footnotes

  1. Il s’agit d’un JSON partiel, il manque certains champs