- PVSM.RU - https://www.pvsm.ru -

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

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

Dat — что это за протокол, и кто его использует - 1 [1]
/ Unsplash / Alina Grubnyak [2]

Что такое Dat

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

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

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

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

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

dat://778f8d955175c92e4ced5e4f5563f69bfec0c86cc6f670352c457943666fe639/dat_intro.gif

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

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

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

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

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

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

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

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

Один из свежих примеров — P2P-браузер Beaker [18], который разработан в партнерстве с командой, развивающей Dat. Его цель — дать пользователям возможность размещать веб-сайты «прямо в браузере». Авторы Beaker запустили облачный сервис Hashbase, поддерживающий постоянный доступ к Dat-сайтам, чьи локальные копии недоступны.

Проект полностью открыт, и его исходники можно найти на GitHub [19]. Если вы хотите оценить возможности браузера самостоятельно, то для его запуска на 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

Больше примеров приложений можно найти на сайте [20] проекта.

Аналог

Разумеется, Dat не единственный P2P-протокол, который последнее время активно разрабатывается. В качестве альтернативы можно назвать проект IPFS (InterPlanetary File System). Это — одноранговая распределенная файловая система. Отличие от других децентрализованных сетей в том, что она работает с блоками. Они могут содержать как часть файла, так и ссылки на другие блоки. Из этих блоков формируется обобщенный древовидный направленный граф, формирующий каталог или файл. IPFS работает с распределенными хеш-таблицами и поддерживает децентрализованный обмен блоками. IPFS не имеет точек отказа, а узлы не обязаны [21] доверять друг другу. Доступ к файловой системе можно получить с помощью FUSE [22] или HTTP.

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

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

Автор: VAS Experts

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/protokoly/325912

Ссылки в тексте:

[1] Image: https://habr.com/ru/company/vasexperts/blog/462359/

[2] Alina Grubnyak: https://unsplash.com/photos/ZiQkhI7417A

[3] представил: https://blog.datproject.org/2017/09/15/dat-funding-history/

[4] Code for America: https://en.wikipedia.org/wiki/Code_for_America

[5] на GitHub: https://github.com/datproject/dat

[6] Dat Foundation: https://dat.foundation/

[7] Code for Science & Society: https://codeforscience.org/

[8] multicast DNS: https://en.wikipedia.org/wiki/Multicast_DNS

[9] «Любит и не любит»: DNS over HTTPS: https://habr.com/ru/company/vasexperts/blog/461431/

[10] Новый стандарт на базе PCIe 5.0 «свяжет» CPU и GPU — что о нем известно: https://habr.com/ru/company/vasexperts/blog/443984/

[11] Пост-анализ: что известно о последней атаке на сеть серверов криптоключей SKS Keyserver: https://habr.com/ru/company/vasexperts/blog/461443/

[12] XSalsa20: https://ru.wikipedia.org/wiki/Salsa20

[13] Hyperdrive: https://github.com/datproject/planning#protocol-performance-and-features

[14] Hyperswarm: https://pfrazee.hashbase.io/blog/hyperswarm

[15] ScienceFair: https://github.com/codeforscience/sciencefair

[16] Lens: https://github.com/elifesciences/lens

[17] JATS XML: https://en.wikipedia.org/wiki/Journal_Article_Tag_Suite

[18] Beaker: https://beakerbrowser.com/

[19] можно найти на GitHub: https://github.com/beakerbrowser/beaker

[20] можно найти на сайте: https://awesome.datproject.org/

[21] не обязаны: https://ipfs.io/#how

[22] FUSE: https://ru.wikipedia.org/wiki/Filesystem_in_Userspace

[23] хостинг: https://www.reg.ru/?rlink=reflink-717

[24] Neocities: https://blog.neocities.org/blog/2015/09/08/its-time-for-the-distributed-web.html

[25] OpenBazaar: https://ru.wikipedia.org/wiki/OpenBazaar

[26] Интернет в деревню — строим радиорелейную Wi-Fi-сеть: https://vasexperts.ru/blog/telekom/internet-v-derevnyu-stroim-radiorelejnuyu-wi-fi-set/

[27] Внедрение IPv6 — FAQ для интернет-провайдеров: https://vasexperts.ru/blog/seti/vnedrenie-ipv6-faq-dlya-internet-provajderov/

[28] Как раздавать бесплатный Wi-Fi согласно законодательству: https://vasexperts.ru/blog/skat-dpi/predostavlenie-besplatnogo-wi-fi-soglasno-zakonodatelstvu/

[29] Источник: https://habr.com/ru/post/462359/?utm_source=habrahabr&utm_medium=rss&utm_campaign=462359