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 😏).
💻 ¿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:
-
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
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
ynsec
.
🔖 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:
- NIP-01: Protocolo básico de publicación y perfil
- NIP-02: Lista de seguidores
- NIP-05: Identificadores basados en DNS (ej: satoshi@bitcoin.org)
- NIP-17: Mensajes privados
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)