Concetto
Un token L402 (macaroon:preimage) è una stringa portabile — una volta pagato, può essere passato a qualsiasi sotto-agente che necessita di accesso alla stessa risorsa. L’orchestratore detiene il wallet; i sotto-agenti ricevono solo un token.
I token scadono dopo 1 ora. Ogni preimage può essere utilizzato una sola volta per server (protezione contro i replay). Per sotto-agenti paralleli che accedono allo stesso endpoint, ciascuno necessita del proprio pagamento.
Quando condividere un token vs. pagare in modo indipendente
Esistono due pattern di delega, ciascuno con compromessi diversi: La condivisione del token funziona quando i sotto-agenti accedono allo stesso endpoint in modo sequenziale. L’orchestratore paga una volta, estrae il valore dell’headerAuthorization e lo passa come stringa. I sotto-agenti chiamano l’endpoint con quell’header direttamente — nessun wallet richiesto. Questo minimizza il costo (un solo pagamento) ma non è sicuro per l’accesso concorrente — solo un agente può detenere un dato preimage, e i server rifiutano i replay.
Il pagamento indipendente (ogni sotto-agente ha il proprio L402Client che condivide il wallet dell’orchestratore) funziona per l’accesso parallelo o concorrente. Ogni agente paga la propria invoice e memorizza nella cache il proprio token. Questo costa più sats ma è più semplice da gestire e sicuro a qualsiasi livello di concorrenza.
Regola pratica: Se i tuoi sotto-agenti si distribuiscono in parallelo, assegna a ciascuno il proprio L402Client. Se operano in modo sequenziale e accedono allo stesso endpoint, condividi la stringa del token.
Considerazioni di sicurezza
- Non passare mai le credenziali del wallet ai sotto-agenti. Passa solo la stringa del token (
L402 <macaroon>:<preimage>). Un token può chiamare un endpoint per un massimo di un’ora — una chiave privata può svuotare un wallet. - I token sono monouso per server. Dopo la prima richiesta accettata, il server registra l’hash del preimage. Una seconda richiesta con lo stesso preimage restituisce 402. Questo previene gli attacchi replay, ma significa che non puoi condividere un token tra due sotto-agenti concorrenti che accedono allo stesso server.
- Il controllo del budget è a livello di wallet. Imposta
budgetSatssull’L402Clientdell’orchestratore per limitare la spesa totale di tutti i sotto-agenti che condividono quel wallet. Vedi Controllo del Budget.
TypeScript — l’orchestratore paga, il sotto-agente usa il token
Python — l’orchestratore paga, il sotto-agente usa il token
Pattern multi-agente: un solo pagamento, letture parallele
Se più sotto-agenti necessitano della stessa risorsa in modo concorrente, il pattern più pulito è che ogni sotto-agente paghi in modo indipendente utilizzando il proprioL402Client con un wallet condiviso:
Proprietà di sicurezza
| Proprietà | Come funziona oggi |
|---|---|
| Isolamento del wallet | I sotto-agenti ricevono una stringa token, mai le chiavi private |
| Limitato nel tempo | I macaroon scadono dopo 1 ora |
| Sicuro contro i replay | Ogni preimage può essere accettato solo una volta dal server |
| Controllo del budget | Imposta budgetSats sull’orchestratore L402Client |