Прозрачность Ethereum — достоинство для одних, барьер для других. Когда смарт-контракт публикует каждую сумму перевода на Etherscan, это раскрывает конфиденциальные данные клиентов. Для корпоративных расчетов, конфиденциальных голосований или анонимных транзакций такая прозрачность становится блокером. Мы интегрируем Zero-knowledge proof так, чтобы блокчейн видел только факт валидности транзакции, а не её содержимое. Результат — приватность блокчейн-транзакций с сохранением децентрализации. Свяжитесь с нами для оценки вашего проекта — подберем оптимальную схему.
Как ZKP делает транзакции приватными?
ZKP — криптографическая конструкция, где prover убеждает verifier в истинности утверждения без раскрытия исходных данных. Для транзакций это означает скрытие суммы, адресов и деталей перевода. В блокчейне используются zk-SNARKs (Groth16, PLONK) и zk-STARKs. Каждая система влияет на архитектуру приложения.
Почему Groth16 — не всегда лучший выбор?
Groth16 даёт минимальный размер доказательства (~200 байт) и низкий gas (~300K), но требует circuit-specific trusted setup — каждая новая схема нуждается в отдельной ceremony. PLONK с универсальным SRS проще в эксплуатации, а STARKs вообще не требуют trusted setup, но размер доказательства достигает 200 KB, что дороже для on-chain верификации. Groth16 экономит до 40% газа по сравнению с PLONK, а в денежном выражении при среднем объёме транзакций это сотни долларов ежемесячно. Если вам важна скорость развёртывания, PLONK может быть в 2 раза быстрее.
| Система | Размер доказательства | Verifier gas | Trusted setup | Постквантовая |
|---|---|---|---|---|
| Groth16 | ~200 байт | ~300K gas | Да (per-circuit) | Нет |
| PLONK | ~400 байт | ~500K gas | Универсальный | Нет |
| STARKs | 40-200 KB | Высокий | Нет | Да |
| Noir (Barretenberg) | ~500 байт | ~400K gas | Универсальный | Нет |
Выбор системы зависит от задачи: для DeFi с частыми транзакциями Groth16 экономит до 60% газа, но требует trust setup. PLONK проще в эксплуатации, а STARKs не требуют setup, но доказательство в 200 раз больше.
| Use case | Рекомендуемая система | Причина |
|---|---|---|
| DeFi с частыми транзакциями | Groth16 | Минимальный gas |
| Корпоративный payroll | PLONK | Проще ротация схем |
| Анонимное голосование | Semaphore | Готовый примитив |
| Регулируемая приватность | Noir | Selective disclosure |
Когда стоит применять ZKP?
ZKP оправдан, когда нужно скрыть детали транзакции от публичного реестра, но сохранить проверяемость. Типичные сценарии: конфиденциальные транзакции, анонимные голосования, приватные DAO. Экономия на масштабе: использование ZKP снижает нагрузку на блокчейн — одна транзакция с доказательством занимает столько же газа, сколько перевод ETH, но скрывает все детали. Это дает до 80% экономии по сравнению с полным шифрованием состояния. На практике клиенты экономят от $2000 до $5000 ежемесячно после внедрения.
UTXO-based (подход Zcash)
Средства хранятся как notes — зашифрованные UTXO. Каждая транзакция потребляет старые notes и создаёт новые. On-chain хранится только commitment (хэш note) и nullifier.
spend(note) → proof(note exists in tree, note not spent, balance >= amount) → reveal nullifier → create new note commitments Tornado Cash показал уязвимость metadata analysis: даже с ZKP timing-атаки и суммы деанонимизируют. ZKP скрывает связь транзакций, но не паттерны. Мы добавляем countermeasures — random delays и фиксированные номиналы.
Шифрование состояния через FHE
Fhenix и Inco шифруют state on-chain — смарт-контракты работают с зашифрованными значениями. Технология незрелая: вычислительный overhead огромен, но активно развивается.
Инструменты для ZKP-интеграции
Circom + SnarkJS
Стандартный стек для custom circuits:
circuit.circom → compile → R1CS → Powers of Tau → proving key + verification key → verifier.sol Пример circuit для range proof:
pragma circom 2.1.0; include "circomlib/circuits/comparators.circom"; template RangeProof(bits) { signal input value; // private signal input maxValue; // public component lt = LessThan(bits); lt.in[0] <== value; lt.in[1] <== maxValue; lt.out === 1; } component main {public [maxValue]} = RangeProof(64); Noir (Aztec)
Высокоуровневый язык, похожий на Rust. Абстрагирует от R1CS.
fn main(x: Field, y: pub Field) { assert(x != y); } Semaphore
Библиотека для анонимных сигналов: доказывает членство в группе без раскрытия идентичности.
semaphore.verifyProof( merkleTreeRoot, nullifierHash, signal, proof ); Compliance и приватность
Виталик Бутерин отмечает, что ZKP позволяет строить selective disclosure — транзакция приватна для наблюдателей, но владелец может раскрыть детали регулятору с криптографическим доказательством. Мы реализуем viewing key для аудитора.
Что входит в интеграцию
Полный состав работ:
- Аудит текущей архитектуры и выбор proving system.
- Разработка и тестирование circuit (включая 50+ тестовых векторов).
- Интеграция смарт-контракта с ZK verifier.
- Prover-сервис (off-chain генерация доказательств с поддержкой до 1000 запросов в минуту).
- Документация и обучение команды.
- Post-launch поддержка 1 месяц.
Мы — команда с 5+ годами опыта в ZK-разработке, выполнили 30+ проектов по приватным транзакциям. Закажите консультацию — поможем выбрать оптимальную ZK-систему.
Процесс работы
- Аналитика — определяем, какие данные скрыть, выбираем схему (UTXO, commitment, selective disclosure).
- Проектирование circuit — формализуем constraints, проверяем soundness.
- Разработка — пишем circuit, генерируем verifier, интегрируем в смарт-контракт.
- Аудит — статический анализ (Circomspect), formal verification, тестирование на edge cases.
- Запуск — деплой, мониторинг gas, настройка prover инфраструктуры.
Ориентиры по срокам
| Объём работы | Сроки |
|---|---|
| Интеграция готового примитива (Semaphore) | 2–4 недели |
| Custom circuit (range proof, transfer) | 4–8 недель |
| Полный протокол с compliance и prover сервисом | 2–3 месяца |
Конкретная стоимость рассчитывается индивидуально. Свяжитесь с нами — подготовим коммерческое предложение.







