Децентрализация, часть третья: отказ от серверов

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

· 13 минуты на чтение
Децентрализация, часть третья: отказ от серверов
Да, картинки для блога всё так же генерятся в Midjourney.

Это третья часть серии постов про децентрализованные социальные сервисы.
В первой речь шла о теоретической базе децентрализации — рекомендую начать с неё.
Во второй обсуждались федеративные решения — такие, в которых удалось избавиться от центра управления всей сетью, но всё-таки остались серверы, обслуживающие отдельные сообщества.
А теперь пора поговорить о решениях, позволяющих полностью избавиться от центров. То есть, в теории, такие сервисы могут работать практически вечно, и исчезнут лишь когда в них не останется ни одного пользователя, поддерживающего сеть. И хотя речь идёт о социальных сервисах, я не могу не начать с файлообмена, чтобы чуть глубже погрузиться в теорию именно пирингового файлообмена.

Вспомним о торрентах?

А, нет, пока не вспомним. Сперва заглянем ещё на пару шагов назад. Классический файлообмен в интернете раньше выглядел обычно так: есть сервер, подключенный к интернету с каким-нибудь широким каналом связи, например, 100 гигабит в секунду. На нём появляется очень популярный файл, который хотят скачать пятьдесят тысяч человек в один момент. 100 гигабит, т.е. 100 000 мегабит приходится разделить на 50 000 — и мы получим в результате среднюю скорость загрузки всего лишь в два мегабита в секунду. Как-то негусто по нашим меркам. А лет двадцать назад всё это дело было ещё на пару порядков медленнее. Это была абсолютно централизованная модель. Случись у сервера даже секундный сбой — и все загрузки могли бы прерваться. В общем-то, этот подход и поныне действует, только обычно файлы раскидывают по CDN вместо единого сервера.

В нулевых популярным решением для загрузки больших файлов стал протокол BitTorrent. Классическая схема его применения была такой: пользователь, желавший поделиться каким-нибудь файлом или директорией, выбирал его или её в торрент-клиенте и формировал торрент-файл, в котором содержались сведения о содержимом, а также специальный адрес сайта, помогавшего распространять эти данные. Такой сайт именовался торрент-трекером. Готовый файл загружался на форум, рядом с трекером. Другие пользователи загружали этот торрент-файл, скармливали его торрент-клиенту, и тот сообщал трекеру, что пользователь доступен по такому-то адресу, а трекер в ответ сообщал, какие ещё пользователи работают с этим файлом и какие у них адреса. А дальше клиент в автоматическом режиме связывался с другими клиентами и у кого-то скачивал недостающие файлы, а кому-то раздавал те, что уже имеются.

Это выглядело как-то так: 1. Пользователь вручную качает торрент-файл и скармливает его клиенту; 2. Клиент сообщает трекеру, что он готов качать и раздавать конкретную раздачу; 3. Трекер отвечает, какие ещё клиенты работают с этой раздачей; 4. Клиент связывается с другими клиентами и качает/раздаёт файлы.

Подобный подход, когда клиенты работают друг с другом напрямую, называется peer-to-peer или P2P. Таким образом, получалось, что сами файлы хранятся только у людей, а трекер лишь помогает им находить друг друга. Однако, несмотря на прямой обмен данными между пользователями, трекер оставался некоторым координационным центром, от которого нельзя было избавиться — клиенты не смогли бы находить друг друга. Зато кратковременные сбои трекера хотя бы не могли помешать загружать файлы у уже известных участников сети. Ну и ещё он не был так сильно загружен, как раздающий сервер.

Дело Пиратской Бухты — крупнейшего торрент-трекера — подняло большой вопрос о том, насколько корректно помогать пользователям находить друг друга, способствуя нелегальному файлообмену. Ответное решение оказалось весьма изящным — популярные торрент-клиенты начали внедрять технологию DHT (конкретно протокол Kademilla), что позволило клиентам находить друг друга самостоятельно, без участия трекеров. Теперь, для загрузки какого-нибудь файла из сети BitTorrent, не нужно знать практически ничего кроме одной строчки. Например, 8ad1807112fad8477d59b24b1e2a20fae539b9d5 — по этой строке можно загрузить образ Debian Linux версии 12.8.0. Больше ничего не нужно — современный торрент-клиент по ней сам найдёт раздающих и сам получит нужный файл. Вот так мы получаем тотальную децентрализацию — файлы можно качать напрямую у других участников, не полагаясь ни на какие серверы-трекеры.

