DEV Community

Cover image for Adiós a Web 3. Hola Web 5
Jona
Jona

Posted on • Originally published at gist.github.com

Adiós a Web 3. Hola Web 5

Un protocolo abierto, anónimo y resistente a la censura capaz de cambiar las reglas de juego en cómo interactuamos con las plataformas sociales.

Introducción a ¿qué carajo es Nostr?

Por sus siglas traducidas: Notas y otras cosas transmitidas por relays, Nostr no es más que un sencillo protocolo de comunicación capaz de generar los cimientos para la próxima revolución social.

🏗️ Protocolos: Arquitectura

Para poder entender Nostr tendremos que hacer una comparativa de los elementos mas importantes dentro de los protocolos que más utilizamos (o espero que usen 😏).

Protocolos: Arquitectura

💻 ¿Qué es un relay de Nostr?

Un relay es un servidor, alojado por ti o por otra persona que cualquiera puede montar y/o gestionar. Existen relays públicos y de pago. A su vez, un relay funciona como base de datos en la cual guardan y reenvían notas.

Los relays usan el protocolo de websocket (wss://...) para conectarse con los clientes. Esto genera una comunicación asíncrona y canales de comunicación bidireccionales que se mantienen abiertos.

Un relay es “tonto”. Tanto la firma como la creación de las notas sucede de lado del cliente.

📱 ¿Qué es un cliente de Nostr?

Un cliente de Nostr es una aplicación diseñada para interactuar con el protocolo de Nostr. Podés conectarte a un cliente mediante web, mobile, clientes de escritorios, etc.

Debido a que Nostr es un protocolo abierto, los clientes buscan ser lo mas interoperables posibles. Prueba algunos!

Web:

Androd:

iOS:

📋 ¿Qué es un evento de Nostr?

Los eventos, o también denominado notas, son toda interacción que genere el usuario del lado del cliente. Todo evento es enviado a los relays que el usuario tenga conectado.

Los eventos a nivel protocolo están construidos en formato JSON, un lenguaje utilizado para el manejo de estructuras de datos a nivel API. Además, tienen una estructura particular que determina el tipo de evento que se esta intentando transmitir.

📝 Estructura de un evento

Debido a que estamos usando un protocolo primo hermano de Bitcoin, podemos encontrar que la estructura de un evento es algo similar a una transacción:

Estructura de un evento

  • id: identificador de 32 bytes con el que podremos identificar nuestras notas en otros relays.
  • created_at: fecha de creación en formato unix.
  • tags: array de etiquetas, su formato depende de su categoría.
  • pubkey: nuestra llave publica de 32 bytes en formato hex.
  • sig: firma de 64 bytes.
  • content: contenido arbitrario en formato string.
  • kind: categoría en formato numérico.

🏪 Aplicaciones centralizadas

Aplicaciones centralizadas

Si bien es lo que conocemos, y como hemos estado trabajando todo este tiempo. La realidad es que las aplicaciones centralizadas tienen 3 grandes problemas:

  • Hackeos: debido a que se centraliza la información en un único lugar, existe un solo vector de ataque y, en caso de conseguirse, podría interrumpir cualquier comunicación.
  • Políticas de uso: en base a lo anteriormente comentado, podemos dar por sentado que nuestras cuentas no son realmente nuestras. No podemos trasladar nuestros datos entre plataformas como Twitter a Instagram (por ejemplo). Debido a esto, estamos limitados por los términos y políticas de uso.
  • Censura de gobiernos: esta es una realidad a la cual no podemos escapar (hasta ahora). Noticias recientes como que Brazil suspende la red social X/Twitter o Maduro quiere regular Instagram y Tiktok en Venezuela hace que se intente censurar la opinion publica o plataformas de comunicación “libres”.

Pero si Nostr es primo hermano de Bitcoin, y Bitcoin nos trae la premisa de que busca separar dinero de estado quitando al mayor intermediario del medio, ¿por que nosotros no hacemos lo mismo?

🔥 ¿Y si eliminamos los intermediarios?

Para lograr esto necesitaríamos una forma de identificarnos dentro de nuestro protocolo descentralizado. Como en Bitcoin, esto lo podemos resolver con un par de llaves:

🔓 Llave publica: piensa en tu llave publica como el usuario de una red social. Es un identificador con el que otras personas van a poder encontrarte. Ambos formatos mostrados corresponden al usuario de quien esta escribiendo este post:

  • Hexadecimal: cee287bb0990a8ecbd1dee7ee7f938200908a5c8aa804b3bdeaed88effb55547
  • NPUB (Nostr Pub Key): npub1em3g0wcfjz5we0gaaelw07fcyqys3fwg42qykw774mvgala424rsl26ytm

🔐 Llave privada: piensa en tu llave privada como tu contraseña o tu semilla de Bitcoin. NO LA COMPARTAS CON NADIE. Una vez vulnerada, no hay vuelta atrás y tocará generar una nueva. Podemos encontrarlo en varios formatos:

  • Hexadecimal: 3b1b6e09236ab49050079fffced663a3b09d610a4c5beb895cda5c7f53f6d1f2
  • NSEC (Nostr Secret Key): nsec18vdkuzfrd26fq5q8nllua4nr5wcf6cg2f3d7hz2umfw875lk68eqms52y6
  • BIP39 (semilla): early please toss later caught book raven attract attract flower outside scene

Algunas consideraciones:

  • Podés generar la cantidad de llaves que desees, son “infinitas”.
  • No se necesita internet para generar un par de llaves.
  • Utiliza gestores de claves como: GetAlby o Nos2x.
  • Profesionales de UX: Si bien el formato hexadecimal es el más primitivo, la realidad es que para una rápida diferenciacion mostrarlo en formato npub y nsec.

🔖 NIP

Los NIPs, o Posibles Implementaciones en Nostr, definen la estructura de los eventos o notas. Entre ellos podemos encontrar algunas implementaciones de todo sistema social:

Ejemplos de uso:

En base a ejemplo de aplicaciones sociales, ¿cómo podríamos utilizar estos NIP?

Twitter.com

Telegram.org

Cafecito.app

LaWallet.io

👀 Entonces, ¿por qué Web 5?

Porque en lo que va del articulo no hemos hablado de crypto, blockchain o token. Únicamente de datos, datos que son resilientes, incensurables, transparentes y libre.

Debido a que estamos hablando a nivel protocolo, existen diferentes tipos de implementaciones. No aprendas un nuevo lenguaje para empezar a construir, utiliza el que ya conoces! 🚀

Top comments (0)