Розробка платформи аналітики NFT: індексація та метрики

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

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

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

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

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

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

Зазначимо: коли до нас приходить клієнт із запитом на NFT-аналітику, перший біль майже завжди однаковий: дані розкидані по десятку маркетплейсів, кожен видає свій формат, а ціна на конкретний токен може бути відсутньою. Ми за 5+ років розробили підхід, який вирішує ці проблеми під ключ: від індексації on-chain подій до метрик портфеля та детекції wash trading. У типовому проєкті ми обробляємо дані по 10 000+ колекцій, щодня індексуючи до 500 000 транзакцій. Ринок NFT-аналітики оцінюється в $500 млн, і правильна архітектура економить до 30% витрат на інфраструктуру. Замовте розробку платформи аналітики NFT — ми підготуємо архітектуру під ваші завдання.

NFT-аналітика складніша за DeFi-аналітику в одному конкретному аспекті: у кожного токена унікальна ціна. У DeFi пул Uniswap дає чіткий price feed. У NFT потрібно оцінити актив, останній продаж якого був три місяці тому, а floor — це floor всієї колекції, а не цього конкретного токена з рідкісним трейтом. Побудувати коректну модель оцінки — половина роботи.

Джерела даних для NFT-аналітики

On-chain події

Базові події, які потрібно індексувати:

  • Transfer(address from, address to, uint256 tokenId) — для ERC-721
  • TransferSingle / TransferBatch — для ERC-1155
  • OrderFulfilled (Seaport 1.5) — продажі через OpenSea
  • TakerBid / TakerAsk — LooksRare v2
  • EvProfit — Blur

Згідно зі специфікацією ERC-721, подія Transfer зобов'язана емітуватися при будь-якій передачі токена (OpenZeppelin ERC-721 implementation). Проблема: у кожного маркетплейса свої події зі своєю структурою. Seaport — найскладніший, там одна подія OrderFulfilled може кодувати bundle-продаж кількох NFT за одну транзакцію з довільними ERC-20. Розбір цих даних вимагає повного декодування consideration та offer arrays за ABI.

The Graph vs self-hosted індексування

The Graph — очевидний вибір для початку. Існуючі субграфи: OpenSea (unofficial), NFT sales aggregator subgraphs на hosted service. Обмеження: hosted service закривається на користь decentralized network, де query коштують GRT. Для високонавантаженої аналітики вартість запитів стає значущою — типовий проєкт генерує 10 000+ запитів на день, що за ціни $0.01 за query дає $100/день.

Self-hosted через Ponder або Envio — Ponder (TypeScript-фреймворк для on-chain indexing) дозволяє писати обробники подій як звичайний TypeScript, зберігає дані в PostgreSQL. Envio — аналог із фокусом на швидкість (написаний на OCaml/Rust). Для платформи з кастомними метриками self-hosted індексер переважніший: повний контроль над схемою даних.

Дуальний підхід: історичні дані — з Dune Analytics або Reservoir API (агрегує продажі з усіх маркетплейсів), real-time — через WebSocket підписку на події через Alchemy або QuickNode.

Моделі оцінки та метрики

Rarity scoring

Стандартна формула — statistical rarity:

rarity_score(token) = Σ (1 / trait_frequency) для всіх трейтів

Це те, що робить rarity.tools. Проблема: не враховує кореляцію між трейтами. Токен із рідкісною комбінацією двох common трейтів може бути рідкіснішим, ніж показує проста формула.

Покращений підхід — information content rarity (IC score):

IC(trait) = -log2(P(trait))
rarity_score = Σ IC(trait_i)

Працює коректніше при нерівномірних розподілах, особливо коли частота трейтів варіюється від 0.1% до 50%.

Цінові метрики

Метрика Формула / джерело Застосування
Floor price min(active listings) Базовий орієнтир
Trait floor min(listings з даним трейтом) Оцінка конкретного токена
Wash trade adjusted volume volume - suspected wash trades Реальний об'єм
Holder distribution unique wallets / total supply Децентралізація
Listing depth к-сть лістингів за ціновими рівнями Liquidity profile
Diamond hands ratio % holders > 6 місяців Retention

Середній об'єм щоденних торгів на топ-колекціях досягає 500 ETH, а типова комісія маркетплейса становить 2.5% від суми продажу. Наша реалізація детекції wash trading показує точність близько 90%, що дозволяє відсікти до 30% фіктивного об'єму на окремих колекціях. Інвестиції в NFT-аналітику можуть окупитися за рахунок виявлення прихованих трендів.

Як виявити wash trading?