Торренты, кстати — не единственный способ напрямую обмениваться данными от пользователя к пользователю — для файлов ещё есть ed2k, RetroShare и IPFS. Есть целые оверлейные сети типа I2P и Yggdrasil, позволяющая любому энтузиасту без особых затрат на домены поднять сайт внутри сети, при этом, сохраняя анонимность как владельца сайта, так и его пользователей. Можно ещё вспомнить разного рода блокчейны типа Bitcoin или Etherium, которые фактически тоже представляют собой распределённые хранилища данных. Но всё-таки изначально планировалось говорить об общении.

Соцсети

Надо сделать оговорку. Нормальный P2P-сервис не может работать просто в браузере — ограничения безопасности браузера не позволят связываться со случайными пользователями сети и передавать им какие-то данные. К тому же, любой клиент сети одновременно выступает и сервером, передавая сведения другим клиентам сети. Так что привычная форма распространения соцсетей и мессенджеров — это приложение, которое требует запуска отдельно от браузера. Однако часто (например, у твистера и фринета, о которых речь пойдёт ниже) клиент выступает обязательной прослойкой между браузером и другими пользователями сети. В любом случае, p2p-соцсети заведомо будут сложнее в использовании, чем централизованные или федеративные — им обязательно нужно приложение.

Twister

Децентрализованный аналог Твиттера. Для запуска нужен не только браузер, но и приложение для вашего компа (или андроида, кстати). Под маком не собирается вообще. Под виндой и линуксами как-то работает. Проект не поддерживается с 2020 года, но продолжает функционировать, потому что в нём есть как минимум какие-то боты, которые хранят у себя какой-то кусок данных. Однако часть данных уже пропала и вряд ли будет вновь доступна. Функционал минимальнейший: посты только текстовые, картинку можно загрузить только в профиль, можно писать в лички. Развернуть у себя приложение, чтобы ходить в сеть — задача нетривиальная: на маке не завелось, пришлось хостить в докере на линуксе без гуёв. Живых людей не обнаружено вообще, и очень жаль — раньше были даже русскоязычные пользователи.

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

Hyphanet, также известный как Freenet

Очень старый проект, сильно ориентированный на анонимность участников. До такой степени, что у него есть возможность настроиться в совершенно параноидальный режимы типа «подключаться только к тем, с кем я обменялся кодами». По своей сути он состоит из нескольких разных сервисов, развёрнутых поверх одной большой распределённой файловой системы, таких как почта, микроблог, форумы, простые сайты и просто файлообмен.

К сожалению, как и Twister, скорее мёртв, чем жив: возможно, в нём есть участники, которые не поддерживают связь с другими пользователями, но подключиться к сети, не имея в ней знакомых, практически нереально.

А ещё у проекта какая-то странная история с переименованиями. А я просто не хочу и не могу в этом всём разобраться. Так что, может, что-то делаю не так, и потому у меня ничего теперь не работает.

Вот такую картину наблюдаю уже несколько дней. А ведь когда-то давно оно было намного более живым...

Scuttlebutt

Интересная концепция, хоть и не стопроцентно децентрализованная: публикация постов и сообщений работает за счёт пиринга, в то время как сам поиск новых пиров работает через серверы, поддерживаемые энтузиастами. Ну и можно ещё находить пиров в локальной сети. При этом, каждый блог — это что-то вроде локального блокчейна, и удалять записи из него нельзя. При коннекте клиенты обмениваются друг с другом сведениями о тех блогах, которые уже видели. Однако, помимо сомнительной идеи с серверами, подключение ко многим другим клиентам не всегда доступно: например, в клиенте Manyverse по умолчанию установлен запрет приёма входящих подключений. В результате читать практически некого, а имеющиеся посты приходят медленно. Общаться можно с друзьями, но для поддержания связи надо обоим периодически подключаться к серверам. В клиенте Patchwork таких проблем нет. В Planetary наоборот — два года тишины. В общем, то ли я не понимаю чего-то, то ли оно реально странно сделано.

