Розробка системи ідентифікації (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) на блокчейні

Децентралізовані ідентифікатори (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, методи автентифікації.

{
    "@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"
        }
    ]
}

Перевіряємі облікові дані (VC)

DID — це ідентифікатор. Verifiable Credentials — це твердження про власника DID, підписане іншим DID (видавцем).

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

Вибіркове розкриття та ZK

Повна VC розкриває всі поля. Selective Disclosure — довести тільки необхідні факти:

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

Zero-Knowledge Proofs: довести "я маю VC, який стверджує що мені > 18 років" без розкриття точної дати народження чи інших даних VC.

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

Повна архітектура SSI системи

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

Wallet: користувацьке сховище DIDs + VCs. Локальне (браузерне розширення, мобільний додаток) або кастодіальне.

Verifier: сервіс, що отримує VPs (Verifiable Presentation) і верифікує підписи.

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

Revocation Registry: список відкликаних VCs (statusList2021 стандарт — bitmap підхід ефективний на газ).

Реальні застосування

  • KYC один раз, використовувати скрізь: пройшли KYC в одного провайдера — використовуйте облікові дані скрізь без повторної верифікації
  • Академічні облікові дані: диплом як VC — миттєво перевіряється роботодавцем
  • DAO членство: VC, що підтверджує участь в DAO, права голосу
  • Професійні ліцензії: медичні, юридичні ліцензії

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