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