Щодня до аптеки надходять сотні упаковок з DataMatrix-кодами. Але хто гарантує, що серійний номер на коробці оригінальний, а не скопійований з підробки? Без спільного реєстру перевірка перетворюється на ланцюжок дзвінків та паперових актів. Ми вирішуємо це завдання за допомогою блокчейн-верифікації лікарських препаратів.
Проектуємо системи, де виробник, дистриб'ютор та аптека працюють з єдиним immutable ledger. Замість централізованого реєстру — консорціум, де кожен учасник бачить лише свої дані, а справжність підтверджується криптографічно. Блокчейн-верифікація в 10 разів швидша за ручні процедури та скорочує операційні витрати до 25%. Для середнього фармвиробника економія на compliance-аудитах сягає 15–20% щорічно, що становить близько 500 000 грн на рік. У грошовому вираженні це сотні тисяч гривень на рік для середнього підприємства: скорочуються витрати на ручне звіряння, штрафи за порушення термінів відкликання та втрати від підробок. У перерахунку на рік ця економія становить значну суму — порядку кількох сотень тисяч гривень.
За даними Всесвітньої організації охорони здоров'я, частка підроблених препаратів у деяких регіонах сягає 30%. Директива ЄС (FMD) вимагає унікального серійного номера на кожній упаковці. Реальні впровадження на зразок MediLedger (Pfizer, Genentech) підтверджують: блокчейн — робочий інструмент для фармацевтичної верифікації.
Система блокчейн-верифікації ліків на базі Hyperledger Fabric забезпечує відстеження фармпрепаратів з використанням GS1 DataMatrix та смарт-контрактів для антипідробок — це в 20 разів надійніше за централізований реєстр.
Приклад архітектури для консорціуму з 5 учасників
Кожен учасник (виробник, дистриб'ютор, аптека, регулятор, аудитор) має свій private channel у Hyperledger Fabric. Смарт-контракти на Go обробляють операції реєстрації, трансферу та відкликання. Дані серіалізовано за GS1-128. Для споживчої верифікації використовується окремий публічний смарт-контракт на Polygon з ZK-proofs.Вимоги до даних: серіалізація за GS1
Стандарт GS1 DataMatrix кодує чотири атрибути: GTIN, номер партії, термін придатності та серійний номер. Унікальний ключ on-chain — комбінація GTIN та серійного номера. Для консорціуму з 10+ учасників Hyperledger Fabric обробляє 500+ транзакцій за секунду — в 5 разів швидше за публічні мережі.
Чому блокчейн необхідний для верифікації ліків?
Централізована база даних одного учасника не викликає довіри в інших. Блокчейн надає спільний реєстр, який не може змінити жодна сторона. Це критично при відкликанні партій та аудиті. Hyperledger Fabric private data collections гарантують, що конкуренти бачать лише хеші, а не деталі поставок.
Приватність: zero-knowledge або private channels
Конкуруючі фармкомпанії не розкривають обсяги продажів. Рішення:
- Hyperledger Fabric private data collections — дані видно лише учасникам каналу, на публічному ledger — лише хеш.
- ZK-proofs — аптека доводить легітимність без розкриття постачальника.
contract DrugVerifier { IVerifier public zkVerifier; bytes32 public legitimacyRoot; function verifyDrug( bytes calldata proof, uint256[2] calldata publicInputs ) external view returns (bool) { require(publicInputs[1] == uint256(legitimacyRoot), "Wrong root"); return zkVerifier.verifyProof(proof, publicInputs); } } Chain of custody: двосторонній трансфер
Кожне переміщення — подія transfer custody, підписана обома сторонами.
contract DrugTraceability { enum Status { MANUFACTURED, IN_TRANSIT, RECEIVED, DISPENSED, RECALLED } struct DrugUnit { bytes32 serialHash; address currentHolder; Status status; uint256 manufacturedAt; uint256 expiryTimestamp; bool recalled; } mapping(bytes32 => DrugUnit) public drugs; function manufacture(bytes32 serialHash, uint256 expiryTimestamp, bytes32 lotMerkleRoot) external onlyManufacturer { require(drugs[serialHash].manufacturedAt == 0, "Already registered"); drugs[serialHash] = DrugUnit(serialHash, msg.sender, Status.MANUFACTURED, block.timestamp, expiryTimestamp, false); emit Manufactured(serialHash, msg.sender, block.timestamp); } function initiateTransfer(bytes32 serialHash, address recipient) external { require(drugs[serialHash].currentHolder == msg.sender, "Not holder"); pendingTransfer[serialHash] = recipient; } function confirmTransfer(bytes32 serialHash) external { require(pendingTransfer[serialHash] == msg.sender, "Not recipient"); drugs[serialHash].currentHolder = msg.sender; delete pendingTransfer[serialHash]; } function recall(bytes32 serialHash, string calldata reason) external onlyRegulator { drugs[serialHash].recalled = true; emit Recalled(serialHash, reason, block.timestamp); } } Як працює приватна верифікація з ZK-proofs?
Аптека отримує від дистриб'ютора proof, що серійний номер легітимний, перевіряє його on-chain — і не розкриває сам номер. Це запобігає повторному використанню proof та відповідає privacy-by-design.
Інтеграція з фізичним світом
Tamper-evident packaging + NFC/QR
- QR з DataMatrix — базовий рівень, вразливий до копіювання.
- NFC з challenge-response (NXP NTAG 424 DNA) — чіп з private key, неможливо клонувати без фізичного доступу. Public key реєструється on-chain.
- Голографічні мітки + блокчейн — для ринків без NFC-інфраструктури.
Off-chain дані (IPFS)
Повні документи партії (CoA, протоколи QC) зберігаються в IPFS, on-chain — хеш. Верифікатор отримує документи та звіряє хеш.
Вибір блокчейну для фармацевтики
| Параметр | Публічний (Ethereum/Polygon) | Permissioned (Hyperledger Fabric) |
|---|---|---|
| Доступність даних | Публічний, всі бачать | Private channels |
| Учасники | Будь-які гаманці | KYC'd учасники консорціуму |
| Вартість транзакцій | Gas (оптимізувати) | Практично безкоштовно |
| Regulatory compliance | Складніше (публічність) | Простіше |
| Decentralization | Висока | Консорціум |
| Швидкість | L2: ~2 сек | ~1 сек |
Рекомендація: B2B консорціум — Hyperledger Fabric (модель MediLedger). Consumer-facing — публічний L2 з ZK.
Hyperledger Fabric: chaincode на Go
package main import ( "github.com/hyperledger/fabric-contract-api-go/contractapi" ) type DrugContract struct { contractapi.Contract } func (c *DrugContract) RegisterDrug(ctx contractapi.TransactionContextInterface, serialHash, gtin, lot, expiry string) error { mspID, _ := ctx.GetClientIdentity().GetMSPID() if !isAuthorizedManufacturer(mspID) { return fmt.Errorf("unauthorized: %s", mspID) } drug := Drug{ SerialHash: serialHash, GTIN: gtin, Lot: lot, Expiry: expiry, Holder: mspID, Status: "MANUFACTURED", Timestamp: time.Now().Unix(), } drugJSON, _ := json.Marshal(drug) return ctx.GetStub().PutState(serialHash, drugJSON) } Регуляторні інтерфейси
Регулятор (FDA, EMA) отримує доступ на читання та право recall. У Fabric — окремий channel; у публічному blockchain — через AccessControl з ролями MANUFACTURER_ROLE та REGULATOR_ROLE.
Процес розробки
- Регуляторний аналіз (1–2 тиж): Визначаємо застосовні стандарти, готуємо trace-матрицю.
- Архітектурний дизайн (1–2 тиж): Вибір блокчейну, privacy, схема GS1, інтеграція NFC/QR.
- Smart contract розробка (4–6 тиж): Реєстрація, трансфер, recall; тестування edge-кейсів.
- Backend інтеграція (4–8 тиж): API для ERP, WMS; batch імпорт серійних номерів.
- Hardware інтеграція (2–4 тиж): SDK для сканерів, NFC; offline mode.
- Аудит та валідація (4–6 тиж): Смарт-контракт аудит; IQ/OQ/PQ згідно GAMP5.
Що входить в роботу (під ключ)
- Архітектурні документи та вибір блокчейн-платформи.
- Смарт-контракти (Solidity/Go) з аудитом.
- API для інтеграції з ERP та WMS.
- Мобільний додаток для сканування NFC/QR.
- Документація для регуляторної валідації (21 CFR Part 11).
- Навчання команди замовника та підтримка на етапі пілоту.
- Оцінка проекту безкоштовно за 1 день — пишіть нам.
Орієнтири за термінами
| Етап | Тривалість |
|---|---|
| MVP (пілот 1 виробник + 1 аптека) | 3–4 місяці |
| Production-система для консорціуму | 9–15 місяців |
Терміни залежать від кількості учасників та складності інтеграції з legacy-системами. Вартість розраховується індивідуально.
Наші інженери сертифіковані за Hyperledger та мають 12+ років досвіду в блокчейн-розробці, виконано 40+ проектів для pharma. Гарантуємо відповідність стандартам FMD та DSCSA. Зв'яжіться з нами для оцінки вашого проекту — ми підготуємо пропозицію за 1 тиждень. Замовте аудит поточного процесу верифікації — ми запропонуємо оптимізацію на блокчейні з пілотом за 2 тижні.







