Разработка мобильного приложения для NFT-маркетплейса
Представьте: пользователь заходит в ваш NFT-маркетплейс на смартфоне, находит редкий токен, нажимает «Купить» — и... ничего не понимает. Вместо привычного списания карты — запрос подписи в кошельке, транзакция висит без подтверждения. Мы сталкивались с этим десятки раз. Наш опыт — 5+ лет в мобильной разработке и 30+ проектов с Web3 — позволяет проектировать UX так, чтобы пользователь не терял конверсию. Ниже разберём, как мы это делаем на Swift и Kotlin.
Какие задачи решает мобильный маркетплейс
- Подписывание транзакций без потери контекста. Пользователь не должен гадать, что делает. Каждый шаг объясняем: «Подпишите approve, чтобы выставить токен на продажу». Используем WalletConnect v2 для плавного перехода.
- Быстрая загрузка галереи. IPFS-шлюзы медленные — загрузка 100 токенов может занять 30 секунд. Мы кэшируем метаданные на устройстве (до 500 МБ) и подключаем индексаторы — The Graph или Alchemy NFT API, время ответа 50–200 мс.
- Поддержка роялти. По стандарту ERC-2981 маркетплейс автоматически высчитывает комиссию создателю и показывает её покупателю. Никаких скрытых списаний.
Как выбрать подход: Web3 Native или WalletConnect?
Два основных пути:
Native SDK (web3.swift / web3j) — полный контроль над транзакциями, встроенная работа с ABI. Даёт лучший UX: пользователь не переключается в сторонний кошелёк. Но требует больше кода для событий смарт-контрактов.
WalletConnect v2 + WebView — быстрее в разработке, подходит, если команда знает React Native или Unreal Engine. QR-код или deep link подключают внешний кошелёк. Минус — два перехода для неподготовленного пользователя.
Подробнее о протоколе WalletConnect — в официальной документации на WalletConnect
Мы рекомендуем нативный SDK для маркетплейсов с высокой активностью пользователей, WalletConnect — для MVPs и тестовых запусков.
Техническая реализация: кэширование NFT и индексация
// Android — кэширование метаданных NFT с Coil + OkHttp val imageLoader = ImageLoader.Builder(context) .memoryCache { MemoryCache.Builder(context) .maxSizePercent(0.25) // 25% RAM .build() } .diskCache { DiskCache.Builder() .directory(context.cacheDir.resolve("nft_images")) .maxSizeBytes(500L * 1024 * 1024) // 500 MB .build() } .okHttpClient { OkHttpClient.Builder() .addInterceptor(IpfsGatewayInterceptor()) // заменяет ipfs:// на https:// .build() } .build() IpfsGatewayInterceptor перехватывает URI вида ipfs://Qm... и подставляет быстрый шлюз — Cloudflare (cloudflare-ipfs.com), NFT.storage, или собственный. Добавь fallback: если первый шлюз не отвечает за 3 секунды — пробуй следующий.
Для коллекций от нескольких тысяч токенов — не грузить метаданные напрямую из блокчейна. Использовать индексатор: The Graph, Alchemy NFT API, Moralis, OpenSea API. Они уже агрегировали метаданные — время ответа 50–200 мс вместо 10+ секунд.
Что входит в работу: deliverables
- Документация по архитектуре: диаграммы потоков данных (сигнатуры транзакций, взаимодействие с контрактами).
- Доступ к репозиторию с CI/CD (GitHub Actions) и настройкой Firebase App Distribution.
- Обучение команды: воркшоп по работе с WalletConnect и подписыванию транзакций.
- Поддержка в течение месяца: мониторинг, исправление багов, обновление API.
Сроки и стоимость
| Компонент | Срок |
|---|---|
| Кошелёк (WalletConnect v2 / embedded) | 1 неделя |
| Каталог с IPFS, пагинацией, фильтрами | 1–2 недели |
| Профиль: NFT пользователя | 1 неделя |
| Fixed Price покупка/продажа | 1.5 недели |
| Аукцион | 1.5 недели |
| Оферы | 1 неделя |
| Поиск и фильтры по traits | 1 неделя |
MVP с каталогом, покупкой по фиксированной цене и профилем: 6–8 недель. Полноценный маркетплейс с аукционами, оферами, коллекциями и рейтингами: 2–3 месяца. Стоимость рассчитывается индивидуально — напишите нам, оценим проект за 1 день.
Типичные ошибки и как их избежать
- Нет индексатора для больших коллекций. Прямые запросы к блокчейну вызывают таймауты. Подключайте The Graph или Alchemy до старта разработки.
- Игнорирование роялти. Без ERC-2981 создатели не получают комиссию — это нарушает лицензионные соглашения.
- Одна точка отказа для IPFS. Используйте 2–3 шлюза с fallback, чтобы не потерять метаданные.
Чек-лист для запуска
- [ ] Подключен WalletConnect v2 с поддержкой Sign API - [ ] Настроено кэширование IPFS с fallback-шлюзами - [ ] Реализована индексация NFT через Alchemy или The Graph - [ ] Добавлена поддержка ERC-2981 с отображением роялти - [ ] Проведено нагрузочное тестирование транзакций (200+ в минуту)Наши инженеры имеют сертификаты по Swift (iOS 15+) и Kotlin (Jetpack Compose). Гарантируем соблюдение App Store Review Guidelines (Section 4.2/5.1) и Google Play Console требований. Закажите консультацию — мы подготовим коммерческое предложение с архитектурой и сроками.







