Dat — что это за протокол, и кто его использует

Говорим о принципах работы этого P2P-протокола и проектах, построенных на его основе.

g9-hv-idkzfmxj7hufgwfk4e5hq.jpeg
/ Unsplash / Alina Grubnyak

Что такое Dat


Dat (Decentralized Archive Transport) — это открытый протокол для обмена данными и сообщениями в рамках распределенной сети (peer-to-peer). Он имеет встроенные функции контроля версий и позволяет следить за изменениями в сводах данных. Разработчиком Dat выступил инженер Макс Огден (Max Ogden). Он представил протокол в 2013 году в рамках проекта Code for America.

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

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

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


Для загрузки файла в сети Dat необходимо указать его URL. Вот пример:

dat://778f8d955175c92e4ced5e4f5563f69bfec0c86cc6f670352c457943666fe639/dat_intro.gif


Чтобы узнать адресную ссылку, Dat-клиенты используют multicast DNS. Пиры транслируют свой запрос в локальную сеть в надежде, что кто-нибудь из участников «услышит» и поделится информацией. Также клиенты могут обращаться к серверу в интернете. Основной сервер расположился по адресу discovery1.datprotocol.com. Если он недоступен, то можно обратиться к его зеркалу — discovery2.datprotocol.com.

О других протоколах и стандартах в нашем блоге на Хабре:


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

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

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

Кто использует


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

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

Один из свежих примеров — 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 не единственный P2P-протокол, который последнее время активно разрабатывается. В качестве альтернативы можно назвать проект IPFS (InterPlanetary File System). Это — одноранговая распределенная файловая система. Отличие от других децентрализованных сетей в том, что она работает с блоками. Они могут содержать как часть файла, так и ссылки на другие блоки. Из этих блоков формируется обобщенный древовидный направленный граф, формирующий каталог или файл. IPFS работает с распределенными хеш-таблицами и поддерживает децентрализованный обмен блоками. IPFS не имеет точек отказа, а узлы не обязаны доверять друг другу. Доступ к файловой системе можно получить с помощью FUSE или HTTP.

Решение уже использует хостинг Neocities и маркетплейс OpenBazaar. Разработчики протоколов, подобных IPFS и Dat, надеются, что их проекты дадут интернет-пользователям больше контроля над своими данными.

О чем мы пишем в корпоративном блоге VAS Experts:

© Habrahabr.ru