Состоялся релиз IPFS 0.9 (InterPlanetary File System), которая образует глобальное версионированное хранилище файлов в виде p2p сети (объединение концепций Git и BitTorrent). Отличительная черта IPFS – адреса выдаются согласно содержимому (криптографический хэш), а не месту и имени. Соответственно, адрес нельзя просто изменить, это возможно, только если поменяется содержимое файла, однако прошлое содержимое все также будет доступно по старому адресу. Также в IPFS существуют сервисы привязки постоянных адресов, учитывающих изменения в файлах (IPNS), а также псевдонимы.
Как и в bittorrent все данные хранятся у участников сети. Обмен информацией происходит через p2p без каких-либо централизованных узлов. Когда нужно получить определенный файл, система находит всех участников (используется распределённая хэш таблица – DHT), у кого он имеется, и отдает частями в несколько потоков. По окончанию загрузки получатель становится раздающим.
Цели IPFS – создать распределенное хранилище информации, чтобы повысить надежность её хранения. Даже если одна нода будет выведена из строя, файлы можно будет загружать с других. Также это помогает противостоять цензуре и прочим блокировкам контента (чтобы полностью заблокировать файл, придётся сделать это на всех нодах). Кроме хранения файлов и обмена данными IPFS может использоваться как основа для создания новых сервисов, например, для организации работы сайтов, не привязанных к серверам, или для создания распределённых приложений.
Код эталонной реализации написан на языке Go и распространяется под лицензиями Apache 2.0 и MIT.
Что нового в версии 0.9:
-
Добавлен экспериментальный клиент DHT для поиска данных с использованием распределённой хэш-таблицы, который отличается от решения на базе IPNS более высокой производительностью.
-
Обновлён web-интерфейс (WebUI), в котором появилась экспериментальная поддержка закрепления внешних сервисов (аналог команды
ipfs pin remote service
). Изменено оформление экранов для работы с файлами и пирами. -
В консольном интерфейсе предоставлена возможность экспорта ключей командой
ipfs key export
без остановки фонового процессаipfs
. -
В шлюзах реализована возможность загрузки произвольных графов IPLD (InterPlanetary Linked Data, пространство имён для адресации ресурсов на основе хэшей) через обработчик
/api/v0/dag/export
, выполняющий функцию, аналогичную командеipfs dag export
. Экспорт осуществляется в формате архива DAG. Полученный IPLD даёт пользователю возможность удостовериться, что загруженные с публичного шлюза данные соответствуют запрошенному символьному имени (например, получив файлhttps://somegateway.example.net/ipfs/bafyexample
можно проверить его соответствие с хэшем содержимого, изначально связанным с символьным именем). -
Предоставлена возможность определения собственного DNS-резолвера, использующего протокол «DNS over HTTPS», который будет применяться вместо резолвера из настроек операционной системы. В том числе можно переопределять резолвер для отдельных доменов первого уровня. В DNSLink, механизме для привязки обычных DNS-имён к адресам IPFS, выборочная замена резолвера может применяться для создания доменный имён, не связанных с ICANN, например, можно подключить резолвер
https://eth.link/dns-query
для обработки доменов первого уровня.eth
, которые официально не утверждены в ICANN. -
Компоненты для миграции на новые версии
go-ipfs
разделены на отдельные пакеты для ускорения загрузки и упрощения организации обновлений в конфигурациях с собственными плагинами. Автоматизирован процесс загрузки обновлений через IPFS и добавлены настройки для упрощения применения обновлений в условиях отсутствия сетевого соединения или блокировки межсетевым экраном.
>>> Подробности