Щодня до аптеки надходять сотні упаковок з 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 тижні.







