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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы идентификации (DID) на блокчейне
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

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

Этапы блокчейн-разработки

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

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

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

Decentralized Identifiers (DID) — W3C стандарт для самосуверенной идентичности. Вместо того чтобы ваша идентичность существовала в базах данных Google, Facebook или государства — DID контролируете вы сами. Никто не может отозвать вашу идентичность, заморозить аккаунт или раскрыть данные третьим сторонам без вашего ведома.

DID структура

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 — через веб-домен.

DID Document: JSON документ связанный с DID. Содержит публичные ключи, service endpoints, authentication methods.

{
    "@context": ["https://www.w3.org/ns/did/v1"],
    "id": "did:ethr:0x742d35Cc...",
    "verificationMethod": [
        {
            "id": "did:ethr:0x742d35Cc...#controller",
            "type": "EcdsaSecp256k1RecoveryMethod2020",
            "controller": "did:ethr:0x742d35Cc...",
            "ethereumAddress": "0x742d35Cc..."
        }
    ],
    "authentication": ["did:ethr:0x742d35Cc...#controller"],
    "service": [
        {
            "id": "did:ethr:0x742d35Cc...#messaging",
            "type": "DIDComm",
            "serviceEndpoint": "https://agents.example.com"
        }
    ]
}

Verifiable Credentials (VC)

DID — это идентификатор. Verifiable Credentials — это утверждения о держателе DID, подписанные другим DID (issuer).

{
    "@context": ["https://www.w3.org/2018/credentials/v1"],
    "type": ["VerifiableCredential", "UniversityDegreeCredential"],
    "issuer": "did:web:university.example.edu",
    "issuanceDate": "2024-06-01T00:00:00Z",
    "credentialSubject": {
        "id": "did:ethr:0xGraduateAddress",
        "degree": {
            "type": "Bachelor",
            "name": "Computer Science"
        }
    },
    "proof": {
        "type": "Ed25519Signature2020",
        "created": "2024-06-01T12:00:00Z",
        "verificationMethod": "did:web:university.example.edu#key-1",
        "proofPurpose": "assertionMethod",
        "jws": "eyJhbGciOiJFZERTQS..."
    }
}

Реализация DID Registry

contract DIDRegistry {
    // DID Document attributes
    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;
    }
}

Это упрощённая версия ethr-did-registry — стандартный контракт от uPort/Consensys.

DID Resolver

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...');

Selective Disclosure и ZK

Полное VC раскрывает все поля. Selective Disclosure — доказать только нужные факты:

BBS+ Signatures: криптографическая схема позволяющая селективно раскрывать поля VC с математическим доказательством что они часть оригинального документа.

Zero-Knowledge Proofs: доказать «у меня есть VC утверждающий что мне > 18 лет» без раскрытия точной даты рождения или каких-либо других данных VC.

Polygon ID: реализация ZK-based verifiable credentials на основе Iden3 protocol. Holder доказывает claims через zkSNARK без раскрытия самого VC.

Архитектура полной SSI системы

Issuer Service: backend сервис для организаций выпускающих VC (университеты, KYC провайдеры, DAO).

Wallet: пользовательское хранилище DID + VC. Локальное (browser extension, mobile app) или custody.

Verifier: сервис принимающий VP (Verifiable Presentation) и верифицирующий подписи.

Registry: смарт-контракт для DID Documents и схем VC.

Revocation Registry: список отозванных VC (statusList2021 стандарт — bitmap approach эффективный по газу).

Реальные применения

  • KYC once, use everywhere: прошёл KYC у одного провайдера — используешь credential везде без повторной верификации
  • Academic credentials: диплом как VC — верифицируется работодателем мгновенно
  • DAO membership: VC подтверждающий участие в DAO, права голоса
  • Professional licenses: медицинские, юридические лицензии

Разработка DID системы от нуля — 8-16 недель. Интеграция готовых компонентов (Veramo, SpruceID, Polygon ID) для конкретного use case — 3-6 недель.