Введение: Aztec — это Layer 2 с приоритетом конфиденциальности, позволяющий разработчикам создавать смарт-контракты с частным и публичным состоянием, а также частным и публичным выполнением, что позволяет создавать приложения с «селективной конфиденциальностью», которые работают как обычный DeFi, не раскрывая всё на блокчейне.
Что такое Aztec?
Aztec — это сеть второго уровня, созданная с акцентом на конфиденциальность по дизайну, при этом поддерживающая публичную композиционность при необходимости.
Ключевая идея проста:
-
Частное исполнение и частное состояние для чувствительных действий пользователей (балансы, идентичность, намерения, стратегия).
-
Публичное выполнение и публичное состояние для вещей, которые должны быть глобально видимыми (публичная ликвидность, публичная логика контракта, общее состояние).
Вместо выбора между «все публичные» или «все частные» Aztec поддерживает гибридные приложения.
Как работает транзакция на Aztec
Aztec разделяет выполнение на две отдельные среды:
-
Частная среда выполнения (PXE) — работает на стороне пользователя
Частные функции выполняются на стороне клиента внутри PXE (произносится «пикси») для максимальной конфиденциальности.
PXE:
-
выполняет частные функции локально
-
хранит ключи + заметки
-
генерирует доказательства с нулевым разглашением для частных операций
-
включен в aztec.js (TypeScript), работает в Node или браузере
-
Публичная ВМ (AVM) — работает на нодах Aztec
Публичные функции выполняются в сети в Aztec Virtual Machine (AVM), что концептуально похоже на EVM (так что «интуиция эффективности газа» применима скорее к Solidity).
Правило направленного исполнения (важно)
Транзакция проходит от частной к публичной:
-
Частные функции могут добавлять публичные функции в очередь для выполнения позже.
-
Публичные функции не могут вызывать частные функции.
Это разделение является преднамеренным: публичная сеть не должна иметь возможности «достать» до частного исполнения.
Частное против публичного состояния: заметки, нулификаторы и деревья
Aztec использует различные модели состояния в зависимости от уровня конфиденциальности:
Приватное состояние = «заметки» в стиле UTXO
Приватное состояние хранится в виде заметок (чанки данных, подобные UTXO). Для обеспечения конфиденциальности:
-
Заметки добавляются в дерево UTXO, допускающее только добавление
-
Когда заметка «тратится/удаляется», создается нулификатор
-
Нуллификаторы хранятся в отдельном дереве нуллификаторов
Это позволяет сети обеспечить условие «потрачено один раз» без раскрытия частного содержимого заметок.
Публичное состояние = публичное хранилище, подобное аккаунту
Публичное состояние ведет себя более как ethereum:
-
хранится в публичном дереве данных
-
обновлено напрямую и видно в цепочке
Выводы для разработчика:
-
Работа в частном состоянии = обязательства + нуллификаторы (доказательство корректности без раскрытия данных)
-
Работа в публичном состоянии = прямые обновления (нормальное поведение хранения в блокчейне)
Абстракция аккаунта: каждый аккаунт — это смарт-контракт
Aztec имеет нативную абстракцию аккаунтов на уровне протокола:
-
Нет EOAs (нет простых «аккаунтов с ключевой парой»)
-
Каждый аккаунт — это смарт-контракт
-
Разработчики могут задавать свои собственные правила для:
-
аутентификация (подписи, мультиподпись, ключи доступа, пользовательская логика)
-
политики авторизации (ограничения, разрешения, сессионные ключи)
-
nonce / защита от повторной атаки
-
Почему это помогает против DoS (проблема «валидация требует много ресурсов»)
Модель Aztec выполняет сложную валидацию на стороне клиента:
-
Клиент проверяет и генерирует ZK-доказательство, что «проверка успешна»
-
Секвенсор проверяет доказательство фиксированного размера
-
Таким образом, сложность проверки не увеличивает стоимость проверки сети.
Это позволяет использовать логику аккаунта для продвинутых пользователей, не замедляя цепочку.
Ключи в аккаунтах Aztec (с фокусом на конфиденциальность)
Каждый аккаунт Aztec подкреплён тремя парами ключей:
-
Ключевая пара Nullifier: используется для вычисления нуллификаторов заметок
-
Входящая пара ключей просмотра: используется для шифрования заметок для получателя
-
Исходящая пара ключей просмотра: используется для шифрования заметок для отправителя
Поскольку аккаунты являются смарт-контрактами, у них не существует ключевой пары для подписи по умолчанию — аутентификация определяется дизайном смарт-контракта аккаунта.
Аутентификационные свидетели: безопаснее, чем «бесконечные разрешения»
Aztec заменяет рискованную схему «бесконечного одобрения» на аутентификационные свидетельства (AuthWit):
-
вместо предоставления неограниченного разрешения навсегда,
-
пользователи авторизуют конкретные действия с конкретными параметрами
Это разработано для снижения риска постоянного одобрения при сохранении хорошего пользовательского опыта (пакетная обработка, автоматизация).
Развивайте Aztec с помощью Noir
Смарт-контракты Aztec пишутся на Noir — языке, ориентированном на ZK, для создания доказуемых программ/контрактов. Одно из ключевых предупреждений из документации: частные функции можно написать неоптимальным образом, поскольку процесс доказательства имеет другие представления о производительности, чем обычное выполнение — поэтому важно научиться «писать эффективный Noir».
















