NIP-45 define como aplicações pedem a relays a contagem de eventos que correspondem a um filtro sem transferir os eventos em si. A aplicação envia mensagem COUNT com a mesma sintaxe de filtro que REQ, e o relay responde com a contagem.

Como Funciona

A aplicação envia requisição COUNT com ID de subscrição e filtro:

["COUNT", "<subscription_id>", {"kinds": [7], "#e": ["<event_id>"]}]

O relay responde com a contagem:

["COUNT", "<subscription_id>", {"count": 238}]

Isso evita baixar centenas ou milhares de eventos apenas para exibir um número.

Contagem Aproximada HyperLogLog

Em fevereiro de 2026, NIP-45 passou a suportar contagem aproximada HyperLogLog (HLL) (PR #1561). Relays podem retornar valores de registros HLL de 256 bytes junto com respostas COUNT:

["COUNT", "<subscription_id>", {"count": 4527, "hll": "<base64 encoded 256 bytes>"}]

HLL resolve problema fundamental: contar eventos distintos em múltiplos relays. Se o relay A reporta 50 reações e o relay B reporta 40, o total não é 90 porque muitos eventos existem em ambos os relays. Registros HLL de múltiplos relays podem ser mergeados tomando o valor máximo em cada posição de registro, deduplicando automaticamente pela rede.

Com 256 registros, o erro padrão é aproximadamente 5,2%. Correções HyperLogLog++ melhoram a precisão em cardinalidades pequenas abaixo de ~200 eventos. Até dois eventos de reação consomem mais largura de banda que o payload HLL de 256 bytes, tornando isso eficiente em qualquer contagem acima de números triviais.

A spec fixa a quantidade de registros em 256 por interoperabilidade entre todas as implementações de relay.

Casos de Uso

Métricas sociais (contagens de seguidores, reações, reposts) são a aplicação principal. Sem HLL, a opção é consultar relay único “confiável” (centralizando os dados) ou baixar todos os eventos de todos os relays e deduplicar localmente (desperdiçando largura de banda). HLL fornece contagens cross-relay aproximadas com 256 bytes de overhead por relay.


Fontes primárias:

Mencionado em:

Veja também: