Концепция
Токен L402 (macaroon:preimage) — это переносимая строка: после оплаты её можно передать любому дочернему агенту, которому нужен доступ к тому же ресурсу. Кошелёк хранится у оркестратора; дочерние агенты получают только токен.
Срок действия токенов истекает через 1 час. Каждый preimage может быть использован только один раз на сервере (защита от повторного воспроизведения). Если параллельные дочерние агенты обращаются к одному и тому же эндпоинту, каждый из них должен выполнить собственную оплату.
Когда передавать токен, а когда платить независимо
Существует два паттерна делегирования, каждый из которых имеет свои компромиссы: Совместное использование токена работает, когда дочерние агенты обращаются к одному и тому же эндпоинту последовательно. Оркестратор платит один раз, извлекает значение заголовкаAuthorization и передаёт его в виде строки. Дочерние агенты вызывают эндпоинт с этим заголовком напрямую — кошелёк не требуется. Это минимизирует затраты (одна оплата), однако небезопасно при конкурентном доступе — только один агент может владеть данным preimage, а серверы отклоняют повторные запросы.
Независимая оплата (каждый дочерний агент имеет собственный L402Client, использующий кошелёк оркестратора) подходит для параллельного или конкурентного доступа. Каждый агент оплачивает собственный инвойс и кэширует собственный токен. Это обходится дороже в sats, но проще в понимании и безопасно при любом уровне параллелизма.
Практическое правило: если ваши дочерние агенты работают параллельно, дайте каждому собственный L402Client. Если они работают последовательно и обращаются к одному эндпоинту — передайте строку токена.
Соображения безопасности
- Никогда не передавайте учётные данные кошелька дочерним агентам. Передавайте только строку токена (
L402 <macaroon>:<preimage>). Токен позволяет обратиться к одному эндпоинту в течение до одного часа — приватный ключ может опустошить кошелёк. - Токены одноразовые для каждого сервера. После первого принятого запроса сервер записывает хэш preimage. Второй запрос с тем же preimage вернёт 402. Это предотвращает атаки повторного воспроизведения, но означает, что один токен нельзя разделить между двумя конкурентными дочерними агентами, обращающимися к одному серверу.
- Управление бюджетом осуществляется на уровне кошелька. Установите
budgetSatsнаL402Clientоркестратора, чтобы ограничить общие расходы всех дочерних агентов, использующих этот кошелёк. См. Управление бюджетом.
TypeScript — оркестратор платит, дочерний агент использует токен
Python — оркестратор платит, дочерний агент использует токен
Паттерн с несколькими агентами: одна оплата, параллельное чтение
Если нескольким дочерним агентам нужен один и тот же ресурс одновременно, наиболее чистый паттерн — это независимая оплата каждым дочерним агентом с использованием собственногоL402Client с общим кошельком:
Свойства безопасности
| Свойство | Как работает сегодня |
|---|---|
| Изоляция кошелька | Дочерние агенты получают строку токена, но не приватные ключи |
| Ограничение по времени | Macaroon истекают через 1 час |
| Защита от повторного воспроизведения | Каждый preimage может быть принят сервером только один раз |
| Управление бюджетом | Установите budgetSats на L402Client оркестратора |