Налаштування зберігання метаданих NFT на Arweave
IPFS — не постійне хранилище. Файл на IPFS існує, поки хоча б один нод тримає його в pin. Платний пиннінг через Pinata або NFT.Storage коштує грошей — й якщо проект перестає платити, метаданні та зображення зникають. «Ваш» NFT стає токеном, що вказує на 404.
Arweave вирішує це інакше: одноразова плата за постійне зберігання. Економіка протоколу розрахована на зберігання даних 200+ років через storage endowment механізм. Плачуєш один раз — файл існує навіки.
Як працює загрузка на Arweave
Загрузка через Bundlr Network (тепер Irys) — це L2 поверх Arweave. Основні переваги: миттєве підтвердження загрузки (99.9% впевненість відразу, фіналізація на Arweave через кілька хвилин-годин), підтримка оплати в ETH/MATIC/SOL крім AR токена, batch загрузка тисяч файлів через SDK.
import Irys from "@irys/sdk";
const irys = new Irys({
url: "https://node1.irys.xyz",
token: "ethereum",
key: process.env.PRIVATE_KEY
});
// Загружаємо одне зображення
const response = await irys.uploadFile("./images/1.png", {
tags: [{ name: "Content-Type", value: "image/png" }]
});
const permanentUrl = `https://arweave.net/${response.id}`;
Для коллекції 10k токенів: загружаємо спочатку всі зображення, отримуємо масив Arweave transaction IDs, потім формуємо JSON metadata з "image": "https://arweave.net/TxId", загружаємо metadata, отримуємо базовий URI.
Вартість зберігання одного зображення (~50KB PNG) на момент написання — $0.001-0.005. Вся 10k коллекція коштує $10-50 залежно від розміру файлів. Це одноразовий платіж.
Структура URI для смарт-контракту
Після загрузки можливі два підходи до базового URI:
Варіант 1 — Irys manifest (рекомендується для коллекцій): загружаємо всі файли як папку через irys.uploadFolder(), отримуємо один manifest ID. Тоді baseURI = "https://arweave.net/ManifestId/" та tokenURI(1) повертає "https://arweave.net/ManifestId/1". Зручно, але manifest трохи повільніше фіналізується.
Варіант 2 — індивідуальні txIds: кожен metadata JSON має свій txId, записуються в маппінг mapping(uint256 => string) private _tokenURIs. Більш гнучко (можна обновити окремий токен до reveal), але дорожче по газу.
Для стандартної generative коллекції з reveal — Варіант 1 + reveal через setBaseURI(manifestId).
Ориєнтири по термінах і процесі
Налаштування зберігання для готової коллекції (зображення + metadata JSON вже згенеровані) — 1 день:
- Налаштування Irys SDK, поповнення баланса в ETH
- Batch загрузка зображень з перевіркою integrity
- Генерація metadata JSON з arweave.net URLs
- Загрузка metadata, отримання manifest ID
- Обновлення
baseURIв контракті (якщо вже деплоєний)
Якщо metadata потрібно генерувати з нуля (traits не визначені) — це окрема задача.
Вартість фіксована по обсягу роботи + вартість AR storage (оплачується клієнтом напрямую або включається в кошторис).







