NIP-73 define una forma estándar de hacer referencia a contenido externo dentro de eventos de Nostr. Usa etiquetas i para el propio identificador y etiquetas k para el tipo de identificador. Así, los clientes pueden agrupar la conversación en torno a un mismo libro, sitio web, episodio de pódcast, ubicación, hashtag u objeto de blockchain. La especificación actual está marcada como borrador y opcional.

Cómo funciona

Un evento que usa NIP-73 incluye una etiqueta i con un identificador externo normalizado y una etiqueta k que indica la familia del identificador. Los clientes pueden consultar a los relays por un único tema exacto mediante i o por una familia entera mediante k. NIP-73 no añade ningún kind de evento propio. Las etiquetas van en comentarios, reseñas y otros eventos.

Fragmento de etiquetas, no un evento completo:

{
  "tags": [
    ["i", "isbn:9780765382030"],
    ["k", "isbn"]
  ]
}

Una página web pone su URL normalizada en i y asigna web a k. La especificación cubre varias familias de identificadores, entre ellas:

  • URLs web normalizadas sin fragmento
  • ISBN para libros
  • ISAN para películas
  • DOI
  • geohashes y códigos ISO 3166 de país o de subdivisión
  • GUID de feeds, episodios y editores de pódcast
  • hashtags
  • identificadores de transacciones y direcciones de blockchain

Reglas de normalización

La coincidencia depende de que las cadenas sean idénticas, así que la especificación fija una única forma escrita para cada familia. Algunos ejemplos de la especificación:

  • los geohashes usan geo:<value> y deben ir en minúsculas
  • los códigos de país y de subdivisión usan iso3166:<code> y deben ir en mayúsculas
  • los ISBN se escriben sin guiones
  • los DOI van en minúsculas
  • las URLs web se escriben sin fragmentos
  • los hashes de transacciones de blockchain usan hexadecimal en minúsculas

La normalización fija cómo se escribe un único identificador. No fusiona alias. Los ISBN de cada edición y las URLs que se normalizan en cadenas distintas siguen siendo identificadores separados, de modo que la conversación sobre un mismo libro o artículo puede seguir repartida entre varios valores i.

Pistas de URL

Una etiqueta i puede incluir una pista de URL opcional como tercer elemento del array, es decir, el segundo valor después del nombre de la etiqueta. Un cliente sin un renderizador propio para ese tipo de identificador puede usar la pista como enlace de respaldo.

Fragmento de etiqueta: ["i", "isbn:9780765382030", "<url-hint>"]

La pista la elige el autor. No forma parte de la identidad, no demuestra ninguna propiedad y no designa un sitio canónico.

Confianza y contexto

Dos eventos con el mismo identificador acaban en la misma conversación, y el identificador compartido no establece nada más. Un evento firmado identifica a su autor. No autentica el libro, el sitio ni el editor del pódcast al que hace referencia, ni muestra quién los controla.

El significado de una etiqueta i depende del evento. En los comentarios de NIP-22, I/K en mayúsculas marcan el ámbito raíz y i/k en minúsculas marcan el padre. Esa estructura de hilo procede de NIP-22, y NIP-73 no define ningún kind de comentario. NIP-39 usa i para identidades externas en perfiles, así que no toda etiqueta i es un tema de NIP-73.

Las afirmaciones de confianza (Trusted Assertions) de NIP-85 también pueden apuntar a identificadores de NIP-73 como libros, sitios web, hashtags y ubicaciones.

Implementaciones

El nip73.rs de rust-nostr en el commit 4c8099a convierte los prefijos conocidos en un ExternalContentId tipado y transforma una pista opcional en una URL tipada. Solo escribe el tercer elemento de la etiqueta cuando hay una pista. Sus tests conservan ISBN con guiones: el parser quita el prefijo y guarda el resto sin aplicar la normalización de la especificación, así que el análisis tipado no garantiza cadenas canónicas. Deja los IDs de cadena fuera de la familia y asigna ethereum:100:tx:<hash> a ethereum:tx. Esa revisión no tiene variante de país iso3166.

El DisplayExternalId.kt de Amethyst en el commit 553f761 envía los identificadores de geohash, hashtag y URL a vistas específicas y muestra los demás tipos compatibles como un chip de ámbito genérico. Una URL abre la ruta de hilo propia de la app para esa página. Con las vistas previas desactivadas, el renderizado normal muestra un chip de enlace simple y no solicita ninguna vista previa. Con las vistas previas activadas, obtener una vista previa que falta puede implicar contactar con el sitio de destino. Ninguno de los dos archivos muestra cómo se comporta una versión publicada.


Fuentes primarias:

Mencionado en:

Véase también: