При разработке системы верификации credentials для DeFi-протокола мы столкнулись с необходимостью проверять KYC-статус пользователей без раскрытия их персональных данных. Стандартная верификация на блокчейне раскрывает все атрибуты credential, что нарушает конфиденциальность. Решение — verifiable credentials с использованием ZK-proof (Groth16 или PLONK), которые позволяют доказать только нужный факт. Такая инфраструктура стандартизирована W3C (Стандарт W3C Verifiable Credentials) и поддерживается кошельками (Metamask, WalletConnect) и протоколами. Мы реализуем полный цикл: выпуск, хранение, верификацию и отзыв цифровых credentials на основе стандартов W3C Verifiable Credentials. Система может интегрироваться с существующими KYC-провайдерами (Persona, Jumio) и работать на Ethereum, Polygon или Arbitrum. Экономия на газе при использовании ZK-proof на L2 составляет до 70% — при 1000 верификаций в день это позволяет сэкономить более $500 в месяц.
Архитектура верификации на блокчейне
Система строится из трёх ключевых компонентов:
- Issuer — доверенная организация (KYC-провайдер, учебное заведение, DAO), которая выпускает подписанные credentials через свой DID.
- Holder — пользователь, хранящий credentials (например, в кошельке или с помощью Polygon ID).
- Verifier — протокол или dApp, который проверяет credentials перед предоставлением доступа.
Верификатор генерирует уникальный challenge (nonce), holder включает его в Verifiable Presentation и подписывает. Это предотвращает replay attacks: презентация действительна только для данного запроса.
// Пользователь создаёт presentation const presentation = { "@context": ["https://www.w3.org/2018/credentials/v1"], "type": ["VerifiablePresentation"], "verifiableCredential": [kycCredential], "proof": { "type": "Ed25519Signature2020", "challenge": nonce, "domain": "app.example.com", "created": new Date().toISOString(), "verificationMethod": `did:ethr:${userAddress}#controller`, "proofPurpose": "authentication", "jws": await signPresentation(nonce) } }; Необходимость ZK-верификации
Стандартная верификация раскрывает весь credential: протокол видит эмитента, дату выдачи и все атрибуты. ZK-proof (Groth16 или PLONK) меняет это: пользователь доказывает факт («у меня есть действующий KYC credential») без раскрытия содержимого. Такой подход требуется для:
- DeFi lending — проверить, что заёмщик прошёл KYC, но не раскрывая его личность.
- DAO governance — дать право голоса только обладателям Contributor SBT, не показывая, кто именно.
- Compliant DEX — разрешить торговлю только для верифицированных адресов из разрешённых юрисдикций.
ZK-proof ускоряет проверку в 3–5 раз по сравнению с полной верификацией (при использовании Plookup-фреймворков) и обеспечивает конфиденциальность, требуемую GDPR.
Как ZK-proof защищает приватность?
ZK-proof позволяет верификатору убедиться в достоверности утверждения, не видя исходных данных. Например, пользователь доказывает, что его возраст больше 18, не предъявляя паспорт. Это достигается через циркуиты circom и snarkjs. On-chain registry хранит только хеш или снимок состояния, а полные credentials остаются у пользователя.
Что такое on-chain registry?
On-chain registry — это смарт-контракт, который хранит ссылки на актуальные credentials или их отпечатки. При отзыве credential эмитент обновляет registry, и верификатор проверяет статус. Такой подход обеспечивает прозрачность и неизменяемость, но требует управления газом. Мы оптимизируем gas consumption за счёт хранения только данных, необходимых для верификации.
Наш подход: что входит в разработку
Мы проектируем систему под ключ с нуля или интегрируемся с существующей архитектурой. В рамках разработки мы:
- Выбираем стандарт (W3C VC + DID или Polygon ID для ZK).
- Разворачиваем on-chain Registry смарт-контракт на Ethereum/Polygon/Arbitrum (по вашему выбору).
- Интегрируем trusted issuers (Persona, Jumio, Onfido или собственный).
- Разрабатываем Verifier SDK (ethers.js, viem) для использования в протоколе.
- Реализуем ZK-циркуиты (circom + snarkjs) и верификатор на смарт-контракте (при необходимости).
- Проводим аудит безопасности (Slither, Mythril, Echidna fuzzing).
- Передаём документацию, тесты и инструкцию по развёртыванию.
Сравнение методов верификации
| Метод | Приватность | Стоимость gas (L2) | Время проверки | Поддержка стандартов |
|---|---|---|---|---|
| Стандартная верификация VC | Низкая (раскрывает все данные) | ~50 000 gas | <1 сек | W3C VC + DID |
| ZK-proof (Groth16) | Высокая (только факт) | ~300 000 gas | 2–3 сек | Polygon ID, circom |
| ZK-proof (PLONK) | Высокая (только факт) | ~200 000 gas | 1–2 сек | PLONK, Halo2 |
| On-chain commitment + off-chain verif | Средняя (хеш) | ~30 000 gas | <1 сек | Кастомный |
Этапы разработки
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика | 1–2 недели | Техническое задание, выбор стека |
| Проектирование | 1–2 недели | Архитектура смарт-контрактов и ZK-циркуитов |
| Реализация | 4–8 недель | Контракты, циркуиты, SDK, тесты |
| Аудит | 1–2 недели | Отчёт безопасности |
| Деплой | 1 неделя | Развёртывание на сети, интеграция |
| Поддержка | 3 месяца | Документация, обучение, доработки |
Процесс работы
- Аналитика — уточняем типы credentials, число issuer'ов, требования к приватности.
- Проектирование — выбираем стек (Foundry/Hardhat, circom/snarkjs), архитектуру смарт-контрактов.
- Реализация — пишем контракты, ZK-циркуиты, SDK, тесты (unit + integration).
- Аудит — внутренний и внешний аудит безопасности.
- Деплой — развёртываем на выбранной сети, интегрируем с вашим протоколом.
- Поддержка — документация, обучение команды, гарантийная поддержка 3 месяца.
Пример конфигурации circom для KYC
pragma circom 2.0.0; include "../../node_modules/circomlib/circuits/comparators.circom"; template KYCCredential(ageThreshold) { signal input age; signal input country; signal input isKYC; signal output valid; component ageCheck = GreaterThan(32); ageCheck.in[0] <== age; ageCheck.in[1] <== ageThreshold; valid <== ageCheck.out * isKYC; } Сроки и что вы получите
Разработка полной credential verification системы занимает 8–16 недель в зависимости от сложности. Стоимость рассчитывается индивидуально после аудита требований. Оцените ваш проект — свяжитесь с нами для консультации.
Отметим: что вы получите:
- Деплоимые смарт-контракты (Registry + Verifier) с открытым кодом.
- Verifier SDK (TypeScript) для интеграции в ваш протокол.
- ZK-циркуиты (если требуется) с аудитом.
- Документацию по архитектуре, деплою и эксплуатации.
- Поддержку 3 месяца и доработки по вашему ТЗ.
Опыт нашей команды — 5+ лет в блокчейн-разработке, 10+ проектов в DeFi, NFT и identity. Мы гарантируем работоспособность и прохождение аудита безопасности. Закажите разработку — получите надёжную инфраструктуру верификации.







