- PVSM.RU - https://www.pvsm.ru -
Говорим о принципах работы этого P2P-протокола и проектах, построенных на его основе.
[1]
/ Unsplash / Alina Grubnyak [2]
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.
Решение уже использует 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
Нажмите здесь для печати.