>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Unknown

Cómo funciona Nostr y por qué una red social sin un solo servidor funciona en absoluto

Casi todos los protocolos de redes sociales descentralizadas eventualmente se convierten en un monstruo. ActivityPub arrastra consigo pesados servidores Mastodon, donde una prohibición en un nodo te desconecta de la mitad de la audiencia. Las redes P2P como Scuttlebutt se encuentran con problemas de sincronización en dispositivos móviles y agotan la batería en medio día.

El creador del protocolo Nostr (que significa Notes and Other Stuff Transmitted by Relays) tomó el enfoque opuesto: descartó las blockchains, descartó los protocolos P2P complejos, y dejó solo criptografía y simples relays WebSocket.

La idea central

Nostr no es una red social lista para usar ni una aplicación independiente. Es una especificación para la interacción en red que cabe en un par de docenas de documentos cortos (NIPs, Nostr Implementation Possibilities).

No tienes un inicio de sesión, contraseña o vinculación de número de teléfono. Una cuenta es un par de claves criptográficas: privada (secp256k1) y pública. Tu clave pública sirve como tu identificador, y firmas cada acción con tu clave privada.

Cualquier mensaje, artículo, reacción o cambio de avatar se llama evento en la terminología del protocolo. Esencialmente, es un objeto JSON regular:

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

El cliente forma tal JSON, lo firma con tu clave privada, y lo envía a través de WebSocket a uno o varios servidores relay.

Cómo funcionan los relays

Un relay es un servidor tonto. No sabe quién eres y no le importa la lógica de tu aplicación. Sus tareas son:

  • Aceptar JSON sobre WebSocket.
  • Verificar la firma del autor.
  • Almacenar el evento en una base de datos (generalmente SQLite o PostgreSQL).
  • Distribuir el evento a los suscriptores que solicitaron un filtro por tu pubkey.

Si el propietario de un relay específico decide prohibirte, simplemente cambias tu cliente a cinco relays más. Tus suscriptores encontrarán tus publicaciones allí, porque la firma del autor sigue ahí, y el relay no puede falsificar el texto del mensaje sin la clave privada.

Al mismo tiempo, los relays pueden ser pagados (anti-spam a través de suscripción o micropagos), privados (solo para empleados de la empresa), o públicos.

El principal problema de ingeniería

En teoría, todo se ve genial: muchos relays, sin censura. En la práctica, surge una pregunta: ¿cómo sabe el cliente del lector a qué relays exactos el autor envía sus publicaciones?

Si te suscribes a 500 personas, hacer polling a miles de relays existentes es costoso. La comunidad adoptó el modelo Outbox (NIP-65). El autor publica una lista de relays a los que escribe (write relays). El suscriptor solicita esta lista y se conecta solo a ellos. Para optimización, los clientes encuentran intersecciones y mantienen conexiones abiertas a solo 10-15 servidores.

Qué construyen los desarrolladores en Nostr

Debido a la simplicidad de la especificación, la gente comenzó a construir cosas en Nostr mucho más allá del microblogging regular:

  • Clientes como Damus (iOS), Amethyst (Android), o Coracle (Web) para comunicación estilo Twitter.
  • Plataformas para artículos largos (NIP-23), donde las publicaciones se almacenan en Markdown.
  • Mensajería P2P con cifrado de mensajes usando la clave pública del compañero de conversación.
  • Sistemas de autenticación de sitios web (NIP-07), donde una extensión del navegador firma la solicitud en lugar de ingresar usuario y contraseña.

Existen librerías para trabajar con el protocolo en prácticamente cualquier stack: Go, Rust, TypeScript, Python, Dart. Escribir un cliente mínimo que se conecte a un relay y escuche un flujo de publicaciones puede literalmente hacerse en 30-40 líneas de código.

¿Vale la pena profundizar?

Nostr no es perfecto. Es difícil organizar la búsqueda sin indexadores de terceros, no hay eliminación de datos incorporada (una publicación eliminada puede permanecer para siempre en un relay terco), y la sincronización entre múltiples clientes a veces falla.

Pero si te interesa el diseño de red limpio y minimalista sin sobreingeniería, el repositorio definitivamente vale la pena explorar. Comienza con la especificación de eventos básicos en NIP-01, y puedes probar clientes listos para usar a través del catálogo en nostrapps.com.

Proyectos relacionados