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

86 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Morpheus — Сеть доверия (Web of Trust)
## Основная идея
Реле Morpheus принимает события только от публичных ключей, на которые
подписаны как минимум **N** существующих участников реле. Используется
граф подписок, уже существующий в Nostr (NIP-02 списки контактов) —
никаких кастомных NIP, токенов-приглашений или специальных событий
поручительства.
## Как это работает
1. Пользователь A публикует список контактов NIP-02, включающий
публичный ключ пользователя B
2. Реле подсчитывает, сколько существующих участников подписаны на B
3. Если количество достигает порога (например, 3), реле начинает
принимать события от B
4. Если количество подписчиков B падает ниже порога (отписки), реле
перестаёт принимать новые события от него
```text
Реле получает событие от 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) настраивается при
запуске реле