Bitsocial и Nostr
Nostr не вписывается чётко ни в федеративную, ни в блокчейн-категорию. Инстансы не выдают пользователям учётные записи, и здесь нет ни цепочки, ни консенсуса, ни газа, ни глобального порядка. Nostr точнее описать как социальную сеть на релеях: пользователи владеют парами ключей, подписывают события и публикуют их на релеи — обычные серверы, которые эти события хранят и раздают (NIP-01). В README самого Nostr сказано, что он не опирается на P2P-технологии.
В одном важном отношении это ставит Nostr ближе к Bitsocial, чем федеративные или блокчейн-системы: идентичность здесь криптографическая и переносимая. Различия — в уровне данных и в том, кто контролирует доступ.
Как работает Nostr
- События и релеи. Каждый пост, профиль или реакция — это подписанное JSON-событие. Клиенты публикуют события на релеи по WebSocket и подписываются на них с фильтрами; релеи хранят события и отдают их обратно. Релеи не общаются друг с другом.
- Репликация. Обычно пользователи публикуют на несколько релеев. Исследование 712 релеев в 2023 году показало, что средний пост хранится на 34,6 из них (Wei and Tyson).
- Поиск чужих постов. Пользователи публикуют список релеев, на которые пишут и с которых читают (NIP-65), а клиенты забирают посты пользователя с его релеев для записи.
- Идентичность. Каждый пользователь — это ключ secp256k1, а подписи создаются по схеме Шнорра.
Спецификации не предусматривают ни ротации, ни восстановления ключа, так что потерянный ключ
означает потерянную учётную запись. Необязательные идентификаторы
name@domain(NIP-05) проверяются по файлу на веб-сервере этого домена. - Группы. Рекомендуемый механизм сообществ — группы на релеях (NIP-29): релей размещает группу, применяет её правила членства и публикации, прежде чем принять пост, и подписывает её метаданные. Более старые сообщества с одобрением модераторов (NIP-72) теперь помечены как нерекомендуемые в пользу NIP-29.
- Защита от спама. Каждый релей сам выбирает, что требовать на входе: proof-of-work (NIP-13), аутентификацию и белые списки (NIP-42), оплату или ограничения частоты. Клиенты добавляют списки игнорирования и оценки доверия.
- Медиа. Изображения и видео загружаются на отдельные файловые HTTP-серверы.
Чем они различаются
Кто хранит и раздаёт посты
В Nostr релеи и есть уровень хранения и доставки: каждый пост должен держать онлайн какой-то сервер. В Bitsocial HTTP-маршрутизаторы лишь помогают клиентам найти пиров. Они не хранят ни постов, ни профилей, ни метаданных сообществ, ни состояния модерации; клиенты забирают контент у узла сообщества и у пиров, которые его раздают. См. P2P-протокол.
Кто контролирует доступ
В Nostr решения о том, что принять на запись, принимают операторы релеев. Вне групп NIP-29 ключ, отклонённый одним релеем, может опубликовать то же событие на любом релее, который его примет, а то, что видят читатели, зависит от того, какие релеи читает их клиент. Группа NIP-29 ближе к сообществу Bitsocial: её релей-хост принимает или отклоняет посты. Но релей по-прежнему определяет, что могут делать роли в группе, а история группы остаётся привязанной к этому релею, если только другой релей не согласится её перенять.
В Bitsocial сообщество — это криптографический объект с собственной парой ключей. Узел сообщества запускает ту проверку, которую выберет владелец, и публикует принятое состояние в P2P-сеть. См. Пользовательские задачи по борьбе со спамом.
Эксплуатация инфраструктуры
Релей — это сервер с доменом и WebSocket-эндпоинтом, и популярные релеи несут расходы на хранение и трафик за всё, что раздают. По оценке того же исследования 2023 года, около 95% бесплатных релеев не могли покрыть свои расходы за счёт пожертвований. Узел сообщества Bitsocial работает на потребительском оборудовании, а пиры, которые читают сообщество, могут помогать его раздавать.
Браузер
Веб-клиент Nostr открывает WebSocket-соединения напрямую с релеями, поэтому сервер приложения не нужен. Веб-приложение Bitsocial запускает P2P-узел во вкладке и забирает контент у пиров. См. P2P в браузере.
Старый контент
Посты Nostr широко реплицируются по релеям, и это помогает старым постам сохраняться. Bitsocial хранит последнее состояние сообщества и не гарантирует, что старый контент сохранится навсегда.
Сравнение
| Вопрос | Nostr | Bitsocial |
|---|---|---|
| Категория | Протокол на релеях | P2P-сеть сообществ |
| Идентичность | Ключ пользователя secp256k1, ротация в спецификациях не предусмотрена | Пары ключей Ed25519 для пользователей и сообществ |
| Где хранятся посты | Релеи, выбранные автором, часто сразу много | Узел владельца сообщества и пиры, которые читают и раздают его |
| Кто держит контент онлайн | Операторы релеев | Узел владельца сообщества плюс вспомогательные сидеры |
| Сообщества | Группы на релеях (NIP-29) | Полноценные объекты, чей узел принимает или отклоняет посты |
| Защита от спама | Политика каждого релея: proof-of-work, аутентификация, оплата, белые списки, ограничения частоты | Антиспам-проверка сообщества перед тем, как пост будет принят |
| Модерация | Политики релеев, списки игнорирования в клиентах, метки и жалобы | Владельцы сообществ модерируют свои сообщества; приложения выбирают, что показывать |
| Имена | Необязательные идентификаторы name@domain, проверяемые по HTTPS | Имена .bso и .eth, которые разрешаются в ключи |
| Браузер | WebSocket-клиент релеев | P2P-узел внутри обычной вкладки браузера |
| Главный компромисс | Переносимая идентичность и широкая репликация, но доступность и политика зависят от релеев | Меньше зависимости от релеев, но старый контент не гарантирован навсегда |