Розробка NFC-чіпа з прив'язкою до NFT

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

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

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

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

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

Розробка NFC-чипа з привязкою до NFT

Фізичні об'єкти та NFT — очевидна концепція, погана реалізація якої робить весь проект бессмисленним. Якщо привязка зводиться до «сканюй чип — відкривається ссилка на OpenSea», то NFT тут декоративний елемент. Реальна зв'язь означає, що фізичному об'єкту неможна створити дубліката без криптографічної підробки. Це розв'язне — але тільки якщо чип вмітить підписувати сообщения приватним ключем, який фізично вбудований та не витягується.

Вибір чипа: вимоги до криптографії

Не кожен NFC чип підходит. NTAG213/215/216 — стандартні Mifare теги для простого считування URL. Ніякої криптографії, клонуються за 10 секунд з будь-яким Android та NFC Tools Pro.

Потрібен чип з asymmetric key pair та signing capability:

NXP NTAG 424 DNA — найпоширеніший вибір. AES-128 на борту, SUN (Secure Unique NFC) message authentication. При кожному считуванні генерує унікальне CMAC-підписане сообщение з rolling counter. Приватний ключ записується при виробництві та не читається извне. Вартість — $1-3 за чип у партії.

Kong Halo — розроблений спеціально для phygital NFT. ECC (secp256k1 — та ж крива, що в Ethereum), кожне считування генерує ECDSA підпис над keccak256(chipAddress || blockHash || counter). Сумісний з EIP-191 personal_sign, верифікація signature on-chain через ecrecover. Нативна інтеграція з ERS (Ethereum Registrar Standards) протоколом.

Arx Research HaLo — аналогічний Kong Halo. Використовується в RTFKT, Adidas Physical NFT проектах. Публічний ключ чипа — детермінований адрес Ethereum.

Для серйозного phygital проекту вибір між NTAG 424 DNA та HaLo залежит від завдання: NTAG 424 дешевше та стандартніше, HaLo нативно сумісний з Ethereum підписами та не вимагає кастомної верифікації.

Криптографічна схема привязки

HaLo / Kong Halo схема

Кожен чип має вбудовану ключову пару secp256k1. Публічний ключ — chipAddress. При считуванні телефоном (через Web NFC API або нативний додаток) чип підписує challenge:

signature = ECDSA.sign(
  privateKey,
  keccak256(abi.encodePacked(chipAddress, cmdBlock, counter))
)

counter інкрементується при кожному считуванні — replay attack неможливий. cmdBlock містить дані про конкретну команду.

Смарт-контракт зберігає маппинг chipAddress => tokenId. Верифікація ownership:

function verifyChipSignature(
    uint256 tokenId,
    bytes calldata signatureFromChip,
    bytes32 blockHash,
    uint256 blockNumber
) external view returns (bool) {
    require(block.number - blockNumber <= MAX_BLOCK_AGE, "Stale");
    address chipAddress = chipAddressOf[tokenId];
    bytes32 digest = keccak256(abi.encodePacked(
        chipAddress,
        blockHash
    ));
    address recovered = ECDSA.recover(digest, signatureFromChip);
    return recovered == chipAddress;
}

blockHash включається в підпис щоб привязати скан до конкретного моменту часу — захист від збережених та відтворених підписів.

NTAG 424 DNA схема

Чип використовує AES-128 CMAC. Кожне считування генерує URL вроде:

https://verify.project.xyz/?e=<encrypted_uid>&c=<cmac>

encrypted_uid — зашифрований AES-128 UID чипа (унікальний), cmac — Message Authentication Code, включає rolling counter. Верифікаційний сервер розшифровує UID та перевіряє CMAC з known secret key. Counter перевіряється на монотонне зростання.

Слабість порівняно з HaLo: AES ключ повинен бути відомий верифікаційному серверу. Компрометація сервера = можливість клонування підписів. Для HaLo приватний ключ не знає ніхто.

Контракт привязки: PBT стандарт

EIP-5791 (Physical Backed Token) — стандарт саме для цього. Розширює ERC-721 двома функціями:

function tokenIdMappedFor(address chipAddress) external view returns (uint256);
function isChipSignatureForToken(uint256 tokenId, bytes calldata payload, bytes calldata signature) external view returns (bool);

Референсна реалізація — Chiru Labs PBT. Наслідуємось від PBT, переопределяємо логіку верифікації під конкретний чип.

Передача токена через chip scan — transferTokenWithChip():

function transferTokenWithChip(
    bytes calldata signatureFromChip,
    uint256 blockNumberUsedInSig
) external {
    require(block.number - blockNumberUsedInSig <= getMaxBlockhashValidWindow(), "Expired");
    bytes32 blockHash = blockhash(blockNumberUsedInSig);
    require(blockHash != bytes32(0), "Block too old");
    
    bytes32 digest = keccak256(abi.encodePacked(msg.sender, blockHash));
    address chipAddress = digest.recover(signatureFromChip);
    uint256 tokenId = _chipAddressToTokenId[chipAddress];
    
    _transfer(ownerOf(tokenId), msg.sender, tokenId);
}

Це означає: щоб перенести NFT на новий гаманець, потрібно фізично прикласти предмет до телефону та одночасно підписати транзакцію. Без фізичного предмета — передача неможлива. Це ключова властивість для luxury goods та collectibles.

Мобільний додаток та Web NFC

Считування HaLo чипів:

  • Web NFC API (Chrome Android): працює без додатка, тільки Android
  • iOS: вимагає нативного додатка (NFC entitlement Apple)
  • React Native + react-native-nfc-manager: кроссплатформенний варіант

Приклад сканування через Web NFC:

const ndef = new NDEFReader();
await ndef.scan();
ndef.addEventListener("reading", ({ message }) => {
  const record = message.records[0];
  const decoder = new TextDecoder();
  const url = decoder.decode(record.data);
  // Парсимо параметри, вызываємо верифікацію
  handleChipScan(url);
});

Для HaLo потрібна їхня JavaScript SDK (@arx-research/libhalo) — абстрагує низькорівневу роботу з APDU командами.

Виробництво та прошивка

Чипи прошиваються batch-скриптом: генеруються ключові пари (якщо чип дозволяє кастомні ключі) або записуються public keys з фабричних пар в базу даних. Кожен чип маппится на chipAddress.

При мінті NFT колекції: frontend отримує список chipAddresstokenId та вызывает setChipAddresses(tokenId[], chipAddress[]) в контракті. Або чипи прошиваються з вже відомими tokenId та контракт верифікує маппинг при першому сканованні.

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

Застосування та сценарії

Luxury goods: кроссовки, годинники, сумки — chip scan підтверджує аутентичність та ownership history. Resale рынок бачит повний provenance.

Ticketing + physical collectible: концертний білет з NFC = NFT + physical stub. Після мероприятия NFT залишається як proof of attendance, chip scan при вході = on-chain check-in.

Ігрові фігурки / trading cards: scan фігурки мінтить game item в метавселенній. Sell фізичної фігурки = transfer NFT через chip signature.

Арт: художник деплоїть 1/1 NFT з chip у рамі. Покупка картини = transfer через chip scan. Неможливо продати NFT без фізичної передачі роботи.