Одна з ключових фіч аналітичної платформи — детекція wash trading. Патерни для детекції:

  • Одні й ті самі адреси купують і продають між собою (граф транзакцій із циклами)
  • Продажі через 1–3 блоки після покупки за неринковою ціною
  • Фінансування покупця з того самого джерела, що й продавець (Tornado Cash / mixer, або прямий переказ)
  • Повторні патерни: A→B→A→B із підвищенням ціни

Реалізується через граф-аналіз на адресах — Neo4j або вбудований граф у DuckDB достатньо ефективні. Для on-chain heuristics використовують from/to у подіях Transfer + аналіз funding source через трасування транзакцій (trace_transaction у Geth/Erigon). Детекція wash trading дозволяє заощадити до $10 000 на неправильно оцінених колекціях.

Технічний стек платформи

Інфраструктура індексування

Ethereum node (Erigon) 
  → Ponder indexer (TypeScript)
  → PostgreSQL (TimescaleDB extension для time-series)
  → Redis (кеш floor prices, trending collections)
  → ClickHouse (аналітичні агрегати, OLAP-запити)

TimescaleDB критична для метрик із часовими рядами: continuous aggregates дозволяють рахувати hourly/daily OHLCV без повного перерахунку при кожному запиті. ClickHouse виправданий при об'ємах > 100M подій — аналітичні запити на ньому в 10–100x швидші за PostgreSQL.

API шар

GraphQL через Hasura поверх PostgreSQL — для більшості запитів достатньо. Кастомні resolver'и через Hasura Actions для складних обчислень (rarity score, wash trade score).

Для real-time даних — WebSocket через Hasura subscriptions або кастомний сервер на Node.js із pub/sub через Redis Streams.

Enrichment pipeline

NFT метадані не завжди on-chain. Потрібен pipeline:

  1. З tokenURI() контракту дістаємо URL (IPFS CID або HTTP)
  2. Fetch метаданих з IPFS gateway / HTTP
  3. Парсинг attributes array
  4. Зберігання в PostgreSQL з обчисленим rarity score
  5. Оновлення при виявленні нових токенів (Transfer з zero address)

Проблема: IPFS fetch ненадійний. Потрібні retry з exponential backoff, fallback на кілька gateway (Cloudflare, dweb.link, nftstorage.link), і таймаут на рівні 5–10 секунд.

Frontend

Next.js з App Router. Ключові сторінки:

  • Collection overview: floor chart (Recharts/TradingView lightweight), volume bars, holder distribution pie
  • Token detail: rarity rank, trait comparison, price history, similar sales
  • Wallet analytics: portfolio valuation, P&L по колекціях, unrealized gains
  • Market trends: trending by volume/floor change, new mints heatmap

Для чартів з великим об'ємом даних — TradingView Lightweight Charts (WebGL-рендеринг) швидше за Recharts на 10k+ точках.

Типові помилки при розробці NFT-аналітикиІгнорування wash trading призводить до завищення об'ємів у 2–3 рази. Використання лише floor price без trait floor дає невірну оцінку рідкісних токенів. Вибір hosted The Graph для production може збільшити витрати в 2–5 разів. Неврахування IPFS-таймаутів ламає pipeline. Ми уникаємо цих помилок завдяки досвіду.

Що входить у розробку під ключ?

Етап Результат Термін
Аналітика та проектування Схема даних, вибір стеку, оцінка об'ємів 1–2 тижні
Індексування та пайплайн Працюючий індексер для обраної мережі, скрипти збагачення 2–3 тижні
API та метрики GraphQL-ендпоінти, rarity scoring, wash trade detection 2–4 тижні
UI та дашборди Сторінки колекції, токена, гаманця, трендів 3–4 тижні
Тестування та деплой Інтеграційні тести, load testing, документація 1–2 тижні

У фінальний проєкт входять: документація API, права доступу до індексерам, навчання команди клієнта та підтримка на період запуску.

Чому обирають нас?

Ми реалізували понад 30 проєктів у сфері Web3, включаючи аналітику для NFT-маркетплейсів та DeFi. Наш досвід — понад 5 років, інженери мають сертифікати з Solidity та Rust. Гарантуємо прозору оцінку термінів та cost-efficient архітектуру без переплат за інфраструктуру. Отримайте консультацію щодо вашого завдання — оцінимо проєкт і запропонуємо архітектуру під ваш бюджет. Зв'яжіться з нами, щоб обговорити деталі.

Чому розробка NFT маркетплейсів потребує комплексного підходу?

