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
Endpoints da API
GET /distance
Consulte a distância social entre duas pubkeys.
GET /distance?from=PUBKEY1&to=PUBKEY2{
"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.
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
Obtenha estatísticas sobre o grafo indexado.
{
"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.
{ "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)
Docker Compose
Do Código Fonte (Rust 1.75+)
Configuração
Configure via variáveis de ambiente:
| Variável | Padrão | Descrição |
|---|---|---|
RELAYS | damus, nos.lol, nostr.band | URLs de relays separadas por vírgula |
HTTP_PORT | 8080 | Porta do servidor |
DB_PATH | wot.db | Localização do banco de dados SQLite |
RATE_LIMIT_PER_MINUTE | 100 | Limite de consultas por IP |
CACHE_SIZE | 10000 | Entradas de cache LRU |
CACHE_TTL_SECS | 300 | Expiraçã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.comLimitado 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.