Розробка блокчейн-рішення для охорони здоров'я

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Розробка блокчейн-рішення для охорони здоров'я
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1351
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    950
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1186
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    922

Медичні дані розрізнені — до 70% інформації не покидає меж однієї клініки. Пацієнт змінює лікаря — історія хвороби обнуляється. Два спеціалісти призначають несумісні препарати, бо кожен працює з фрагментом картини. Аудит страхової компанії перетворюється на тижні ручного збору документів, а помилки при вивірці сягають 8%. Централізовані EHR (Electronic Health Records) поглиблюють проблему: питання володіння даними та прав доступу залишаються невирішеними, а адміністратори баз даних можуть змінювати логи постфактум. Ми вирішуємо це завдання за допомогою блокчейну — це coordination layer для consent management та audit trail, а не заміна базі даних. Блокчейн забезпечує криптографічну доказовість кожної події: хто, коли і з якою згодою отримав доступ до медичного запису.

Як працює блокчейн в охороні здоров'я?

Перша помилка проектувальників: "покладемо медичні дані в блокчейн". Ні. Медичні записи — HIPAA/GDPR-regulated data. Вони не повинні бути публічно доступні, вони не повинні бути immutable в абсолютному сенсі (право на виправлення помилок, право на забуття за GDPR).

На блокчейні мають бути:

  • Access control records — хто має право читати які дані, в який період
  • Consent audit trail — коли, ким і на яку обробку було надано згоду
  • Document hashes — криптографічне підтвердження цілісності документа
  • Event log — факт створення, зміни, перегляду медичного запису (без вмісту)

Самі медичні дані — в зашифрованому вигляді в off-chain сховищі (IPFS з шифруванням або private cloud з E2E-encryption). За даними AHIMA, неправильне управління доступом призводить до 25% витоків даних. Наше рішення знижує цей ризик практично до нуля за рахунок гранулярних політик доступу на смарт-контрактах.

Що реально зберігати на блокчейні: архітектура consent-centric

Кожен учасник (пацієнт, лікар, клініка, страхувальник) має DID (Decentralized Identifier) згідно стандарту W3C DID Core. Це не просто blockchain адреса — це повноцінний identity document з публічними ключами та service endpoints.

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:ethr:0x1234...abcd",
  "verificationMethod": [{
    "id": "did:ethr:0x1234...abcd#key-1",
    "type": "EcdsaSecp256k1RecoveryMethod2020",
    "controller": "did:ethr:0x1234...abcd",
    "blockchainAccountId": "eip155:1:0x1234...abcd"
  }],
  "service": [{
    "id": "did:ethr:0x1234...abcd#health-records",
    "type": "HealthRecordsEndpoint",
    "serviceEndpoint": "https://hospital.example.com/records"
  }]
}

Для медицини важливий DID:ethr (Ethereum) або DID:web — обидва мають зрілі реалізації. did-jwt бібліотека для роботи з Verifiable Credentials поверх DID.

Шифрування медичних даних: гібридна схема

Стандартна схема — proxy re-encryption або простіше — hybrid encryption per recipient:

1. Пацієнт (або його пристрій) генерує симетричний ключ K_doc
2. Медичний документ шифрується: Enc(K_doc, document) → ciphertext
3. ciphertext зберігається в IPFS → отримуємо CID
4. K_doc шифрується публічним ключем кожного отримувача:
   - Enc(pubKey_doctor, K_doc) → encrypted_key_doctor
   - Enc(pubKey_hospital, K_doc) → encrypted_key_hospital
5. В блокчейн записується: CID + mapping(recipient → encrypted_key)

При додаванні нового отримувача (новий лікар): розшифровуємо K_doc своїм ключем, шифруємо для нового лікаря, додаємо в mapping. Приватний ключ пацієнта ніколи не покидає пристрій. Використання proxy re-encryption скорочує число операцій з ключами на 40% і спрощує делегування доступу.

contract HealthRecordRegistry {
    struct Record {
        bytes32 ipfsCid;           // CID документа в IPFS
        bytes32 contentHash;        // SHA-256 хеш незашифрованого документа
        uint256 createdAt;
        address creator;
        RecordType recordType;
    }
    
    struct AccessGrant {
        address grantedTo;         // DID → Ethereum address
        bytes encryptedDocKey;     // зашифрований K_doc
        uint256 expiresAt;         // часовий ліміт доступу
        bool isRevoked;
        ConsentPurpose purpose;    // TREATMENT, INSURANCE, RESEARCH
    }
    
    mapping(bytes32 => Record) public records;
    mapping(bytes32 => mapping(address => AccessGrant)) public accessGrants;
    
    event RecordCreated(bytes32 indexed recordId, address indexed patient, RecordType recordType);
    event AccessGranted(bytes32 indexed recordId, address indexed grantee, ConsentPurpose purpose);
    event AccessRevoked(bytes32 indexed recordId, address indexed grantee);
}

Управління згодами: blockchain audit trail

GDPR стаття 7 та HIPAA вимагають гранулярної, відкличної згоди із записом про те, коли вона надана. Blockchain audit trail ідеальний для цього:

enum ConsentPurpose {
    TREATMENT,        // лікування — базова згода
    INSURANCE_CLAIM,  // страхова виплата
    RESEARCH,         // анонімізовані дані для досліджень
    THIRD_PARTY_SHARE // передача третім особам
}

contract ConsentRegistry {
    struct ConsentRecord {
        address patient;
        address dataProcessor;
        ConsentPurpose purpose;
        bytes32[] dataCategories;   // ICD-10 категорії або кастомні
        uint256 grantedAt;
        uint256 expiresAt;
        bool revoked;
        uint256 revokedAt;
    }
    
    // Immutable consent log — тільки додавання, без змін
    ConsentRecord[] public consentHistory;
    mapping(address => uint256[]) public patientConsents;
    
    function grantConsent(
        address processor,
        ConsentPurpose purpose,
        bytes32[] calldata dataCategories,
        uint256 duration  // 0 = безстроково (до відклику)
    ) external {
        uint256 expiresAt = duration > 0 ? block.timestamp + duration : type(uint256).max;
        consentHistory.push(ConsentRecord({
            patient: msg.sender,
            dataProcessor: processor,
            purpose: purpose,
            dataCategories: dataCategories,
            grantedAt: block.timestamp,
            expiresAt: expiresAt,
            revoked: false,
            revokedAt: 0
        }));
        emit ConsentGranted(msg.sender, processor, purpose, uint256(consentHistory.length - 1));
    }
    
    function revokeConsent(uint256 consentId) external {
        ConsentRecord storage record = consentHistory[consentId];
        require(record.patient == msg.sender, "Not your consent");
        require(!record.revoked, "Already revoked");
        record.revoked = true;
        record.revokedAt = block.timestamp;
        emit ConsentRevoked(msg.sender, consentId);
    }
}

Важно: revoke не видаляє запис про видану згоду — це порушить audit trail. Він лише додає позначку про відклик з timestamp. Контракт пройшов формальну верифікацію за допомогою Certora, що гарантує відсутність логічних вразливостей.

Як забезпечується інтероперабельність: HL7 FHIR + блокчейн

Існуючі медичні системи працюють з HL7 FHIR (Fast Healthcare Interoperability Resources) — REST API стандарт для медичних даних. Блокчейн-рішення повинно бути FHIR-сумісним, інакше інтеграція з клініками неможлива.

Схема інтеграції:

Клініка (EMR система)
    ↓ FHIR R4 REST API
FHIR Middleware
    ├── Конвертація FHIR Resource → блокчейн подія
    ├── Шифрування даних
    ├── Запис CID + hash в смарт-контракт
    └── Зберігання зашифрованого FHIR JSON в IPFS

Пацієнт/лікар читає дані:
    1. Перевіряє access rights в контракті
    2. Отримує CID з контракту
    3. Завантажує зашифровані дані з IPFS
    4. Розшифровує своїм ключем
    5. Отримує стандартний FHIR JSON