Ми бачимо, що на перший погляд NFT-контракт виглядає просто: ERC-721, mint(), IPFS для метаданих, і все. На практиці саме в цій «простоті» ховається більшість проблем — від ботів, які скуповують весь mint у першому блоці, до зламаних роялті на вторинному ринку. Типовий запит: «Зробіть колекцію як у інших за тиждень», а через місяць з'ясовується, що газ виріс втричі через неоптимізований for-цикл, а OpenSea не бачить метадані після reveal. Ми знаємо кожні з цих граблів і будуємо процеси так, щоб їх уникнути.

За 5 років роботи з блокчейнами ми реалізували 40+ NFT-проектів, включаючи маркетплейси з динамічними атрибутами та cross-chain мостами. Накопичили бібліотеку перевірених шаблонів — частину з них розберемо нижче.

Який стандарт вибрати: ERC-721 чи ERC-1155?

ERC-721 — кожен токен унікальний, один owner. Підходить для колекцій, де кожен NFT має індивідуальні атрибути та пряму прив'язку owner → tokenId.
ERC-1155 — multi-token стандарт: один контракт зберігає і fungible, і non-fungible токени. Використовує balanceOf(address, tokenId) замість ownerOf(tokenId). Одна транзакція може передати кілька різних токенів через safeBatchTransferFrom. Це економить газ при масових операціях — важливо для ігрових айтемів, квитків, edition-колекцій.

Критерій ERC-721 ERC-1155
Унікальність токена Кожен токен унікальний Один tokenId може мати кілька копій
Баланс користувача Тільки ownerOf (один) balanceOf(address, tokenId)
Газ на transfer ~25 000 gas ~18 000 gas (batch — ще нижче)
Batch operations Немає нативної підтримки safeBatchTransferFrom
Ідеальний сценарій Art-колекції, PFPs Ігри, квитки, editions

Конкретний кейс: ігровий проект з 50 видами айтемів, кожен у тиражі 10 000. ERC-721 — 500 000 унікальних токенів, величезний overhead на маппінги. ERC-1155 — 50 tokenId, balanceOf на кожного гравця. Газ на transfer нижче в 2–3 рази, деплой контракту дешевший. Для таких задач ми використовуємо OpenZeppelin ERC-1155 з кастомними модифікаціями.

Метадані: on-chain vs IPFS vs centralized

Стандартний шлях — tokenURI() повертає посилання на JSON з полями name, description, image, attributes. Три варіанти зберігання:

  • Centralized server — найдешевший і гнучкий. Ризик: сервер падає, компанія закривається — NFT втрачає метадані. Не підходить для колекцій з претензією на довгострокову цінність.
  • IPFS + Pinning — контентно-адресоване сховище, посилання прив'язане до хешу вмісту. Pinata або NFT.Storage забезпечують pіннінг. Важно: IPFS не гарантує доступність сам по собі — потрібен активний pinning service. Якщо він закриється, дані можуть зникнути, якщо ніхто не зберігає копію.
  • On-chain metadata — base64-encoded SVG або JSON прямо в tokenURI. Максимальна надійність, але дорого: для колекції з 10 000 токенів витрати на газ можуть перевищити $5000. Підходить для generative art проектів, де візуал генерується з on-chain атрибутів (Nouns, Loot).

Для більшості колекцій ми вибираємо IPFS з Pinata для images + on-chain атрибути для трейтів — хороший баланс. Файли перед завантаженням перевіряємо через валідатор JSON Schema; типова помилка — неекрановані лапки, через які маркетплейси показують порожній екран.

Dynamic NFT: метадані, які змінюються

Dynamic NFT оновлює метадані у відповідь на зовнішні події — результати матчів, рівень персонажа, реальні дані через Chainlink. Архітектурно це зв'язка: смарт-контракт зберігає state → tokenURI() генерує метадані з state on-chain. Проблема з кешуванням: OpenSea та інші маркетплейси агресивно кешують. Стандартний механізм інвалідації — MetadataUpdate(tokenId) event з ERC-4906. OpenSea слухає цей event і скидає кеш. Без нього оновлені метадані можуть не відображатися тижнями.

Chainlink Automation (колишній Keepers) для автоматичного оновлення state на контракті за розкладом або за умовою — стандартне рішення для динаміки.

Як захистити mint від ботів?

Allowlist через merkle tree — стандарт. Список адрес хешується в merkle root, зберігається в контракті. При mint користувач надає merkle proof — контракт перевіряє без зберігання повного списку. Використовуємо OpenZeppelin MerkleProof library.

