Блокчейн

IPFS и децентрализованное хранилище

Когда вы покупаете NFT за миллион долларов, где хранится картинка? Не в блокчейне - Ethereum хранит только ссылку. Сама картинка может лежать на обычном сервере Amazon, который завтра выключится. Или на IPFS - сети, где адрес файла гарантирует его содержимое математически. Но «гарантирует содержимое» и «гарантирует доступность» - это две разные вещи. Как на самом деле устроено децентрализованное хранилище, кто платит за хранение, и можно ли действительно сохранить данные навечно?

  • **NFT-маркетплейсы** - OpenSea, Rarible используют IPFS для хранения метаданных и изображений миллионов NFT, защищая их от подмены через content addressing
  • **Protocol Labs** - создатели IPFS и Filecoin, где 3 400+ провайдеров хранят 22+ эксабайт данных с криптографическими доказательствами
  • **Arweave Permaweb** - журналисты и активисты используют Arweave для сохранения цензурируемых материалов навечно, включая архивы The Guardian и Internet Archive

Предварительные знания

  • Hash Functions: the foundation of blockchain
  • P2P networks and gossip protocols

Content Addressing: адрес = хеш содержимого

Когда ты открываешь страницу `https://example.com/cat.jpg`, браузер говорит: «дай мне файл, который лежит **по этому адресу**». Если владелец сервера подменит картинку на другую, ты этого не узнаешь - URL тот же, а содержимое изменилось. Это **location-based addressing**: адрес указывает на место, а не на данные.

IPFS переворачивает эту логику. Адрес файла - это **криптографический хеш его содержимого**. Если изменить хотя бы один байт, хеш станет другим, а значит - другим станет и адрес. Это **content addressing**: адрес гарантирует содержимое.

В IPFS адрес файла называется **CID** (Content Identifier). CID - это не просто хеш. Он содержит метаинформацию о том, **какой алгоритм хеширования** использован и **как кодированы данные**. Это достигается через две технологии: **multihash** (самоописывающий хеш) и **multicodec** (самоописывающий кодек).

IPFS хранит файлы не как единый блоб, а разбивает их на **блоки до 256 КБ** и организует в **DAG** (Directed Acyclic Graph) - направленный ациклический граф. Корневой CID указывает на список дочерних CID, каждый из которых - отдельный блок данных. Это позволяет дедуплицировать повторяющиеся фрагменты и скачивать части файла с разных нод параллельно.

**NFT и IPFS:** большинство NFT-проектов хранят метаданные и изображения на IPFS. Token URI в смарт-контракте указывает на `ipfs://QmXyz...` - CID, который гарантирует, что картинка вашего NFT не будет подменена. Если NFT ссылается на обычный HTTP-URL, владелец сервера может заменить ваш Bored Ape на пустую страницу.

Чем CID в IPFS принципиально отличается от URL в HTTP?

DHT: распределённая таблица маршрутизации

Ты знаешь CID нужного файла. Но **где** его взять? В IPFS нет центрального индекса. Вместо этого сеть использует **Kademlia DHT** (Distributed Hash Table) - распределённую хеш-таблицу, где каждый узел хранит информацию о том, у кого какие CID. Если ты изучал P2P-сети, этот механизм тебе знаком.

Каждая IPFS-нода имеет уникальный **Peer ID** - хеш её публичного ключа. Пространство всех возможных ID и всех CID - одно и то же: 256-битные числа. «Расстояние» между ними вычисляется через **XOR**. Нода считается «ответственной» за CID, если её Peer ID ближе всего к этому CID по XOR-метрике.

Когда нода D найдена, начинается передача данных через **Bitswap** - протокол обмена блоками в IPFS. Bitswap работает по принципу «ты мне - я тебе»: ноды ведут учёт того, сколько данных получили и отдали каждому пиру. Это создаёт стимул делиться контентом, а не только потреблять.

Помимо DHT и Bitswap, IPFS поддерживает **Pubsub** (Publish-Subscribe) - механизм подписки на обновления в реальном времени. Вместо постоянного опроса DHT ноды подписываются на «тему» и мгновенно получают новые CID, как только они появляются. Pubsub используется, например, для синхронизации IPNS-записей и OrbitDB.

**IPFS в цифрах (2024):** сеть IPFS насчитывает более 250 000 уникальных нод, которые обрабатывают свыше 200 миллионов DHT-запросов в день. Среднее время обнаружения контента - от 2 до 10 секунд в зависимости от количества провайдеров. Для сравнения: BitTorrent DHT обслуживает 20+ миллионов узлов, но без CID-адресации и верификации контента.

IPFS-нода хочет скачать файл по известному CID. Какова правильная последовательность действий?

Pinning: проблема сохранности данных

Распространённый миф: «Если загрузить файл в IPFS, он будет храниться вечно». Это не так. IPFS-нода хранит данные до тех пор, пока ей хватает места. Когда диск заполняется, запускается **garbage collection** - сборщик мусора удаляет данные, которые нода считает ненужными.

Чтобы защитить данные от удаления, существует механизм **pinning** (закрепление). Закреплённый CID не удаляется при garbage collection. Но если вы закрепили файл только на **своей** ноде и она выключилась - файл становится недоступен для всей сети.

Решение - **Remote Pinning Services**: сторонние сервисы, которые держат ваши данные закреплёнными на своих нодах 24/7. Вы платите за гарантию доступности. Это как хостинг, но для IPFS.

**«IPFS - это permanent storage» - заблуждение.** IPFS гарантирует **целостность** (CID = хеш), но не гарантирует **доступность**. Если ни одна нода в мире не хранит ваш CID, данные потеряны. Для гарантии доступности нужен pinning (централизованный или через Filecoin/Arweave).

Существует также **Collaborative Pinning** - когда группа участников договаривается совместно хранить набор CID. Проект **IPFS Cluster** позволяет координировать pinning между несколькими нодами: если одна нода падает, остальные автоматически подхватывают её закреплённые данные. Это шаг к децентрализованной гарантии доступности, но требует координации и доверия между участниками.

**Реальный пример:** в 2021 году NFT-маркетплейс проверил 4.7 миллиона NFT и обнаружил, что 40% метаданных ссылались на HTTP-URL, а не на IPFS CID. Когда серверы выключились, эти NFT потеряли свои изображения навсегда. Проекты, использовавшие IPFS + pinning services, сохранили данные.

Вы загрузили файл в IPFS и получили CID. Через месяц файл стал недоступен. Какая наиболее вероятная причина?

Filecoin: хранение с экономическими гарантиями

Pinning services решают проблему доступности, но создают новую: **зависимость от одной компании**. Если Pinata закроется, ваши данные исчезнут. Filecoin решает эту проблему радикально - превращает хранение данных в **открытый рынок** с криптографическими доказательствами.

В Filecoin **Storage Providers** (провайдеры хранения) - это компании или индивидуальные операторы, которые продают место на своих дисках. Клиенты заключают **Storage Deals** - смарт-контракты на хранение данных. Провайдер обязуется хранить файл определённое время (обычно от 180 до 540 дней), а протокол **проверяет** выполнение обязательств.

Помимо рынка хранения, Filecoin имеет **Retrieval Market** - рынок доставки данных. Storage Provider хранит данные, а **Retrieval Provider** специализируется на быстрой доставке. Клиент платит микротранзакцию за скачивание, создавая конкуренцию за скорость.

В 2023 году Filecoin запустил **FVM** (Filecoin Virtual Machine) - среду выполнения смарт-контрактов, совместимую с EVM. Это открыло возможности для DeFi поверх хранилища: **DataDAOs** (коллективное управление наборами данных), **perpetual storage contracts** (автоматическое продление сделок) и **replication workers** (смарт-контракты, автоматически создающие копии данных у нескольких провайдеров).

**FIL токеномика:** максимальный выпуск - 2 миллиарда FIL. Токены распределяются между Storage Providers (как награда за блоки и за хранение данных), а также сжигаются при нарушении обязательств. Провайдер должен внести **залог** (collateral) перед принятием сделки - если данные будут потеряны, залог конфискуется. Это создаёт экономическую мотивацию хранить данные надёжно.

Как Filecoin проверяет, что Storage Provider действительно хранит данные, а не удалил их после получения оплаты?

Arweave: заплати один раз - храни вечно

Filecoin решает проблему хранения через периодические сделки: 180 дней, 540 дней, потом - новая сделка. Но что если нужно хранить данные **навсегда**? Судебные решения, научные публикации, исторические архивы - данные, которые должны пережить любую компанию и любой контракт.

**Arweave** предлагает радикально другую модель: заплати **один раз** - и данные хранятся **навечно**. Экономическая идея: вы платите за 200+ лет хранения по сегодняшним ценам, а стоимость хранения падает на ~30% в год (закон Крайдера). Накопленный эндаумент покрывает расходы бесконечно, как банковский вклад с процентами, превышающими инфляцию.

Проблема Arweave - пропускная способность. Запись напрямую в blockweave медленная и дорогая для мелких транзакций. Решение - **Bundlr (ныне Irys)**: промежуточный слой, который собирает тысячи транзакций в один «пакет» (bundle) и записывает его в Arweave единой транзакцией. Это снижает стоимость и увеличивает скорость с минут до миллисекунд.

Arweave создал концепцию **Permaweb** - неизменяемый веб, где сайты и приложения существуют вечно. Любой HTML/CSS/JS можно загрузить в Arweave, и он будет доступен по постоянной ссылке. Это уже используется для сохранения журналистских расследований, цензурируемого контента и исторических документов.

