Розробка системи верифікації підлинності товарів на блокчейні
Louis Vuitton, Prada, Richemont — три крупнейших люксові конгломерати об'єдналися в консорціум Aura Blockchain для трекингу підлинності товарів. Не тому що це модно, а тому що глобальний ринок контрафакту складає $500 млрд на рік. Блокчейн тут не маркетинговий інструмент — це реєстр, який не може бути змінен задним числом.
Для середнього та малого бізнесу та ж механіка доступна через кастомну розробку без корпоративного консорціуму.
Як технічно працює верифікація підлинності
Привязка фізичного товару до цифрового паспорту
Центральна проблема: смарт-контракт не «видить» фізичний товар. Верифікація будується через довірений ідентифікатор, вбудований у товар:
QR-код / серійний номер. Найпростіший варіант: унікальний серійний номер записується в контракт при створенні товару (виробник або уповноважений дистрибьютор). Покупець сканує код → off-chain API запитує контракт → отримує історію. Слабість: QR-код можна скопіювати та приклеїти на підробку.
NFC/RFID чип з криптографією. Чип (Infineon, NXP) зберігає приватний ключ в захищеній пам'яті (нельзя видобути). При сканування смартфоном чип підписує випадковий challenge — контракт верифікує підпис публічного ключа, зареєстрованого при виробництві. Підробити підпис без чипу неможливо. Рішення: Kong HaloTag, Arx Research, Ntag 424 DNA.
Унікальні фізичні характеристики (PUF). Physically Unclonable Function — мікроструктура матеріалу (наприклад, волокна паперу або рисунок ткані), фотографується при виробництві, hash записується в контракт. При верифікації — нова фотографія, AI-порівняння з еталоном. Не вимагає вбудованого чипа, але вимагає спеціалізованого сканера. Технологія: Alitheon, Prooftag.
Структура цифрового паспорту (NFT як сертифікат)
Кожен товар = NFT. Метадані:
-
productId— унікальний ідентифікатор (серійний номер / хеш фізичних характеристик) -
manufacturer— адреса гаманця виробника (верифікована on-chain) -
productionDate,batchId -
currentOwner— поточний власник (змінюється при передачі) -
transferHistory— масив записів: хто, кому, коли (block.timestamp) - IPFS/Arweave посилання на фотографії товару з різних ракурсів
Трансфер NFT = передача товару. Історія володіння повністю прозора та неизмінна.
Архітектура системи
Ролі та права доступу
Система будується навколо кількох ролей:
| Роль | Права | Реалізація |
|---|---|---|
| Manufacturer | Мінт нових товарних NFT | MINTER_ROLE (AccessControl) |
| Distributor | Трансфер, оновлення локації | DISTRIBUTOR_ROLE |
| Retailer | Фінальний трансфер кінцевому споживачу | RETAILER_ROLE |
| Consumer | Верифікація, трансфер (ресейл) | Звичайний EOA |
| Admin | Управління ролями | DEFAULT_ADMIN_ROLE |
OpenZeppelin AccessControl з grantRole/revokeRole — виробник додає дистрибьюторів, дистрибьютори додають ритейлерів. Ієрархія налаштовується.
Контракт: ключові функції
function mintProduct(
address to,
string calldata serialNumber,
bytes32 physicalHash,
string calldata metadataURI
) external onlyRole(MINTER_ROLE) returns (uint256 tokenId)
function verifyProduct(uint256 tokenId, bytes calldata chipSignature)
external view returns (bool authentic, ProductInfo memory info)
function transferWithAttestation(
address to,
uint256 tokenId,
string calldata transferNote // "Shipped to retailer X, warehouse Y"
) external
transferWithAttestation записує додатковий контекст до кожного трансферу — не просто «адреса → адреса», а з описанням операції.
Мобільне додаток для верифікації
Кінцевий користувач не повинен знати про блокчейн. Інтерфейс:
- Піднести телефон до NFC-чипу (або сканувати QR)
- Додаток отримує challenge → чип підписує → відправляє в наш API
- API верифікує підпис, запитує контракт
- Користувач бачить: «Оригінал ✓ | Виробленого 15.03.2024 | Історія: 3 володіїв»
React Native для iOS/Android. WalletConnect якщо потрібні Web3-функції для власника. Для простого B2C верифікатора — достатньо звичайного API без гаманця.
Вибір блокчейну
| Чейн | Gas вартість | Throughput | Рекомендація |
|---|---|---|---|
| Ethereum | Високий | Умеренний | Премиум товари, коли важлива максимальна надійність |
| Polygon | Дуже низький | Високий | Масові товари, великий обсяг мінта |
| Base | Низький | Високий | Баланс вартості/надійності для середнього сегменту |
| Solana | Дуже низький | Дуже високий | Великі обсяги, але інша екосистема |
Для B2B систем з високим обсягом (тисячі товарів на день) — Polygon або Base. Для люксових товарів — Ethereum або Polygon з мостом на Ethereum для важливих подій.
Інтеграція з існуючими системами
ERP (SAP, 1C) ↔ наш API ↔ блокчейн. Мінт NFT триггерится автоматично при створенні запису про товар в ERP. Для підприємств з SAP — стандартний REST webhook з SAP Event Mesh.
QR-коди генеруються на стороні бекенду, друкуються при виробництві. Маппінг serialNumber → tokenId зберігається в нашій БД для швидкого lookup без on-chain запиту при кожному сканування.
Процес розробки
Архітектура та вибір ідентифікатора (2-3 дні). Тип верифікатора (QR / NFC / PUF), цільовий блокчейн, ролева модель, глибина історії.
Смарт-контракти (1 тиждень). ERC-721 з AccessControl, transfer attestation, verify функція. Тести в Foundry: всі ролі, граничні випадки трансферу, верифікація з правильною та неправильною підписом.
API та інтеграції (1 тиждень). Backend на Node.js/Laravel, інтеграція з NFC SDK, ERP webhooks, IPFS загрузка.
Мобільне додаток (1-2 тижні, якщо потрібно). iOS + Android через React Native або PWA для простих випадків.
Базова система (QR-верифікація, один контракт, веб-інтерфейс) — 1-1.5 тижні. Повна система з NFC, мобільним додатком та ERP інтеграцією — 2-3 тижні. Вартість залежить від обраного типу ідентифікатора та обсяги інтеграцій.







