Разработка NFT-маркетплейса

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка NFT-маркетплейса
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • 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
    1058
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка NFT-маркетплейса

OpenSea обрабатывает миллиарды долларов торгов, но это не значит, что «сделать маркетплейс» — простая задача. Большинство кастомных маркетплейсов умирают от одной из трёх проблем: уязвимость в логике листинга (позволяет купить NFT по старой цене после его передачи), отсутствие royalty enforcement, или невозможность масштабировать оферты без on-chain транзакции за каждую. Эти проблемы технически решены в современных протоколах — нужно только правильно их применить.

Протоколы листинга: не изобретай велосипед

Seaport — стандарт де-факто

OpenSea's Seaport Protocol (v1.5, аудит Spearbit + Trail of Bits) — самая выверенная основа для маркетплейса. Ключевое преимущество: ордера существуют off-chain как подписанные EIP-712 структуры. Листинг не стоит газа. Только исполнение ордера (fulfilment) — on-chain транзакция.

Архитектура Seaport: offerer подписывает Order с offer[] (что предлагаю) и consideration[] (что хочу получить взамен). Это обобщённая swap-примитива: NFT за ETH, NFT за ERC-20, NFT за NFT, batch orders. conduit — авторизованный контракт, который может переводить токены от имени offerer при условии approve. Это убирает необходимость approve к маркетплейсу напрямую — approve выдаётся Conduit Controller, который маркетплейс регистрирует.

Почему важно: если маркетплейс реализует собственный листинг с хранением ордеров on-chain — каждый листинг стоит ~50-80k gas. При 10,000 листингов в день это $50k/день только на листинги (при gas 20 gwei, ETH $2500). Off-chain подписи — единственный масштабируемый подход.

Критическая уязвимость: replay after transfer

Классическая атака на кастомные маркетплейсы: пользователь листит NFT за 1 ETH, затем передаёт его на другой кошелёк. Листинг формально не отменён (нет on-chain cancel). Новый владелец листит за 100 ETH. Атакующий исполняет старый листинг (если подпись валидна) — покупает за 1 ETH, NFT уходит со старого листинга, но владелец уже изменился.

Seaport решает это через offererConduitKey + counter. incrementCounter() — одна транзакция, инвалидирует все ранее подписанные ордера этого адреса. Также каждый ордер может иметь startTime / endTime — автоматическое истечение без отмены.

Royalty enforcement: EIP-2981 недостаточно

EIP-2981 определяет royaltyInfo(uint256 tokenId, uint256 salePrice) — стандарт для хранения информации о роялти в контракте NFT. Но это advisory механизм — маркетплейс может игнорировать его. Именно это и делали большинство агрегаторов в 2022-2023 году, обходя royalty creator'ов.

Enforced royalty возможно через несколько подходов:

Operator Filter Registry (подход OpenSea) — NFT-контракт в setApprovalForAll и transferFrom проверяет, что operator находится в whitelist Operator Filter Registry. Маркетплейсы без royalty enforcement блокируются. Минус: creator должен поддержать, пользователи теряют transferability при отказе маркетплейса.

ERC-721C (LimitBreak) — модифицированный transfer с built-in policy engine. Более гибко: разные политики для разных коллекций. Но нестандартный контракт.

Soulbound + secondary market через собственный контракт — NFT с ограниченным transfer, все вторичные продажи только через протокол с royalty enforcement. Радикально, но работает для gaming assets.

Для нашего маркетплейса: реализуем EIP-2981 как минимум, предлагаем опциональный Operator Filter для коллекций, которые хотят enforced royalty.

Аукционы: технические сложности

English auction и bid snipping

Классический English auction: каждый bid продлевает аукцион на N минут. Это стандартная защита от bid snipping (последнесекундные ставки). В Solidity: if (block.timestamp > endTime - extensionWindow) endTime += extensionWindow.

Критичный момент: хранить все биды on-chain дорого. Лучше хранить только highestBid и highestBidder. Предыдущий highest bidder получает рефанд автоматически при каждом новом биде через pull payment pattern.

Dutch auction для мints

Цена стартует высоко и падает каждые N минут/блоков. Математика:

currentPrice = startPrice - (startPrice - endPrice) * elapsed / duration

Опасность: если используешь block.number вместо block.timestamp на L2 (Optimism, Arbitrum) — block time нестабильный, цена падает неравномерно. Всегда block.timestamp для time-based logic на L2.

Refund mechanism в dutch auction — если пользователь минтил по цене $100, а финальная цена оказалась $60, разница должна быть возвращена. Это settlementPrice refund pattern: записываем каждую транзакцию, после окончания аукциона пользователи claim рефанд.

Архитектура и стек

Слой Технология Комментарий
Order protocol Seaport v1.5 Off-chain подписи, audited
NFT standard ERC-721 + ERC-2981 Royalty информация
Batch transfers ERC-1155 Для gaming/edition NFT
Metadata IPFS (Pinata/NFT.Storage) Децентрализованное хранение
Indexing The Graph (subgraph) История сделок, листинги
Frontend wagmi + viem WalletConnect v2, MetaMask
Search/filter PostgreSQL + Elasticsearch Off-chain индекс для скорости

Subgraph как основа данных

Маркетплейс без subgraph — это маркетплейс без истории. The Graph индексирует события контрактов: OrderFulfilled, OrderCancelled, Transfer, RoyaltyPaid. Схема entities: Token, Collection, Order, Sale, Account. GraphQL запросы дают history, trending, floor price — всё без on-chain RPC вызовов.

Floor price рассчитывается off-chain по активным листингам, хранится в PostgreSQL, обновляется при каждом новом листинге/отмене через webhook от subgraph.

Процесс работы

Аналитика (3-5 дней). Определяем: типы активов (ERC-721 / ERC-1155 / смешанно), нужен ли primary mint через маркетплейс, требования к royalty enforcement, target chains.

Проектирование (1 неделя). Архитектура контрактов, схема subgraph, database schema, API endpoints.

Разработка (4-8 недель). Smart contracts + subgraph + backend API + frontend. Параллельные треки со стыковкой на этапе интеграции.

Тестирование. Fork-тесты с реальными Seaport ордерами. E2E тесты на Sepolia.

Аудит и деплой. Акцент аудита: replay attacks, royalty bypass, bid manipulation в аукционах. Деплой с multisig owner.

Ориентиры по срокам

MVP маркетплейс с fixed-price листингами на базе Seaport — 3-4 недели. Полноценная платформа с аукционами, offers, royalty enforcement и subgraph — 2-3 месяца.

Стоимость рассчитывается после анализа требований.