6.3 KiB
6.3 KiB
Morpheus — Сеть доверия (Web of Trust)
Основная идея
Реле Morpheus принимает события только от публичных ключей, на которые подписаны как минимум N существующих участников реле. Используется граф подписок, уже существующий в Nostr (NIP-02 списки контактов) — никаких кастомных NIP, токенов-приглашений или специальных событий поручительства.
Как это работает
- Пользователь A публикует список контактов NIP-02, включающий публичный ключ пользователя B
- Реле подсчитывает, сколько существующих участников подписаны на B
- Если количество достигает порога (например, 3), реле начинает принимать события от B
- Если количество подписчиков 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) настраивается при запуске реле