IPFS
IPFS (InterPlanetary File System, Межпланетная файловая система) — это децентрализованный протокол и одноранговая сеть для хранения и обмена данными, которая адресует файлы по их содержимому, а не по местоположению (URL). Разработанная как альтернатива традиционному протоколу HTTP, IPFS стремится создать устойчивую, распределённую и версионируемую сеть, где каждый узел (peer) может хранить и предоставлять контент, а пользователи получают доступ к файлам по их криптографическому хешу.
История
Протокол IPFS был впервые предложен Хуаном Бенетом (Juan Benet) в 2014 году. Бенет, основатель компании Protocol Labs, представил проект как попытку решить фундаментальные проблемы современного веба: централизацию, зависимость от серверов и уязвимость к цензуре. В 2015 году вышла первая версия спецификации, а в 2016 году — стабильный релиз.
В 2017 году Protocol Labs запустила проект Filecoin, который использует IPFS в качестве основы для создания децентрализованного рынка хранения данных, где пользователи платят за выделенное дисковое пространство. Filecoin привлёк значительные инвестиции (около 257 млн долларов США в ходе ICO) и стал одним из крупнейших проектов в сфере децентрализованных технологий.
К 2020 году IPFS был принят рядом крупных организаций, включая Cloudflare (через сервис IPFS Gateway), Opera (встроенная поддержка в браузере) и Wikipedia (частичное зеркало). В 2022 году было объявлено о создании IPFS Foundation — некоммерческой организации, управляющей развитием протокола.
Архитектура и принципы работы
Content-addressing (адресация по содержимому)
В отличие от HTTP, где файл идентифицируется URL (например, https://example.com/image.jpg`), в IPFS каждый файл имеет уникальный идентификатор — Content Identifier (CID). CID представляет собой криптографический хеш (SHA-256 или другой алгоритм) содержимого файла. Если файл изменяется, его CID меняется. Это гарантирует, что пользователь получит именно тот контент, который запрашивал, без возможности подмены.
DHT (Distributed Hash Table)
IPFS использует распределённую хеш-таблицу (DHT) для поиска узлов, хранящих определённый CID. DHT — это децентрализованная база данных, где каждый узел хранит часть информации о том, какие узлы содержат какие файлы. Поиск файла происходит за O(log n) шагов, где n — количество узлов в сети.
Merkle DAG (Directed Acyclic Graph)
Файлы в IPFS представляются в виде направленного ациклического графа (Merkle DAG). Каждый блок данных (chunk) имеет свой хеш, а структура файла (например, для больших файлов, состоящих из нескольких блоков) описывается через ссылки между хешами. Это позволяет:
- Эффективно дедуплицировать данные (одинаковые блоки хранятся один раз).
- Поддерживать версионирование (каждая версия файла — новый корневой хеш).
- Проверять целостность данных (любое изменение в блоке меняет его хеш и все вышестоящие хеши).
IPNS (InterPlanetary Name System)
Поскольку CID меняется при изменении файла, для постоянных ссылок используется IPNS. IPNS позволяет привязать к изменяемому CID публичный ключ пользователя. Таким образом, можно публиковать обновляемый контент под неизменным идентификатором (например, /ipns/example.com).
Bitswap
Протокол обмена данными между узлами. Bitswap определяет, как узлы запрашивают и передают блоки данных. Узлы могут кэшировать запрошенные файлы, что повышает скорость доступа для других пользователей.
Классификация и виды
IPFS Node (узел)
Программное обеспечение, которое запускает протокол IPFS. Узлы могут быть:
- Полные узлы — хранят все данные, к которым обращались, и участвуют в маршрутизации DHT.
- Лёгкие узлы — не хранят данные, а только запрашивают их у полных узлов (например, в браузере через IPFS Companion).
IPFS Gateway (шлюз)
Сервер, который позволяет пользователям получать доступ к IPFS через обычный HTTP. Например, https://ipfs.io/ipfs/<CID>https://cloudflare-ipfs.com/ipfs/<CID>. Шлюзы кэшируют популярные файлы, но не являются обязательными для работы протокола. или
IPFS Cluster
Инструмент для координации нескольких узлов IPFS, обеспечивающий репликацию данных и управление доступом. Используется для создания надёжных хранилищ, например, для архивирования сайтов.
Применение
Децентрализованное хранение данных
IPFS используется для хранения файлов, которые не должны зависеть от одного сервера. Примеры: научные публикации, архивы исторических документов, контент, подверженный цензуре.
Размещение веб-сайтов
Сайты, размещённые в IPFS, не могут быть заблокированы на уровне DNS или хостинга. Для этого используется IPNS или сервисы вроде Fleek, которые автоматически публикуют обновления в IPFS.
Системы управления версиями
IPFS может служить децентрализованной альтернативой Git, особенно для больших бинарных файлов. Например, проект OpenBazaar использует IPFS для хранения данных о товарах.
Интеграция с блокчейнами
IPFS часто используется в связке с блокчейнами (например, Ethereum) для хранения больших объёмов данных (изображений, документов) вне цепочки, оставляя в блокчейне только хеш CID. Это снижает затраты на хранение и повышает масштабируемость.
Научные исследования
Проекты, такие как arXiv и Sci-Hub, используют IPFS для распространения научных статей, обеспечивая их доступность даже при блокировке основных сайтов.
Преимущества и недостатки
Преимущества
- Устойчивость к цензуре: контент не привязан к конкретному серверу, его невозможно удалить без удаления со всех узлов.
- Эффективность: дедупликация данных и кэширование на узлах снижают нагрузку на сеть.
- Целостность: проверка данных по хешу гарантирует, что файл не был изменён.
- Децентрализация: отсутствие единой точки отказа.
Недостатки
- Скорость: первый доступ к файлу может быть медленным, если он не кэширован на близлежащих узлах.
- Непостоянство: если файл не реплицирован на достаточное количество узлов, он может стать недоступным при отключении всех хранителей.
- Сложность: для обычного пользователя протокол менее интуитивен, чем HTTP.
- Зависимость от шлюзов: многие пользователи обращаются к IPFS через централизованные шлюзы, что снижает децентрализацию.
Критика
Основные критические замечания в адрес IPFS связаны с его эффективностью и масштабируемостью. В 2022 году исследователи отметили, что для популярного контента IPFS работает медленнее, чем централизованные CDN, из-за необходимости поиска узлов. Кроме того, протокол не обеспечивает конфиденциальности данных: любой узел может видеть, какие файлы запрашиваются, если не используются дополнительные средства шифрования.
Также высказывались опасения, что IPFS может использоваться для распространения нелегального контента, поскольку модерация в децентрализованной сети затруднена. В ответ на это Protocol Labs разработала инструменты для фильтрации контента на уровне шлюзов и узлов, но полной децентрализации это не отменяет.
Интересные факты
- Название «InterPlanetary» отсылает к идее, что протокол должен работать даже в условиях межпланетных задержек (например, при колонизации Марса).
- IPFS используется в проекте Wikipedia Offline для распространения статей в регионах с ограниченным доступом в интернет.
- В 2021 году правительство Турции временно блокировало доступ к IPFS-шлюзам, опасаясь распространения запрещённого контента.
Источники
- Juan Benet. «IPFS - Content Addressed, Versioned, P2P File System» (2014).
- Protocol Labs. «IPFS Documentation» (2023).
- «IPFS: A New Hypermedia Distribution Protocol» — статья в журнале «IEEE Internet Computing» (2020).
- Отчёт «Decentralized Storage: IPFS and Filecoin» — исследование компании Messari (2022).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →