Мінтинг NFT з мобільного пристрою — завдання з підводним камінням. Потрібно завантажити медіа в IPFS, згенерувати коректні метадані ERC-721 та викликати смарт-контракт, при цьому на телефоні можливі обриви зв'язку та нестача пам'яті. Ми реалізували понад 15 проєктів з інтеграцією NFT, включаючи інтеграцію з великими маркетплейсами, і накопичили практичні рішення цих проблем.
Наш досвід охоплює мережі Ethereum, Polygon та Solana, роботу з IPFS через Pinata та NFT.Storage, а також налаштування push-сповіщень про статус транзакцій. Lazy minting дозволяє відкласти сплату газу до моменту продажу, заощаджуючи до 90% витрат — це в 10 разів вигідніше для творця. Для порівняння: стандартна комісія газу в Ethereum може сягати $100, а на Polygon — менше $0.01. У цій статті розберемо технічні деталі кожного етапу, щоб ви могли уникнути типових помилок і зробити мінтинг зручним для користувача.
Як виконати мінтинг 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. Відображаємо прогрес у вигляді смуги та сповіщень.
Формування метаданих 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 в реальному часі. Процес розбитий на три кроки з індикацією:
- Завантаження медіа в IPFS
- Завантаження метаданих
- Транзакція мінтингу
Прогрес відображається на кожному кроці. Помилки (наприклад, нестача газу) обробляються зі зрозумілими повідомленнями.
Чому lazy minting вигідний для авторів?
Високі комісії за газ — головний бар'єр для творців. Lazy minting дозволяє відкласти запис токена в блокчейн до моменту першого продажу. Замість негайної транзакції творець підписує EIP-712 ваучер, який містить ціну та URI метаданих. Покупець при покупці активує мінтинг і оплачує газ.
Порівняємо два підходи:
| Характеристика | Звичайний мінтинг | Lazy minting |
|---|---|---|
| Оплата газу | Платить творець (upfront) | Платить покупець при покупці |
| Ризик для творця | Газ може виявитися дорожчим, ніж виручка | Мінімальний — газ лише при продажу |
| Швидкість появи в блокчейні | Негайно | Лише після покупки |
| Складність інтеграції | Базова | Потрібна генерація та перевірка ваучерів (EIP-712) |
Ми рекомендуємо lazy minting для маркетплейсів та колекцій з низьким обсягом продажів. Економія газу може сягати 90% — це в 10 разів вигідніше за звичайний мінтинг.
Процес роботи над мінтингом у мобільному додатку
- Аналіз — визначаємо вимоги до NFT: стандарт (ERC‑721/1155), мережа (Ethereum, Polygon, Solana), способи оплати газу.
- Проектування — розробляємо архітектуру: вибір IPFS‑провайдера, схему метаданих, інтеграцію з гаманцем (WalletConnect або вбудований).
- Реалізація — пишемо модуль мінтингу: вибір медіа, завантаження в IPFS, генерація метаданих, виклик контракту. Для lazy minting додаємо підпис та перевірку ваучера NFT.
- Тестування — перевірка на тестовій мережі (Goerli, Mumbai), емуляція обривів зв'язку, тести з різними розмірами файлів.
- Деплой — публікація в 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 років на ринку блокчейн-розробки, 15+ успішних проєктів. Замовте розробку мінтингу — отримайте готовий модуль за 5-10 днів.







