Nostr rabbit hole
Introducción a Nostr
@gzuuus
Que es nostr?
- Notes and Other Stuff Transmitted by Relays / Notas y otras cosas transmitidas por los relays
- "Si una plataforma es un castillo(twitter, facebook, etc.), un protocolo es un río: nadie es su dueño, y todo el mundo es libre de nadar". Edward Snowden
- Nostr hace posibles redes sociales globales, descentralizadas abiertas y resistentes a la censura. Es nuevo y puede resultar confuso al inicio, pero también es genial.
- Nostr no es una plataforma, no es una empresa, no tiene un servidor central.
- A diferencia de Twitter o Facebook, Nostr es descentralizado. No hay servidores centrales ni empresas que controlen lo que puedes publicar y lo que otros pueden ver, no hay ninguna entidad central. Nostr es resistente a la censura y de código abierto. La licencia de Nostr es simplemente "Dominio Público".
- https://github.com/nostr-protocol/nostr
- Piensa en Nostr como una red social, que puede funcionar de forma similar a Twitter, en la que puedes crear publicaciones o "notas" (como un tweet), dar "me gusta" a publicaciones, seguir a personas, repostear publicaciones (como un retweet), intercambiar mensajes directos, e incluso hacer tips a través de lightning network⚡.
- El diseño de nostr esta basado en tres componentes esenciales, clientes, relays y eventos o notas. Cada usuario usa un cliente y estos se conectan a relays para recibir y enviar eventos.
- Los relays son servidores que solo guardan y reciben peticiones para servir eventos. Cualquier persona puede correr su relay o usar uno publico.
- Los clientes o apps son interfaces para conectarse a relays e interactuar con la red de nostr. Hay muchos casos de uso para los clientes. Social, mensajería, juegos, etc.
- Los clientes o apps son interfaces para conectarse a relays e interactuar con la red de nostr. Hay muchos casos de uso para los clientes. Social, mensajería, juegos, etc.
- La identidad en nostr o los perfiles, están basados en pares de llaves (publica y privada), como bitcoin, si tienes el control de tu llave privada puedes enviar mensajes o eventos e interactuar. La gente puede encontrarte e interactuar contigo a través de tu llave publica
- El protocolo define un conjunto de reglas que relays y clientes utilizan para comunicarse (como Bitcoin, el correo electrónico o Bittorrent). Nostr no es una aplicación ni una "plataforma", pero muchas aplicaciones o clientes pueden construirse sobre Nostr.
Como funciona?
Identidad o perfiles en nostr
- La identidad en nostr esta basada en pares de llaves, una privada y una publica, como en Bitcoin o PGP/GPG. Un par de llaves conforman una identidad o perfil con la que se podría empezar a publicar o interactuar en nostr.
- Puedes obtener o generar tantos pares de llaves como quieras, son ‘infinitas’ y no tienes que pasar ningún tipo de proceso kyc para generar nuevos pares de llaves.
- No hace falta estar conectado a internet para generar nuevas claves, puedes generarlas offline.
- No necesitas permiso de nadie para generar u obtener tus llaves
- Existen diferentes métodos para generar nuevas claves
- Con un gestor de llaves como alby o nos2x (recomendado)
- Con openssl openssl rand -hex 32
- Startr para generar tu par de llaves y almacenarlas en un archivo encriptado y portable
- Con rana o nostril para ‘minar’ llaves. (Ej. npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds)
- Una vez generadas tus nuevas llaves podrás utilizar cualquier cliente y empezar a agregar metadatos que quedaran asociados a tu llave publica. Ej. Foto de perfil, handle, nombre, nip05, LN address, etc. De esta forma cuando alguien busque tu clave publica en algún cliente también vera los metadatos asociados a ella
- Los metadatos asociados a tu llave púbica también conforman un evento, en este caso kind 0 para metadata y kind 3 para tu lista de contactos o follows
- Toda interacción representa un evento que envías o recibes de relays, seguir a una persona, escribir una nota, darle ‘me gusta’ a una nota, enviar un mensaje directo.
Llave publica
- Piensa en la clave pública como tu nombre de usuario (como tu @handle en Twitter) o un identificador único
- Aspecto de una llave publica:
- Diferentes formatos, misma llave
- Bech32: npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds
- HEX (antiguo): 40b9c85fffeafc1cadf8c30a4e5c88660ff6e4971a0dc723d5ab674b5e61b451
- Bech32: npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds
- Se puede hacer la conversion entre un formato y otro con algunas herramientas como damus.io/key/ , nostrcheck.me/converter/ , o Startr.
- Diferentes formatos, misma llave
- Para encontrar a otro usuario de Nostr, sólo tienes que buscarlo en el cliente de tu elección utilizando su clave pública. Una vez encontrado podrás seguirlo/interactuar
- También existen directorios que facilitan encontrar a personas:
Llave privada
Piensa en tu clave privada como tu contraseña o tu llave privada de bitcoin; NO LA COMPARTAS CON NADIE. Con ella podrás firmar los mensajes o notas e interactuar con el resto de la web
- Aspecto de una llave privada:
- Diferentes formatos
- Bech32: nsec1g56vl9475frrxtycwc8vkvnkvpxjv9k5q97t2eyfdesw93amkx4s6sqwls
- HEX(antiguo): 4534cf96bea246332c98760ecb3276604d2616d4017cb564896e60e2c7bbb1ab
- BIP39, mnemonic: early please toss later caught book raven attract attract flower outside scene sponsor arena exotic convince rely cattle fortune scrub cluster tape shop horror
- Bech32: nsec1g56vl9475frrxtycwc8vkvnkvpxjv9k5q97t2eyfdesw93amkx4s6sqwls
- Diferentes formatos
- Tu llave privada es algo sensible y debe de tratarse con las consideraciones necesarias. Usa un gestor de contraseñas para guardarla de forma segura o alguna otra alternativa como Startr para almacenarla de manera apropiada.
- Tu llave privada te dará acceso y privilegios para interactuar con tu perfil en nostr y los diferentes clientes. Sin embargo, si se trata de un cliente web es extremadamente recomendable (se podría decir obligatorio) usar un gestor de llaves como puede ser alby o nos2x. Estas son extensiones que instalas en tu navegador, con ellas tu llave privada estará segura y podrás usar cualquier cliente web de manera segura.
- Si no usas estos gestores de llaves en clientes web tu llave privada podría quedar comprometida.
Arquitectura
Que es un cliente de nostr?
- Clientes
- Para utilizar Nostr, debes usar un cliente. Hoy en día hay muchos y esto es solo el principio.
- Un cliente es una aplicación diseñada para interactuar con el protocolo de nostr, es simplemente una interfaz con la que puedes conectar con relays de tu elección, recibir actualizaciones de las cuentas que sigues (consultar tu feed), enviar notas, e interactuar. Hay clientes web, móvil, clientes nativos de escritorio, etc.
- Los clientes son como la aplicación de telegram o twitter por ejemplo.
- Para publicar algo en Nostr, escribes una nota en tu cliente favorito, lo firmas con tu llave privada y esta se enviará a tus relays configurados
- Nostr es un protocolo abierto y, por lo tanto, los clientes son inter-operables, esto quiere decir que puedes utilizar cualquier cliente para interactuar con la red, mientras estés conectado a los mismos relays siempre obtendrás la misma información (tu perfil, follows, followers, etc) independientemente del cliente que uses.
- El protocolo de nostr permite crear clientes para diferentes casos de uso. Por ejemplo para redes sociales como twitter, para comunicación o chat como telegram, para fotos y social como instagram por ejemplo, lector de rss, etc.
- Nostr tiene el potencial de sustituirlos a todos
- Clientes recomendados:
Notas, eventos o mensajes
- Se denominan notas, eventos o mensajes a todas las publicaciones o interacciones que suceden en nostr.
- Toda interacción en nostr representa un nuevo evento.
- 💡Toda interacción representa un evento que envías o recibes de relays, seguir a una persona, escribir una nota, darle ‘me gusta’ a una nota, enviar un mensaje directo.
- Los eventos a nivel de protocolo están construidos en formato JSON, un lenguaje ampliamente utilizado en el mundo de la programación y comunicación en protocolos web como las APIs.
- El formato JSON esta basado en una estructura {Clave:Valor} y puede almacenar diferentes campos dentro de un mismo registro
- Los eventos de nostr tienen diferentes campos que conforman su estructura y determinan de que tipo de evento se trata (nota, ‘me gusta’, follow, etc.)