Files
morpheus/docs/ru/web-of-trust.md
Maxim Kalistratov a5744ea60d Initial commit
2026-02-12 21:23:44 +04:00

6.3 KiB
Raw Permalink Blame History

Morpheus — Сеть доверия (Web of Trust)

Основная идея

Реле Morpheus принимает события только от публичных ключей, на которые подписаны как минимум N существующих участников реле. Используется граф подписок, уже существующий в Nostr (NIP-02 списки контактов) — никаких кастомных NIP, токенов-приглашений или специальных событий поручительства.

Как это работает

  1. Пользователь A публикует список контактов NIP-02, включающий публичный ключ пользователя B
  2. Реле подсчитывает, сколько существующих участников подписаны на B
  3. Если количество достигает порога (например, 3), реле начинает принимать события от B
  4. Если количество подписчиков B падает ниже порога (отписки), реле перестаёт принимать новые события от него
Реле получает событие от pubkey X
  → Подсчитать NIP-02 списки контактов на этом реле, включающие X
  → Если количество >= N: принять событие
  → Если количество < N: отклонить с auth-required или closed

Почему это работает

  • Спам умирает естественно — боты не могут набрать реальные подписки от существующих участников и никогда не достигают порога
  • Нет затрат на модерацию — граф подписок и есть слой модерации; ни одному админу не нужно вручную одобрять или банить пользователей
  • Сообщество остаётся целостным — начальное сообщество русскоязычное, подписки распространяются через реальные социальные связи, поэтому сеть остаётся культурно и лингвистически однородной без явных языковых фильтров
  • Нерелевантный шум исчезает — реле обслуживает только события от множества участников, случайный глобальный трафик Nostr не попадает в ленту
  • Нет кастомного протокола — используются только NIP-01 (события) и NIP-02 (списки контактов), которые поддерживает каждый клиент Nostr
  • Децентрализованное доверие — нет единого привратника; доверие распределено по графу подписок

Настройка порога

N Эффект
1 Минимальный барьер — одна подписка от любого участника даёт доступ. Лёгкий рост, слабая защита от спама.
3 Баланс — требуется небольшой социальный кластер. Хорошо для фазы раннего роста.
5+ Тесное сообщество — труднее попасть, сильная защита от спама. Хорошо для зрелой сети.

Порог может быть динамическим — ниже в период раннего роста, выше по мере взросления сети. Также может различаться по типу событий (например, публикация требует 3 подписок, а ЛС — только 1).

Граничные случаи

  • Проблема курицы и яйца — первые N пользователей добавляются вручную (начальное множество). Это основатели сообщества.
  • Наблюдатели — пользователи, которые читают, но не публикуют, тоже нуждаются в подписках для взаимодействия. Доступ на чтение может быть открытым.
  • Кросс-реле — пользователи могут подключаться к публичным реле параллельно с реле Morpheus. Барьер WoT применяется только к ленте реле Morpheus.
  • Защита от сибилов — создание фейковых аккаунтов для подписки на себя возможно, но затратно в масштабе (каждому фейку самому нужно N реальных подписчиков). Рекурсия делает сибил-атаки экспоненциально сложнее.
  • Потеря подписчиков — если кто-то отписывается и количество падает ниже N, существующие события остаются на реле, но новые отклоняются до восстановления числа подписчиков.

Заметки по реализации

  • Реле поддерживает материализованное представление графа подписок (NIP-02, kind:3 события)
  • При каждом входящем событии проверяется количество входящих подписок автора относительно порога
  • Подсчёт обновляется в реальном времени при публикации списков контактов NIP-02
  • Начальное множество (вручную разрешённые pubkey) настраивается при запуске реле