O primeiro ponto é que por mais que isso esteja escrito aqui, Nostr não é exatamente uma rede social, é um protocolo que permite a troca de “notas e outras coisas” entre clientes por meio de retransmissores (Notes and Other Stuff Transmitted by Relays). Claro que quando organizamos isso por meio de clientes podemos facilmente apresentar essas retransmissões como uma rede social.

Clientes são no geral aplicações web que se comunicam via websocket com os diversos relays que existem por ai (inclusive parece bem fácil publicar um, mas no momento não é o foco). Provavelmente a maioria dos clientes não precisa fazer qualquer tipo de requisição a um servidor próprio, por isso os clientes web são um código javascript rodando no seu navegador que montam a apresentação do conteúdo com html e css.

Tendo apresentado esse ponto podemos verificar alguns problemas que podem acontecer:

1 - Dependendo de como o cliente é implementado podemos ter a apresentação de uma mesma informação de formas ligeiramente diferentes, seja por uma questão de organização ou até mesmo de perda de funções entre um cliente e outro;

2 - Notificações não parecem ser algo possível, a menos que coloquem um servidor central que ouça os mesmos relay que seu cliente e monte o processo de notificação para ele;

3 - Aparentemente os clientes atuais ainda não consiguiram uma forma eficiente de ouvir todas as notas e exibir isso de uma forma fluida nos clientes, inclusive parece não haver em muitos deles um mínimo de cache. Ex: as vezes vejo meu perfil e ele começa a montar todos os meus posts, se vou para outra tela e volto para o perfil ele começa a reconstruir o perfil de novo. As vezes é rápido, as vezes não;

Mas tirando os pequenos problemas e ainda mais por ser algo recente, estou gostando bastante de testar vários clientes e acompanhar o que essa galera está falando por lá. As conversas são todas livres, sem qualquer tipo de anúncio, bloqueio ideológico ou qualquer outra restrição. Claro que para segurança das pessoas a maioria dos relays deve fazer algum tipo de moderação ainda, mas isso não deve ser um problema, tendo em vista que se você considerar qualquer restrição em algum relay a um post seu como incorreta ou injusta você pode simplesmente usar outro, ou até mesmo publicar um seu, pq não?

Aqui uma lista de alguns clientes que eu uso:

  • Snort
  • Iris
  • Hamstr
  • NostrGram
    Obs: NostrGram apesar de ter uma interface bem simples tem vários modos de exibição e é muito funcional.

Acredito que o Iris seja o cliente mais fácil de se usar, se você abrir o link do meu perfil por exemplo carloshmbtn ele sequer vai te pedir qualquer coisa. Vai gerar suas chaves (privada e pública, onde a pública seria um identificador para você passar para outras pessoas por exemplo, e a privada seria como sua senha, então guarde em local seguro). Depois de acessar vc pode editar seu perfil clicando onde ficaria sua foto, indo nos 3 pontos e apertando em editar perfil. Você pode também copiar suas chaves acessando Configurações no menu lateral.

Falando de uma parte mais técnica, parece simples começar seu próprio cliente. Claro que dependendo do número de funções e o uso de vários relays pode dar um certo trabalho, mas olhe como seria um pedido de notas para um relay:

const ws = new WebSocket("wss://relay.snort.social");

ws.onopen = (event) => {
    ws.send('["REQ", "my_test", {"authors": ["ce4446d03e99590cc48ca58ecbbf476f161927cd28b96d7459466f420581579e"]}]');
};
ws.onmessage = (event) => {

};

A explicação de como isso funciona e o que é cada campo você pode ver em:
Nostr Protocol

Por meio desse mesmo código acima eu cloquei aqui abaixo meus últimos posts usando o Nostr. Claro que é algo muito simples, ele exibe a parte de texto e coloca um <img> nos links que ele acha de imagem. Também não mostra likes, comentários, etc.

Música...
Carregando...