Разработка системы верификации подлинности товаров на блокчейне
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 cost | Throughput | Рекомендация |
|---|---|---|---|
| Ethereum | Высокий | Умеренный | Премиум товары, когда важна максимальная надёжность |
| Polygon | Очень низкий | Высокий | Массовые товары, высокий объём минта |
| Base | Низкий | Высокий | Баланс cost/reliability для mid-tier |
| Solana | Очень низкий | Очень высокий | Большие объёмы, но другая экосистема |
Для B2B систем с высоким объёмом (тысячи товаров в день) — Polygon или Base. Для luxury goods — 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 недели. Стоимость зависит от выбранного типа идентификатора и объёма интеграций.







