Why Nostr? What is Njump?
2023-08-23 16:09:16

Lo que aprendimos sobre Nostr con Verbiricha

Para dar un descanso a organización y resto de comunidad habíamos acordado que no habría meetup en Agosto. Pero un evento en Nostr nos hizo ponernos manos a la obra a contrarreloj: <span itemprop="mentions" itemscope itemtype="https://schema.org/Article"><a itemprop="url" href="/note1sy9u0yktqqah3qz6sfa90pgwvs29g7ny0qlm7dvqcghzg5w794nsdn3m4c" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1">note1sy9…3m4c</a></span>

Aprender sobre Nostr de la mano de Verbiricha</a></span>) es una oportunidad que no queríamos desaprovechar.

Para quien no le conozca, es el desarrollador principal de Habla.news, plataforma basada en Nostr que permite crear y gestionar notas de nostr de formato largo, tipo blog (esta misma desde la que nos lees).

Con la ayuda de Karnage creó Badges (Insignias que pueden concederse como reconocimiento o agradecimiento por participación o por un objetivo, tarea o causa concretos.).

Existe una insignia que pueden lucir con orgullo todos los que hayan asistido al menos a 5 meetups de Málaga2140: <span itemprop="mentions" itemscope itemtype="https://schema.org/Article"><a itemprop="url" href="/naddr1qqyr2mt9v4682urnqgspy63faqvpc9nr4es3ec59wk9s3dr4e7qmxc6d6gmmsg6v6y6pnqgrqsqqqafealndu6" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1">naddr1qq…ndu6</a></span>

También ha colaborado con Snort.social (cliente web cuya apariencia puede recordar a Twitter) y en la actualidad con Zap.stream, cliente que permite emitir/visualizar en directo con chat incorporado y que permite zapear tanto al streamer como a los participantes en el chat, entre otras funciones destacadas 🤯

Podría ser una alternativa perfecta para los chicos de DirectoBitcoin2140.

¡Todo esto (y mucho más) tan solo desde Enero de este año (2023)!

Una muestra más de la señal honesta alrededor de Nostr y Bitcoin. Gente con talento y amor por la libertad dedicando su tiempo (en la mayoría de ocasiones desinteresadamente o sin esperar nada a cambio) a desarrollar herramientas soberanas para los usuarios 👏

Como usuarios de Nostr estamos muy agradecidos por su contribución y esperamos que nos siga sorprendiendo con nuevos desarrollos y colaboraciones. Y como comunidad le agradecemos enormemente que quisiera dedicarnos un rato de sus vacaciones y se uniera a un meetup en el que aprendimos mucho.

Resumen de lo aprendido

La forma en la que el invitado planteó el meetup fue que todos los asistentes, independientemente de su nivel de conocimiento, entendiesen un poco mejor qué es Nostr, cómo funciona y distintos casos de uso.

Para ello estructuró la charla empezando por una introducción en lenguaje cotidiano seguido de una profundización técnica en cómo funciona el protocolo y culminó mostrando algunos clientes.

Al ser un meetup en petit comité las preguntas se iban lanzando según surgían dudas por lo que todas quedaron resueltas.

A continuación intentamos sintetizar todo lo aprendido, contrastando y ampliando parte de la información gracias a Nostr.How y Nostradamic

Empecemos por los componentes principales del protocolo:

Clientes

Un cliente en Nostr es simplemente la aplicación que utilizas para acceder e interactuar con el protocolo. Piensa en la aplicación de Twitter para móvil o la web para interactuar en Facebook, ...

La diferencia aquí es que todo lo que se publica en Nostr puede ser visible y accesible desde cualquier cliente. Es decir, como si los tuits pudiesen verse también desde tu cuenta en Instagram, por ejemplo.

Hay clientes cuya interfaz puede recordar a redes sociales como Snort.social que es similar a Twitter; otras como NostrChat podrían ser una alternativa a apps de mensajería como Telegram; …

Pero Nostr va mucho más allá. Se puede jugar al ajedrez, ver/emitir streamings, crear comunidades, interactuar con IAs, … Esto no ha hecho más que empezar.

Aquí puedes encontrar algunos clientes destacados que puedes filtrar por categoría (tipo red social, streaming, música, ...) en el menú de la izquierda: https://www.nostrapps.com/

Relés

Los relés (o relays, en inglés) son como los servidores de Nostr. Su único trabajo es aceptar mensajes y reenviarlos a los usuarios. Los usuarios pueden confiar sus datos a uno o varios relés y, en caso de que éstos se confabulen para eliminar su información o bloquear sus emisiones, el usuario puede poner en marcha su propio relé.

Los usuarios censurados en determinados relés podrían incluso crear su propia red de relés y compartir datos entre ellos para crear una red sólida de redistribución de sus contenidos.

Relés pagados vs gratuitos

La mayoría de relés actualmente son gratuitos. Operar un relé conlleva costes (almacenamiento, ancho de banda, …), por lo que se espera que los relés de pago sean la norma en el futuro.

La “prueba de trabajo” de pagar por el acceso al relé es algo que ayuda a evitar el SPAM.

Puedes encontrar una lista de relés para explorar y evaluar su velocidad aquí:
nostr.watch

Eventos

Los eventos son cualquier interacción que realizas en Nostr: Escribir una nota, dar un like, seguir a otro usuario, …