Вот такой интерфейс для написания постов, например, в клиенте Manyverse. Другие клиенты совсем некрасивые, но, кажется, через них хоть что-то можно найти.

LBRY

Добавлено 12.01.2025

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

Но и тут всё не так радужно. В 2023 году разработчиков, LBRY Inc, признали виновными в нарушении законов о ценных бумагах в связи с выпуском токенов LBC — тех самых, которые могли зарабатывать пользователи. С тех пор перспективы развития проекта туманны: полностью закрыть его нельзя, но вот разрабатывать, получается, запрещено.

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

Канал Старпома Макаренкова в LBRY (и для сравнения, в YouTube) — скрин от 12 января 2025 года.

Пара слов про Minds

Minds позиционирует себя как децентрализованная соцсеть с вознаграждением популярных авторов в криптовалюте. Однако, несмотря на заявления об открытом исходном коде, в репозитории проекта при беглом анализе я не нашёл исходников клиента. Зато нашёл раздел инструментов для разворачивания серверной части и страницу статуса собственных сервисов, и это косвенно нам указывает, что сервис на самом деле централизованный. Дополнительно это подтверждается возможностью сбросить пароль посредством электронной почты. Однако, если у кого-то есть сведения, демонстрирующие реальную децентрализацию, я буду рад обновить этот раздел.

Мессенджеры

Здесь я должен сразу оговориться: практически все по-настоящему децентрализованные мессенджеры, как правило, ориентированы на высокий уровень анонимности участников. Как правило, в таких сервисах нет каких-то публичных чатов, поэтому оценить состояние сообщества нереально: если вам не с кем общаться, то сервис будет выглядеть мёртвым. Так что

Tox

Ключевое отличие токса от большинства других мессенджеров — это подход к разработке. Сам Tox — это лишь библиотека с описанием протокола связи. Долгое время у него было много разных реализаций, но сейчас всё более-менее устаканилось и выбор стал попроще. Функционал простой: личные чаты (конечно, шифрованные) с вложениями, аудио- и видеозвонки. Групповые чаты тоже есть, но искать их придётся как-то самостоятельно. Мобильные приложения работают скверно, хотя на декстопах всё более-менее прилично. И важный нюанс: сообщения доставляются тогда и только тогда, когда оба пользователя онлайн. Причем, если мобильное приложение свернуть, оно через какое-то время уйдёт в спячку и собеседник даже не сможет ничего вам отправить. Файлы тоже не отправятся. Файлы вообще отправятся только тогда, когда получатель явно согласится на их приём.

Токс встречает простой регистрацией, но дальше возникает сложность: надо как-то обмениваться Tox ID, при помощи которых пользователи друг с другом связываются. Либо сканировать qr-коды, либо копировать их в виде текста — никаких коротких имён из коробки не предусмотрено. Периодически появляются сервисы типа "укажи свой никнейм и Tox ID, и другие смогут тебя по нему найти" и исчезают.

Пришлось завести второй аккаунт и болтать с самим собой. Мобильный клиент Antidote, кстати, не поддерживает Markdown.

Jami

Мессенджер со схожим схожим функционалом: сообщения, групповые чаты, аудио- и видеозвонки. Есть плюс: можно задать себе никнейм, по которому другие люди смогут вас найти. А затем потерять свой ключ и больше никогда не иметь возможности воспользоваться этим логином. Сообщения доставляются довольно медленно, и иногда единственный способ их получить поскорее — открыть приложение и ждать. И, как и в Tox, сообщения будут приходить только тогда, когда оба абонента в сети. Зато звонки приходят даже при свёрнутом приложении, причём весьма быстро.

