Как устроена межпланетная файловая система
medium

Как устроена межпланетная файловая система

Это не шутка, такое уже работает

Мы уже рассказывали про файловые системы и зачем они нужны. Интуитивно там всё понятно: файлы — это куски данных на диске, которые хранятся в каком-то месте, им ведётся учёт в файловой системе, при необходимости вы с диска их берёте и используете. Это классика. Так устроены файлы и в наших компьютерах, и в интернете. 

Но есть и другой способ хранения информации в интернете: когда нет ни серверов, ни единого места хранения. Такая технология называется IPFS — про неё и поговорим.

Что такое iPFS 

IPFS — это сокращение от Interplanetary File System, межпланетная файловая система. Это официальное название, у программистов бывает такой юмор. 

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

Смысл IPFS в том, чтобы сделать сеть надёжной и отказоустойчивой. При обычном подходе, если сервер отключить от сети, его файлы сразу станут недоступны для всех. А в случае с IPFS отключение сервера ни на что не повлияет, если в сети будет хоть одна копия. Система просто возьмёт тот же файл с другого компьютера, а пользователь даже не узнает, что с сервером было что-то не так.

Если интересно и хотите изучить тему получше — вот официальная документация проекта с подробностями и примерами. 

Хеш и адреса

Когда в IPFS-сети появляется новый файл, система делает так:

  1. Считает хеш, или контрольную сумму файла, по специальному алгоритму — для каждого файла получается уникальная последовательность букв и цифр.
  2. Присваивает файлу эту последовательность — например, файл в IPFS-сети обычно имеет какое-то такое имя: QmQJXYB8LnxWBkx5XR2WRCJYKLZB2Xxy9LoPngw98eNk4r
  3. Рассылает информацию всем узлам сети о том, что у неё появился этот файл вот с таким хешем.
  4. Для доступа к файлу в браузере нужно ввести этот хеш и указать, что нужна IPFS-сеть: ipfs://QmQJXYB8LnxWBkx5XR2WRCJYKLZB2Xxy9LoPngw98eNk4r/

Если компьютер пользователя не умеет работать с IPFS, можно использовать публичный шлюз — он переведёт запрос по обычному HTTP-протоколу в IPFS-запрос. Например, запрос через шлюз может выглядеть так:

https://ipfs.sweb.ru/ipfs/QmQJXYB8LnxWBkx5XR2WRCJYKLZB2Xxy9LoPngw98eNk4r/

Как устроена межпланетная файловая система

Зачем это нужно

Такой подход позволяет решить сразу несколько проблем, и у него есть преимущество перед стандартным способом хранения данных.

Доступность и надёжность. Если в сети есть хотя бы одна копия файла — он будет доступен для всех. Чем больше обращений к файлу, тем больше копий будет в сети. Это значит, что даже если заблокировать основной сервер с данными, то всё будет доступно в копиях с точно таким же адресом. Получается, что для пользователя вообще нет разницы, где физически находится файл, если к нему есть доступ.

Стабильные ссылки. У каждого файла в IPFS есть своя уникальная ссылка. При этом, если содержимое файла изменится даже на один байт, система будет считать это новым файлом и даст ему новую ссылку. Это помогает следить за версиями файлов и быть уверенным в том, что файл не менялся со временем.

Равномерная нагрузка. Чем больше копий файла хранится на разных компьютерах, тем быстрее он загружается пользователю благодаря параллельной загрузке. При этом нагрузка на компьютеры тоже небольшая и может балансироваться при необходимости. Такой подход сильно затрудняет проведение DDoS-атак, потому что нет сервера, который нужно сломать, — нагрузка равномерно распределяется на всю сеть. 

Где можно попробовать

У компании SpaceWeb, где мы купили хостинг для нашего учебного сайта, появилась такая услуга — размещение файлов в IPFS. Можно подключить это в разделе хостинга, а потом просто закачивать туда файлы через браузер и получать в ответ IPFS-ссылки. Файлы будут храниться на хостинге, а как только кто-то обратится к ним первый раз, копия появится и там. Даже если SpaceWeb отключит эту опцию, файлы всё равно останутся в сети IPFS — вот так и работает децентрализация и Web 3.0.

SpaceWeb не платил нам за статью и не давал нам рекламные материалы. Мы пользуемся SpaceWeb, поэтому рассказываем про них. А вы спросите у своего хостера, реализовали они уже IPFS или нет.

Как устроена межпланетная файловая система
Раздел с подключением IPFS на хостинге

Минусы IPFS

При всех плюсах у IPFS есть и минусы — именно они тормозят развитие этой технологии и ограничивают её применение. 

  • Сеть плохо работает с динамическим контентом — тем, который генерирует сервер в ответ на действия пользователя. Сюда относятся, например, соцсети, видеохостинги с рекомендациями и интернет-магазины.
  • Сложные адреса — вместо привычных и понятных имён IPFS использует длинные цепочки букв и цифр, которые выглядят как бессмысленный набор символов. Есть решения на базе блокчейн-технологии, которые помогают привязать понятные адреса к IPFS-адресам, но пока это работает не везде, и там тоже есть свои сложности.
  • Не все браузеры сразу поддерживают доступ к сети IPFS — пока с ним умеют работать без плагинов только Brave и некоторые версии Opera.
  • Для установки IPFS на компьютере и работы с ней нужны хорошие технические знания — с этой сетью работать сложнее, чем с привычным хостингом.

Что дальше

В следующий раз займёмся практикой — установим IPFS-клиент на свой компьютер и опубликуем там сайт. Он будет простой и статичный, но даже так мы сможем проверить, как это всё выглядит в жизни и насколько удобно этим пользоваться.

Корректор:

Ира Михеева

Художник:

Алексей Сухов

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
medium