quoting
naddr1qp…99gyQuem escreve quer saber se está sendo lido. Não por vaidade, mas porque é assim que se decide o próximo texto, o melhor horário para publicar ou se aquele tema merece continuação e claro, se continua a escrever. Nas plataformas centralizadas, essa resposta vem pronta. No Nostr, até hoje, não existia um jeito comum de fazer.
Hoje, cada cliente que quer mostrar visualizações conta sozinho, no próprio servidor e do próprio jeito. O resultado é um número diferente em cada app. Nenhum deles é verificável, e todos somem se o app sair do ar.
Por isso propus o NIP-F8, um contador de visitas no relay:
- Proposta do NIP: nostr-protocol/nips#2532
- Implementação no nostr-rs-relay: robersonfox/nostr-rs-relay, branch
feat/visit-counterComo funciona
1. O cliente avisa que houve uma visita.\ Ao abrir um artigo, o app envia ao relay um evento efêmero, de kind 20918, com uma tag
aapontando para o conteúdo. O relay não guarda o evento, só conta.2. O relay conta com regras públicas. Uma visita entra na conta da hora cheia (UTC) apenas se o visitante não é o autor e se a mesma chave e o mesmo IP ainda não visitaram aquele conteúdo naquela hora. O relay responde
OKsempre, para ninguém sondar quem já foi contado.3. O relay publica só o resultado, assinado. Ele mantém um contador por conteúdo e por hora e publica eventos de kind 30918, assinados com a própria chave: um com o total diário, hora a hora, e outro com o total geral.
Privacidade: o relay só entrega os eventos 30918 a uma conexão autenticada pelo NIP-42 com a chave do autor. Ninguém mais vê os seus números.
Confiança: o relay anuncia a chave de assinatura no campo
selfdo NIP-11. O cliente ignora estatísticas assinadas por qualquer outra chave.Instalando no seu relay
A implementação é uma branch do nostr-rs-relay e roda com SQLite. Para compilar:
git clone -b feat/visit-counter https://github.com/robersonfox/nostr-rs-relay cd nostr-rs-relay cargo build --releaseO relay assina as estatísticas com uma chave própria, e sem ela o contador não liga. Qualquer chave Nostr serve, em hex ou nsec; para gerar uma nova:
openssl rand -hex 32No
config.toml, ligue a autenticação NIP-42 e o contador:[authorization] nip42_auth = true [visits] enabled = true secret_key = "<chave gerada acima>" # Se o relay estiver atrás de um proxy, informe o cabeçalho com o IP real: [network] remote_ip_header = "cf-connecting-ip"Ao subir, o relay migra o banco sozinho e passa a anunciar a chave no NIP-11:
curl -s -H 'Accept: application/nostr+json' https://relay.exemplo.com/ | jq .selfComo ajudar
- Desenvolvedores de clientes: enviem o evento 20918 ao abrir um artigo, como no primeiro exemplo.
- Operadores de relay: instalem a branch e testem.
- Escritores: peçam isso aos apps que vocês usam.
- Todos: comentem e apoiem a proposta no PR #2532.
Métricas de leitura são uma das razões pelas quais escritores continuam presos às plataformas centralizadas. Se o Nostr quer ser a casa de quem escreve, precisa oferecer isso de um jeito aberto: um número que qualquer cliente pode pedir, que qualquer relay pode implementar e que pertence só a quem escreveu.
Venha fazer parte do The Hakon, o maior blog NOSTR de língua portuguesa
tokio on Nostr: Um NIP para contar visitas, bem pensado. ...
Um NIP para contar visitas, bem pensado.