NIP-78 define un kind de evento estándar para que las aplicaciones almacenen datos arbitrarios en nombre de un usuario usando eventos Nostr, permitiendo la sincronización de estado entre dispositivos sin un servidor centralizado.

Cómo funciona

El kind de evento central es 30078, un evento reemplazable parametrizado. La etiqueta d es una cadena de identificador definida por la aplicación que delimita el espacio de almacenamiento a una aplicación y propósito específicos.

{
  "id": "<64-char hex>",
  "pubkey": "<64-char hex>",
  "created_at": 1747180800,
  "kind": 30078,
  "tags": [
    ["d", "myapp-settings"]
  ],
  "content": "{\"theme\":\"dark\",\"fontSize\":14}",
  "sig": "<128-char hex>"
}

Una aplicación publica un evento 30078 con una etiqueta d única (por ejemplo tamagostrich-pet-state o amethyst-settings) y el contenido JSON o texto que necesita persistir. Como 30078 es reemplazable y está delimitado por la etiqueta d, actualizar el estado almacenado significa publicar un nuevo evento con la misma etiqueta d; el relay conserva solo la versión más reciente.

Sincronización entre dispositivos

Cualquier cliente que conozca la clave pública de un usuario y la etiqueta d de la aplicación puede obtener el estado actual del conjunto de relays del usuario y reconstruirlo en cualquier dispositivo. El usuario es dueño de los datos porque viven en eventos firmados con su par de claves, almacenados en relays de su lista de relays NIP-65.

Datos privados vs. públicos

Para datos de aplicación privados, el campo de contenido puede cifrarse usando NIP-44 antes de publicar, de modo que el relay almacena solo texto cifrado que únicamente el titular de la clave puede descifrar. Los datos de aplicación públicos pueden almacenarse sin cifrar para que otros clientes puedan leerlos y mostrarlos.

Formato de contenido

NIP-78 deja deliberadamente el formato de contenido abierto; las aplicaciones eligen su propio esquema. La convención común es prefijar las etiquetas d con el nombre de la aplicación para evitar colisiones entre apps que usan el mismo relay.

Implementaciones

  • Tamagostrich — sincronización de estado de mascota entre dispositivos via eventos tamagostrich-pet-state kind:30078
  • Wisp — copia de seguridad de cartera kind:30078 y sincronización de configuración de seguridad entre dispositivos; suscripciones outbox fusionadas en un único REQ usando filtro de autor NIP-78
  • NosPress — estado de orquestación CMS almacenado en eventos NIP-78
  • Varias implementaciones de sincronización de configuración de clientes Nostr (Amethyst, otros)

Fuentes primarias:

Mencionado en:

Ver también: