Ethereum запустила zkAPI
1 октября Ethereum Foundation совместно с Open Anonymity Project запустила zkAPI в Ethereum Mainnet. Система позволяет оплачивать запросы к AI-моделям через ETH, USDC и другие активы без прямой связи между депозитом пользователя и конкретным запросом к модели.
Главное отличие от обычного AI API: вместо постоянного API-ключа, привязанного к аккаунту и платёжному методу, zkAPI использует zero-knowledge proof. Пользователь доказывает, что у него достаточно средств для оплаты, не раскрывая, какой именно депозит используется.
Как работает zkAPI
Схема состоит из четырёх основных этапов.
1. Депозит
Пользователь вносит ETH, USDC или другой поддерживаемый актив в vault-контракт Ethereum.
После этого баланс существует в системе как приватная криптографическая запись, которую разработчики называют note.
2. Zero-knowledge proof
Перед использованием AI локальный клиент создаёт ZK-доказательство.
Оно подтверждает сразу несколько вещей:
- депозит существует;
- средств достаточно;
- этот баланс ещё не был потрачен;
- пользователь имеет право потратить определённую сумму.
При этом сервер не узнаёт, какой именно депозит стоит за доказательством.
3. Временный API-ключ
После проверки proof сервер создаёт новый краткоживущий API-key.
У него заранее устанавливается максимальный лимит расходов в долларах.
Ключ существует только в памяти устройства пользователя и действует ограниченное время.
4. Запрос идёт напрямую к AI-провайдеру
Prompt отправляется с устройства непосредственно поставщику модели.
Платёжный сервер в этот момент содержимое запроса не видит.
После окончания сессии AI-провайдер формирует подписанный receipt с фактическим объёмом использования. Система списывает с приватного баланса только реально израсходованную сумму.
Что видит каждая сторона
Архитектура специально разделяет данные.
zkAPI server знает:
- что существует действительный платёж;
- сколько денег разрешено потратить;
- сколько было фактически потрачено.
Но сервер не знает:
- кто пользователь;
- содержание prompt;
- какой конкретно Ethereum-депозит использовался.
AI-провайдер знает:
- сам prompt;
- ответ модели;
- объём использования API.
Но не знает, какой депозит оплатил запрос.
Ethereum видит:
- депозит;
- закрытие позиции;
- вывод средств.
Но сеть не видит, какие AI-запросы были оплачены этим балансом.
Что находится под капотом
Ethereum Foundation раскрыла и конкретную криптографическую архитектуру.
Для ZK-доказательств используется Groth16 на кривой BN254.
Для хеширования commitments и nullifiers используется Poseidon.
Депозиты хранятся в Merkle tree глубиной 32 уровня.
Проверка обычных расходных proof происходит off-chain.
Smart contract Ethereum проверяет доказательства при операциях с vault: создании, закрытии и аварийном выходе.
Зачем нужен nullifier
Одна из главных проблем приватных платежей — double spend.
Если система не знает личность пользователя и не раскрывает его баланс, нужно каким-то образом проверить, что одни и те же средства не используются дважды.
Для этого zkAPI использует nullifier.
Это односторонний уникальный идентификатор, создаваемый из секрета note.
Если пользователь пытается повторно потратить уже использованный баланс, система увидит одинаковый nullifier и отклонит операцию.
При этом личность пользователя и исходный депозит по-прежнему не раскрываются.
Один proof может оплачивать целую сессию
zkAPI не требует создавать отдельное ZK-доказательство для каждого prompt.
Один proof может зарезервировать определённую сумму сразу на всю AI-сессию.
Например, пользователь разрешает временно потратить до $5.
AI-провайдер выполняет серию запросов.
Если фактическая стоимость составила $1,37, после закрытия сессии с баланса списывается именно $1,37, а не все зарезервированные $5.
Для этого используется подписанный usage receipt.
OpenAI и Ollama уже поддерживаются
Локальный клиент zkAPI предоставляет стандартный интерфейс, совместимый с OpenAI API и Ollama.
Это позволяет существующим приложениям работать через zkAPI без полной переделки.
Приложению достаточно отправлять запросы на локальный endpoint вместо обычного API-провайдера.
Также опубликованы:
- локальный клиент;
- сервер;
- browser SDK;
- mainnet-контракт;
- тестовое развёртывание в Sepolia;
- браузерный OA Chat.
Сам ZkApiVault уже работает в Ethereum Mainnet и поддерживает USDC credits.
Есть два режима работы
Основной вариант называется runtime-key mode.
В нём prompt идёт непосредственно к AI-провайдеру, а zkAPI занимается только подтверждением оплаты.
Есть и более простой proxy mode.
В этом случае запрос сначала проходит через сервер zkAPI, а затем пересылается модели.
Запустить такую архитектуру проще, но приватность хуже: промежуточный сервер получает сетевой трафик и потенциально видит содержимое запросов.
Это не полная анонимность
Самое важное ограничение системы: zkAPI скрывает платёжную связь, но не делает пользователя полностью анонимным.
AI-провайдер по-прежнему видит сам prompt.
Также ему могут быть доступны:
- IP-адрес;
- время запросов;
- повторяющийся стиль текста;
- история разговоров;
- документы;
- персональные данные внутри prompt.
Разработчики отдельно предупреждают, что стабильный IP позволяет связывать между собой разные сессии.
Для сетевой анонимности они предлагают дополнительно использовать Tor с новым circuit для каждой сессии.
Не только AI
AI inference выбран первым применением, но архитектура рассчитана на любые сервисы с оплатой за использование.
Ethereum Foundation перечисляет:
- AI chat и AI agents;
- blockchain RPC;
- генерацию изображений и видео;
- VPN и bandwidth;
- machine-to-machine services.
То есть AI-агент теоретически сможет самостоятельно оплачивать другой сервис без регистрации аккаунта и раскрытия общей истории платежей.
От идеи Виталика до Mainnet
zkAPI является рабочей реализацией концепции ZK API Usage Credits, ранее опубликованной на Ethereum Research Давиде Крапписом и Виталиком Бутериным.
Теперь это уже не исследовательская концепция.
С 1 октября система работает в Ethereum Mainnet.
Что в итоге
zkAPI решает достаточно конкретную задачу.
Обычный API сегодня выглядит так:
аккаунт → API-key → платёжный метод → история запросов.
zkAPI меняет цепочку:
депозит → ZK-proof → временный ключ → запрос.
AI-провайдер получает prompt.
Платёжная система получает деньги.
Ethereum подтверждает существование средств.
Но полная связь между всеми тремя частями больше не находится в одном месте.
Именно это Ethereum Foundation называет private usage credits.
Источник
Ethereum Foundation — Introducing zkAPI: private usage credits for any API