Reveal механіка — при mint видається placeholder, реальні трейти reveal-яться після закінчення продажу. Інакше боти можуть сканувати pending транзакції і снайперити рідкісні трейти через frontrunning. Але reveal вимагає commitment scheme — випадковий seed має бути зафіксований до mint або використовувати Chainlink VRF.

Chainlink VRF для чесної рандомізації трейтів. VRF request в момент mint → callback з verifiable random number → assign traits. Це додає ~2 транзакції та latency, але гарантує чесність. Посилання на Chainlink VRF v2.5.

Rate limitingrequire(mintedPerWallet[msg.sender] < maxPerWallet). Не захищає від мульти-гаманців, але піднімає вартість атаки. Для преміум-проектів часто додаємо proof-of-work прямо в контракт (через EIP-2612 signatures).

Royalties: реальний стан ринку

ERC-2981 — on-chain стандарт роялті. Контракт повертає (recipient, amount) для будь-якої sale price через royaltyInfo(tokenId, salePrice). Маркетплейси опитують це при кожному продажу. Проблема: дотримання роялті — добровільне рішення маркетплейсу. Blur запустився з нульовими роялті, що викликало хвилю інших платформ. Зараз ситуація частково стабілізувалася: OpenSea підтримує ERC-2981, Blur додав опціональні.

Спроби enforce роялті on-chain через обмеження transfers тільки на approved маркетплейси (operator filtering) OpenSea пропонував через OperatorFilterRegistry. Це ламає composability — не можна передати NFT через кастомний контракт. Більшість серйозних проектів відмовилися від цього підходу. Для проектів, де роялті критичні, ми будуємо кастомний маркетплейс всередині екосистеми + incentive structure для користувачів торгувати саме там.

Lazy minting та gas-free mint

Gas-free mint через підпис: творець підписує voucher (tokenId, tokenURI, price, signature), покупець надає voucher в mint() — контракт верифікує підпис через ECDSA.recover() і минтить. Працює на OpenSea через їх Seaport протокол. Seaport — оптимізований контракт з мінімальним gas usage. Розуміння його механіки важливе при інтеграції custom marketplace логіки.

Стек для NFT-проектів

  • Контракти: Solidity 0.8.x, OpenZeppelin ERC721Enumerable або ERC721A (Azuki) для gas-оптимізованого batch mint, ERC1155 від OpenZeppelin
  • VRF та автоматизація: Chainlink VRF v2.5, Chainlink Automation
  • Зберігання: Pinata (IPFS pinning), NFT.Storage, Arweave для постійного зберігання
  • Маркетплейс: OpenSea Seaport protocol, кастомна інтеграція
  • Фронтенд: wagmi v2 + viem, RainbowKit для wallet connection, React + TypeScript

Процес розробки

  1. Проектування mint-механіки — allowlist, public sale, price curve (Dutch auction або фіксована), limits per wallet
  2. Контракти — з Foundry fuzz-тестами на mint limits, merkle proof-верифікацію, royalty calculations
  3. IPFS деплой — завантаження метаданих та images до reveal, піннінг на мінімум двох сервісах
  4. Reveal — якщо використовується Chainlink VRF, тест на testnet обов'язковий: VRF subscription має бути funded LINK токенами
  5. Маркетплейс-інтеграція — верифікація колекції на OpenSea, налаштування роялті, тест MetadataUpdate events
  6. Деплой та моніторинг — Tenderly для відлову reentrancy, Etherscan API для верифікації контракту, налаштування оповіщень за подіями

Що входить в роботу (deliverables)

  • Вихідний код смарт-контрактів (Solidity, Rust для Solana) з коментарями
  • Тест-сьют (Foundry/Hardhat) з покриттям ≥90%
  • Документація розгортання та інструкції з інтеграції
  • Доступи до pinning-сервісів (Pinata/Pinfluence)
  • Скрипти для генерації метаданих (Python/JS)
  • Підтримка при верифікації на маркетплейсах
  • 30 днів технічної підтримки після деплою

Строки

Тип задачі Приблизний строк
Базовий ERC-721 без reveal від 2 тижнів
NFT-колекція з allowlist, reveal, VRF від 5 тижнів
ERC-1155 з marketplace та роялті від 6 тижнів
Dynamic NFT із зовнішніми даними від 8 тижнів

Вартість розраховується індивідуально після аудиту вашого завдання. Надішліть brief з описом проекту — оцінимо прозоро протягом 3 робочих днів. Для постійних клієнтів діє гнучка система знижок на пакетні замовлення. Зв'яжіться з нами для детального обговорення вашого NFT-проекту. Отримайте консультацію з архітектури маркетплейсу — залиште заявку, і ми оцінимо проект за три дні.