Работа В Ipfs С Человеческим Лицом

Мало кто слышал об IPFS, и еще меньше дошли до ее детального изучения.

И вполне единицы глубже погрузился в проект.

Работа в IPFS с человеческим лицом

Короче говоря, IPFS — это химера, созданная на основе технологий, лежащих в основе git и bittorrent, с одной особенностью — адресацией объектов по содержимому ( КАС ).

Любой объект, файл или пользовательские данные хешируются, и полученный хеш становится адресом этого файла в системе IPFS. Далее этот контент может быть запрошен другими узлами сети, и он распространится по планете, а в идеале никогда больше не исчезнет, будучи доступен по хешу.

Это свойство также подразумевает неизменность объектов в системе, поскольку любое изменение содержимого создает новый хеш-адрес в сети.

Типичная ссылка на объект: http://ipfs.io/ipfs/QmPQGujZ4K1xPNNcCjBWMoSuYrcJae43dukJP51mbfftDK Но у этого подхода есть недостаток: человек не запоминает хеши.

Обычному человеку привычнее иметь иерархическую файловую систему или облако тегов с возможностями фильтрации.



Файловая система

Для этого разработчики ipfs предусмотрели возможность сохранения графа объектов сети, который будет похож на файлы и каталоги; файлы и каталоги будут иметь человеческое имя и знакомый путь к файлу.

Возможность хорошая, она породила следующую возможность - хостинг статических сайтов прямо в сети ipfs, вот так https://ipfs.io/ipns/i.ocsf.in/ .

При всем при этом из документации ipfs понятно, что максимум, что пользователь может сделать с этой виртуальной файловой системой, — это смонтировать содержимое объектной базы данных при запуске локального демона.

Возможно, этого достаточно для некоторых задач.

Но для более-менее полноценной работы с ФС нужно больше возможностей.

Конечно, для полной виртуализации файловой системы нам потребуется разработать собственный драйвер для фьюза или для докаНЫ в Windows, это увлекательный процесс, но сначала мы можем сделать что-то попроще, чтобы оценить возможности сети и API файловой системы IPFS. И какой механизм может работать примерно во всех экосистемах? Веб-протокол.

Например, ВебДАВ.

В Windows есть встроенный клиент, в Linux он есть в основных графических файловых менеджерах и в консоли через кадавер.

Мы построим зиккурат. На голанге.

А потом, возможно, на node.js.

Выполнение

Служба webdav с базовым функционалом и возможностью создания собственной реализации файловой системы доступна «из коробки» в golang. Интерфейс практически идентичен интерфейсу файловой системы в стандартной комплектации ОС.

Но возникает проблема.

Неизменяемость объектов IPFS означает, что любое изменение файловой системы провоцирует полную перестройку всей иерархии объектов каталога.

Вместе с корневым.

К сожалению, для этого потребуется хранить хеш корневого каталога во внешнем по отношению к IPFS хранилище.

И на данный момент это единственный параметр конфигурации нашей виртуальной файловой системы.

WebDAV также поддерживает систему блокировки файлов.

Он используется для разделения доступа к ФС среди многих пользователей.

Проблема доступа к постоянно меняющемуся корневому каталогу, который меняется при каждом изменении файловой системы, остается нерешенной.

WebDAV-промежуточное программное обеспечение реализовано в виде демона, который работает рядом с демоном go-ipfs и взаимодействует с IPFS через http-api, что накладывает ограничения на производительность.

Поэтому в дальнейшем имеет смысл работать с сетью ipfs напрямую, скомпилировав свои модули в демон go-ipfs. Кроме того, в объектной структуре виртуальной файловой системы, встроенной в IPFS, отсутствует возможность хранения пользовательских атрибутов файлов и каталогов.

Всегда можно придумать костыль, но это не выход для продуктов, которые будут хоть немного круче этого исследовательского проекта.



выводы

В процессе разработки были выявлены некоторые недостатки поддержки WebDAV в некоторых операционных системах, например, такой .

Также сам WebDAV работает не очень быстро при работе с большим количеством мелких файлов.

Но в сети IPFS есть проблемы с большими файлами; загрузка их в систему занимает сравнительно много времени.

Для более широкого использования системы IPFS вместе с WebDAV необходимы другие драйверы для доступа к файловой системе внутри IPFS. Более того, в последних версиях API добавлены функции изменяемой файловой системы, которые пока не документированы, но могут обеспечить необходимую производительность и простоту использования.



Ссылки

Теги: #Go #IPFS #WebDAV #P2P #Ненормальное программирование #Go #IPFS
Вместе с данным постом часто просматривают: