Значительное обновление глобальной децентрализованной файловой системы IPFS 0.5
Представлен новый выпуск децентрализованной файловой системы IPFS 0.5 (InterPlanetary File System), образующей глобальное версионированное хранилище файлов, развёрнутое в форме P2P-сети, образованной из систем участников. IPFS комбинирует идеи, ранее реализованные в таких системах, как Git, BitTorrent, Kademlia, SFS и Web, и напоминает единый «рой» BitTorrent (пиры, участвующие в раздаче), обменивающийся Git-объектами. Для доступа к глобальной ФС IPFS может использоваться протокол HTTP или монтироваться виртуальная ФС /ipfs при помощи модуля FUSE. Код эталонной реализации написан на языке Go и распространяется под лицензиями Apache 2.0 и MIT. Дополнительно развивается реализация протокола IPFS на JavaScript, которая может работать в браузере.
Ключевой особенностью IPFS является адресация по содержимому, при которой ссылка для доступа к файлу непосредственно связана с его содержимым (включает криптографичкский хэш содержимого). IPFS имеет встроенную поддержку версионирования. Адрес файла невозможно произвольно переименовать, он может измениться только после изменения содержимого. Аналогично невозможно внести изменение в файл без изменения адреса (старый вариант останется на прежнем адресе, а новый будет доступен через другой адрес, так как хэш от содержимого файла изменится). Учитывая то, что идентификатор файла меняется при каждом изменении, чтобы каждый раз не передавать новые ссылки предоставляются сервисы для привязки постоянных адресов, учитывающих разные версии файла (IPNS), или закрепления имени по аналогии с традиционными ФС и DNS (MFS (Mutable File System и DNSLink).
По аналогии с BitTorrent данные непосредственно хранятся на системах участников, которые обмениваются информацией в режиме P2P, без привязки к централизованным узлам. При необходимости получить файл с определённым содержимым система находит участников, у которых имеется данный файл и отдаёт его с их систем частями в несколько потоков. После загрузки файла на свою систему участник автоматически становится одной из точек по его раздаче. Для определения участников сети на узлах которых присутствует интересующий контент используется распределённая хэш таблица (DHT).
По сути IPFS можно рассматривать как распределённую реинкарнацию Web с адресацией по содержимому, а не месту размещения и произвольным именам. Кроме хранения файлов и обмена данными IPFS может использоваться как основа для создания новых сервисов, например, для организации работы сайтов, не привязанных к серверам, или для создания распределённых приложений.
IPFS помогает решить такие задачи как надёжность хранения (если исходное хранилище будет выведено из строя, файл можно загрузить с систем других пользователей), противостояние цензурированию контента (для блокировки потребуется заблокировать все системы пользователей, на которых имеется копия данных) и организация доступа при отсутствии прямого доступа к интернету или плохом качестве канала связи (можно загрузить данных через ближайших участников).
В версии IPFS 0.5 существенно повышена производительности и надёжность работы. Общедоступная сеть на базе IPFS преодолела отметку в 100 тысяч узлов и изменения в IPFS 0.5 отражают адаптацию протокола для работы в подобных условиях. Оптимизации в основном были сосредоточены на улучшении механизмов маршрутизации контента, отвечающих за поиск, анонсирование и извлечение данных, а также повышении эффективности реализации распределённой хэш таблицы (DHT), предоставляющей информацию об узлах, имеющих искомые данные. Связанный с DHT код был практически полностью переписан, что значительно ускорило операции поиска контента и определения записей IPNS.
В частности, скорость выполнения операций добавления данных увеличилась в 2 раза, анонсирования в сеть нового контента в 2.5 раз, извлечения данных от 2 до 5 раз, а поиска контента от 2 до 6 раз. Переработанные механизмы маршрутизации и отправки анонсов позволили ускорить работу сети в 2–3 раза за счёт более эффективного использования пропускной способности и фоновой передачи трафика. В следующем выпуске намечено внедрение транспорта на базе протокола QUIC, что позволит добиться ещё большего прироста производительности за счёт сокращения задержек.
Ускорена работа и повышена надёжность системы IPNS (Inter-Planetary Name System), применяемой для создания постоянных ссылок на меняющийся контент. Новый экспериментальный транспорт pubsub дал возможность ускорить доставку записей IPNS в 30–40 раз при тестировании в сети с тысячей узлов (для экспериментов разработан специальный симулятор P2P-сети). Примерно в два раза увеличена производительность прослойки Badger, применяемой для взаимодействия с ФС операционной системы. Благодаря поддержке операций асинхронной записи Badger теперь работает в 25 раз быстрее старой прослойки flatfs. Повышение производительности также затронуло механизм Bitswap, применяемый для передачи файлов между узлами.
Из функциональных улучшений упоминается задействование TLS для шифрования соединений между клиентами и серверами. Поддержка поддоменов в HTTP-шлюзе — разработчики могут размещать децентрализованные приложения (dapps) и web-контент в изолированных поддоменах, которые можно использовать с хэш-адресами, IPNS, DNSLink, ENS и т.п. Добавлено новое пространство имён /p2p, в которое вынесены данные, связанные с адресами пиров (/ipfs/peer_id → /p2p/peer_id). Добавлена поддержка ссылок ».eth» на базе блокчейна, что расширение применение IPFS в распределённых приложениях.
Поддерживающий разработку IPFS стартап Protocol Labs также параллельно развивает проект FileCoin, который является надстройкой над IPFS. Если IPFS позволяет участникам сохранять, запрашивать и передавать данные между собой, то Filecoin развивается как основанная на технологиях блокчейна платформа для постоянного хранения. Filecoin даёт возможность пользователям, у которых имеется неиспользуемое дисковое пространство, за определённое вознаграждение предоставить его сети, а пользователям которым нужно место для хранения купить его. Если необходимость в месте исчезло, пользователь может продать его. Таким образом формируется рынок места в хранилище, расчёты в котором производятся в токенах Filecoin, образуемых при помощи майнинга.
Источник: http://www.opennet.ru/opennews/art.shtml? num=52834
© OpenNet