На вид — обычный нормальный мессенджер. Панель разметки удобненькая.

Briar

Мессенджер с чуть более скромным функционалом: в нём нет звонков. Неудобная инициация переписки: нужно, чтобы оба абонента добавили друг друга в списки контактов. Добавление при этом устроено как у всех: надо или сканировать QR-код, или вводить код вручную. Можно выбирать разные способы отправки сообщений: через интернет, через локальную сеть и даже через Bluetooth, если оба пользователя с телефона. А ещё из прикольного — можно вести блог в формате общей ленты. Ваши посты будут доступны только вашим контактам. Также есть коллективные блоги и коллективные чаты, доступные только приглашённым участникам. Сообщения прилетают довольно быстро, пока приложение остаётся в памяти, даже свёрнутым. Подробнее можно почитать у разработчиков.

У мессенджера есть хитрый способ оставаться на связи оффлайн: можно установить специальное приложение на отдельно лежащий дома старый смартфон, постоянно стоящий на зарядке. Приложение надо связать со своим аккаунтом. Теперь, если основной клиент оффлайн, то это приложение примет сообщение и будет хранить его, пока не найдёт конечного получателя.

Официально приложение вышло только под андроид, а десктопные версии пока (на конец декабря 2024 года) в бете. Ну а пользователи айфонов пока в пролёте, увы.

Приложение под мак напоминает, что оно в бете.

Bitmessage

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

Спасибо, анонимус, тебя тоже с праздником!

Session

Штука чуть более удобная, чем другие мессенджеры, но чуть менее децентрализованная. На мобилах сразу есть выбор: уведомления могут прилетать быстро, но через сервера гугла и эппла, а могут медленно (очень). Помимо этого, энтузиасты могут поднимать сервисные ноды, которые будут обеспечивать доставку сообщений в периоды, когда один из абонентов оффлайн, что, собственно, и ставит полную децентрализацию сервиса под сомнение. К тому же, поднять такую сервисную ноду — задача нетривиальная и затратная. Но если сервисные ноды могут контролироваться случайными людьми, то, вероятно, сервис можно счесть децентрализованным — тут нет центра в виде организации, контролирующей сервис, а от условного матрикса такой подход отличается случайным выбором серверов с легкой их сменой. В общем, где-то на грани, но, кажется, с положительной стороны.

Ещё из отличий — у них есть голосовые сообщения. А вот звонки пока в бете и они ломают анонимность.

Децентрализованные злые шуточки.

SimpleX

Обновлено 12.01.2025

Чуваки сильно угорели по анонимности: для каждого контакта можно генерировать отдельный одноразовый идентификатор и отдельный профиль. Функционал достаточный: есть звонки, групповые чаты, войсы, медиа и прикольная фича «Live-сообщения», когда сообщение отображается у получателя прямо в процессе его набора.

При прошлом рассмотрении сервиса меня напрягла необходимость выбирать серверы, через которые будут передаваться сообщения, пока собеседник оффлайн — это бы ломало идею децентрализации. Но оказалось, что подобные серверы можно разворачивать самостоятельно и выбирать их вместо предустановленных. К тому же, для пущей анонимности, они ещё и работают через tor (что, впрочем, может вызвать некоторые сложности там, где тор успешно блокируется). В общем, как и в Session, получается некоторая смесь федерации с p2p.

SimpleX реабилитирован и занимает заслуженное место в этом списке

Не совсем децентрализованные сервисы

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

NewNode: При всём уважении к команде разработчиков, я не могу называть его децентрализованным по одной причине: для входа в приложение нужно указать номер телефона и получить смс. Это создаёт точку отказа: если сервис отправки смс сломается, люди не смогут авторизоваться на новых устройствах. Более того, это может означать, что и сами профили пользователей могут храниться не распределённо, а где-то на конкретных серверах. Однако, насколько я помню, после входа приложение даёт очень интересные возможности, включая отправку сообщений через другие узлы с подключением через Bluetooth. И ещё проблема: приложение под андроид удалено из плей маркета.

