Протокол подтверждения ZAP1
ZAP1 — это открытый протокол подтверждения для Zcash. Он записывает структурированные события жизненного цикла в дерево Меркла BLAKE2b и закрепляет корень дерева на блокчейне через защищенные сообщения Orchard. Доказательства могут быть проверены публично. Данные событий остаются приватными.
Как это работает
Операторы регистрируют типы событий (развертывания, платежи, переводы и т.д.) и отправляют их в экземпляр ZAP1. Каждое событие создает хэш листового узла с использованием BLAKE2b-256, разделенного по доменам. Листовые узлы накапливаются в дереве Меркла. Когда достигается порог, корень дерева кодируется как ZAP1:09 и закрепляется в транзакции на Zcash.
Любой, кто имеет хэш листового узла, может проверить полный путь от листа до корня и закрепления на блокчейне без необходимости доверять оператору.
Основные свойства
- Независимый от приложения: любой оператор Zcash может определить собственные типы событий и строки персонализации
- Сохраняющий приватность: полезные данные события хэшируются перед закреплением. На блокчейн отправляются только хэши.
- Независимо проверяемый: для проверки требуется только набор доказательств и доступ к цепочке. Не требуется доверие к оператору.
- Совместим с ZIP 302: ZAP1 стремится к использованию типа части ZIP 302 для полезной нагрузки подтверждения
Что существует
- Ссылочная реализация (Rust, лицензия MIT)
- SDK для проверки на crates.io (Rust + 83KB WASM)
- SDK на JavaScript в npm
- Общий декодер сообщений (определяет ZAP1, ZIP 302 TVLV, текст, двоичные данные и пустые сообщения)
- Набор соответствия с 29 проверками API и 14 проверками протокола
- Проект FROST 2-of-3 для подписания порога при многосторонней передаче закрепления
- Четыре основных закрепления с 14 листами на март 2026 года
Архитектура
Code-highlight
Ваше приложение --> API ZAP1 --> дерево Меркла --> закрепление в Zcash
| |
типы событий защищенное сообщение
(DEPLOYMENT и т.д.) (ZAP1:09:{root})
Каждый оператор запускает собственный экземпляр ZAP1 со своими ключами, деревом Меркла и закреплениями. Нет общего состояния между операторами.
Где узнать больше