ХарактеристикаIPFSFilecoinArweaveCeramic
Модель храненияP2P-кешированиеВременные сделкиНавсегда (эндаумент)Мутабельные потоки
Гарантия доступностиНет (нужен pinning)На срок сделкиНавсегдаПока есть ноды
СтоимостьБесплатно (свой узел)~$0.0001/ГБ/мес~$5-40/ГБ (одноразово)Бесплатно + gas
МутабельностьIPNS (указатель на CID)НетНетДа (streams)
КонсенсусНетPoRep + PoStSPoRAНет (CRDT)
ТокенНетFILARНет
ПрименениеРаздача контентаХолодное хранениеВечные архивыПрофили, данные
Пропускная способностьВысокаяНизкая (sealed sectors)Средняя (через Irys)

Итоги

  • **Content Addressing** - адрес файла в IPFS это его CID (хеш содержимого), что гарантирует целостность данных. В отличие от HTTP, где сервер может подменить файл, CID математически привязан к контенту - и NFT за миллион долларов стоит ровно столько, сколько стоит гарантия его ссылки
  • **Kademlia DHT + Bitswap** - распределённая таблица маршрутизации находит провайдеров контента за O(log N) шагов, а Bitswap обеспечивает честный обмен блоками между нодами
  • **Pinning** - IPFS не гарантирует доступность: без закрепления данные удаляются при garbage collection. Remote pinning services (Pinata, Web3.Storage) решают проблему, но создают зависимость от сервиса
  • **Filecoin** - превращает хранение в открытый рынок с Proof of Replication и Proof of Spacetime, а **Arweave** предлагает модель «заплати раз - храни вечно» через механизм эндаумента. Каждый подход - компромисс между стоимостью, гарантиями и гибкостью

Связанные темы

Децентрализованное хранилище стоит на фундаменте хеширования и P2P-сетей, а его применение пронизывает экосистему токенов и кошельков:

  • Хеширование — Content addressing основан на криптографических хеш-функциях - CID по сути это multihash содержимого
  • P2P-сети и gossip протоколы — IPFS использует Kademlia DHT (изученную в контексте Ethereum) для обнаружения контента и Bitswap для обмена блоками
  • Стандарты токенов ERC — ERC-721 (NFT) и ERC-1155 хранят tokenURI, который часто указывает на IPFS CID - связь между on-chain токеном и off-chain данными
  • Кошельки и управление ключами — Взаимодействие с Filecoin и Arweave требует кошельков для оплаты сделок хранения токенами FIL и AR

Вопросы для размышления

  • Если 40% NFT ссылаются на HTTP-URL вместо IPFS CID, что это говорит о реальном уровне децентрализации NFT-экосистемы? Должны ли маркетплейсы обязать использовать content addressing?
  • Arweave обещает вечное хранение, но зависит от предположения, что стоимость хранения будет падать на ~30% в год. Что произойдёт, если этот тренд замедлится - например, из-за дефицита чипов или энергетического кризиса?
  • Remote pinning services (Pinata, Web3.Storage) фактически являются централизованными посредниками в децентрализованной сети. Нарушает ли это философию IPFS, или это необходимый компромисс между идеалом и практикой?

Связанные уроки

  • net-01-intro
IPFS и децентрализованное хранилище

0

1

Войти

Высокая

**Как выбрать?** Для временных данных (кеш, CDN) - IPFS. Для данных с определённым сроком жизни (бэкапы, архивы) - Filecoin. Для данных, которые должны существовать вечно (NFT-метаданные, юридические документы, научные публикации) - Arweave. Для мутабельных пользовательских данных (профили, настройки) - Ceramic.

**AR токеномика:** максимальный выпуск - 66 миллионов AR (всё уже эмитировано). Часть каждого платежа за хранение попадает в **Storage Endowment** - общий фонд, из которого выплачиваются награды майнерам за хранение данных. По сути, каждый загруженный файл «спонсирует» своё хранение на будущее.

Децентрализованное хранилище автоматически решает все проблемы: данные вечны, бесплатны и всегда доступны

Каждое решение имеет свои trade-offs. IPFS не гарантирует доступность без pinning. Filecoin требует продления сделок. Arweave берёт высокую разовую плату и не поддерживает мутабельность. Даже «вечное» хранение Arweave зависит от экономической модели: если стоимость хранения перестанет падать или сеть потеряет майнеров, эндаумент может истощиться.

Децентрализованное хранилище - это не магия, а набор инженерных и экономических компромиссов. IPFS решает проблему адресации и верификации, Filecoin добавляет экономические гарантии хранения, Arweave предлагает модель вечности. Понимание ограничений каждого подхода позволяет выбрать правильный инструмент для конкретной задачи - вместо того, чтобы слепо верить в «неуязвимость блокчейна».

В чём ключевое экономическое отличие модели хранения Arweave от Filecoin?