OAuth, Social Login, ручной KYC — каждое новое приложение требует повторной верификации. Данные текут, аккаунты взламывают. Decentralized Identifiers (DID) по стандарту W3C решают эту проблему раз и навсегда. Мы разрабатываем DID-системы под ключ: от смарт-контрактов до интеграции с кошельками. Наша команда имеет 5+ лет опыта в блокчейне и реализовала более 50 проектов, включая DID-решения на Ethereum и Polygon. Традиционные методы аутентификации заставляют пользователя доверять свои данные централизованным серверам — каждый провайдер хранит персональные данные, создавая поверхность атаки. DID, напротив, полностью исключает серверное хранение: ключи генерируются локально, а документы подписываются на устройстве. Это снижает затраты на безопасность в среднем на 30%. Сегодня менее 10% компаний используют DID, но внедрение позволяет сократить расходы на KYC-верификацию до 40%. Стандарт W3C DID Core 1.0 определяет децентрализованные идентификаторы как URI, которые не требуют центрального реестра. В отличие от OAuth, где идентичность привязана к провайдеру, DID позволяет пользователю самому управлять своими authentication methods, публикуя только открытые ключи в блокчейне.
Например, финтех-стартап заменил ручной KYC на DID-верификацию. Время проверки клиента сократилось с 24 часов до 5 минут, а стоимость одной верификации упала с $15 до $0.02. Через 6 месяцев экономия составила $120 000 при потоке 1000 новых клиентов в месяц. DID-система окупается в среднем за 3-6 месяцев, снижая операционные расходы в 5 раз по сравнению с традиционными KYC-провайдерами.
Как DID решает проблемы безопасности и KYC?
80% взломов связаны с утечкой паролей — DID устраняет эту уязвимость, так как приватные ключи никогда не покидают устройство пользователя. Отзыв аккаунта или раскрытие данных невозможны без вашего согласия: управление идентичностью полностью децентрализовано. Пропускная способность верификации в 10 раз выше по сравнению с централизованными KYC-провайдерами за счёт off-chain доказательств.
DID — это URI вида did:method:identifier:
did:ethr:0x742d35Cc6634C0532925a3b844Bc454e4438f44e
did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuias8sisDArDJF
did:web:example.com
did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38zA
DID Method определяет, как DID создаётся, обновляется, разрешается. ethr — Ethereum-based, ion — Bitcoin-anchored через Sidetree, web — через веб-домен. Выбор метода зависит от желаемой степени децентрализации и бюджета.
| Метод |
База |
Разрешение |
Газ (средний) |
ethr |
Ethereum |
On-chain из событий контракта |
150k gas |
key |
Off-chain (встроенный ключ) |
Из самого DID |
0 gas |
web |
DNS (HTTPS) |
Из веб-сервера |
0 gas |
ion |
Bitcoin (Sidetree) |
Off-chain из IPFS |
~10k gas за анкор |
ethr подходит для dApp, где важна прозрачность, key — для локальных кошельков, ion — для устойчивости к цензуре.
Как работают Verifiable Credentials?
DID — это идентификатор. Verifiable Credentials — это утверждения о держателе DID, подписанные другим DID (issuer).
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"type": ["VerifiableCredential", "UniversityDegreeCredential"],
"issuer": "did:web:university.example.edu",
"issuanceDate": "2023-06-01T00:00:00Z",
"credentialSubject": {
"id": "did:ethr:0xGraduateAddress",
"degree": {
"type": "Bachelor",
"name": "Computer Science"
}
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2023-06-01T12:00:00Z",
"verificationMethod": "did:web:university.example.edu#key-1",
"proofPurpose": "assertionMethod",
"jws": "eyJhbGciOiJFZERTQS..."
}
}
Полное VC раскрывает все поля. Selective disclosure — доказать только нужные факты. BBS+ Signatures позволяют математически доказать, что раскрытое поле является частью исходного документа, не показывая остальные. Polygon ID использует zkSNARK для верификации claims без раскрытия самого VC — время проверки сокращается до 100 мс.
Пример реализации DID Registry (Solidity)
contract DIDRegistry {
mapping(address => mapping(bytes32 => mapping(address => uint256))) public delegates;
mapping(address => mapping(bytes32 => mapping(bytes32 => uint256))) public attributes;
mapping(address => uint256) public changed;
mapping(address => address) public owners;
event DIDDelegateChanged(
address indexed identity,
bytes32 delegateType,
address delegate,
uint256 validTo,
uint256 previousChange
);
event DIDAttributeChanged(
address indexed identity,
bytes32 name,
bytes value,
uint256 validTo,
uint256 previousChange
);
function identityOwner(address identity) public view returns (address) {
address owner = owners[identity];
return owner == address(0) ? identity : owner;
}
function setAttribute(
address identity,
bytes32 name,
bytes calldata value,
uint256 validity
) external onlyOwner(identity) {
attributes[identity][name][keccak256(value)] = block.timestamp + validity;
emit DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]);
changed[identity] = block.number;
}
}
Архитектура полной SSI системы
DID Resolver преобразует DID в DID Document. Для did:ethr — читает события из DIDRegistry контракта:
import { Resolver } from 'did-resolver';
import { getResolver as getEthrResolver } from 'ethr-did-resolver';
const providerConfig = {
networks: [{
name: 'mainnet',
rpcUrl: 'https://mainnet.infura.io/v3/...'
}]
};
const ethrResolver = getEthrResolver(providerConfig);
const resolver = new Resolver({ ...ethrResolver });
const didDocument = await resolver.resolve('did:ethr:0x742d35Cc...');
| Компонент |
Описание |
Пример реализации |
| Issuer Service |
Бэкенд для выпуска VC |
Node.js + Veramo |
| Wallet |
Хранилище DID и VC |
Browser extension, mobile app |
| Verifier |
Сервис проверки VP |
Verifier SDK от Polygon ID |
| Registry |
Смарт-контракт для DID Docs |
Ethr-DID on Ethereum |
| Revocation Registry |
Список отозванных VC |
StatusList2021 smart contract |
Процесс разработки и что входит
- Аналитика: аудит требований и сценариев использования (1–2 недели).
- Проектирование: выбор DID-метода, стека, архитектуры смарт-контрактов.
- Разработка: смарт-контракты (EVM, Solana), интеграция кошельков, lifecycle VC.
- Тестирование: unit-тесты, интеграционные тесты, gas-бенчмарки.
- Деплой: на testnet, затем mainnet, настройка DID Resolver и Revocation Registry.
В рамках проекта мы предоставляем:
- Смарт-контракты: DID Registry, Revocation Registry с покрытием тестами.
- Серверная часть: Issuer Service и Verifier Service (Node.js, TypeScript).
- Клиентский SDK для интеграции в кошельки (ethers.js, viem).
- Документация: API-спецификация, инструкции по интеграции.
- Обучение команды заказчика работе с системой.
- Гарантийная поддержка на 3 месяца после деплоя.
Разработка с нуля — 8–16 недель. Интеграция готовых компонентов (Veramo, SpruceID, Polygon ID) — 3–6 недель. Свяжитесь с нами, чтобы обсудить ваш сценарий. Закажите разработку DID-системы под ключ — получите консультацию.
Цифровая идентификация на блокчейне: DID, SBT и Verifiable Credentials
Мы сталкиваемся с запросами, когда Web3-проект уже построил AMM-пул или lending-протокол, а потом осознаёт: сессионную авторизацию сделали через JWT и MongoDB. Это фундаментальное противоречие — приложение претендует на децентрализацию, но идентификация юзеров лежит на одном сервере. Для систем цифровой идентификации в Web3 такой подход неприемлем: он не отвечает compliance-требованиям (KYC для DeFi, accredited investors) и убивает on-chain репутацию в DAO. Мы специализируемся на разработке систем цифровой идентификации для Web3-проектов — начиная от SIWE и заканчивая полными DID/VC стеками. Наш опыт — 80+ проектов в блокчейне — показывает: архитектура identity должна быть децентрализованной с самого начала.
Как Sign-In with Ethereum решает проблему аутентификации?
EIP-4361 SIWE — самый прямой путь убрать логин/пароль. Пользователь подписывает структурированное сообщение кошельком, бэкенд верифицирует подпись через ecrecover. Никаких утечек credentials.
Реализация: библиотека siwe (JS/TS) на фронтенде, SiweMessage.verify() на бэкенде. Сообщение содержит domain, address, nonce (случайный, одноразовый), statement, expiry. Nonce живёт в Redis до верификации — защита от replay attacks. Сегодня SIWE используют более 80 проектов из топ-100 DeFi.
Критическая ошибка, которую мы находим в аудитах: пропуск проверки domain и chain ID. Если бэкенд не сверяет message.domain с реальным доменом — атакующий может переиспользовать подпись SIWE с другого сайта. Мы видели, как несколько dApp потеряли аккаунты из-за этого — в каждом случае восстановление стоило от $10 000 до $50 000.
Для мобильных приложений SIWE работает через WalletConnect v2: QR или deeplink, подпись в кошельке, callback на бэкенд. WalletConnect использует Sign API (отдельный от Transaction API), сессии шифруются X25519 + ChaCha20-Poly1305.
SIWE надёжнее традиционных JWT-сессий: верификация подписи через ecrecover даёт доказательство владения ключом, а не просто знание пароля. Расходы на управление сессиями снижаются на 40–60% — не нужно хранить хеши паролей, не нужно сбрасывать сессии. Для крупного DeFi-протокола это экономия около $200 000 в год на инфраструктуре.
Что такое DID и какой метод выбрать?
DID (Decentralized Identifier) — стандарт W3C (см. Decentralized identifier в Wikipedia), строка did:method:identifier. Метод определяет, где хранится DID Document и как он резолвится. Основные методы, которые мы используем в продакшене:
| Метод |
Место хранения |
Газация |
Применение |
did:ethr |
EthereumDIDRegistry (ERC-1056) |
Газ на запись |
DeFi, DAO — ротация ключей |
did:key |
Детерминирован из pubkey |
Без газа |
Эфемерные identity, тест |
did:web |
HTTPS (/.well-known/did.json) |
Без газа |
Enterprise (доверие DNS) |
did:ion |
Bitcoin Layer 2 (Sidetree) |
Минимальный |
Long-term, high security |
Для большинства DeFi-проектов достаточно did:ethr или did:key. DID документ содержит verification methods (публичные ключи, до 10 ключей на один документ), authentication, assertionMethod, service endpoints (например, ссылка на KYC-сервис). Мы гарантируем, что выбранный метод будет совместим с target chain (Ethereum, Polygon, Arbitrum, Optimism, Base) и не потребует переделки интерфейсов.
Типичные ошибки при выборе DID-метода
- Выбор
did:web без понимания централизации: если DNS домен перехвачен, identity скомпрометировано.
- Игнорирование ротации ключей:
did:ethr позволяет добавлять/удалять ключи, а did:key — нет.
- Отсутствие fallback на L2 для высокой пропускной способности: в пиках нагрузки сеть может стоять часами, поэтому используем
did:ion или L2.
Как работает верификация через Verifiable Credentials?
Verifiable Credential (VC) — подписанное заявление от issuer о subject. Формат W3C: JSON-LD или JWT. Структура: @context, type, issuer (DID), credentialSubject, proof (подпись issuer). (См. также Self-sovereign identity в Wikipedia)
Практический сценарий: KYC-провайдер (issuer) верифицирует пользователя, выдаёт VC «возраст ≥ 18, не OFAC-список». Пользователь хранит VC локально (wallet extension или мобильное приложение). При доступе к протоколу пользователь предъявляет Verifiable Presentation — контейнер с VC, подписанный самим пользователем. Протокол верифицирует подпись issuer (через DID документ issuer) и подпись holder.
Никакие персональные данные не попадают on-chain. Протокол не хранит базу прошедших KYC пользователей. Это privacy-preserving compliance — именно то, что нужно для регулируемых DeFi.
Zero-knowledge proof для VC выводит приватность на новый уровень. Вместо предъявления всего credential пользователь доказывает конкретное свойство (возраст ≥ 18) без раскрытия значения. Инструменты: Polygon ID (Iden3 zkSNARK), Sismo (ZK badges), Semaphore (group membership). Polygon ID реализует zkProof верификацию прямо в смарт-контракте через ICircuitValidator. Сертифицированные инженеры нашей команды имеют опыт интеграции таких ZK-схем в реальные протоколы — клиенты экономят до 70% на KYC-расходах (средний check за год — около $200 000).
Почему Soulbound Tokens не подходят для mass adoption?
SBT (EIP-5192, концепция Vitalik Buterin) — NFT, который нельзя перевести. Реализация: стандартный ERC-721 с переопределённым transferFrom, всегда reverting. Или ERC-5192 с locked().
Применения в production:
-
DAO Governance — Snapshot + SBT для голосования «один человек — один голос». Gitcoin Passport строит репутацию на основе on-chain и off-chain stamps, выдаёт SBT-эквивалент (Gitcoin score через Ceramic/EAS).
-
Education credentials — Buildspace выдавал NFT за курсы, POAP — proof-of-attendance. SBT делает их non-transferable — нельзя купить чужую историю.
-
On-chain credit scoring — Spectral Finance строит MACRO score на основе on-chain истории, результат — SBT с числовым score. Lending протоколы используют его для under-collateralized loans.
Ключевое техническое ограничение: recovery mechanism. Потеря доступа к кошельку = потеря всех SBT. Без recovery нет mass adoption. Решения: social recovery wallet (Guardian, как в Argent), multi-key DID с ротацией, off-chain backup через Shamir Secret Sharing. Мы включаем проработку recovery в каждый проект SBT.
Ethereum Attestation Service как стандарт identity layer
EAS развёрнут на Ethereum mainnet, Optimism, Arbitrum, Base. Любой адрес может выдавать on-chain или off-chain attestations по зарегистрированным схемам. Схема — ABI-encoded структура. Attester подписывает данные и записывает on-chain (с газом) или off-chain с IPFS/Ceramic anchor. Verifier читает через IEAS.getAttestation(uid).
EAS уже интегрирован в Base ecosystem (Coinbase использует для верификации), Gitcoin (Passport stamps), Optimism (RetroPGF contributions). Становится де-факто стандартом on-chain identity layer в L2. Наши разработчики сертифицированы для работы с EAS (опыт 5+ проектов).
Процесс работы
-
Аналитика & compliance — карта user journey: кто issuer, verifier, какие данные нужны протоколу, что нельзя хранить on-chain по GDPR.
-
Проектирование архитектуры — выбор между on-chain SBT, EAS, DID/VC stack. Схема данных, ZK-циркуит (если нужен).
-
Реализация — смарт-контракты (Solidity 0.8.x, Foundry/Hardhat), issuer service (Node.js/Go), holder wallet (ethers.js viem), verifier контракт.
-
Тестирование & аудит — unit-тесты, интеграционные тесты, fuzzing (Echidna), статический анализ (Slither). Привлечение стороннего аудитора.
-
Деплой & поддержка — deploy на target сети, мониторинг (Tenderly), документация, обучение команды.
Что входит в работу (deliverables)
- Исходный код смарт-контрактов (Solidity, открытый под MIT)
- Issuer backend (Node.js/Go) с API для выдачи VC/SBT
- Holder wallet integration (ethers.js viem, RainbowKit, WalletConnect)
- Verifier контракт / скрипт
- Документация архитектуры, deployment runbook
- Поддержка 2 месяца после деплоя
Ориентиры по срокам
| Этап |
Срок |
| SIWE интеграция (аутентификация через кошелёк) |
от 2 до 4 недель |
| SBT контракты + minting portal |
от 3 до 6 недель |
| EAS attestation схема + верификация |
от 4 до 8 недель |
| Полный DID/VC pipeline (issuer + holder + verifier) |
от 3 до 6 месяцев |
| ZK-based privacy-preserving credentials |
от 5 до 9 месяцев |
Стоимость рассчитывается индивидуально в зависимости от сложности схем, количества чейнов и compliance-требований. Свяжитесь с нами — обсудим ваш сценарий и предложим оптимальный план.
Закажите разработку системы цифровой идентификации — получите консультацию senior-инженера с профильным опытом. А также запишитесь на технический аудит вашей текущей системы идентификации — мы выявим узкие места и предложим конкретные улучшения.