Настройка хранения метаданных NFT на Arweave

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Настройка хранения метаданных NFT на Arweave
Простая
~1 рабочий день
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Настройка хранения метаданных NFT на Arweave

IPFS — не постоянное хранилище. Файл на IPFS существует, пока хотя бы один нод держит его в pin. Платный pinning через 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 для смарт-контракта

После загрузки metadata возможны два подхода к базовому URI:

Вариант 1 — Irys manifest (рекомендуется для коллекций): загружаем все файлы как папку через irys.uploadFolder(), получаем один manifest ID. Тогда baseURI = "https://arweave.net/ManifestId/" и tokenURI(1) возвращает "https://arweave.net/ManifestId/1". Удобно, но manifest немного медленнее в финализации.

Вариант 2 — индивидуальные txId: каждый metadata JSON имеет собственный txId, они записываются в маппинг mapping(uint256 => string) private _tokenURIs. Более гибко (можно обновить отдельный токен до reveal), но дороже по газу.

Для стандартной генеративной коллекции с reveal — Вариант 1 + reveal через setBaseURI(manifestId).

Ориентиры по срокам и процессу

Настройка хранения для готовой коллекции (изображения + metadata JSON уже сгенерированы) — 1 день:

  • Настройка Irys SDK, пополнение баланса в ETH
  • Batch загрузка изображений с проверкой integrity
  • Генерация metadata JSON с arweave.net URLs
  • Загрузка metadata, получение manifest ID
  • Обновление baseURI в контракте (если уже задеплоен)

Если metadata нужно генерировать с нуля (трейты не определены) — это отдельная задача.

Стоимость фиксирована по объёму работы + стоимость AR storage (оплачивается клиентом напрямую или включается в смету).