1. Основной поток платежей L402
Фундаментальный цикл запросов. Никаких аккаунтов, никаких паролей — только криптографическая квитанция. Когда клиент впервые обращается к защищённому эндпоинту, он получает ответ HTTP 402, содержащий два элемента: BOLT11 Lightning-инвойс и macaroon. Клиент оплачивает инвойс через Lightning Network (как правило, менее чем за секунду), получает 32-байтовый preimage в качестве доказательства и повторяет запрос с заголовкомAuthorization: L402 <macaroon>:<preimage>. Сервер верифицирует токен локально, используя SHA256(preimage) === macaroon.hash — без обращения к базе данных, без сетевого запроса, с задержкой менее миллисекунды. После верификации токен действителен до истечения срока. Последующие запросы повторно используют тот же заголовок.
Ключевые свойства:
- Верификация полностью локальная — без сетевого запроса, без обращения к базе данных
preimage= криптографическое доказательство оплаты (Lightning-квитанция)macaroon= base64 JSON{hash, exp}, подписанный с помощью SHA-256
2. Анатомия токена
ЗаголовокAuthorization содержит два компонента, разделённых двоеточием. Macaroon — это JSON-объект в кодировке base64 {hash, exp} — он сообщает серверу, какой хеш платежа ожидать и когда истекает срок действия токена. Preimage — это 32-байтовый секрет, который Lightning Network вернула плательщику. Вместе они образуют неподдельный, самодостаточный токен, который любой сервер может верифицировать офлайн.
3. Управляемый режим — поток разделения комиссии
При использованииManagedProvider сайт l402kit.com создаёт инвойс, получает оплату и автоматически перечисляет 99,7% на ваш Lightning-адрес. Комиссия платформы 0,3% покрывает маршрутизацию Lightning и инфраструктуру API. Ваш кошелёк никогда не взаимодействует с Cloudflare Worker напрямую — разделение представляет собой серверный Lightning-платёж, отправляемый после верификации запроса клиента, с использованием вашего Lightning-адреса для генерации нового BOLT11-инвойса на лету.
4. Поток Pro-подписки
Pro-подписки следуют аналогичной схеме L402, но добавляют постоянное состояние. Клиент оплачивает единовременный инвойс и получает 30-дневную запись о подписке в Supabase. Подтверждение платежа поступает либо через Blink-вебхук (быстрый путь, ~2 секунды), либо через опрос (резервный вариант для кошельков, которые не инициируют вебхуки). Последующие вызовы/api/pro-check проверяют временную метку expires_at без повторной оплаты.
5. LNURL-auth — Подтверждение владения кошельком (удаление данных)
Подтверждает, что вы являетесь владельцем Lightning-кошелька, без пароля. Требуется перед удалением данных аккаунта.6. Поток входа в дашборд через LNURL-auth
Аутентификация в дашборде только для владельца — DASHBOARD_SECRET хранится в секретах Cloudflare Workers.7. Обзор инфраструктуры
8. Безопасность preimage на основе SHA-256
Почему мы хранимSHA256(preimage) вместо исходного preimage:
Почему это безопасно: payment_hash уже встроен в каждый BOLT11-инвойс — он публичен по своей природе. Секретным является только preimage. Хранение хеша обеспечивает защиту от повторных атак без какого-либо дополнительного раскрытия данных.