30.09.2020

Выпуск глобальной децентрализованной файловой системы IPFS 0.6


Опубликован выпуск децентрализованной файловой системы IPFS 0.6 (InterPlanetary File System), образующей глобальное версионированное хранилище файлов, развёрнутое в форме P2P-сети, образованной из систем участников. IPFS комбинирует идеи, ранее реализованные в таких системах, как Git, BitTorrent, Kademlia, SFS и Web, и напоминает единый «рой» BitTorrent (пиры, участвующие в раздаче), обменивающийся Git-объектами. IPFS отличается адресацией по содержимому, а не месту размещения и произвольным именам. Код эталонной реализации написан на языке Go и распространяется под лицензиями Apache 2.0 и MIT.

Новая версия примечательна включением по умолчанию транспорта на базе протокола QUIC, который представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL. В IPFS сокет для приёма UDP-соединений автоматически запускается на том же адресе и сетевом порте, что и обработчик транспорта на базе TCP. QUIC применяется как для входящих, так и для исходящих соединений, при этом при подключении к новым узлам в случае недоступности QUIC осуществляется откат на использование TCP.

Вторым важным новшеством стала поддержка защищённого транспорта NOISE, основанного на протоколе Noise и развиваемого в рамках libp2p, модульного сетевого стека для P2P-приложений. После начального согласования соединения весь последующий обмен данными между участниками шифруется и защищается от подслушивания. NOISE пришёл на смену транспорту SECIO, но в качестве приоритетного метода шифрования соединений между узлами пока продолжает применяться TLS 1.3. NOISE достаточно прост в реализации и позиционируется как универсальный кросс-платформенный транспорт, который может быть реализован на различных языках программирования.

В новом выпуске также предоставлена возможность добавления собственных страниц «404 Not Found» и добавлена опциональная поддержка метода кодирования Base36, который оптимален для буквенно-цифровых данных без различий в регистре символов, таких как имена доменов (при использовании Base32 ключи Ed25519 IPNS на два байта превышают лимит на размер поддомена, а при Base36 вмещаются в лимит). Кроме того, в настройки добавлена опция «peering«, которая определяет список узлов для подключения, поддержания соединения и переподключения с целью определения «липких» связей между часто используемыми пирами.

Напомним, что в IPFS ссылка для доступа к файлу непосредственно связана с его содержимым и включает криптографический хэш содержимого. Адрес файла невозможно произвольно переименовать, он может измениться только после изменения содержимого. Аналогично невозможно внести изменение в файл без изменения адреса (старый вариант останется на прежнем адресе, а новый будет доступен через другой адрес, так как хэш от содержимого файла изменится). Учитывая то, что идентификатор файла меняется при каждом изменении, чтобы каждый раз не передавать новые ссылки предоставляются сервисы для привязки постоянных адресов, учитывающих разные версии файла (IPNS), или закрепления псевдонима по аналогии с традиционными ФС и DNS (MFS (Mutable File System) и DNSLink).

По аналогии с BitTorrent данные непосредственно хранятся на системах участников, которые обмениваются информацией в режиме P2P, без привязки к централизованным узлам. При необходимости получить файл с определённым содержимым система находит участников, у которых имеется данный файл и отдаёт его с их систем частями в несколько потоков. После загрузки файла на свою систему участник автоматически становится одной из точек по его раздаче. Для определения участников сети на узлах которых присутствует интересующий контент используется распределённая хэш таблица (DHT). Для доступа к глобальной ФС IPFS может использоваться протокол HTTP или монтироваться виртуальная ФС /ipfs при помощи модуля FUSE.

IPFS помогает решить такие задачи как надёжность хранения (если исходное хранилище будет выведено из строя, файл можно загрузить с систем других пользователей), противостояние цензурированию контента (для блокировки потребуется заблокировать все системы пользователей, на которых имеется копия данных) и организация доступа при отсутствии прямого соединения к интернету или при плохом качестве канала связи (можно загрузить данных через ближайших участников в локальной сети). Кроме хранения файлов и обмена данными IPFS может использоваться как основа для создания новых сервисов, например, для организации работы сайтов, не привязанных к серверам, или для создания распределённых приложений.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53212

Добавить комментарий