Bridgefy: ситуация с ним очень похожа на NewNode. Да, есть всякие прикольные способы общаться без интернета, но для регистрации нужен аккаунт гугла или эппла. А значит, профили хранятся где-то на серверах. И следовательно, для входа нужно, чтобы серверы были доступны. Причём, общаться, как и в NewNode, можно и без интернета вовсе. Откровенно говоря, по субъективному ощущению, они оба наследуют и дополняют принципы реализации ныне закрытого проекта FireChat, который первым реализовал общение пользователей через mesh-топологию.

Threema: заявляется как защищенный децентрализованный мессенджер, но есть несколько признаков, что это не совсем так. Например, чтобы войти в корпоративную учётку, надо, чтобы её зарегистрировал представитель организации — а в децентрализованной системе это было бы невозможно. Чтобы зарегистрировать организацию, надо заполнить форму на сайте. Приложение для личного использования однако не требует регистрации, достаточно сгенерировать ключи на телефоне. Если получатель оффлайн, сообщения временно сохраняются на серверах мессенджера. И ещё одно но: приложение платное, стоит шесть евро (извините, жаба душит). Ещё есть бесплатная веб-версия, но непонятно, как средствами браузера реализован пиринг. Все исходники закрытые. И до кучи, оно в российском реестре ОРИ, т.е. обязано передавать данные о пользователях. В общем, слишком много красных флагов.

Ну и напомню что два сервиса, которые считаются защищёнными, Wire и Signal, вообще не являются децентрализованными. Это, впрочем, не делает их плохими — просто факт.

Подводя итоги

P2P-соцсети — это какое-то почти полное отсутствие внятной жизни. Как-то ещё живёт Scuttlebutt, но с кучей оговорок типа необходимости использовать конкретные клиенты.

P2P-мессенджеры живы и развиваются. Они все неидеальные, по качеству работы далеки от привычных ватсаппов с телеграмами. Где-то сообщения проходят медленно, где-то будет крайне затруднительно общаться двум абонентам с телефонов, где-то нет клиентов для телефонов вовсе. Почти у всех проблемы с хранением истории — она хранится только локально и больше нигде. Часты проблемы с доставкой сообщений, когда отправитель и получатель не могут быть одновременно онлайн. Это хорошо работает на компах и намного хуже на смартфонах. Тем не менее, в целом это работает, причём довольно безопасно и относительно надёжно. Заблокировать такой обмен сообщениями немного сложнее, чем централизованные мессенджеры, однако, скорее всего, под многие протоколы можно будет выработать сигнатуры, позволяющие выделять и блокировать подобный трафик.

Интересно, что спама в таких сетях практически нет. Где-то это решается благодаря сложному формированию ключей — так делает Tox. Где-то же просто сложность генерации сообщения достаточно высока, что делает массовую рассылку нецелесообразной — так сделано в Bitmessage. Ну и в целом, получателя надо как-то найти, чтобы написать ему. А искать пользователей малопопулярных мессенджеров негде.

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


Из всего многообразия мессенджеров, что я перепробовал, развернул впервые за много лет или вообще за всю жизнь, мне больше всего нравятся Tox и Jami. Причём, Jami цепляет своим юзер-френдли интерфейсом, а Tox я просто очень давно использую. Session прикольный, но система сервисных нод меня немного смущает. Briar перспективный даже без звонков, но он не поддерживает айфоны. А Bitmessage просто давно нет причин использовать.

Если захотите со мной поболтать — смело пишите, я буду рад помочь освоиться и потестить!

ToxID: B99AF10F804D1DB688F798594BFF96111B100282DC527AB349E0F145ACB0F1297E7541EE7DFA

JamiID: daniszojl или 3f1a54953a643103fa44728d7a5e7d00c1fe1d0b

Session: 05f4241dabe5ca35a4a0474aaf74f56c91248ce34edb0edaab594b036504574b66


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

А если хотите обсудить пост, рассказать о каком-то сервисе, который я забыл упомянуть или поделиться своим опытом, заходите в комменты к посту в централизованном телеграме.

Mastodon