Разработка минтинга NFT в мобильном приложении: полный цикл

Минтинг NFT с мобильного устройства — задача с подвохом. Нужно загрузить медиа в IPFS, сгенерировать корректные метаданные ERC-721 и вызвать смарт-контракт, при этом на телефоне возможны обрывы связи и нехватка памяти. Мы реализовали более 15 проектов с интеграцией NFT, включая интеграцию с крупными

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка минтинга NFT в мобильном приложении: полный цикл
Сложный
~5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    600

Минтинг NFT с мобильного устройства — задача с подвохом. Нужно загрузить медиа в IPFS, сгенерировать корректные метаданные ERC-721 и вызвать смарт-контракт, при этом на телефоне возможны обрывы связи и нехватка памяти. Мы реализовали более 15 проектов с интеграцией NFT, включая интеграцию с крупными маркетплейсами, и накопили практические решения этих проблем.

Наш опыт охватывает сети Ethereum, Polygon и Solana, работу с IPFS через Pinata и NFT.Storage, а также настройку push-уведомлений о статусе транзакций. Lazy minting позволяет отложить уплату газа до момента продажи, экономя до 90% затрат по сравнению с обычным минтингом — это в 10 раз выгоднее для создателя. В этой статье разберём технические детали каждого этапа, чтобы вы могли избежать типичных ошибок и сделать минтинг удобным для пользователя.

Как выполнить минтинг NFT с мобильного устройства?

Минтинг в мобильном приложении проходит три этапа: выбор и загрузка медиафайла, генерация метаданных ERC-721 и отправка транзакции в блокчейн. Каждый этап имеет свои подводные камни.

Загрузка медиа в IPFS

Для хранения медиа используем децентрализованное хранилище IPFS. На iOS применяем PHPickerViewController (доступен с iOS 14), на Android — PhotoPicker (Android 13) с fallback на GetContent. Файл отправляется на API Pinata или NFT.Storage. Приведём пример загрузки на Swift:

Пример загрузки на iOS Swift
// iOS — загрузка файла в Pinata IPFS func pinFileToIPFS(fileURL: URL, fileName: String) async throws -> String { var request = URLRequest(url: URL(string: "https://api.pinata.cloud/pinning/pinFileToIPFS")!) request.httpMethod = "POST" request.setValue("Bearer \(pinataJWT)", forHTTPHeaderField: "Authorization") let boundary = UUID().uuidString request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") var body = Data() body.append("--\(boundary)\r\nContent-Disposition: form-data; name=\"file\"; filename=\"\(fileName)\"\r\n") body.append("Content-Type: image/jpeg\r\n\r\n") body.append(try Data(contentsOf: fileURL)) body.append("\r\n--\(boundary)--\r\n") request.httpBody = body let (data, _) = try await URLSession.shared.data(for: request) let response = try JSONDecoder().decode(PinataResponse.self, from: data) return "ipfs://\(response.ipfsHash)" } 

Для больших файлов (видео от 100 МБ) настраиваем фоновую загрузку через URLSession с background-конфигурацией на iOS и WorkManager с setExpedited на Android. Отображаем прогресс в виде полосы и уведомлений. Средняя комиссия газа для минтинга на Ethereum ~0.05 ETH, на Polygon — менее $0.01, что делает второй вариант намного дешевле.

Формирование метаданных ERC-721

После загрузки медиа необходимо сгенерировать JSON‑метаданные по стандарту OpenSea. Пример на Kotlin:

// Android — формирование NFT metadata JSON data class NftMetadata( val name: String, val description: String, val image: String, // ipfs://QmXxx... (CID загруженного файла) val externalUrl: String?, val attributes: List<NftAttribute> ) data class NftAttribute( val traitType: String, val value: String ) // Пример результата val metadata = NftMetadata( name = "My NFT #1", description = "Created via mobile app", image = "ipfs://QmImageHash...", attributes = listOf( NftAttribute("Background", "Blue"), NftAttribute("Rarity", "Rare") ) ) 

Этот JSON загружается в IPFS, и полученный URI передаётся в функцию mint смарт‑контракта. Мы автоматизируем генерацию атрибутов — пользователь может добавлять пары «ключ‑значение» в интерфейсе.

UI формы минтинга

Форма содержит поля: название, описание, медиа, атрибуты. Preview NFT в реальном времени. Процесс разбит на три шага с индикацией:

  1. Загрузка медиа в IPFS
  2. Загрузка метаданных
  3. Транзакция минтинга

Прогресс отображается на каждом шаге. Ошибки (например, нехватка газа) обрабатываются с понятными сообщениями.

Почему lazy minting выгоден для авторов?

Высокие комиссии за газ — главный барьер для создателей. Lazy minting позволяет отложить запись токена в блокчейн до момента первой продажи. Вместо немедленной транзакции создатель подписывает EIP-712 ваучер, который содержит цену и URI метаданных. Покупатель при покупке активирует минтинг и оплачивает газ.

Сравним два подхода:

Характеристика Обычный минтинг Lazy minting
Оплата газа Платит создатель (upfront) Платит покупатель при покупке
Риск для создателя Газ может оказаться дороже, чем выручка Минимальный — газ только при продаже
Скорость появления в блокчейне Немедленно Только после покупки
Сложность интеграции Базовая Требуется генерация и проверка ваучеров (EIP-712)

Мы рекомендуем lazy minting для маркетплейсов и коллекций с низким объёмом продаж. Экономия газа может достигать 90%.

Процесс работы над минтингом в мобильном приложении

  1. Анализ — определяем требования к NFT: стандарт (ERC‑721/1155), сеть (Ethereum, Polygon, Solana), способы оплаты газа.
  2. Проектирование — разрабатываем архитектуру: выбор IPFS‑провайдера, схему метаданных, интеграцию с кошельком (WalletConnect или встроенный).
  3. Реализация — пишем модуль минтинга: выбор медиа, загрузка в IPFS, генерация метаданных, вызов контракта. Для lazy minting добавляем подпись и проверку ваучеров.
  4. Тестирование — проверка на тестовой сети (Goerli, Mumbai), эмуляция обрывов связи, тесты с разными размерами файлов.
  5. Деплой — публикация в App Store и Google Play, интеграция с серверной частью (если требуется).

Этапы и сроки:

Этап Длительность
Анализ 1 день
Проектирование 1-2 дня
Реализация 3-5 дней
Тестирование 1-2 дня
Деплой 1 день

Что входит в результат

  • Исходный код модуля минтинга (iOS Swift, Android Kotlin)
  • Интеграция с IPFS (Pinata или NFT.Storage)
  • Документая по смарт‑контракту и API
  • Настройка push-уведомлений для статуса транзакции
  • Руководство по администрированию (замена провайдера, обновление контракта)
  • Поддержка в течение 30 дней после сдачи

Сроки

Проект занимает от 5 до 10 рабочих дней в зависимости от сложности: базовый минтинг — 5 дней, с lazy minting — до 8 дней, с интеграцией нескольких сетей — до 10 дней. Свяжитесь с нами для точной оценки вашего кейса.

Мы гарантируем совместимость с правилами App Store и Google Play, а также полную документацию для самостоятельного развития. Закажите разработку минтинга — получите готовый модуль за 5-10 дней.