NIP-45 define como clientes pedem a relays para contar eventos que correspondem a um filtro sem transferir os próprios eventos correspondentes. Ele reutiliza a sintaxe de filtros da NIP-01, então um cliente geralmente pode transformar um REQ existente em um request COUNT com os mesmos filtros.

Como funciona

Um cliente envia um request COUNT com um subscription ID e um filtro:

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

O relay responde com uma contagem:

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

Isso evita baixar centenas ou milhares de eventos apenas para exibir um número. Se um cliente envia múltiplos filtros em um request COUNT, o relay os agrega em um único resultado, assim como múltiplos filtros em REQ são combinados com OR.

Contagem aproximada com HyperLogLog

Desde fevereiro de 2026, a NIP-45 suporta contagem aproximada com HyperLogLog, ou HLL, (PR #1561). Relays podem marcar um resultado como aproximado e, para deduplicação entre relays, retornar 256 registradores HLL junto da contagem:

["COUNT", "<subscription_id>", {"count": 4527, "hll": "<512-char hex string>"}]

HLL resolve um 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. Clientes mesclam valores HLL tomando o valor máximo em cada posição de registrador, o que dá uma estimativa para toda a rede sem baixar os eventos brutos.

A spec fixa a quantidade de registradores em 256 para interoperabilidade. Isso mantém o payload pequeno e torna o cache do lado do relay prático, porque todo relay computa o mesmo layout de registradores para o mesmo filtro elegível.

Notas de interoperabilidade

HLL só é definido para filtros com um atributo de tag, porque o offset usado para construir os registradores é derivado do primeiro valor tagueado no filtro. A spec também destaca um pequeno conjunto de consultas canônicas, incluindo reações, reposts, quotes, replies, comments e follower counts. Essas são as contagens mais fáceis para relays pré-computarem ou colocarem em cache.

Por que importa

Follower counts, reaction counts e reply counts são os principais casos de uso. Sem a NIP-45, clientes precisam confiar na visão local de um único relay ou baixar todos os eventos correspondentes e deduplicá-los localmente. NIP-45 mantém a contagem dentro do relay, e HLL torna contagens multi-relay viáveis sem transformar um relay em autoridade.


Implementações

  • nostream adicionou suporte a COUNT no PR #522, permitindo que clientes perguntem quantos eventos correspondem a um filtro sem buscá-los.

Fontes primárias:

Mencionado em:

Veja também: