Concept
Un token L402 (macaroon:preimage) est une chaîne portable — une fois payé, il peut être transmis à n’importe quel sous-agent ayant besoin d’accéder à la même ressource. L’orchestrateur détient le portefeuille ; les sous-agents ne reçoivent qu’un token.
Les tokens expirent après 1 heure. Chaque preimage ne peut être utilisé qu’une seule fois par serveur (protection contre le rejeu). Pour des sous-agents parallèles accédant au même endpoint, chacun a besoin de son propre paiement.
Quand partager un token ou payer indépendamment
Il existe deux schémas de délégation, chacun avec des compromis différents : Le partage de token fonctionne lorsque les sous-agents accèdent au même endpoint de manière séquentielle. L’orchestrateur paie une fois, extrait la valeur de l’en-têteAuthorization et la transmet sous forme de chaîne. Les sous-agents appellent l’endpoint avec cet en-tête directement — aucun portefeuille requis. Cela minimise le coût (un seul paiement) mais n’est pas sûr pour un accès concurrent — un seul agent peut détenir un preimage donné, et les serveurs rejettent les replays.
Le paiement indépendant (chaque sous-agent possède son propre L402Client partageant le portefeuille de l’orchestrateur) fonctionne pour un accès parallèle ou concurrent. Chaque agent paie sa propre invoice et met en cache son propre token. Cela coûte plus de sats mais est plus simple à raisonner et sûr à n’importe quel niveau de concurrence.
Règle empirique : Si vos sous-agents s’exécutent en parallèle, donnez à chacun son propre L402Client. S’ils s’exécutent séquentiellement et accèdent au même endpoint, partagez la chaîne de token.
Considérations de sécurité
- Ne transmettez jamais les credentials du portefeuille aux sous-agents. Transmettez uniquement la chaîne de token (
L402 <macaroon>:<preimage>). Un token peut appeler un endpoint pendant une heure au maximum — une clé privée peut vider un portefeuille. - Les tokens sont à usage unique par serveur. Après la première requête acceptée, le serveur enregistre le hash du preimage. Une seconde requête avec le même preimage renvoie 402. Cela empêche les attaques par rejeu mais signifie que vous ne pouvez pas partager un token entre deux sous-agents concurrents accédant au même serveur.
- Le contrôle du budget est au niveau du portefeuille. Définissez
budgetSatssur leL402Clientde l’orchestrateur pour plafonner les dépenses totales de tous les sous-agents partageant ce portefeuille. Voir Contrôle du Budget.
TypeScript — l’orchestrateur paie, le sous-agent utilise le token
Python — l’orchestrateur paie, le sous-agent utilise le token
Schéma multi-agent : un seul paiement, lectures parallèles
Si plusieurs sous-agents ont besoin de la même ressource de manière concurrente, le schéma le plus propre est que chaque sous-agent paie indépendamment en utilisant son propreL402Client avec un portefeuille partagé :
Propriétés de sécurité
| Propriété | Fonctionnement actuel |
|---|---|
| Isolation du portefeuille | Les sous-agents reçoivent une chaîne de token, jamais de clés privées |
| Limité dans le temps | Les macaroons expirent après 1 heure |
| Protégé contre le rejeu | Chaque preimage ne peut être accepté qu’une seule fois par le serveur |
| Contrôle du budget | Définir budgetSats sur l’orchestrateur L402Client |