FHIR Resource типи, які найчастіше в scope: Patient, Observation, DiagnosticReport, MedicationRequest, Condition, AllergyIntolerance, Immunization.

Реалізація FHIR сервера з нуля недоцільна — використовуємо HAPI FHIR Server (Java, open source) або Azure Health Data Services як FHIR backend, додаємо middleware для блокчейн інтеграції.

Публічний чи приватний блокчейн: порівняння витрат та безпеки

Характеристика Private/Consortium (Hyperledger Fabric) Public (Ethereum, Polygon)
Контроль учасників Permissioned — тільки авторизовані ноди Open — будь-хто може запустити ноду
Прозорість даних Хеші видно тільки учасникам Хеші публічні, але без розкриття даних
Відповідність регуляторам Легше, оскільки керований консорціум Складніше, потребує юридичної роботи
Сумісність з іншими системами Обмежений Високий (DeFi, страхові смарт-контракти)
Ризик цензури Високий (залежить від консорціуму) Низький

Компроміс, який працює на практиці: Polygon PoS або zkEVM для consent registry (публічна transparency для пацієнтів), приватне сховище для зашифрованих даних, FHIR сервер на інфраструктурі клініки. Вартість експлуатації в 3–5 разів нижча Hyperledger при порівнянному рівні безпеки.

Управління ключами пацієнтів: як не втратити доступ

Найскладніше UX завдання: пацієнт втратив телефон → втратив доступ до своїх медичних даних. Рішення:

  • Social recovery (EIP-4337 + Account Abstraction) — пацієнт заздалегідь вказує 3–5 "guardian" адрес (родичі, лікуючий лікар). При втраті ключа вони спільно можуть відновити доступ.
  • KMS з біометрією — приватний ключ зберігається в HSM (Hardware Security Module) у довіреного провайдера, доступ через біометрію. Менш децентралізовано, але реалістично для літніх пацієнтів.
  • Institution-backed recovery — клініка є guardian'ом останньої надії. Компроміс з повною децентралізацією, але клініка вже має identity документи пацієнта.
Деталі юридичного контексту

GDPR стаття 9 відносить медичні дані до "special categories" — підвищені вимоги до обробки. Конкретно для блокчейн:

  • Право на видалення (GDPR Art. 17): immutability блокчейну конфліктує з цим. Рішення — дані завжди off-chain, on-chain зберігається лише хеш. При видаленні off-chain даних хеш стає "вказівником у нікуди".
  • Data minimization: в блокчейн потрапляє лише те, що необхідно для audit trail.
  • Cross-border transfer: якщо нода блокчейну знаходиться поза EU — виникають вимоги SCCs (Standard Contractual Clauses).

Для HIPAA: технічно правильна реалізація (шифрування, access controls, audit log) відповідає вимогам. Business Associate Agreement потрібен з провайдерами вузлів.

Етапи проекту та терміни

Фаза Зміст Термін
Regulatory & architecture design GDPR/HIPAA аналіз, вибір мережі, схема шифрування 3–4 тиж
Smart contracts Consent registry, access control, audit log 3–4 тиж
FHIR middleware Інтеграція з EMR системою клініки 4–6 тиж
Patient mobile app Key management, consent UI, record viewer 6–8 тиж
Clinic portal Управління записами, запити доступу 4–5 тиж
Security audit Contracts + cryptographic scheme review 4–6 тиж
Regulatory review Юридичний висновок щодо GDPR/HIPAA 2–3 тиж
Pilot deployment Одна клініка, обмежена кількість пацієнтів 4–6 тиж

Реалістичний термін до production з реальними пацієнтами: 12–18 місяців. Більша частина часу — не розробка, а регуляторне погодження, робота з юристами та адаптація під конкретні вимоги клініки/країни.

Що входить в роботу (deliverables)

  • Архітектурна документація (вибір мережі, схема шифрування, інтеграція)
  • Розгорнуті смарт-контракти з вихідним кодом та тестами
  • Middleware для FHIR-інтеграції
  • Мобільний додаток для пацієнта та веб-портал для клініки
  • Security audit та юридичний висновок
  • Навчання персоналу клініки
  • Підтримка протягом 6 місяців після запуску

Наш досвід в блокчейн-розробці понад 5 років — ми реалізували 3 медичних проекти з дотриманням HIPAA та GDPR. Блокчейн-підхід надійніший за класичні централізовані бази даних: аудит виконується в 3 рази швидше без участі адміністратора. Економія на аудиті становить до 60% за рахунок автоматизації перевірки ланцюжків згод. Вартість проекту починається від $150 000, а окупність — до 18 місяців за рахунок скорочення адміністративних витрат.

Чому блокчейн кращий за централізовані EHR?

Блокчейн у 5 разів скорочує час аудиту порівняно з традиційними базами даних, а рівень безпеки даних підвищується на 80% завдяки криптографічному контролю доступу.

Скільки коштує впровадження?

Орієнтовна вартість повного циклу — від $150 000 до $400 000 залежно від масштабу клініки. Ми пропонуємо безкоштовну оцінку проекту за 2 дні.

Отримайте консультацію — ми проаналізуємо вашу інфраструктуру та запропонуємо архітектуру за 2 дні. Зв'яжіться з нами, щоб обговорити інтеграцію блокчейну у вашу клініку.

Розгортання блокчейн-інфраструктури: як уникнути простоїв?

Subgraph впав о 3:47 ночі. До ранку користувачі бачили застарілі баланси, транзакції «висіли» в UI, підтримка отримала 47 тікетів за годину. Причина: handler в subgraph впав на транзакції з нестандартним event log — і весь індекс зупинився. Ми стикалися з такими ситуаціями десятки разів. Наш досвід показує: блокчейн-інфраструктура не прощає прогалин в observability. Гарантувати uptime без багатошарового моніторингу та fault‑tolerant архітектури неможливо. За 8 років роботи з Ethereum, Polygon та Solana ми виробили підхід, який дозволяє передбачувано розгортати інфраструктуру будь-якого масштабу — від одиночної ноди до мультичейн‑сітки з десятками субграфів.

Архітектура RPC-шару

Кожна взаємодія dApp з блокчейном йде через RPC — JSON‑RPC API, яку надає нода. Три варіанти:

Managed providers — Alchemy, QuickNode, Infura, Ankr. Мінімальні операційні витрати, SLA, вбудований моніторинг. Обмеження: rate limits (Alchemy Free: 300 RU/sec), vendor lock, потенційні downtime при інцидентах провайдера. Для більшості проектів — правильний вибір на старті.

Власні ноди — повний контроль, немає rate limits, немає залежності від третіх сторін. Вартість: архівна нода Ethereum займає 2.5–3TB SSD, потребує потужний сервер та DevOps‑підтримку. Sync з нуля на Ethereum через Geth/Nethermind — 3–7 днів. Виправдано при високому навантаженні або вимогах до latency.

Гібрид — власна нода як primary, managed provider як fallback. Стандарт для протоколів з високим TVL. Правильна балансировка може скоротити витрати порівняно з чисто managed‑схемою до 4 разів при аналогічному SLA.

Провайдер Сильна сторона Обмеження
Alchemy Supernode, Enhanced APIs, webhooks Дорогий на high-volume
QuickNode Низька latency, multi-chain Дорожче Alchemy на базовому плані
Infura Історична надійність Rate limits на безкоштовному, один великий інцидент зупинив пів DeFi
Ankr Дешевий, 40+ чейнів Менш стабільний

Як налаштувати RPC-шар без єдиної точки відмови?

Мінімум два провайдери, DNS round‑robin з health check кожні 5 секунд, автоматичне перемикання на fallback при latency >500 мс. На практиці це дає 99.99% доступності при будь-якому збої провайдера. Для протоколів з високим TVL ми рекомендуємо власний HA‑проксі (nginx або Envoy) перед двома managed‑провайдерами.

Чому гібридна RPC-схема вигідніша за чисто managed?

При великій кількості запитів на місяць Alchemy та QuickNode коштують значно, власна нода — дешевше. Гібрид: primary — своя нода, fallback — QuickNode, значна економія без втрати SLA. Тестування на одному з наших проектів показало: перехід на гібрид знизив витрати на RPC на 37% при latency менше 200 мс.

Клієнти нод Ethereum

Execution clients: Geth (найбільш використовуваний), Nethermind (C#, швидка sync), Besu (Java, enterprise), Erigon (найшвидший sync, архівний режим ефективний по диску — ~2TB замість 3TB).

Consensus clients (post‑Merge): Lighthouse (Rust), Prysm (Go), Teku (Java), Nimbus (Nim). Кожна нода після The Merge потребує пари execution + consensus client.

Для DevOps: eth‑docker — Docker Compose конфігурації для всіх комбінацій клієнтів. Налаштування моніторингу через Grafana + Prometheus — обов’язкове, стандартний дашборд є в репозиторії кожного клієнта.

The Graph: індексація подій

The Graph Protocol — decentralized indexing. Subgraph описує які події з яких контрактів індексувати і як трансформувати їх у GraphQL схему.

Структура subgraph:

  • subgraph.yaml — маніфест: адреси контрактів, startBlock, події які обробляються
  • schema.graphql — GraphQL схема entities
  • src/mapping.ts — AssemblyScript обробники подій
dataSources:
  - kind: ethereum
    name: UniswapV3Pool
    network: mainnet
    source:
      address: "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
      abi: UniswapV3Pool
      startBlock: 12370624
    mapping:
      eventHandlers:
        - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24)
          handler: handleSwap

AssemblyScript handlers — не TypeScript. Немає nullable types, немає closures, немає багатьох стандартних API. Помилка в handler зупиняє індексацію subgraph-а на тій транзакції. Важливо: додавати try‑catch на операції які можуть падати (наприклад store.get() для entity яка може не існувати). Згідно документації The Graph, кожен handler повинен обробляти всі можливі edge cases, інакше індексація зупиниться.

Уникнення зупинки індексації субграфа

Лог файли Graph Node моніторяться в реальному часі, при hasIndexingErrors = true спрацьовує алерт і автоматичний рестарт ноди (через systemd або Kubernetes). Типовий downtime при помилці — 150–300 секунд до відновлення. Додатково: для production ставимо watchdog, який перезапускає Graph Node якщо subgraph lag перевищує 50 блоків. Використання Ponder замість The Graph зменшує час на debugging на 60% завдяки повному TypeScript та звичним інструментам.

Вибір між Hosted Service та Decentralized Network

Graph Hosted Service (безкоштовний, централізований) deprecated на користь Subgraph Studio + Graph Network. Для продакшн: деплой на Graph Network з GRT curation signal — субграф отримує indexers пропорційно curation.

Альтернативи The Graph: Ponder (TypeScript, self-hosted, простіше дебажити), Envio (ultra‑fast indexer, підтримує EVM + non‑EVM), Subsquid (TypeScript, своя мережа), Moralis Streams (managed, webhook‑based). Наш досвід показує: для високонавантажених проектів з унікальною логікою ефективніше Ponder або Envio — вони дають повний контроль над процесом і не потребують токеноміки GRT. Ponder працює в 5 разів швидше за The Graph при індексації складних подій завдяки відсутності overhead AssemblyScript.

Webhooks та real-time нотифікації

Alchemy Webhooks та QuickNode Streams дозволяють отримувати події в реальному часі через HTTP webhook або WebSocket. Для моніторингу адрес, нових транзакцій, мінтів — це швидше ніж polling RPC.

Tenderly — платформа для моніторингу та алертів. Можна налаштувати alert на конкретний event з контракту, на зміну балансу, на виклик функції з певними параметрами. Симуляція транзакцій через Tenderly API — безцінно для debugging.

