Настройка децентралізованого сховища даних
Децентралізоване сховище потрібне не завжди та не скрізь. NFT метаданих на централізованому сервері—реальна проблема (якщо сервер впаде, NFT втратить зображення). Документи для DAO-голосування на IPFS—обґрунтовано. Користувацькі сесії на Filecoin—надмірно. Почнемо з того, коли це реально потрібно.
IPFS: стандарт для Web3 контенту
IPFS (InterPlanetary File System)—content-addressed сховище. Файли ідентифікуються за CID (Content Identifier)—хешем вмісту. Ключова властивість: один і той же файл має один і той же CID скрізь. Це робить посилання неізмінними та перевіреними.
Проблема "pinning"
IPFS не гарантує зберігання. Файл існує поки хтось його "пініт" (тримає у себе). Якщо ви просто завантажили через ipfs add—за кілька днів garbage collector може видалити файл з вашої ноди, і якщо ніхто більше не пініт—файл зникне.
Рішення:
Pinning services:
- Pinata—найпопулярніший, REST API, зручний dashboard, $0 до 1 GB
- web3.storage (від Protocol Labs)—безплатний tier, зберігання в Filecoin під капотом
- Infura IPFS—для команд які вже використовують Infura
import { PinataSDK } from 'pinata'
const pinata = new PinataSDK({ pinataJwt: process.env.PINATA_JWT })
// Завантаження файлу
const upload = await pinata.upload.file(file)
console.log(upload.IpfsHash) // CID: Qm... або bafy...
// Завантаження JSON метаданих (NFT стандарт)
const metadata = await pinata.upload.json({
name: "My NFT",
description: "...",
image: `ipfs://${imageCID}`
})
Self-hosted IPFS нода з Kubo:
ipfs init
ipfs daemon &
ipfs pin add QmYwAPJzv5CZsnA... # пініти конкретний CID
Для production—нода з достатнім диском + пініція всього контенту вашого додатку. Комбінація self-hosted + один pinning service як backup—розумний мінімум.
IPFS Gateway
Браузери не розуміють ipfs:// нативно (Brave—виключення). Для користувачів потрібен HTTP gateway:
-
https://ipfs.io/ipfs/{CID}—публічний, повільний -
https://gateway.pinata.cloud/ipfs/{CID}—швидше для піноченого контенту - Власний gateway—
ipfs daemonумо працювати як gateway на портус 8080
Для NFT маркетплейсів—власний gateway обов'язковий. Залежність від ipfs.io порушує decentralization.
Filecoin: гарантоване довгострокове зберігання
IPFS—протокол адресації. Filecoin—економічний шар поверх. Постачальники зберігання (Storage Providers) отримують FIL за зберігання даних за верифіковані deal-контракти.
Напрямку працювати з Filecoin складно: потрібні deals, мінімальний розмір зберігання, специфічний API. На практиці використовують абстракції:
Lighthouse—простий API для зберігання на Filecoin, працює як pinning service:
import lighthouse from '@lighthouse-web3/sdk'
const response = await lighthouse.upload('./path/to/file', API_KEY)
console.log(response.data.Hash) // CID
// Дані автоматично зберігаються в Filecoin сділках
estuary (застарілий) / w3s (web3.storage)—аналогічний підхід.
Filecoin обґрунтований для: довгострокових архівів, даних DAO, документів чутливих до compliance де потрібен proof of storage.
Arweave: "Заплати раз, храни вічно"
Arweave—принципово інший підхід. Разовий платіж покриває зберігання назавжди (математично: 200 років з поточним розміром ланцюга). Використовує Active Storage Model—AR токен.
Вартість: ~$5–10 за GB (міняється з ціною AR). Для малих NFT колекцій—дуже привабливо порівняно з щомісячними платежами.
Bundlr (тепер Irys)—абстракція над Arweave, мультивалютна оплата (ETH, SOL, MATIC замість AR):
import Irys from '@irys/sdk'
const irys = new Irys({
network: 'mainnet',
token: 'ethereum',
key: process.env.PRIVATE_KEY
})
const response = await irys.uploadFile('./nft-image.png')
console.log(`https://arweave.net/${response.id}`)
Arweave—перший вибір для NFT зображень та постійних on-chain даних. Solana NFT екосистема (Metaplex) історично використовує Arweave.
Storj та Sia: зашифроване P2P сховище
Storj—enterprise-grade децентралізоване сховище з S3-сумісним API. Дані шифруються та розділяються по нодах мережі. Для додатків яким потрібна замна S3 з гарантіями приватності:
import { S3Client } from '@aws-sdk/client-s3'
const client = new S3Client({
endpoint: 'https://gateway.storjshare.io',
credentials: { accessKeyId: KEY, secretAccessKey: SECRET },
region: 'us-east-1'
})
// Далі стандартний AWS S3 SDK
Вибір сховища: матриця рішень
| Use case | Рішення | Причина |
|---|---|---|
| NFT зображення | Arweave / IPFS + Pinata | Постійність, стандарт індустрії |
| NFT метаданих JSON | Arweave / IPFS | Те ж саме |
| DAO документи | IPFS + Filecoin | Верифіковість + довгострок |
| Користувацький контент (UGC) | IPFS + self-hosted gateway | Гібкість, контроль |
| Приватні зашифровані дані | Storj | S3-сумісність, шифрування |
| Архіви, compliance | Filecoin | Proof of storage |
Що налаштовується за 1–3 дні
Вибір та настройка сховища під ваш use case, інтеграція SDK у бекенд або смарт-контракти (CID у контракті замість HTTP URL), настройка IPFS gateway (self-hosted або через CDN), upload pipeline для NFT контенту (зображення → CID → метаданів JSON → CID → mint), автоматичне пініція нових файлів.







