>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Unknown

Como o Nostr Funciona e Por Que uma Rede Social Sem um Único Servidor Funciona de Forma Alguma

Quase todo protocolo de rede social descentralizada eventualmente se transforma em um monstro. O ActivityPub arrasta consigo servidores pesados do Mastodon, onde um banimento em um nó te desconecta de metade da audiência. Redes P2P como o Scuttlebutt enfrentam problemas de sincronização em dispositivos móveis e consomem a bateria em meio dia.

O criador do protocolo Nostr (que significa Notes and Other Stuff Transmitted by Relays) adotou a abordagem oposta: abandonou blockchains, abandonou protocolos P2P complexos, e deixou apenas criptografia e relays WebSocket simples.

A Ideia Central

O Nostr não é uma rede social pronta ou um aplicativo independente. É uma especificação para interação em rede que cabe em algumas dezenas de documentos curtos (NIPs, Nostr Implementation Possibilities).

Você não tem login, senha ou número de telefone vinculando. Uma conta é um par de chaves criptográficas: privada (secp256k1) e pública. Sua chave pública serve como seu identificador, e você assina cada ação com sua chave privada.

Qualquer mensagem, artigo, reação ou mudança de avatar é chamado de event na terminologia do protocolo. Essencialmente, é um objeto JSON comum:

{
  "id": "4376c65d2f23493d6050d0c393d01f50252a607d58eab305699c6811ea70017d",
  "pubkey": "9fe415e4177d13521649f80e4293097b540e555d34a14f4e2454b62412f93008",
  "created_at": 1672531199,
  "kind": 1,
  "tags": [],
  "content": "Привет, это тестовый пост в Nostr!",
  "sig": "250e938424f...подпись...4e8f9b"
}

O cliente forma esse JSON, assina com sua chave privada e envia via WebSocket para um ou vários servidores relay.

Como os Relays Funcionam

Um relay é um servidor burro. Ele não sabe quem você é e não se importa com a lógica do seu aplicativo. Suas tarefas são:

  • Aceitar JSON via WebSocket.
  • Verificar a assinatura do autor.
  • Armazenar o evento em um banco de dados (geralmente SQLite ou PostgreSQL).
  • Distribuir o evento para assinantes que solicitaram um filtro pela sua pubkey.

Se o dono de um relay específico decidir te banir, você simplesmente muda seu cliente para cinco outros relays. Seus assinantes encontrarão seus posts lá, porque a assinatura do autor ainda está lá, e o relay não pode falsificar o texto da mensagem sem a chave privada.

Ao mesmo tempo, relays podem ser pagos (anti-spam via assinatura ou micropagamentos), privados (apenas para funcionários da empresa), ou públicos.

O Principal Problema de Engenharia

Em teoria, tudo parece ótimo: muitos relays, sem censura. Na prática, surge uma pergunta: como o cliente do leitor sabe a quais relays exatos o autor envia seus posts?

Se você assina 500 pessoas, fazer polling de milhares de relays existentes é caro. A comunidade adotou o modelo Outbox (NIP-65). O autor publica uma lista de relays onde escreve (write relays). O assinante solicita essa lista e conecta apenas a eles. Para otimização, os clientes encontram interseções e mantêm conexões abertas com apenas 10-15 servidores.

O Que Desenvolvedores Constroem no Nostr

Devido à simplicidade da especificação, as pessoas começaram a construir coisas no Nostr muito além do microblogging comum:

  • Clientes como Damus (iOS), Amethyst (Android) ou Coracle (Web) para comunicação no estilo do Twitter.
  • Plataformas para artigos longos (NIP-23), onde posts são armazenados em Markdown.
  • Messengers P2P com criptografia de mensagens usando a chave pública do parceiro de conversa.
  • Sistemas de autenticação de sites (NIP-07), onde uma extensão do navegador assina a requisição ao invés de inserir login e senha.

Bibliotecas para trabalhar com o protocolo existem para praticamente qualquer stack: Go, Rust, TypeScript, Python, Dart. Escrever um cliente mínimo que conecta a um relay e ouve um stream de posts pode literalmente ser feito em 30-40 linhas de código.

Vale a Pena Investigar Mais

O Nostr não é perfeito. É difícil organizar busca sem indexadores de terceiros, não há exclusão de dados integrada (um post deletado pode permanecer para sempre em um relay teimoso), e a sincronização entre múltiplos clientes às vezes falha.

Mas se você está interessado em design de rede limpo e minimalista sem overengineering, o repositório definitivamente vale a pena explorar. Comece com a especificação de eventos básicos no NIP-01, e você pode experimentar clientes prontos através do catálogo em nostrapps.com.

Projetos relacionados