WoT Oracle
Hochleistungs-Indexer für den Nostr-Follow-Graphen. Sub-Millisekunden-Abfragen, die beantworten: "Wie viele Hops trennen diese beiden Benutzer?"
Was es macht
WoT Oracle synchronisiert kontinuierlich Follow-Listen (Kind-3-Events) von Nostr-Relays und erstellt einen In-Memory-Graphen des gesamten sozialen Netzwerks. Es stellt dann eine REST-API zur Abfrage der sozialen Distanz zwischen beliebigen pubkeys bereit.
Beispiel: Wenn Alice Bob folgt und Bob Carol folgt, dann beträgt die Distanz von Alice zu Carol 2 Hops.
Leistung
API-Endpunkte
GET /distance
Abfrage der sozialen Distanz zwischen zwei pubkeys.
GET /distance?from=PUBKEY1&to=PUBKEY2{
"from": "PUBKEY1",
"to": "PUBKEY2",
"distance": 2,
"paths": 5,
"mutual": false,
"bridging_nodes": ["PUBKEY3", "PUBKEY4"]
}POST /distance/batch
Abfrage der Distanzen von einem pubkey zu mehreren Zielen.
POST /distance/batch
Content-Type: application/json
{
"from": "PUBKEY1",
"targets": ["PUBKEY2", "PUBKEY3", "PUBKEY4"]
}{
"from": "PUBKEY1",
"results": [
{ "to": "PUBKEY2", "distance": 1 },
{ "to": "PUBKEY3", "distance": 2 },
{ "to": "PUBKEY4", "distance": null }
]
}GET /stats
Statistiken über den indizierten Graphen abrufen.
{
"total_pubkeys": 1250000,
"total_follows": 8500000,
"last_sync": "2024-01-15T10:30:00Z",
"cache_hit_rate": 0.85
}GET /health
Health-Check-Endpunkt zur Überwachung.
{ "status": "healthy", "uptime": 864000 }Self-Hosting
Betreiben Sie Ihre eigene WoT Oracle Instanz. Volle Kontrolle über Ihre Vertrauensinfrastruktur.
Docker (Empfohlen)
Docker Compose
Aus dem Quellcode (Rust 1.75+)
Konfiguration
Konfiguration über Umgebungsvariablen:
| Variable | Standard | Beschreibung |
|---|---|---|
RELAYS | damus, nos.lol, nostr.band | Kommagetrennte Relay-URLs |
HTTP_PORT | 8080 | Server-Port |
DB_PATH | wot.db | SQLite-Datenbank-Speicherort |
RATE_LIMIT_PER_MINUTE | 100 | Abfragedrosselung pro IP |
CACHE_SIZE | 10000 | LRU-Cache-Einträge |
CACHE_TTL_SECS | 300 | Cache-Ablaufzeit (5 Min.) |
Architektur
Graph-Speicher
In-Memory-Graph für schnelle Traversierung, gesichert durch SQLite für Persistenz. Synchronisiert kontinuierlich von konfigurierten Nostr-Relays.
Pfadfindung
Bidirektionale Breitensuche (BFS) von beiden Endpunkten gleichzeitig, die sich in der Mitte treffen, für O(b^(d/2))-Komplexität.
Caching
LRU-Cache mit konfigurierbarer Grösse und TTL. Die meisten Abfragen treffen den Cache für Sub-Millisekunden-Antwortzeiten.
Rate Limiting
Pro-IP-Rate-Limiting schützt den Dienst vor Missbrauch. Konfigurierbare Limits für verschiedene Einsatzszenarien.
Öffentliche Instanz
Eine öffentliche Instanz ist für Entwicklung und Tests verfügbar:
https://wot-oracle.mappingbitcoin.comBegrenzt auf 100 Anfragen/Minute pro IP. Für den Produktiveinsatz empfehlen wir Self-Hosting.
Open Source
Geschrieben in Rust. MIT-lizenziert. Hosten Sie es selbst für Ihre Community oder tragen Sie Verbesserungen bei.