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

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


    / 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-файл, но не разрешает модифицировать или удалять существующие. По словам разработчиков, такой подход позволяет сохранить всю историю изменения документов. Система получает возможность свободно функционировать в условиях с нестабильным подключением.


    / Unsplash / Sven Brandsma

    Сейчас члены 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:

    • +21
    • 6,8k
    • 1
    VAS Experts
    142,39
    Разработчик платформы глубокого анализа трафика
    Поделиться публикацией

    Комментарии 1

      +3

      Правильно ли я понял, что данных хранятся на твоей рабочей машине, и когда кто-то его хочет получить, он коннектится только к тебе напрямую? Т.е. если файл будет слишком популярный, то он тут же станет недоступен, из-за ддоса?
      А если этот файл кешируют добрые люди, то разве это не приведет к тому, что люди на своих компах будут хранить весю копию такого интернета? Сейчас места конечно много у людей, но счёт идёт на петабайты.


      Система позволяет добавлять новые фрагменты в Dat-файл, но не разрешает модифицировать или удалять существующий

      С одной стороны прикольно, с другой — для просмотра файла ты качаешь все его версии, получая дикий оверхед.
      Плюс, как работает dns multicast? При каждом запросе сайта ты шлёшь днс пакет с просьбой о помощи всем участникам сети? И чем больше в сети участников, тем больше спам пакетов к тебе будет прилетать? Но ведь тогда рано или поздно это упрется сначала в сеть, затем в возможности ЦПУ+постоянного поиска в ОЗУ, а при нехватке — в скорость чтения с жёсткого диска (мы забудем про ssd, тк помним, что мы храним копию интернета на домашнем компе).

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое