Aller au contenu principal
v0.2.0 — open source sur GitHub

ClawPurse
402 Gateway

Un proxy inverse HTTP qui protège toute API avec des micropaiements NTMPI sur la blockchain Neutaro. Flux de paiement par requête et solde prépayé pour agents IA, scripts et commerce machine-à-machine.

  Client (agent IA, script, navigateur)
    │
    ├── GET /api/data ─────────────────────▶  Passerelle 402
    │                                              │
    │   ◀── 402 Payment Required ────────────────┘
    │       { invoiceId, amount, address, memo }
    │
    ├── clawpurse send <address> <amount> --memo <memo> --yes
    │       (paiement NTMPI on-chain)
    │
    ├── GET /api/data ─────────────────────▶  Passerelle 402
    │   Header: X-Payment-Proof: <invoiceId>     │
    │                                              │
    │   La passerelle vérifie le paiement sur Neutaro    │
    │                                              │
    │   ◀── 200 OK (proxy depuis upstream) ────┘
Flux de paiement

Deux flux de micropaiement : paiement par requête et solde prépayé

Que votre agent paie par appel ou pré-finance un solde, la passerelle gère automatiquement la facturation, la vérification on-chain et le proxy.

1

Paiement par requête

Le client accède à un endpoint protégé et reçoit un 402 avec une facture. Il paie on-chain puis réessaie avec un en-tête X-Payment-Proof. La passerelle vérifie et redirige.

2

Solde prépayé

Le client dépose des NTMPI une fois via /prepaid/deposit. Les requêtes suivantes incluent un en-tête X-Client-Id et la passerelle déduit par appel — pas de transactions on-chain répétées.

Fonctionnalités

Conçu pour les agents IA et le commerce machine-à-machine

Tout ce dont une couche de micropaiements a besoin, rien de plus.

Vérification on-chain

Interroge Neutaro REST API pour confirmer montant, mémo et confirmations de bloc.

🧾

Tarification par route

Prix par défaut avec surcharge par route via GATEWAY_ROUTES. Lectures bon marché, écritures coûteuses.

🔒

API de gestion

Endpoints protégés par JWT pour portefeuilles internes, transactions et registre blockchain léger.

🔄

Proxy inverse

Transfère les requêtes authentifiées vers votre API upstream. Tout backend, tout langage.

📦

Stockage SQLite

Factures, soldes et journaux dans un seul fichier local. Zéro dépendance externe.

🐳

Prêt pour Docker

Déploiement avec docker compose up. Script Ubuntu inclus.

API

Référence des endpoints de la passerelle

Endpoints gratuits pour health checks, consultations de factures et soldes. Tout le reste passe par le gate 402.

Gratuit — sans paiement

MéthodeCheminDescription
GET /health Health check avec config passerelle
GET /invoices/:id Vérifier le statut de facture (déclenche vérification on-chain)
POST /prepaid/deposit Enregistrer un dépôt (vérifie tx on-chain)
GET /prepaid/balance/:clientId Vérifier le solde prépayé

Gestion — protégé par JWT

MéthodeCheminDescription
POST/manage/auth/registerCréer un compte administrateur
POST/manage/auth/loginSe connecter, obtenir token JWT
POST/manage/walletCréer un portefeuille interne
GET/manage/walletLister vos portefeuilles
GET/manage/wallet/:idObtenir portefeuille par ID
POST/manage/transactionsCréer une transaction interne
GET/manage/transactions/:idObtenir transaction par ID

Gate 402 — catch-all

MéthodeCheminDescription
ANY /* Toutes les autres requêtes nécessitent paiement ou solde prépayé
Intégration

Intégration agents : exemples Python et TypeScript

Intégrez le flux 402 en quelques lignes. La passerelle gère facturation et vérification — votre code paie et réessaie.

agent.py
import requests, subprocess, os

res = requests.get("http://gateway:4020/api/data")

if res.status_code == 402:
    inv = res.json()["payment"]

    # Pay with ClawPurse
    subprocess.run([
        "clawpurse", "send",
        inv["address"], inv["amount"],
        "--memo", inv["memo"], "--yes"
    ])

    # Retry with proof
    res = requests.get(
        "http://gateway:4020/api/data",
        headers={"X-Payment-Proof": inv["invoiceId"]}
    )

data = res.json()
agent.ts
async function paidFetch(url: string) {
  let res = await fetch(url);

  if (res.status === 402) {
    const { payment } = await res.json();

    // Pay with ClawPurse
    const { send, loadKeystore }
      = await import("clawpurse");
    const { wallet, address }
      = await loadKeystore(
          process.env.CLAWPURSE_PASSWORD!
        );
    await send(
      wallet, address,
      payment.address, payment.amount,
      { memo: payment.memo }
    );

    // Retry with proof
    res = await fetch(url, {
      headers: {
        "X-Payment-Proof": payment.invoiceId
      }
    });
  }
  return res.json();
}
Démarrage rapide

Installez et lancez la passerelle en moins d'une minute

terminal
# Clone and install
git clone https://github.com/mhue-ai/clawpurse-gateway.git
cd clawpurse-gateway && npm install

# Configure
cp .env.example .env
# Set GATEWAY_PAYMENT_ADDRESS and JWT_SECRET

# Start a test upstream
npm run test:upstream

# Start the gateway
npm run dev

# Test the 402 flow
curl http://localhost:4020/api/test
# Pay, then retry with proof:
curl -H "X-Payment-Proof: <invoiceId>" \
     http://localhost:4020/api/test
Architecture

Architecture microservices TypeScript

Codebase TypeScript ciblé — logique passerelle, quatre services internes et middleware. 46 tests unitaires couvrent chaque couche.

config.ts
Config passerelle par env
db.ts
SQLite : factures, prépayé, logs
invoice.ts
Création de factures et tarification
verify.ts
Vérification paiement on-chain
proxy.ts
Proxy inverse vers upstream
AuthService
Auth JWT pour API de gestion
WalletService
Registre portefeuilles internes
TxService
Transferts entre portefeuilles
BlockchainSvc
Blockchain interne
Config

Configuration de la passerelle via variables d'environnement

Tous les paramètres via env vars ou fichier .env.

VariableDéfautDescription
PORT4020Port d'écoute de la passerelle
GATEWAY_UPSTREAMhttp://localhost:3000API upstream à proxifier
GATEWAY_PAYMENT_ADDRESSAdresse portefeuille Neutaro (requis)
GATEWAY_DEFAULT_PRICE0.001Prix par défaut par requête en NTMPI
GATEWAY_ROUTESSurcharges prix par route
GATEWAY_RESThttps://api2.neutaro.ioEndpoint API REST Neutaro
GATEWAY_MIN_CONFIRMATIONS1Confirmations de bloc requises
GATEWAY_INVOICE_TTL300Validité facture en secondes
GATEWAY_PREPAIDfalseActiver système solde prépayé
GATEWAY_DB./gateway.dbChemin base de données SQLite
JWT_SECRETSecret JWT API de gestion (requis)
Écosystème

Partie de l'écosystème Timpi, Neutaro et ClawPurse

Portefeuille ClawPurse

Portefeuille NTMPI local avec keystores chiffrés, garde-fous, staking et listes de destinations. Client de référence pour la passerelle.

github.com/mhue-ai/ClawPurse →

Blockchain Neutaro

La chaîne Cosmos SDK alimentant NTMPI. Tous les paiements vérifiés directement contre Neutaro — sans oracles, sans ponts.

neutaro.com →

Réseau Timpi

Recherche décentralisée avec confidentialité, API de données ouverte et nœuds DePIN. Monétisez tout service Timpi via micropaiements.

timpi.io →

Faucet Timpi Drip

Faucet NTMPI avec proof-of-work au lieu de CAPTCHA. Agents OpenClaw obtiennent un débit plus élevé.

drip.clawpurse.ai →

Ledger Timpi

Free NTMPI cost basis calculator and tax tool. Auto-fetches transfers, staking rewards, and node payouts from the Neutaro chain — calculates USD cost basis with FIFO/LIFO/HIFO and generates IRS Form 8949.

ledger.clawpurse.ai →

x402 Payment Protocol

Coinbase's open HTTP 402 standard routes every payment through a centralized facilitator that controls settlement. ClawPurse Gateway takes the opposite approach: peer-to-peer payments verified directly on Neutaro — no middleman, no EVM lock-in, no Coinbase SDK. Add prepaid balances for zero-latency repeat access, route-level pricing in one env var, and a full audit trail in SQLite. One Docker command to deploy; zero external dependencies to operate.

Full comparison →

x402.org →

github.com/coinbase/x402 →

FAQ

Questions fréquentes

Qu'est-ce que ClawPurse Gateway ?

Un proxy inverse HTTP open source implémentant 402 Payment Required pour protéger toute API avec micropaiements NTMPI sur Neutaro.

Comment fonctionne le flux de paiement HTTP 402 ?

Le client reçoit une réponse 402 avec facture, paie on-chain, réessaie avec en-tête X-Payment-Proof. La passerelle vérifie et redirige.

Qu'est-ce que NTMPI et comment l'obtenir ?

NTMPI est le token natif de Neutaro, partie du réseau Timpi . Obtenez des NTMPI gratuits du Faucet Timpi Drip, achetez sur MEXC via NTMPI/USDT, ou pontez via Gravity Bridge vers Osmosis avec Keplr ou Leap.

Les agents IA peuvent-ils utiliser le gateway de manière autonome ?

Oui. Conçu pour l'IA agentique. Les agents parsent la facture 402, paient on-chain via l' API du portefeuille ClawPurse, et réessaient — sans intervention humaine.