Cada evento tiene un “tipo” (kind), que indica de qué tipo de evento se trata y la acción que se realiza.

Algunos de los tipos de evento:

| kind | description | NIP | | --- | --- | --- | | 0 | Metadata | https://github.com/nostr-protocol/nips/blob/master/01.md | | 1 | Short Text Note | https://github.com/nostr-protocol/nips/blob/master/01.md | | 3 | Contacts | https://github.com/nostr-protocol/nips/blob/master/02.md | | 4 | Encrypted Direct Messages | https://github.com/nostr-protocol/nips/blob/master/04.md | | 5 | Event Deletion | https://github.com/nostr-protocol/nips/blob/master/09.md | | 6 | Reposts | https://github.com/nostr-protocol/nips/blob/master/18.md | | 7 | Reaction | https://github.com/nostr-protocol/nips/blob/master/25.md | | 8 | Badge Award | https://github.com/nostr-protocol/nips/blob/master/58.md | | 9735 | Zap | https://github.com/nostr-protocol/nips/blob/master/57.md | | 10000 | Mute List | https://github.com/nostr-protocol/nips/blob/master/51.md | | 30008 | Profile Badges | https://github.com/nostr-protocol/nips/blob/master/58.md | | 30023 | Long-form Content | https://github.com/nostr-protocol/nips/blob/master/23.md | | … | … | … |

Este es el aspecto de un evento de tipo 1 (el tipo 1, como puedes comprobar en la tabla de arriba, es para notas de texto cortas, es decir, algo parecido a un tweet en Twitter):

{
    "id": "8c39dc67999737702ec05b4d768c1b9daf5a991b03cc259021dd3644e16557f5",
    "pubkey": "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9",
    "created_at": 1692622394,
    "kind": 1,
    "tags": [],
    "content": "good morning nostr, freedom tech is hope 🫡",
    "sig": "521d0715b717e46166cdb71c48c747b4a183a5e5266374c28e550ef8e3bdfc9381a25138a5560ece7fd93bfc31e79a87c3e53b99333bf06a6881486c0def0a5b"
}

Y en un cliente se ve así: <span itemprop="mentions" itemscope itemtype="https://schema.org/Article"><a itemprop="url" href="/note13suaceuejumhqtkqtdxhdrqmnkh44xgmq0xztyppm5myfct92l6svdz52y" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1">note13su…z52y</a></span>

  • El campo id indica el ID del evento
  • El campo pubkey indica la clave pública del usuario que envió el evento
  • El campo created_at nos dice cuándo se publicó el evento
  • El campo **kind** indica de qué tipo de evento se trata.
  • El campo tags nos informa sobre las etiquetas del evento. Éstas se utilizan para crear enlaces, añadir contenido multimedia y mencionar a otros usuarios o eventos.
  • El campo content nos da el contenido del evento. En este caso, el mensaje de texto corto.
  • El campo sig es la firma que los clientes utilizan para verificar que el usuario con esta pubkey envió de hecho este evento en la fecha especificada.

¿Qué es Nostr?

Nostr es un protocolo abierto que pretende crear una red mundial de intercambio de datos resistente a la censura. El protocolo no depende de un servidor central, sino que todos los usuarios pueden ejecutar un cliente. Con cualquier cliente, los usuarios publican contenido firmándolo con su clave privada y enviándolo a servidores (relés/relays), que lo retransmiten.

La única función de un relé es aceptar los mensajes y transmitirlos. Los usuarios pueden confiar sus datos a uno o varios relés, y si éstos se confabulan para eliminar su información o bloquear sus emisiones, el usuario puede utilizar su propio relé.

¿Cómo funciona Nostr? (De forma muy resumida)

Cada usuario usa un cliente. Puede ser un cliente nativo, un cliente web, etc. Para publicar algo, escribes una nota, la firmas con tu clave y la envías a múltiples relés (servidores alojados por otra persona, o por ti mismo). Para obtener actualizaciones de otros usuarios a los que sigues, el cliente que usas pregunta a varios relés si saben algo de esos otros usuarios. Cualquiera puede ejecutar un relé. Un relé es realmente simple ya que lo único que hace es aceptar mensajes de algunas personas y reenviarlos a otras.

NIPS

Las Posibilidades de Implementación de Nostr, o NIP por sus siglas en inglés, existen para documentar lo que DEBE, lo que DEBERÍA y lo que PUEDE ser implementado por el software cliente y de retransmisión compatible con Nostr. Las NIP son los documentos que describen cómo funciona el protocolo Nostr.

Puedes ver todos los NIPs actuales en Nostr NIP repo

Cierre

Sabemos que hubo gente con interés en el tema que por incompatibilidad horaria o encontrarse fuera de Málaga se quedó con las ganas de asistir. No os preocupéis porque habrá más ocasiones en las que trataremos el tema con nuevos invitados de lujo.

Hasta entonces podéis enviar dudas y sugerencias a través del formulario de contacto o mejor aún, en Nostr:

🟣 Npub de Málaga2140 en Nostr: npub1zf4zn6qcrstx8tnprn3g2avtpz68tnupkd35m53hhq35e5f5rxqskppwpd

Author Public Key
npub1zf4zn6qcrstx8tnprn3g2avtpz68tnupkd35m53hhq35e5f5rxqskppwpd