P2P-протокол Dat – как работает и кем используется

15.01.2020 | Владимир Хазов

Несмотря на то, что в повседневной жизни и работе мы чаще всего используем протокол http, для решения определенных задач можно использовать другие варианты. Так, например, существуют проекты, которые используют P2P-протокол Dat, о нем сегодня расскажем.

Dat протокол

История и развитие протокола Dat

В 2013 году инженер Макс Огден (Max Ogden) представил новый открыт протокол для передачи данных и сообщений в распределенных сетях (p2p), такие пиринговые сети стали популярны среди пользователей интернета благодаря возможности быстрого обмена файлами, но они также используются для вычислений, платежей и других распределенных сервисов. Особенностью протокола Dat стала функция версионности, позволяющая отслеживать изменения в данных. Протокол создавался для сервисов муниципалитетов, позволяющих обмениваться данными о гражданах в рамках сетей государственных учреждений, но вскоре целью проекта стал обмен научной информации.

Проект стал стремительно развиваться и продвижением протокола, а также приложений, которые его используют, занялась некоммерческая организация Dat Foundation. Сообщество Dat на GitHub собрало более 7 тысяч «звезд», в поддержку проекта выступили Mozilla, разработчик P2P-сетей Wireline, а также открытый фонд Code for Science & Society.

Как работает Dat

Чтобы загрузить файл внутри сети Dat, необходимо знать его URL в таком формате:

dat://778f8sgdsdgwe43878ced5e4f5563f69bfec0c86cc6f670352c457943666fe639/dat_simple.jpg

Для того, чтобы получать подобного рода ссылки, клиенты dat-сетей используют multicast DNS, которые позволяют в небольших сетях определять IP-адреса хостов без помощи централизованных DNS-серверов. Запрос от пиров транслируется в сеть в поиске других участников, способных поделиться информацией. Либо пользователи могут обращаться к серверам discovery1.datprotocol.com или discovery2.datprotocol.com в сети интернет.

После того как пир получает IP-адрес и номер порта другого пира между ними устанавливается TCP-сессия, все передаваемые данные в рамках которой шифруются системой поточного шифрования XSalsa20. Алгоритмы работы данной системы напоминают AES, в них используются хеш-функции с двадцатью циклами.

Каждый передаваемый объект в dat-сети разбивается на отдельные фрагменты (chunks), причем их размеры могут быть различны. В созданные Dat-файлы можно добавлять новые фрагменты, но изменять или удалять существующие система не позволит. Такой принцип позволяет вести протокол изменения документов, а также работать в условиях с низким качеством связи.

принцип работы Dat

В будущем протокол получит новую файловую систему (Hyperdrive) и алгоритм поиска пиров (Hyperswarm). Данные улучшения позволят работать с большими объёмами данных и обрабатывать миллионы файлов.

Потребители Dot

Протокол все еще не нашел массового потребителя, но его используют некоторые довольно успешные проекты. Например, приложение для поиска и просмотра научной литературы ScienceFair. Платформа позволяет ученым и исследователям работать с журналами, выдержками из них, а также отдельными заметками. Данные хранятся в формате JATS XML, а для их отображения в ScienceFair используется ридер Lens.

Именно задачу обмена научной информацией изначально должен был решать данный протокол, но энтузиасты и участники сообщества стали применять его для создания сайтов, чатов и других приложений. Так P2P-браузер Beaker создан при поддержке команды Dat. Он позволяет пользователям размещать сайты «непосредственно в браузере». Разработчики Beaker создали облачный сервис Hashbase, с помощью которого реализуется постоянный доступ к dat-сайтам, даже если их локальная версия стала недоступна. Проект открытый и его исходники можно скачать с GitHub, для запуска в Linux потребуется установить пакеты libtool, m4 и autoconf:

sudo apt-get install libtool m4 make g++ autoconf # debian/ubuntu
sudo dnf install libtool m4 make gcc-c++ libXScrnSaver # fedora

И осуществить запуск:

git clone https://github.com/beakerbrowser/beaker.git
cd beaker
npm install
npm run rebuild # see https://github.com/electron/electron/issues/5851
npm start

Другие проекты с использованием dat-протокола можно найти на сайте https://awesome.datproject.org/.

Альтернатива

Разработка P2P-протоколов ведется и другими командами, и в качестве альтернативы можно привести в пример IPFS (InterPlanetary File System). Это блочная одноранговая распределённая файловая система, ее особенность в том, что блоки могут содержать не только часть передаваемого файла, но и ссылки на другие блоки. Такой механизм формирует обобщенный древовидный направленный граф, из которого создается каталог или файл. Распределённые хеш-таблицы и поддержка децентрализованного обмена блоками позволяет системе не иметь точек отказа. Доступ к файловой системе пользователи получают с помощью FUSE или HTTP. Это не пилотный проект, его уже используют хостинг-сервис Neocities и маркетплейс OpenBazaar.

Авторы распределенных протоколов, таких как IPFS и Dat, стремятся своими проектами дать пользователям больше контроля над своими данными, уменьшить вероятность сбоя и зависимости от сторонних сервисов.

Поделиться в социальных сетях