x402 · EIP-3009 · EIP-712

Pourquoi mon paiement x402 échoue-t-il ?

Collez l'en-tête X-PAYMENT envoyé par votre client — ou l'autorisation et la signature — et, si vous l'avez, la réponse 402 à laquelle il répond. La vérification recalcule le condensé EIP-712, retrouve le signataire et exécute ce qu'exécute on-chain le transferWithAuthorization d'USDC, plus les conditions du vendeur. Si le signataire n'est pas le bon, elle nomme le domaine pour lequel la signature a réellement été faite.

Gratuit · sans compte · sans portefeuille

L'en-tête X-PAYMENT ou PAYMENT-SIGNATURE (base64), son JSON décodé, ou {"authorization": {…}, "signature": "0x…", "network": "base"}.

L'entrée accepts, le corps complet de la 402 ou son en-tête PAYMENT-REQUIRED ; la première entrée est utilisée. Sans elle, on vérifie la signature, le domaine du jeton et la fenêtre de validité.

Ctrl / ⌘ + Entrée

Ce qui est vérifié

  • Qui l'a signé : le condensé EIP-712 est reconstruit et le signataire retrouvé avec secp256k1. Ce doit être l'adresse from.
  • Le domaine du jeton, pour USDC sur Ethereum, Base, Base Sepolia, Arbitrum, OP, Polygon et Avalanche, lu dans les contrats : Base dit « USD Coin », Base Sepolia dit « USDC ».
  • Ce qu'USDC refuse lui-même : un v autre que 27 ou 28, un s dans la moitié haute (EIP-2), une fenêtre de validité fermée en ce moment.
  • Les conditions du vendeur : payTo, montant, actif, réseau et le nonce fixé par la 402.
  • Un diagnostic quand le signataire est faux : l'autre nom d'USDC, la version « 1 », l'autre type d'autorisation, le jumeau test ou principal du réseau.

Ce qui n'est pas vérifié

Hors ligne par conception : si le nonce est encore inutilisé on-chain, si from détient le solde et si le paiement est soumis avant validBefore.

Confidentialité

Ce que vous collez est envoyé à modelmarket.dev, vérifié par une fonction déterministe sur notre environnement HESTIA, puis renvoyé. Rien n'est conservé.

Les agents IA achètent cette même vérification

Cette page est gratuite pour les humains. Un agent IA obtient la même réponse déterministe pour $0.003 l'appel via x402 — USDC sur Base, sans compte ni clé d'API :

POST https://modelmarket.dev/x402/x402-check

Référencée dans le x402 Bazaar de Coinbase et sur x402scan. Ce que paie un agent, c'est la réponse affichée ici, octet pour octet.

Questions

Pourquoi le même code marche sur Base Sepolia et échoue sur Base ?

Le domaine EIP-712 d'USDC diffère : le contrat de Base Sepolia s'appelle « USDC », celui de Base mainnet « USD Coin ». Une signature faite avec le mauvais nom donne une autre adresse, et le jeton annule avec une erreur de signature invalide. La vérification nomme exactement cette erreur.

Puis-je coller un paiement ici sans risque ?

La vérification ne soumet rien et ne garde rien de ce que vous envoyez. Notez qu'une autorisation signée peut être soumise par n'importe qui jusqu'à validBefore — mais elle ne peut payer que l'adresse to qu'elle nomme : le vendeur que vous vouliez payer.

Est-ce un facilitateur x402 ?

Non. Un facilitateur vérifie et règle les paiements. Ceci est un contrôle préalable : il vous dit pourquoi un facilitateur ou le jeton refuserait un paiement, avant de dépenser une requête pour le découvrir.

Autres vérifications gratuites