Перейти к основному содержанию

Bitsocial и Secure Scuttlebutt

Secure Scuttlebutt (SSB) — социальный P2P-протокол, который Dominic Tarr создал в 2014 году. Manyverse — самое известное его приложение, для Android, iOS и десктопа; Patchwork был основным десктопным клиентом, пока его не архивировали. Из систем, которые сравниваются в этой документации, SSB по духу ближе всего к Bitsocial: никаких серверов на пути данных, никакого блокчейна, никакого глобального порядка, а для идентичности — ключи Ed25519. При этом два проекта сделали противоположный выбор в том, что хранит каждый пир и где останавливается спам.

Как работает Scuttlebutt​

  • Ленты. Каждая идентичность — это пара ключей Ed25519, которая записывается как @<public key>.ed25519. Всё, что публикует пользователь, попадает в его собственную ленту (feed) — журнал, в который можно только дописывать (append-only); каждое подписанное сообщение в нём содержит порядковый номер и хеш предыдущего сообщения. Согласно руководству по протоколу, опубликованное сообщение нельзя изменить.
  • Репликация. Пиры копируют ленты целиком, а не отдельные посты, и то, какие ленты хранит пир, определяет граф подписок. Patchwork, например, показывал ленты на расстоянии до двух переходов и реплицировал ленты на расстоянии до трёх. С эпидемическими деревьями рассылки (EBT) пиры сравнивают последний порядковый номер, который у них есть для каждой ленты, и отправляют только недостающее.
  • Соединения. Пиры проходят взаимную аутентификацию по протоколу secret handshake и шифруют трафик с помощью box stream. Рукопожатие привязано к идентификатору сети, поэтому пиры из отдельной сети SSB с другим идентификатором не могут подключиться к основной.
  • Поиск пиров. В локальной сети пиры объявляют о себе через широковещательную рассылку UDP и синхронизируются по LAN; Manyverse также синхронизируется по Bluetooth. Через интернет пользователи полагаются на узлы pub — постоянно доступные пиры, которые подписываются на вас в ответ после того, как вы активируете код приглашения, а затем хранят и раздают вашу ленту, — и на узлы room, которые не хранят лент, но туннелируют соединения между своими участниками.
  • Блобы и приватные сообщения. Изображения и другие файлы — это блобы с адресацией по содержимому, которые загружаются у пиров; в текущих реализациях их размер по умолчанию ограничен 5 MB. Приватные сообщения шифруются не более чем для семи получателей и публикуются в ленте автора в виде шифротекста.

Чем они различаются​

Что хранит пир​

Пир SSB хранит полную копию каждой ленты в своём диапазоне репликации, начиная с первого сообщения каждой ленты, и раздаёт эти ленты другим. Именно это позволяет SSB работать офлайн, но объём хранилища растёт с каждым сообщением в этом диапазоне, а новой установке приходится скачать эти ленты, прежде чем она сможет показать что-то существенное. Клиент Bitsocial получает последнее состояние открываемых сообществ от узла сообщества и от пиров, которые его раздают, а сеть хранит только это последнее состояние. См. P2P-протокол.

Удаление и устройства​

Поскольку лента — это цепочка хешей, в SSB нет удаления в масштабах всей сети: пир может стереть сообщения из своей базы данных, но не может отозвать их из копий других пиров. Публикация с одним и тем же ключом с двух устройств или из восстановленной резервной копии приводит к форку ленты, поэтому обычное решение — одна идентичность на устройство. PZP, протокол-преемник от команды Manyverse, называет среди главных изменений по сравнению с SSB удаление, несколько устройств на аккаунт и устойчивые к форкам ленты (пост о запуске). Узел сообщества Bitsocial при каждом обновлении публикует новую версию состояния сообщества, поэтому контент, удалённый модераторами, выпадает из последнего состояния.

Кого вы можете услышать​

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

Сообщества​

В SSB нет объекта сообщества. Каналы и хештеги — это метки на отдельных постах, ответы в треде живут в лентах тех, кто их написал, а то, какую часть треда вы видите, зависит от того, какие из этих лент есть у вашего узла. У узлов room могут быть модераторы и списки участников, но они определяют, кто может подключаться через этот узел, а не то, что публикуется. Сообщество Bitsocial — полноценный объект с собственной парой ключей, правилами, модераторами и проверкой.

Инфраструктура​

Оба проекта держат серверы вне пути данных, и оба опираются на помощников. Узлы pub — самое близкое к хостинговому сервису, что есть в SSB: они хранят и раздают ленты всех, на кого подписаны. Узлы room ближе к HTTP-маршрутизаторам Bitsocial, потому что ни те, ни другие не хранят контент, но узел room ретранслирует соединение между своими участниками, тогда как маршрутизатор лишь возвращает адреса провайдеров и в передаче данных не участвует. Как и пир SSB, узел сообщества Bitsocial работает на потребительском оборудовании, и чтобы принимать новые посты, он должен быть в сети.

Офлайн и локальные сети​

Здесь SSB сильнее. Два пира SSB в одной сети Wi-Fi или, в Manyverse, по Bluetooth могут синхронизироваться без подключения к интернету, и всё, что уже реплицировано, остаётся доступным для чтения офлайн. Заявленная главная цель Manyverse — сделать социальные сети независимыми от подключения к интернету. Bitsocial нужно подключение к интернету, чтобы находить пиров и публиковать.

Браузер​

Основные приложения SSB поставляются с полноценным узлом SSB: Manyverse встраивает его в свои мобильные и десктопные приложения. ssb-browser-demo запускал SSB в браузере с частичной репликацией и соединениями через узлы room и был архивирован в 2022 году. Приложения Bitsocial запускают P2P-узел в обычной вкладке браузера. См. P2P в браузере.

Приватные сообщения​

В SSB встроены зашифрованные приватные сообщения. Bitsocial сосредоточен на публичных сообществах, и нативных личных сообщений в нём пока нет.

Состояние проекта​

André Staltz, создатель Manyverse, в апреле 2024 года отошёл от SSB, Manyverse и их запланированного преемника (его последнее обновление). В июле 2024 года Jacob Karlsson запустил этого преемника под названием PZP и написал, что больше не будет работать над Manyverse и не знает никого, кто собирался бы этим заняться. В октябре 2026 года в репозиториях PZP на Codeberg не было обновлений после декабря 2024 года. Репозиторий Patchwork архивирован, последний релиз — v3.18.1, а команда Planetary, приложения SSB для iOS, в 2023 году перешла на Nostr со своим приложением Nos. Сеть SSB всё ещё работает на пирах и узлах pub, которые люди держат в сети, но её основные приложения больше не развиваются.

Сравнение​

ВопросSecure ScuttlebuttBitsocial
КатегорияP2P-протокол типа gossipP2P-сеть сообществ
ИдентичностьОдна пара ключей Ed25519 на устройствоПары ключей Ed25519 для пользователей и сообществ
Где хранятся постыЛента автора, в которую можно только дописывать; её копирует каждый пир, который её реплицируетУзел владельца сообщества и пиры, которые читают и раздают его
Что хранит пирПолная история каждой ленты в пределах его диапазона подписокПоследнее состояние сообществ, которые он читает или раздаёт
СообществаОбъекта сообщества нет; каналы и хештеги служат метками постовПолноценные объекты, чей узел принимает или отклоняет посты
Защита от спамаДиапазон репликации по графу подписок и блокировкиАнтиспам-проверка сообщества перед тем, как пост будет принят
МодерацияПодписки и блокировки каждого пользователяВладельцы сообществ модерируют свои сообщества; приложения выбирают, что показывать
Вспомогательные серверыУзлы pub хранят и раздают ленты; узлы room туннелируют соединенияHTTP-маршрутизаторы возвращают пиров-провайдеров и не хранят контент
ОфлайнСинхронизация по LAN и Bluetooth без интернетаНужно подключение к интернету
БраузерПриложения включают полноценный узел SSBP2P-узел внутри обычной вкладки браузера
СетьРаботает, но основные приложения больше не развиваютсяРаботающая сеть с приложениями, например 5chan и Seedit
Главный компромиссРаботает офлайн и не требует хостинга, но ленты растут бесконечно, а незнакомцы остаются невидимымиОткрытая публикация и поддержка браузера, но нужен интернет и хранится только последнее состояние