Мінтинг 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 днів.







