InterPlanetary File System
InterPlanetary File System (IPFS) — это децентрализованный протокол и одноимённая пиринговая сеть для хранения и обмена данными, в которой каждый файл идентифицируется не по его местоположению (URL), а по криптографическому хешу его содержимого. IPFS объединяет все вычислительные устройства в единую файловую систему, работающую по принципу адресации по содержимому (content addressing), что позволяет повысить отказоустойчивость, снизить зависимость от центральных серверов и обеспечить верифицируемость данных.
История
Концепция IPFS была впервые предложена Хуаном Бенетом (Juan Benet) в 2014 году. Бенет, американский разработчик и предприниматель, основал компанию Protocol Labs, которая и занимается развитием протокола. В 2015 году вышла первая версия спецификации IPFS, а в 2016 году — стабильный релиз. Проект изначально задумывался как замена HTTP для распределённой сети, способная работать в условиях перебоев связи и цензуры.
В 2017 году Protocol Labs запустила Filecoin — блокчейн-сеть, построенную поверх IPFS, которая стимулирует пользователей предоставлять дисковое пространство для хранения данных. Filecoin использует криптовалютные токены для оплаты хранения и доказательства сохранности файлов. В 2020 году IPFS начал активно внедряться в экосистему Web3, в частности, стал основой для хранения метаданных и контента в децентрализованных приложениях (dApps) на блокчейне Ethereum.
Принцип работы
Адресация по содержимому
В отличие от традиционной модели HTTP, где файл запрашивается по его расположению (например, https://example.com/image.jpg`), в IPFS файл идентифицируется по его криптографическому хешу (CID — Content Identifier). CID вычисляется с помощью алгоритмов хеширования (SHA-256, Blake2b и других) и однозначно соответствует содержимому файла. Если содержимое файла изменяется, меняется и его CID. Это позволяет проверять целостность данных: получатель может вычислить хеш полученного файла и сравнить его с ожидаемым CID.
Структура сети
IPFS использует распределённую хеш-таблицу (DHT) для поиска узлов, хранящих нужный файл. Когда пользователь запрашивает файл по CID, его узел обращается к DHT, находит ближайшие узлы, у которых есть этот файл, и загружает его оттуда. При этом файл может быть разбит на блоки (chunks), которые хранятся на разных узлах. IPFS использует механизм дедупликации: если два файла содержат одинаковые блоки, эти блоки хранятся только один раз.
Именование и версионирование
Для удобства работы с изменяемыми данными IPFS поддерживает систему IPNS (InterPlanetary Name System). IPNS позволяет привязать CID к публичному ключу, создавая постоянную ссылку, которая может указывать на разные версии файла. Например, владелец сайта может обновлять содержимое, а пользователи будут обращаться по одному и тому же IPNS-адресу, который автоматически перенаправляет на актуальный CID. Кроме того, IPFS поддерживает MFS (Mutable File System) — изменяемую файловую систему, работающую поверх неизменяемых блоков.
Архитектура
Основные компоненты
- Узел (node) — программа, запущенная на компьютере пользователя, которая реализует протокол IPFS. Узел может хранить данные, отвечать на запросы других узлов и участвовать в DHT.
- CID (Content Identifier) — уникальный идентификатор содержимого, состоящий из мультибазового кодирования (base32, base58 и т.д.) и мультихеша.
- DHT (Distributed Hash Table) — распределённая таблица, хранящая информацию о том, какие узлы содержат какие блоки.
- Bitswap — протокол обмена блоками между узлами. Узлы запрашивают недостающие блоки и отправляют имеющиеся.
- IPNS — система имен, привязывающая CID к публичному ключу.
Формат данных
Данные в IPFS хранятся в виде объектов MerkleDAG (Merkle Directed Acyclic Graph). Каждый объект представляет собой блок данных, содержащий либо сам файл, либо ссылки на другие блоки. Дерево Меркла позволяет эффективно проверять целостность всей структуры: достаточно знать корневой хеш, чтобы проверить любой дочерний блок.
Применение
Хранение и распространение контента
IPFS используется для децентрализованного хранения файлов, особенно в условиях, когда централизованные серверы недоступны или подвержены цензуре. Например, в 2017 году IPFS применялся для архивации данных о выборах в США, а также для распространения информации в странах с ограниченным доступом к интернету.
Децентрализованные приложения (dApps)
Многие проекты на блокчейне Ethereum, Solana, Polkadot и других сетях используют IPFS для хранения метаданных NFT, изображений, видео и других файлов, связанных с токенами. Например, популярные маркетплейсы NFT, такие как OpenSea и Rarible, по умолчанию загружают файлы в IPFS.
Научные и архивные проекты
IPFS применяется для долгосрочного хранения научных данных, публикаций и архивов. Например, проект Internet Archive (Архив Интернета) использует IPFS для резервного копирования своих коллекций. Также IPFS используется в проекте «Энциклопедия Википедии» для создания децентрализованных копий статей.
Обход блокировок
В некоторых странах IPFS используется для доступа к заблокированным сайтам и ресурсам. Поскольку контент распространяется через пиринговую сеть, его сложнее заблокировать на уровне провайдера. Однако следует отметить, что в России IPFS не является запрещённой технологией, но её использование для обхода блокировок может быть ограничено законодательством.
Критика и ограничения
Производительность
IPFS не оптимизирован для быстрой загрузки контента в реальном времени. Время получения файла зависит от количества узлов, хранящих его, и качества их соединения. Для популярных файлов скорость может быть высокой, но для редких — низкой.
Постоянство данных
IPFS не гарантирует, что файл будет храниться вечно. Если ни один узел не хранит файл, он становится недоступным. Для решения этой проблемы используется Filecoin, который стимулирует узлы хранить данные за вознаграждение.
Сложность для конечных пользователей
Работа с IPFS требует установки специального программного обеспечения (например, IPFS Desktop) или использования шлюзов (gateways), которые преобразуют CID в обычные HTTP-ссылки. Это создаёт барьер для массового внедрения.
Правовые аспекты
Поскольку IPFS децентрализован, он может использоваться для распространения незаконного контента (например, детской порнографии, пиратских материалов). В некоторых юрисдикциях это может привести к ответственности узлов, хранящих такой контент. В России распространение запрещённой информации через IPFS может быть квалифицировано как нарушение закона «Об информации, информационных технологиях и о защите информации».
Интересные факты
- Название «InterPlanetary File System» (Межпланетная файловая система) было выбрано в честь идеи создания сети, способной работать даже в условиях межпланетных задержек связи.
- В 2021 году IPFS был интегрирован в браузер Brave, что позволило пользователям обращаться к контенту по протоколу
ipfs://без установки дополнительного ПО. - В 2022 году Protocol Labs запустила проект «IPFS Accelerate» для улучшения производительности протокола.
Источники
- Benet, J. (2014). IPFS - Content Addressed, Versioned, P2P File System. Protocol Labs.
- Protocol Labs. (2015). IPFS: The InterPlanetary File System. White Paper.
- Filecoin. (2017). Filecoin: A Decentralized Storage Network. Protocol Labs.
- Официальная документация IPFS (docs.ipfs.io).
- Статья «IPFS» в англоязычной Википедии.
- Материалы конференции «Web3 Summit» (2020–2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →