Оценка доверия в Nostr: как рассчитывается доверие
Оценки доверия выходят за рамки простой проверки подписок. Узнайте, как именно Web of Trust рассчитывает оценку от 0 до 1 для любого публичного ключа Nostr на основе дистанции, взаимных подписок, количества путей и бонусов за связующие узлы.
Leon Acosta
Когда вы используете расширение Nostr Web of Trust, каждый публичный ключ получает оценку доверия от 0 до 1. Но что на самом деле означает это число? И как оно рассчитывается?
В этой статье мы разберём систему оценки, объясним каждый фактор и покажем, как использовать оценки доверия в ваших собственных приложениях.
Что такое оценка доверия?
Оценка доверия -- это числовое значение от 0 до 1, которое отражает, насколько тесно кто-то связан с вами через ваш социальный граф. Это более точный подход, чем простая проверка "подписан / не подписан".
| Диапазон оценки | Значение | Типичная дистанция |
|---|---|---|
| 0,80 -- 1,00 | Высокое доверие | Прямая подписка (1 переход) |
| 0,40 -- 0,60 | Умеренное доверие | Друг друга (2 перехода) |
| 0,15 -- 0,30 | Низкое доверие | 3 перехода |
| 0,00 | Неизвестный / недоверенный | Не в вашей сети |
Оценка зависит не только от дистанции. Итоговое число складывается из нескольких факторов.
Как рассчитываются оценки доверия
Формула оценки состоит из четырёх компонентов:
score = base(distance) + mutual_bonus + bridging_bonus + path_bonusДавайте разберём каждый из них.
1. Базовая оценка (затухание по дистанции)
Основа каждой оценки доверия -- социальная дистанция, то есть количество переходов между вами и целевым публичным ключом в графе подписок.
// Упрощённое затухание по дистанции
function baseScore(hops) {
if (hops === 0) return 1.0; // вы сами
if (hops === 1) return 0.80; // прямая подписка
if (hops === 2) return 0.45; // друг друга
if (hops === 3) return 0.15; // 3 перехода
return 0.0; // слишком далеко
}Затухание намеренно резкое. Каждый дополнительный переход значительно снижает базовую оценку, потому что доверие быстро уменьшается через непрямые связи.
Вы можете настроить максимальное количество переходов и значения затухания в настройках расширения. Некоторые пользователи предпочитают более узкую сеть из 2 переходов, а другие расширяют её до 3.
2. Бонус за взаимные подписки
Когда два аккаунта подписаны друг на друга (взаимная подписка), связь сильнее, чем односторонняя подписка. Система оценки вознаграждает это:
- Взаимная подписка на 1-м переходе добавляет до +0,10 к базовой оценке
- Взаимные подписки вдоль пути также вносят меньший бонус
Это отражает интуитивное понимание: если кто-то подписан на вас в ответ, отношения, скорее всего, настоящие.
3. Бонус за связующие узлы
Связующий узел -- это человек, который соединяет иначе разрозненные части вашего социального графа. Если несколько независимых путей к публичному ключу проходят через один и тот же промежуточный узел, этот узел является "мостом".
Связующие узлы получают небольшой бонус, потому что они служат якорями доверия, соединяющими различные сообщества. Если вы достигаете кого-то через хорошо связанный мост, это более сильный сигнал, чем достижение через единственную цепочку.
4. Бонус за разнообразие путей
Чем больше независимых путей ведут от вас к публичному ключу, тем выше оценка доверия. Это бонус за разнообразие путей.
// Больше путей = выше уверенность
const pathBonus = Math.min(pathCount * 0.03, 0.15);Подумайте об этом так: если 5 разных людей, на которых вы подписаны, также подписаны на кого-то, это гораздо более сильный сигнал доверия, чем если вас связывает только 1 человек.
Оценка доверия vs. бинарная проверка подписки
Вы можете спросить: почему бы просто не проверить "есть ли этот человек в моей сети, да или нет?" Вот в чём разница:
| Характеристика | Бинарная проверка | Оценка доверия |
|---|---|---|
| Результат | true / false | 0.00 -- 1.00 |
| Детализация | Отсутствует | Тонкая настройка |
| Применение | Простой спам-фильтр | Ранжирование контента, значки в интерфейсе |
| Взаимные подписки | Игнорируются | Учитываются |
| Разнообразие путей | Игнорируется | Вознаграждается |
Бинарные проверки по-прежнему полезны для быстрой фильтрации спама. Но оценки доверия позволяют создавать более богатый пользовательский опыт -- например, отображать градиент цветов доверия, ранжировать результаты поиска или устанавливать различные уровни разрешений.
Практические примеры
Получение оценки доверия
// Простая проверка оценки доверия
const score = await window.nostr.wot.getTrustScore(pubkey);
if (score >= 0.7) {
// Высокое доверие - показываем полный контент
} else if (score >= 0.3) {
// Умеренное доверие - показываем с индикатором
} else {
// Низкое/нет доверия - сворачиваем или помечаем
}Получение подробной информации о доверии
// Полные данные о доверии со всеми факторами оценки
const details = await window.nostr.wot.getDetails(pubkey);
console.log(details);
// {
// distance: 2,
// score: 0.52,
// paths: 3,
// mutual: true,
// bridgingNodes: ["pubkey1...", "pubkey2..."]
// }Пакетная оценка для лент
// Оценка нескольких публичных ключей за раз (эффективно)
const pubkeys = events.map(e => e.pubkey);
const scores = {};
for (const pk of pubkeys) {
scores[pk] = await window.nostr.wot.getTrustScore(pk);
}
// Сортировка ленты по оценке доверия
const rankedEvents = events.sort(
(a, b) => (scores[b.pubkey] || 0) - (scores[a.pubkey] || 0)
);Как приложения могут использовать оценки доверия
Оценки доверия открывают возможности, недоступные при бинарных проверках:
- Ранжирование ленты: сортировка постов по оценке доверия автора, чтобы доверенный контент отображался первым
- Значки доверия: отображение зелёных/жёлтых/красных индикаторов рядом с именами профилей
- Пороги для зэпов: автоматическое одобрение небольших зэпов для пользователей с высоким доверием
- Фильтрация ответов: сворачивание ответов с низким доверием при сохранении видимости доверенных
- Фильтрация сообщений: разделение сообщений от доверенных контактов и неизвестных отправителей
- Уровни разрешений: предоставление различных возможностей на основе уровня доверия
Все эти паттерны работают через API window.nostr.wot, который доступен в любом веб-приложении Nostr при установленном расширении.
Настройка оценок доверия
Расширение позволяет настраивать параметры оценки в разделе "Настройки":
- Максимум переходов: как далеко искать (2 или 3 перехода)
- Скорость затухания: насколько резко падает доверие с каждым переходом
- Вес бонуса за взаимные подписки: насколько сильно вознаграждаются взаимные подписки
- Режим WoT: Удалённый (оракул), Локальный (только в браузере) или Гибридный
Разные настройки подходят для разных задач. Приложение-маркетплейс может требовать строгое доверие в 2 перехода, а социальная лента может выиграть от более широкой сети в 3 перехода с мягким затуханием.
Попробуйте сами
Лучший способ понять оценки доверия -- экспериментировать:
- Скачайте расширение и настройте свой аккаунт
- Откройте Playground и запросите оценки доверия для разных публичных ключей
- Попробуйте API в консоли браузера:
await window.nostr.wot.getTrustScore("pubkey...")
Наблюдайте, как оценки меняются при настройке параметров и исследовании различных частей графа Nostr.
Вопросы об оценке доверия? Найдите нас в Nostr или ознакомьтесь с документацией API.

