Разработка системы децентрализованной идентификации (DID) на блокчейне

OAuth, Social Login, ручной KYC — каждое новое приложение требует повторной верификации. Данные текут, аккаунты взламывают. **Decentralized Identifiers (DID)** по стандарту W3C решают эту проблему раз и навсегда. Мы разрабатываем DID-системы под ключ: от смарт-контрактов до интеграции с кошельками.

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

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. Аналитика: аудит требований и сценариев использования (1–2 недели).
  2. Проектирование: выбор DID-метода, стека, архитектуры смарт-контрактов.
  3. Разработка: смарт-контракты (EVM, Solana), интеграция кошельков, lifecycle VC.
  4. Тестирование: unit-тесты, интеграционные тесты, gas-бенчмарки.
  5. Деплой: на 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-системы под ключ — получите консультацию.