Nostr Compass #12
Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.
Esta semana: El Marmot Development Kit lanza su primera versión pública con medios cifrados y bindings multi-lenguaje. Nostrability publica benchmarks del modelo outbox a través de 14 algoritmos de selección de relays. Wisp pasa de primera alfa a beta en ocho días con Tor y firma NIP-55 (Aplicación Firmante de Android). NIP-91 (filtros AND) se fusiona. Vector v0.3.1 entrega sincronización negentropy con mejoras de rendimiento de 15x. Este número también incluye la retrospectiva Cinco Años de Febreros de Nostr, trazando el protocolo desde una reescritura de especificación sirviendo tres relays pasando por la explosión de Damus en la App Store hasta redes de malla y propuestas de agentes de IA.
Noticias
El Modelo Outbox Bajo la Lupa
Nostrability publicó una serie de benchmarks del modelo outbox probando qué tan bien diferentes algoritmos de selección de relays recuperan eventos de la red descentralizada de relays. El proyecto fusionó 16 PRs y 76 commits en diez días, produciendo lo que puede ser el análisis empírico más exhaustivo de estrategias de implementación de NIP-65 (Relay List Metadata) hasta la fecha.
Los benchmarks prueban 14 algoritmos de selección de relays contra listas de follows del mundo real a través de 15 clientes y bibliotecas en cinco lenguajes. Un enfoque base de consultar solo relays populares recupera aproximadamente el 26% de los eventos. Set-cover codicioso con Thompson Sampling alcanza 80-90% de recall. Añadir una variante consciente de latencia usando descuento hiperbólico y seguimiento de latencia de relay EWMA elevó la completitud de 62-80% a 72-96% en la marca de 2 segundos a través de seis perfiles de prueba.
El filtrado de relays muertos con NIP-66 (Relay Monitoring) resultó ser significativo. Pre-filtrar candidatos de relay contra datos de actividad de nostr.watch eliminó 40-64% de relays muertos y duplicó las tasas de éxito de relay de 30% a 75-85%. Los tiempos de carga de feed bajaron 39% (de 40 segundos a 24 segundos a través de 10 perfiles). Una simulación de carrera EOSE encontró que esperar EOSE más un período de gracia de 200ms mejoró la completitud sobre detenerse en el primer relay en terminar.
Para clientes que no pueden reescribir completamente su enrutamiento de relays, un enfoque de “enriquecimiento outbox híbrido” añade consultas outbox por autor sobre relays de aplicación hardcodeados existentes. Este híbrido logró 80% de recall de eventos de un año versus el 26% base, ofreciendo una ruta de migración para clientes con arquitecturas de relay heredadas.
ContextVM Abre NIP de MCP y Lanza Gift Wraps Efímeros
ContextVM, el protocolo que conecta Nostr con el Model Context Protocol, abrió dos propuestas en el repositorio de NIPs esta semana. PR #2246 formaliza CVM como una convención para transportar mensajes MCP JSON-RPC sobre Nostr usando eventos efímeros kind 25910. PR #2245 extiende NIP-59 (Gift Wrap) con un kind efímero (21059) que sigue la semántica efímera de NIP-01 (Flujo Básico del Protocolo), permitiendo a los relays descartar mensajes envueltos después de la entrega.
La convención de gift wrap efímero se lanzó como CEP-19 en la familia de versiones v0.6.x del SDK de ContextVM. La implementación del SDK añade un enum GiftWrapMode con tres configuraciones: OPTIONAL (aceptar ambos kinds y auto-detectar capacidad del par), EPHEMERAL (solo kind 21059) y PERSISTENT (solo kind 1059). Para llamadas de herramientas de IA, el modo efímero evita almacenar tráfico intermedio de solicitud-respuesta en relays, reduciendo tanto costos de almacenamiento como exposición de privacidad.
Nuevos servidores MCP públicos aparecieron en la red de operadores independientes, incluyendo un servidor de consultas Wolfram Alpha. El equipo de ContextVM publicó CEP-15 (esquema de herramientas comunes) y CEP-17 (publicación de lista de relays del servidor) junto al ciclo de lanzamiento v0.6.x.
Marmot Development Kit Lanza Su Primera Versión Pública
MDK (Marmot Development Kit), la biblioteca Rust que impulsa la mensajería cifrada con Marmot a través de Pika y White Noise, lanzó v0.6.0 como su primera versión pública. Más de 200 PRs se fusionaron en esta versión, con seis nuevos contribuidores.
El lanzamiento incluye soporte de medios cifrados (MIP-04) con derivación de semilla HKDF (MIP-01 v2), resolución determinista de carreras de commits (MIP-03), almacenamiento local cifrado, validación de autorización de admin para commits y propuestas Marmot, y soporte GREASE para extensibilidad del protocolo. Los bindings se distribuyen para Kotlin, Python, Ruby y Windows junto a compilación cruzada para Android. La biblioteca se actualiza a OpenMLS 0.8.0 con correcciones de avisos de seguridad y un tipo Secret<T> que elimina valores sensibles de la memoria con zeroing.
Un cambio de protocolo complementario (MIP-03) reemplazó el cifrado NIP-44 (Encrypted Payloads) con ChaCha20-Poly1305 para mensajes kind 445. NIP-44 requería entrada de cadena UTF-8 según su especificación, haciendo imposible pasar bytes de mensaje Marmot crudos a través de bibliotecas Nostr estándar de TypeScript. El reemplazo deriva claves directamente del secreto exportador de Marmot. Este cambio disruptivo requirió actualizaciones coordinadas a través de la especificación core, MDK y el SDK de TypeScript.
marmot-ts, la implementación TypeScript mantenida por hzrd149, fusionó cuatro PRs con cambios disruptivos de API por derecho propio. Una actualización ómnibus añadió un gestor de paquetes de claves para el ciclo de vida crear/publicar/rotar, un método de conveniencia sendChatMessage, vista previa de invitaciones sin unirse (readInviteGroupInfo), auto-actualización para rotaciones de secreto hacia adelante, y logging de depuración estructurado. Las APIs de descifrado de grupo fueron renombradas de readGroupMessage a decryptGroupMessage con variantes de resultado más ricas (processed/skipped/rejected/unreadable). gzuuus contribuyó limpieza de ejemplos con soporte de relays NIP-65 y manejo de paquetes de claves de último recurso según MIP-00.
El CLI de White Noise (wn), el backend Rust que impulsa tanto la app móvil como la nueva TUI, fusionó 16 PRs en diez días. El manejo del ciclo de vida del firmante ganó seguridad de cancelación mediante un scope guard RAII (PR #538), corrigiendo una clase de bugs donde operaciones abortadas podían filtrar estado del firmante. El login ahora bloquea cuando las listas de relays requeridas (kind 10002/10050/10051) están ausentes (PR #515), y las suscripciones de giftwrap recurren a relays de NIP-65 cuando las listas de inbox están ausentes (PR #518). Un modo de depuración (PR #528) expone consultas de base de datos e inspección de ratchet-tree MLS como salida JSON. Otras correcciones abordaron recuperación de suscripciones después de re-registro del firmante, temporización de catch-up de mensajes de bienvenida, validación de filtros de relay y límites de radio de búsqueda de usuarios.
Marmot vio una expansión significativa más allá del stack Rust core esta semana. White Noise TUI, una interfaz basada en terminal para el stack de mensajería White Noise, se lanzó el 3 de marzo. Envuelve el CLI wn como subproceso y renderiza su salida JSON a través de una arquitectura unidireccional inspirada en Elm, proporcionando navegación multi-conversación con indicadores de no leídos, creación de grupos y búsqueda de miembros, streaming de mensajes en tiempo real y reacciones emoji desde la terminal.
DavidGershony publicó un stack Marmot completo en C# que refleja la arquitectura por capas del toolchain Rust. dotnet-mls implementa primitivas criptográficas MLS RFC 9420 en C#. marmot-cs se construye sobre él para añadir transporte de relay Nostr, funcionando como equivalente en C# de MDK. OpenChat, una app de escritorio multiplataforma construida con .NET 9 y Avalonia UI, une ambos en un cliente de chat funcional con DMs NIP-44, cifrado de grupo Marmot, firma remota NIP-46 (Nostr Connect) e indicadores de estado multi-relay.
MDK PWA Reference proporciona una plantilla de Progressive Web App para construir aplicaciones cifradas con Marmot, con soporte experimental para participación de agentes de IA en chats grupales y pagos Bitcoin vía infraestructura de billetera Arkade.
Wisp Pasa de Alfa a Beta
Wisp es un nuevo cliente Nostr para Android que pasó de su primera alfa el 24 de febrero a v0.3.4-beta el 3 de marzo, produciendo 19 lanzamientos, 115 PRs fusionados y 276 commits en ocho días.
La trayectoria de funcionalidades cubre terreno que a la mayoría de los clientes les toma meses alcanzar. v0.1.0 se lanzó con soporte del modelo de relay outbox/inbox y flujos de onboarding. Para v0.1.3, el cliente tenía firma basada en intents NIP-55 para Amber, un proxy SOCKS5 Tor integrado para conectividad de relay .onion y NIP-47 (Nostr Wallet Connect). v0.2.0 graduó a beta con filtrado de listas de silenciados y soporte de emoji personalizados, mientras v0.2.4 añadió superposiciones de advertencia de contenido. La serie v0.3.x introdujo NIP-13 proof-of-work para notas, minado PoW en segundo plano con ajustes persistentes, almacenamiento de relays .onion y notificaciones de hilos silenciados.
La traducción en dispositivo vía Google ML Kit se ejecuta localmente sin acceso a la red después de la descarga inicial del modelo. Una visualización interactiva del grafo social usa una simulación de física velocity Verlet a aproximadamente 30fps con navegación pinch-to-zoom e inspección de perfiles.
Lanzamientos
Vector v0.3.1
Vector, la app de mensajería cifrada con Marmot, lanzó v0.3.1 con mejoras en gestión de grupos y trabajo de rendimiento. Grupos multi-admin, invitaciones masivas, invitación por npub y avatares de grupo amplían las funcionalidades de colaboración. Las notificaciones en segundo plano de Android ahora soportan acciones en línea de Responder y Marcar como Leído.
La sincronización determinista basada en Negentropy recupera el historial completo de conversación incluyendo mensajes perdidos durante períodos offline. Voz a texto reconstruido con aceleración GPU en Android. El manejo de adjuntos de archivo fue renovado con progreso de descarga, estados de reintento, envío de directorios comprimidos e indicadores de progreso en tiempo real. El rendimiento mejoró más de 15x en tiempo de arranque, procesamiento de imágenes, reproducción de audio y capacidad de respuesta general de la UI. El tamaño de instalación de la app se redujo en más de un tercio, con el frontend reducido aproximadamente a la mitad. Se añadió soporte para Android ARM de 32 bits.
Alby Hub v1.21.5
Alby Hub, el nodo Lightning auto-custodiado con soporte de Nostr Wallet Connect (NIP-47), lanzó v1.21.5. Se añadió un segundo relay a la configuración NWC predeterminada, mejorando la fiabilidad durante reinicios de relay. Una corrección para datos de zap inválidos en la lista de transacciones resuelve un problema de visualización con eventos NIP-57 (Lightning Zaps) malformados. Las nuevas entradas de la tienda de apps incluyen Alby CLI y LNVPS.
nospeak v0.12.x
nospeak, el cliente de mensajería Nostr basado en texto, lanzó tres versiones durante el período. v0.12.0 añadió un bloqueo de app con PIN de teclado de 4 dígitos y más de 15 nuevas traducciones de idiomas incluyendo bengalí, tailandés, vietnamita, hindi, árabe, hebreo, urdu, turco, japonés, chino, coreano, holandés, polaco, ruso y persa con soporte RTL. v0.12.1 introdujo un tema Cypher con fondos negro puro y acentos cyan, más generación de póster de vídeo en Android. v0.12.2 añadió exportación de chat y Ver Perfil en menús de contacto.
Citrine v2.0.0-pre2
Citrine, el relay personal Android de greenart7c3, lanzó v2.0.0-pre2 con mejoras de rendimiento del relay mediante nuevos índices de base de datos y coroutines Kotlin reestructuradas. Cada app web alojada ahora inicia en su propio puerto. Búsqueda de texto completo y una pantalla de eventos rediseñada con expansión de eventos completan los cambios.
NoorNote v0.5.x
NoorNote, una aplicación de toma de notas basada en Nostr, lanzó 8 versiones desde v0.5.0 hasta v0.5.7. El lanzamiento de v0.5.0 en Android añadió soporte para firmante Amber NIP-55 y publicación de notas NIP-71 (Video Events). Una página de bienvenida rediseñada en v0.5.1 incluyó vistas previas de línea de tiempo pública y redujo el APK a 15 MB. El Navegador de Relays en v0.5.2 permite a los usuarios explorar líneas de tiempo públicas de relays mediante URLs compartibles, junto a descarga de medios y reacciones de emoji personalizados NIP-30. Las versiones posteriores hasta v0.5.7 abordaron condiciones de carrera de sincronización en el sistema colaborativo de compartición de notas “tribes”.
NosCall v0.5.1
NosCall, la app de llamadas de voz y vídeo en Nostr, lanzó v0.5.1 con soporte de mensajes de voz, una experiencia de escritorio optimizada con entrada de grupo, favoritos de contacto en escritorio, notas de contacto y filtrado, opciones de exportación de datos y limpieza, y soporte de accesibilidad de tamaño de fuente del sistema.
Shosho v0.13.0
Shosho, la app de streaming en vivo de Nostr, lanzó v0.13.0 con descargas de repetición MP4 desde menús de tarjeta de stream y NIP-05 (Verificación Basada en DNS) para perfiles. El publicador RTMP migró a la Expo Modules API. El rendimiento de streaming en conexiones de menor ancho de banda mejoró, y se corrigieron crashes en dispositivos antiguos y streaming de iOS a Zap.Stream.
nostr-java v2.0.0
nostr-java lanzó v2.0.0 con tamaños de buffer WebSocket configurables, permitiendo a las aplicaciones manejar eventos Nostr más grandes sin truncamiento. El salto de versión mayor refleja cambios disruptivos en la API de conexión.
Prism 1.1.0
Prism lanzó 1.1.0 con soporte de contenido de formato largo (artículos kind 30023) y un editor Markdown para componer directamente en la app, seguido por un lanzamiento de corrección de bugs 1.1.1.
Angor v0.2.6
Angor, la plataforma de crowdfunding de Bitcoin, lanzó v0.2.6 con integración Boltz y un flujo de inversión de 1 clic. Tanto los tipos de inversión como de financiación de proyecto funcionan de extremo a extremo en testnet. El equipo señala que la UI está aproximadamente 70% completa.
Actualizaciones de NIPs
Cambios recientes al repositorio de NIPs:
Fusionados:
NIP-91: Operador AND para Filtros: Añade semántica de filtro AND para arrays de etiquetas en suscripciones de relay. Actualmente, especificar múltiples valores en un filtro de etiqueta (ej. múltiples etiquetas
p) coincide con eventos que contienen cualquiera de ellos. NIP-91 permite a los clientes requerir eventos que coincidan con todos los valores de etiqueta especificados simultáneamente, reduciendo ancho de banda y habilitando operaciones de índice más rápidas. Ya existen múltiples implementaciones de relay incluyendo nostr-rs-relay, satellite-node, worker-relay y applesauce. Anteriormente numerado NIP-119.NIP-30: Dirección de Conjunto de Emoji en Etiquetas: Las etiquetas de emoji personalizados en NIP-30 ahora pueden incluir una dirección opcional de conjunto de emoji. Hacer clic en un emoji en un cliente puede abrir el conjunto al que pertenece para marcar o navegar. Originado del cliente Chachi.
NIP-29: Añadir unallowpubkey y unbanpubkey: Dos nuevos comandos de admin para chat grupal NIP-29.
unallowpubkeyelimina una pubkey de la lista permitida sin banearla.unbanpubkeylevanta un ban sin re-añadir la pubkey a la lista de miembros. Anteriormente, la única forma de eliminar a alguien de la lista permitida también los baneaba, y desbanear requería re-añadir al usuario como miembro.
PRs Abiertos y Discusiones:
NIP-A7: Spells (abierto 27 feb): Propuesto por purrgrammer, los spells son consultas Nostr guardadas portátiles publicadas como eventos kind 777. Un spell codifica un filtro REQ o COUNT en etiquetas estructuradas (
kpara kinds,authorspara pubkeys,tagpara filtros de etiqueta arbitrarios) con variables de ejecución:$mese resuelve a la pubkey del usuario conectado,$contactsse expande a la lista de follows kind 3 del usuario. Marcas de tiempo relativas (7d,2w,1mo) permiten a los spells definir ventanas de tiempo móviles sin fechas hardcodeadas. Ya implementado en nak y Grimoire, los spells permiten a los usuarios crear, compartir y suscribirse a feeds curados que viajan entre clientes.NIP-59: Gift Wrap Efímero (kind 21059) (abierto 27 feb): Añade una variante efímera de gift wraps de NIP-59. Kind 21059 sigue la semántica efímera de NIP-01, por lo que los relays descartan eventos después de la entrega. Propuesto por ContextVM para transporte MCP donde la persistencia de mensajes es innecesaria.
ContextVM: MCP JSON-RPC sobre Nostr (abierto 27 feb): Especifica cómo transportar mensajes del Model Context Protocol sobre Nostr usando eventos efímeros kind 25910 con etiquetas
pyepara direccionamiento y correlación. Intencionalmente ligero, delega el detalle del protocolo a la especificación de ContextVM.NIP-29: Espacios en Vivo de Audio/Vídeo (abierto 25 feb, borrador): Borrador de fiatjaf extendiendo grupos de NIP-29 con audio y vídeo en vivo. La propuesta añade etiquetas opcionales
livekityno-texta eventos de metadatos de grupo. Cuando un usuario quiere unirse a un espacio de voz, el cliente solicita un JWT al relay en/.well-known/nip29/livekit/{groupId}. El relay verifica la membresía del grupo y emite un token con la pubkey hex del usuario como claimsub, que se pasa a LiveKit para transporte de medios. El acceso a salas de voz hereda el modelo de permisos existente del grupo, por lo que las reglas de membresía del lado del relay gobiernan quién puede hablar. Se está probando en Pyramid y Chachi.Propiedad Colaborativa de Eventos (abierto 24 feb): pablof7z propone un evento puntero (kind 39382) que declara un espacio colaborativo listando pubkeys de co-propietarios en etiquetas
py un kind de evento objetivo en una etiquetak. Cualquier propietario listado puede publicar eventos de ese kind con la misma etiquetad, y los clientes resuelven el estado actual consultando a todos los propietarios y tomando el evento más reciente. La atribución de co-autoría solo se muestra cuando una etiquetaaverificable referencia al puntero y el autor aparece en sus etiquetasp, previniendo reclamaciones falsificadas. Esto habilita páginas wiki compartidas y recursos co-autorizados sin asignar control a un solo par de claves.NIP-09: Eliminación en Cascada de Reposts (abierto 24 feb): Cuando un autor original elimina una nota, los relays también deberían eliminar cualquier repost kind 6 o kind 16 que la referencie. Motivado por preocupaciones de privacidad: los reposts pueden preservar información filtrada accidentalmente después de que el autor elimina la fuente. El cambio es solo del lado del relay, sin requerir modificaciones de cliente.
NIP-07: peekPublicKey (abierto 23 feb): Añade un método
peekPublicKey()a extensiones de navegador NIP-07. A diferencia degetPublicKey(), retorna la pubkey actual sin solicitar confirmación del usuario, habilitando auto-login silencioso cuando el usuario tiene auto-login habilitado.NIP-BB: Book (abierto 28 feb, borrador): Define cuatro kinds de evento direccionables (30300-30303) para publicación estructurada de libros en Nostr. Un evento Cover contiene metadatos raíz incluyendo título, imagen de portada, licencia vía etiquetas NIP-32 (Labeling), y código de idioma. Un evento Index mapea cada capítulo a su posición usando indexación fraccional base62, que permite a los autores insertar nuevos capítulos entre los existentes sin renumerar. Los eventos Chapter actúan como encabezados estructurales con imágenes opcionales, mientras los eventos Episode llevan la prosa real con un límite de 30.000 caracteres con etiquetas de imagen posicionadas. Las reseñas usan Zaps en eventos Cover con la descripción del Zap como texto de reseña.
NIP-54: Cambiar de Asciidoc a Djot (abierto 26 feb): Siguiendo la corrección de internacionalización de d-tag en diciembre, este PR propone reemplazar el formato de marcado Asciidoc de la wiki de NIP-54 con Djot, añadiendo una sección de justificación y ejemplos de wikilink para scripts no latinos.
NIP-66: Medidas Defensivas (abierto 26 feb): Basado en aprendizajes de los benchmarks de nostrability/outbox, añade llamadas explícitas para casos límite de NIP-66. Un PR #2241 complementario define etiquetas de salida para comprobaciones de SSL, geolocalización, red y conectividad.
NIP-C1: Pruebas de Identidad Criptográfica (entrada wiki, kind 30817): Propone eventos kind 30509 que vinculan criptográficamente certificados de firma APK con perfiles Nostr. La prueba funciona firmando un mensaje canónico que contiene la pubkey Nostr con la clave privada del certificado (soportando ECDSA, RSA PKCS1v15, Ed25519 y otros algoritmos estándar), luego publicando la firma en un evento kind 30509 firmado con la clave Nostr. Los verificadores pueden confirmar que la persona que controla el certificado de firma de una app Android también controla la pubkey Nostr que afirma publicarla. Las pruebas expiran después de un año por defecto y pueden revocarse explícitamente. Implementado en el toolchain de Zapstore.
NIP-31402: Registro de Oferta de Reparto de Ingresos SARA (entrada wiki, kind 30817): Define eventos direccionables kind 31402 para publicar ofertas de Simple Autonomous Revenue Agreement (SARA) en relays Nostr. Los emisores anuncian términos de reparto de ingresos liquidados por Lightning incluyendo porcentaje de participación en pool, disparador de pago, umbral en sats, duración del término y precios por niveles. Agentes y humanos pueden descubrir ofertas a través de relays y suscribirse autónomamente sin una plataforma central. El número de kind refleja el kind 30402 (L402 Service Registry, publicado por el mismo autor como entrada wiki complementaria) ya que SARA representa la contraparte de retorno de la relación de pago L402.
PRs Abiertos y Actualizaciones de Proyectos
Damus: NIP-89 (Recommended Application Handlers)
PR #3337 implementa soporte de etiqueta de cliente NIP-89 para Damus. La app ahora emite una etiqueta de cliente en todas las rutas de publicación (app principal, extensión de compartir, highlighter, borradores) y muestra “vía ClientName” junto a las marcas de tiempo cuando otras apps incluyen sus etiquetas. Un toggle de Privacidad en los ajustes de Apariencia permite a los usuarios desactivar la emisión de etiquetas. PR #3652 añade una sección de Almacenamiento en Ajustes con un gráfico circular interactivo desglosando el uso de disco de caché NostrDB y Kingfisher con soporte de exportación.
Abierto: PR #3657 añade respaldo de relay NIP-65 para notas citadas. Cuando un nevent en línea incluye una pubkey de autor pero no tiene pistas de relay y la nota no se encuentra en el pool del usuario, Damus obtiene la lista de relays kind 10002 del autor y reintenta desde sus relays de escritura.
Amethyst: NIP-39 (External Identities), NIP-C0, NIP-66
Amethyst fusionó una ola de implementaciones de NIP a través de 28 PRs. Las reclamaciones de identidad externa ahora se publican como eventos dedicados kind 10011 bajo NIP-39 (PR #1747), separando la identidad social de los metadatos kind 0 con respaldo compatible hacia atrás. El soporte de fragmentos de código vía NIP-C0 (PR #1744) añade eventos kind 1337 con accesores para lenguaje, extensión, runtime, licencia y dependencias. La implementación de monitoreo de relays NIP-66 (PR #1742) cubre ambos kinds de evento con parseo completo de etiquetas para métricas RTT, tipo de red, NIPs soportados y geohash.
DMs cifrados llegaron a Amethyst Desktop (PR #1710) con un diseño de chat de panel dividido soportando tanto NIP-04 (Encrypted Direct Messages) como NIP-17 (Private Direct Messages). Una nueva pantalla de feed de relay (PR #1733) permite a los usuarios explorar publicaciones de un relay específico con funcionalidad de seguir/dejar de seguir. Abierto: verificación NIP-05 resistente a la censura (PR #1734) añade una ruta de verificación paralela para identificadores .bit que resuelve contra la blockchain Namecoin en lugar de DNS HTTP. Cuando Amethyst detecta un sufijo .bit en un campo NIP-05, consulta un servidor ElectrumX-NMC para el historial de transacciones del nombre, parsea el script NAME_UPDATE de la última salida para extraer la pubkey Nostr, y rechaza nombres más antiguos de 36.000 bloques (la ventana de expiración de Namecoin). Las conexiones ElectrumX se enrutan a través de SOCKS5 cuando Tor está habilitado, con selección dinámica de servidor entre endpoints clearnet y .onion. Un caché LRU con TTL de una hora previene consultas repetidas a la blockchain.
Notedeck: Arquitectura Outbox
PR #1303 migra Notedeck de gestión de pool de relays ad-hoc a un modelo outbox centralizado con suscripciones delimitadas por cuenta. El módulo Messages ahora publica una lista de relays DM predeterminada si no existe ninguna y enruta DMs a los relays preferidos de los destinatarios según kind 10050.
Pika: Perfiles por Grupo y Feed Tutorial
Pika, la app de mensajería cifrada con Marmot disponible en iOS y Android con build de escritorio, ganó perfiles por grupo (PR #368). Los usuarios ahora pueden establecer un nombre de visualización y foto separados para cada chat grupal, junto con una biografía personalizada. Estos perfiles se publican como eventos kind 0 cifrados dentro del grupo Marmot, invisibles para cualquiera fuera de él, con respaldo al perfil Nostr global del usuario cuando no se establece un perfil específico de grupo. Cuando nuevos miembros se unen, el admin retransmite todos los perfiles de grupo almacenados y cada miembro republica el suyo propio al hacer commit. Las fotos de perfil se cifran con Marmot-media antes de subir a Blossom. El PR incluye 16 nuevas pruebas unitarias y expone la funcionalidad tanto a través de un comando CLI (update-group-profile) como de la UI.
Una nueva app web pika-news (PR #401) monitorea los PRs de GitHub del propio Pika y auto-genera recorridos tutoriales paso a paso a partir de diffs de PR, publicándolos como páginas renderizadas en servidor con autenticación NIP-07. Los usuarios pueden discutir tutoriales específicos en tiempo real a través de chat autenticado por Nostr.
diVine: Widgets Incrustables y Respuestas en Vídeo
diVine, la plataforma de compartición de vídeo nativa de Nostr, fusionó 132 PRs en diez días. Widgets de iframe incrustables (PR #1843) proporcionan una página /embed?npub=... autónoma que renderiza el perfil de un usuario y sus últimos vídeos. La funcionalidad de respuesta en vídeo (PR #1915), detrás de un feature flag, usa comentarios Kind 1111 (NIP-22) con metadatos imeta de NIP-92 (Media Attachments). Filtros de contenido de tres vías inspirados en Bluesky (PR #1797) ofrecen controles Mostrar/Advertir/Ocultar a través de 17 categorías de advertencia de contenido NIP-32.
strfry: Validación de Filtros REQ
PR #163 añade validación configurable de filtros REQ a strfry, el relay Nostr en C++. Los operadores pueden establecer máximo de filtros por REQ, presencia requerida de autor o etiqueta, listas blancas de kinds permitidos y límites de kind por filtro. La funcionalidad está dirigida a despliegues de relay NWC que necesitan aplicación estricta de filtros. Abierto: PR #173 añade compresión zstd opcional para payloads de eventos en el momento de ingesta.
rust-nostr: NIP-62 Request to Vanish
rust-nostr, la biblioteca de protocolo Nostr en Rust, añadió soporte de NIP-62 (Request to Vanish) a través de los tres backends de base de datos: LMDB, SQLite e in-memory. La implementación LMDB incluye opciones configurables para habilitar o deshabilitar la aplicación de NIP-09 y NIP-62 por despliegue.
NDK: Eventos Colaborativos y Timeout de NIP-46
NDK, el Nostr Development Kit para JavaScript/TypeScript, fusionó PR #380 introduciendo NDKCollaborativeEvent para documentos colaborativos multi-autor usando un evento puntero direccionable (kind 39382) que define autores autorizados. Un timeout configurable para NDKNip46Signer (PR #381) previene que operaciones de firma remota NIP-46 se queden colgadas indefinidamente cuando un bunker no responde.
TENEX: Categorización de Agentes y Control por Pubkey
TENEX, la plataforma de orquestación de agentes de IA nativa de Nostr, fusionó dos PRs relacionados con seguridad. La categorización de agentes basada en roles TIP-01 (PR #91) mapea categorías de agente (principal, orchestrator, worker, advisor, auditor) a restricciones de herramientas automatizadas vía un mapa de herramientas denegadas. El control de acceso por pubkey (PR #87) asegura que solo eventos de pubkeys en lista blanca o firmados por el backend se enruten junto a agentes conocidos; las pubkeys desconocidas se descartan silenciosamente con spans de OpenTelemetry para auditoría.
Zap Cooking: Panel de Membresía
Zap Cooking, la plataforma de compartición de recetas basada en Nostr, fusionó 25 PRs y 85 commits en diez días. Un panel de membresía (PR #228) muestra estado de suscripción con fechas de expiración y opciones de gestión/mejora, re-habilita puertas de funcionalidades para niveles Sous Chef y Zappy con comprobaciones tanto del lado del cliente como del servidor, y estandariza nombres de niveles a través de 26 archivos. La carga de mensajes de grupo en dos fases (PR #227) proporciona una obtención inicial rápida de 3 días para visualización instantánea seguida de un relleno en segundo plano de 40 días.
El almacenamiento de mnemónico de billetera se movió de cifrado derivado de pubkey a cifrado para sí mismo con NIP-44 (PR #224), corrigiendo una vulnerabilidad donde el esquema anterior derivaba su clave de SHA-256(pubkey), que es efectivamente sin cifrar ya que las pubkeys son públicas. Las billeteras existentes se migran silenciosamente en la primera carga. El chat grupal NIP-29 ganó indicadores de no leídos con insignias de punto rojo y acceso solo por invitación con códigos de invitación kind 9009 (PR #213). Las vistas previas de enlaces y embebidos de eventos Nostr ahora se renderizan en DMs y mensajes grupales (PR #218). Una sección de respaldo Nostr en Ajustes (PR #210) almacena follows y listas de silenciados vía almacenamiento cifrado de NIP-78 (Application-specific Data) con versionado rotativo de 3 slots. El rendimiento de arranque mejoró mediante servicios de notificación diferidos, renderizado DOM perezoso vía IntersectionObserver (reduciendo nodos DOM de ~15.000 a ~3.000 en un feed de 200 eventos), y TTLs extendidos de caché outbox (PR #208). Un modal personalizable de impresión de recetas (PR #205) permite a los usuarios alternar qué secciones incluir con vista previa en vivo. La integración del Branta SDK (PR #222) añade protecciones de verificación para solicitudes POST y GET.
Keep: Migración de Estado por Rust
Keep, el gestor de claves privadas basado en Nostr para Android, fusionó PR #178, eliminando cuatro almacenes de configuración Kotlin en favor de estado compartido impulsado por Rust desde la capa keep-mobile. Un bucle de sondeo de 10 segundos fue reemplazado con KeepStateCallback basado en push desde Rust. PR #179 añade respaldo y restauración cifrados con protección por frase de contraseña.
Mostro Mobile: Cifrado de Chat de Disputas
Mostro Mobile, el cliente móvil para la plataforma de trading P2P de Bitcoin Mostro, lanzó una migración de dos fases del cifrado de chat de disputas. El primer paso (PR #495) cambia de envoltorio específico de mostro a cifrado de clave compartida derivado de la pubkey del admin. Construyendo sobre eso, PR #501 unifica el modelo de mensajes con NostrEvent y almacena eventos gift wrap cifrados en disco, consistente con el patrón de chat peer-to-peer. Una corrección de firma BIP-340 (PR #496) sobrescribe la dependencia bip340 a 0.2.0, resolviendo un bug de relleno en bigToBytes() que causaba que 1-2% de las firmas Schnorr fueran inválidas y 100% de fallo para claves cuya clave pública comienza con 0x00. Los Detalles de Orden ahora muestran etiquetas de estado legibles en lugar de valores de protocolo crudos, localizados en inglés, español, italiano y francés (PR #502). HalCash fue añadido y SEPA eliminado como método de pago (PR #493), ya que las transferencias SEPA pueden exceder 24 horas (SEPA Instant permanece).
Del lado del servidor, Mostro corrigió la restauración de sesión de disputas para incluir el campo de iniciador (PR #599) y ahora cierra automáticamente disputas activas cuando un vendedor libera fondos, publicando un evento Nostr de resolución para que los clientes admin vean la resolución (PR #606).
Cinco Años de Febreros de Nostr
El boletín del mes pasado trazó los hitos de enero de Nostr desde el desarrollo temprano pasando por la explosión de Damus hasta la infraestructura de seguridad en 2026. Esta retrospectiva cubre lo que sucedió cada febrero desde 2021 hasta 2026.
Febrero 2021: La Reescritura
Tres meses después de su existencia, el febrero de Nostr produjo el cambio temprano más trascendental del protocolo. El 14-15 de febrero, fiatjaf reescribió NIP-01, reemplazando el formato de mensaje original con el modelo EVENT/REQ/CLOSE que el protocolo aún utiliza. Antes de esta reescritura, los clientes y relays se comunicaban a través de una estructura más simple. Separar la publicación de eventos (EVENT) de la gestión de suscripciones (REQ/CLOSE) habilitó el filtrado del lado del relay que resultaría esencial para escalar.
NIP-04 llegó el mismo mes, añadiendo mensajes directos cifrados usando secretos compartidos derivados del intercambio de claves Diffie-Hellman sobre secp256k1. Su cifrado era básico (AES-256-CBC) y luego sería reemplazado por la criptografía auditada de NIP-44, pero dio al puñado de usuarios tempranos su primer canal de comunicación privada en el protocolo.
Las herramientas se expandieron con noscl, un cliente de línea de comandos en Go para interacción con relays basada en terminal, y futurepaul comenzó nostr-rs, una implementación Rust temprana. La red completa funcionaba con dos o tres relays, coordinada a través de un grupo de Telegram, con aproximadamente siete contribuidores activos.
Febrero 2022: Ganando Impulso
La publicación en Hacker News del 31 de diciembre de 2021 continuó atrayendo desarrolladores en febrero. El repositorio nostr-protocol/nostr (el repositorio de NIPs formal no existiría hasta mayo de 2022) recibió seis pull requests en febrero, incluyendo NIP-13 (Proof of Work) de vinliao, NIP-14 (Reputation) de fiatjaf, NIP-15 (Resource Relations) de Cameri, y NIP-17 (Git Updates Over Nostr) de melvincarvalho. El número de NIP fue posteriormente reasignado a Private Direct Messages; la colaboración git en Nostr continuó separadamente a través de lo que se convirtió en gitworkshop.dev.
El nostr-rs-relay de Greg Heartsfield fue el caballo de batalla del mes con 34 commits y tres lanzamientos. La versión 0.5.0 del 12 de febrero añadió límites de publicación de usuarios verificados con NIP-05. Las versiones 0.5.1 y 0.5.2 siguieron en las dos semanas siguientes, y el relay manejó la mayor parte del tráfico de la red por sí solo.
Robert C. Martin (Uncle Bob) estaba construyendo more-speech, un cliente de escritorio en Clojure, registrando 69 commits entre el 18 de enero y finales de febrero. Su participación atrajo atención de la comunidad más amplia de ingeniería de software. La extensión de navegador nos2x de fiatjaf lanzó soporte de descifrado NIP-04 y políticas de preferencia de relay en febrero, implementando la interfaz window.nostr (NIP-07) que los clientes web aún usan para delegación de claves.
Branle, aún el cliente web principal, ganó registro de manejador de protocolo web+nostr el 13 de febrero, un intento temprano de deep linking entre aplicaciones Nostr. nostr-tools reforzó la validación NIP-05. go-nostr añadió soporte de DM cifrado NIP-04 y parseo NIP-12 (Generic Tag Queries) a través de 11 commits. La red operaba con aproximadamente 7-15 relays con una base de usuarios activos probablemente en los bajos cientos. Damus y Nostream aún no existían y no aparecerían hasta abril de 2022.
Febrero 2023: Atención Internacional
Febrero 2023 trajo a Nostr su mayor ola de atención pública. Damus, el cliente iOS de William Casarin, había sido aprobado en la App Store de Apple el 31 de enero después de repetidos rechazos. Para el 1 de febrero alcanzó el top 10 en Redes Sociales de EE.UU. Dos días después, el 2 de febrero, Apple retiró Damus de la App Store de China supuestamente a petición de la Administración del Ciberespacio de China.
Grandes medios incluyendo TechCrunch y CoinDesk cubrieron la retirada, amplificando el conocimiento tanto de la app como del protocolo. Las claves públicas únicas con metadatos en nostr.directory cruzaron las 300.000 para el 3 de febrero. Todos los relays eran operados por entusiastas pagando de su bolsillo, y la infraestructura luchó por manejar la carga. Se rastreaban aproximadamente 289 relays a principios de febrero, un número que continuó subiendo.
El repositorio de NIPs registró 29 pull requests fusionados ese mes, el conteo mensual más alto en la historia del protocolo hasta ese punto. NIP-57 (Lightning Zaps) y NIP-23 (Long-form Content) ambos se fusionaron el 13 de febrero, añadiendo micropagos Bitcoin y expandiendo Nostr más allá de publicaciones cortas en un solo día. NIP-65 (Relay List Metadata) se había fusionado una semana antes el 7 de febrero, habilitando el modelo outbox que seguiría. NIP-46 (Nostr Connect) y NIP-58 (Badges) también aterrizaron antes de fin de mes.
La Human Rights Foundation otorgó $50.000 a William Casarin para desarrollo de Nostr y Damus el 21 de febrero, una de las primeras subvenciones institucionales a un proyecto Nostr. OpenSats aún no había lanzado su fondo Nostr (eso llegaría en julio de 2023).
Febrero 2024: Durabilidad del Protocolo
Febrero 2024 cambió el enfoque del crecimiento a la durabilidad del protocolo. NIP-17 (Private Direct Messages), abierto desde el julio anterior, estaba trabajando hacia un reemplazo del envejecido cifrado NIP-04 usando la criptografía auditada de NIP-44 y el gift wrapping de NIP-59. NIP-04 filtraba metadatos a operadores de relay, quienes podían ver pares de remitente-destinatario. NIP-17 oculta la identidad del remitente detrás de pares de claves desechables y se fusionó esa primavera después de una ronda final de revisión en marzo.
NIP-29 (Simple Groups) se fusionó el 28 de febrero después de meses de discusión, definiendo cómo los relays pueden alojar chats grupales moderados con roles de admin y control de acceso. NIP-92 (etiquetas imeta) se fusionó el 1 de febrero, estandarizando cómo los clientes adjuntan dimensiones de imagen y vistas previas blurhash a eventos de medios.
El 16 de febrero, el repositorio de NIPs añadió BREAKING.md, un archivo que rastrea cambios incompatibles hacia atrás en la especificación del protocolo. Su creación reconoció que Nostr había alcanzado un nivel de madurez donde los cambios disruptivos necesitaban documentación formal.
Veintidós pull requests se fusionaron ese mes. npub.cash se lanzó como servicio de dirección Lightning que permite a cualquier npub recibir pagos sin ejecutar un servidor. Un artículo académico publicado el 8 de febrero encontró que el 95% de los relays de uso gratuito no podían cubrir costos operacionales a través de donaciones, con el 35% de los relays de pago cobrando tarifas de admisión por debajo de 1.000 sats (aproximadamente $0,45 en ese momento).
Febrero 2025: Crecimiento de Infraestructura
Febrero 2025 produjo 28 pull requests fusionados al repositorio de NIPs. Un NIP de Derecho a Desvanecerse se fusionó el 19 de febrero, definiendo cómo los usuarios pueden solicitar la eliminación de sus datos de relays en respuesta a preguntas regulatorias sobre portabilidad de datos y control del usuario.
NIP-60 (Cashu Wallet) y NIP-61 (Nutzaps) recibieron actualizaciones de simplificación, agilizando el formato de almacenamiento de tokens ecash. Un despliegue de q-tag (etiqueta de cita) continuó a través de múltiples NIPs, estandarizando cómo los eventos referencian otros eventos para citas e hilos.
Los lanzamientos de clientes marcaron progreso constante. Notedeck v0.3.0 alpha se lanzó el último día de enero, con adopción continuando en febrero. Primal v2.1 siguió el 7 de febrero, y GRAIN v0.3.0, una implementación de relay en Go, se lanzó el 21 de febrero.
NOSTRLDN v5 reunió a la comunidad Nostr de Londres para su quinto meetup. Un puente DVMCP conectó las Máquinas de Venta de Datos de Nostr (NIP-90) con el Model Context Protocol, prefigurando el trabajo de integración de agentes de IA que llegaría el mes siguiente.
Febrero 2026: Más Allá de las Redes Sociales
La actividad de febrero 2026 se extrae de los números de Nostr Compass #8 al #11.
Febrero 2026 produjo la gama más amplia de desarrollo de capa de aplicación en cualquier mes de Nostr. Mostro lanzó su primera beta pública para trading peer-to-peer descentralizado de Bitcoin, y Zapstore alcanzó 1.0 estable después de meses en pruebas de release candidate. White Noise v0.3.0 entregó mensajería en tiempo real cifrada con Marmot con soporte de firmante Amber y más de 160 mejoras fusionadas.
Propuestas competidoras de agentes de IA de pablof7z (NIP-AE para flujos de trabajo de agentes, NIP-AD para anuncios de servidores MCP) y joelklabo (AI Agent Messages) llegaron junto a una propuesta de Coordinación de Agentes DVM extendiendo NIP-90. ContextVM lanzó mejoras del SDK conectando el Model Context Protocol al transporte Nostr. Burrow añadió mensajería cifrada con Marmot tanto para agentes de IA como para humanos, extendiendo la infraestructura de identidad y relays de Nostr a la comunicación máquina a máquina.
FIPS lanzó una implementación funcional en Rust de redes de malla nativas de Nostr, usando pares de claves secp256k1 como identidades de nodo con enrutamiento agnóstico de transporte sobre UDP, Ethernet, Bluetooth o radio LoRa. Su diseño demostró que el modelo de claves de Nostr se extiende más allá de las redes sociales hacia infraestructura de red física.
OpenSats anunció su decimoquinta ronda de subvenciones Nostr, financiando proyectos incluyendo ContextVM y Nostube. Los cambios de protocolo incluyeron soporte de NIP-47 hold invoice para Nostr Wallet Connect y NIP-45 (Counting Results) HyperLogLog para estimación de conteo del lado del relay. La descubribilidad de proveedores de servicio de NIP-85 (Trusted Assertions) para puntuación de Web of Trust también se fusionó. rust-nostr comenzó un rediseño completo de API mientras Nostria 3.0 y Frostr (iOS TestFlight) ambos se lanzaron. La capa de caché local de Blossom abordó la disponibilidad de medios a través de relays.
Mirando Hacia Adelante
Cinco febreros de historia del protocolo muestran una progresión consistente desde trabajo fundacional hasta diversificación de la capa de aplicación, con la afluencia de usuarios de 2023 como punto de inflexión. En 2021, siete contribuidores trabajaban a través de tres relays. Para 2026, el mismo protocolo soportaba redes de malla y propuestas de agentes autónomos funcionando sobre infraestructura de producción.
Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? Escríbenos vía DM NIP-17 o encuéntranos en Nostr.