Розробка платформи NFT для квитків на заходи

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

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

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

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

  • 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
    1121
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    858

Розробка NFT-платформи для білетів на мероприятия

Класичний ринок продажу білетів страждає від двох системних проблем: скальпери скупляють квоти через ботів та перепродають з наценкою 300–500%, а організатор після першої продажі втрачає контроль над вторинним оборотом повністю. NFT-квитки вирішують обидві проблеми архітектурно — через on-chain логіку, а не через спроби закрутити гайки в CRM.

Архітектура смарт-контракту білетів

Контракт будується на базі ERC-721 з розширеннями, які перекривають стандартний transferFrom. Ключові механіки:

Роялті на вторинних продажах реалізуються через ERC-2981 (royaltyInfo). Організатор отримує відсоток від кожної перепродажі автоматично — без посередників. Стандарт підтримується OpenSea, Blur, LooksRare та більшістю агрегаторів.

Whitelist та ліміти покупки — через Merkle Tree для газ-ефективної верифікації. Замість зберігання списку адрес on-chain тримаємо тільки root-хеш. Користувач надає proof, контракт верифікує за O(log n) на кілька тисяч gas.

Soulbound-режим — при необхідності білет робиться non-transferable після валідації. Реалізується через override _beforeTokenTransfer з перевіркою флагу isUsed. Це убиває вторинний ринок для конкретних категорій (наприклад, VIP з персоналізацією).

Динамічний URI — метаданні змінюються залежно від стану: до мероприятия, після валідації, після використання. Через tokenURI з перевіркою block.timestamp проти eventDate та isUsed. Зручно для колекційного "послематчевого" стану білету.

function _beforeTokenTransfer(
    address from,
    address to,
    uint256 tokenId,
    uint256 batchSize
) internal override {
    require(!usedTickets[tokenId], "Ticket already validated");
    if (transferRestricted[tokenId]) {
        require(from == address(0) || to == address(0), "Non-transferable");
    }
    super._beforeTokenTransfer(from, to, tokenId, batchSize);
}

Процес валідації на вході

Це технічно найвідповідальніша частина. Два варіанти:

On-chain валідація — організатор вызывает validateTicket(tokenId) через мобільний додаток з підключеним гаманцем. Транзакція записує isUsed = true, повторний вход неможливий. Мінус — latency та gas cost на кожний вход. На Polygon/Arbitrum це прийнятно (~$0.01), на Ethereum mainnet — ні.

Off-chain з підписом — стандартний паттерн для високої пропускної спроможності. Власник білету підписує сообщення {tokenId, eventId, timestamp} своїм гаманцем (EIP-712 typed data). Валідатор на вході перевіряє підпис через ecrecover та сверяет ownerOf(tokenId) через read-only RPC call. Якщо підпис валідна та токен належить підписанту — пропускаємо. Завдання "використаний" фіксується off-chain в базі організатора; on-chain write — опціонально, батчем після мероприятия.

Для фестивалів з тисячами одночасних входів використовуємо другий варіант з локальним кешем стану білетів, який синхронізується кожні 30 секунд через WebSocket підписку на Transfer события.

Frontend та користувацький потік

Користувач купує через стандартний dApp:

  • Підключення гаманця (wagmi + ConnectKit / RainbowKit)
  • Вибір категорії та кількості білетів
  • Якщо presale — whitelist перевірка через Merkle proof
  • Оплата в ETH/MATIC/USDC через mint()
  • Білет з'являється в гаманці як NFT, відображається в інтерфейсі з QR-кодом (підписане сообщение EIP-712)

Для організаторів — окрема панель управління: настройка мероприятий, виведення аналітики on-chain продаж, управління квотами та whitelist'ами.

Інтеграція з вторинними маркетплейсами

Стандартна інтеграція з OpenSea через правильно заповнений contractURI (collection-level metadata) та tokenURI (per-token metadata). Підтримка оператора через setApprovalForAll — стандартна. Якщо потрібно обмежити площадки, реалізуємо operator filter (паттерн Operator Filter Registry від OpenSea, хоча його enforcement вже ослаб).

Для власного вторинного ринку — мініатюрний маркетплейс на базі Seaport (open-source протокол від OpenSea): листинг через fulfillBasicOrder, атомарний swap токена та оплати в одній транзакції, роялті через ERC-2981.

Що входить у розробку

  • Смарт-контракт ERC-721 з розширеннями (роялті, whitelist, soulbound-режим, динамічні метаданні)
  • Деплой в testnet + mainnet (Ethereum, Polygon або інша EVM-цепь по виборі)
  • Frontend dApp для покупців (React + wagmi)
  • Панель управління для організаторів
  • Мобільний додаток або веб-сканер для валідації на вході
  • Інтеграція з IPFS (Pinata/NFT.Storage) для метаданих та зображень
  • Аудит контракту (Slither + ручний review)

Stack варіюється залежно від масштабу — від однієї сторінки dApp для камерного мероприятия до повнофункціонального SaaS з мультиорганізаторським режимом.