Guía completa de Nostr para principiantes

Ishi
12 min readJan 6, 2023

--

Índice de contenido

1. Se explica Qué es Nostr en términos sencillos.

2. Proporciono una guía práctica — mis primeros pasos con Nostr

3- Validación en base a dominio (NIP05) en Nostr

1- ¿Qué es Nostr?

Nostr es un protocolo de comunicación simple y de código abierto, Open Source (FOSS), similar a protocolos existentes como: SMTP, FTP, etc. Tiene como propósito o pretende ser resistente a la censura, objetivo que lidera Bitcoin.

Al ser un protocolo de comunicación, se pueden crear muchas cosas sobre él, desde aplicaciones de mensajería similares a WhatsApp, Telegram, Redes Sociales similares a Twitter, y muchas aplicaciones más, inclusive clientes de correo electrónico como Gmail.

Nostr encuentra su balance en algún punto entre lo centralizado y descentralizado. El protocolo no depende de blockchain (demuestra que no se requiere de blockchain para todo), ni de esquemas de consenso distribuido, tampoco de inicios de sesión, ni de criptomonedas o token, y menos de un servidor central o de esquemas P2P.

Fecha de creación y creador

Nostr fue creado por @fiatjaf, es developer y bitcoiner, originario de Brasil, también es el creador del Bot de Telegram LNTXBOT y de la especificación del estándar LNURL de Lightning, el protocolo fue lanzado a producción en el año *2020.

Popularidad del Protocolo

El protocolo comenzó a ser popular en diciembre de 2022, cuando @jack Ex CEO de @twitter lanzo una iniciativa para crear una red social descentralizada resistente a la censura.

En los comentarios al twitt se le sugirió a Jack darle una revisada al protocolo Nostr y apoyarlo. Unos días más tarde Jack anunció su apoyo con una donación de 14 Bitcoin al proyecto.

Activamente se han sumado al desarrollo del proyecto diversos developers, dentro de los cuales podemos destacar entre otros a:

William Casarin @jb55 quien está liderando el trabajo para un cliente de IOS llamado @damusapp

Ricardo Arturo Cabral Mejía quien en el mes de octubre junto a Lunaticoin explicó en español sobre el protocolo, lo puedes ver en YouTube.

En Nostr la comunicación se da entre clientes (Apps) y servidores o (relays), donde cada usuario utiliza un cliente (Apps) para conectarse a múltiples relays para intercambiar mensajes.

La idea es que los usuarios NO usen los mismo relays, aquí viene el tema de la prevención de la censura, pues si un relay te censura (banea), puedes moverte a otro.

¿Se abren cuentas en Nostr?

Una identidad (cuenta) en Nostr está compuesta por una llave pública (PubKey) y una llave privada. Aquí no hay contraseñas ni nombres de usuarios únicos, tampoco hay e-mail, ni nada de eso.

Una de las cosas más interesantes de Nostr es que con tus llaves, tú te puedes llevar tu contenido a cualquier cliente, el contenido publicado te pertenece solo a ti, nadie de lo puede quitar o censurar.

El protocolo utiliza una especie de criptografía similar a la que ocurre cuando se utiliza una firma digital de tipo PGP, también utiliza firmas Schnorr, como en Bitcoin.

La evolución (mejora) de Nostr se da por medio de los NIPs (Nostr Implementation Possibilities) que poco a poco van extendiendo y mejorando el protocolo, asegurando compatibilidad e interoperabilidad, bajo consenso entre los desarrolladores.

Puedes ver todos los NIP’s de Nostr aquí. https://github.com/nostr-protocol/nips

Resistencia a la censura

La resistencia a la censura en Nostr se obtiene enviando el contenido propio a más de un relays, ya que si uno deja de operar, te censura o rechaza, sigues teniendo el poder de comunicarte a través de otros.

En Nostr cada usuario es dueño irrevocable del contenido que publica ya que, el mismo es inmutable y firmado criptográficamente. Un relay no tiene la capacidad de modificar el contenido de los usuarios, por lo que cada quien recibe la información tal cual fue enviada, por el momento un mensaje publicado en Nostr no puede ser eliminado, sí puede ser sustituido.

