Nostr WoT
API Backend

WoT Oracle

Indexador de alto desempenho para o grafo de seguidores do Nostr. Consultas em sub-milissegundos respondendo "quantos saltos separam esses dois usuários?"

O Que Faz

WoT Oracle sincroniza continuamente listas de seguidores (eventos Kind 3) de relays Nostr, construindo um grafo em memória de toda a rede social. Ele então fornece uma API REST para consultar distância social entre quaisquer duas pubkeys.

Exemplo: Se Alice segue Bob, e Bob segue Carol, então a distância de Alice para Carol é 2 saltos.

Desempenho

<1msLatência de consulta em cache
<50msLatência de consulta sem cache
10,000+Consultas por segundo
O(b^d/2)BFS Bidirecional

Endpoints da API

GET /distance

Consulte a distância social entre duas pubkeys.

http
GET /distance?from=PUBKEY1&to=PUBKEY2
json
{
  "from": "PUBKEY1",
  "to": "PUBKEY2",
  "distance": 2,
  "paths": 5,
  "mutual": false,
  "bridging_nodes": ["PUBKEY3", "PUBKEY4"]
}

POST /distance/batch

Consulte distâncias de uma pubkey para múltiplos alvos.

http
POST /distance/batch
Content-Type: application/json

{
  "from": "PUBKEY1",
  "targets": ["PUBKEY2", "PUBKEY3", "PUBKEY4"]
}
json
{
  "from": "PUBKEY1",
  "results": [
    { "to": "PUBKEY2", "distance": 1 },
    { "to": "PUBKEY3", "distance": 2 },
    { "to": "PUBKEY4", "distance": null }
  ]
}

GET /stats

Obtenha estatísticas sobre o grafo indexado.

json
{
  "total_pubkeys": 1250000,
  "total_follows": 8500000,
  "last_sync": "2024-01-15T10:30:00Z",
  "cache_hit_rate": 0.85
}

GET /health

Endpoint de verificação de saúde para monitoramento.

json
{ "status": "healthy", "uptime": 864000 }

Auto-Hospedagem

Execute sua própria instância do WoT Oracle. Controle total sobre sua infraestrutura de confiança.

Docker (Recomendado)

terminal
# Pull and run the image
$docker pull ghcr.io/nostr-wot/nostr-wot-oracle:v1.0.0
$
$docker run -d \
$ -p 8080:8080 \
$ -v wot-data:/app/data \
$ ghcr.io/nostr-wot/nostr-wot-oracle:v1.0.0

Docker Compose

terminal
$git clone https://github.com/nostr-wot/nostr-wot-oracle.git
$cd wot-oracle
$docker-compose up -d

Do Código Fonte (Rust 1.75+)

terminal
$git clone https://github.com/nostr-wot/nostr-wot-oracle.git
$cd wot-oracle
$cargo build --release
$./target/release/nostr-wot-oracle

Configuração

Configure via variáveis de ambiente:

VariávelPadrãoDescrição
RELAYSdamus, nos.lol, nostr.bandURLs de relays separadas por vírgula
HTTP_PORT8080Porta do servidor
DB_PATHwot.dbLocalização do banco de dados SQLite
RATE_LIMIT_PER_MINUTE100Limite de consultas por IP
CACHE_SIZE10000Entradas de cache LRU
CACHE_TTL_SECS300Expiração do cache (5 min)

Arquitetura

Armazenamento de Grafo

Grafo em memória para traversal rápido, apoiado por SQLite para persistência. Sincroniza continuamente dos relays Nostr configurados.

Busca de Caminhos

Busca em largura bidirecional (BFS) de ambos os extremos simultaneamente, encontrando-se no meio para complexidade O(b^(d/2)).

Cache

Cache LRU com tamanho e TTL configuráveis. A maioria das consultas atinge o cache para tempos de resposta em sub-milissegundos.

Limitação de Taxa

Limitação de taxa por IP protege o serviço de abuso. Limites configuráveis para diferentes cenários de implantação.

Instância Pública

Uma instância pública está disponível para desenvolvimento e testes:

https://wot-oracle.mappingbitcoin.com

Limitado a 100 requisições/minuto por IP. Para uso em produção, considere auto-hospedagem.

Código Aberto

Escrito em Rust. Licença MIT. Auto-hospede para sua comunidade ou contribua melhorias.