Разработка NFC-чипа с привязкой к NFT

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка NFC-чипа с привязкой к NFT
Сложная
~1-2 недели
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка 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[]) в контракте. Либо chips прошиваются с уже известными 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 без физической передачи работы.