Nostr WoT

Расстояния в сети доверия

По умолчанию WoT обращается к Oracle. getDistance возвращает число или null; isInMyWoT возвращает логическое значение. getDetails предоставляет число переходов, количество путей и необязательные сведения о промежуточных связях и взаимных подписках. Используйте корректные открытые ключи из 64 шестнадцатеричных символов.

Переход на @nostr-wot/wot 1.0.0

В версии 1.0.0 удалены обнаружение расширения, методы оценки доверия и useTrustScore. Используйте useWoT или useIsInWoT и читайте поля возвращаемых объектов. Для локальных запросов передайте WoTLocalSource, например WotGraph.asWoTSource() из @nostr-wot/wot/graph. Только getDistance, isInMyWoT и filterByWoT используют этот источник; остальные методы по-прежнему обращаются к Oracle.

Пример локального графа

Загрузите и соберите локальный граф перед передачей его источника в WoT. Пример React получает подготовленный граф и использует useIsInWoT; useWoT также запрашивает getDetails у Oracle. У @nostr-wot/wot/graph есть собственный API getScore, отдельный от удалённого API оценки WoT.

терминал
$npm install @nostr-wot/wot@3.0.0 nostr-wot-sdk@3.0.0 nostr-tools
typescript
import { WotGraph } from "@nostr-wot/wot/graph";
import { WoT } from "@nostr-wot/wot";

async function prepareGraph(myPubkey: string, targetPubkey: string) {
  const graph = new WotGraph({
    namespace: "my-app",
    relays: ["wss://relay.damus.io", "wss://nos.lol"],
  });
  await graph.load();
  await graph.crawl(myPubkey, { maxDepth: 2 });
  const wot = new WoT({ source: graph.asWoTSource(), maxHops: 2 });
  const distance = await wot.getDistance(targetPubkey);
  const inWoT = await wot.isInMyWoT(targetPubkey);
  return { graph, distance, inWoT };
}
tsx
"use client";
import type { WotGraph } from "@nostr-wot/wot/graph";
import { NostrSdkProvider, useIsInWoT } from "nostr-wot-sdk/react";

function FollowBadge({ pubkey }: { pubkey: string }) {
  const { inWoT, loading, error } = useIsInWoT(pubkey, { maxHops: 2 });
  if (loading || error || !inWoT) return null;
  return <span>{pubkey}</span>;
}

function LocalTrust({ graph, pubkey }: { graph: WotGraph; pubkey: string }) {
  return (
    <NostrSdkProvider wot={{ enabled: true, options: { source: graph.asWoTSource() } }}>
      <FollowBadge pubkey={pubkey} />
    </NostrSdkProvider>
  );
}