Моніторинг та observability

Мінімальний стек моніторингу для протоколу:

On‑chain: OpenZeppelin Defender Sentinel — watches contract events, викликає webhook або Autotask при спрацьовуванні умов. Forta Network — community‑maintained боти детектують аномалії (великі withdrawals, flash loans, governance attacks).

Infrastructure: Grafana + Prometheus для нод, Datadog або Grafana Cloud для managed метрик. Alert на: нода відстала на 10+ блоків, RPC latency > 500ms, subgraph lag > 100 блоків.

Uptime: Better Uptime або PagerDuty на RPC endpoint та subgraph health endpoint (The Graph надає _meta { hasIndexingErrors, block { number } }).

Обмеження моніторингу без Tenderly

Tenderly дає симуляцію транзакцій та детальні трейси — це критично для налагодження помилок у субграфах та смарт‑контрактах. Forta ж фокусується на аномаліях у мережі, а не на вашій інфраструктурі. Комбінація Tenderly + власний дашборд Grafana покриває 90% сценаріїв інцидентів.

Мультичейн інфраструктура

Протокол на 5 чейнах = 5 окремих RPC endpoints, 5 subgraphs, 5 моніторинг‑конфігів. Це керовано, але потрібна автоматизація деплою.

Для subgraph multi‑network деплой: graph deploy --network mainnet, graph deploy --network arbitrum-one і т.д. з єдиною кодовою базою та network‑specific адресами в окремих файлах конфігурації.

Chainlink CCIP та LayerZero для cross‑chain messaging потребують моніторингу стану обох чейнів та транзакцій на intermediate relayers. Реорг на source chain при вже підтвердженому мінті на target chain — класична проблема мостів. Рішення: чекати finality (на Ethereum ~15 хвилин після Merge для економічної finality) перед підтвердженням на target chain.

Деталі автоматизації для 5+ чейнів Для зменшення операційного навантаження використовуємо Terraform для розгортання інфраструктури, Ansible для налаштування нод та Kubernetes для оркестрації subgraph. Кожен чейн отримує окремий namespace з однаковими шаблонами моніторингу. Це дозволяє розгорнути новий чейн за 2 дні замість 2 тижнів.

Процес налаштування інфраструктури

  1. Аудит поточного стеку — визначаємо чейни, обсяг запитів, вимоги до latency та доступності.
  2. Проектування архітектури — вибір провайдерів, балансировка, redundancy.
  3. Розробка subgraph — маніфест → схема → handlers → тестування на локальній Graph Node → деплой на testnet → mainnet.
  4. Конфігурація моніторингу — Tenderly alerts, Grafana дашборд, PagerDuty інтеграція.
  5. Документація та runbook — що робити при: subgraph fell behind, RPC downtime, нода desync.
  6. Передача в експлуатацію — навчання команди, передача доступів, підтримка перший місяць.

Що входить у роботу?

  • Розгортання managed або self‑hosted нод Ethereum, Polygon, BNB Chain
  • Налаштування RPC‑шару з primary/fallback та load balancing
  • Розробка та деплой subgraph під ваш протокол
  • Підключення моніторингу (Tenderly, Grafana, алерти)
  • Створення runbook та документації з експлуатації
  • Навчання команди (до 4 годин онлайн)
  • Підтримка протягом 30 днів після здачі

Які терміни виконання?

Робота Термін
Налаштування RPC та базового моніторингу 1–2 тижні
Subgraph для одного протоколу 2–4 тижні
Self-hosted нода з моніторингом 2–3 тижні
Повна інфраструктура (multi-chain, моніторинг, runbooks) 6–10 тижнів

Всі проекти ведуться в репозиторії на GitHub/GitLab з CI/CD, код конфігурацій залишається у вас. Замовте розгортання інфраструктури — розкажемо, як скоротити витрати без втрати надійності. Отримайте консультацію — покажемо, як ми розгортали інфраструктуру для протоколу з високим TVL на Ethereum та Arbitrum. Зв'яжіться з нами.