A diferencia de otras plataformas, Nostr NO promueve que te ates a una única huella digital (identidad). Puedes tener las identidades que quieras, pudieras tener una identidad nueva para cada uno de tus mensajes.

¿Qué son los Relays?

Un relays básicamente viene siendo como un servidor web, no funcionan como los nodos de Bitcoin (no confundir). Esta es la parte de Nostr que tiende a la centralización, se podrán montar relays con intenciones privadas y ellos (dueños) tendrán la potestad de poder decidir como lo van administrar, inclusive la potestad de banear a usuarios o mensajes, pero tu como usuarios dejas ese relay y te pegas a otro, así de simple.

Cualquiera con el conocimiento base para correr un Servidor Web, técnicamente podría operar un relay. Es posible correr un relay en un ordenador local y hacerlo público a través de Tor o I2P. Los requisitos de hardware y espacio para un relay a la fecha son mínimos.

A la fecha (enero 2023) de este artículo hay 90 relays desplegados, los puede ver aquí. https://nostr.watch

Lenguaje de programación de Nostr

Nostr no especifica lenguajes de programación por ser un protocolo, puedes utilizar cualquier lenguaje o base de datos, Nostr permite a los desarrolladores total libertad a la hora de diseñar clientes e implementar un relays. Esto ha atraído desarrolladores y entusiastas de diversos ámbitos.

¿Qué son los clientes?

Básicamente son aplicaciones. A diferencia de las plataformas tradicionales, los clientes no poseen la mayor parte de la lógica de programación, pero en Nostr, los relays son “torpes” y casi toda la lógica la deben aplicar los clientes o aplicaciones. 👇

En enero de 2022, muchos clientes no están tan avanzados y presentan muchos problemas al ser utilizados, recuerden que es un protocolo que recién se está desarrollando, a continuación hago mención de los clientes más comunes a la fecha, hay clientes tipo: Telegram, Red Social, etc. Para IOS, Android, Web.

Uno de los clientes más avanzados para IOS a la fecha es: Damusapp es una aplicación para IOS, desarrollada William Casarin @jb55 es un estilo Red Social como Twitter, tanto así que el UX se ve bastante atractivo, aquí el ejemplo del perfil de Jack.

Hay mucho más de que hablar, pero la siguiente parte del artículo, la dedicaré como una pequeña guía para novatos, para que pueden comenzar a utilizar clientes de Nostr, crear sus llaves y comenzar a interactuar con el protocolo, manos a la obra.

2- Guía práctica — mis primeros pasos con Nostr

Luego de haber hablado de la teoría, vamos con la parte práctica.

Paso 1

Para interactuar con clientes Nostr, lo primero que necesitas hacer es crear tu identidad, recuerda, aquí no hay correos electrónicos ni contraseña, menos datos personales, tu identidad o usuario, estará relacionada con llaves públicas y privadas, suena complejo, pero no lo es tanto.

Puedes crear tu llave pública de 2 maneras, una compleja (usuarios avanzados) y una sencilla (usuarios novatos).

1- Puedes crear tu llave pública, aplicándole prueba de trabajo o (PoW), esto para usuarios que manejan la parte técnica, para ello puedes utilizar el descargar los fuentes de un programa llamado RANA creado por @ngunch en el Git del proyecto, están todas la indicaciones para instalarlo, ejecutarlo y generar tus llaves, aquí vas a requerir usar Linux, Git, Rust etc.

2- Puedes generar tu PubKey de una manera sencilla con Alby navegando a su Web Site www.getalby.com si aún no tienes “cuenta” la creas y sigues el proceso, es intuitivo, primero deberás crear tu cuenta relacionada con Lightning Network, similar a lo que ves en la siguiente imagen.

Luego, pasas a la parte relacioanda con Nostr.

Al final lo asocias para poder obtener tu llave pública/privada.

