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

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 хранит последнее состояние сообщества и не гарантирует, что старый контент сохранится навсегда.

Сравнение​

ВопросNostrBitsocial
КатегорияПротокол на релеяхP2P-сеть сообществ
ИдентичностьКлюч пользователя secp256k1, ротация в спецификациях не предусмотренаПары ключей Ed25519 для пользователей и сообществ
Где хранятся постыРелеи, выбранные автором, часто сразу многоУзел владельца сообщества и пиры, которые читают и раздают его
Кто держит контент онлайнОператоры релеевУзел владельца сообщества плюс вспомогательные сидеры
СообществаГруппы на релеях (NIP-29)Полноценные объекты, чей узел принимает или отклоняет посты
Защита от спамаПолитика каждого релея: proof-of-work, аутентификация, оплата, белые списки, ограничения частотыАнтиспам-проверка сообщества перед тем, как пост будет принят
МодерацияПолитики релеев, списки игнорирования в клиентах, метки и жалобыВладельцы сообществ модерируют свои сообщества; приложения выбирают, что показывать
ИменаНеобязательные идентификаторы name@domain, проверяемые по HTTPSИмена .bso и .eth, которые разрешаются в ключи
БраузерWebSocket-клиент релеевP2P-узел внутри обычной вкладки браузера
Главный компромиссПереносимая идентичность и широкая репликация, но доступность и политика зависят от релеевМеньше зависимости от релеев, но старый контент не гарантирован навсегда