Tu llave publica se verá así: (npub1qqqqqzsh6acykwafnskm0nl34uq6wyrf4y8qd2d0l8gewq2u82psut3kae) si no se ve igual, no te preocupes, puede ser que te la muestre en formato hexadecimal, lo importante es tenerla.

Nota: al parecer lo que Alby te da, no es la PubKey, sino la PrivateKey, pero tranquilo, no pasa nada.

Paso 2

Ya teniendo tu PubKey o PrivateKey, puedes avanzar y proceder a crear tu identidad o cuenta.

Para ello, yo recomiendo usar uno de los clientes más avanzados a la fecha y que menos problemas genera a la hora de crear y completar tu perfil.

Nota: no puedo poner todas las pantallas, pero el proceso es intuitivo, a groso modo debes hacer lo siguiente.

1- Debes ir al Web Site www.astral.ninja (puede tomar varios segundos cargar la página, tranquilo).

2- Debes ingresar tu Pub o Private Key que obtuviste en el paso anterior, la pantalla es intuitiva y le das continuar.

3- Luego deberás completar los datos de tu perfil.

Paso 2

Procede a validar tu ID en el directorio de Nostr, donde se facilita encontrar un X contactos de Twitter para luego añadirlos como tus seguidores.

1- Ingresa al Web Site nostr.directory

2- Luego clic en la primera opción: 1. Tweet your nostr pubkey

Antes de publicar el twitt, pon entre las comillas tu PubKey y le das enviar, se publicará el twitt en tu timeline y se guardará en el directorio de Nostr.

3- Consulta el directorio poniendo tu username de Twitter y te debe salir algo como esto.

Si encuentras tu usuario, significa que ya estás en esté directorio, notarás que el check no está verde, sino de otro color, significa que aún no estás validado, para validarlo, sigue el próximo paso.

4- Ingresa al Web Site nostr.directory

Da clic en la opción 2. Verify your pubkey on nostr

Te saldrá algo como esto. Debes poner tu username de Twitter sin la @

Le das en Copy Verification, el resultado será un texto como esté.

@5e7ae588d7d11eac4c25906e6da807e68c6498f49a38e4692be5a089616ceb18 Verifying My Public Key: “ishikawa”

Ese texto lo deberás enviar a Nostr tal cual sin modificar nada. Lo puedes postear aquí. https://branle.netlify.app/ (primero ingresa tu llave pública).

Una vez posteado con éxito, luego de unos minutos, si vuelves a consultar el directorio, ya podrás ver tu check en color verde.

Hasta aquí has hecho la verificación, pero a nivel del directorio de Twitter, hay otra verificación a nivel de dominio (NIP05) la cual explicaré a continuación.

3- Validación en base a dominio (NIP05) en Nostr

En esté paso te explicaré como validar Nostr asociado a tu dominio propio, el cual tiene como base el NIP05.

¿Cuál es el beneficio de esta verificación? esta verificación te permite asociar tu identidad a un dominio, y cuando ingresas en diferentes clientes, podrás hacer “login” usando tu validación de dominio, que viendo siendo similar a una dirección de email, en el ejemplo mío es: ishikawa@comercioazul.com

Se verá algo como la imagen (en mi caso es un dominio personalizado)

Importante: para hacer esté paso (validar en base a dominio), previamente debes haber creado tu identidad en Nostr (paso 2 de está guía).

Dado que es un dominio personalizado (propio), se entiende que tu tienes acceso y administración o puedes apoyarte con el administrador (tu amigo, empleado).

1- El primer paso, es crear un archivo llamado: _config.yml

Dentro del archivo debes agregar el siguiente texto.

include: [“.well-known”]

2- El segundo paso, será crear un directorio el cual deberás llamar: .well-known

3- Dentro del direcorio deberás crear un archivo con extensión JSON, el cual deberás llamar: nostr.json

Dentro del archivo, deberás agregar el siguiente texto.

{
“names”: {
“ishikawa”: “0000000a1xxxxxxxxxxx06a9aff9d19xxxxxxxxxxxx7015c3a83”
}
}

Deberás sustituir ishikawa por tu nombre de usuario, de preferencia que sea el mimo con el que validaste en el directorio de Nostr, el de Twitter.

En lugar del número con las XXX que se muestra, deberás poner tu PubKey, es importante hacer notar que, debes poner el valor hexadecimal de tu Key y no el que comienza con: npub1, para obtener la PubKey en valor hexadecimal lo puedes ver en el cliente de www.astral.ninja

Al final debería ver algo así la estructura de directorios.

4- Habiendo creado el directorio, el archivo y habiendo agregado los datos dentro del archivo, estás listo para subirlo a tu hosting, el cual esta relacionado a tu dominio.

Puedes utilizar un cliente FTP como FileZilla o inclusive lo proveedores de hosting, te permiten subir archivos por medio del CPanel de tu cuenta.

5- Una vez subidos, deberías podes consultar la ruta desde la internet, sería similar a esté resultado.

https://tudominio/.well-known/nostr.json

Hasta aquí has hecho la primera parte, yo me tope con un problema, debes habilitar en tu hosting, el permiso para que se pueda consultar archivos de tipo JSON por medio de https, es sencillo de hacerlo, una de las maneras es agregar al archivo (.htaccess) el siguiente código. El archivo en mención debe estar en la raíz del dominio, si no existe se debe crear.

<FilesMatch “\.(json)$”>
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin “*”
#Header always set Content-Security-Policy “upgrade-insecure-requests;”
</IfModule>
</FilesMatch>

Adicional: También asegúrate que tu hosting (dominio) acepte peticiones de tipo CURL

6- Debes ir a esta dirección: https://astral.ninja/settings

Se te desplegará algo como esto (ver imagen)

Donde dice NIP-O5 identifier, deberás poner tu dirección tipo email, en mi ejemplo: ishikawa@comercioazul.com

en tu caso reemplza por tu usuario el que pusiste en el archivo nostr.json y el dominio donde subiste el archivo, el dominio.

En el momento de ponerlo y guardarlo, Nostr tratará de validar y si todo esta correcto, luego de guardar y refrescar tu perfil en Astral.ninja ya deberás ver ya validado tu NIP05, de tipo email, se vería algo como esto.

También he escuchado que puede hacerlo desde tu cuenta de GitHub, haciendo el despliegue y subiendo los archivos y utilizando el dominio de Git, como ejemplo sería algo así: ishikawa@ishikawa.github.io investiga como desplegar paginas con ellos.

Luego hay otra opción (la más utilizada) para validar tu NIP05 en base a dominio y es utilizando terceros, como puede ser GetAlby o también https://twitter.com/NostrPlebs en esté último debes pagar desde 10,000 Sats.

El problema que veo con esos servicios, es que debes confiar en ellos y si el dominio desaparece, te quedarás sin nada o si requieres asociar otra PubKey adicional tu dominio, deberás pagar nuevamente, el proceso que he mostrado es para dominios propios, es mejor y tienes pleno control, obvio no todos tienen un dominio, pero aplica para quienes pueden.

Gracias por tu atención, si hay errores, cosas que agregar déjamelas saber en mi Twitter o Telegram

Puedes dejarme una propina (sats) vía LN, en cualquiera de las siguientes direcciones.

soyishikawa@lntxbot.com

soyishikawa@ln.tips

tacitarch58@walletofsatoshi.com

ishikawa@zbd.gg

ishikawa@ln.bitcoinbeach.com

https://strike.me/ishikawa

Nota: Esté artículo ha sido escrito en base a mi experiencia, dejo los link y nombres de personas relacionadas.

Gracias un abrazo. Sígueme en twitter — https://twitter.com/ishikawa_btc

Atentamente;

Ishikawa

--

--

Ishi

₿itcoiner~Dev~Co-funder of @torogozdev ~#Bitcoin ~LN ⚡~Nostr ~Founder of @chiltotabot ~❌ No CrYpT0 ~More here 👉 http://linktr.ee/ishi_kawa