<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Boletines on Nostr Compass</title><link>https://nostrcompass.org/es/newsletters/</link><description>Recent content in Boletines on Nostr Compass</description><generator>Hugo</generator><language>es</language><atom:link href="https://nostrcompass.org/es/newsletters/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nostr Compass #26</title><link>https://nostrcompass.org/es/newsletters/2026-06-10-newsletter/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-06-10-newsletter/</guid><description>&lt;p>La organización Marmot Protocol abre tres nuevos repos para un borrador de protocolo v2 y un linaje de clientes nativos: un workspace Rust llamado &lt;code>darkmatter&lt;/code>, una app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> y una app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. El Whitenoise Flutter original se archiva. Chama comprime diecisiete lanzamientos en una semana y cruza la línea de app independiente en v3.0.0 antes de aterrizar un rediseño completo de la UI de la sala de intercambio y storefronts por vendedor en v3.1.0, encima de shares Shamir solo del titular, sustitución de árbitro, enrutado de comunidad mundial y notificaciones de intercambio de extremo a extremo. Coracle lanza un servicio de relay alojado de pago respaldado por la pila de código abierto Caravel y zooid, con integración profunda de Flotilla planeada. Angor cambia a mainnet por defecto en v0.2.30 y aterriza una prueba de financiación UAT de 3 usuarios en v0.2.29. Amethyst aterriza 41 PRs no publicados continuando el trabajo de NIP-32 / NIP-F4 / Tor de la semana pasada. NIP-67 (pista de completitud EOSE) y autocompletado NIP-50 se fusionan, cerrando dos brechas de corrección de larga data en el protocolo de relay central. NIP-GART propone un formato de cable que preserva la privacidad para alertas de emergencia, y NIP-46 recoge un método de logout.&lt;/p></description><content:encoded>&lt;p>La organización Marmot Protocol abre tres nuevos repos para un borrador de protocolo v2 y un linaje de clientes nativos: un workspace Rust llamado &lt;code>darkmatter&lt;/code>, una app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> y una app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. El Whitenoise Flutter original se archiva. Chama comprime diecisiete lanzamientos en una semana y cruza la línea de app independiente en v3.0.0 antes de aterrizar un rediseño completo de la UI de la sala de intercambio y storefronts por vendedor en v3.1.0, encima de shares Shamir solo del titular, sustitución de árbitro, enrutado de comunidad mundial y notificaciones de intercambio de extremo a extremo. Coracle lanza un servicio de relay alojado de pago respaldado por la pila de código abierto Caravel y zooid, con integración profunda de Flotilla planeada. Angor cambia a mainnet por defecto en v0.2.30 y aterriza una prueba de financiación UAT de 3 usuarios en v0.2.29. Amethyst aterriza 41 PRs no publicados continuando el trabajo de NIP-32 / NIP-F4 / Tor de la semana pasada. NIP-67 (pista de completitud EOSE) y autocompletado NIP-50 se fusionan, cerrando dos brechas de corrección de larga data en el protocolo de relay central. NIP-GART propone un formato de cable que preserva la privacidad para alertas de emergencia, y NIP-46 recoge un método de logout.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter-borrador-de-protocolo-clientes-nativos-app-flutter-archivada">Marmot v2 (Dark Matter): borrador de protocolo, clientes nativos, app Flutter archivada&lt;/h3>
&lt;p>Esta semana surgieron tres nuevos repos bajo la organización GitHub &lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a>, formando juntos la forma temprana de progreso de un borrador del protocolo Marmot v2 y un linaje de clientes nativos que reemplaza la línea de app Flutter. &lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust, creado el 13 de mayo, treinta y cuatro commits en los últimos siete días) alberga el borrador del protocolo v2 en &lt;code>spec/&lt;/code>, un motor CGKA respaldado por OpenMLS en &lt;code>crates/cgka-engine&lt;/code>, un simulador de conformidad con pruebas de propiedad y un modelo formal Tamarin para pruebas de convergencia. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift, creado el 25 de mayo) es un cliente SwiftUI respaldado por un xcframework UniFFI &lt;code>MarmotKit&lt;/code> vendorizado generado desde el workspace Rust. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose, creado el 25 de mayo) se apoya en los mismos bindings Rust. El Whitenoise Flutter original ha sido marcado &lt;a href="https://github.com/marmot-protocol/whitenoise-archive">&lt;code>whitenoise-archive&lt;/code>&lt;/a> (&amp;ldquo;ARCHIVED: This was the original White Noise Flutter app&amp;rdquo;); un nuevo repo Dart &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> lleva la línea Flutter activa en paralelo.&lt;/p>
&lt;p>Lee esto como un progreso temprano hacia un Marmot más fiable, no como un pivote terminado. El README de darkmatter se autodenomina &amp;ldquo;Candidate Marmot v2 protocol draft, CGKA engine, and conformance workspace&amp;rdquo; y dice directamente: &amp;ldquo;MDK remains the deployed Rust protocol implementation until this draft and engine are adopted.&amp;rdquo; Dentro del workspace, el crate cgka-engine está etiquetado &lt;code>0.1.0&lt;/code>, &amp;ldquo;single internal consumer, not semver-stable.&amp;rdquo; Cada página de especificación lleva &amp;ldquo;Status: draft for internal review&amp;rdquo;. Tres estrellas en el repo del workspace y cero en las apps iOS y Android confirman que el trabajo es pre-anuncio. La dirección, el alcance y la disciplina son la señal aquí; la disponibilidad para producción no es la afirmación.&lt;/p>
&lt;p>El borrador del protocolo concreta los deltas v1-a-v2. La extensión MLS monolítica &lt;code>marmot_group_data&lt;/code> de MIP-01, que ha llevado el nombre del grupo, descripción, pubkeys de admin, id de enrutado del grupo Nostr, lista de relays, datos de imagen del grupo y ajustes de mensajes efímeros bajo un solo paraguas desde el inicio de Marmot, se &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">divide en componentes de app versionados&lt;/a>: &lt;code>marmot.group.profile.v1&lt;/code> para nombre y descripción, &lt;code>marmot.group.admin-policy.v1&lt;/code> para pubkeys de admin, &lt;code>marmot.transport.nostr.routing.v1&lt;/code> para el &lt;code>nostr_group_id&lt;/code> aleatorio y la lista canónica de relays, &lt;code>marmot.group.blossom.image.v1&lt;/code> para hash de imagen, clave de cifrado, nonce y clave de subida, y &lt;code>marmot.group.message-retention.v1&lt;/code> para los segundos de mensajes efímeros. Cada componente posee sus bytes exactos y su propia ruta de versionado, para que una futura característica pueda revisar un componente sin forzar al resto del estado del grupo a retransitar el consenso de la extensión MLS. Las credenciales MIP-00 también ganan un nuevo documento base &lt;code>account-identity-proof-v1.md&lt;/code>, señalado como &amp;ldquo;new in v2 and breaking&amp;rdquo;. La prueba de identidad ahora vive en su propia superficie, separada de la construcción del KeyPackage.&lt;/p>
&lt;p>Los deltas de biblioteca respaldan el retrabajo de especificación. &lt;code>cgka-engine&lt;/code> es la nueva máquina de estado local del grupo: envuelve OpenMLS, posee los estados de época &lt;code>Stable&lt;/code>, &lt;code>PendingPublish&lt;/code>, &lt;code>Merging&lt;/code> y &lt;code>Recovering&lt;/code>, traduce las intenciones en commits MLS, devuelve valores tipados &lt;code>IngestOutcome&lt;/code> y &lt;code>GroupEvent&lt;/code> para cada envoltorio de transporte entrante, y explícitamente no distribuye transporte ni persistencia. Un trait &lt;code>TransportPeeler&lt;/code> separa Nostr del motor, y un trait &lt;code>StorageProvider&lt;/code> separa SQLite (mediante &lt;code>storage-sqlite&lt;/code>, respaldado por SQLCipher) del motor. El MDK de hoy empaqueta todo esto junto; dividir las capas permite que un motor se ubique bajo un transporte de relay Nostr ahora y los también distribuidos &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">transportes QUIC stream y broker&lt;/a> más tarde, sin reescritura del modelo de convergencia. La propia convergencia está documentada como &lt;code>distributed-convergence.md&lt;/code> y probada en un modelo Tamarin que cubre selección determinista de rama, elegibilidad regulada por política, replay de ancla retenida, rechazo de rama obsoleta, reordenado de entrega, duplicación, invalidación de salida de app, traspaso welcome/commit, consumo de propuesta y regulación saliente durante la sincronización. Las pruebas de propiedad Rust luego verifican que el motor sigue las mismas reglas con objetos OpenMLS reales y el arnés del simulador. Trabajo de fiabilidad con métodos formales de este alcance está ausente de la pila Marmot actual.&lt;/p>
&lt;p>Ambos clientes nativos abandonan Flutter por kits de UI nativos de la plataforma. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> es SwiftUI puro con una Notification Service Extension que descifra los despertares de push MIP-05 en el dispositivo, vendoriza un paquete Swift &lt;code>MarmotKit&lt;/code> generado desde el workspace Rust y se registra bajo el bundle ID y app group &lt;code>dev.ipf.darkmatter&lt;/code>. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> es Kotlin y Jetpack Compose, con una compilación impulsada por &lt;code>just&lt;/code> que produce un APK &lt;code>arm64-v8a&lt;/code> firmado y lee endpoints de telemetría desde &lt;code>local.properties&lt;/code>. El README de Android indica el principio arquitectónico directamente: &amp;ldquo;Dark Matter owns protocol data and stores it in SQLite. The Android app should render that data, manage Android platform behavior, and keep UI lifecycle state. The Android app should not become a second database for Dark Matter data.&amp;rdquo; Eso refleja la disciplina de frontera que el README de cgka-engine aplica en la capa Rust, aplicada a la capa UI.&lt;/p>
&lt;p>Los clientes nativos importan para Marmot porque la debilidad más citada del protocolo ha sido la fiabilidad móvil bajo condiciones de entrega irregulares: despertares de notificación perdidos, carreras de commit MLS durante fluctuaciones de red, límites de background-fetch que dejan varados los avances de época. SwiftUI y Compose dan a los clientes acceso directo a las primitivas de procesamiento en segundo plano de la plataforma que Flutter alcanza mediante un puente de plugin, y la ruta de binding UniFFI mantiene la lógica del protocolo en un único workspace Rust distribuido como una biblioteca estática en ambas plataformas. La línea Whitenoise Flutter continúa en el repo desarchivado &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a>, por lo que el anuncio es aditivo: un nuevo linaje de cliente nativo corre junto a la app Flutter mientras la especificación v2 converge. El corte de producción desde MDK o la app Whitenoise actual espera a que el borrador, el motor y los clientes alcancen lanzamientos listos para producción.&lt;/p>
&lt;h3 id="chama-de-v200-a-v310-escrow-p2p-independiente-en-una-semana">Chama de v2.0.0 a v3.1.0: escrow P2P independiente en una semana&lt;/h3>
&lt;p>El cliente de escrow P2P nativo de Nostr introducido en Newsletter #25 en v1.3.0 publicó diecisiete lanzamientos etiquetados en los últimos siete días, terminando en &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> el 9 de junio con un rediseño de la UI de la sala de intercambio y storefronts por vendedor. El rastro de versiones cuenta la historia: &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a> es la base BREAKING, luego &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.1">v2.0.1&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.2">v2.0.2&lt;/a> y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a> cierran las brechas del pay-rail de financiación por WebView Fedi; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.1.0">v2.1.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.2.0">v2.2.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.0">v2.3.0&lt;/a> y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a> endurecen la capa del árbitro; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.4.0">v2.4.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.5.0">v2.5.0&lt;/a> y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a> añaden superficies de auto-custodia y enrutado de comunidad mundial; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.7.0">v2.7.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.8.0">v2.8.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.9.0">v2.9.0&lt;/a> y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a> superponen texto de clave en lenguaje llano, aplicaciones de grupo, arbitraje por plazo de disputa y reputación. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a> ata el paquete con notificaciones de intercambio de extremo a extremo, y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> el 9 de junio redibuja la pantalla de intercambio en torno a una columna vertebral de progreso Reserved → Locked → Settled, tarjetas de acción coloreadas por rol y una clase de listado de storefront por vendedor (swaps curados, loanbooks y facturas) que se distribuyen.&lt;/p>
&lt;p>El pivote arquitectónico vive en v2.0.0. El formato LOCK de escrow cambió para que cada share de una división Shamir 2-de-3 se cifre solo a su titular (sharePolicy &lt;code>holder-only-v1&lt;/code>). El ecash al portador de la federación ya no se reconstruye desde un único participante solo, cerrando una ruta donde una parte maliciosa con su propio share y un share retenido por la federación podía completar el intercambio sin consentimiento. Los clientes pre-2.0 fallan ruidosamente con &amp;ldquo;can&amp;rsquo;t find your share&amp;rdquo;; el intercambio no puede completarse en un cliente obsoleto, y no se pierden fondos en el proceso. Un lock v2.0 requiere que cada parte esté en v2.x para liquidar. v2.0.0 también añadió storefronts multi-unidad y una vista Market solo en sats.&lt;/p>
&lt;p>v2.1.0 introdujo la sustitución de árbitro: el share del árbitro en el índice Shamir 2 ahora se cifra en un orden de prioridad determinista sobre el pool de árbitros de la comunidad, para que un árbitro ausente pueda ser reemplazado sin varar el intercambio. v2.2.0 probó que la sustitución funcionó en producción en un intercambio de ₿121 y añadió respaldos de sustitución de curación. v2.3.0 cerró la última brecha de front-running de árbitro comprobando la membresía de comunidad del árbitro del listado en el momento del lock, y v2.3.1 cerró la carrera hermana donde un slot de árbitro autoasignado era una vista previa hasta que el lock los asentaba.&lt;/p>
&lt;p>Las superficies de auto-custodia llegaron en v2.4.0 (frase de recuperación BIP-39 para la wallet de ecash Fedimint, almacenada cifrada en Nostr) y v2.5.0 (respaldo del nsec maestro que posee la identidad Nostr y la semilla de la wallet). v2.6.0 reelaboró el onboarding en torno a un selector de comunidad global para que los usuarios en países sin una Chama local se enruten a la federación más cercana; las compilaciones anteriores rebotaban al usuario sin fallback. v2.7.0 reescribió la pantalla de clave de recuperación en lenguaje llano (&amp;ldquo;la única clave a tu cuenta y al dinero en ella; Chama nunca la ve y no puede resetearla; si la pierdes, nadie puede recuperar tu cuenta&amp;rdquo;). v2.8.0 añadió aplicaciones de grupo, tematización oscura/clara y añadió dos nuevos kinds de evento (38120 roster, 38121 aplicación). v2.9.0 cambió la resolución de disputas en el plazo: los intercambios impugnados que llegan a su expiración ahora se resuelven por dictamen del árbitro; el comportamiento anterior auto-reembolsaba. El lanzamiento está marcado COORDINATED por lo que todas las partes en una disputa deben actualizar. v2.10.0 añadió valoraciones pulgar-arriba/pulgar-abajo por intercambio como un nuevo kind de evento 38123.&lt;/p>
&lt;p>v3.0.0 es el hito donde la app deja de necesitar una comunidad coordinadora para operar. Las notificaciones de intercambio de extremo a extremo hacen ping al usuario solo en transiciones de estado accionables: la contraparte bloqueó los sats, el pago está listo para reclamar, la disputa requiere el dictamen del usuario como árbitro, o el intercambio se liquidó o expiró. Un interruptor en la pantalla Me activa o desactiva las notificaciones, y el prompt de permiso solo se dispara cuando el interruptor está habilitado. El dedup fire-once evita que una recarga de estado dispare una tormenta de alertas. También se cerró un bug del guardarraíl wrong-chama en &lt;a href="https://github.com/jesuspirate/chama/pull/103">PR #103&lt;/a>, donde versiones anteriores podían estampar un listado con la etiqueta de una chama pero la federación de otra chama. Los bundles de escritorio para Windows y Linux se distribuyen con el lanzamiento; el dmg de macOS se retiene hasta que la firma y la notarización aterricen.&lt;/p>
&lt;p>Chama ahora se une a Mostro y Shopstr como un marketplace nativo de Nostr, distinguido por arquitectura sin servidor, escrow Shamir 2-de-3 respaldado por Fedimint, cifrado de shares solo del titular y ser el único de los tres que distribuye un cliente de escritorio y móvil autocontenido sin una comunidad coordinadora.&lt;/p>
&lt;h3 id="coracle-hosting-servicio-de-relay-de-pago-más-pila-caravel-de-código-abierto">Coracle Hosting: servicio de relay de pago más pila Caravel de código abierto&lt;/h3>
&lt;p>El 3 de junio Hodlbod &lt;a href="https://nos.lol/e/f8586160cd12df479c261397353c99e6f3e4d870b616382e1b4338bad3ab498a">anunció Coracle Hosting&lt;/a> en &lt;a href="https://hosting.coracle.social">hosting.coracle.social&lt;/a>, un servicio de relay comunitario alojado que acepta pagos lightning recurrentes sobre NWC o tarjeta. El servicio está impulsado por &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, el frontend de facturación y aprovisionamiento de Coracle, y &lt;a href="https://gitea.coracle.social/coracle/zooid">zooid&lt;/a>, un runtime de relay que aloja muchos relays virtuales en una sola máquina. Ambos son de código abierto en el gitea auto-alojado de Coracle. Caravel se distribuye con integración opcional de &lt;a href="https://livekit.io">livekit&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> que los operadores pueden activar por relay. Un nivel gratuito con límites de conteo de miembros permite a los operadores evaluar el servicio antes de comprometer los datos de pago.&lt;/p>
&lt;p>Hodlbod es franco sobre el modelo de negocio: monetizar código abierto vendiendo una versión alojada de una pila que cualquier otro puede también ejecutar. El foso competitivo es la integración con &lt;a href="https://flotilla.social">Flotilla&lt;/a>, que es el siguiente paso planeado. Flotilla posee la superficie de usuario, por lo que la opción alojada servida desde dentro de Flotilla se convierte en la ruta por defecto para cualquier usuario que prefiera infraestructura gestionada. Hodlbod ofreció añadir otros operadores de Caravel al selector de alojamiento alternativo de Flotilla si contactan, manteniendo la puerta abierta a un mercado de alojamiento federado.&lt;/p>
&lt;p>Caravel se une a &lt;a href="https://relay.tools">relay.tools&lt;/a> como una plataforma pública de aprovisionamiento de relays Nostr con niveles de miembros de pago. relay.tools precede a Caravel y se distribuye como el servicio dominante de creación de relays hoy, con su propio directorio de relays comunitarios y flujos de unión de miembros o moderadores de pago. La característica distintiva de Caravel es la pila coordinada: el runtime del relay (zooid), el frontend de facturación y aprovisionamiento (Caravel mismo) y el selector del lado del cliente (integración con Flotilla, aún en vuelo) se distribuyen como un solo diseño. La otra característica distintiva es la densidad de muchos-relays-por-proceso de zooid, donde los relays de clientes comparten un único proceso host para que el operador amortice los costes de alojamiento entre muchas comunidades pequeñas. Este es el mismo argumento de densidad que hizo viable el shared web hosting a principios de los 2000, aplicado a la capa de relay de Nostr.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="angor-v0229-y-v0230-mainnet-por-defecto-y-prueba-de-financiación-uat-de-3-usuarios">Angor v0.2.29 y v0.2.30: mainnet por defecto y prueba de financiación UAT de 3 usuarios&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.29">Angor v0.2.29&lt;/a> el 4 de junio y &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.30">v0.2.30&lt;/a> el 8 de junio son los dos lanzamientos de esta semana para el protocolo descentralizado de financiación Bitcoin-y-Nostr. El cambio destacado de v0.2.30 es &lt;a href="https://github.com/block-core/angor/pull/893">PR #893&lt;/a>, que cambia la red por defecto a mainnet. Angor aún se distribuye como un lanzamiento alfa inestable, pero el cambio a mainnet por defecto señala que el protocolo ha superado la fase solo-testnet para los clientes de escritorio y móvil. v0.2.30 también aterriza un flujo de creación de proyecto móvil de un solo toque con subida de imagen y reset de scroll (&lt;a href="https://github.com/block-core/angor/pull/889">PR #889&lt;/a>) y resuelve una condición de carrera donde el spinner de la factura lightning podía colgarse (&lt;a href="https://github.com/block-core/angor/pull/890">PR #890&lt;/a>).&lt;/p>
&lt;p>v0.2.29 añadió una prueba UAT de extremo a extremo en &lt;a href="https://github.com/block-core/angor/pull/881">PR #881&lt;/a> cubriendo envío de fondos de 3 usuarios en 10 rondas con gastos no confirmados, la primera prueba de flujo de financiación multi-usuario en el conjunto de pruebas de Angor. El lanzamiento también añadió un plan de implementación para una CLI y servidor MCP de Angor (&lt;a href="https://github.com/block-core/angor/pull/792">PR #792&lt;/a>), con mejoras en el CLI para el flujo de trabajo de pruebas MCP en &lt;a href="https://github.com/block-core/angor/pull/880">PR #880&lt;/a>. &lt;a href="https://github.com/block-core/angor/pull/885">PR #885&lt;/a> de DavidGershony corrigió una factura lightning Boltz que usaba la red incorrecta tras un cambio de red en runtime, un bug que habría aflorado en producción tras el cambio a mainnet por defecto de v0.2.30. Los ajustes ahora ofrecen una purga opcional del archivo de wallet de recuperación durante el borrado de datos (&lt;a href="https://github.com/block-core/angor/pull/883">PR #883&lt;/a>).&lt;/p>
&lt;h3 id="sprout-v0315-refresco-de-ttl-de-canal-efímero-y-comandos-slash-acp">Sprout v0.3.15: refresco de TTL de canal efímero y comandos slash ACP&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.15">Sprout v0.3.15&lt;/a>, publicado el 10 de junio, es el octavo lanzamiento en una serie que comenzó con v0.3.7 el 2 de junio. Newsletter #25 cubrió la serie v0.3.1 a v0.3.6 con la integración mesh-llm y el trabajo de secciones de canal; v0.3.7 a v0.3.15 son downstream de eso, centrados en pulido y algunas adiciones de cara al usuario. El cambio más visible al usuario es un refresco de TTL para canales efímeros en &lt;a href="https://github.com/block/sprout/pull/902">PR #902&lt;/a>: cuando un usuario desarchiva un canal efímero, Sprout extiende el time-to-live del canal para que el desarchivado no re-archive inmediatamente bajo el temporizador de expiración original. Los emojis personalizados en móvil llegan en &lt;a href="https://github.com/block/sprout/pull/906">PR #906&lt;/a> junto con un rediseño de ajustes, y los conteos de reacción ahora se animan al cambiar (&lt;a href="https://github.com/block/sprout/pull/904">PR #904&lt;/a>).&lt;/p>
&lt;p>&lt;a href="https://github.com/block/sprout/pull/905">PR #905&lt;/a> corrige una brecha de larga data donde los nombres de visualización de múltiples palabras se rompían y la extracción de menciones &lt;code>nostr:npub&lt;/code> de &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> se descartaba silenciosamente. Una UI de equipo respaldada por directorio para escritorio se distribuye en &lt;a href="https://github.com/block/sprout/pull/912">PR #912&lt;/a> con comandos install, sync y reveal. Los comandos slash ahora pasan a los conectores &lt;a href="https://agentclientprotocol.com">ACP&lt;/a> en &lt;a href="https://github.com/block/sprout/pull/919">PR #919&lt;/a>, permitiendo a Sprout reenviar comandos estilo &lt;code>/help&lt;/code> directamente a los runtimes de agente mientras la UI de Sprout se mantiene fuera de la ruta.&lt;/p>
&lt;h3 id="wisp-v111-integración-de-wallet-spark-y-guardia-de-pegado-de-nsec">Wisp v1.1.1: integración de wallet Spark y guardia de pegado de nsec&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.1">Wisp v1.1.1&lt;/a>, publicado el 5 de junio, aterriza una pantalla de conexión de wallet de dos niveles con sub-pantalla &lt;a href="https://www.spark.money">Spark&lt;/a> en &lt;a href="https://github.com/barrydeen/wisp/pull/548">PR #548&lt;/a> y paridad del dashboard con la UI de wallet de iOS en &lt;a href="https://github.com/barrydeen/wisp/pull/549">PR #549&lt;/a>. El lanzamiento incluye una &lt;a href="https://github.com/barrydeen/wisp/pull/553">guardia de pegado de nsec&lt;/a> de todo el sistema que detecta un pegado con prefijo &lt;code>nsec1&lt;/code> en cualquier lugar de la app y bloquea al campo de aceptarlo, cerrando uno de los footguns más citados en la UX de Nostr. Inicio de sesión por escaneo QR más un modo solo lectura para &lt;code>npub&lt;/code> y &lt;code>nprofile&lt;/code> se distribuye en &lt;a href="https://github.com/barrydeen/wisp/pull/552">PR #552&lt;/a>, permitiendo a un usuario navegar un perfil solo lectura. Los mensajes de zap ahora se renderizan como mini-posts en el drawer de engagement (&lt;a href="https://github.com/barrydeen/wisp/pull/559">PR #559&lt;/a>) para que las notas de zap lleven su texto junto con la cantidad de sats. Un filtro de web of trust en las respuestas de hilo aterriza en &lt;a href="https://github.com/barrydeen/wisp/pull/583">PR #583&lt;/a>, permitiendo a los usuarios ocultar spam de respuesta de cuentas fuera de su grafo de follow.&lt;/p>
&lt;h3 id="nostria-v3146-y-nospeak-113-retrabajo-de-notificaciones-y-reinicio-de-ice">Nostria v3.1.46 y nospeak 1.1.3: retrabajo de notificaciones y reinicio de ICE&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.46">Nostria v3.1.46&lt;/a> el 7 de junio termina una serie de tres lanzamientos que retrabajó el contador de notificaciones para contar solo las nuevas notificaciones desde la última vista, eliminando una inflación de larga data donde cargar notificaciones más antiguas desplazándose aumentaba el conteo de la insignia. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.45">Nostria v3.1.45&lt;/a> corrigió un bug de pago dividido que afectaba a pagos lightning y de código QR y descartó una UI translúcida previamente planeada como inviable en el compositor de Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.1.3">nospeak v1.1.3&lt;/a> el 4 de junio añade reinicio de ICE en estado FAILED para llamadas de voz 1 a 1. El comportamiento estándar de WebRTC descarta una llamada cuando los candidatos ICE se agotan sin una ruta alternativa; la ruta de reinicio de ICE renegocia candidatos para que la llamada se recupere de cambios transitorios de NAT o red. Las llamadas Android ahora mantienen la pantalla encendida durante las videollamadas.&lt;/p>
&lt;h2 id="cambios-sin-publicar">Cambios sin publicar&lt;/h2>
&lt;h3 id="amethyst-41-prs-continuando-la-pista-nip-32--nip-f4--tor">Amethyst: 41 PRs continuando la pista NIP-32 / NIP-F4 / Tor&lt;/h3>
&lt;p>Amethyst fusionó 41 PRs esta semana sin cortar una etiqueta de lanzamiento, encima de los 52 PRs de la semana pasada y el trabajo de etiquetado de hashtags &lt;a href="https://nostrcompass.org/es/topics/nip-32/">NIP-32&lt;/a> y podcast &lt;a href="https://nostrcompass.org/es/topics/nip-f4/">NIP-F4&lt;/a> cubierto en Newsletter #25. La rama activa sigue acumulando características para el próximo lanzamiento etiquetado, superponiendo pulido a las adiciones destacadas de la semana pasada: descubrimiento de etiquetadores de hashtags, pantalla de podcast, pistas de música y playlists, watchdog de auto-curación de Tor, firmadores efímeros para subidas anónimas y zaps en cadena con filtrado NIP-05. La producción de PRs de Amethyst sigue siendo la más alta de cualquier cliente Nostr, y la cola sin publicar es la hoja de ruta de facto para lo que otros clientes Nostr para Android necesitarán igualar.&lt;/p>
&lt;h3 id="damus-rastreo-de-relays-desde-mensajes-ok-y-changelog-de-v117">Damus: rastreo de relays desde mensajes OK y changelog de v1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3786">Damus PR #3786&lt;/a>, fusionado el 3 de junio, añade los mensajes &lt;code>OK&lt;/code> exitosos de un relay a la lista de post-relay. Las compilaciones anteriores de Damus poblaban la lista de relays vistos solo al recibir un mensaje genérico del relay, lo que significaba que un relay que reconocía el post pero no entregaba eventos de vuelta era invisible para el usuario. El cambio importa para los usuarios que quieren confirmar que su post aterrizó en su relay outbox preferido. &lt;a href="https://github.com/damus-io/damus/pull/3796">PR #3796&lt;/a> corrige un ciclo &lt;code>AttributeGraph&lt;/code> en Profile View, y &lt;a href="https://github.com/damus-io/damus/pull/3725">PR #3725&lt;/a> aterriza el changelog de v1.17 antes del próximo lanzamiento etiquetado.&lt;/p>
&lt;h3 id="shopstr-doble-publicación-nip-34">Shopstr: doble publicación NIP-34&lt;/h3>
&lt;p>El &lt;a href="https://relay.ngit.dev/npub1u350hpq840naxzkkle4gmdtvzanfxmjd9m9tytn5355aua7jh2cqgfuw39/shopstr.git">repo de shopstr en ngit&lt;/a> fue anunciado en Nostr esta semana como un repo git &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a>, uniéndose a los repos rastreados de ngit. El repo GitHub del cliente de tienda sigue siendo la superficie principal de desarrollo; el anuncio NIP-34 hace disponible una ruta paralela de colaboración git-sobre-Nostr. Este es el segundo proyecto importante de marketplace Nostr en doble-publicar a NIP-34 tras &lt;a href="https://relay.ngit.dev/">Mostro&lt;/a>, y continúa la migración gradual de metadatos de proyectos al transporte git de Nostr.&lt;/p>
&lt;h3 id="hermes-marmot-pasarela-de-agente-ia-sobre-mls">Hermes-Marmot: pasarela de agente IA sobre MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/notmandatory/hermes-marmot">hermes-marmot&lt;/a>, un plugin para el &lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>, conecta la superficie de mensajería de un agente IA con grupos &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> (MLS-sobre-Nostr) usando &lt;a href="https://github.com/marmot-protocol/mdk-python">mdk-python&lt;/a>, los bindings Python al Marmot Development Kit de Rust. El plugin permite a un usuario enviar DM a un agente IA desde cualquier cliente Nostr que hable mensajes MLS kind 445, incluido &lt;a href="https://whitenoise.chat">Whitenoise&lt;/a>. Los DMs entrantes usan desenvoltura de gift-wrap &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> mediante los bindings Python de &lt;a href="https://github.com/rust-nostr/nostr">nostr-sdk&lt;/a>, y las bienvenidas entrantes fluyen a través de &lt;code>UnwrappedGift.from_gift_wrap&lt;/code> a &lt;code>mdk.process_welcome&lt;/code> y &lt;code>mdk.accept_welcome&lt;/code>. El control de acceso se ejecuta mediante &lt;code>MARMOT_ALLOWED_USERS&lt;/code> (una lista blanca de npubs separada por comas) o &lt;code>MARMOT_ALLOW_ALL_USERS=true&lt;/code> para acceso de desarrollo abierto.&lt;/p>
&lt;p>El repo es nuevo (última actualización el 27 de mayo) y pequeño. Su significado es arquitectónico: es el primer puente público entre un runtime de agente LLM y un canal de mensajería Nostr cifrado con MLS, y el primer uso en producción de mdk-python más allá de Whitenoise mismo. El patrón apunta hacia la comunicación agente-a-agente donde ambos endpoints poseen claves MLS y el relay solo ve texto cifrado.&lt;/p>
&lt;h2 id="actualizaciones-de-nip-y-trabajo-de-especificación-de-protocolo">Actualizaciones de NIP y trabajo de especificación de protocolo&lt;/h2>
&lt;h3 id="nip-67-pista-de-completitud-eose-pr-2317-fusionado">NIP-67 pista de completitud EOSE (PR #2317) fusionado&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a> de mattn se fusionó el 6 de junio, añadiendo &lt;a href="https://nostrcompass.org/es/topics/nip-67/">NIP-67&lt;/a> al protocolo. El NIP extiende el mensaje de relay &lt;code>EOSE&lt;/code> con un tercer elemento opcional: &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;quot;finish&amp;quot;]&lt;/code> señala que cada evento almacenado que coincide con el filtro se ha entregado, mientras que un &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;]&lt;/code> desnudo no lleva ninguna reclamación de completitud. Un relay que omite la pista está diciéndole al cliente que puede haber más; un relay que omite el anuncio NIP-67 en NIP-11 mantiene el comportamiento actual bajo la heurística legada existente. El cambio es compatible hacia atrás en ambas direcciones: los clientes legados ignoran el elemento final del array, y los relays legados lo omiten.&lt;/p>
&lt;p>La motivación en la especificación fusionada es doble. Primero, pérdida silenciosa de datos: un cliente pide las últimas 500 notas contra un relay con un límite interno de 300 eventos, el relay devuelve 300 eventos y el cliente (usando la heurística estándar &lt;code>received &amp;lt; limit&lt;/code>) concluye que el resultado está completo. Las notas coincidentes 201.ª hasta la N.ª más antigua permanecen en el relay sin leer, con el cliente ciego a ese hecho. Segundo, viajes de ida y vuelta obligatorios desperdiciados: cuando un relay limita las respuestas a 300 eventos, cualquier suscripción que agota el límite requiere un segundo &lt;code>REQ&lt;/code> con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code> puramente para confirmar la completitud, incluso cuando el filtro coincide exactamente con 300 eventos. Ambos modos de fallo son pagados por cada cliente en cada suscripción con límite agotado. La pista &lt;code>&amp;quot;finish&amp;quot;&lt;/code> es una cadena opcional en un mensaje existente y elimina ambos costes.&lt;/p>
&lt;h3 id="extensión-de-autocompletado-nip-50-pr-2357-fusionado">Extensión de autocompletado NIP-50 (PR #2357) fusionado&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> de Alex Gleason se fusionó el 6 de junio, añadiendo un token &lt;code>autocomplete:true/false&lt;/code> a la búsqueda &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>. La extensión permite a un cliente marcar una consulta como una búsqueda typeahead para que el relay use coincidencia de prefijo, con búsqueda de texto completo como predeterminado para consultas sin el token. El relay de Ditto lo implementa para follow packs, listas y cualquier evento con un tag &lt;code>title&lt;/code>, devolviendo coincidencias contra el prefijo del título; la ruta de búsqueda por defecto ejecuta puntuación de texto completo. Sin este token, las UIs estilo autocompletado no tenían forma de comunicar la intención de búsqueda por prefijo y los relays tenían que adivinar por la forma de la consulta. El token es una pista por búsqueda, no una capacidad a nivel de relay, por lo que un relay puede implementarlo para una clase de evento (títulos) sin reclamar soporte general de autocompletado.&lt;/p>
&lt;h3 id="alertas-de-emergencia-y-difusiones-de-ubicación-nip-gart-pr-2374">Alertas de emergencia y difusiones de ubicación NIP-GART (PR #2374)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2374">PR #2374&lt;/a> de disinqa, abierto el 9 de junio, define un formato de cable que preserva la privacidad en Nostr para alertas de emergencia y difusiones de ubicación dirigidas a un grupo de destinatarios de confianza. El objetivo de diseño declarado es ocultar la identidad del remitente, la membresía del grupo y el payload a los operadores de relay mientras se mantiene los eventos seguros contra replay y verificables por firma de extremo a extremo. El número de NIP está aún por determinar, la propuesta es borrador temprano. El caso de uso es el patrón estándar de alerta de emergencia: un usuario bajo amenaza difunde un ping de ubicación que solo un grupo pre-compartido de contactos de confianza puede descifrar, con el relay ciego al remitente, al conjunto de destinatarios y al payload. Los detalles del formato de cable viven en el PR y probablemente evolucionarán a medida que los mantenedores revisen.&lt;/p>
&lt;h3 id="método-logout-nip-46-pr-2373">Método logout NIP-46 (PR #2373)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a> de hzrd149, abierto el 8 de junio, añade un método &lt;code>logout&lt;/code> a &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> para que un cliente pueda decirle a un bunker explícitamente que la sesión ha terminado. Hasta ahora, la única forma de terminar una sesión de bunker era esperar el timeout de la sesión o dejar de usar la conexión, ambas dejan al bunker manteniendo el estado de la sesión para un cliente que se ha ido. La propuesta es corta (un nuevo método) y es el tipo de cambio de mantenimiento que hace las integraciones de bunker de larga vida más limpias.&lt;/p>
&lt;h3 id="propuesta-híbrida-relay-p2p-nip-95-circulada-como-formato-largo">Propuesta híbrida relay-P2P NIP-95 circulada como formato largo&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips">especificación NIP-95&lt;/a> de formato largo circuló como un post &lt;code>kind:30023&lt;/code> de npub &lt;code>91bea5cd9361504c409aaf459516988f68a2fcd482762fd969a7cdc71df4451c&lt;/code> el 4 de junio bajo el título &lt;em>Protocolo Híbrido Relay-P2P via WebRTC&lt;/em>. El documento en portugués define un protocolo híbrido de relay peer-to-peer donde los clientes Nostr se conectan entre sí directamente mediante WebRTC para mensajería en vivo mientras continúan usando relays para la recuperación de eventos almacenados y la entrega offline. El autor enmarcó explícitamente la especificación como &amp;ldquo;LLM-ready&amp;rdquo;, proporcionando definiciones de mensajes, flujos lógicos, esquemas de datos y reglas de estado a un nivel de detalle que permite a un modelo de IA generar código cliente o servidor funcional. La propuesta aún no ha aterrizado como un PR de NIP; la circulación mediante &lt;code>kind:30023&lt;/code> es el precursor habitual a un pull request formal a nostr-protocol/nips.&lt;/p>
&lt;h3 id="nip-44-v3-recoge-un-segundo-firmador-clave-porta-la-especificación">NIP-44 v3 recoge un segundo firmador: Clave porta la especificación&lt;/h3>
&lt;p>El &lt;a href="https://nostrcompass.org/es/newsletters/2026-06-03-newsletter/#nip-44-v3-amber-implementation-ahead-of-spec">despliegue de NIP-44 v3 de v6.2.0 de Amber de la semana pasada&lt;/a> se distribuyó por delante de cualquier PR de NIPs fusionado, dejando v3 como una extensión específica de Amber que otros clientes tenían que reflejar para interoperar. Ese enmarque de implementación única cambió esta semana. &lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>, el firmador remoto NIP-46 iOS basado en push, aterrizó un port independiente de NIP-44 v3 el 3 y 4 de junio a través de ocho commits. Las primitivas criptográficas se distribuyen en tres commits: &lt;a href="https://github.com/DocNR/clave/commit/99ca5a5aacb501d1666c489fcdea30187c7853fa">capa de claves HKDF + ECDH&lt;/a>, &lt;a href="https://github.com/DocNR/clave/commit/8808cdca54d32b4ae57856bd4b07ed73a45e8e5c">el algoritmo de padding v3&lt;/a> y una &lt;a href="https://github.com/DocNR/clave/commit/ae1f506a53cb2c8aa16523540dbe790876c1839e">API pública de alto nivel más Context de cifrado&lt;/a>. Encima de esos, la superficie NIP-46 sigue en &lt;a href="https://github.com/DocNR/clave/commit/f37aa1afc8368862fc3ebac533408442349bfc38">cableado de despacho RPC dentro de LightSigner&lt;/a> y un &lt;a href="https://github.com/DocNR/clave/commit/e51bcb49fc61cfa89b6030d61b203e046aeddb0a">esquema PendingRequest que lleva el contexto v3 (kind más scope)&lt;/a>, para que el firmador pueda registrar para qué kind de evento y caso de uso se aprobó el payload v3.&lt;/p>
&lt;p>Clave diverge de Amber en la superficie de cara al usuario. Un &lt;a href="https://github.com/DocNR/clave/commit/0a8b7de63c1f2994a80a66bf139ec519fab12877">esquema de concesión de permisos con niveles de sensibilidad&lt;/a> permite a los usuarios conceder cifrado v3 para un kind de evento y scope particular a un nivel de sensibilidad elegido. En el primer encuentro, &lt;a href="https://github.com/DocNR/clave/commit/2cf563cb15b0406f5e8aaa0b4e34b887ff1896a1">prompts de aprobación conscientes del contexto v3 con una tarjeta explicativa única&lt;/a> introducen v3 a los usuarios. El trabajo está en main y está &lt;a href="https://github.com/DocNR/clave/commit/4bd0c26d7cf308386ef15e5d96ee5673d6db2d4a">conectado al proyecto Xcode&lt;/a> pero no está publicado; la compilación etiquetada más reciente es &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build79">v0.2.0-build79&lt;/a> del 12 de mayo.&lt;/p>
&lt;p>Dos implementaciones independientes aterrizan NIP-44 v3 en rutas de producción antes de que el PR de NIPs se fusione, lo que fortalece el caso para el formato de cable subyacente que el PR del protocolo formalizará. Las pruebas de interoperabilidad entre implementaciones ahora se convierten en la ruta a la convergencia de la especificación, con la superficie de aprobación Android de Amber y el modelo de niveles de sensibilidad iOS de Clave como los dos puntos de referencia. Otros firmadores remotos cableando v3 (noauth de nsec.app ha estado inactivo desde mayo de 2025, y otros bunkers no han anunciado trabajo v3) endurecerían el consenso aún más.&lt;/p>
&lt;h3 id="actividad-nip-34-iris-adopta-la-pila-con-un-nuevo-transporte-hashtree">Actividad NIP-34: Iris adopta la pila con un nuevo transporte hashtree&lt;/h3>
&lt;p>Iris publicó anuncios de repo NIP-34 para &lt;a href="https://njump.me/nevent1qqs8kmy7a9dn5awurlp9q26lsaetl7dc4wauzdl8ww68dzmn09e074gpzfmhxue69uhhgetdwqhxjunfwvh8gmc850du0">&lt;code>hashtree&lt;/code>&lt;/a> el 8 de junio y &lt;a href="https://njump.me/nevent1qqsq4grx000f6p0r8hdv4lqhcgn7707vmktv2j528kn0ldps4y9g49qpzfmhxue69uhhgetdwqhxjunfwvh8gmcmq47as">&lt;code>iris-apps&lt;/code>&lt;/a>, &lt;a href="https://njump.me/nevent1qqsyj5r0tyqvpp9v7qnras90u6kzqtpqx6ktntwym66m8qyngvf59vqpzfmhxue69uhhgetdwqhxjunfwvh8gmcpts6pf">&lt;code>iris-drive&lt;/code>&lt;/a> y &lt;a href="https://njump.me/nevent1qqs0x98hpsv8vmrxvwm2rs9exxttrue5qv5p2n2sqjeylz2kgdmd7tgpzfmhxue69uhhgetdwqhxjunfwvh8gmca8783s">&lt;code>iris-chat-rs&lt;/code>&lt;/a> el 9 de junio, anunciando URLs de clonado bajo un nuevo esquema &lt;code>htree://&lt;/code> servido desde &lt;code>wss://temp.iris.to&lt;/code>. El transporte hashtree es una alternativa direccionable por contenido a los clonados enrutados por GRASP, y estos cuatro anuncios son sus primeros usos públicos. Los repos llevan descripciones vacías y los detalles arquitectónicos aún están emergiendo, pero la elección de publicar mediante anuncio NIP-34 (sobre un manifiesto Iris-interno personalizado) señala que Iris se compromete con la pila git-sobre-Nostr NIP-34 más amplia.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-67-pista-de-completitud-eose">NIP deep dive: NIP-67 (Pista de completitud EOSE)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-67/">NIP-67&lt;/a> cierra una de las brechas de corrección más antiguas en &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a>. La especificación original define &lt;code>EOSE&lt;/code> como el límite entre eventos almacenados y eventos de suscripción en vivo para un &lt;code>REQ&lt;/code>, pero nunca especificó si el relay había terminado de entregar todas las coincidencias almacenadas o se había detenido a mitad de camino por un límite interno. Cada relay aplica un límite por suscripción (comúnmente 300 a 1000 eventos) independiente del &lt;code>limit&lt;/code> del cliente, y los clientes no han tenido forma de observar ese límite.&lt;/p>
&lt;p>El workaround estándar era comparar el conteo recibido contra el &lt;code>limit&lt;/code> solicitado. Si &lt;code>received &amp;lt; limit&lt;/code>, tratar el resultado como completo; de lo contrario, paginar con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>. Ambas ramas están rotas. La rama &lt;code>received &amp;lt; limit&lt;/code> trunca silenciosamente: un cliente pidiendo 500 notas contra un relay limitado a 300 ve 300 eventos, concluye que el resultado está completo porque &lt;code>300 &amp;lt; 500&lt;/code> y nunca obtiene el resto. Los eventos retenidos en el relay no pueden señalizar &amp;ldquo;más disponible&amp;rdquo; a través de ningún mensaje existente. La paginación como segunda rama es derrochadora: un filtro que coincide exactamente con el límite requiere un segundo &lt;code>REQ&lt;/code> para confirmar la completitud, devolviendo cero eventos mientras consume un escaneo de filtro completo en el relay.&lt;/p>
&lt;p>La corrección de NIP-67 es una cadena opcional en el mensaje &lt;code>EOSE&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;, &amp;#34;finish&amp;#34;] // explícito: todos los eventos almacenados entregados
[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;] // ninguna reclamación de completitud
&lt;/code>&lt;/pre>&lt;p>Un relay que anuncia NIP-67 en &lt;code>supported_nips&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> y emite un &lt;code>EOSE&lt;/code> desnudo está diciéndole al cliente que hay más. Un relay que omite el anuncio mantiene el comportamiento actual, y el cliente recae en la heurística existente. Los clientes legados ignoran el elemento final del array. La compatibilidad hacia atrás se mantiene en ambas direcciones, sin nuevos verbos ni kinds de evento.&lt;/p>
&lt;p>Lo que hace a NIP-67 digno de examinar es el alcance que deliberadamente restringe. La especificación no define ningún cursor o token de paginación, por lo que la paginación basada en &lt;code>until&lt;/code> sigue siendo el mecanismo. Los límites de relay permanecen donde están, y el NIP no requiere exposición de ellos. NIP-67 preserva el significado de &lt;code>EOSE&lt;/code> como el límite almacenado-a-en-vivo y solo añade una señal sí-o-no en el límite: &amp;ldquo;tengo más para ti&amp;rdquo; versus &amp;ldquo;eso es todo&amp;rdquo;. Esta superficie mínima es por qué el PR se fusionó tras un período de revisión relativamente corto para una extensión NIP-01, y por qué mattn nota explícitamente en el PR que se usó traducción por IA para el texto en inglés. El cambio es lo suficientemente pequeño como para que la incertidumbre de traducción no importe.&lt;/p>
&lt;p>Ejemplo de intercambio consciente de NIP-67 entre un cliente y un relay que aplica límites. Anuncio NIP-11 del relay:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">11&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;supported_nips\&amp;#34;:[1,11,50,67]}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El intercambio a nivel de cable que sigue:&lt;/p>
&lt;pre tabindex="0">&lt;code>→ [&amp;#34;REQ&amp;#34;, &amp;#34;abc&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:500}]
← [...300 EVENT messages...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;abc&amp;#34;] // sin &amp;#34;finish&amp;#34;: límite alcanzado, más disponible
→ [&amp;#34;REQ&amp;#34;, &amp;#34;def&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:300,&amp;#34;until&amp;#34;:1780900000}]
← [...178 EVENT messages...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;def&amp;#34;, &amp;#34;finish&amp;#34;] // completo explícito
&lt;/code>&lt;/pre>&lt;p>La respuesta de 178 eventos previamente habría disparado un tercer &lt;code>REQ&lt;/code> para confirmar la completitud. Con NIP-67 el cliente se detiene ahí.&lt;/p>
&lt;p>NIP-67 también es notable como una enmienda a NIP-01 aterrizando con un consenso raro. La mayoría de los cambios a NIP-01 atraen largos hilos de debate porque la pequeña superficie del protocolo es portante para cada implementación. NIP-67 se fusionó tras un período de revisión extendido (aproximadamente siete semanas de apertura a fusión), sugiriendo que cuando un cambio a NIP-01 es lo suficientemente pequeño y el modo de fallo es lo suficientemente concreto (pérdida silenciosa de datos, viaje de ida y vuelta obligatorio desperdiciado), los mantenedores del protocolo están dispuestos a extender el vocabulario central de mensajes.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-50-búsqueda">NIP deep dive: NIP-50 (Búsqueda)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> define el campo de filtro &lt;code>search&lt;/code> en los mensajes &lt;code>REQ&lt;/code>, permitiendo a los clientes pedir a un relay que filtre eventos por coincidencia de texto completo contra una cadena de consulta. La especificación base fusionada es deliberadamente mínima: el campo &lt;code>search&lt;/code> es una cadena, cada relay decide su propia semántica de búsqueda (qué campos están indexados, cómo funciona la puntuación, si se aplica stemming) y los relays anuncian soporte NIP-50 en su documento NIP-11. Los clientes controlan el algoritmo de búsqueda solo a través de la propia cadena de consulta.&lt;/p>
&lt;p>Este minimalismo es a la vez la fortaleza y la limitación de NIP-50. La fortaleza es que cualquier relay puede implementar búsqueda a cualquier nivel de calidad: un escaneo básico de subcadenas satisface la especificación, y un relay ejecutando Elasticsearch o Meilisearch la satisface igualmente. La limitación es que los clientes carecen de una forma de expresar la intención de búsqueda. Una UI typeahead de menciones de perfil quiere coincidencia de prefijo contra nombres de visualización; una búsqueda de texto completo de contenido quiere puntuación tokenizada de texto completo a través del cuerpo de la nota. El mismo campo &lt;code>search&lt;/code> lleva ambos, y el relay debe adivinar por la forma de la consulta.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> añade el primer token de extensión NIP-50: &lt;code>autocomplete:true&lt;/code> o &lt;code>autocomplete:false&lt;/code> incrustado en la consulta de búsqueda señaliza qué modo quiere el cliente. El relay de Ditto implementa el token para follow packs, listas y cualquier evento con un tag &lt;code>title&lt;/code>, cambiando a coincidencia de prefijo cuando &lt;code>autocomplete:true&lt;/code> está presente. El token vive inline en la consulta (los campos de filtro separados quedan intactos), por lo que viaja con la cadena de búsqueda y no requiere ninguna actualización del protocolo de cable:&lt;/p>
&lt;pre tabindex="0">&lt;code>search: &amp;#34;fiat autocomplete:true&amp;#34;
&lt;/code>&lt;/pre>&lt;p>Las pistas con forma de token como esta son cómo NIP-50 siempre ha manejado los dialectos específicos de relay. Los relays ya soportaban tokens como &lt;code>language:en&lt;/code> y &lt;code>domain:example.com&lt;/code>. Cada uno sigue siendo específico del relay, con cada relay documentando su propio dialecto. El PR #2357 de NIP-50 eleva &lt;code>autocomplete&lt;/code> de un token privado de relay a uno bendecido por la especificación, allanando el camino para búsqueda consciente de typeahead entre relays.&lt;/p>
&lt;p>Ejemplo &lt;code>REQ&lt;/code> NIP-50 con el token autocomplete, apuntando a un relay que indexa títulos de perfil kind 0:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;example-mention-picker&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Sent search: kinds=[0], search=\&amp;#34;fiat autocomplete:true\&amp;#34;, limit=10&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;12d3e4f5061728394a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5e6f7081a2b3c4d5e6f708192&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El REQ real a nivel de cable:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;REQ&amp;#34;, &amp;#34;mention-picker&amp;#34;, {&amp;#34;kinds&amp;#34;:[0],&amp;#34;search&amp;#34;:&amp;#34;fiat autocomplete:true&amp;#34;,&amp;#34;limit&amp;#34;:10}]
&lt;/code>&lt;/pre>&lt;p>Un relay que no reconoce el token trata &lt;code>autocomplete:true&lt;/code> como parte de la cadena literal de búsqueda y recae en coincidencia de texto completo, devolviendo resultados correctos (aunque clasificados diferente). La degradación elegante hace que el token sea seguro para incluir incondicionalmente para clientes que prefieren coincidencia de prefijo cuando está disponible.&lt;/p>
&lt;p>La siguiente extensión NIP-50 probable es control de ranking por kind: una pista que dice &amp;ldquo;ordenar por &lt;code>created_at&lt;/code> descendente&amp;rdquo; versus la puntuación de relevancia por defecto. Varios relays ya aceptan &lt;code>sort:newest&lt;/code> como un token privado de relay, y se aplica la misma ruta de elevación que trajo &lt;code>autocomplete&lt;/code> a la especificación. La búsqueda sigue siendo una de las pocas primitivas Nostr donde los relays compiten en la calidad del resultado; la fiabilidad de entrega es la misma en todos los relays conformes. Los tokens incrementales permiten a los clientes explotar esa competencia de calidad sin forzar a los relays a distribuir una nueva especificación pesada.&lt;/p></content:encoded></item><item><title>Nostr Compass #25</title><link>https://nostrcompass.org/es/newsletters/2026-06-03-newsletter/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-06-03-newsletter/</guid><description>&lt;p>Amber 6.2.0 estrena el cifrado NIP-44 v3 por delante de la especificación. Mostro aterriza la base para el escrow liquidado con Cashu a través de ocho PRs, envolviendo el Cashu Development Kit existente como un segundo backend de liquidación junto a Lightning. Los podcasts NIP-F4 se fusionan tras 27 meses de debate. fiatjaf abre una propuesta controvertida de desacoplamiento de claves NIP-17 que reabre el argumento arquitectónico bunker-contra-Marmot. Amethyst aterriza etiquetado de hashtags NIP-32, una pantalla de podcast dedicada y zaps en cadena a través de 52 PRs no publicados.&lt;/p></description><content:encoded>&lt;p>Amber 6.2.0 estrena el cifrado NIP-44 v3 por delante de la especificación. Mostro aterriza la base para el escrow liquidado con Cashu a través de ocho PRs, envolviendo el Cashu Development Kit existente como un segundo backend de liquidación junto a Lightning. Los podcasts NIP-F4 se fusionan tras 27 meses de debate. fiatjaf abre una propuesta controvertida de desacoplamiento de claves NIP-17 que reabre el argumento arquitectónico bunker-contra-Marmot. Amethyst aterriza etiquetado de hashtags NIP-32, una pantalla de podcast dedicada y zaps en cadena a través de 52 PRs no publicados.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="amber-620-cifrado-nip-44-v3-publicado">Amber 6.2.0: cifrado NIP-44 v3 publicado&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>, publicado el 1 de junio, añade &lt;a href="https://github.com/greenart7c3/Amber/pull/448">soporte de cifrado NIP-44 v3&lt;/a> con una pantalla dedicada de aprobación, vista previa de intent, vista previa de bunker, registro de historial y rechazo automático para solicitudes inválidas. El lanzamiento también registra &lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">autoridades ContentProvider NIP-44 v3&lt;/a> para que otras apps Android puedan solicitar cifrado v3 junto con la ruta v2 existente. NIP-44 en sí es la especificación de payload cifrado versionada usada por los DMs privados &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>, el tráfico de bunker NIP-46 y otras primitivas Nostr; v3 en Amber es un opt-in junto a v2, señalizado por un método de firmador separado para que los clientes del lado receptor puedan negociar el algoritmo explícitamente. El PR correspondiente en el repo NIPs aún no ha aterrizado, por lo que Amber está desplegando v3 por delante del consenso del protocolo, con el formato de cable y la autoridad ContentProvider registrados para la integración de clientes downstream.&lt;/p>
&lt;p>Las sesiones NIP-46 ahora auto-aceptan solicitudes ping en la conexión, eliminando el prompt en el primer viaje de ida y vuelta tras el emparejamiento. El método de firmador &lt;code>sign_message&lt;/code> fue eliminado por completo tras haber sido obsoleto y sin uso.&lt;/p>
&lt;p>Como Amber es el firmador Android dominante, cada cliente downstream que quiera v3 tiene que apuntar al formato de cable de Amber hasta que aterrice el PR de NIPs. Eso le da a Amber voz implícita sobre la especificación final de v3 hasta que el protocolo se ponga al día. El intercambio es real: v3 en producción permite a Amber recopilar retroalimentación de implementación para el eventual NIP, a costa de un punto de referencia temporal de implementación única que otros clientes ahora tienen que igualar.&lt;/p>
&lt;h3 id="mostro-integración-de-escrow-cashu-mediante-cdk">Mostro: integración de escrow Cashu mediante CDK&lt;/h3>
&lt;p>grunch aterrizó ocho PRs en MostroP2P esta semana integrando las primitivas multisig P2PK existentes de Cashu (NUT-10 y NUT-11) como un segundo backend de liquidación junto a Lightning en el intercambio de Bitcoin P2P coordinado por Nostr. Las primitivas criptográficas son de Cashu; el trabajo es andamiaje de integración y un nuevo trait de backend de escrow. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>, publicado el 30 de mayo, añade los &lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">tipos de protocolo para escrow multisig 2-de-3&lt;/a>, firmas P_M por prueba y permite eventos de escrow a través de la validación de respuesta. La arquitectura está documentada en &lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a> y usa claves de intercambio por orden clarificadas en &lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>.&lt;/p>
&lt;p>La implementación se desplegó a través de seis PRs de seguimiento en un solo día. &lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a> añadió la configuración, el modo escrow y el arranque condicional. La siguiente rebanada, &lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>, definió un trait &lt;code>EscrowBackend&lt;/code> con una implementación Lightning y un stub Cashu, permitiendo a Mostro cambiar de backend de liquidación sin cambiar la máquina de estado de la orden. &lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a> envolvió &lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (el Cashu Development Kit) para operaciones de mint y wallet. El trabajo de base de datos en &lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a> añadió bloqueos de escrow compare-and-swap y consultas active-locked. &lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a> construyó una mint contenerizada en un trabajo de CI dedicado para pruebas end-to-end de escrow. El flujo de Mostro ya usa DMs envueltos en gift wrap NIP-59 para la coordinación de órdenes sobre el relay, por lo que el escrow Cashu encaja como una segunda opción de liquidación junto a Lightning sin tocar el protocolo de cable.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="ngit-v250-fallback-grasp-y-fetches-de-git-perezosos">ngit v2.5.0: fallback GRASP y fetches de git perezosos&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.5.0">ngit v2.5.0&lt;/a> cambia el comportamiento por defecto de &lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code> y &lt;code>ngit send&lt;/code> para producir un kind PR para nuevas propuestas cuando el repositorio tiene al menos un servidor GRASP registrado. Anteriormente esto solo se activaba para commits sobredimensionados de más de 60 KB o commits que contenían submódulos. Cuando un PR no puede empujarse a los servidores GRASP del repositorio, ngit ahora recae en el enrutado GRASP-06 a través de los servidores declarados. La bandera &lt;code>ngit send --git-server&lt;/code> o &lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code> permite a los contribuyentes apuntar a una URL git personalizada o servidor GRASP explícitamente.&lt;/p>
&lt;p>Los republicados de &lt;code>ngit init&lt;/code> ahora preservan los tags desconocidos de los anuncios existentes, para que los tags añadidos por una versión futura de ngit o una herramienta de terceros sobrevivan al republicado. Una advertencia amarilla lista los tags arrastrados, y &lt;code>--clean&lt;/code> los elimina bajo demanda. &lt;code>ngit pr apply&lt;/code>, &lt;code>ngit pr checkout&lt;/code> y &lt;code>ngit pr list&lt;/code> consultan los servidores git perezosamente y comparten un único helper de fetch, por lo que checkout ya no obtiene incondicionalmente cuando el commit ya está local. &lt;code>ngit pr checkout&lt;/code> también intenta URLs de clonado proporcionadas por el remitente desde el evento PR como respaldo cuando los servidores git declarados del repo no llevan el tip del PR, coincidiendo con el comportamiento existente en &lt;code>ngit pr apply&lt;/code>. ngit es la implementación de referencia de &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> para colaboración git sobre Nostr, y v2.5.0 hace de GRASP la ruta de primera clase para los nuevos contribuyentes.&lt;/p>
&lt;h3 id="jumble-v2657-eliminación-de-exif-y-conteos-de-zap-validados">Jumble v26.5.7: eliminación de EXIF y conteos de zap validados&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.7">Jumble v26.5.7&lt;/a> añade dos cambios que afectan directamente a la privacidad del usuario y a la integridad de los datos. La ubicación EXIF y los identificadores de cámara ahora se eliminan de las subidas de imágenes antes de que salgan del cliente, cerrando una superficie de fuga de metadatos de larga data que afectaba a cada imagen publicada desde Jumble. Los conteos de zap ahora se computan solo desde recibos criptográficamente validados, corrigiendo conteos inflados de eventos zap malformados que habían permitido a los atacantes exagerar los totales de zap en las notas. El lanzamiento también añade verificación de identidad del remitente para DMs &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>, cerrando una superficie de suplantación donde un remitente podía falsificar su &lt;code>pubkey&lt;/code> en el sello.&lt;/p>
&lt;h3 id="nostr-calendar-v160-manejo-de-rsvp-y-participantes-duplicados">nostr-calendar v1.6.0: manejo de RSVP y participantes duplicados&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.6.0">nostr-calendar v1.6.0&lt;/a> aterriza el flujo RSVP de Formstr (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/169">PR #169&lt;/a>) y evita participantes duplicados en las invitaciones a eventos (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/168">PR #168&lt;/a>). La opción &lt;code>waitForAll&lt;/code> en la función publish ahora por defecto es false para que la UI no se bloquee en relays lentos (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/170">PR #170&lt;/a>). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/157">PR #157&lt;/a> estrenó los dos borradores de propuesta NIP de Formstr para programación de citas y reservas.&lt;/p>
&lt;h3 id="sprout-036-sprout--mesh-llm-y-secciones-de-canal">Sprout 0.3.6: Sprout × mesh-llm y secciones de canal&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a> es el titular de una serie de seis lanzamientos de v0.3.1 a v0.3.6 esta semana. La integración in-process de Sprout × mesh-llm aterriza en &lt;a href="https://github.com/block/sprout/pull/798">PR #798&lt;/a>, permitiendo a Sprout servir y consumir nodos mesh-llm mediante admisión de relay. Las secciones de canal definidas por el usuario se sincronizan entre dispositivos mediante Nostr en &lt;a href="https://github.com/block/sprout/pull/792">PR #792&lt;/a>, y las secciones de canal llegan a móvil con sincronización de relay en &lt;a href="https://github.com/block/sprout/pull/800">PR #800&lt;/a>. Las notificaciones conscientes de hilo con controles de follow y silencio mutables llegan en &lt;a href="https://github.com/block/sprout/pull/761">PR #761&lt;/a>.&lt;/p>
&lt;p>Los adjuntos de tipo de archivo arbitrario con tarjetas de descarga llegaron en &lt;a href="https://github.com/block/sprout/pull/810">PR #810&lt;/a>, expandiendo Sprout más allá de los adjuntos solo de imagen. Móvil ganó una pestaña de feed social Pulse (&lt;a href="https://github.com/block/sprout/pull/772">PR #772&lt;/a>) y pulido de Pulse a través de las superficies de feed, composición y filtro (&lt;a href="https://github.com/block/sprout/pull/796">PR #796&lt;/a>).&lt;/p>
&lt;h3 id="nostrbotkit-v050-chat-de-grupo-marmot-en-un-framework-de-bots-rust">NostrBotKit v0.5.0: chat de grupo Marmot en un framework de bots Rust&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/Tuxor/NostrBotKit/src/branch/main/CHANGELOG.md">NostrBotKit v0.5.0&lt;/a>, publicado el 24 de mayo en Codeberg, añade soporte de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> (MLS-sobre-Nostr, &lt;a href="https://github.com/nostr-protocol/nips/pull/2014">NIP-104&lt;/a>) al framework de bots Rust auto-alojado. Cuando se configura &lt;code>marmot: true&lt;/code>, el bot publica sus key packages MLS (kind 443, 30443, 10051), acepta invitaciones a grupos automáticamente y escucha mensajes en los grupos a los que se ha unido. Dos nuevos tipos de comando, &lt;code>dm_marmot&lt;/code> y &lt;code>dm_marmot_npub&lt;/code>, permiten a los bots enviar mensajes a grupos Marmot nombrados o chats Marmot 1:1 mediante trabajos cron o webhooks. Para evitar bucles de retroalimentación con otros bots, los bots de NostrBotKit solo responden a mensajes explícitamente dirigidos a ellos mediante &lt;code>/command&lt;/code> o &lt;code>@botname/command&lt;/code>. Los adjuntos cifrados usando MIP-04 se descifran automáticamente y se resuben mediante Blossom o NIP-96, y la base de datos de estado MLS se cifra con una clave derivada de la clave privada del bot. NostrBotKit es el primer framework Rust en publicar soporte de bots NIP-104, abriendo el despliegue de bots cifrados con Marmot a un perfil de operador diferente al de la ruta TypeScript existente.&lt;/p>
&lt;h3 id="noscrypt-v0114-lanzamiento-firmado-de-biblioteca-de-criptografía">noscrypt v0.1.14: lanzamiento firmado de biblioteca de criptografía&lt;/h3>
&lt;p>&lt;a href="https://github.com/vnuge/noscrypt/releases/tag/v0.1.14">noscrypt v0.1.14&lt;/a> es un lanzamiento de seguridad de la biblioteca de criptografía en C usada por varios clientes Nostr para primitivas secp256k1, NIP-04 y NIP-44. El lanzamiento se distribuye con &lt;a href="https://www.vaughnnugent.com/resources/software/modules/noscrypt">descargas firmadas con PGP&lt;/a> verificables contra la clave pública del mantenedor. Los clientes downstream que empaqueten noscrypt deben validar la firma antes de integrar.&lt;/p>
&lt;h3 id="chama-v130-nuevo-escrow-p2p-nativo-de-nostr-con-fedimint">Chama v1.3.0: nuevo escrow P2P nativo de Nostr con Fedimint&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.3.0">Chama v1.3.0&lt;/a>, publicado el 1 de junio, es el titular de una serie de cuatro lanzamientos para un nuevo cliente de escrow P2P nativo de Nostr que usa ecash Fedimint y compartición de secretos Shamir 2-de-3 para la liquidación. El proyecto se distribuye en &lt;a href="https://getchama.app">getchama.app&lt;/a> y funciona sin servidor. v1.3.0 introduce &amp;ldquo;heal that sticks&amp;rdquo; (re-difusión exitosa y curación de intercambios que sobreviven a los reinicios de sesión) y emparejamiento de pay-rail, donde las Chamas orientadas a EEUU muestran primero los rails de pago de EEUU. El trabajo base multi-unidad para storefronts aterrizó a través de &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.11">v1.2.11&lt;/a> (esquema multi-unidad) y &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.12">v1.2.12&lt;/a> (contador de stock de storefront + endurecimiento de recuperación del puente nativo Fedimint). Chama se une a Mostro y Shopstr en la categoría de marketplaces Nostr, distinguida por su arquitectura sin servidor y su liquidación de escrow basada en Fedimint.&lt;/p>
&lt;h2 id="cambios-sin-publicar">Cambios sin publicar&lt;/h2>
&lt;h3 id="amethyst-etiquetado-de-hashtags-nip-32-pantalla-de-podcast-pistas-de-música">Amethyst: etiquetado de hashtags NIP-32, pantalla de podcast, pistas de música&lt;/h3>
&lt;p>Amethyst fusionó 52 PRs y 411 commits esta semana sin cortar una etiqueta de lanzamiento. La adición funcional más grande es &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>, que implementa etiquetado de hashtags &lt;a href="https://nostrcompass.org/es/topics/nip-32/">NIP-32&lt;/a> y un feed de hashtags basado en etiquetas usando eventos kind 1985 con tags de namespace &lt;code>L&lt;/code> y etiqueta &lt;code>l&lt;/code>. Esto reemplaza el frágil mecanismo de coincidencia de texto &lt;code>#tag&lt;/code> con un modelo de descubrimiento basado en etiquetadores donde los usuarios pueden seguir a npubs de etiquetadores específicos de la misma forma que siguen a creadores de contenido. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> añade una pantalla dedicada de podcast con lista de episodios y reproductor en línea, aterrizando a los pocos días de la fusión de la especificación de podcast &lt;a href="https://nostrcompass.org/es/topics/nip-f4/">NIP-F4&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3071">PR #3071&lt;/a> añade un feed Software Apps con filtrado por lista de follow, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3067">PR #3067&lt;/a> añade soporte para pistas de música y playlists mediante conjuntos &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>.&lt;/p>
&lt;p>Los firmadores efímeros para subidas de posts anónimos aterrizan en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3123">PR #3123&lt;/a>, permitiendo a los usuarios publicar de forma anónima sin exponer su clave de identidad a los servicios de subida. Un watchdog de auto-curación de Tor con pruebas de integración contra Arti v2.3.0 llega en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a>, fortaleciendo el enrutado Tor de Amethyst durante caídas de red transitorias. Los zaps en cadena y un filtro NIP-05 para usuarios que regresan desde Gemini aterrizan en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3052">PR #3052&lt;/a>, ampliando la superficie de zap más allá de Lightning a pagos de Bitcoin en cadena.&lt;/p>
&lt;h3 id="shopstr-validación-de-urls-de-vista-previa-opengraph">Shopstr: validación de URLs de vista previa OpenGraph&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/504">PR #504&lt;/a> valida las URLs de vista previa OpenGraph antes de renderizarlas en los listados del marketplace, cerrando una potencial superficie XSS donde vendedores maliciosos podían incrustar contenido con scripts mediante metadatos OG diseñados. Las tiendas alojadas en Shopstr muestran vistas previas OG para enlaces externos, y las URLs no validadas permiten a un atacante inyectar contenido arbitrario en la UI de la tienda.&lt;/p>
&lt;h2 id="actualizaciones-de-nip-y-trabajo-de-especificación-de-protocolo">Actualizaciones de NIP y trabajo de especificación de protocolo&lt;/h2>
&lt;h3 id="nip-f4-podcasts-se-fusiona-tras-dos-años">NIP-F4 (Podcasts) se fusiona tras dos años&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1093">PR #1093&lt;/a> se fusionó el 28 de mayo, dos años y tres meses después de que fiatjaf abriera el borrador original. NIP-F4 define los episodios de podcast como eventos kind 54 con tags &lt;code>imeta&lt;/code> para metadatos del archivo de audio (URL, tipo mime, código de idioma ISO, URLs de respaldo, bandera de servicio NIP-96, bitrate, duración), un tag &lt;code>title&lt;/code>, tags opcionales &lt;code>image&lt;/code> y &lt;code>description&lt;/code>, y tags &lt;code>t&lt;/code> para etiquetas de tema. La especificación mantiene deliberadamente RSS como la fuente de verdad: los episodios pueden llevar un tag &lt;code>i&lt;/code> que referencie el GUID del podcast RSS, permitiendo a los clientes Nostr enlazar a feeds de podcast existentes sin duplicar el alojamiento de audio. El largo debate en el hilo del PR (con el co-autor de podcast-namespace Dave Jones, Alex Gleason y Mike Terenzio) se resolvió en un modelo de coexistencia donde Nostr proporciona la capa social sobre RSS mientras RSS mantiene la capa de distribución. La pantalla de podcast del &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> de Amethyst aterriza a los pocos días de la fusión de la especificación, y el trabajo del selector de GIF de Jumble también incluye andamiaje temprano para adjuntos de podcast.&lt;/p>
&lt;h3 id="desacoplamiento-de-claves-nip-17-pr-2361">Desacoplamiento de claves NIP-17 (PR #2361)&lt;/h3>
&lt;p>fiatjaf abrió &lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a> el 1 de junio, proponiendo que NIP-17 separe la clave de identidad de la clave de cifrado. Los destinatarios anuncian su clave de cifrado en un nuevo evento kind 10044, y los remitentes usan esa clave anunciada (cuando está presente) para el sello interno del gift-wrap, recayendo en la clave de identidad del destinatario solo cuando el anuncio está ausente. El PR también añade un tag &lt;code>n&lt;/code> al sello llevando la pubkey de cifrado del remitente, para que los receptores puedan derivar la clave de conversación correcta sin descifrado por prueba y error contra cada clave retirada. La motivación declarada es la UX de bunker: bajo el diseño actual, un usuario de bunker debe hacer un viaje de ida y vuelta a cada DM recibido a través del firmador para descifrar, ya que la clave de cifrado es la clave de identidad guardada por el firmador. Desacoplar permite al cliente mantener la clave de cifrado localmente mientras mantiene la clave de identidad en el bunker para firmas.&lt;/p>
&lt;p>La propuesta atrajo la revisión más polémica de la semana. Cody Tseng (Jumble) la apoya como la ruta más fácil para la interoperabilidad de DMs entre clientes. Vitor Pamplona (Amethyst) objeta por dos motivos: añade un nuevo secreto de descifrado de larga duración fuera del bunker, y los clientes que no lo distribuyan fallarán silenciosamente al descifrar mensajes de clientes que sí lo hacen, sin ruta de degradación porque la ruptura está en la capa del sello. Pamplona argumenta que el problema ya está resuelto correctamente por los key packages de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> y la rotación de épocas, y que retrofit de separación de claves en la especificación base NIP-17 crea el tipo de fallo de interoperabilidad que Marmot tardó dos años en diseñar. La respuesta de fiatjaf tiene tres partes: el desacoplamiento es opcional por destinatario, la corrección del tag n aborda la preocupación del descifrado por prueba y error, y la alternativa es mantener la UX de bunker rota mientras Telegram se come el caso de uso de la mensajería. El hilo permanece abierto sin decisión de fusión y es la discusión NIP más observada del trimestre.&lt;/p>
&lt;h3 id="flujo-de-pago-nip-silent-payments-pr-2362">Flujo de pago NIP-Silent Payments (PR #2362)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2362">silentius-satoshi abrió PR #2362&lt;/a> el 1 de junio como complemento del más amplio &lt;a href="https://github.com/nostr-protocol/nips/pull/2355">borrador de NIP Nostr Silent Payments (PR #2355)&lt;/a>. El NIP de flujo de pago define kind 8352 para notificaciones de recepción de silent payment (entregadas mediante gift wrap &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> para que el enlace del recibo no sea públicamente observable) y kind 10353 para una caché UTXO cifrada que se sincroniza entre dispositivos para la misma wallet Silent Payments. El par juntos permiten a un pagador señalizar un pago a una dirección Silent Payments usando primitivas nativas de Nostr sin exponer el enlace on-chain en la capa de relay abierta.&lt;/p>
&lt;h3 id="nip-pip-perfect-ip-packets-pr-2364">NIP-PIP Perfect IP Packets (PR #2364)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2364">RandyMcMillan abrió PR #2364&lt;/a> el 1 de junio como borrador. Introduce un transporte de árbol de paquetes con tres nuevos kinds direccionables: 39078 lleva el manifiesto, 39079 lleva slices individuales y 39080 lleva solicitudes de reparación. La especificación define un formato de cable donde los archivos grandes se dividen en slices direccionables, con manifiestos describiendo el árbol de slices y solicitudes de reparación permitiendo a los receptores pedir slices faltantes. Se aplica estado de borrador temprano, y la propuesta aún no ha atraído revisión de mantenedores.&lt;/p>
&lt;h3 id="espacios-en-vivo-de-audiovídeo-nip-29-pr-2238">Espacios en vivo de audio/vídeo NIP-29 (PR #2238)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">PR #2238&lt;/a> se fusionó el 28 de mayo, extendiendo los grupos basados en relay &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> con soporte de espacios en vivo de audio y vídeo. Los grupos ahora pueden referenciar una sesión activa de espacio en vivo, permitiendo a los eventos de actividad en vivo estilo &lt;a href="https://nostrcompass.org/es/topics/nip-53/">NIP-53&lt;/a> anclarse en un contexto de grupo NIP-29.&lt;/p>
&lt;h3 id="múltiples-pistas-de-audio-en-vídeo-nip-71-pr-2255">Múltiples pistas de audio en vídeo NIP-71 (PR #2255)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a> se fusionó el 28 de mayo, añadiendo tags &lt;code>imeta&lt;/code> de pista de audio a los eventos de vídeo NIP-71. El nuevo formato lleva URL, hash, tipo mime, tag de idioma (con ISO-639-1 más bandera de versión original), URLs de respaldo, señal de servicio NIP-96, bitrate y duración. Esto habilita streaming solo de audio (video podcasts), cambio de resolución con audio estable, múltiples pistas de idioma y almacenamiento reducido cuando los servidores no incrustan audio directamente en archivos de vídeo. Los clientes deben comprobar la disponibilidad de pistas de audio antes de asumir comportamiento de pista única.&lt;/p>
&lt;h3 id="gift-wrap-efímero-nip-59-pr-2245">Gift wrap efímero NIP-59 (PR #2245)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> se fusionó el 28 de mayo, añadiendo kind 21059 como contraparte efímera del gift wrap kind 1059 existente. La semántica coincide con el envoltorio estándar NIP-59 pero sigue las reglas de eventos efímeros por NIP-01 (los relays los descartan tras la difusión y no los persisten). Esto permite a las apps elegir persistencia según los requisitos: los indicadores de escritura y pings de presencia se benefician de lo efímero, mientras que el historial de DMs necesita persistencia.&lt;/p>
&lt;h3 id="kind-específico-de-aplicación-nip-78-pr-2292">Kind específico de aplicación NIP-78 (PR #2292)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2292">PR #2292&lt;/a> se fusionó el 28 de mayo, reclasificando los datos específicos de aplicación NIP-78 como un kind direccionable normal, descartando el rango separado anterior. Esto simplifica la semántica de reemplazabilidad y alinea NIP-78 con el modelo de evento direccionable usado por otros NIPs de estado de aplicación.&lt;/p>
&lt;h3 id="aclaraciones-nip-85-pr-2304">Aclaraciones NIP-85 (PR #2304)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a> se fusionó el 28 de mayo con pequeñas mejoras al lenguaje alrededor de múltiples claves y relays por proveedor de servicio en &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> Trusted Assertions, clarificando la ruta de rotación de clave de operador para los servicios de aserción de relay.&lt;/p>
&lt;h3 id="gestión-de-conexión-de-relay-nip-01-de-una-línea-pr-2307">Gestión de conexión de relay NIP-01 de una línea (PR #2307)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2307">PR #2307&lt;/a> se fusionó el 28 de mayo, añadiendo una sola frase a NIP-01 sobre cómo los clientes deben manejar los tiempos de vida de las conexiones de relay. La corrección aborda una brecha de larga duración donde los clientes diferían en si mantener las conexiones WebSocket abiertas tras la obtención, llevando a pérdida silenciosa de mensajes en relays que descartan conexiones inactivas.&lt;/p>
&lt;h3 id="restricción-de-chat-kind-9-nip-c7-pr-2310">Restricción de chat kind 9 NIP-C7 (PR #2310)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a> se fusionó el 28 de mayo, restringiendo las vistas de chat NIP-C7 solo a mensajes kind 9. Esto separa el chat efímero de las publicaciones de timeline kind 1 en clientes que implementan superficies de chat estilo NIP-C7.&lt;/p>
&lt;h3 id="simplificación-nip-55-pr-2363">Simplificación NIP-55 (PR #2363)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2363">PR #2363&lt;/a> de greenart7c3, abierto el 1 de junio, simplifica la especificación de aplicación de firmador Android. Vitor Pamplona firmó como &amp;ldquo;Looks good&amp;rdquo; y fiatjaf preguntó si está listo para fusionar. El cambio prepara el camino para el registro de autoridad ContentProvider NIP-44 v3 que Amber publicó esta semana.&lt;/p>
&lt;h3 id="nip-44-v3-implementación-de-amber-por-delante-de-la-especificación">NIP-44 v3 (implementación de Amber por delante de la especificación)&lt;/h3>
&lt;p>Amber publicó NIP-44 v3 en v6.2.0 con ocho commits implementando la actualización de cifrado y el registro de autoridad ContentProvider, pero el PR de especificación en el repo NIPs aún no ha aterrizado. NIP-44 en sí define un formato de payload cifrado versionado usado dentro de eventos firmados; el v2 existente (en producción desde 2024) usa ECDH secp256k1, HKDF, padding, ChaCha20, HMAC-SHA256 y base64. El formato de cable v3 añade un nuevo byte de versión (0x03) por delante del nonce, permitiendo a los clientes receptores negociar el algoritmo explícitamente. La implementación de Amber incluye rechazo automático para solicitudes v3 inválidas, una pantalla dedicada de aprobación distinta de las aprobaciones v2 y registro de texto plano por dirección para el historial. Hasta que el PR de NIPs se fusione, v3 se mantiene como una extensión específica de Amber. Trátalo como una señal prospectiva, no como una señalización estable a nivel de protocolo.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-32-etiquetado">NIP deep dive: NIP-32 (Etiquetado)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-32/">NIP-32&lt;/a> define una forma estructurada para que cualquier actor Nostr etiquete eventos, pubkeys, relays, URLs o temas usando eventos direccionables kind 1985 con un vocabulario de etiquetas con namespace. La especificación introduce dos nuevos tags: &lt;code>L&lt;/code> denota un namespace de etiqueta, y &lt;code>l&lt;/code> denota una etiqueta dentro de ese namespace. Los tags target de etiqueta (&lt;code>e&lt;/code>, &lt;code>p&lt;/code>, &lt;code>a&lt;/code>, &lt;code>r&lt;/code> o &lt;code>t&lt;/code>) especifican qué se está etiquetando. El requisito de namespace evita que múltiples sistemas de etiquetas colisionen: una etiqueta &lt;code>spam&lt;/code> en &lt;code>nip28.moderation&lt;/code> lleva semántica diferente a una etiqueta &lt;code>spam&lt;/code> en &lt;code>relay-report&lt;/code>.&lt;/p>
&lt;p>La elección de diseño que hace que NIP-32 sea útil más allá de la moderación es que las etiquetas son aserciones, no verdad a nivel de protocolo. Un evento kind 1985 dice solo que una pubkey particular etiquetó a un objetivo particular en un namespace particular. El modelo de confianza se delega al cliente: cada cliente elige a qué etiquetadores honrar, qué namespaces leer y qué comodidad UI dar a cada etiqueta. La misma primitiva lleva advertencias de contenido, asignación de licencia, tags de idioma ISO-639-1 en notas kind 1, tags geográficos ISO-3166-2, clasificación de contenido, sugerencias distribuidas de moderación y puntuaciones de reputación.&lt;/p>
&lt;p>El &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a> de Amethyst esta semana es el mayor despliegue hasta ahora. Añade etiquetado de hashtags mediante NIP-32 y un feed de hashtags basado en etiquetas, permitiendo a los usuarios navegar por etiquetas asignadas por etiquetadores de confianza. El mecanismo anterior de coincidencia de texto &lt;code>#tag&lt;/code> que originalmente impulsó el descubrimiento de hashtags en Nostr permanece como respaldo para notas no etiquetadas. El modelo de hashtag como etiqueta significa que la misma nota puede ser descubrible bajo múltiples etiquetas asignadas por diferentes etiquetadores, y los usuarios pueden silenciar o impulsar etiquetadores específicos sin afectar a las notas subyacentes.&lt;/p>
&lt;p>El auto-etiquetado también está soportado. Un autor puede adjuntar tags &lt;code>L&lt;/code> y &lt;code>l&lt;/code> directamente a sus propias notas kind 1 para declarar idioma, ubicación y tema. Una nota etiquetada &lt;code>[&amp;quot;L&amp;quot;, &amp;quot;ISO-639-1&amp;quot;], [&amp;quot;l&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;ISO-639-1&amp;quot;]&lt;/code> se auto-identifica como inglés y puede ser filtrada por clientes conscientes del idioma sin infraestructura de etiquetado de terceros.&lt;/p>
&lt;p>Ejemplo de evento de etiqueta NIP-32 etiquetando una nota kind 1 como inglés y asignándole una etiqueta de moderación:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748908800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1985&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;en&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;approve&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b39f4e5d6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Labeled as English-language content approved for NIP-28 chat moderation&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El despliegue de Amethyst combinado con el reciente trabajo de Trusted Relay Assertions sugiere que NIP-32 se está convirtiendo en el sustrato estándar para cualquier patrón de &amp;ldquo;aserción impulsada por el usuario sobre un objetivo&amp;rdquo; en Nostr. La siguiente prueba es si los propios etiquetadores desarrollan jerarquías de confianza: si los usuarios seguirán a npubs de etiquetadores específicos de la misma forma que siguen a creadores de contenido.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-f4-podcasts">NIP deep dive: NIP-F4 (Podcasts)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/F4.md">NIP-F4&lt;/a> se fusionó esta semana, dos años y tres meses después de que fiatjaf abriera el borrador original (PR #1093). El prefijo F es simple numeración hexadecimal: NIP-F0 a NIP-FF usan el mismo espacio hex de 1 byte que NIP-0A a NIP-0D, con el rango hex superior sirviendo como desbordamiento ahora que el rango decimal 01-99 se está llenando. NIP-F4 define cómo los podcasts publican episodios y metadatos como eventos Nostr mientras mantienen RSS como una capa complementaria para el propio archivo de audio.&lt;/p>
&lt;p>La elección arquitectónica central es que cada podcast es su propio par de claves Nostr. La especificación abre con esto directamente: &amp;ldquo;each podcast is its own Nostr keypair&amp;rdquo;. Esto permite a los podcasts combinar su presencia de podcasting con una presencia normal de microblogging kind 0 / kind 1, y permite a un podcast cambiar de propiedad con el tiempo mediante traspaso de claves o firma compartida estilo MuSig2. Cuatro kinds de evento llevan la capa de publicación:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>kind:10154&lt;/code>&lt;/strong>: metadatos de podcast reemplazables. Lleva tags &lt;code>title&lt;/code>, &lt;code>image&lt;/code>, &lt;code>description&lt;/code>, &lt;code>website&lt;/code> opcionales, y tags &lt;code>p&lt;/code> opcionales marcando autores con un &lt;code>role&lt;/code> de &lt;code>host&lt;/code>, &lt;code>cohost&lt;/code> o &lt;code>editor&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10164&lt;/code>&lt;/strong>: contra-reclamación del autor. El ejemplo en la especificación usa kind &lt;code>10064&lt;/code> (una errata abierta para corrección), pero el encabezado y el texto circundante lo identifican como &lt;code>kind:10164&lt;/code>. Los usuarios listan las pubkeys de podcast que autorizan, para que los clientes puedan verificar los tags &lt;code>p&lt;/code> en &lt;code>kind:10154&lt;/code> contra una reclamación equivalente del supuesto autor. Sin esto, un podcast podría etiquetar falsamente a cualquiera como host.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:54&lt;/code>&lt;/strong>: eventos de episodio autorizados directamente por la pubkey del podcast. Los tags incluyen &lt;code>title&lt;/code>, &lt;code>image&lt;/code> opcional, &lt;code>description&lt;/code> y uno o más tags &lt;code>audio&lt;/code>. Cada tag &lt;code>audio&lt;/code> es &lt;code>[&amp;quot;audio&amp;quot;, &amp;quot;&amp;lt;audio-url&amp;gt;&amp;quot;, &amp;quot;&amp;lt;optional_media_type&amp;gt;&amp;quot;]&lt;/code>. La especificación anota &amp;ldquo;otros campos importantes a especificar aquí más tarde tras un mayor descubrimiento&amp;rdquo;, y la forma fusionada es deliberadamente mínima.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10054&lt;/code>&lt;/strong>: una lista de podcasts favoritos estilo &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>, permitiendo a los usuarios marcar qué podcasts siguen.&lt;/li>
&lt;/ul>
&lt;p>El debate del hilo alrededor de la fusión involucró al co-autor de Podcasting 2.0 &lt;a href="https://github.com/daveajones">Dave Jones&lt;/a>, &lt;a href="https://github.com/alexgleason">Alex Gleason&lt;/a>, &lt;a href="https://github.com/mterenzio">Mike Terenzio&lt;/a>, &lt;a href="https://github.com/pablof7z">Pablo F7z&lt;/a> y &lt;a href="https://github.com/staab">staab&lt;/a>. Jones argumentó fuertemente contra cualquier intento de reemplazar RSS: &amp;ldquo;It&amp;rsquo;s been tried many times and always fails&amp;rdquo;, citando JSONfeed, XMPP, AMP, la API de Twitter y la migración fallida de Spotify. Terenzio reencuadró la propuesta como una capa social sobre RSS, manteniendo RSS mismo como la capa de distribución. fiatjaf accedió a dar un paso atrás y dejar madurar la propuesta: &amp;ldquo;I agree with everything you said but I still think we can pull it off, let&amp;rsquo;s stop here for a while&amp;rdquo;. Dos años después, la especificación fusionada aterriza más cerca de la coexistencia que del reemplazo.&lt;/p>
&lt;p>Tres preguntas de diseño permanecen explícitas en la especificación fusionada:&lt;/p>
&lt;ul>
&lt;li>La errata &lt;code>kind:10164&lt;/code> (el ejemplo muestra &lt;code>10064&lt;/code>) necesita reconciliación antes de que los clientes puedan interoperar de forma segura.&lt;/li>
&lt;li>El descubrimiento a nivel de episodio sin enlace GUID RSS queda abierto. La especificación fusionada no tiene tag &lt;code>i&lt;/code>, ni formato &lt;code>podcast:item:guid&lt;/code>, ni mecanismo de puente RSS. Los clientes que quieran puentear un catálogo RSS existente en eventos kind 54 deben definir la convención de puente ellos mismos.&lt;/li>
&lt;li>El stub de &amp;ldquo;otros campos importantes&amp;rdquo; en la definición de &lt;code>kind:54&lt;/code> deja bitrate, duración, idioma, punteros de transcripción, capítulos y metadatos por segmento como territorio abierto para propuestas de seguimiento.&lt;/li>
&lt;/ul>
&lt;p>El &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> de Amethyst aterriza una pantalla dedicada de podcast con lista de episodios y reproductor en línea a los pocos días de la fusión, la primera implementación importante de cliente. Jumble publicó andamiaje temprano de adjuntos de podcast junto con su selector de GIF. Wavlake sigue siendo la plataforma de podcasts nativa de Nostr más grande y tendrá que decidir si alinear sus eventos de pista de música kind 31337 existentes con el modelo de episodio kind 54 de NIP-F4.&lt;/p>
&lt;p>Ejemplo de evento de episodio kind 54 NIP-F4, coincidiendo con el conjunto mínimo de tags de la especificación fusionada:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;55807e7d5cd90d0303d7dce7397f996fdbaed8697903f326c7cf8ad999b9de3d&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748995200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">54&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Episode 42: Why RSS Won&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/ep42-cover.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Dave Jones and fiatjaf on protocol coexistence and the social layer.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;audio&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/audio/ep42.mp3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/mpeg&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;In this episode we discuss the two-year journey of NIP-F4 from draft to merge, and why coexistence with RSS turned out to be the right architectural choice.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;abc123def456789012345678901234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PR #1093 estuvo abierto durante 27 meses, muy por encima de la duración abierta mediana de los PRs de NIPs fusionados. La siguiente prueba para NIP-F4 es si la errata del kind 10164 se reconcilia, si emergen convenciones de descubrimiento de episodios y de puente RSS por parte de los implementadores, y si los hosts principales de podcast publican bajo pares de claves por podcast como recomienda la especificación.&lt;/p></content:encoded></item><item><title>Nostr Compass #24</title><link>https://nostrcompass.org/es/newsletters/2026-05-28-newsletter/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-05-28-newsletter/</guid><description>&lt;p>Amethyst v1.11.0 aterriza una implementación completa de calendario NIP-52 con recordatorios, splits de zap de Bitcoin en cadena y soporte para respuestas en grupos Marmot. White Noise v2026.5.22 estrena notificaciones push en iOS mediante una Notification Service Extension, junto con UX de bloqueo y un botón para añadir miembros. Vector v0.4.0 aterriza una reescritura desde cero de vector-core, Tor con un clic con soporte de bridges, firmadores remotos NIP-46, sincronización de grupos MLS con negentropy completo y un servidor MCP de 21 herramientas para agentes de IA. Applesauce v6.1.0 introduce listas de relays de búsqueda NIP-51 (kind 10086) y un conjunto completo de fábricas de git-cast NIP-34. MDK añade mensajes efímeros NIP-40 en iOS y Android mediante una superficie UniFFI unificada, y Mostro v0.17.4 cierra el bucle del bono anti-abuso con pagos de bono recortado de Fase 3 al ganador. Notedeck fusiona la reconciliación completa por negentropy NIP-77 para giftwraps y backfill de hilos, Cordn aparece como un mensajero MLS mediado por coordinador que intercambia una dependencia de disponibilidad de un solo punto por un ordenado más estricto de épocas y un modelo operativo más simple, una implementación de referencia NIP-B0 llamada deepmarks estrena un cliente de marcadores monetizado por curador, y el equipo de Formstr abre cuatro propuestas coordinadas de NIP de calendario que cubren autoremoción de participantes, eventos privados, recurrencia y programación de citas descentralizada.&lt;/p></description><content:encoded>&lt;p>Amethyst v1.11.0 aterriza una implementación completa de calendario NIP-52 con recordatorios, splits de zap de Bitcoin en cadena y soporte para respuestas en grupos Marmot. White Noise v2026.5.22 estrena notificaciones push en iOS mediante una Notification Service Extension, junto con UX de bloqueo y un botón para añadir miembros. Vector v0.4.0 aterriza una reescritura desde cero de vector-core, Tor con un clic con soporte de bridges, firmadores remotos NIP-46, sincronización de grupos MLS con negentropy completo y un servidor MCP de 21 herramientas para agentes de IA. Applesauce v6.1.0 introduce listas de relays de búsqueda NIP-51 (kind 10086) y un conjunto completo de fábricas de git-cast NIP-34. MDK añade mensajes efímeros NIP-40 en iOS y Android mediante una superficie UniFFI unificada, y Mostro v0.17.4 cierra el bucle del bono anti-abuso con pagos de bono recortado de Fase 3 al ganador. Notedeck fusiona la reconciliación completa por negentropy NIP-77 para giftwraps y backfill de hilos, Cordn aparece como un mensajero MLS mediado por coordinador que intercambia una dependencia de disponibilidad de un solo punto por un ordenado más estricto de épocas y un modelo operativo más simple, una implementación de referencia NIP-B0 llamada deepmarks estrena un cliente de marcadores monetizado por curador, y el equipo de Formstr abre cuatro propuestas coordinadas de NIP de calendario que cubren autoremoción de participantes, eventos privados, recurrencia y programación de citas descentralizada.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="amethyst-v1110-calendarios-splits-de-zap-en-cadena-y-respuestas-marmot">Amethyst v1.11.0: calendarios, splits de zap en cadena y respuestas Marmot&lt;/h3>
&lt;p>Amethyst, el cliente Nostr para Android mantenido por Vitor Pamplona, publicó &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">v1.11.0&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2994">PR #2994&lt;/a> añade una implementación de evento de calendario &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> con una UI dedicada y un sistema de recordatorios, para que los eventos de calendario ahora se rendericen en su propia categoría de timeline, separada de la vista genérica kind-30023 de formato largo. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a> extiende los zaps de Bitcoin en cadena con soporte para splits, distribuyendo una única transacción de Bitcoin entre múltiples destinatarios según el tag de zap-split existente, para que un pago en cadena se comporte igual que un split Lightning. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a> añade una pantalla paginada de historial de transacciones en cadena que expone cada zap liquidado con el estado de confirmación en bloque.&lt;/p>
&lt;p>La mensajería de grupo gana paridad con el chat uno-a-uno: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a> añade soporte de respuesta para mensajes de grupo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>/MLS, para que los hilos dentro de grupos cifrados ahora se rendericen con la misma UI de referencia al padre que las notas públicas. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a> endurece la validación de recibos de zap &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> comprobando que el proveedor LNURL coincide con el lud16 declarado del destinatario, cerrando una clase de falsificación donde un LNURL de tercero podía acuñar un recibo por un pago que nunca aterrizó. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a> acepta dimensiones en coma flotante en los tags &lt;code>imeta&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a>, alineando Amethyst con clientes que publican valores fraccionarios de densidad de píxel desde dispositivos como la pantalla Retina del iPhone. El lanzamiento también conecta Payment Targets, un nuevo evento reemplazable de tarro de propinas multi-rail cubierto en la sección de protocolo abajo.&lt;/p>
&lt;h3 id="white-noise-v2026522-push-en-ios-ux-de-bloqueo-y-añadir-miembros">White Noise v2026.5.22: push en iOS, UX de bloqueo y añadir miembros&lt;/h3>
&lt;p>White Noise, el mensajero de grupos del protocolo Marmot, publicó &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a> con las notificaciones push en iOS como característica principal. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a> implementa una Notification Service Extension (NSE) de iOS que descifra mensajes MLS dentro del proceso de la extensión y los expone como notificaciones del sistema, para que los usuarios de iPhone ya no necesiten la app en primer plano para recibir mensajes. La plomería del token push de Android se enruta por el mismo pipeline backend, con la NSE por plataforma manteniendo el texto cifrado fuera del broker.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a> añade una UX completa de bloqueo y desbloqueo con flujos de confirmación y filtrado de listas de contactos. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a> añade el largamente solicitado botón &amp;ldquo;Añadir miembros&amp;rdquo; a la pantalla de información del grupo, cerrando una brecha de UX donde los administradores de grupo tenían que recurrir a enlaces para compartir. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a> introduce una pantalla dedicada de ajustes de notificaciones en iOS, y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a> conecta compartir mediante pulsación larga para medios y mensajes.&lt;/p>
&lt;h3 id="mdk-añade-mensajes-efímeros-nip-40-en-todas-las-plataformas">MDK añade mensajes efímeros NIP-40 en todas las plataformas&lt;/h3>
&lt;p>El Marmot Development Kit, el núcleo Rust compartido usado por White Noise iOS, White Noise Android y cualquier futuro cliente Marmot, fusionó &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> para exponer la validación de mensajes efímeros y el manejo de expiración &lt;a href="https://nostrcompass.org/es/topics/nip-40/">NIP-40&lt;/a> mediante el puente UniFFI. El PR es el segundo de una serie de tres partes. iOS y Android ahora comparten una implementación Rust de la lógica de expiración; las reglas de tiempo viven en una única ruta de código auditada consumida por ambas plataformas mediante UniFFI. &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> limita la longitud almacenada de las razones de fallo de bienvenida y las sanea antes de persistirlas, una pasada de endurecimiento separada que complementa el manejo de eventos de bienvenida publicado la semana pasada.&lt;/p>
&lt;p>Los mensajes efímeros en MLS no son solo una comodidad de UI. El tag de expiración se publica con el sobre del mensaje cifrado, para que un destinatario que nunca abre el mensaje todavía tenga el texto cifrado subyacente expirando en la capa de relay junto con cualquier copia en caché en el cliente receptor. Con MDK poseyendo la ruta de validación, el comportamiento se mantiene consistente entre clientes: cualquier implementación conforme de Marmot aplica la misma semántica de expiración, para que un cliente honrando la expiración mientras otro guarda en caché para siempre deje de ser un peligro de portabilidad.&lt;/p>
&lt;h3 id="mostro-v0174-la-fase-3-cierra-el-bucle-del-bono-recortado">Mostro v0.17.4: la Fase 3 cierra el bucle del bono recortado&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el protocolo de intercambio de Bitcoin peer-to-peer construido sobre Nostr, publicó la Fase 3 de su despliegue de bono anti-abuso en &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">v0.17.4&lt;/a>. &lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a> aterriza el flujo de pago para bonos recortados, tomando la garantía perdida del perdedor y desembolsándola al ganador de la disputa. &lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a> añade la Fase 3.5, un mensaje explícito de confirmación de pago al ganador para que sepa que los sats recortados se han liquidado, con el evento de confirmación llegando en la misma sesión Nostr que la resolución de la disputa. La Fase 2, cubierta la semana pasada, introdujo el recorte como una acción de admin; la Fase 3 es la diferencia entre amenazar con una penalización y aplicarla.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/746">PR #746&lt;/a> permite al demonio finalizar disputas que carecen de una fila de solucionador, un caso límite que anteriormente estancaba la resolución en disputas heredadas. &lt;a href="https://github.com/MostroP2P/mostro/pull/748">PR #748&lt;/a> tolera tasas nulas en la respuesta &lt;code>/exrates/BTC&lt;/code> de Yadio para que una breve caída de Yadio ya no rompa la ruta de conversión fiat de Mostro. &lt;a href="https://github.com/MostroP2P/mostro/pull/745">PR #745&lt;/a> documenta la especificación para proveedores de precio multi-fuente, la base para eliminar Yadio como punto único de fallo. El cliente móvil de Mostro conectó la ruta de reclamación de la Fase 3 correspondiente en &lt;a href="https://github.com/MostroP2P/mobile/pull/596">PR #596&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v610-relays-de-búsqueda-y-git-casts-nip-34">Applesauce v6.1.0: relays de búsqueda y git casts NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, el kit de herramientas Nostr modular que impulsa Coracle, noStrudel y la pila de Pablo F7z, publicó &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0">v6.1.0&lt;/a> a través de sus paquetes. El lanzamiento añade soporte de primera clase para listas de relays de búsqueda &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>: los eventos kind 10086 permiten a un usuario señalizar &amp;ldquo;pregunta a estos relays si quieres encontrarme&amp;rdquo;, situándose junto a las listas outbox &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> como una primitiva de descubrimiento. Las aplicaciones construidas sobre &lt;code>applesauce-core&lt;/code> obtienen un observable reactivo &lt;code>User.lookupRelays$&lt;/code> y un cargador correspondiente en &lt;code>applesauce-relay&lt;/code>.&lt;/p>
&lt;p>Las fábricas de git-cast &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> llegan a &lt;code>applesauce-factory&lt;/code>, dando a cada cliente construido con Applesauce una ruta de una línea para publicar anuncios de repo (kind 30617), parches (kind 1617) e issues (kind 1621). Las propiedades reactivas &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> y &lt;code>User.graspServers$&lt;/code> permiten a las aplicaciones listar los repos seguidos de un usuario, los mantenedores de repos y los servidores GRASP configurados directamente desde el mismo objeto User. El lanzamiento también corrige los métodos manuales del pool que silenciosamente descartaban relays offline en &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>.&lt;/p>
&lt;h3 id="notedeck-fusiona-negentropy-nip-77-para-giftwraps-y-backfill-de-hilos">Notedeck fusiona negentropy NIP-77 para giftwraps y backfill de hilos&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente nativo de escritorio multi-columna de Damus, fusionó &lt;a href="https://github.com/damus-io/notedeck/pull/1459">PR #1459&lt;/a> el 25 de mayo para conectar la reconciliación completa por negentropy &lt;a href="https://nostrcompass.org/es/topics/nip-77/">NIP-77&lt;/a> en la ruta compartida del outbox. El PR añade tramas de cliente y relay NIP-77, sesiones de negentropy locales al relay y un rastreador de historial completo del outbox que impulsa la reconciliación del conjunto local y las obtenciones de eventos faltantes. Los giftwraps de mensajes obtienen reconciliación por negentropy para que los sobres de mensajes privados puedan recuperarse de los relays de lectura de la cuenta seleccionada. Las vistas de hilo ya no están limitadas por el límite de respuestas de la suscripción en vivo. Dave PNS reemplaza su implementación de negentropy local de Dave con la ruta compartida del outbox mientras preserva su comportamiento existente de historial acotado.&lt;/p>
&lt;p>Las suscripciones en vivo y negentropy ahora usan filtros separados. Un flujo puede mantener una pequeña solicitud en vivo mientras emite un filtro de negentropy más amplio para reconciliar lo que el relay ya tiene. El PR intencionalmente no habilita la sincronización amplia de negentropy para timelines de home o perfil, lo que cambiaría las características de coste del arranque en frío. Se añadió cobertura de test para reconciliación, entrega de giftwrap, backfill de hilos, restauración de Dave PNS, cambio de cuenta, reorientación de relay, reintentos de fetch y comportamiento de relay NIP-77.&lt;/p>
&lt;h3 id="vector-v040-reescritura-de-vector-core-tor-nip-46-mls-con-negentropy-completo-y-una-superficie-de-agente-mcp">Vector v0.4.0: reescritura de vector-core, Tor, NIP-46, MLS con negentropy completo y una superficie de agente MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, el mensajero multiplataforma centrado en privacidad construido sobre DMs NIP-17 y grupos Marmot, publicó &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">v0.4.0&lt;/a> como su lanzamiento más grande hasta la fecha. El titular es una reescritura del motor desde cero: toda la lógica de Vector ahora vive en un único crate desacoplado, &lt;code>vector-core&lt;/code>, compartido entre escritorio, Android y cualquier cliente futuro, con más de 440 tests en el propio núcleo y el shell de la aplicación despojado de miles de líneas. La reescritura es la base para un CLI de Vector, bots y SDKs que impulsan el mismo código de protocolo que la GUI.&lt;/p>
&lt;p>La integración con Tor se envía con enrutado de tráfico con un clic y soporte de bridges para evitar la censura. El soporte multi-cuenta aterriza con un conmutador en la app. El inicio de sesión con firmador remoto llega mediante &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> con emparejamiento por bunker mediante QR o URI pegado, para que los usuarios puedan iniciar sesión sin exponer nunca su nsec. Delete-for-everyone funciona tanto en DMs &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> como en chats de grupo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, con Vector reteniendo la clave de firma efímera como una divergencia de especificación deliberada que las notas de lanzamiento indican explícitamente: &amp;ldquo;una desviación de las especificaciones tradicionales NIP-17/Marmot para controles de privacidad de usuario mejorados&amp;rdquo;. La clave efímera retenida da a los clientes Vector prueba local de que una eliminación fue sancionada por el remitente original, pero también significa que cualquier otro cliente que toque Vector ve una superficie de verificabilidad de eliminación diferente a la de los clientes NIP-17/Marmot de referencia.&lt;/p>
&lt;p>La sincronización de grupos MLS ahora se reconcilia completamente sobre negentropy &lt;a href="https://nostrcompass.org/es/topics/nip-77/">NIP-77&lt;/a>, la misma dirección que tomó Notedeck para giftwraps e hilos esta semana. El uploader de Blossom hace failover entre múltiples servidores, aprende las capacidades de cada servidor y sincroniza la lista de servidores entre dispositivos. Los paquetes de emoji personalizados son creables por el usuario, compartibles y compatibles entre otros clientes Nostr. La memoria SQLite bajó de aproximadamente 308MB a 5MB. El panel de emoji se abre desde caché en disco y los shortcodes estilo Discord (&lt;code>:smile:&lt;/code>) más el ranking de frecuencia Unicode exponen el glifo correcto primero.&lt;/p>
&lt;p>La adición más novedosa es &lt;code>vector-agent&lt;/code>, un servidor MCP (Model Context Protocol) que expone 21 herramientas para que los agentes de IA puedan controlar Vector: enviar DMs, gestionar grupos, subir archivos, editar perfiles. Este es el segundo proyecto Nostr esta semana (junto con Shopstr) en estrenar una superficie MCP, y la primera aplicación de clase mensajero en hacerlo. Junto con AgentNoise (cubierto la semana pasada), el patrón de clientes Nostr controlados por agentes está pasando de experimentos únicos a una dirección de plataforma deliberada.&lt;/p>
&lt;h3 id="cordn-aparece-como-un-mensajero-mls-mediado-por-coordinador">Cordn aparece como un mensajero MLS mediado por coordinador&lt;/h3>
&lt;p>&lt;a href="https://cordn.net">Cordn&lt;/a> (cliente web en &lt;a href="https://cordn.net">cordn.net&lt;/a>, repos en &lt;a href="https://github.com/Cordn-msg/cordn">Cordn-msg/cordn&lt;/a> y &lt;a href="https://github.com/Cordn-msg/cordn-web">Cordn-msg/cordn-web&lt;/a>) es un nuevo mensajero MLS que toma un enfoque arquitectónico diferente al de Marmot. Donde &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> está completamente basado en relays sin coordinador privilegiado (cada miembro del grupo escribe directamente a relays y cualquier relay conforme puede llevar el tráfico), Cordn introduce un rol de coordinador por grupo implementado como un servicio &lt;a href="https://nostrcompass.org/es/topics/contextvm/">ContextVM&lt;/a>. El coordinador ordena los commits MLS y maneja la distribución de bienvenidas.&lt;/p>
&lt;p>El argumento de Cordn, expuesto en su página &lt;a href="https://cordn.net/why">/why&lt;/a>, es que MLS tal como se despliega en mensajeros de producción &amp;ldquo;no está libre de coordinación&amp;rdquo; y que la &amp;ldquo;diseminación pública débilmente ordenada&amp;rdquo; hace que la convergencia del estado del grupo sea &amp;ldquo;mucho más difícil&amp;rdquo; sin un punto fuerte de coordinación. Un diseño mediado por coordinador proporciona un avance predecible de épocas y una resolución más simple de commits concurrentes. Los participantes se conectan al coordinador usando claves efímeras, para que el coordinador aprenda el ID del grupo y el tiempo del tráfico de commits pero no qué pubkeys a largo plazo son miembros. Cualquier parte consultando relays para un grupo Marmot ya puede ver la misma superficie: actividad del grupo por ID del grupo, con el tiempo inferible desde la llegada del evento. Cordn también reconoce que &amp;ldquo;la confianza en la disponibilidad permanece&amp;rdquo; con el auto-alojamiento: un coordinador auto-alojado evita la preocupación de centralización a nivel operador pero introduce un punto único de fallo para la liveness del grupo. Marmot evita ese punto único dejando el ordenado a MLS mismo (las épocas y los mensajes Commit manejan el ordenado dentro del protocolo) y distribuyendo eventos Welcome mediante gift wrap &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>, a costa de disciplina del lado del admin: los admins deben esperar el reconocimiento del relay de un Commit antes de enviar el Welcome correspondiente, y los clientes deben reconciliar commits concurrentes cuando la entrega del relay compite con una transición de estado.&lt;/p>
&lt;p>El contraste vale la pena examinarlo para cualquier equipo que elija una pila de mensajería privada. Marmot intercambia algo de complejidad de implementación por un despliegue independiente del relay sin actor privilegiado en la ruta. Cordn intercambia una dependencia de disponibilidad de un solo punto por un ordenado más estricto y un modelo operativo más simple. Ambos proyectos construyen sobre &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> y usan Nostr como la capa de identidad y transporte. El desacuerdo es sobre dónde vive el coste de coordinación. Los repos cordn-msg muestran una cadencia constante de commits con el servicio de coordinador implementado sobre ContextVM y la capa MLS construida sobre &lt;code>ts-mls&lt;/code>.&lt;/p>
&lt;h3 id="deepmarks-marcadores-nip-b0-con-publicación-monetizada-por-curador">deepmarks: marcadores NIP-B0 con publicación monetizada por curador&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public">deepmarks-public&lt;/a> es un cliente de referencia para la especificación propuesta de marcadores &lt;a href="https://nostrcompass.org/es/topics/nip-b0/">NIP-B0&lt;/a> (kind 39701), con una arquitectura de tres cajas (curador, indexador, visor) y un sistema de niveles financiado por zaps &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> directos al curador. El cliente implementa NIP-B0, &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, NIP-57, &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-98/">NIP-98&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y BUD-01 y BUD-04 de Blossom para almacenamiento de archivos. Un nivel vitalicio de 21.000 sats convierte a los lectores de pago en destinatarios recurrentes de zaps para el curador. El curador publica eventos de marcador, el indexador los enriquece con metadatos legibles por máquina y el visor renderiza el feed; cada rol es un servicio desplegable separado.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="amber-v610-ga-copia-de-seguridad-cifrada-por-cuenta">Amber v6.1.0 GA: copia de seguridad cifrada por cuenta&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> pasó de &lt;code>v6.1.0-pre3&lt;/code> a GA &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0">v6.1.0&lt;/a> esta semana. &lt;a href="https://github.com/greenart7c3/Amber/pull/444">PR #444&lt;/a> estrena copia de seguridad y restauración cifradas para la base de datos de permisos de aplicación, y &lt;a href="https://github.com/greenart7c3/Amber/pull/446">PR #446&lt;/a> divide la copia de seguridad por cuenta, para que los usuarios con múltiples identidades Nostr puedan hacer copia de seguridad y restaurar cada conjunto de concesiones de app independientemente. El trabajo de firma PSBT cubierto la semana pasada está en el corte GA.&lt;/p>
&lt;h3 id="citrine-suscripciones-por-relay-y-prevención-de-fugas-de-url-onion">Citrine: suscripciones por relay y prevención de fugas de URL onion&lt;/h3>
&lt;p>&lt;strong>Citrine&lt;/strong>, el relay personal en el dispositivo que se distribuye con Amethyst, publicó dos correcciones este ciclo. &lt;a href="https://github.com/greenart7c3/Citrine/pull/157">PR #157&lt;/a> cambia de una única suscripción global a suscripciones etiquetadas por relay, para que dos relays de origen que comparten un filtro &lt;code>kinds: [1]&lt;/code> ya no colisionen en el lado del agregador. &lt;a href="https://github.com/greenart7c3/Citrine/pull/162">PR #162&lt;/a> filtra las URLs de relay onion cuando el proxy Tor saliente está deshabilitado, previniendo que las direcciones onion filtren en la ruta de enrutado de clearnet.&lt;/p>
&lt;h3 id="angor-v0227-y-v0228-fiabilidad-de-relays-y-reconexión-de-boltz">Angor v0.2.27 y v0.2.28: fiabilidad de relays y reconexión de Boltz&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong> publicó &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.27">v0.2.27&lt;/a> y &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.28">v0.2.28&lt;/a>. &lt;a href="https://github.com/block-core/angor/pull/874">PR #874&lt;/a> corrige un bug de deduplicación de relays donde solo un relay estaba conectado a la vez, una regresión que degradaba silenciosamente la fiabilidad para proyectos con múltiples endpoints de relay. &lt;a href="https://github.com/block-core/angor/pull/876">PR #876&lt;/a> añade lógica de reconexión WebSocket para la monitorización de submarine swaps de Boltz, para que una breve desconexión ya no deje un swap en estado desconocido.&lt;/p>
&lt;h3 id="nostrord-v110-zaps-nip-57-y-distinción-de-roles-nip-29">Nostrord v1.1.0: zaps NIP-57 y distinción de roles NIP-29&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> publicó &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.1.0">v1.1.0&lt;/a> con soporte de zaps Lightning &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> para mensajes y perfiles (&lt;a href="https://github.com/nostrord/nostrord/pull/98">PR #98&lt;/a>) y una distinción adecuada en el feed de actividad entre cambios de rol &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> y adiciones de miembros (&lt;a href="https://github.com/nostrord/nostrord/pull/92">PR #92&lt;/a>), que solía renderizarse idénticamente y ocultaba quién había sido promovido frente a quién había sido invitado.&lt;/p>
&lt;h3 id="ぬるぬる-v15x-keystore-mls-con-sqlcipher-y-recuperación-de-épocas">ぬるぬる v1.5.x: keystore MLS con SQLCipher y recuperación de épocas&lt;/h3>
&lt;p>&lt;strong>ぬるぬる&lt;/strong> (nurunuru, por tami1A84), un cliente Nostr en japonés que implementa mensajería de grupo MLS (kind 443) junto con NIP-44, búsqueda avanzada NIP-50, NIP-55 y NIP-70, publicó cinco lanzamientos esta semana. &lt;a href="https://github.com/tami1A84/null--nostr/pull/184">PR #184&lt;/a> introduce cifrado SQLCipher para el keystore MLS en la capa rust-engine. &lt;a href="https://github.com/tami1A84/null--nostr/pull/187">PR #187&lt;/a> y &lt;a href="https://github.com/tami1A84/null--nostr/pull/188">PR #188&lt;/a> extienden SQLCipher a Android e iOS respectivamente, con un paso de purga de texto plano heredado y guardias de CI. &lt;a href="https://github.com/tami1A84/null--nostr/pull/189">PR #189&lt;/a> y &lt;a href="https://github.com/tami1A84/null--nostr/pull/191">PR #191&lt;/a> añaden recuperación de épocas de pares MLS con una caché de replay y un banner de recuperación en ambas plataformas, para que un cliente que se queda atrás en los commits del grupo pueda recuperarse sin perder la conversación. ぬるぬる es un cliente Marmot construido sobre &lt;code>mdk-core&lt;/code>, &lt;code>mdk-sqlite-storage&lt;/code> y &lt;code>mdk-storage-traits&lt;/code> de &lt;code>marmot-protocol/mdk&lt;/code>, por lo que el trabajo de SQLCipher y recuperación de épocas aterriza dentro del mismo runtime MDK que usa White Noise.&lt;/p>
&lt;h3 id="bitcredit-core-v0510-corrección-de-propagación-de-bloques-enraizada-en-nostr">Bitcredit Core v0.5.10: corrección de propagación de bloques enraizada en Nostr&lt;/h3>
&lt;p>&lt;strong>Bitcredit Core&lt;/strong> publicó &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10">v0.5.10&lt;/a> con una corrección para un campo Nostr-node-id faltante durante la propagación de bloques, que estaba rompiendo los flujos de creación de empresa que incluían subida de identidad. Bitcredit es un protocolo de e-bill que usa identidades Nostr como raíz de confianza para eventos de propagación de empresa y factura.&lt;/p>
&lt;h2 id="cambios-sin-publicar">Cambios sin publicar&lt;/h2>
&lt;p>&lt;strong>Jumble&lt;/strong> abrió &lt;a href="https://github.com/CodyTseng/jumble/pull/797">PR #797&lt;/a> para inicio de sesión con Google mediante el firmador de umbral Pomegranate, permitiendo a un usuario dividir su clave Nostr entre múltiples partes para que ningún firmador único posea el secreto completo. Este es un paso significativo más allá de los flujos de bunker o importación de nsec: un usuario puede recuperar su cuenta incluso si una parte firmadora está comprometida, sin que esa parte posea nunca la clave privada completa.&lt;/p>
&lt;p>&lt;strong>Shopstr&lt;/strong> abrió &lt;a href="https://github.com/shopstr-eng/shopstr/pull/492">PR #492&lt;/a> inicializando un servidor MCP (Model Context Protocol), con &lt;a href="https://github.com/shopstr-eng/shopstr/pull/494">PR #494&lt;/a> construyendo la infraestructura de soporte (fetch de relay, parsers, validación, errores, dedup, audit logging) y &lt;a href="https://github.com/shopstr-eng/shopstr/pull/472">PR #472&lt;/a> añadiendo una lista blanca de relays para el gestor de relays MCP. Esto hace de Shopstr el primer marketplace Nostr que se expone como servidor MCP, para que los agentes de IA puedan navegar y actuar sobre listados NIP-99 como una herramienta estructurada.&lt;/p>
&lt;p>&lt;strong>Keydex&lt;/strong>, la bóveda de secretos compartidos Shamir, abrió una migración sustancial en &lt;a href="https://github.com/mplorentz/keydex/pull/226">PR #226&lt;/a> moviendo los kinds personalizados 1337-1345 al rango 713-721, junto con &lt;a href="https://github.com/mplorentz/keydex/pull/239">PR #239&lt;/a> añadiendo AEAD sobre los shares Shamir y &lt;a href="https://github.com/mplorentz/keydex/pull/234">PR #234&lt;/a> migrando a aritmética GF256. La migración del rango de kinds alinea Keydex con la forma en que el repo NIPs asigna kinds personalizados, alejándose de un rango autoreclamado.&lt;/p>
&lt;p>&lt;strong>Mill&lt;/strong> (&lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a>) es una nueva UI de firmador Nostr drop-in de &lt;a href="https://github.com/0ceanSlim">OceanSlim&lt;/a> (mantenedor del relay Go &lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>), distribuido como un Web Component con una única etiqueta script en &lt;a href="https://www.npmjs.com/package/nostr-mill">npm&lt;/a> y &lt;a href="https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js">jsDelivr&lt;/a>. Una etiqueta &lt;code>&amp;lt;script&amp;gt;&lt;/code> da a una app web los seis puntos de entrada comunes de firmador tras una UI unificada: extensión de navegador &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>, bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (pegado de URL o emparejamiento por QR con relays especificables por el usuario, inusual entre integraciones de bunker en página), Amber &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> mediante intents Android, nsec cifrado almacenado en &lt;code>sessionStorage&lt;/code> mediante AES-256-GCM con PBKDF2, &lt;code>npub&lt;/code> solo lectura y generación de par de claves en el navegador. El componente es tematizable mediante 29 propiedades CSS personalizadas con alcance al Shadow DOM y expone una pequeña API rastreada por SemVer (&lt;code>MILL.open&lt;/code>, eventos &lt;code>mill:connected&lt;/code> / &lt;code>mill:disconnected&lt;/code>, exportaciones de tema con nombre). La motivación del mantenedor es que los flujos de inicio de sesión con bunker han sido reimplementados una app web a la vez a través de Nostr. Consolidar sobre un componente compartido permite a los clientes converger sobre cómo debe comportarse la UX de firmador, y convierte flujos opcionales (como el inicio de sesión con clave delegada mediante firmadores de umbral, reflejando el inicio de sesión con Google basado en Pomegranate de Wisp cubierto arriba) en una superficie reutilizable que cualquier app puede insertar. Mill está en npm v1.5.0, con un solo mantenedor, en fase alfa, con grain como el primer integrador planeado.&lt;/p>
&lt;p>&lt;strong>moStard&lt;/strong>, un fork de &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> enfocado en Monero por &lt;a href="https://github.com/roguehashrate">roguehashrate&lt;/a>, alcanzó &lt;a href="https://github.com/roguehashrate/moStard/releases">v1.0.1&lt;/a> esta semana con un conjunto de características reducido y una identidad temática de Monero superpuesta sobre la misma pila Applesauce + worker-relay. El trabajo de esta semana aterrizó el renderizado de eventos software-application kind 32267 de Zapstore (tarjetas incrustadas en el timeline mostrando nombre de la app, icono, capturas, plataforma, licencia y un enlace de lanzamiento a &lt;code>zapstore.dev/apps/&amp;lt;d-tag&amp;gt;&lt;/code>), encuestas mediante kind 20 y kind 21, propinas basadas en Payment Targets NIP-A3 con códigos QR por método, renderizado de markdown en notas, soporte de selector de GIFs para teclados de GIF externos y correcciones de emparejamiento del firmador Amber. El enmarque Monero se extiende al flujo de propina: las entradas &lt;code>payto&lt;/code> NIP-A3 para direcciones &lt;code>monero&lt;/code> obtienen botones de primera clase en la misma UI junto con &lt;code>lightning&lt;/code> y &lt;code>bitcoin&lt;/code>. El cliente tiene un solo mantenedor y está en fase alfa, pero el trabajo del 27 de mayo muestra a un constructor tirando de NIP-A3 desde los anuncios de especificación de protocolo de esta semana directamente a un fork en producción en cuestión de días.&lt;/p>
&lt;h2 id="actualizaciones-de-nip-y-trabajo-de-especificación-de-protocolo">Actualizaciones de NIP y trabajo de especificación de protocolo&lt;/h2>
&lt;h3 id="pila-nip-de-calendario-cuatro-propuestas-del-equipo-formstr">Pila NIP de calendario: cuatro propuestas del equipo Formstr&lt;/h3>
&lt;p>Ix2 (&lt;a href="https://github.com/geralt-debugs">@geralt-debugs&lt;/a>) abrió cuatro PRs coordinados de NIP el 17 de mayo, todos referenciando la implementación &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> que ya se distribuye bajo el mismo autor. &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> propone kind 84 como un evento generalizado de &amp;ldquo;autoremoción de participante&amp;rdquo;: un participante etiquetado en cualquier evento puede publicar un kind 84 que referencie el original mediante tags &lt;code>e&lt;/code>, &lt;code>a&lt;/code> y &lt;code>k&lt;/code> para señalizar la exclusión. Los relays deben validar que el firmante del kind 84 aparece en un tag &lt;code>p&lt;/code> del evento referenciado antes de honrar la remoción, y una eliminación kind 5 siempre tiene precedencia. El PR generaliza un patrón que previamente solo se describía dentro del contexto de calendario NIP-52, para que kind 84 se convierta en la forma estándar de que los no-autores se retiren de cualquier evento de participante.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> es la base de la pila de calendario: NIP-52E para eventos privados de calendario (kinds 32678 basados en tiempo, 32681 evento de día, 32123 lista de calendarios privados, 31926 lista de ocupación, 1052 gift wrap, 52 rumor) y NIP-52R para eventos recurrentes. En el núcleo arquitectónico está el patrón de view-key: un par de claves generado aleatoriamente cifra el contenido del evento con NIP-44, y la mitad secreta (codificada en bech32 como &lt;code>nsec&lt;/code>) se envuelve en gift wrap a cada participante. El firmante solo posee el tag &lt;code>d&lt;/code> público; todo lo demás vive en &lt;code>content&lt;/code> cifrado. Desacoplar el cifrado de contenido de la identidad de esta forma significa que editar un evento no requiere volver a distribuir claves a los destinatarios. NIP-52R define dos tags opcionales en los kinds existentes 31923 y 31922 para declarar recurrencia usando valores RRULE RFC 5545 desnudos, con el índice de día &lt;code>D&lt;/code> volviéndose opcional cuando RRULE está presente. El secreto hacia adelante está explícitamente ausente: una view key filtrada revela todas las versiones pasadas y futuras del evento bajo el mismo tag &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> construye sobre NIP-52E con una especificación de programación de citas descentralizada que la descripción del PR llama &amp;ldquo;una alternativa drop-in a Calendly/Cal.com sin intermediario central&amp;rdquo;. Kind 31927 anuncia una página de programación con ventanas de disponibilidad cifradas; kind 32680 es un registro de recuperación auto-cifrado del lado del host para la view key; kinds 1057 y 1058 son la solicitud y respuesta de reserva envueltas en gift wrap. La mecánica ingeniosa: el reservador genera tanto el tag &lt;code>d&lt;/code> como la view key para el futuro evento privado antes de enviar la solicitud, para que el reservador pueda añadir la cita a su propio calendario inmediatamente con la clave correcta, y el host nunca tenga que hacer un round-trip de una clave de vuelta. Las respuestas de reserva llevan un tag &lt;code>status&lt;/code> sin cifrar en el envoltorio exterior para que los relays puedan filtrar sin descifrar.&lt;/p>
&lt;p>Una implementación de referencia ya está en vivo en &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> y como la app Android Calendar en Zapstore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> cierra &lt;a href="https://github.com/nostr-protocol/nips/pull/2027">PR #2027&lt;/a> en su favor, consolidando una propuesta anterior de calendario privado que había estado abierta desde principios de año.&lt;/p>
&lt;h3 id="payment-targets-y-silent-payments">Payment Targets y Silent Payments&lt;/h3>
&lt;p>Otras dos propuestas de NIP circularon esta semana en documentos &lt;code>kind:30023&lt;/code> de formato largo.&lt;/p>
&lt;p>Una propuesta de &lt;strong>Payment Targets&lt;/strong> (NIP-A3 / payto) define un evento reemplazable kind 10133 que lleva uno o más tags &lt;code>[&amp;quot;payto&amp;quot;, &amp;quot;&amp;lt;type&amp;gt;&amp;quot;, &amp;quot;&amp;lt;authority&amp;gt;&amp;quot;]&lt;/code> que mapean a URIs &lt;code>payto:&lt;/code> RFC 8905. Los tipos soportados incluyen bitcoin, lightning, ethereum, monero, nano, cashme, revolut y venmo. La intención es estandarizar un tarro de propinas multi-rail que complementa (no reemplaza) a los zaps NIP-57 basados en lud16. Amethyst v1.11.0 es el primer implementador; los PRs fusionados &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2953">#2953&lt;/a> y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3009">#3009&lt;/a> estrenan la superficie de suscripción y observación, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3011">PR #3011&lt;/a> conecta la UI para &lt;code>PaymentTargetsEvent&lt;/code>.&lt;/p>
&lt;p>Dos propuestas competidoras de Silent Payments cayeron de diferentes autores. La primera variante deriva las claves de escaneo y gasto BIP-352 de silent-payment del &lt;code>nsec&lt;/code> mediante tweaks aditivos públicos, para que cualquier remitente pueda construir una dirección &lt;code>sp1q...&lt;/code> desde un &lt;code>npub&lt;/code> sin configuración. La advertencia del autor es explícita en la especificación: &amp;ldquo;bscan y bspend DEBEN ser tratadas con exactamente el mismo cuidado que el nsec&amp;rdquo;, porque la clave de escaneo revela el nsec. Una segunda variante toma el enfoque inverso, añadiendo un campo &lt;code>sp_address&lt;/code> a los metadatos de perfil kind 0 que contiene una dirección BIP-352 silent-payment estándar cuyas claves se mantienen independientes de la identidad Nostr. La variante dos es estructuralmente más segura. Ambas propuestas atrajeron un hilo de revisión reflexivo; erskingardner (líder de Marmot) publicó un &lt;a href="https://gist.github.com/trbouma/77648ebe1005b181b67d1c4b42c7f31d?permalink_comment_id=6167489#gistcomment-6167489">comentario&lt;/a> detallado en el gist trbouma que rastrea la propuesta. Su preocupación central es que la variante 1 deriva la clave privada de escaneo del &lt;code>nsec&lt;/code> más un tweak calculable públicamente, lo que significa que cualquiera que posea la clave de escaneo (incluido un servicio de escaneo de terceros al que el usuario tenga que delegar en la práctica) puede recuperar el &lt;code>nsec&lt;/code> completo restando ese tweak. La misma clave que permite a un servicio remoto escanear los pagos entrantes también permite a ese servicio robar tu identidad y cualquier fondo derivado de ella.&lt;/p>
&lt;p>En el lado git-sobre-Nostr NIP-34, hzrd149 publicó 2 parches a &lt;a href="https://gitworkshop.dev/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5/relay.ngit.dev/schemata">schemata&lt;/a>. &lt;a href="https://gitworkshop.dev/">gitworkshop.dev&lt;/a> en sí atrajo dos reportes de issues: uno señalando que las sesiones de login se pierden al refrescar la página cuando se usa un firmador remoto NIP-46, el otro pidiendo estilizado distinto para enlaces en las vistas previas de README.&lt;/p>
&lt;h2 id="seis-años-de-mayos-de-nostr">Seis años de mayos de Nostr&lt;/h2>
&lt;p>El último newsletter de mayo de 2026 se aleja de los lanzamientos de la semana para recorrer el mes de mayo a lo largo de la historia de Nostr. Cada año tuvo un centro de gravedad diferente: 2021 fue un único commit, 2022 fue la formación del propio repo NIPs, 2023 fue la explosión de la especificación de protocolo, 2024 fue el ciclo de consolidación, 2025 fue cuando se fusionó negentropy y el Notedeck de Damus se graduó a Beta, y 2026 es el mes cubierto en este número y en los tres anteriores.&lt;/p>
&lt;h3 id="mayo-2021">Mayo 2021&lt;/h3>
&lt;p>Nostr tenía seis meses. El único código Nostr vivía en &lt;a href="https://github.com/fiatjaf/nostr">fiatjaf/nostr&lt;/a> y todo el mes produjo exactamente un commit, pero ese commit se convirtió en una de las partes más usadas del protocolo. El 22 de mayo, fiatjaf &lt;a href="https://github.com/fiatjaf/nostr/commit/9ee3a02">reutilizó NIP-02&lt;/a> como el NIP de lista de contactos. El mensaje del commit dice: &amp;ldquo;repurpose NIP-02 and add NIP authorship&amp;rdquo;, y el crédito explícito es a &lt;a href="https://github.com/nostr-protocol/nostr/pull/16">PR #16&lt;/a> de arcbtc (Ben Arc de LNbits), abierto el 9 de febrero y cerrado el día antes de que fiatjaf plegara la idea en NIP-02. El pitch de arcbtc era pequeño: un kind para &amp;ldquo;enviar lista de seguidores a los relays&amp;rdquo; que sería &amp;ldquo;útil para restaurar cuentas y recomendar claves públicas a seguir&amp;rdquo;. fiatjaf lo generalizó en un único evento &lt;code>kind:3&lt;/code> cuyos tags sirven tres propósitos a la vez. Son una lista de follow (el grafo social), un almacén de petname (apodos locales para amigos) y una fuente de recomendación de relays (qué relays usa un follow). El mismo evento, reemplazable por autor, se convirtió en la respuesta canónica a &amp;ldquo;a quién sigue esta persona&amp;rdquo;, &amp;ldquo;cómo los llama&amp;rdquo; y &amp;ldquo;dónde lee&amp;rdquo;. Cada cliente construido en los siguientes cinco años lee &lt;code>kind:3&lt;/code>. La convención añadida en el mismo commit, que cada NIP nombra a su autor, es la razón por la que cada especificación ahora tiene firmas.&lt;/p>
&lt;h3 id="mayo-2022">Mayo 2022&lt;/h3>
&lt;p>El mes en que el repo NIPs se convirtió en un proyecto comunitario. El 1 de mayo, fiatjaf &lt;a href="https://github.com/nostr-protocol/nips/commit/f25c7e6">migró las especificaciones&lt;/a> de &lt;code>fiatjaf/nostr&lt;/code> a un repo dedicado &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> y el 2 de mayo añadió &lt;a href="https://github.com/nostr-protocol/nips/commit/c053670">criterios formales de aceptación&lt;/a>. Dos días después, Robert C. Martin (Uncle Bob) abrió &lt;a href="https://github.com/nostr-protocol/nips/pull/1">PR #1&lt;/a>, el primer pull request externo, proponiendo convenciones de hilo para tags &lt;code>e&lt;/code> y &lt;code>p&lt;/code>. El PR fue numerado originalmente NIP-13, luego &lt;a href="https://github.com/nostr-protocol/nips/commit/bd4a81a">renombrado a NIP-10&lt;/a> para dejar sitio a proof-of-work. Tres de los primeros seis NIPs son de Uncle Bob: NIP-10 (marcadores de hilo), NIP-14 (&lt;a href="https://github.com/nostr-protocol/nips/commit/ebacbcc">el tag Subject&lt;/a>) y el commit del 21 de mayo que fijó &lt;a href="https://github.com/nostr-protocol/nips/commit/e22ea1a">&lt;code>kind:1&lt;/code> como el kind canónico de nota de texto corta&lt;/a>. El 5 de mayo, William Casarin hizo sus primeros commits NIP: &lt;a href="https://github.com/nostr-protocol/nips/commit/d7a4aad">NIP-13 Proof of Work&lt;/a> y el &lt;a href="https://github.com/nostr-protocol/nips/commit/ad1eb96">evento kind:2 recommend-relay&lt;/a>. Al día siguiente, fiatjaf publicó &lt;a href="https://github.com/nostr-protocol/nips/commit/37eb53e">NIP-07 &lt;code>window.nostr&lt;/code>&lt;/a>, veinte líneas de markdown que definieron la interfaz de firmador de extensión de navegador aún usada hoy. La &lt;a href="https://github.com/nostr-protocol/nips/commit/57b86d2">advertencia CORS&lt;/a> de NIP-05 por David A. Harding y el &lt;a href="https://github.com/nostr-protocol/nips/commit/a4aea53">&lt;code>filter.limit&lt;/code>&lt;/a> de NIP-01 aterrizaron la misma semana. nostr-tools publicó su &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/dc489bf">primer build ESM importable por navegador&lt;/a> el 8 de mayo. Semisol redactó &lt;a href="https://github.com/nostr-protocol/nips/commit/a787093">NIP-15 (End Of Stored Events)&lt;/a> y &lt;a href="https://github.com/nostr-protocol/nips/commit/62fde6c">NIP-16 (rangos de kind de evento)&lt;/a> a final de mes, los documentos que aún gobiernan la semántica de sincronización de relay y la clasificación regular-vs-reemplazable-vs-efímero.&lt;/p>
&lt;h3 id="mayo-2023">Mayo 2023&lt;/h3>
&lt;p>La explosión de la especificación de protocolo. Se abrieron sesenta y cuatro PRs de NIP ese mes, con varias de las propuestas que definieron la superficie de Nostr para los próximos dos años aterrizando en 31 días, y el mayor anuncio de financiación que Nostr había recibido aterrizó el 4 de mayo con la &lt;a href="https://opensats.org/blog/opensats-receives-additional-funding-of-dollar10m-from-startsmall">subvención de $10 millones de OpenSats de #startsmall de Jack Dorsey&lt;/a>, el dinero que ha respaldado cada ola de subvenciones Nostr desde entonces. NIP-47 (Nostr Wallet Connect) fue &lt;a href="https://github.com/nostr-protocol/nips/pull/406">fusionado el 2 de mayo&lt;/a>, trayendo la especificación wallet-connect de Alby al protocolo principal. Dos días después Vitor Pamplona &lt;a href="https://github.com/nostr-protocol/nips/pull/498">propuso NIP-53 Live Activities&lt;/a> con salas &lt;code>kind:30311&lt;/code> y mensajes de chat &lt;code>kind:1311&lt;/code>, la base para cada superficie de livestreaming Nostr que siguió. Pablo Fernandez abrió &lt;a href="https://github.com/nostr-protocol/nips/pull/501">NIP-84 Highlights&lt;/a> el 5 de mayo y &lt;a href="https://github.com/nostr-protocol/nips/pull/530">NIP-89 Recommended Application Handlers&lt;/a> el 14 de mayo. v0l (Kieran Babich, autor de Snort) propuso &lt;a href="https://github.com/nostr-protocol/nips/commit/29f26e7">NIP-98 HTTP Auth&lt;/a> el 8 de mayo, la primitiva de autenticación de la que NIP-96 y Blossom dependieron ambos más tarde. Jonathan Staab propuso &lt;a href="https://github.com/nostr-protocol/nips/pull/532">NIP-32 Labels&lt;/a> el 15 de mayo, y &lt;a href="https://github.com/nostr-protocol/nips/pull/484">NIP-30 Custom Emoji&lt;/a> se fusionó el mismo día. Arthur Franca propuso &lt;a href="https://github.com/nostr-protocol/nips/pull/547">NIP-96 HTTP File Storage Integration&lt;/a> el 21 de mayo. Dos días después, Vitor añadió &lt;a href="https://github.com/nostr-protocol/nips/commit/e4937be">zap splits a NIP-57&lt;/a> y verbiricha añadió &lt;a href="https://github.com/nostr-protocol/nips/commit/0495931">borradores de formato largo &lt;code>kind:30024&lt;/code> a NIP-23&lt;/a>, la especificación que se convirtió en la base para los flujos modernos de autoría de formato largo Nostr en Habla, YakiHonne y Highlighter. fiatjaf propuso &lt;a href="https://github.com/nostr-protocol/nips/pull/566">NIP-29 Simple Groups&lt;/a> el 28 de mayo, la primera especificación de grupo gestionado por relay que cubre eventos de moderación &lt;code>kind:9000&lt;/code> a &lt;code>kind:9020&lt;/code>. El mes cerró con Paul Miller abriendo &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la conversación de NIP-44&lt;/a> el 31 de mayo, un diseño de DM cifrado basado en XChaCha20 destinado a reemplazar NIP-04. El lado del cliente se movió igual de rápido: Damus estrenó NWC, zap pool y Pending Zaps entre el &lt;a href="https://github.com/damus-io/damus/commits/master/?since=2023-05-10&amp;amp;until=2023-05-15">10 y el 15 de mayo&lt;/a>; Snort lanzó &lt;a href="https://github.com/v0l/snort/commit/6cbc3ae">zap pool&lt;/a> y &lt;a href="https://github.com/v0l/snort/commit/d5032d6">medios de pago L402&lt;/a>; &lt;a href="https://github.com/vitorpamplona/amethyst/releases">Amethyst&lt;/a> publicó aproximadamente treinta lanzamientos versionados a lo largo del mes, desde v0.40.1 el 1 de mayo hasta el rango v0.55.x a fin de mes, con zap splits en v0.45.0 y labels NIP-32 en v0.46.0; el &lt;a href="https://github.com/PrimalHQ/primal-android-app/commit/6654cf9">repo Primal Android&lt;/a> fue creado el 16 de mayo; &lt;a href="https://github.com/rust-nostr/nostr/releases/tag/v0.22.0">rust-nostr v0.22.0&lt;/a> añadió NIP-47 y NIP-58. El 1 de mayo, &lt;a href="https://github.com/hoytech/strfry/commit/de475c5">strfry publicó su integración de negentropy&lt;/a>, la primera implementación de relay del protocolo de reconciliación de conjuntos de Doug Hoyte que más tarde se convertiría en NIP-77. El mes cerró con &lt;a href="https://www.forbes.com/sites/digital-assets/2023/05/30/bitcoin-social-network-nostr-creator-fiatjaf-/">Forbes publicando un perfil de formato largo de fiatjaf el 30 de mayo&lt;/a>, uno de los primeros deep dives de la prensa mainstream sobre el fundador anónimo de Nostr.&lt;/p>
&lt;h3 id="mayo-2024">Mayo 2024&lt;/h3>
&lt;p>El ciclo de consolidación. Menos propuestas llamativas, más publicaciones. &lt;a href="https://github.com/nostr-protocol/nips/pull/787">NIP-54 Decentralized Wikis&lt;/a> se fusionó el 2 de mayo con artículos &lt;code>kind:30818&lt;/code> y tags &lt;code>d&lt;/code> normalizados por caso. Tres días después, &lt;a href="https://github.com/nostr-protocol/nips/pull/1213">NIP-56&lt;/a> se extendió para que los reportes de abuso pudieran señalizar amenazas digitales (malware, phishing) junto con categorías solo de contenido. El 6 de mayo, &lt;a href="https://github.com/nostr-protocol/nips/pull/1221">las reacciones NIP-25 se simplificaron&lt;/a> para dejar de incluir todo el hilo de respuesta como tags &lt;code>e&lt;/code>. Arthur Franca &lt;a href="https://github.com/nostr-protocol/nips/pull/1233">propuso NIP-22 Comment&lt;/a> el 12 de mayo, introduciendo &lt;code>kind:1111&lt;/code> para que las respuestas a eventos no-&lt;code>kind:1&lt;/code> (artículos, archivos, productos) obtengan una forma estructurada de hilar. El 19 de mayo, fiatjaf &lt;a href="https://github.com/nostr-protocol/nips/pull/1248">renovó NIP-46&lt;/a> para abandonar completamente NIP-04 y cambiar todo el tráfico de bunker a cifrado NIP-44, la maniobra de deprecación que ha dado forma a cada implementación de bunker desde entonces. El 20 de mayo, &lt;a href="https://github.com/nostr-protocol/nips/pull/923">NIP-71 Video Events&lt;/a> se fusionó con &lt;code>kind:21&lt;/code> y &lt;code>kind:22&lt;/code>, y &lt;a href="https://github.com/nostr-protocol/nips/pull/1171">NIP-10&lt;/a> añadió el argumento opcional de pubkey en los tags &lt;code>e&lt;/code> para que los clientes puedan resolver autores de hilo sin primero obtener el evento referenciado. &lt;a href="https://github.com/nostr-protocol/nips/pull/1175">NIP-35 Torrents&lt;/a> de Kieran Walsh se fusionó el 22 de mayo, y el 24 de mayo el README de NIPs referenció por primera vez &lt;a href="https://github.com/nostr-protocol/nips/pull/1251">CIP-01&lt;/a> como una propuesta off-repo, señalizando el inicio del patrón &amp;ldquo;NIPs como uno de varios lugares de propuesta&amp;rdquo;. El 25 de mayo, un &lt;a href="https://github.com/nostr-protocol/nips/pull/1254">PR de limpieza&lt;/a> eliminó el tag &lt;code>aes-256-gcm&lt;/code> de NIP-71 antes de que las implementaciones downstream lo congelaran. NIP-96 añadió &lt;a href="https://github.com/nostr-protocol/nips/pull/1262">&lt;code>list files&lt;/code> y descartó el requisito de transformación&lt;/a> el 27 de mayo. El 28 de mayo, Jonathan Staab propuso &lt;a href="https://github.com/nostr-protocol/nips/pull/1264">subir el listón de aceptación de NIP&lt;/a> para requerir al menos dos implementaciones interoperables antes de que un borrador pueda graduarse. Lado cliente: Damus etiquetó &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.7.2">v1.7.2&lt;/a> y &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.8">v1.8&lt;/a> más un &lt;a href="https://github.com/damus-io/damus/commits/v1.9">v1.9 con manejo completo de marcadores NIP-10&lt;/a> el 9-10 de mayo, aterrizó &lt;a href="https://github.com/damus-io/damus/commit/8feb228">autenticación NIP-98 en notificaciones push&lt;/a>, y estrenó &lt;a href="https://github.com/damus-io/damus/commit/52aefc8">soporte completo de marcadores NIP-10&lt;/a>. Amethyst hizo de &lt;a href="https://github.com/vitorpamplona/amethyst/commit/1f45a63">NIP-17 el modo DM por defecto&lt;/a> el 14 de mayo, construyó &lt;a href="https://github.com/vitorpamplona/amethyst/commit/aa97c7e">gestión de relays con modelo outbox NIP-65&lt;/a>, añadió &lt;a href="https://github.com/vitorpamplona/amethyst/commit/ff94f45">selección de servidor NIP-96&lt;/a>, y estrenó &lt;a href="https://github.com/vitorpamplona/amethyst/commit/04c4490">derivación de claves BIP-32/BIP-39 NIP-06&lt;/a>. Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.2">0.99.2&lt;/a> el 10 de mayo añadió etiquetado de usuarios y NWC de wallet externa, seguido por &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.4">0.99.4&lt;/a>. Pablo Fernandez aterrizó un &lt;a href="https://github.com/nostr-dev-kit/ndk/commits/master/?since=2024-05-01&amp;amp;until=2024-06-01">cluster de actualización optimista NDK&lt;/a> entre el 24 y el 31 de mayo. Snort añadió &lt;a href="https://github.com/v0l/snort/commit/5763d91">selección de servidor NIP-96&lt;/a>, y cashu-ts &lt;a href="https://github.com/cashubtc/cashu-ts/commit/3e20f45">separó sus primitivas cripto&lt;/a> en &lt;code>@cashu/crypto&lt;/code>.&lt;/p>
&lt;h3 id="mayo-2025">Mayo 2025&lt;/h3>
&lt;p>El mes en que &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 (Negentropy Syncing)&lt;/a> se fusionó el 27 de mayo, la especificación de fiatjaf y Doug Hoyte para el protocolo de cable que reemplaza los filtros REQ de fuerza bruta con computación de diferencia de coste logarítmico. Esta era la misma negentropy que strfry había publicado dos años antes como una característica del lado del relay, ahora formalizada como un protocolo cliente-relay, y &lt;a href="https://github.com/nostr-protocol/nips/pull/1939">la entrada del README&lt;/a> aterrizó el mismo día. La semana anterior, &lt;a href="https://github.com/nostr-protocol/nips/pull/1897">NIP-23 formato largo&lt;/a> definió cómo los documentos HTML se asocian a entidades Nostr mediante un tag &lt;code>&amp;lt;link&amp;gt;&lt;/code> el 24 de mayo, la primitiva de copia web canónica. NIP-25 añadió &lt;a href="https://github.com/nostr-protocol/nips/pull/1702">pistas de relay del objetivo de reacción&lt;/a> el 22 de mayo y &lt;a href="https://github.com/nostr-protocol/nips/pull/1486">descartó la recomendación de emoji-a-like/dislike&lt;/a>, tratando los emojis como unidades semánticas distintas. NIP-52 se &lt;a href="https://github.com/nostr-protocol/nips/pull/1922">simplificó&lt;/a> el 14 de mayo para centrarse en los kinds que los clientes estaban distribuyendo en producción, el recorte que hizo que las extensiones de calendario de Formstr de un año después fueran más limpias de injertar. El 9 de mayo, &lt;a href="https://github.com/nostr-protocol/nips/commit/873afc5fb823f58c3b7f29c5090f9c56172623f2">Follow Packs&lt;/a> (listas de follow curadas kind 39089) y &lt;a href="https://github.com/nostr-protocol/nips/pull/1848">Favorite Relays&lt;/a> (una nueva lista reemplazable bajo NIP-51) entraron en el README el mismo día. El arco del protocolo Marmot aún no había comenzado: solo el repo &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> existía (primer commit 9 de septiembre de 2024), y mayo de 2025 fue su fase de prototipo Svelte+Tauri, con el &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/commit/b8e6754">commit del 14 de mayo&lt;/a> eliminando código específico de Tauri mientras el proyecto pivotaba a su arquitectura actual. El núcleo Rust MDK dedicado (12 de septiembre de 2025), el repo de especificación de Marmot (19 de septiembre de 2025) y la UI Flutter (2 de diciembre de 2025) llegaron todos más tarde en el año. Del lado cliente, &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.4.0">Notedeck v0.4.0&lt;/a> de Damus se publicó el 5 de mayo como la primera Beta, graduándose de Alpha con búsqueda de texto completo, el asistente de IA Dave, zaps sobre NWC, GIFs, etiquetado de usuarios y listas de silencio. Dos días después, &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.0.0">Flotilla 1.0.0&lt;/a> de hodlbod cruzó el umbral de lanzamiento público como un cliente de chat de grupo basado en NIP-29, junto con &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.12">Coracle 0.6.12&lt;/a>, el primero de seis lanzamientos de Coracle que llegaron hasta &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.17">0.6.17 el 14 de mayo&lt;/a>. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v3.4.0">Amber v3.4.0&lt;/a> el 12 de mayo abandonó las APIs obsoletas de Android Autofill y ClipboardManager y migró de shared preferences cifradas a DataStore. Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.2.20">2.2.20&lt;/a> el 20 de mayo añadió el flujo Redeem Code para Primal Premium y una galería de imágenes rediseñada. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.14.0">nak v0.14.0&lt;/a> el 21 de mayo cortó un menor del CLI canónico la misma semana que los lanzamientos de Coracle, Flotilla y Notedeck. OpenSats recibió su mayor donación no-Bitcoin-treasury hasta la fecha cuando &lt;a href="https://opensats.org/blog/opensats-receives-two-million-donation-from-the-reynolds-foundation">la Reynolds Foundation donó $2 millones&lt;/a> el 22 de mayo.&lt;/p>
&lt;h3 id="mayo-2026">Mayo 2026&lt;/h3>
&lt;p>El mes cubierto en &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/">Newsletter #21&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/">#22&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-21-newsletter/">#23&lt;/a> y este número. El hilo definitorio es MLS-sobre-Nostr alcanzando producción multi-cliente: &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">MDK 0.8.0&lt;/a> estrenó primitivas de índice de hoja MIP-05 y key packages direccionables, seguido por &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> añadiendo validación de mensajes efímeros NIP-40 en iOS y Android mediante una superficie UniFFI compartida. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">White Noise v2026.5.22+25&lt;/a> estrenó push en iOS mediante una Notification Service Extension que descifra el texto cifrado MLS dentro del proceso de la extensión para que el broker nunca vea texto plano, y dos nuevos clientes Marmot aparecieron: &lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (un cliente de escritorio y Android en .NET/Avalonia con ranuras KeyPackage multi-dispositivo) y &lt;a href="https://cordn.net">Cordn&lt;/a> (una arquitectura MLS alternativa usando un coordinador por grupo sobre ContextVM). Angor migró su mensajería cifrada de NIP-04 a NIP-44 en &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>, cerrando el arco de deprecación que se abrió con &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la propuesta NIP-44 de Paul Miller en mayo de 2023&lt;/a>. El equipo Formstr abrió el envío coordinado de NIP más grande de la memoria reciente el 17 de mayo, con &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> para autoremoción de participantes, &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> para eventos privados de calendario y recurrencia (NIP-52E y NIP-52R), y &lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> para programación de citas descentralizada, todos con &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> ya distribuyendo la implementación de referencia. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">Amethyst v1.11.0&lt;/a> renderizó los calendarios NIP-52 como una categoría de timeline de primera clase y extendió los zaps de Bitcoin en cadena a distribuciones divididas. Un año después de que &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 se fusionara en mayo de 2025&lt;/a>, tres implementaciones independientes estrenaron la adopción de negentropy en la misma ventana: &lt;a href="https://github.com/damus-io/notedeck/pull/1459">Notedeck PR #1459&lt;/a> la conectó al cliente de escritorio de Damus para giftwrap y backfill de hilo, &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">Vector v0.4.0&lt;/a> usó sincronización MLS con negentropy completo como parte de su reescritura &lt;code>vector-core&lt;/code> desde cero junto con Tor con un clic y una superficie de agente MCP de 21 herramientas, y &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0-pre1">Citrine v3.0.0-pre1&lt;/a> la añadió al relay nativo Android junto con Tor incorporado y agregación multi-relay. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">Mostro v0.17.4&lt;/a> cerró el bucle del bono anti-abuso con pagos de bono recortado de la Fase 3 en &lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>, aplicando lo que el protocolo anteriormente solo amenazaba. Tres años desde &amp;ldquo;reemplazamos NIP-04&amp;rdquo; hasta &amp;ldquo;reemplazamos NIP-44 con estado de grupo MLS completo&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;p>Si quieres discutir, envíanos un DM en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #23</title><link>https://nostrcompass.org/es/newsletters/2026-05-21-newsletter/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-05-21-newsletter/</guid><description>&lt;p>Primal 3.5 estrena un shell de Android reconstruido, Amethyst añade zaps de Bitcoin en cadena, White Noise gana renderizado de markdown y enlaces profundos, Keycast pasa una auditoría de seguridad y AgentNoise te permite controlar agentes de codificación de IA locales sobre chat cifrado con Marmot. Hostr lanza una plataforma P2P de alojamiento en alquiler sobre Nostr con cuatro borradores de NIP que cubren listados, reservas y escrow basado en EVM. Angor migra la mensajería cifrada de NIP-04 a NIP-44, Dart NDK añade NIP-77 y un firmador web, Alby js-sdk v8 estrena reconexión multi-relay nativa para NWC y KeyChat parchea una brecha de secreto hacia adelante en la eliminación de prekeys únicas de Signal. En el lado del protocolo, el bono anti-abuso de Mostro alcanza la Fase 2, Wisp estrena respuestas privadas y reacciones envueltas en gift wrap, y una ola de implementación de NIP-05 sobre Namecoin toca media docena de clientes en una sola semana.&lt;/p></description><content:encoded>&lt;p>Primal 3.5 estrena un shell de Android reconstruido, Amethyst añade zaps de Bitcoin en cadena, White Noise gana renderizado de markdown y enlaces profundos, Keycast pasa una auditoría de seguridad y AgentNoise te permite controlar agentes de codificación de IA locales sobre chat cifrado con Marmot. Hostr lanza una plataforma P2P de alojamiento en alquiler sobre Nostr con cuatro borradores de NIP que cubren listados, reservas y escrow basado en EVM. Angor migra la mensajería cifrada de NIP-04 a NIP-44, Dart NDK añade NIP-77 y un firmador web, Alby js-sdk v8 estrena reconexión multi-relay nativa para NWC y KeyChat parchea una brecha de secreto hacia adelante en la eliminación de prekeys únicas de Signal. En el lado del protocolo, el bono anti-abuso de Mostro alcanza la Fase 2, Wisp estrena respuestas privadas y reacciones envueltas en gift wrap, y una ola de implementación de NIP-05 sobre Namecoin toca media docena de clientes en una sola semana.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="primal-35-para-android">Primal 3.5 para Android&lt;/h3>
&lt;p>Primal, el cliente social respaldado por su propia infraestructura de relay de caché, publicó &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a> esta semana con un shell de aplicación reconstruido. El rediseño reemplaza la estructura de navegación anterior por un diseño actualizado y una nueva pantalla Explore, dando a la superficie principal de descubrimiento su propio hogar dedicado. El lanzamiento añade reproducción de audio para las vistas previas de enlaces, para que los archivos de audio incrustados en las notas se reproduzcan en línea sin salir del feed. Las insignias de verificación NIP-05 ahora se muestran en línea en los perfiles, exponiendo la confirmación de identidad de un vistazo. El filtrado de notificaciones recibió una revisión, permitiendo a los usuarios acotar qué tipos de eventos llegan a su lista de notificaciones. El editor ganó un mejor manejo de enlaces a eventos, y la capa de base de datos subyacente recibió correcciones de estabilidad.&lt;/p>
&lt;h3 id="white-noise-markdown-enlaces-profundos-y-metadatos-de-audio">White Noise: markdown, enlaces profundos y metadatos de audio&lt;/h3>
&lt;p>White Noise, la app de mensajería de grupo cifrada con Marmot construida sobre Nostr y MLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>), tuvo una de sus semanas más ocupadas hasta la fecha en los repositorios frontend y backend.&lt;/p>
&lt;p>En el frontend, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a> añade renderizado completo de markdown para los mensajes de chat, por lo que negrita, cursiva, bloques de código y enlaces ahora se renderizan de forma nativa en la vista de mensajes. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a> habilita el flujo para abandonar el grupo que anteriormente estaba bloqueado para administradores no-último, y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a> añade soporte nativo de enlaces profundos para los URIs &lt;code>whitenoise://&lt;/code> y &lt;code>whitenoise-staging://&lt;/code> cubriendo usuarios, chats y ajustes, sin requerir ninguna infraestructura de redirección HTTP.&lt;/p>
&lt;p>En el backend en whitenoise-rs, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a> hace que la rotación de key packages funcione correctamente reutilizando la ranura &lt;code>d_tag&lt;/code> para publicaciones kind:30443, habilitando la semántica de evento reemplazable NIP-33 para que las rotaciones sucesivas de key packages reemplacen al evento anterior en los relays, manteniendo solo el key package actual. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a> extiende &lt;code>FileMetadata&lt;/code> con campos opcionales &lt;code>duration_ms&lt;/code> y &lt;code>waveform&lt;/code> para adjuntos de audio, coordinado con &lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a> de MDK que añade los mismos campos a los tags de medios MIP-04. Un nuevo crate &lt;code>whitenoise-markdown&lt;/code> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>) reemplaza el analizador de tokens nostr-sdk anterior con una biblioteca dedicada de renderizado de markdown.&lt;/p>
&lt;p>La propia especificación del protocolo Marmot recibió una corrección de seguridad en &lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>, que cierra un problema de seguridad al especificar explícitamente HKDF-SHA256 para las derivaciones de clave de imagen en MIP-01, eliminando la ambigüedad que podría llevar a la divergencia en las implementaciones. En MDK, &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> sanea las razones de fallo de bienvenida y limita la longitud almacenada, cerrando un hallazgo de seguridad separado.&lt;/p>
&lt;h3 id="amethyst-v1100-zaps-de-bitcoin-en-cadena">Amethyst v1.10.0: zaps de Bitcoin en cadena&lt;/h3>
&lt;p>Amethyst publicó cuatro lanzamientos esta semana, con &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a> como titular. El lanzamiento añade soporte para zaps de Bitcoin en cadena NIP-BC, permitiendo a los usuarios enviar, recibir y mostrar zaps liquidados directamente en cadena mediante transacciones de Bitcoin. Los lanzamientos anteriores de la serie corrigieron la detección de blobs Blossom para rechazar nombres de archivo no conformes (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>), parchearon las reglas de ProGuard para las compilaciones de escritorio y fusionaron el pull request &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a> para mostrar a los zappers de Bitcoin en cadena como una fila ₿ dedicada en la galería expandida de reacciones. Una pantalla de historial de transacciones en cadena con paginación en curso aterrizó en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>.&lt;/p>
&lt;h3 id="agentnoise-controla-agentes-de-codificación-sobre-white-noise">AgentNoise: controla agentes de codificación sobre White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a> de nvk es un ayudante de escritorio nativo en Rust que te permite usar un teléfono con White Noise como superficie de control para sesiones de agentes de codificación locales de Codex y Claude. La herramienta escucha uno o más chats de White Noise, autentica a los remitentes mediante un flujo PIN de primer emparejamiento y lanza agentes de codificación locales a través del launcher configurado. Enviar &lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code> desde tu teléfono abre una nueva sesión de trabajo de White Noise nombrada por el hostname de la máquina y un breve resumen del prompt, luego transmite actualizaciones de progreso y la salida final de vuelta a ese chat. Es intencionalmente Rust-primero y mantiene Node fuera del camino del puente de confianza. El proyecto alcanzó &lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a> esta semana, añadiendo respuestas más cortas legibles en teléfono, referencias a trabajos por prefijo corto único y un observador opcional de sesiones locales. AgentNoise ejecuta los CLIs &lt;code>wn&lt;/code> y &lt;code>wnd&lt;/code> de &lt;code>marmot-protocol/whitenoise-rs&lt;/code> como subprocesos, por lo que comparte su transporte Nostr con el propio cliente White Noise.&lt;/p>
&lt;h3 id="auditoría-de-seguridad-de-keycast-completada">Auditoría de seguridad de Keycast completada&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>, el servidor de firma remota NIP-46 orientado a equipos que almacena las claves privadas Nostr cifradas en reposo en SQLite, completó una auditoría de seguridad en mayo de 2026. La pasada de endurecimiento abordó problemas de autenticación, permisos, integridad de datos y dependencias, y los resultados están documentados en &lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>. Los cambios incluyen: la autenticación HTTP NIP-98 ahora requiere exactamente un tag &lt;code>u&lt;/code> y un tag &lt;code>method&lt;/code>, rechaza timestamps obsoletos y valida los hashes de &lt;code>payload&lt;/code>; la lista de permitidos &lt;code>ALLOWED_PUBKEYS&lt;/code> se analiza exactamente y se aplica del lado del servidor; las políticas vacías ahora deniegan por defecto las solicitudes de sign/encrypt/decrypt; la aplicación de claves foráneas está habilitada en las conexiones SQLite; y las rutas de aplicación anidadas como &lt;code>/teams/:id&lt;/code> están protegidas del lado del servidor. Una migración SQL normaliza el JSON de permisos de kinds permitidos antiguo al arranque. El proyecto sigue en fase temprana y la auditoría anota elementos residuales antes de confiarle claves reales de equipo.&lt;/p>
&lt;h3 id="scramble-cliente-marmot-para-escritorio-y-android">Scramble: cliente Marmot para escritorio y Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (antes OpenChat) es un cliente de escritorio y Android en .NET/Avalonia para el &lt;a href="https://nostrcompass.org/es/topics/marmot/">protocolo Marmot&lt;/a>, implementando los MIPs 00-04: publicación de KeyPackage (kind:30443), metadatos de grupo con la extensión MLS NostrGroupData, eventos de bienvenida envueltos en gift wrap NIP-59 (kind:444), mensajes cifrados ChaCha20-Poly1305 (kind:445) y adjuntos de medios cifrados con Blossom. Es totalmente interoperable con White Noise y cualquier otro cliente compatible con Marmot.&lt;/p>
&lt;p>El proyecto publicó 13 lanzamientos esta semana, con soporte multi-dispositivo como característica principal. Cada dispositivo genera una ranura KeyPackage única (un tag &lt;code>d&lt;/code> en kind:30443). Al arranque, Scramble obtiene los KeyPackages propios del usuario desde los relays, detecta los IDs de ranura de los dispositivos pares y los añade automáticamente a los grupos MLS existentes usando el flujo de commit por etapas. La adición automática está restringida a los grupos donde el usuario actual es admin; los grupos no-admin se saltan con una guía para pedir al admin del grupo. Un banner de divulgación de secreto hacia adelante informa a los dispositivos recién enlazados que los mensajes antiguos no están disponibles. Una pasada de reconciliación de ID de ranura (&lt;code>TryReconcileSlotId&lt;/code>) maneja dispositivos migrados desde versiones pre-multi-dispositivo emparejando los bytes de KeyPackage del relay contra el material clave local para adoptar el tag &lt;code>d&lt;/code> correcto. La reconexión del firmador externo para usuarios de Amber y NIP-46 también se corrigió: el guardia &lt;code>IsConnected&lt;/code> que bloqueaba la reconexión automática incorporada de &lt;code>ExternalSignerService&lt;/code> se eliminó en los nueve sitios de llamada en &lt;code>NostrService&lt;/code>.&lt;/p>
&lt;h3 id="hostr-alojamiento-en-alquiler-p2p-sobre-nostr">Hostr: alojamiento en alquiler P2P sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://hostr.network">Hostr&lt;/a> (&lt;a href="https://github.com/sudonym-btc/hostr">fuente&lt;/a>) es una plataforma peer-to-peer de alojamiento en alquiler construida enteramente sobre Nostr. Cubre el flujo completo estilo Airbnb (buscar y listar propiedades, negociar reservas y liquidar pagos) usando cuatro borradores de NIP que el proyecto está desarrollando en paralelo con la aplicación.&lt;/p>
&lt;p>El NIP de alojamiento extiende los listados clasificados de &lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">NIP-99&lt;/a> (kind:30402 activo, kind:30403 borrador) con tags específicos de alojamiento para tipo (&lt;code>room&lt;/code>, &lt;code>house&lt;/code>, &lt;code>apartment&lt;/code>, &lt;code>villa&lt;/code>, &lt;code>hotel&lt;/code>, &lt;code>hostel&lt;/code>, &lt;code>resort&lt;/code>), horas de check-in/check-out, estancia mínima e índices de celdas geoespaciales H3 para búsqueda basada en ubicación con precisión configurable. El NIP de reservas define un protocolo completo de negociación y ciclo de vida: los eventos de reserva reemplazables kind:32122 llevan un ID de intercambio &lt;code>d&lt;/code>, un tag &lt;code>a&lt;/code> de anclaje al listado y tags &lt;code>p&lt;/code> de participantes con roles (&lt;code>buyer&lt;/code>, &lt;code>seller&lt;/code>, &lt;code>escrow&lt;/code>); los rumores de mensajes estructurados kind:1327 entregan contraofertas privadas en la etapa de negociación mediante gift wraps NIP-59 para que la negociación quede fuera de los relays públicos; los eventos de transición append-only kind:1326 crean una traza de auditoría pública una vez que una reserva se compromete. La privacidad del comprador se preserva mediante claves Nostr temporales por intercambio vinculadas a la identidad real del comprador mediante tags &lt;code>participant_proof&lt;/code> cifrados. El NIP de escrow define los anuncios de servicios de escrow kind:30303 y las declaraciones de confianza del usuario kind:17388; la implementación de referencia usa contratos inteligentes EVM en Rootstock, con &lt;code>contractBytecodeHash&lt;/code> permitiendo a los clientes verificar que el contrato desplegado coincide con una implementación auditada conocida. El NIP de listado de marketplace define tags genéricos compartidos entre todos los perfiles de marketplace NIP-99, incluidos &lt;code>instantBook&lt;/code>, &lt;code>negotiable&lt;/code>, &lt;code>quantity&lt;/code>, &lt;code>securityDeposit&lt;/code>, &lt;code>cancellationPolicy&lt;/code> y &lt;code>maxDisputePeriod&lt;/code>. Esta semana el proyecto preparó su envío a las app stores y fusionó soporte de identidad de cliente MCP para automatización orientada a agentes.&lt;/p>
&lt;p>Dos nuevas entradas aparecieron en la plataforma Shakespeare MiniApps esta semana: &lt;a href="https://inkpress.shakespeare.wtf">InkPress&lt;/a>, un generador de revistas con IA que publica contenido estructurado tipo revista como eventos Nostr, y &lt;a href="https://pressstr.shakespeare.wtf">PressStr&lt;/a>, una plataforma de escritura y publicación para la pila Soapbox.&lt;/p>
&lt;h2 id="publicando-esta-semana">Publicando esta semana&lt;/h2>
&lt;h3 id="ngit-v244">ngit v2.4.4&lt;/h3>
&lt;p>&lt;strong>ngit&lt;/strong> publicó &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4">v2.4.4&lt;/a>, añadiendo &lt;code>ngit sync --trust-server&lt;/code> (&lt;code>-t&lt;/code>) para casos en que un servidor git está por delante en fast-forward respecto al estado de Nostr. Cuando se detecta esta situación, sync reporta los refs afectados y requiere la bandera para firmar y publicar un evento de estado actualizado; un ajuste de configuración de git &lt;code>nostr.trust-server-domains&lt;/code> proporciona una lista blanca separada por punto y coma para servidores que deben ser confiados automáticamente sin la bandera.&lt;/p>
&lt;h3 id="amber-v610-pre3-añade-firma-psbt">Amber v6.1.0-pre3 añade firma PSBT&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> publicó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3">v6.1.0-pre3&lt;/a> con un mejor diseño para nuevas conexiones de apps, correcciones de crashes y una opción de seleccionar/deseleccionar todo en la pantalla de permisos. &lt;a href="https://github.com/greenart7c3/Amber/pull/438">PR #438&lt;/a> añade soporte para firmar PSBT a través de las rutas basadas en Intent y basadas en relay NIP-46, permitiendo a Amber firmar Partially Signed Bitcoin Transactions sin exponer el nsec a la app solicitante.&lt;/p>
&lt;h3 id="wisp-v110-estrena-respuestas-privadas-y-elimina-soporte-para-amber">Wisp v1.1.0 estrena respuestas privadas y elimina soporte para Amber&lt;/h3>
&lt;p>&lt;strong>Wisp&lt;/strong> publicó &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.0">v1.1.0&lt;/a> con respuestas privadas mediante gift wrap NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/540">PR #540&lt;/a>), reacciones envueltas en gift wrap y zaps DIP-03 en respuestas privadas (&lt;a href="https://github.com/barrydeen/wisp/pull/543">PR #543&lt;/a>), traducción automática para notas (&lt;a href="https://github.com/barrydeen/wisp/pull/523">PR #523&lt;/a>) y una entrada fiat estilo registro en el diálogo de zap. &lt;a href="https://github.com/barrydeen/wisp/pull/541">PR #541&lt;/a> migra los zaps privados de un esquema casero de texto plano en DM-relay a DIP-03 con enrutado adecuado de DM-relay. El mismo ciclo de lanzamiento eliminó el soporte del firmador remoto NIP-55 (&lt;a href="https://github.com/barrydeen/wisp/pull/531">PR #531&lt;/a>), descartando las integraciones con Amber y otros firmadores externos, y eliminó el relay local incorporado (&lt;a href="https://github.com/barrydeen/wisp/pull/533">PR #533&lt;/a>). Wisp es un cliente social Nostr para Android.&lt;/p>
&lt;h3 id="calendar-by-formstr-v154-corrige-gift-wrap-para-nuevos-participantes">Calendar by Formstr v1.5.4 corrige gift wrap para nuevos participantes&lt;/h3>
&lt;p>&lt;strong>Calendar by Formstr&lt;/strong> publicó &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4">v1.5.4&lt;/a> (el último de una secuencia v1.5.2 → v1.5.4). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/160">PR #160&lt;/a> corrige un bug donde editar un evento privado de calendario con nuevos participantes publicaba el evento actualizado con las nuevas pubkeys en tags &lt;code>p&lt;/code> pero nunca creaba ni entregaba invitaciones gift wrap a esos participantes, rompiendo el flujo de invitación para adiciones de última hora. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/156">PR #156&lt;/a> añade manejo de errores alrededor del descifrado de eventos privados para que los clientes ya no lancen excepciones en eventos indescifrables, y &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/138">PR #138&lt;/a> corrige tiempos de eventos recurrentes que se desviaban entre zonas horarias.&lt;/p>
&lt;h3 id="applesauce-v610-añade-git-casts-nip-34-y-relays-de-búsqueda-nip-51">Applesauce v6.1.0 añade git casts NIP-34 y relays de búsqueda NIP-51&lt;/h3>
&lt;p>&lt;strong>Applesauce&lt;/strong> publicó &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0">v6.1.0&lt;/a> a través de sus paquetes con soporte significativo para NIP-34 (git-sobre-Nostr): applesauce-common añade nuevos casts &lt;code>GitRepository&lt;/code>, &lt;code>GitGraspList&lt;/code> y &lt;code>FavoriteGitRepos&lt;/code> más las fábricas correspondientes, y expone las propiedades reactivas &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> y &lt;code>User.graspServers$&lt;/code> para que las aplicaciones puedan listar los repos git seguidos de un usuario, los mantenedores de repos y los servidores GRASP configurados directamente desde el mismo objeto User. El mismo lanzamiento añade soporte para listas de relays de búsqueda kind 10086 NIP-51, una adición reciente a la familia de listas de relays usada para descubrir dónde encontrar datos específicos. applesauce-core gana &lt;code>replaceableAddress&lt;/code> en &lt;code>EventCast&lt;/code> para búsqueda de direcciones reemplazables NIP-01, más &lt;code>pointer&lt;/code>, &lt;code>kind&lt;/code> y un ayudante &lt;code>getReplaceableAddressForEvent&lt;/code>, y añade un método &lt;code>timeline$()&lt;/code> en el cast base &lt;code>User&lt;/code>. &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a> corrige los métodos manuales del pool que silenciosamente descartaban relays offline.&lt;/p>
&lt;h3 id="sprout-v0016-estrena-el-binario-sprig-y-huddle-protocol-v2">Sprout v0.0.16 estrena el binario Sprig y huddle protocol v2&lt;/h3>
&lt;p>&lt;strong>Sprout&lt;/strong> de Block, un workspace de equipo basado en relay Nostr auto-alojado donde humanos y agentes de IA comparten las mismas salas y registro de eventos, publicó &lt;a href="https://github.com/block/sprout/releases/tag/v0.0.16">v0.0.16&lt;/a> de la app de escritorio junto con compilaciones rodantes del nuevo binario todo-en-uno Sprig (&lt;a href="https://github.com/block/sprout/pull/605">PR #605&lt;/a>), que empaqueta el arnés ACP, el agente y el MCP de desarrollador en un único binario estilo busybox para despliegue sencillo. La bandera &lt;code>--no-memory&lt;/code> añadida en &lt;a href="https://github.com/block/sprout/pull/611">PR #611&lt;/a> permite a los operadores deshabilitar la inyección de memoria central NIP-AE para el arnés ACP. En el lado de tiempo real, &lt;a href="https://github.com/block/sprout/pull/609">PR #609&lt;/a> extiende el protocolo de voz huddle a un encabezado de trama v2 que soporta hasta 10 pares simultáneos.&lt;/p>
&lt;h3 id="nostrord-v103-añade-os-keychain-y-multi-cuenta">Nostrord v1.0.3 añade OS keychain y multi-cuenta&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> publicó &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.3">v1.0.3&lt;/a> con almacenamiento de claves local endurecido usando el keychain del OS y respaldo por frase de contraseña, soporte multi-cuenta y un código QR de bunker tocable que abre la app del firmador en Android.&lt;/p>
&lt;h3 id="angor-migra-a-nip-44-y-estrena-endurecimiento-de-seguridad">Angor migra a NIP-44 y estrena endurecimiento de seguridad&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong>, la app de crowdfunding en Bitcoin construida sobre Nostr y Taproot, publicó tres lanzamientos inestables esta semana (&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.24">v0.2.24&lt;/a>, &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.25">v0.2.25&lt;/a> y &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.26">v0.2.26&lt;/a>) con un conjunto de cambios de endurecimiento de seguridad e integración con Nostr. &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a> migra la mensajería cifrada Nostr de NIP-04 a NIP-44, reemplazando el esquema basado en XOR obsoleto con cifrado ChaCha20-Poly1305. &lt;a href="https://github.com/block-core/angor/pull/861">PR #861&lt;/a> permite subidas de medios Blossom sin una wallet seleccionada usando una clave de autenticación Nostr efímera, desbloqueando subidas para usuarios que aún no han conectado una wallet. La serie de seguridad abordó varias categorías endurecidas: &lt;a href="https://github.com/block-core/angor/pull/854">PR #854&lt;/a> añade seguridad de tipos para AngorKey y protección de memoria de mnemónicos, &lt;a href="https://github.com/block-core/angor/pull/856">PR #856&lt;/a> aplica validación a nivel de protocolo para timelocks, tasas de comisión, umbrales de dust y reglas de penalización, y &lt;a href="https://github.com/block-core/angor/pull/851">PR #851&lt;/a> aplica endurecimiento no rupturista en ocho categorías de severidad media y baja. &lt;a href="https://github.com/block-core/angor/pull/859">PR #859&lt;/a> corrige la compatibilidad con GrapheneOS habilitando la compilación AOT y eliminando la generación de código en tiempo de ejecución, y &lt;a href="https://github.com/block-core/angor/pull/855">PR #855&lt;/a> evita la pérdida de wallet al hacer swipe-kill en Android persistiendo el estado de la wallet antes de que el OS termine el proceso.&lt;/p>
&lt;h3 id="alby-js-sdk-v80-estrena-reconexión-multi-relay-nwc">Alby js-sdk v8.0 estrena reconexión multi-relay NWC&lt;/h3>
&lt;p>&lt;strong>Alby js-sdk&lt;/strong> publicó la línea v8.0 (de &lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.1">v8.0.1&lt;/a> a &lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.3">v8.0.3&lt;/a>) con soporte para suscripción NWC multi-relay. &lt;a href="https://github.com/getAlby/js-sdk/pull/516">PR #516&lt;/a> actualiza la dependencia nostr-tools y habilita la reconexión automática nativa entre múltiples relays, reemplazando el enfoque de polling anterior con lógica de reconexión nativa de relay. &lt;a href="https://github.com/getAlby/js-sdk/pull/542">PR #542&lt;/a> reemplaza todas las llamadas &lt;code>console.debug&lt;/code> con una interfaz de logger inyectable para que los desarrolladores de aplicaciones puedan enrutar los diagnósticos del SDK a través de su propia infraestructura de logging. El lanzamiento elimina el polyfill de WebSocket, requiriendo Node.js 22 o superior para los consumidores del lado del servidor. v8.0.2 añadió una corrección para un bug de importación de crypto utils que rompía ciertos bundlers.&lt;/p>
&lt;h3 id="keychat-v1411-corrige-el-secreto-hacia-adelante">KeyChat v1.41.1 corrige el secreto hacia adelante&lt;/h3>
&lt;p>&lt;strong>KeyChat&lt;/strong>, una app de mensajería que combina el protocolo Signal con transporte de relay Nostr, publicó &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.41.1&amp;#43;6513">v1.41.1+6513&lt;/a>. La corrección destacada aplica el secreto hacia adelante eliminando las prekeys únicas de Signal inmediatamente después de un descifrado exitoso, cerrando una brecha donde una prekey retenida podía usarse para descifrar mensajes pasados si el dispositivo era comprometido posteriormente. El lanzamiento también añade vista previa de URL para mensajes que consisten en un único enlace, centraliza la descarga automática de medios bajo un nuevo &lt;code>FileDownloadManager&lt;/code> con un umbral automático de 20 MB y refactoriza la obtención de info de relay NIP-11 para forzar el refresco en arranque en frío para que las configuraciones de tarifas de relays de pago siempre se carguen correctamente.&lt;/p>
&lt;h2 id="en-desarrollo">En desarrollo&lt;/h2>
&lt;p>&lt;strong>Citrine&lt;/strong> fusionó &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> implementando la aplicación de NIP-70: el relay Android ahora bloquea los reposts que incrustan contenido de evento protegido, como requiere la especificación. &lt;a href="https://github.com/greenart7c3/Citrine/pull/149">PR #149&lt;/a> añade acciones de visualización y copia para múltiples direcciones de conexión, localhost, Wi-Fi local y Tor, desde la pantalla de configuración del relay. &lt;a href="https://github.com/greenart7c3/Citrine/pull/141">PR #141&lt;/a> añade manejo de desafío AUTH NIP-42 mediante integración con firmador externo con Amber.&lt;/p>
&lt;p>&lt;strong>Mostro&lt;/strong> alcanzó la Fase 2 del despliegue de su bono anti-abuso. &lt;a href="https://github.com/MostroP2P/mostro/pull/737">PR #737&lt;/a> aterriza la lógica de recorte de disputas dirigida por el solucionador: los manejadores de admin ahora consumen la carga útil &lt;code>BondResolution&lt;/code> de mostro-core, permitiendo a un admin recortar el bono de cualquiera de las partes al resolver una disputa. La Fase 1.5, fusionada en &lt;a href="https://github.com/MostroP2P/mostro/pull/736">PR #736&lt;/a>, introdujo una acción dedicada &lt;code>PayBondInvoice&lt;/code> y un estado &lt;code>WaitingTakerBond&lt;/code>, separando el pago del bono anti-abuso del tomador del pago del intercambio del comprador. El cliente móvil añadió la UX completa de la Fase 1.5 en &lt;a href="https://github.com/MostroP2P/mobile/pull/592">PR #592&lt;/a>. Mostro es un protocolo de intercambio de Bitcoin peer-to-peer construido sobre Nostr.&lt;/p>
&lt;p>&lt;strong>Damus&lt;/strong> fusionó &lt;a href="https://github.com/damus-io/damus/pull/3773">PR #3773&lt;/a> restaurando el indicador de señal de relay, y &lt;a href="https://github.com/damus-io/damus/pull/3775">PR #3775&lt;/a> corrige relays que rechazaban reconectar tras un fallo de conexión inicial.&lt;/p>
&lt;p>&lt;strong>rust-nostr&lt;/strong> fusionó &lt;a href="https://github.com/rust-nostr/nostr/pull/1358">PR #1358&lt;/a> añadiendo traits de finalización de eventos y builders de eventos específicos de NIP, facilitando la construcción de eventos con tipado correcto para funciones de protocolo específicas. &lt;a href="https://github.com/rust-nostr/nostr/pull/1363">PR #1363&lt;/a> backportea una corrección que asegura que el firmador NIP-46 se suscribe a notificaciones antes de enviar la respuesta de conexión, cerrando una condición de carrera donde los mensajes del cliente que llegaban inmediatamente después de connect podían perderse.&lt;/p>
&lt;p>&lt;strong>dart-nostr&lt;/strong> fusionó &lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">PR #44&lt;/a> añadiendo un resolvedor de relay Namecoin &lt;code>.bit&lt;/code> y registros TLSA pin, permitiendo a las aplicaciones Flutter resolver URLs de relay &lt;code>wss://example.bit/&lt;/code> a través de DNS Namecoin a sus direcciones WebSocket reales.&lt;/p>
&lt;p>&lt;strong>Dart NDK&lt;/strong> (el kit de desarrollo Nostr para Dart/Flutter, ahora en &lt;code>relaystr/ndk&lt;/code>) fusionó &lt;a href="https://github.com/relaystr/ndk/pull/464">PR #464&lt;/a> implementando NIP-77, el protocolo de firma de eventos offline. En el lado del firmador, &lt;a href="https://github.com/relaystr/ndk/pull/602">PR #602&lt;/a> y &lt;a href="https://github.com/relaystr/ndk/pull/601">PR #601&lt;/a> añaden un firmador de eventos específico para web y una abstracción &lt;code>PlatformEventVerifier&lt;/code>, permitiendo que las apps Flutter web usen el firmador de plataforma sin una ruta de código separada; &lt;a href="https://github.com/relaystr/ndk/pull/604">PR #604&lt;/a> introduce una fábrica de firmadores de eventos para selección de firmador en tiempo de ejecución. &lt;a href="https://github.com/relaystr/ndk/pull/608">PR #608&lt;/a> añade &lt;code>getDmRelays()&lt;/code> para obtener la lista de relays de DM NIP-17 de un usuario (kind:10050), y &lt;a href="https://github.com/relaystr/ndk/pull/600">PR #600&lt;/a> corrige la preservación de campos firmados NIP-46 para que los firmadores remotos no pierdan campos en el ida y vuelta.&lt;/p>
&lt;p>&lt;strong>Pages by Form*&lt;/strong> (&lt;a href="https://github.com/formstr-hq/nostr-docs">repo&lt;/a>), la app de documentos colaborativos nativa de Nostr de Formstr alojada en &lt;a href="https://pages.formstr.app">pages.formstr.app&lt;/a>, fusionó cuatro PRs esta semana endureciendo los flujos de adjuntos cifrados y de gestión de documentos. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/37">PR #37&lt;/a> corrige imágenes faltantes en las exportaciones DOCX, HTML y PDF incrustando adjuntos cifrados: obtiene los blobs &lt;code>&amp;lt;encrypted-file&amp;gt;&lt;/code> de los servidores Blossom, los descifra con AES-GCM 256-bit usando la clave y nonce almacenados, valida el tipo MIME de la imagen y los convierte a URLs de datos base64 para que las exportaciones preserven las imágenes que solo existen en Blossom en forma cifrada. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/39">PR #39&lt;/a> añade un mecanismo de búsqueda de documentos local, &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/38">PR #38&lt;/a> limpia el flujo de renombrado y &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/40">PR #40&lt;/a> corrige el manejo de copias de seguridad compartidas.&lt;/p>
&lt;p>&lt;strong>Zap Cooking&lt;/strong> fusionó &lt;a href="https://github.com/zapcooking/frontend/pull/396">PR #396&lt;/a>, la primera fase de una revisión del feed que sienta las bases de las primitivas de renderizado de feed sin ningún cambio visible aún para el usuario. El PR introduce un analizador de tags &lt;code>imeta&lt;/code> NIP-92 que lee los slots &lt;code>url&lt;/code>, &lt;code>m&lt;/code> (MIME), &lt;code>dim&lt;/code> (dimensiones), &lt;code>blurhash&lt;/code>, &lt;code>alt&lt;/code>, &lt;code>x&lt;/code> (hash de archivo) y &lt;code>fallback&lt;/code>, más un decodificador de blurhash canónico portado a mano (~200 LOC) que produce URLs de datos PNG mediante canvas con un respaldo null seguro para SSR. Cuando los tags &lt;code>imeta&lt;/code> están ausentes, el analizador recae en extraer URLs raw de imagen y vídeo del contenido del evento usando las mismas heurísticas que el feed actual ya usa.&lt;/p>
&lt;p>&lt;strong>Nurunuru&lt;/strong> (ぬるぬる, &lt;code>tami1A84/null--nostr&lt;/code>), un cliente Nostr con variantes nativas Android, iOS y Web que comparten un motor Rust FFI, fusionó su sincronización v1.5.0 Native → Web en &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">PR #176&lt;/a>. La sincronización trae varias adiciones de características a la compilación Web que ya se publicaron en Android v1.4.9 e iOS 1.0.4: el &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">NotificationModal&lt;/a> ahora expone notificaciones de cumpleaños, detección de zaps de seguimiento mutuo y notificaciones de reacciones con emoji personalizado; el selector de reacciones descarta la fila rápida de reacciones Unicode por defecto y centra la UX en el emoji personalizado; el motor de recomendaciones en &lt;code>lib/recommendation.js&lt;/code> filtra usuarios sin iconos o nombres de visualización y prioriza las entradas Following con Recommended cargándose en segundo plano. La entrada de voz es la única característica que va en la dirección opuesta: la compilación Web ya usa ElevenLabs Scribe streaming, y v1.5.0 sincroniza parcialmente el lado Native al &lt;code>SpeechRecognizer&lt;/code> estándar del OS (Android) y &lt;code>SFSpeechRecognizer&lt;/code> + &lt;code>AVAudioEngine&lt;/code> (iOS) mientras la integración Native Scribe completa se difiere a v1.6.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificación">Trabajo de protocolo y especificación&lt;/h2>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">#2251&lt;/a>&lt;/strong> endurece la especificación de eventos protegidos NIP-70: ahora indica explícitamente que los reposts que incrustan el contenido completo de un evento protegido deben ser rechazados por los relays. NIP-70 define el tag &lt;code>-&lt;/code> que señala que un autor de nota no consiente que su nota sea republicada. La especificación original cubría el comportamiento de filtrado del relay, pero dejaba el caso de repost ambiguo. Este PR cierra esa brecha. El &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> de Citrine implementa la aplicación en el lado del relay esta misma semana.&lt;/p>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/1653">#1653&lt;/a>&lt;/strong> propone un NIP de Drafts para guardar y sincronizar eventos borradores privados. La propuesta usa eventos reemplazables con un estado &lt;code>draft&lt;/code> y cifrado NIP-44 a la propia clave del autor, permitiendo a los clientes guardar trabajos en progreso en los relays sin que esos eventos sean visibles para nadie más. El evento borrador lleva el evento completo de publicación pretendida como contenido cifrado, incluidos su kind y tags eventuales.&lt;/p>
&lt;p>&lt;strong>Snapshots (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>)&lt;/strong> es una propuesta abierta para definir un evento snapshot inmutable para preservar una versión exacta de un evento Nostr reemplazable. El evento snapshot lleva el contenido completo del evento reemplazable en un punto dado en el tiempo, con un tag &lt;code>a&lt;/code> enlazándolo de vuelta a la dirección del evento reemplazable para que todas las versiones históricas sean consultables juntas. Esto hace posible que los observadores inspeccionen el estado histórico incluso después de que los relays dejen de retener versiones antiguas.&lt;/p>
&lt;p>&lt;strong>Ola de NIP-05 Namecoin:&lt;/strong> Esta semana vio un impulso coordinado para añadir resolución NIP-05 &lt;code>.bit&lt;/code> a los clientes Nostr. El feed de discusión de NIPs capturó PRs de código abierto contra Aegis (&lt;a href="https://github.com/ZharlieW/Aegis/pull/14">#14&lt;/a>, que añade verificación en tiempo de firma en el firmador), nostter (&lt;a href="https://github.com/SnowCait/nostter/pull/2128">#2128&lt;/a>) y dart-nostr (&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">#44&lt;/a>), junto con un borrador NIP upstream (&lt;a href="https://github.com/nostr-protocol/nips/pull/2349">PR #2349&lt;/a>). El PR de Aegis es notable por colocar la verificación en el lado del productor: el firmador comprueba la cadena Namecoin antes de firmar cualquier evento kind:0 que reclame una identidad &lt;code>.bit&lt;/code> y advierte al usuario ante discrepancias, atrapando el problema antes de que el evento llegue a ningún relay.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-07-windownostr-para-navegadores-web">NIP Deep Dive: NIP-07 (window.nostr para navegadores web)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> define la interfaz &lt;code>window.nostr&lt;/code> que las extensiones de navegador exponen a las aplicaciones web. Es la interfaz de firmador más ampliamente desplegada en la web, implementada por extensiones como Alby, nos2x, Flamingo y horse.&lt;/p>
&lt;p>La interfaz tiene dos métodos requeridos y varios opcionales. &lt;code>window.nostr.getPublicKey()&lt;/code> devuelve la clave pública del usuario como una cadena hexadecimal sin exponer nunca la clave privada a la página que llama. &lt;code>window.nostr.signEvent(event)&lt;/code> toma un evento parcial con &lt;code>created_at&lt;/code>, &lt;code>kind&lt;/code>, &lt;code>tags&lt;/code> y &lt;code>content&lt;/code>, y devuelve el evento firmado completo con &lt;code>id&lt;/code>, &lt;code>pubkey&lt;/code> y &lt;code>sig&lt;/code> añadidos. El punto clave es que la clave privada nunca abandona el contexto aislado de la extensión; la aplicación web envía un evento no firmado y recibe uno firmado de vuelta.&lt;/p>
&lt;p>Los métodos opcionales cubren el cifrado: &lt;code>window.nostr.nip04.encrypt&lt;/code> y &lt;code>window.nostr.nip04.decrypt&lt;/code> para el esquema NIP-04 más antiguo (ahora obsoleto), y &lt;code>window.nostr.nip44.encrypt&lt;/code> y &lt;code>window.nostr.nip44.decrypt&lt;/code> para el esquema NIP-44 actual. Las extensiones que soportan NIP-44 pueden por tanto manejar tanto el cifrado de mensajes directos como cualquier otra aplicación que necesite cifrado con clave por pubkey sin que la página que llama vea el nsec.&lt;/p>
&lt;p>La especificación también incluye una recomendación para los autores de extensiones: cargar los scripts con &lt;code>&amp;quot;run_at&amp;quot;: &amp;quot;document_end&amp;quot;&lt;/code> en el manifiesto de la extensión para que &lt;code>window.nostr&lt;/code> esté disponible síncronamente cuando la página carga, evitando condiciones de carrera donde un cliente comprueba &lt;code>window.nostr&lt;/code> antes de que la extensión lo haya inyectado.&lt;/p>
&lt;p>Un ejemplo clave de NIP-07 en acción es el proyecto Keycast cubierto arriba. El frontend web de Keycast usa NIP-07 para firmar eventos de autenticación HTTP NIP-98: la app SvelteKit nunca maneja el nsec del usuario directamente. Llama a &lt;code>window.nostr.signEvent&lt;/code> para producir el encabezado de autenticación, luego envía ese encabezado a la API de Keycast. Esta arquitectura significa que el material clave permanece en la extensión del navegador durante todo el flujo de gestión de claves del equipo.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hello from a NIP-07 signed event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2cdd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="nip-deep-dive-nip-39-identidades-externas-en-perfiles">NIP Deep Dive: NIP-39 (identidades externas en perfiles)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/39.md">NIP-39&lt;/a> define cómo un usuario Nostr puede declarar control sobre identidades de plataformas externas en su perfil. Cada declaración usa un tag &lt;code>i&lt;/code> dentro de un evento kind:10011, aseverando la propiedad de una cuenta específica en otra plataforma junto con una prueba que puede ser verificada independientemente.&lt;/p>
&lt;p>Cada tag sigue el formato &lt;code>[&amp;quot;i&amp;quot;, &amp;quot;platform:identity&amp;quot;, &amp;quot;proof&amp;quot;]&lt;/code>, donde &lt;code>platform:identity&lt;/code> combina el nombre de la plataforma y el nombre de usuario con un separador de dos puntos (&lt;code>github:semisol&lt;/code>, &lt;code>twitter:semisol_public&lt;/code>). &lt;code>proof&lt;/code> apunta a un artefacto verificable en la propia plataforma.&lt;/p>
&lt;p>Para GitHub, la prueba es un ID de Gist. El usuario crea un Gist público desde su cuenta de GitHub que contiene el texto &lt;code>Verifying that I control the following Nostr public key: npub1...&lt;/code>. Un cliente verificando la reclamación obtiene &lt;code>https://gist.github.com/&amp;lt;identity&amp;gt;/&amp;lt;proof&amp;gt;&lt;/code> y comprueba que el Gist fue creado por el nombre de usuario de GitHub reclamado y contiene la pubkey esperada. Para Twitter la prueba es un ID de tweet, para Mastodon un ID de post, y para Telegram una referencia de mensaje en un grupo público.&lt;/p>
&lt;p>El nombre del proveedor de identidad debe contener solo &lt;code>a-z&lt;/code>, &lt;code>0-9&lt;/code> y los caracteres &lt;code>._-/&lt;/code>, y no debe contener &lt;code>:&lt;/code>. Los nombres de identidad deben normalizarse a minúsculas, usando el alias principal cuando existen varios.&lt;/p>
&lt;p>La discusión de NIP-05 Namecoin &lt;code>.bit&lt;/code> que ocurre esta semana muestra el papel de NIP-39 en la pila de identidad más amplia: proporciona una forma estandarizada e independiente del relay para cruzar referencias de una clave Nostr con una identidad establecida en otro lugar, sin requerir ninguna autoridad central de verificación. Un cliente puede verificar independientemente la prueba obteniendo un artefacto público en la plataforma nombrada, y la prueba está vinculada a la pubkey Nostr específica en el texto del Gist o tweet, no a una credencial genérica de plataforma.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10011&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;github:semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9721ce4ee4fceb91c9711ca2a6c9a5ab&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;twitter:semisol_public&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1619358434134196225&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;mastodon:bitcoinhackers.org/@semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;109775066355589974&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3eff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>Eso es todo por esta semana. Si estás construyendo algo o tienes noticias que compartir, envíanos un DM en Nostr o encuéntranos en &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #22</title><link>https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal al desarrollo del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#nostr-vpn-lanza-ocho-versiones-culminando-en-v4010">ocho versiones en siete días&lt;/a> desde un flujo de emparejamiento de dispositivos rediseñado hasta un intercambio de AEAD FIPS que aproximadamente duplica el rendimiento TCP. &lt;a href="https://github.com/marmot-protocol">Marmot Protocol&lt;/a> (la base de &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>) lanza una &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#marmot-white-noise-lanza-frontend-con-bloqueo-completo-y-31-prs-fusionados-en-mdk-y-backend">versión frontend que completa la función de bloqueo de usuarios&lt;/a> y 31 PRs fusionados en MDK y backend. &lt;a href="https://github.com/0ceanSlim/grain">Grain&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#grain-v060-a%c3%b1ade-nip-40-nip-50-nip-70-y-nip-45">v0.6.0&lt;/a> con cuatro nuevas implementaciones de NIP en un hito. &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#citrine-v300-pre1-trae-tor-integrado-y-agregaci%c3%b3n-de-relay">v3.0.0-pre1&lt;/a> con Tor integrado y agregación de relay.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal al desarrollo del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#nostr-vpn-lanza-ocho-versiones-culminando-en-v4010">ocho versiones en siete días&lt;/a> desde un flujo de emparejamiento de dispositivos rediseñado hasta un intercambio de AEAD FIPS que aproximadamente duplica el rendimiento TCP. &lt;a href="https://github.com/marmot-protocol">Marmot Protocol&lt;/a> (la base de &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>) lanza una &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#marmot-white-noise-lanza-frontend-con-bloqueo-completo-y-31-prs-fusionados-en-mdk-y-backend">versión frontend que completa la función de bloqueo de usuarios&lt;/a> y 31 PRs fusionados en MDK y backend. &lt;a href="https://github.com/0ceanSlim/grain">Grain&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#grain-v060-a%c3%b1ade-nip-40-nip-50-nip-70-y-nip-45">v0.6.0&lt;/a> con cuatro nuevas implementaciones de NIP en un hito. &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-13-newsletter/#citrine-v300-pre1-trae-tor-integrado-y-agregaci%c3%b3n-de-relay">v3.0.0-pre1&lt;/a> con Tor integrado y agregación de relay.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="nostr-vpn-lanza-ocho-versiones-culminando-en-v4010">Nostr VPN lanza ocho versiones culminando en v4.0.10&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>, la VPN de malla descentralizada basada en Rust que usa Nostr para el descubrimiento de pares y un protocolo noise respaldado por FIPS para el plano de datos, lanzó ocho versiones desde &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.0.1">v4.0.1&lt;/a> hasta &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.0.10">v4.0.10&lt;/a> en macOS, Linux, Windows y Android esta semana.&lt;/p>
&lt;p>El cambio principal está en &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.0.8">v4.0.8&lt;/a>: el AEAD se intercambió del backend suave &lt;code>chacha20poly1305&lt;/code> de RustCrypto al ChaCha20-Poly1305 de BoringSSL en &lt;code>ring&lt;/code> 0.17, que usa NEON ajustado a mano en aarch64 y AVX2/AVX-512 en x86_64. Los benchmarks de Docker en hardware idéntico mostraron que el rendimiento TCP directo de 2 nodos saltó de 437 a 1097 Mbps.&lt;/p>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.0.9">v4.0.9&lt;/a> añadió lotes &lt;code>sendmmsg(2)&lt;/code> en la ruta de envío UDP, amortizando las llamadas al sistema &lt;code>sendto&lt;/code> por paquete en lotes de 8 paquetes y empujando TCP de flujo único de 1066 a 1548 Mbps (1,45×). &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.0.10">v4.0.10&lt;/a> lanzó una revisión completa de UX para el emparejamiento de dispositivos.&lt;/p>
&lt;h3 id="marmot--white-noise-lanza-frontend-con-bloqueo-completo-y-31-prs-fusionados-en-mdk-y-backend">Marmot / White Noise lanza frontend con bloqueo completo y 31 PRs fusionados en MDK y backend&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, la app de mensajería grupal privada construida sobre el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> basado en MLS, lanzó &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.7&amp;#43;24">v2026.5.7+24&lt;/a> el 7 de mayo como la versión frontend que completa el conjunto de funciones de bloqueo. Un usuario bloqueado ahora está oculto de invitaciones, vistas previas de chat, líneas de tiempo de mensajes, resultados de búsqueda y notificaciones, y sus mensajes ya no cuentan para las insignias de no leídos.&lt;/p>
&lt;p>El trabajo de soporte abarca 31 PRs fusionados en MDK y el backend. MDK aportó &lt;a href="https://github.com/marmot-protocol/mdk/pull/258">PR #258&lt;/a> con el formato de cable de extensión v3 y el esquema &lt;code>disappearing_message_secs&lt;/code>, sentando las bases para los mensajes que desaparecen.&lt;/p>
&lt;h3 id="grain-v060-añade-nip-40-nip-50-nip-70-y-nip-45">Grain v0.6.0 añade NIP-40, NIP-50, NIP-70 y NIP-45&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">Grain&lt;/a>, la biblioteca relay y cliente Nostr basada en Go, lanzó &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.6.0">v0.6.0&lt;/a> el 6 de mayo con cuatro nuevas implementaciones de NIP y un pase de endurecimiento de producción. El hito v0.6 añade expiración de eventos &lt;a href="https://github.com/nostr-protocol/nips/blob/master/40.md">NIP-40&lt;/a>, búsqueda de texto completo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>, eventos protegidos &lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a> y conteos de eventos &lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">NIP-45&lt;/a>.&lt;/p>
&lt;h2 id="lanzamientos-de-esta-semana">Lanzamientos de esta semana&lt;/h2>
&lt;h3 id="citrine-v300-pre1-trae-tor-integrado-y-agregación-de-relay">Citrine v3.0.0-pre1 trae Tor integrado y agregación de relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, la app Android que convierte un teléfono en un nodo relay Nostr, lanzó &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0-pre1">v3.0.0-pre1&lt;/a> como pre-lanzamiento esta semana. Las adiciones principales son soporte Tor integrado para acceso a relay que preserva la privacidad y agregación de relay, donde Citrine puede obtener eventos de múltiples relays upstream y servirlos a clientes locales. &lt;a href="https://github.com/greenart7c3/Citrine/pull/139">PR #139&lt;/a> añade soporte &lt;a href="https://nostrcompass.org/es/topics/nip-77/">NIP-77 (Reconciliación Negentropy)&lt;/a> para sincronización eficiente de eventos basada en reconciliación de conjuntos.&lt;/p>
&lt;h3 id="amber-v610-pre2-mejora-el-flujo-de-conexión-de-nueva-app">Amber v6.1.0-pre2 mejora el flujo de conexión de nueva app&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmadora Android para &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55 (Aplicación firmadora Android)&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, lanzó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre2">v6.1.0-pre2&lt;/a>. Las correcciones principales: el diálogo del firmador ahora se cierra correctamente después de aceptar una solicitud de bunker, las solicitudes de bunker malformadas muestran una pantalla de solicitud inválida y se añade limitación de tasa para solicitudes de firma basadas en intención.&lt;/p>
&lt;h3 id="alby-hub-v1222-añade-página-de-ia-y-agentes-y-soporte-de-core-lightning">Alby Hub v1.22.2 añade página de IA y Agentes y soporte de Core Lightning&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, el nodo Lightning autocustodio y servidor Nostr Wallet Connect, lanzó &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.22.2">v1.22.2&lt;/a> con varias adiciones importantes. La nueva página de IA y Agentes expone las capacidades Lightning y NWC de Alby Hub a agentes de IA y herramientas compatibles con MCP. La función más solicitada desde el lanzamiento: Core Lightning (CLN) ahora es un backend compatible junto con LND y LDK.&lt;/p>
&lt;h3 id="mostro-lanza-bonos-de-tomador-concurrentes-y-mostro-core-v0110">Mostro lanza bonos de tomador concurrentes y mostro-core v0.11.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el protocolo de intercambio Bitcoin peer-to-peer en Nostr, fusionó 11 PRs esta semana avanzando la función de bono de tomador que previene el griefing al requerir que ambas partes bloqueen fondos antes de que proceda un intercambio. &lt;a href="https://github.com/MostroP2P/mostro/pull/733">PR #733&lt;/a> implementa bonos de tomador concurrentes donde múltiples tomadores pueden enviar facturas de bono simultáneamente y el primero en bloquear gana.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core">mostro-core&lt;/a> lanzó &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.11.0">v0.11.0&lt;/a> con las adiciones de biblioteca correspondientes, y &lt;a href="https://github.com/MostroP2P/mostro-cli">mostro-cli&lt;/a> lanzó &lt;a href="https://github.com/MostroP2P/mostro-cli/releases/tag/v0.15.0">v0.15.0&lt;/a>.&lt;/p>
&lt;h3 id="jumble-lanza-cinco-versiones-con-búsqueda-reciente-y-persistencia-de-cuenta">Jumble lanza cinco versiones con búsqueda reciente y persistencia de cuenta&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, el cliente Nostr centrado en relay disponible como app web y app de escritorio Electron, lanzó cinco versiones esta semana: &lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.2">v26.5.2&lt;/a> a &lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.6">v26.5.6&lt;/a>. &lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.5">v26.5.5&lt;/a> añade historial de búsquedas recientes. Se corrigió un bug crítico de persistencia en &lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.6">v26.5.6&lt;/a>: las cuentas y los datos en caché ahora sobreviven a un reinicio completo de la app.&lt;/p>
&lt;h3 id="nostrord-lanza-modales-de-compartir-grupo-carga-de-medios-y-paquetes-de-arch-linux">Nostrord lanza modales de compartir grupo, carga de medios y paquetes de Arch Linux&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a>, un cliente Nostr dirigido a grupos basados en relay NIP-29, lanzó &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.0">v1.0.0&lt;/a>, &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.1">v1.0.1&lt;/a> y &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.2">v1.0.2&lt;/a> esta semana. &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.1">v1.0.1&lt;/a> lanza paquetes de Arch Linux via AUR como &lt;code>nostrord-bin&lt;/code>, y &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.2">v1.0.2&lt;/a> añade compartir grupos via &lt;a href="https://github.com/nostrord/nostrord/pull/49">PR #49&lt;/a> con un modal de compartir que genera tanto un URI &lt;code>nostr:naddr&lt;/code> como un enlace &lt;code>nostrord.com/open/&lt;/code> amigable para la web.&lt;/p>
&lt;h3 id="fips-v030-lanza-alcance-multiplataforma-descubrimiento-de-pares-nostr-y-un-gateway-para-lans-sin-modificar">FIPS v0.3.0 lanza alcance multiplataforma, descubrimiento de pares Nostr y un gateway para LANs sin modificar&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> (Free Internetworking Peering System), el proyecto de red de malla nativo de Nostr, lanzó &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.3.0">v0.3.0&lt;/a> esta semana, un hito importante que amplía el proyecto de solo Linux a Linux, macOS, Windows y OpenWrt. La adición principal es el descubrimiento de pares mediado por Nostr con traversal NAT UDP asistido por STUN.&lt;/p>
&lt;h3 id="flotilla-180-lanza-videollamadas-renderizado-de-email-y-menciones-de-sala">Flotilla 1.8.0 lanza videollamadas, renderizado de email y menciones de sala&lt;/h3>
&lt;p>&lt;a href="https://flotilla.social">Flotilla&lt;/a>, la app de chat grupal &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> basada en relay de hodlbod, lanzó &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.8.0">1.8.0&lt;/a> esta semana con varias adiciones notables. Las salas de voz ahora soportan video: los participantes pueden encender cámaras o compartir su pantalla durante una llamada. El renderizado de email llega a través de una actualización a la biblioteca welshman: Flotilla ahora puede recibir mensajes que incrustan contenido de email HTML y lo renderiza en línea.&lt;/p>
&lt;h3 id="calendar-by-formstr-lanza-v151-con-programación-de-citas-y-sincronización-de-calendario-android">Calendar by Formstr lanza v1.5.1 con programación de citas y sincronización de calendario Android&lt;/h3>
&lt;p>&lt;a href="https://calendar.formstr.app">Calendar by Formstr&lt;/a>, una app de calendario nativa de Nostr, lanzó &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.0">v1.5.0&lt;/a> el 10 de mayo y &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.1">v1.5.1&lt;/a> el 11 de mayo. La programación de citas llega en &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/89">PR #89&lt;/a>, permitiendo a los usuarios crear franjas horarias reservables en su calendario. La integración de calendario Android de solo lectura en &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/123">PR #123&lt;/a> sincroniza eventos Nostr al calendario del dispositivo.&lt;/p>
&lt;h2 id="nuevos-proyectos">Nuevos proyectos&lt;/h2>
&lt;h3 id="tamagostrich-lanza-un-tamagotchi-nip-78-descentralizado-con-recompensas-en-sats">Tamagostrich lanza un Tamagotchi NIP-78 descentralizado con recompensas en sats&lt;/h3>
&lt;p>&lt;a href="https://github.com/Negr087/tamagostrich">Tamagostrich&lt;/a> es un juego de mascota virtual basado en navegador lanzado en el Hackathon IDENTITY 2026 donde un avestruz bebé, Nori, evoluciona a través de tu actividad social en Nostr. El estado de la mascota vive en un evento &lt;a href="https://nostrcompass.org/es/topics/nip-78/">NIP-78&lt;/a> kind:30078 para que se sincronice en cada dispositivo que comparte el mismo par de claves. Las recompensas de hito pagan automáticamente en sats via &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>: 50 sats en el nivel 5, 210 sats en el nivel 10 y 420 sats en el nivel máximo 21.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificaciones">Trabajo de protocolo y especificaciones&lt;/h2>
&lt;p>El repositorio de NIPs fusionó &lt;a href="https://github.com/nostr-protocol/nips/pull/2338">PR #2338&lt;/a> corrigiendo los enlaces de referencia del README para los kinds de eventos Marmot y el kind de geocaching 37516. Se abrieron cinco nuevas propuestas esta semana:&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2331">PR #2331&lt;/a> propone &lt;strong>NIP-9A: Reglas de Comunidad Verificables&lt;/strong>, introduciendo kind:34551, un evento reemplazable parametrizado que permite al propietario de una comunidad publicar un documento de reglas legible por máquina y firmado criptográficamente.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2335">PR #2335&lt;/a> propone &lt;strong>Eventos de Reserva para Mercados Nostr&lt;/strong>, definiendo kind:32122 (eventos de reserva reemplazables parametrizados), kind:1326 (registros de auditoría de transición de solo adición) y kind:32124 (reseñas post-intercambio).&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2334">PR #2334&lt;/a> propone &lt;strong>Servicios de Custodia para Mercados Nostr&lt;/strong>, usando kind:30303 para que los operadores de custodia declaren su dirección de contrato EVM y programa de tarifas.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2333">PR #2333&lt;/a> propone &lt;strong>Perfiles de Listado de Alojamiento para Listados del Mercado NIP-99&lt;/strong>, extendiendo los listados clasificados NIP-99 con tags de índice geoespacial H3 &lt;code>g&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2332">PR #2332&lt;/a> propone &lt;strong>NIP-BC: Zaps Onchain (kind 8333)&lt;/strong>, explotando una identidad directa entre las claves Nostr y las direcciones Bitcoin Taproot.&lt;/p>
&lt;h2 id="inmersión-profunda-en-nip-nip-78-datos-específicos-de-la-app">Inmersión profunda en NIP: NIP-78 (datos específicos de la app)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-78/">NIP-78&lt;/a> define una forma estándar para que las aplicaciones almacenen datos privados o públicos arbitrarios en nombre de un usuario usando eventos Nostr. El kind de evento central es 30078, un evento reemplazable parametrizado donde el tag &lt;code>d&lt;/code> es una cadena de identificador definida por la aplicación.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-char hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-char hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747180800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30078&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;tamagostrich-pet-state&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;level\&amp;#34;:7,\&amp;#34;xp\&amp;#34;:1420,\&amp;#34;happiness\&amp;#34;:82,\&amp;#34;energy\&amp;#34;:61}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;128-char hex&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La motivación principal es la sincronización entre dispositivos sin un servidor centralizado. Para datos de aplicación privados, los eventos NIP-78 pueden cifrar el campo de contenido usando &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44 (Cifrado con Versión)&lt;/a> o el más antiguo &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> antes de publicar.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Fuentes primarias:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">Especificación NIP-78&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Negr087/tamagostrich">Tamagostrich&lt;/a>: implementación en producción esta semana&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Ver también:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51: Listas&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65: Metadatos de Lista de Relays&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="inmersión-profunda-en-nip-nip-98-http-auth">Inmersión profunda en NIP: NIP-98 (HTTP Auth)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-98/">NIP-98&lt;/a> define un esquema de autenticación HTTP que permite que los pares de claves Nostr autoricen solicitudes a servidores HTTP, eliminando la necesidad de nombres de usuario, contraseñas o tokens OAuth para el acceso a API del lado del servidor. Un cliente construye un evento Nostr de corta duración de kind 27235, lo firma con su clave privada, codifica el JSON en base64 y lo envía en un encabezado HTTP &lt;code>Authorization: Nostr &amp;lt;base64&amp;gt;&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-char hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-char hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747180800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">27235&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;u&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://files.example.com/upload&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;method&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;POST&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;payload&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sha256-hash-of-request-body&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;128-char hex&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El evento kind 27235 incluye el método HTTP en un tag &lt;code>method&lt;/code>, la URL completa de la solicitud en un tag &lt;code>u&lt;/code> y una marca de tiempo &lt;code>created_at&lt;/code>. El servidor valida la firma, verifica que el método y la URL coincidan con la solicitud real y confirma que la marca de tiempo es reciente para prevenir ataques de repetición.&lt;/p>
&lt;p>NIP-98 se usa en Blossom (&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/01.md">BUD-01&lt;/a>) para autenticar cargas y descargas de blobs. Routstr lo usa para control de acceso a la API HTTP por solicitud. Sprout lo usa para autenticación de transporte git y acceso a relay REST.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Fuentes primarias:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">Especificación NIP-98&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/01.md">BUD-01: Auth de carga Blossom&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Ver también:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96: Integración de Almacenamiento de Archivos HTTP&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Eso es todo por esta semana. Si estás construyendo algo o tienes noticias que compartir, envíanos un DM en Nostr o encuéntranos en &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #21</title><link>https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol">Marmot Protocol&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#mdk-080-a%c3%b1ade-primitivas-de-notificaci%c3%b3n-mip-05-y-paquetes-de-claves-direccionables">MDK 0.8.0&lt;/a> con las primeras primitivas de notificación MIP-05, paquetes de claves &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51 (Listas)&lt;/a> direccionables y una revisión de seguridad mejorada. &lt;a href="https://github.com/lawalletio/lawallet-nwc">LaWallet NWC&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#lawallet-nwc-v0100-lanza-el-monorepo-completo-y-wallet-para-usuarios-finales">v0.10.0&lt;/a> como el mayor lanzamiento desde la financiación de OpenSats. &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> realiza un &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#amethyst-estabiliza-nests-con-keep-alive-resiliencia-jwt-y-suscripciones-de-ciclo-de-vida">sprint de estabilidad de Nests&lt;/a>. &lt;a href="https://github.com/DanConwayDev/ngit-cli">ngit&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#ngit-v242-y-v243-corrigen-detecci%c3%b3n-del-servidor-grasp-y-eventos-de-estado-multi-remoto">v2.4.2&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#ngit-v242-y-v243-corrigen-detecci%c3%b3n-del-servidor-grasp-y-eventos-de-estado-multi-remoto">v2.4.3&lt;/a>. &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#grain-v054-trae-endurecimiento-de-producci%c3%b3n-y-una-correcci%c3%b3n-silenciosa-de-p%c3%a9rdida-de-datos">v0.5.4&lt;/a>. &lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#mostro-core-v0101-a%c3%b1ade-artefactos-de-lanzamiento-firmados-con-pgp">v0.10.1&lt;/a>. &lt;a href="https://github.com/clave-mobile">Clave&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#clave-v020-lanza-multi-cuenta-en-ios-con-firma-nip-46-nostr-connect">v0.2.0&lt;/a>.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="mdk-080-añade-primitivas-de-notificación-mip-05-y-paquetes-de-claves-direccionables">MDK 0.8.0 añade primitivas de notificación MIP-05 y paquetes de claves direccionables&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>, la biblioteca principal en Rust para el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">v0.8.0&lt;/a> el 4 de mayo. Esta versión incluye los primeros bloques de construcción de notificaciones MIP-05, mueve los paquetes de claves MIP-00 a eventos direccionables para que el paquete de claves de un usuario pueda reemplazarse en su lugar, mejora la compatibilidad de grupo de versiones mixtas, amplía la cobertura UniFFI para bindings móviles y refuerza las rutas de validación. Las primitivas MIP-05 incluyen auxiliares de índice de hoja añadidos en &lt;a href="https://github.com/marmot-protocol/mdk/pull/235">PR #235&lt;/a>, que dan a los clientes posteriores suficiente información para entregar notificaciones push por destinatario sin exponer la estructura del grupo. &lt;a href="https://github.com/marmot-protocol/mdk/pull/273">PR #273&lt;/a> restaura la publicación de mdk-core en crates.io, y &lt;a href="https://github.com/marmot-protocol/mdk/pull/269">PR #269&lt;/a> expone el módulo test_util detrás de una característica Cargo &lt;code>test-utils&lt;/code>.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol">Marmot Protocol&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#mdk-080-a%c3%b1ade-primitivas-de-notificaci%c3%b3n-mip-05-y-paquetes-de-claves-direccionables">MDK 0.8.0&lt;/a> con las primeras primitivas de notificación MIP-05, paquetes de claves &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51 (Listas)&lt;/a> direccionables y una revisión de seguridad mejorada. &lt;a href="https://github.com/lawalletio/lawallet-nwc">LaWallet NWC&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#lawallet-nwc-v0100-lanza-el-monorepo-completo-y-wallet-para-usuarios-finales">v0.10.0&lt;/a> como el mayor lanzamiento desde la financiación de OpenSats. &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> realiza un &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#amethyst-estabiliza-nests-con-keep-alive-resiliencia-jwt-y-suscripciones-de-ciclo-de-vida">sprint de estabilidad de Nests&lt;/a>. &lt;a href="https://github.com/DanConwayDev/ngit-cli">ngit&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#ngit-v242-y-v243-corrigen-detecci%c3%b3n-del-servidor-grasp-y-eventos-de-estado-multi-remoto">v2.4.2&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#ngit-v242-y-v243-corrigen-detecci%c3%b3n-del-servidor-grasp-y-eventos-de-estado-multi-remoto">v2.4.3&lt;/a>. &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#grain-v054-trae-endurecimiento-de-producci%c3%b3n-y-una-correcci%c3%b3n-silenciosa-de-p%c3%a9rdida-de-datos">v0.5.4&lt;/a>. &lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#mostro-core-v0101-a%c3%b1ade-artefactos-de-lanzamiento-firmados-con-pgp">v0.10.1&lt;/a>. &lt;a href="https://github.com/clave-mobile">Clave&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-05-06-newsletter/#clave-v020-lanza-multi-cuenta-en-ios-con-firma-nip-46-nostr-connect">v0.2.0&lt;/a>.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="mdk-080-añade-primitivas-de-notificación-mip-05-y-paquetes-de-claves-direccionables">MDK 0.8.0 añade primitivas de notificación MIP-05 y paquetes de claves direccionables&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>, la biblioteca principal en Rust para el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">v0.8.0&lt;/a> el 4 de mayo. Esta versión incluye los primeros bloques de construcción de notificaciones MIP-05, mueve los paquetes de claves MIP-00 a eventos direccionables para que el paquete de claves de un usuario pueda reemplazarse en su lugar, mejora la compatibilidad de grupo de versiones mixtas, amplía la cobertura UniFFI para bindings móviles y refuerza las rutas de validación. Las primitivas MIP-05 incluyen auxiliares de índice de hoja añadidos en &lt;a href="https://github.com/marmot-protocol/mdk/pull/235">PR #235&lt;/a>, que dan a los clientes posteriores suficiente información para entregar notificaciones push por destinatario sin exponer la estructura del grupo. &lt;a href="https://github.com/marmot-protocol/mdk/pull/273">PR #273&lt;/a> restaura la publicación de mdk-core en crates.io, y &lt;a href="https://github.com/marmot-protocol/mdk/pull/269">PR #269&lt;/a> expone el módulo test_util detrás de una característica Cargo &lt;code>test-utils&lt;/code>.&lt;/p>
&lt;h3 id="lawallet-nwc-v0100-lanza-el-monorepo-completo-y-wallet-para-usuarios-finales">LaWallet NWC v0.10.0 lanza el monorepo completo y Wallet para usuarios finales&lt;/h3>
&lt;p>&lt;a href="https://github.com/lawalletio/lawallet-nwc">LaWallet NWC&lt;/a>, la implementación &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect del equipo de LaWallet, lanzó &lt;a href="https://github.com/lawalletio/lawallet-nwc/releases/tag/v0.10.0">v0.10.0&lt;/a> el 30 de abril. Es el mayor lanzamiento desde que el proyecto recibió financiación de OpenSats. Incluye el monorepo completo, el panel de administración completo, una Wallet para usuarios finales, un registro de actividad completo, branding dinámico y el nuevo esquema &lt;code>LightningAddress 1→N&lt;/code> y &lt;code>NWCConnection&lt;/code> que desbloquea el enrutamiento NWC por dirección. La Wallet para el usuario lanzada en &lt;a href="https://github.com/lawalletio/lawallet-nwc/pull/191">PR #191&lt;/a> cubre incorporación, inicio, envío/recepción, escaneo, monedas, un feed de actividad y una caché sin conexión.&lt;/p>
&lt;h3 id="amethyst-estabiliza-nests-con-keep-alive-resiliencia-jwt-y-suscripciones-de-ciclo-de-vida">Amethyst estabiliza Nests con keep-alive, resiliencia JWT y suscripciones de ciclo de vida&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android con muchas funciones, continuó el trabajo de sala de audio &lt;a href="https://nostrcompass.org/es/topics/nip-53/">NIP-53&lt;/a> Nests cubierto en el boletín &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">#20&lt;/a> con un sprint de estabilidad. La corrección de brecha de audio en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2733">PR #2733&lt;/a> superpone la nueva adquisición de credenciales con el flujo activo durante el refresco JWT, para que el oyente no escuche un corte cuando rota el token. Un nuevo mecanismo keep-alive en &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2730">PR #2730&lt;/a> reconecta relays desconectados sin requerir acción manual del usuario, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2728">PR #2728&lt;/a> reemplaza el &lt;code>KeyDataSourceSubscription&lt;/code> heredado con &lt;code>LifecycleAwareKeyDataSourceSubscription&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2724">PR #2724&lt;/a> añade un indicador de anillo exterior animado que resalta al participante que habla en sesiones con múltiples hablantes.&lt;/p>
&lt;h3 id="ngit-v242-y-v243-corrigen-detección-del-servidor-grasp-y-eventos-de-estado-multi-remoto">ngit v2.4.2 y v2.4.3 corrigen detección del servidor GRASP y eventos de estado multi-remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli">ngit&lt;/a>, la herramienta de línea de comandos y plugin &lt;code>git&lt;/code> para la colaboración &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a>, lanzó &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a> el 28 de abril y &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.3">v2.4.3&lt;/a> el 1 de mayo. v2.4.2 corrige un desajuste de normalización de URL donde &lt;code>repo_grasps&lt;/code> mantenía nombres de host normalizados pero la comparación se hacía contra URLs de clonación completas. v2.4.3 corrige una ambigüedad de evento de estado que surgía cuando un repositorio tiene múltiples remotos &lt;code>nostr://&lt;/code> compartiendo el mismo identificador.&lt;/p>
&lt;h3 id="grain-v054-trae-endurecimiento-de-producción-y-una-corrección-silenciosa-de-pérdida-de-datos">GRAIN v0.5.4 trae endurecimiento de producción y una corrección silenciosa de pérdida de datos&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a>, la biblioteca relay y cliente Nostr basada en Go, lanzó &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.4">v0.5.4&lt;/a> el 30 de abril. La versión acumula seis correcciones desde v0.5.3, incluyendo un bug silencioso de pérdida de datos en el inicio rápido de Docker que anteriormente descartaba eventos cuando el contenedor se reiniciaba, y un bug de corrección de la capa de almacenamiento en lecturas de eventos direccionables.&lt;/p>
&lt;h3 id="mostro-core-v0101-añade-artefactos-de-lanzamiento-firmados-con-pgp">Mostro Core v0.10.1 añade artefactos de lanzamiento firmados con PGP&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a>, la biblioteca Rust que proporciona funcionalidad peer-to-peer para el daemon Mostro, lanzó &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.1">v0.10.1&lt;/a> el 28 de abril como seguimiento del &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">módulo de protocolo de chat P2P v0.10.0 de la semana pasada&lt;/a>. La nueva versión añade artefactos de lanzamiento firmados con PGP y un flujo &lt;code>verify-release&lt;/code>.&lt;/p>
&lt;h2 id="lanzamientos-etiquetados">Lanzamientos etiquetados&lt;/h2>
&lt;h3 id="clave-v020-lanza-multi-cuenta-en-ios-con-firma-nip-46-nostr-connect">Clave v0.2.0 lanza multi-cuenta en iOS con firma NIP-46 (Nostr Connect)&lt;/h3>
&lt;p>&lt;a href="https://github.com/clave-mobile">Clave&lt;/a>, la app de firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> para iOS cubierta en &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#clave-brings-nip-46-remote-signing-to-ios-via-apns">#20&lt;/a>, lanzó &lt;a href="https://github.com/clave-mobile/clave/releases">v0.2.0&lt;/a> el 5 de mayo. La mayor actualización hasta ahora introduce soporte multi-cuenta: Clave ahora puede albergar hasta cuatro cuentas en un dispositivo, con un selector de un toque y aislamiento por cuenta.&lt;/p>
&lt;h3 id="wisp-lanza-trabajo-de-estabilidad-v103--v105">Wisp lanza trabajo de estabilidad v1.0.3 → v1.0.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, el cliente Android que &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">se graduó de beta en #20&lt;/a>, lanzó &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.3">v1.0.3&lt;/a>, &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.4">v1.0.4&lt;/a> y &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.5">v1.0.5&lt;/a> el 4 de mayo con trabajo de estabilidad.&lt;/p>
&lt;h3 id="amber-610-pre1-lanza-correcciones-de-diseño-y-estabilidad">Amber 6.1.0-pre1 lanza correcciones de diseño y estabilidad&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmadora Android para &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55 (Aplicación firmadora Android)&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, lanzó &lt;a href="https://github.com/greenart7c3/Amber/releases">v6.1.0-pre1&lt;/a> con un pase de diseño en el flujo de conexión de nueva app y varias correcciones de fallos reportados.&lt;/p>
&lt;h3 id="routstr-core-v043-mejora-el-manejo-de-pagos-reembolsos-y-reportes-de-uso">Routstr Core v0.4.3 mejora el manejo de pagos, reembolsos y reportes de uso&lt;/h3>
&lt;p>&lt;a href="https://github.com/Routstr/routstr-core">Routstr Core&lt;/a>, la capa de inferencia descentralizada, lanzó &lt;a href="https://github.com/Routstr/routstr-core/releases">v0.4.3&lt;/a> como pre-lanzamiento el 1 de mayo.&lt;/p>
&lt;h3 id="nostria-v3137-a-v3141-añaden-marcadores-web-y-un-tema-auto">Nostria v3.1.37 a v3.1.41 añaden Marcadores Web y un tema Auto&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente Nostr multiplataforma, lanzó &lt;a href="https://github.com/nostria-app/nostria/releases">v3.1.37 a v3.1.41&lt;/a> el 30 de abril y el 4 de mayo. Las versiones añaden soporte &lt;a href="https://nostrcompass.org/es/topics/nip-b0/">NIP-B0 (Marcadores Web)&lt;/a>, un tema &amp;ldquo;Auto&amp;rdquo; que sigue la configuración del dispositivo y visualización de PDF en la app.&lt;/p>
&lt;h2 id="cambios-no-publicados">Cambios no publicados&lt;/h2>
&lt;h3 id="sprout-lanza-desktop-v004-y-v005-junto-con-autenticación-de-agente-nip-oa-y-el-sidecar-relay-de-emparejamiento">Sprout lanza Desktop v0.0.4 y v0.0.5 junto con autenticación de agente NIP-OA y el sidecar relay de emparejamiento&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, el cliente Nostr de Block con relay integrado, lanzó &lt;a href="https://github.com/block/sprout/releases">Sprout Desktop v0.0.4&lt;/a> el 5 de mayo y &lt;a href="https://github.com/block/sprout/releases">v0.0.5&lt;/a> el 6 de mayo, junto con aproximadamente 80 PRs fusionados. El cambio principal en &lt;a href="https://github.com/block/sprout/pull/471">PR #471&lt;/a> conecta la autenticación de agente NIP-OA al flujo de membresía NIP-43 del relay. Un nuevo relay sidecar efímero para emparejamiento de dispositivos NIP-AB llega en &lt;a href="https://github.com/block/sprout/pull/467">PR #467&lt;/a> como &lt;code>sprout-pair-relay&lt;/code>.&lt;/p>
&lt;h3 id="nostream-añade-soporte-de-relay-marmot-y-reacciones-nip-25">nostream añade soporte de relay Marmot y reacciones NIP-25&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>, la implementación de relay Node.js, fusionó una semana productiva de adiciones de protocolo. El soporte de relay Marmot Protocol que cubre los MIPs 00 al 03 llega en &lt;a href="https://github.com/Cameri/nostream/pull/602">PR #602&lt;/a>. Las adiciones de protocolo menores: soporte de reacciones &lt;a href="https://nostrcompass.org/es/topics/nip-25/">NIP-25&lt;/a> en &lt;a href="https://github.com/Cameri/nostream/pull/589">PR #589&lt;/a>.&lt;/p>
&lt;h3 id="strfry-añade-observabilidad-por-conexión-y-reduce-el-límite-nofiles">strfry añade observabilidad por conexión y reduce el límite nofiles&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, el relay Nostr en C++, fusionó 14 PRs orientados a la observabilidad e higiene operativa. El cambio principal es &lt;a href="https://github.com/hoytech/strfry/pull/218">PR #218&lt;/a>, que añade observabilidad de salida pendiente por conexión y un límite de contrapresión configurable.&lt;/p>
&lt;h3 id="damus-reemplaza-los-gifs-de-tenor-con-un-proxy-purple-y-lanza-ux-de-compactación">Damus reemplaza los GIFs de Tenor con un proxy Purple y lanza UX de compactación&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, el cliente iOS de Nostr, fusionó &lt;a href="https://github.com/damus-io/damus/pull/3737">PR #3737&lt;/a> reemplazando la integración de GIFs Tenor con un proxy &lt;a href="https://damus.io/purple/">Damus Purple&lt;/a>.&lt;/p>
&lt;h3 id="routstrd-auth-un-routstrd-dockerizado-para-equipos-con-auth-nip-98-y-rbac-por-npub">routstrd-auth: un Routstrd dockerizado para equipos con auth NIP-98 y RBAC por npub&lt;/h3>
&lt;p>&lt;a href="https://github.com/Routstr/routstrd-auth">routstrd-auth&lt;/a>, creado el 27 de abril por el equipo de Routstr, es una variante dockerizada de Routstrd para implementaciones en equipos multiusuario. El cambio principal es un sistema granular de control de acceso basado en roles por npub con roles &lt;code>admin&lt;/code> y &lt;code>user&lt;/code>, y endpoints de cliente que adoptan autenticación HTTP &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a>.&lt;/p>
&lt;h3 id="routstrd-integra-hermes-para-clientes-daemon-y-modo-remoto">Routstrd integra Hermes para clientes daemon y modo remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a>, el daemon local que orquesta clientes de inferencia Routstr, fusionó &lt;a href="https://github.com/routstr/routstrd/pull/22">PR #22&lt;/a> añadiendo integración con &lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>.&lt;/p>
&lt;h3 id="whitenoise-rs-lanza-aislamiento-de-base-de-datos-por-cuenta-y-actualizaciones-de-propuestas">whitenoise-rs lanza aislamiento de base de datos por cuenta y actualizaciones de propuestas&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, la biblioteca Rust principal para el mensajero White Noise, fusionó &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/796">PR #796&lt;/a> moviendo tablas de proyección de mensajes a bases de datos por cuenta, y &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/791">PR #791&lt;/a> añadiendo actualizaciones de propuestas para que los grupos puedan extender su funcionalidad.&lt;/p>
&lt;h3 id="angor-0221-lanza-flujos-de-app-compactos-junto-con-endurecimiento-del-proveedor-de-claves-y-cambio-de-red">Angor 0.2.21 lanza flujos de app compactos junto con endurecimiento del proveedor de claves y cambio de red&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a>, la plataforma de crowdfunding Bitcoin con perfiles de fundadores publicados en Nostr, lanzó &lt;a href="https://github.com/block-core/angor/releases">Angor 0.2.21&lt;/a> el 6 de mayo.&lt;/p>
&lt;h2 id="recién-rastreados-y-descubiertos">Recién rastreados y descubiertos&lt;/h2>
&lt;h3 id="bitmacro-signer-un-bunker-nip-46-autoalojable-con-cifrado-de-claves-del-lado-del-cliente">BitMacro Signer: un bunker NIP-46 autoalojable con cifrado de claves del lado del cliente&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitmacro/bitmacro-signer">BitMacro Signer&lt;/a> es una herramienta de firma Nostr autoalojable que gestiona claves privadas usando el modelo de bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>. El firmador cifra las claves en el cliente antes del almacenamiento para que el lado del servidor nunca tenga texto en claro.&lt;/p>
&lt;p>El descubrimiento de repos NIP-34 de esta semana trajo 26 nuevos anuncios de repositorio, de los cuales cuatro destacan.&lt;/p>
&lt;h3 id="gnostr-una-implementación-de-git-construida-directamente-sobre-nostr">gnostr: una implementación de git construida directamente sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/gnostr-org/gnostr">gnostr&lt;/a> es una implementación de git construida directamente sobre Nostr, distinta de &lt;code>git-remote-nostr&lt;/code> en que incluye sus propios comandos de árbol de trabajo como cliente de control de versiones nativo de Nostr desde cero.&lt;/p>
&lt;h3 id="nostr-archive-una-especificación-de-archivo-con-contenido-direccionado-en-nostr-y-blossom">nostr-archive: una especificación de archivo con contenido direccionado en Nostr y Blossom&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/nostr-archive/nostr-archive">nostr-archive&lt;/a> es una especificación borrador e implementación de referencia para archivos con contenido direccionado en Nostr y Blossom.&lt;/p>
&lt;h3 id="flower-cache-un-servidor-de-caché-local-de-blossom">flower-cache: un servidor de caché local de Blossom&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/flower-cache/flower-cache">flower-cache&lt;/a> es un servidor de caché local de Blossom, útil para clientes que quieren un espejo local activo del conjunto de blobs de un servidor Blossom remoto.&lt;/p>
&lt;h3 id="micro-vpn-ansible-playbooks-de-ansible-para-despliegue-de-vpn-sobre-nip-34">micro-vpn-ansible: playbooks de Ansible para despliegue de VPN sobre NIP-34&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1mu9fsh42uh48trncevdpju8cyv3mxmj9qj3rdjqc46zc324c6hys9ctsnc/relay.ngit.dev/micro-vpn-ansible">micro-vpn-ansible&lt;/a> es una pequeña colección de playbooks de Ansible para desplegar una micro VPN, alojada como repositorio NIP-34.&lt;/p>
&lt;h2 id="trabajo-de-protocolo">Trabajo de protocolo&lt;/h2>
&lt;h3 id="actualizaciones-de-nip">Actualizaciones de NIP&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Un mercado de hashrate sin intermediarios sobre Nostr&lt;/strong> (&lt;a href="https://njump.me/nevent1qqsqd2478wqugjh9ur9lenw9la0wd987h6jcc0tma4kkuat4xceymvszypxxmj0zcqtwqm34f48gzulrg99daaczllhtqun7xsldkh8neua2jhr32rf">borrador de propuesta&lt;/a>): Borrador de NIP anónimo que argumenta que los actores actuales del mercado de hashrate son todos intermediarios con custodia que someten a los usuarios a KYC. La propuesta esboza un mercado peer-to-peer de hashrate sobre eventos Nostr.&lt;/li>
&lt;li>&lt;strong>Feeds curados: una alternativa más simple a los feeds DVM&lt;/strong> (&lt;a href="https://njump.me/nevent1qqsqj55kvu28uyq2jr6nfwx20mv7c0vkm0vxkgx0zzrnanfp4wwv8nczyzm7669svt0xkjsju50a22zurc0qa589z2xd4yatzx6p2z64a5e0cyxz3e3">borrador de propuesta&lt;/a>): Un borrador argumenta que las Máquinas de Vending de Datos &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a> fueron diseñadas como un mercado de cómputo de propósito general, y el modelo de solicitud/respuesta es más pesado de lo necesario cuando un cliente solo quiere una lista direccionable de IDs de eventos.&lt;/li>
&lt;li>&lt;strong>Colores de perfil: identidad visual determinista&lt;/strong> (&lt;a href="https://njump.me/nevent1qqsy3tj7mn3r7wczmc52aknf5ym43lj3rrhd3sfprzvc6qydsq62wrgzyzjk8j56zmt5fwv088l5y84hqq4gags3grvuznlu4zmyt54w34cccyxenp3">borrador de propuesta&lt;/a>): Un nuevo borrador de NIP para derivar colores deterministas y legibles de un pubkey de Nostr para identidad visual consistente entre clientes.&lt;/li>
&lt;li>&lt;strong>NIPs de seguimiento Namecoin: anclar identidad, relays, TLS y reputación&lt;/strong> (&lt;a href="https://njump.me/nevent1qqsydpjnaj2netmv0h5mlm2j6zpk8u50yvc9pqth3ly8pzuwy22720szypp3shk7edn43y5zfvdr0ftl8eq8l00zaknjqx3c9xuv7ja8ck60q7uupzs">clúster de borradores&lt;/a>): Un clúster separable de borradores de NIP que mueven partes del stack de Nostr existente a registros anclados en Namecoin.&lt;/li>
&lt;/ul>
&lt;h2 id="inmersión-profunda-en-nip-nip-34-git-stuff">Inmersión profunda en NIP: NIP-34 (git stuff)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> define kinds de eventos para alojar repositorios git, parches, pull requests, issues y estado de fusión en relays Nostr. Es el estándar que convierte Nostr en una capa de coordinación para la colaboración de código.&lt;/p>
&lt;p>Un repositorio se anuncia como un evento direccionable kind &lt;code>30617&lt;/code> cuyo tag &lt;code>d&lt;/code> es un identificador en kebab-case. Los parches usan kind &lt;code>1617&lt;/code> y llevan la salida de &lt;code>git format-patch&lt;/code> en el cuerpo del contenido. Los pull requests usan kind &lt;code>1618&lt;/code>. Los issues usan kind &lt;code>1621&lt;/code> con contenido markdown. Los eventos de estado mueven un hilo entre Abierto (&lt;code>1630&lt;/code>), Aplicado/Fusionado o Resuelto (&lt;code>1631&lt;/code>), Cerrado (&lt;code>1632&lt;/code>) y Borrador (&lt;code>1633&lt;/code>).&lt;/p>
&lt;h2 id="inmersión-profunda-en-nip-nip-53-actividades-en-vivo">Inmersión profunda en NIP: NIP-53 (Actividades en Vivo)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-53/">NIP-53&lt;/a> define la superficie estándar de eventos para actividades en vivo en Nostr: transmisiones en vivo, espacios de reunión persistentes, eventos de conferencia programados, presencia de oyentes y el canal de chat en vivo que vincula los mensajes de chat a un registro de actividad en vivo específico.&lt;/p>
&lt;p>Una transmisión en vivo se anuncia como un evento direccionable kind &lt;code>30311&lt;/code>. NIP-53 separa el espacio persistente del evento programado que se celebra en su interior. Un kind &lt;code>30312&lt;/code> Meeting Space define una sala, y un kind &lt;code>30313&lt;/code> Conference Event representa una reunión programada o en curso en esa sala.&lt;/p>
&lt;p>La superficie de actividades en vivo de Nostr es intencionalmente delgada: NIP-53 anuncia la actividad, mientras otros NIPs manejan preocupaciones adyacentes. Los zaps a transmisiones en vivo usan recibos de zap &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57 (Zaps)&lt;/a>, los objetivos de recaudación de fondos usan metas de zap &lt;a href="https://nostrcompass.org/es/topics/nip-75/">NIP-75 (Metas de Zap)&lt;/a>, y las grabaciones de video pueden republicarse como eventos de video &lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71 (Eventos de Video)&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. Si estás construyendo algo o tienes noticias que compartir, envíanos un DM en Nostr o encuéntranos en &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #20</title><link>https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/</guid><description>&lt;p>Bienvenidos de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> convierte git-sobre-Nostr en una superficie de revisión de código más completa con un botón para fusionar PR en el navegador, favoritos y seguimiento de repositorios, un explorador de git eficiente en ancho de banda, comentarios de revisión en línea con kind &lt;code>1111&lt;/code> y estado de notificaciones cifrado multi-dispositivo. &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lanza un demonio local que descubre proveedores de modelos mediante anuncios Nostr de kind &lt;code>38421&lt;/code> y les paga con Cashu. Los lanzamientos etiquetados incluyen &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 y v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 y Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet y más. Los cambios aún no publicados cubren &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 y NWC&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">FIPS con bootstrap udp:nat basado en Nostr&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">observabilidad de strfry&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">atestaciones de propietario en Sprout&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">paquetes de recetas en Zap Cooking&lt;/a>. Los proyectos recién rastreados incluyen &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#nostrord-a-nip-29-client-built-with-kotlin-multiplatform-and-wasm">Nostrord&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#clave-brings-nip-46-remote-signing-to-ios-via-apns">Clave&lt;/a>, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages y null&amp;ndash;nostr. La retrospectiva de fin de mes cubre los abriles de Nostr desde 2021 hasta 2026.&lt;/p></description><content:encoded>&lt;p>Bienvenidos de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> convierte git-sobre-Nostr en una superficie de revisión de código más completa con un botón para fusionar PR en el navegador, favoritos y seguimiento de repositorios, un explorador de git eficiente en ancho de banda, comentarios de revisión en línea con kind &lt;code>1111&lt;/code> y estado de notificaciones cifrado multi-dispositivo. &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lanza un demonio local que descubre proveedores de modelos mediante anuncios Nostr de kind &lt;code>38421&lt;/code> y les paga con Cashu. Los lanzamientos etiquetados incluyen &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 y v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 y Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet y más. Los cambios aún no publicados cubren &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 y NWC&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">FIPS con bootstrap udp:nat basado en Nostr&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">observabilidad de strfry&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">atestaciones de propietario en Sprout&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">paquetes de recetas en Zap Cooking&lt;/a>. Los proyectos recién rastreados incluyen &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#nostrord-a-nip-29-client-built-with-kotlin-multiplatform-and-wasm">Nostrord&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#clave-brings-nip-46-remote-signing-to-ios-via-apns">Clave&lt;/a>, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages y null&amp;ndash;nostr. La retrospectiva de fin de mes cubre los abriles de Nostr desde 2021 hasta 2026.&lt;/p>
&lt;h2 id="historias-principales">Historias principales&lt;/h2>
&lt;h3 id="gitworkshop-lanza-fusión-de-pr-en-el-navegador-seguimiento-de-repositorios-y-un-explorador-de-git-eficiente-en-ancho-de-banda">GitWorkshop lanza fusión de PR en el navegador, seguimiento de repositorios y un explorador de git eficiente en ancho de banda&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>, la capa de colaboración web de Dan Conway para &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> git-sobre-Nostr, publicó esta semana un lanzamiento importante que acerca el flujo de trabajo mucho más a lo que los desarrolladores esperan de GitHub o GitLab, manteniendo comentarios, listas de repositorios y notificaciones dentro de eventos Nostr firmados.&lt;/p>
&lt;p>La incorporación destacada es un botón largamente esperado para fusionar PR en el navegador para repositorios que usan servidores GRASP. El lanzamiento también añade favoritos y seguimiento de repositorios basados en reacciones y listas de &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>, con conjuntos de repositorios fijados publicados como eventos kind &lt;code>10617&lt;/code> que apuntan a anuncios de repositorio kind &lt;code>30617&lt;/code> mediante tags &lt;code>a&lt;/code> ordenados. Las páginas de perfil ahora pueden mostrar una lista portátil de repositorios.&lt;/p>
&lt;p>Un explorador de git eficiente en ancho de banda reemplaza al anterior clonado superficial en el navegador. El nuevo explorador se apoya en el protocolo cliente/servidor de git subyacente sobre el que se construye GRASP, por lo que puede manejar repositorios grandes sin forzar al navegador a descargar un pack completo. La búsqueda ahora cubre nombres de usuario y metadatos de repositorio, impulsada por &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a> y una implementación de relay &lt;code>ngit-indexer&lt;/code> que descubre y sincroniza anuncios de repositorio en toda la red. Un flujo de creación de repositorios en el navegador completa la ruta de descubrimiento e incorporación.&lt;/p>
&lt;p>Las herramientas de revisión están reconstruidas alrededor de una pestaña Files Changed, un visor de diff por parche y un conjunto de nuevas primitivas experimentales. Los comentarios de revisión de código en línea usan kind &lt;code>1111&lt;/code>, construido sobre &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a>: cada comentario apunta a una ruta de archivo (tag &lt;code>f&lt;/code>), un SHA de commit (tag &lt;code>c&lt;/code>) y un rango de líneas seleccionado (tag &lt;code>line&lt;/code>) para que un cliente pueda renderizar el comentario en la posición correcta dentro del diff. Un segundo nivel de primitivas experimentales queda con permisos del autor y de los mantenedores del repositorio y usa etiquetas &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a>: renombrar el asunto de un Issue o PR después de enviarlo, añadir hashtags posteriormente, fijar un CoverNote versionado en la parte superior de un PR o Issue como resumen editable y marcar subhilos de discusión de código en línea como resueltos. Los eventos de veredicto y los bloques &lt;code>suggestion&lt;/code> siguen en borrador y aún no se han lanzado.&lt;/p>
&lt;p>El estado de notificaciones entre dispositivos también se sincroniza mediante Nostr, pero con un giro que preserva la privacidad. GitWorkshop genera un par de claves dedicado para notificaciones, cifra ese nsec y lo almacena dentro de un evento kind &lt;code>30078&lt;/code>. El nsec de notificaciones firma después los eventos reales de estado de notificaciones. La indirección evita que el firmador principal del usuario sea saturado con solicitudes frecuentes de cifrado y descifrado para cada acción de lectura o archivado, e impide que observadores externos vean fácilmente cuándo un usuario toca su estado de notificaciones. Un usuario puede sincronizar el estado de lectura y archivado entre dispositivos; los relays solo ven blobs cifrados.&lt;/p>
&lt;h3 id="routstrd-lanza-un-enrutador-local-para-inferencia-sobre-nostr">Routstrd lanza un enrutador local para inferencia sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a> es un nuevo demonio en TypeScript que proporciona a las herramientas locales un endpoint compatible con OpenAI y enruta cada solicitud a un proveedor competidor de &lt;a href="https://routstr.com">Routstr&lt;/a>. El demonio descubre proveedores a través de anuncios Nostr de kind &lt;code>38421&lt;/code> definidos en la especificación RIP-02 de Routstr. Después puntúa a los proveedores por precio, confianza y rendimiento reciente bajo RIP-06 y envía cada solicitud a la mejor opción del momento.&lt;/p>
&lt;p>El pago se realiza mediante una wallet local de Cashu gestionada por cocod y financiada con Lightning. Esto proporciona al cliente una ruta de liquidación denominada en sats manteniendo el descubrimiento de proveedores público y sin permisos a través de relays Nostr. Si un proveedor falla durante una sesión, Routstrd puede recurrir al siguiente nodo mejor clasificado. La ruta de instalación es &lt;code>bun install -g routstrd&lt;/code>, seguida de &lt;code>routstrd onboard&lt;/code> para la configuración de la wallet y los relays.&lt;/p>
&lt;p>La &lt;a href="https://github.com/routstr">organización Routstr&lt;/a> más amplia mantiene el demonio, el software del nodo en Python (&lt;code>routstr-core&lt;/code>), una interfaz de chat y las especificaciones del protocolo. Para los usuarios, el puerto local se convierte en la interfaz estable: las herramientas existentes compatibles con OpenAI apuntan a Routstrd, mientras el demonio maneja el descubrimiento de proveedores, el enrutado y el pago.&lt;/p>
&lt;h2 id="lanzamientos-etiquetados">Lanzamientos etiquetados&lt;/h2>
&lt;h3 id="ngit-v242-corrige-la-detección-de-servidores-grasp-para-envíos-de-pr">ngit v2.4.2 corrige la detección de servidores GRASP para envíos de PR&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a> publicó &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a> con una corrección para la detección de servidores GRASP de repositorio, manteniendo el envío de PR en el camino feliz cuando una propuesta usa el kind PR. Cabe señalar que ngit actualmente utiliza por defecto el kind &lt;code>Patch&lt;/code> para la mayoría de los cambios a menos que sean grandes; el mantenedor está trabajando para cambiar ese valor por defecto. &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>, publicada anteriormente en la semana, corrigió errores &lt;code>fatal&lt;/code> durante clone y fetch cuando los datos git de un PR abierto no estaban disponibles en los servidores git especificados por el repositorio.&lt;/p>
&lt;h3 id="wisp-v100-se-gradúa-de-beta">Wisp v1.0.0 se gradúa de beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, un cliente Android en Kotlin y Jetpack Compose centrado en enrutado de relays, privacidad y una interfaz nativa pequeña, publicó &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a> y a continuación &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>. El hito 1.0.0 reúne el interruptor de denominación fiat de Normie Mode, el feed For You, la configuración de grupos basados en relays de &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> y la difusión de listas de relays &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> cubierta en &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-22-newsletter/#wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Newsletter #19&lt;/a>. v1.0.2 añade soporte para páginas de 16 KB de Android 15, una pestaña de escaneo de QR en el cajón lateral, un botón de descarga para los controles de vídeo en línea y correcciones de rendimiento en la lista de notificaciones.&lt;/p>
&lt;h3 id="grain-v052-corrige-el-bloqueo-de-websocket-v053-continúa-el-pulido">grain v0.5.2 corrige el bloqueo de WebSocket, v0.5.3 continúa el pulido&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>, el relay en Go de 0ceanSlim, publicó &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a> como un hotfix crítico para un bloqueo de WebSocket introducido en v0.5.0, seguido de &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>. El bloqueo hacía que las conexiones se colgaran bajo ciertos filtros y rutas de WebSocket, por lo que los operadores en v0.5.1 o v0.5.0 deberían actualizar. grain rastrea todas las categorías principales de eventos Nostr, expone información de relay NIP-11, admite control de acceso por lista blanca/negra, límites de tasa por kind, un panel web y una biblioteca cliente Go añadida en la línea v0.5.x.&lt;/p>
&lt;h3 id="mostro-core-v0100-y-mostro-mobile-v125-adoptan-nip-59-gift-wrap-con-doble-clave">Mostro Core v0.10.0 y Mostro Mobile v1.2.5 adoptan NIP-59 gift wrap con doble clave&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0">Mostro Core v0.10.0&lt;/a> añade el nuevo módulo gift-wrap de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> con identidad y claves de intercambio separadas. El código de transporte anterior utilizaba una única clave de identidad tanto para la identidad de intercambio como para el gift wrapping. v0.10.0 separa la identidad de intercambio estable de la clave de envoltura efímera, para que cada intercambio pueda usar una clave de transporte fresca mientras se preserva la identidad necesaria para el protocolo de intercambio. La integración con el demonio llega mediante &lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>, y &lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a> lleva la misma migración al cliente de línea de comandos.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.5">Mostro Mobile v1.2.5&lt;/a> se publica junto con el trabajo del protocolo. &lt;a href="https://github.com/MostroP2P/mobile/pull/581">PR #581&lt;/a> permite a los tomadores filtrar ofertas por la antigüedad de la cuenta del creador, dando a los usuarios una forma de evitar cuentas de creadores recién creadas en el libro de órdenes. &lt;a href="https://github.com/MostroP2P/mobile/pull/580">PR #580&lt;/a> corrige las etiquetas de rol en los detalles de las órdenes canceladas, y &lt;a href="https://github.com/MostroP2P/mobile/pull/576">PR #576&lt;/a> limpia los botones de cancelación cooperativa.&lt;/p>
&lt;h3 id="marmot-ts-v050-estrena-keypackages-direccionables">marmot-ts v0.5.0 estrena KeyPackages direccionables&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a> publicó &lt;a href="https://github.com/marmot-protocol/marmot-ts/releases/tag/%40internet-privacy%2Fmarmot-ts%400.5.0">@internet-privacy/marmot-ts@0.5.0&lt;/a>, el primer lanzamiento con cambios rupturistas planeado para el cliente TypeScript de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/68">PR #68&lt;/a> añade soporte para KeyPackage direccionables: &lt;code>KeyPackageManager&lt;/code> ahora puede manejar tanto los eventos KeyPackage heredados kind &lt;code>443&lt;/code> como los nuevos kind &lt;code>30443&lt;/code>. El lanzamiento elimina &lt;code>KeyPackageStore&lt;/code> y las clases de almacenamiento del estado de grupo, reemplazándolas con almacenes clave-valor genéricos que se pasan a &lt;code>KeyPackageManager&lt;/code> y &lt;code>MarmotGroup&lt;/code>. También traslada la gestión de invitaciones y grupos a &lt;code>MarmotClient.invites&lt;/code> y &lt;code>MarmotClient.groups&lt;/code>, por lo que quienes lo integran directamente necesitan cambios en el constructor y en el almacenamiento antes de actualizar.&lt;/p>
&lt;h3 id="cruxcoach-v013-estrena-copia-de-seguridad-cifrada-de-datos-de-escalada-con-nostr-y-blossom">CruxCoach v0.1.3 estrena copia de seguridad cifrada de datos de escalada con Nostr y Blossom&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/CruxCoach/CruxCoach">CruxCoach&lt;/a> es una nueva aplicación Android de código abierto para escaladores en Kilter Board. La Kilter Board es un muro de entrenamiento interactivo cuyos agarres se iluminan por Bluetooth para mostrar rutas. La app se lanzó el 14 de abril y alcanzó &lt;a href="https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3">v0.1.3&lt;/a> el 26 de abril.&lt;/p>
&lt;p>v0.1.3 añade copia de seguridad opcional cifrada en la nube. La cuenta CruxCoach de un usuario es un par de claves Nostr, y la clave privada también funciona como entrada para la clave de cifrado de la copia local. La app cifra los datos de escalada en el dispositivo y refleja el texto cifrado en servidores de almacenamiento Blossom (&lt;code>blossom.primal.net&lt;/code> y &lt;code>nostr.download&lt;/code>). Las acciones de borrado remoto llaman a la ruta de limpieza de Blossom. Más allá de la copia de seguridad, CruxCoach usa firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> para soporte de Amber, DMs privados &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> para el contacto con el desarrollador dentro de la app, listas de relays &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> para descubrimiento de relays y la biblioteca &lt;a href="https://github.com/vitorpamplona/quartz">Quartz&lt;/a> de Vitor Pamplona para la plomería Nostr. Los usuarios pueden instalarla a través de Zapstore o APKs directos de Codeberg.&lt;/p>
&lt;h3 id="meiso-v130-añade-subtareas-adjuntos-blossom-y-etiquetado-nip-89">Meiso v1.3.0 añade subtareas, adjuntos Blossom y etiquetado NIP-89&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso">Meiso&lt;/a> es un gestor de tareas minimalista en Flutter para Android que almacena tareas como datos de aplicación kind &lt;code>30078&lt;/code> cifrados con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> en relays Nostr. &lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.3.0">v1.3.0&lt;/a>, publicada el 6 de abril, añade subtareas con relaciones padre/hijo, enlaces entre tareas para bloqueadas/bloqueadas-por/relacionadas-con/duplicada-de, adjuntos de imagen a través de endpoints de subida HTTP Blossom y &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a>, un tag &lt;code>client&lt;/code> de aplicación recomendada &lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a> en los eventos publicados y una herramienta de sincronización de línea de comandos en Go. v1.3.0 también corrige el comportamiento de los relays en el arranque en frío y la reutilización del cliente Amber.&lt;/p>
&lt;h3 id="noornote-nostria-nostr-calendar-nos2x-fox-y-lanzamientos-de-bibliotecas">NoorNote, Nostria, Nostr Calendar, nos2x-fox y lanzamientos de bibliotecas&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> publicó &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.7">v0.8.7&lt;/a>, &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.8">v0.8.8&lt;/a> y &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.9">v0.8.9&lt;/a>. Esos lanzamientos corrigen el manejo de clics en imágenes y vídeos en reposts citados, añaden soporte de lightbox para imágenes en artículos de formato largo y corrigen la pantalla de inicio en blanco en escritorio. &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> publicó &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.29">v3.1.29&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.30">v3.1.30&lt;/a> y &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.31">v3.1.31&lt;/a>, añadiendo compresión de imágenes en el editor de artículos, un interruptor USD para la wallet, controles de tarjetas promocionales, soporte PDF y pulido del diseño móvil.&lt;/p>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.1">Nostr Calendar v1.4.1&lt;/a> desacopla la publicación de eventos de calendario de la gestión de listas de calendarios y corrige el seguimiento de invitaciones. &lt;a href="https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0">nos2x-fox v1.19.0&lt;/a> añade marcos temporales de autorización personalizados para las concesiones de firma de navegador NIP-07 en Firefox. &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97">nostr-double-ratchet v0.0.97&lt;/a> publica nuevos binarios. &lt;a href="https://github.com/nostr-wot/nostr-wot-sdk/releases/tag/nostr-wot-sdk%400.9.0">nostr-wot-sdk 0.9.0&lt;/a> monta &lt;code>NostrSessionProvider&lt;/code> por defecto, y &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/535">nostr-tools PR #535&lt;/a> añade soporte de análisis multi-relay para cadenas wallet-connect NIP-47.&lt;/p>
&lt;p>A finales de semana, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1">Amber v6.1.0-pre1&lt;/a> publicó una preversión con un mejor diseño para conectar aplicaciones nuevas, correcciones del diálogo del firmador, mejor manejo de permisos de notificación y selección de cuentas refactorizada. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14">nostr-vpn v0.3.14&lt;/a> publicó una nueva compilación con artefactos para macOS Apple Silicon, Linux y Windows. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8">Bitcredit Core v0.5.7-hotfix-1 y v0.5.8&lt;/a> publicaron correcciones consecutivas para un problema de validación de bloques huérfanos. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">Surveil v0.1.6&lt;/a> trajo pulido de UI móvil y una página About renovada; el proyecto se presenta &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">más abajo&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-600-elimina-las-fábricas-de-eventos-heredadas-y-añade-análisis-de-uri-blossom">applesauce 6.0.0 elimina las fábricas de eventos heredadas y añade análisis de URI Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">applesauce&lt;/a>, el kit de herramientas Nostr en TypeScript de hzrd149, publicó un tren de lanzamientos 6.0.0 en el monorepo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0">applesauce-core@6.0.0&lt;/a> elimina la clase heredada &lt;code>EventFactory&lt;/code> y los antiguos ayudantes &lt;code>buildEvent&lt;/code>, &lt;code>modifyEvent&lt;/code> y &lt;code>createEvent&lt;/code>, empujando a quienes llaman hacia las nuevas clases de fábrica en &lt;code>applesauce-core/factories&lt;/code> y &lt;code>applesauce-common&lt;/code>. También añade manejo de direcciones IP y localhost al análisis de enlaces, expresiones regulares para URI Blossom BUD-10 y nuevos ayudantes observables como &lt;code>timeoutWithIgnore&lt;/code>, &lt;code>combineLatestBy&lt;/code>, &lt;code>combineLatestByIndex&lt;/code> y &lt;code>combineLatestByKey&lt;/code>.&lt;/p>
&lt;p>Los lanzamientos a nivel de paquete completan las piezas específicas de Nostr. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0">applesauce-content@6.0.0&lt;/a> añade nodos de URI Blossom BUD-10 para texto y Markdown, dando a los renderizadores una forma de primera clase para analizar referencias Blossom en el contenido. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0">applesauce-actions@6.0.0&lt;/a> añade clases base de fábrica para listas NIP-51 que cubren relays, usuarios e ítems, haciendo la construcción de listas menos ad hoc. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet-connect%406.0.0">applesauce-wallet-connect@6.0.0&lt;/a> expone &lt;code>WalletConnect.connectURI&lt;/code>, para que las apps puedan acceder directamente a un URI wallet-connect NIP-47 existente.&lt;/p>
&lt;h2 id="cambios-sin-publicar">Cambios sin publicar&lt;/h2>
&lt;h3 id="amethyst-avanza-las-salas-de-audio-nests-con-pruebas-de-interoperabilidad-moq">Amethyst avanza las salas de audio Nests con pruebas de interoperabilidad MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó varios PR centrados en Nests esta semana, construyendo sobre la pila de salas de audio &lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a> de la semana pasada. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2622">PR #2622&lt;/a> añade un arnés de interoperabilidad entre clientes que ejercita el cliente MoQ de Amethyst contra la implementación web de referencia. El objetivo es detectar divergencias a nivel de cable entre Android/navegador antes de que los usuarios se topen con ellas. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2625">PR #2625&lt;/a> mejora el foco del hablante y el estado de conexión en picture-in-picture, mientras que &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2620">PR #2620&lt;/a> clarifica avatares, estado de silencio y estado de habla en la cuadrícula de participantes. A finales de semana, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2634">PR #2634&lt;/a> corrige el padding del IME y los insets de ventana en la vista Nest a pantalla completa y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2635">PR #2635&lt;/a> añade filtrado por frescura basado en presencia al feed de Nests. Por separado, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2627">PR #2627&lt;/a> elimina la implementación C personalizada de secp256k1 de Amethyst y migra a &lt;code>libschnorr256k1&lt;/code>.&lt;/p>
&lt;h3 id="nostream-añade-soporte-para-listas-de-relays-nip-65-y-pagos-nwc">nostream añade soporte para listas de relays NIP-65 y pagos NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> fusionó tres PR notables después del sprint de 53 PR del relay de la semana pasada. El soporte para metadatos de listas de relays &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> llega en &lt;a href="https://github.com/Cameri/nostream/pull/585">PR #585&lt;/a>, para que el relay pueda indexar y servir eventos kind &lt;code>10002&lt;/code> de listas de relays. Un procesador de pagos Nostr Wallet Connect sigue en &lt;a href="https://github.com/Cameri/nostream/pull/539">PR #539&lt;/a>, añadiendo una ruta de pago-por-relay. La limpieza de conexiones mejora en &lt;a href="https://github.com/Cameri/nostream/pull/438">PR #438&lt;/a>, que cierra un bug de conexiones muertas donde los sockets con suscripciones activas no eran recogidos, causando que los conteos de suscripciones se desviaran en instancias de larga ejecución.&lt;/p>
&lt;h3 id="fips-añade-bootstrap-udpnat-basado-en-nostr">FIPS añade bootstrap udp:nat basado en Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, el Free Internetworking Peering System previamente cubierto en &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>, fusionó &lt;a href="https://github.com/jmcorgan/fips/pull/53">PR #53&lt;/a> con bootstrap &lt;code>udp:nat&lt;/code> basado en Nostr. El cambio permite a los nodos publicar anuncios Nostr, intercambiar señalización cifrada de oferta/respuesta, descubrir direcciones públicas mediante STUN, realizar UDP hole punching y entregar el socket perforado a la pila de transporte normal de FIPS. La implementación vincula las identidades de la carga útil de señalización al remitente Nostr real, consulta los relays configurados de DM y anuncios para la búsqueda de bandeja de entrada y revierte los traspasos de traversal adoptado fallidos para que los transportes UDP huérfanos no queden vivos. Este es el trabajo de anuncio Nostr y traversal NAT a seguir en el repositorio canónico, &lt;code>jmcorgan/fips&lt;/code>.&lt;/p>
&lt;h3 id="strfry-añade-observabilidad-por-conexión">strfry añade observabilidad por conexión&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> fusionó &lt;a href="https://github.com/hoytech/strfry/pull/214">PR #214&lt;/a>, añadiendo observabilidad por conexión y métricas a nivel de conexión exportables a través de Prometheus. &lt;a href="https://github.com/hoytech/strfry/pull/204">PR #204&lt;/a> normaliza las etiquetas de Prometheus, y &lt;a href="https://github.com/hoytech/strfry/pull/215">PR #215&lt;/a> añade una sección de Community Integrations a la documentación que cubre proyectos de identidad Namecoin construidos sobre strfry.&lt;/p>
&lt;h3 id="sprout-añade-owner-attestation-y-soporte-multi-workspace">Sprout añade Owner Attestation y soporte multi-workspace&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, el cliente Nostr de Block, fusionó &lt;a href="https://github.com/block/sprout/pull/406">PR #406&lt;/a> implementando NIP-OA (Owner Attestation). La característica proporciona a un agente autónomo una prueba criptográfica de que una pubkey humana específica autorizó sus acciones. &lt;a href="https://github.com/block/sprout/pull/409">PR #409&lt;/a> añade soporte multi-workspace a la app de escritorio, &lt;a href="https://github.com/block/sprout/pull/411">PR #411&lt;/a> añade autocompletado &lt;code>#channel&lt;/code> al compositor móvil y &lt;a href="https://github.com/block/sprout/pull/410">PR #410&lt;/a> cierra una ventana de carrera que podía descartar mensajes de canal activo. &lt;a href="https://github.com/block/sprout/pull/413">PR #413&lt;/a> introduce NIP-RS para sincronización de estado de lectura entre dispositivos, y los &lt;a href="https://github.com/block/sprout/pull/420">PR #420&lt;/a> y &lt;a href="https://github.com/block/sprout/pull/422">PR #422&lt;/a> de seguimiento conectan ese estado de lectura a las insignias de no leídos en móvil.&lt;/p>
&lt;h3 id="zap-cooking-añade-paquetes-de-recetas-solicitudes-de-eliminación-e-inicio-de-sesión-con-bunker">Zap Cooking añade paquetes de recetas, solicitudes de eliminación e inicio de sesión con bunker&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> fusionó una semana productiva de trabajo de publicación de recetas. Las solicitudes de eliminación &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> para los Recipe Packs propios de un usuario llegan en &lt;a href="https://github.com/zapcooking/frontend/pull/367">PR #367&lt;/a>. La fiabilidad de publicación mejora mediante &lt;a href="https://github.com/zapcooking/frontend/pull/366">PR #366&lt;/a>, que fuerza cada nueva receta al relay garden y añade una cola de reintentos para el conjunto compartido de recetas. La publicación de paquetes autorales con un clic llega en &lt;a href="https://github.com/zapcooking/frontend/pull/365">PR #365&lt;/a>, y &lt;a href="https://github.com/zapcooking/frontend/pull/331">PR #331&lt;/a> añade soporte para inicio de sesión con bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="whitenoise-rs-cifra-su-base-de-datos-local">Whitenoise-rs cifra su base de datos local&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> fusionó &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/758">PR #758&lt;/a>, añadiendo cifrado SQLCipher para la base de datos Whitenoise en disco. Eso cierra una brecha de seguridad en reposo de larga data para la pila del demonio Marmot. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/775">PR #775&lt;/a> expone las capacidades requeridas del grupo, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/772">PR #772&lt;/a> migra las operaciones de medios de grupo a &lt;code>MediaOps&lt;/code> propiedad de la sesión y &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/773">PR #773&lt;/a> extrae un contenedor &lt;code>SharedServices&lt;/code> como parte del refactor de session-ops. En el lado móvil, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/577">whitenoise PR #577&lt;/a> habilita el reinicio automático al arranque para el servicio en primer plano de Android, corrigiendo el caso en que el demonio no volvía después de reiniciar el dispositivo.&lt;/p>
&lt;h2 id="recién-rastreados-y-descubiertos">Recién rastreados y descubiertos&lt;/h2>
&lt;h3 id="nostrord-un-cliente-nip-29-construido-con-kotlin-multiplatform-y-wasm">Nostrord: un cliente NIP-29 construido con Kotlin Multiplatform y WASM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a> es un nuevo cliente de chat grupal &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> enfocado al caso de uso de reemplazo de Discord. Los grupos viven en relays Nostr con membresía, roles, moderación y control de acceso aplicados por el relay, por lo que el estado del grupo está alojado por el relay NIP-29 seleccionado. El desarrollador del cliente no controla una base de datos de aplicación separada para esos grupos. La app web se ejecuta en &lt;a href="https://web.nostrord.com">web.nostrord.com&lt;/a> y está construida con Kotlin Multiplatform compilando a WebAssembly, con compilaciones nativas para Android, iOS y escritorio en desarrollo. Nostrord es beneficiario de una subvención &lt;a href="https://opensats.org">OpenSats&lt;/a> e interopera con los mismos relays NIP-29 usados por Flotilla, Chachi y 0xChat.&lt;/p>
&lt;h3 id="clave-lleva-la-firma-remota-nip-46-a-ios-mediante-apns">Clave lleva la firma remota NIP-46 a iOS mediante APNs&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a> es un firmador remoto para iOS en beta que firma eventos Nostr cuando la app no está abierta. La clave privada permanece en el Keychain del iPhone. Cuando un cliente envía una solicitud de firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, un proxy del lado del servidor entrega una Notificación Push de Apple, despertando una Notification Service Extension durante hasta 30 segundos. Esa extensión descifra la solicitud con cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, firma con la clave del Keychain y publica la respuesta. El registro del token del dispositivo usa HTTP Auth &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> para prevenir el secuestro de tokens. Clave admite emparejamiento &lt;code>bunker://&lt;/code> y &lt;code>nostrconnect://&lt;/code>, niveles de confianza por cliente, anulaciones por kind y ha sido probado con Nostur y noStrudel.&lt;/p>
&lt;h3 id="treasures-geocaching-descentralizado-en-nostr">Treasures: geocaching descentralizado en Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/treasures">Treasures&lt;/a> es una plataforma de geocaching donde los caches y los hallazgos son eventos Nostr firmados. Los creadores de caches publican eventos direccionables kind &lt;code>37516&lt;/code> con coordenadas GPS. Los buscadores registran el descubrimiento escaneando un código QR adjunto al cache físico; el código codifica la pubkey del creador, el tag &lt;code>d&lt;/code> del cache y una clave privada de verificación usada como prueba de la visita física. Los zaps &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> pueden fluir desde los buscadores hacia los creadores de caches, y la app en vivo está en &lt;a href="https://treasures.to">treasures.to&lt;/a>.&lt;/p>
&lt;h3 id="smesh-v051-relay-nostr-auto-alojado-cliente-y-firmador-en-una-sola-pila">smesh v0.5.1: relay Nostr auto-alojado, cliente y firmador en una sola pila&lt;/h3>
&lt;p>&lt;a href="https://git.smesh.lol/smesh/smesh">smesh&lt;/a> es una pila Nostr auto-alojada escrita en Moxie, un lenguaje personalizado derivado de Go y TinyGo por mleku. La pila incluye un binario de relay nativo con soporte HTTP, WebSocket, AUTH, búsqueda y Blossom; &lt;code>sm3sh&lt;/code>, un cliente web compilado a módulos ES; y una extensión de firmador de navegador con firma de navegador NIP-07 más soporte de cifrado NIP-04 y NIP-44. El trabajo reciente incluye mensajería de grupo MLS (RFC 9420) en v0.5.0, reconciliación de conjuntos negentropy para sincronización de relay y un motor de grafo Web of Trust. El código vive en la forja auto-alojada de mleku en &lt;code>git.smesh.lol&lt;/code>, construida con su propia herramienta &lt;code>git-web&lt;/code>. El repositorio relacionado &lt;a href="https://git.smesh.lol/smesh/gitea-nostr-auth">gitea-nostr-auth&lt;/a> es un puente OAuth2/OIDC para Gitea: los usuarios se autentican con un firmador de navegador NIP-07, el puente descubre relays a través de NIP-65 y Gitea recibe claims de identidad OIDC estándar.&lt;/p>
&lt;h3 id="surveil-un-constructor-de-mazos-de-magic-the-gathering-en-nostr">Surveil: un constructor de mazos de Magic: The Gathering en Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/surveil">Surveil&lt;/a> es un cliente Nostr para jugadores de Magic: The Gathering que permite a los usuarios buscar cartas, construir mazos, escanear cartas físicas en Android con OCR ML Kit en el dispositivo y compartir mazos en la red. Los mazos se publican como eventos direccionables kind &lt;code>37381&lt;/code>, y la especificación del evento de mazo está documentada en el &lt;code>NIP.md&lt;/code> del proyecto. La capa social se construye a partir de primitivas Nostr estándar: comentarios en hilo NIP-22 (kind &lt;code>1111&lt;/code>) con alcance a cada mazo, reacciones NIP-25 (kind &lt;code>7&lt;/code>), datos de perfil &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">NIP-78&lt;/a> (kind &lt;code>30078&lt;/code>) para los hogares de los jugadores, feeds de seguidores kind &lt;code>3&lt;/code> y forks que llevan un tag &lt;code>a&lt;/code> de vuelta al mazo original. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">v0.1.6&lt;/a> se publicó esta semana con pulido de UI móvil, mejoras del contador de vida, una página About renovada y una píldora de relay en el banner principal del mazo. La app web se ejecuta en cualquier lugar donde se sirva HTML estático, la compilación Android se distribuye a través de &lt;a href="https://zapstore.dev">Zapstore&lt;/a>, y los eventos kind &lt;code>37381&lt;/code> también son indexados nativamente por &lt;a href="https://about.ditto.pub/reference">Ditto&lt;/a> como mazos Magic. El repositorio está en GitLab en &lt;a href="https://gitlab.com/chad.curtis/surveil">chad.curtis/surveil&lt;/a>.&lt;/p>
&lt;h3 id="adiciones-más-pequeñas-fundstr-nod-city-deploy-nsite-to-pages-y-null--nostr">Adiciones más pequeñas: Fundstr, Nod City, deploy-nsite-to-pages y null&amp;ndash;nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ritty65/Fundstr">Fundstr&lt;/a> es una plataforma de financiación de creadores en Nostr que usa ecash Cashu para promesas únicas y recurrentes, con definiciones de niveles de creador y DMs de Nostr. &lt;a href="https://nod.city">Nod City&lt;/a> es un sitio de reseñas de servicios Bitcoin donde las reseñas son eventos Nostr firmados y los reseñadores pueden recibir zaps; no se encontró repositorio público de código fuente. &lt;a href="https://github.com/Origami74/deploy-nsite-to-pages">deploy-nsite-to-pages&lt;/a> es una GitHub Action que refleja un nsite en GitHub Pages usando &lt;code>nsyte download&lt;/code>, soportando nsites de raíz kind &lt;code>15128&lt;/code> y con nombre kind &lt;code>35128&lt;/code>. &lt;a href="https://github.com/tami1A84/null--nostr">null&amp;ndash;nostr&lt;/a>, también descubierto en los datos NIP-34 de esta semana, es el cliente cubierto en la reciente ola de OpenSats como Nurunuru; admite mensajería de grupo MLS, Amber, búsqueda NIP-50, publicaciones protegidas NIP-70, insignias ProofMode y distribución Zapstore.&lt;/p>
&lt;p>FIPS no es un proyecto nuevo para Compass. Se cubrió en &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>. La base de datos ahora apunta al repositorio canónico correcto, &lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a>, y el descubrimiento NIP-34 de esta semana también sacó a la luz mirrors relacionados de git-sobre-Nostr como &lt;code>fips&lt;/code> y &lt;code>awesome-fips&lt;/code>.&lt;/p>
&lt;h2 id="trabajo-de-protocolo">Trabajo de protocolo&lt;/h2>
&lt;h3 id="actualizaciones-de-nip">Actualizaciones de NIP&lt;/h3>
&lt;p>Propuestas y discusiones recientes en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados esta semana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove unused refs tag extension&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a>): Elimina una extensión de tag &lt;code>refs&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> que estaba definida pero no se usaba. La limpieza reduce la ambigüedad de implementación para las herramientas git-sobre-Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove incorrect NIP-09 claim&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>): Elimina una afirmación incorrecta de que los eventos de eliminación &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> pueden restablecer el estado del repositorio. La eliminación NIP-09 es una solicitud de eliminación de evento del lado del cliente, no una máquina de estados del repositorio. La corrección evita que los implementadores de NIP-34 traten las pistas de eliminación como restablecimientos autoritativos del repositorio.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Trabajo abierto e impulsado por implementaciones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Comentarios de revisión en línea kind &lt;code>1111&lt;/code> de GitWorkshop&lt;/strong>: El kind de comentario de revisión de código en línea está documentado en el &lt;code>NIP.md&lt;/code> de GitWorkshop y ahora está en uso activo, pero aún no se ha propuesto como un NIP formal. Los eventos de veredicto (kind &lt;code>7321&lt;/code>) y los bloques &lt;code>suggestion&lt;/code> siguen en borrador y aún no se han lanzado. La retroalimentación de implementación de GitWorkshop y ngit determinará si las formas se convierten en un NIP autónomo de revisión git o permanecen como una convención de aplicación en capas sobre NIP-34.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Nostr mail core y Nostrmon&lt;/strong>: Dos nuevos borradores de NIPs personalizados circularon esta semana. &lt;a href="https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697">Nostr mail core&lt;/a> propone kind &lt;code>1301&lt;/code> para contenido de correo RFC 2822, envuelto con NIP-59 para entrega privada y puenteado al correo legado mediante pubkeys de puente resueltas por NIP-05. &lt;a href="https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27">Nostrmon&lt;/a> esboza kinds de eventos direccionables para regiones, mapas, criaturas, NPCs, guardados de jugador e ítems. Ambos permanecen como borradores personalizados, no NIPs fusionados.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-67: EOSE Completeness Hint&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>): La propuesta continúa iterando sobre añadir un marcador de completitud positivo a &lt;code>EOSE&lt;/code>, permitiendo a los relays distinguir &amp;ldquo;eventos almacenados totalmente entregados&amp;rdquo; de los casos heredados de &lt;code>EOSE&lt;/code> donde el relay no hace ninguna afirmación de completitud.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="seis-abriles-de-nostr">Seis abriles de Nostr&lt;/h2>
&lt;p>Abril ofrece una sección transversal clara del camino de desarrollo de Nostr: el documento del protocolo en 2021, el trabajo temprano de clientes en 2022, la ola de aplicaciones post-Damus en 2023, la mensajería privada y el trabajo git-sobre-Nostr en 2024, Blossom y la limpieza de listas de relays en 2025 y las subvenciones a clientes centradas en la adopción en 2026.&lt;/p>
&lt;h3 id="abril-2021-el-documento-del-protocolo-antes-del-repo-nips">Abril 2021: el documento del protocolo antes del repo NIPs&lt;/h3>
&lt;p>Fiatjaf publicó el artículo original de Nostr, &lt;a href="https://fiatjaf.com/nostr.html">&amp;ldquo;Notes and Other Stuff Transmitted by Relays&amp;rdquo;&lt;/a>, el 20 de noviembre de 2020. Ese primer texto ya contenía la forma central que todavía define el protocolo: los usuarios firman eventos con claves, los publican en relays y leen de los relays que eligen. El &lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&amp;amp;until=2021-04-30">registro de commits de &lt;code>nostr-protocol/nostr&lt;/code>&lt;/a> no muestra commits entre el 1 y el 30 de abril. La actividad se sitúa a ambos lados: los commits de marzo de 2021 añadieron los primeros enlaces &amp;ldquo;nostwitter&amp;rdquo; y un filtro &lt;code>kind&lt;/code>, mientras que mayo de 2021 reutilizó NIP-02 y añadió la autoría de NIPs.&lt;/p>
&lt;p>En abril de 2021, no había mercado público de clientes, ni red de relays visible, ni repositorio de NIPs. El protocolo todavía vivía como un pequeño documento y unos pocos experimentos. Nostr aún no se había convertido en una red social o una plataforma de desarrollo. Todavía era un modelo relay/clave/evento esperando su primera ola sostenida de contribuidores.&lt;/p>
&lt;h3 id="abril-2022-los-nips-aún-vivían-en-el-repo-principal">Abril 2022: los NIPs aún vivían en el repo principal&lt;/h3>
&lt;p>Abril de 2022 fue el último mes antes de que los NIPs se movieran fuera del repo principal &lt;code>nostr-protocol/nostr&lt;/code>. Como la división aún no había ocurrido, el repo dedicado &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> no tenía historial de pull requests de abril. En el repo principal aterrizaron tres commits de abril: &lt;a href="https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8">&amp;ldquo;Update readme to add nip12&amp;rdquo;&lt;/a> el 8 de abril por goswami1999, &lt;a href="https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d">&amp;ldquo;add kinds list&amp;rdquo;&lt;/a> el 25 de abril por jb55 y &lt;a href="https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367">&amp;ldquo;add js formatting to sample code&amp;rdquo;&lt;/a> el 28 de abril por steliosrammos.&lt;/p>
&lt;p>El trabajo de clientes también empezaba a tomar forma. Los commits de Damus de abril de 2022 añadieron comportamiento inicial de chatroom, manejo de perfiles e íconos de la app, mientras que nostr-tools se estaba convirtiendo en la ruta de biblioteca JavaScript para los primeros clientes y experimentos. En el lado del protocolo, las consultas de tags genéricas NIP-12 dieron a la búsqueda por tag un lugar documentado, la lista de kinds movió Nostr hacia un modelo de registro y mejores ejemplos JavaScript facilitaron a los autores de clientes y bibliotecas implementar la especificación. El 1 de mayo, fiatjaf movió los NIPs al repo dedicado. Abril de 2022 fue el último mes de la era original de un solo repo.&lt;/p>
&lt;h3 id="abril-2023-expansión-de-aplicaciones-post-damus">Abril 2023: expansión de aplicaciones post-Damus&lt;/h3>
&lt;p>Abril de 2023 llegó tres meses después de que Damus se lanzara en la App Store de iOS el 31 de enero de 2023, y después de que Jack Dorsey publicara su clave pública de Nostr. La red acababa de absorber su primera gran ola de crecimiento público. Clientes como Damus, Snort, Iris, Coracle y Amethyst estaban activos, mientras que los operadores de relays aprendían qué le hacía un grafo social más grande a las suposiciones sobre ancho de banda, spam, búsqueda y moderación.&lt;/p>
&lt;p>Abril de 2023 tuvo un PR de NIPs fusionado: &lt;a href="https://github.com/nostr-protocol/nips/pull/456">PR #456&lt;/a>, fusionado el 17 de abril, añadiendo enlaces a entidades bech32 NIP-19 al manejo de URIs NIP-21. Los commits circundantes muestran la presión de aplicaciones detrás del trabajo del protocolo. Abril de 2023 vio trabajo en &lt;a href="https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e">NIP-45 COUNT&lt;/a>, marcadores de zap específicos de eventos, &lt;a href="https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c">NIP-15 marketplace&lt;/a>, semántica de delegación de eliminación NIP-26, metadatos de archivo NIP-94, manejo de errores de wallet-connect NIP-47 y &lt;a href="https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3">NIP-30 custom emoji&lt;/a>. La lista de contribuidores se había ampliado para incluir a fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt y arkin0x.&lt;/p>
&lt;p>Damus, Snort, Iris, Coracle y Amethyst ya no eran demos alrededor de una especificación; eran clientes de producción lidiando con onboarding, feeds, spam, zaps, medios y selección de relays. El trabajo de protocolo de abril de 2023 se lee como el backlog que esos clientes crearon: zaps, marketplaces, metadatos de archivos, conteo, emoji y enlaces de identidad empujaron la especificación más allá de simples notas y follows.&lt;/p>
&lt;h3 id="abril-2024-mensajería-privada-git-sobre-nostr-y-soporte-a-mantenedores">Abril 2024: mensajería privada, git-sobre-Nostr y soporte a mantenedores&lt;/h3>
&lt;p>Abril de 2024 tuvo dos fusiones de PRs de NIP. &lt;a href="https://github.com/nostr-protocol/nips/pull/1167">PR #1167&lt;/a>, fusionado el 10 de abril, corrigió terminología confusa en la firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, donde clientes y firmadores necesitan un lenguaje exacto para las acciones solicitadas y autorizadas. &lt;a href="https://github.com/nostr-protocol/nips/pull/1108">PR #1108&lt;/a>, fusionado el 17 de abril, expandió los repositorios git &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> con eventos de estado, clarificaciones, mantenedores opcionales, identificadores de repositorio y tags de descubribilidad. Ese paso hizo git-sobre-Nostr más práctico para ngit y luego GitWorkshop.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b">NIP-17&lt;/a>, anteriormente NIP-24, aterrizó el 24 de abril como mensajes sellados gift-wrapped para DMs privados y chats de grupos pequeños. El trabajo de clientes y bibliotecas corría junto a esto: Amethyst, Primal, Gossip, nostr-tools, NDK y rust-nostr estaban todos activos en el mismo período.&lt;/p>
&lt;p>OpenSats también anunció soporte a largo plazo para desarrolladores de Nostr en abril de 2024: &lt;a href="https://opensats.org/blog/pablofz7-receives-lts-grant">PabloF7z&lt;/a> el 9 de abril, &lt;a href="https://opensats.org/blog/stuart-bowman-receives-lts-grant">Stuart Bowman&lt;/a> el 12 de abril y &lt;a href="https://opensats.org/blog/hzrd149-receives-lts-grant">hzrd149&lt;/a> el 15 de abril. Esas subvenciones movieron la financiación de subvenciones aisladas de proyectos hacia el mantenimiento sostenido de relays, bibliotecas e infraestructura de clientes.&lt;/p>
&lt;h3 id="abril-2025-limpieza-densa-de-nips-y-formalización-de-blossom">Abril 2025: limpieza densa de NIPs y formalización de Blossom&lt;/h3>
&lt;p>Abril de 2025 fue el mes de protocolo más denso en esta retrospectiva, con dieciséis PRs de NIPs fusionados. El mes comenzó con &lt;a href="https://github.com/nostr-protocol/nips/pull/1846">PR #1846&lt;/a>, añadiendo transacciones y direcciones blockchain a NIP-73, y &lt;a href="https://github.com/nostr-protocol/nips/pull/1865">PR #1865&lt;/a>, añadiendo tags NIP-C0 a la tabla de tags estandarizados. Continuó con &lt;a href="https://github.com/nostr-protocol/nips/pull/1801">PR #1801&lt;/a> y &lt;a href="https://github.com/nostr-protocol/nips/pull/1889">PR #1889&lt;/a>, ambos mejorando la guía de republicación de listas de relays kind &lt;code>10002&lt;/code>, y &lt;a href="https://github.com/nostr-protocol/nips/pull/1879">PR #1879&lt;/a>, que redujo y clarificó &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1822">PR #1822&lt;/a> añadió NIP-B7 para interacción con Blossom, dando a los clientes Nostr y a los servidores Blossom una capa de coordinación canónica después de más de un año de práctica informal. &lt;a href="https://github.com/nostr-protocol/nips/pull/1051">PR #1051&lt;/a> deprecó &lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a>, la especificación de firma delegada de eventos. NIP-26 había sido difícil de implementar de forma segura y se había vuelto menos atractivo a medida que NIP-46 y otros patrones de firmador maduraban.&lt;/p>
&lt;p>El resto del mes combinó limpieza con expansión de aplicaciones: &lt;a href="https://github.com/nostr-protocol/nips/pull/1882">PR #1882&lt;/a> añadió campos de política de privacidad y términos de servicio a &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>, &lt;a href="https://github.com/nostr-protocol/nips/pull/1849">PR #1849&lt;/a> expandió el kind &lt;code>39701&lt;/code> de marcadores web bajo NIP-B0, &lt;a href="https://github.com/nostr-protocol/nips/pull/1891">PR #1891&lt;/a> añadió ese kind de marcador al README y &lt;a href="https://github.com/nostr-protocol/nips/pull/1895">PR #1895&lt;/a> añadió tags estandarizados NIP-B0. OpenSats anunció su &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants">Undécima Ola de Subvenciones de Nostr&lt;/a> el 16 de abril, financiando Swae, HAMSTR, Vertex, Nostr Double Ratchet y Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK y rust-nostr también estaban publicando durante este período, por lo que la limpieza del protocolo se ubicó junto a trabajo activo de clientes y bibliotecas.&lt;/p>
&lt;h3 id="abril-2026-endurecimiento-de-nip-34-insignias-y-subvenciones-centradas-en-la-adopción">Abril 2026: endurecimiento de NIP-34, insignias y subvenciones centradas en la adopción&lt;/h3>
&lt;p>Abril de 2026, el mes con el que cierra este número, tuvo cuatro PRs de NIPs fusionados. El primero fue &lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>, fusionado el 1 de abril, que cambió las insignias de perfil &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">NIP-58&lt;/a> a kind &lt;code>10008&lt;/code> y añadió conjuntos de insignias kind &lt;code>30008&lt;/code>, haciendo la asignación de insignias y las colecciones de insignias más componibles. Un segundo cambio de usabilidad git-sobre-Nostr llegó en &lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>, fusionado el 10 de abril, añadiendo semántica de URL de clonación &lt;code>nostr://&lt;/code> a &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a>. Las limpiezas del 25 de abril, &lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a> y &lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>, eliminaron lenguaje NIP-34 no utilizado e incorrecto.&lt;/p>
&lt;p>Los commits relacionados afinan las mismas superficies. El 22 de abril, fiatjaf añadió una lista de servidores Blossom a NIP-51 y ajustó la edición de metadatos NIP-29 para coincidir con el comportamiento estilo PUT de Flotilla. El 26 de abril, renombró NIP-5A por claridad. Abril de 2026 se centró en hacer las superficies de protocolo ya utilizadas más fáciles de implementar y más difíciles de malinterpretar.&lt;/p>
&lt;p>OpenSats anunció su &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">Decimosexta Ola de Subvenciones de Nostr&lt;/a> el 8 de abril, apoyando Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null&amp;ndash;nostr) y una renovación de HAMSTR: clientes de escritorio, mensajería tipo correo, UX de grupos, onboarding en japonés y conectividad fuera de red.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Gracias por leer Nostr Compass #20. &lt;a href="https://nostr.com">Envíanos un DM en Nostr&lt;/a> con pistas, correcciones o nuevos proyectos que cubrir.&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #19</title><link>https://nostrcompass.org/es/newsletters/2026-04-22-newsletter/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-04-22-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> avanzó fuerte en cumplimiento de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, comunidades &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a>, objetivos de zap &lt;a href="https://nostrcompass.org/es/topics/nip-75/">NIP-75&lt;/a> y salas de audio sobre MoQ. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> estabilizó acceso a internet de pago por uso sobre Nostr y &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> con &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a>. &lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> cerró una semana de trabajo de relay en torno a &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a>, compresión, endurecimiento de consultas y paridad completa con &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>. También destacaron el paquete de repositorios de Forgesworn, la sincronización de cartera Lightning de ShockWallet y los análisis de &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> avanzó fuerte en cumplimiento de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, comunidades &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a>, objetivos de zap &lt;a href="https://nostrcompass.org/es/topics/nip-75/">NIP-75&lt;/a> y salas de audio sobre MoQ. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> estabilizó acceso a internet de pago por uso sobre Nostr y &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> con &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a>. &lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> cerró una semana de trabajo de relay en torno a &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a>, compresión, endurecimiento de consultas y paridad completa con &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>. También destacaron el paquete de repositorios de Forgesworn, la sincronización de cartera Lightning de ShockWallet y los análisis de &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a>.&lt;/p>
&lt;h2 id="noticias-principales">Noticias principales&lt;/h2>
&lt;h3 id="amethyst-lanza-cumplimiento-mip-de-marmot-comunidades-nip-72-objetivos-de-zap-y-salas-de-audio-con-moq">Amethyst lanza cumplimiento MIP de Marmot, comunidades NIP-72, objetivos de zap y salas de audio con MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó 57 PRs centradas en interoperabilidad de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, gestión de comunidades &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a>, objetivos de zap &lt;a href="https://nostrcompass.org/es/topics/nip-75/">NIP-75&lt;/a> en pantallas &lt;a href="https://nostrcompass.org/es/topics/nip-53/">NIP-53&lt;/a> y una nueva superficie de audio en tiempo real sobre Media over QUIC. El trabajo incluye alineación con formatos wire de MIP-01 y MIP-05, soporte para MIP-00 KeyPackage Relay List, correcciones de framing y descifrado MLS, una CLI &lt;code>amy&lt;/code> para operaciones de grupos, creación y moderación de comunidades, leaderboard de top zappers y una nueva pantalla de Public Chats para salas públicas de audio.&lt;/p>
&lt;h3 id="tollgate-v010-estabiliza-internet-de-pago-por-uso-sobre-nostr-y-cashu">TollGate v0.1.0 estabiliza internet de pago por uso sobre Nostr y Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> publicó &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a>, fijando una primera referencia estable para vender conectividad por minutos o megabytes a cambio de tokens ecash de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a>. La arquitectura separa una capa de protocolo basada en TIP-01 y TIP-02, una capa de interfaz con HTTP-01 a HTTP-03 y NOSTR-01, y una capa de medio descrita por WIFI-01 para captive portals y clientes pagadores.&lt;/p>
&lt;h3 id="nostream-fusiona-53-prs-para-nip-45-nip-62-compresión-y-endurecimiento-de-consultas">nostream fusiona 53 PRs para NIP-45, NIP-62, compresión y endurecimiento de consultas&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> añadió soporte de &lt;code>COUNT&lt;/code> para &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a>, anunció right-to-vanish de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a>, amplió el esquema de filtros para tags en mayúscula y añadió compresión gzip y xz para import/export. Además, mejoró el rendimiento del traductor de filtros a SQL, corrigió un fallo en matching de pubkeys en allowlists y denylists, añadió desempate determinista en &lt;code>upsertMany&lt;/code>, limitó la confianza en &lt;code>X-Forwarded-For&lt;/code> y alcanzó paridad completa con &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h2 id="lanzamientos-de-esta-semana">Lanzamientos de esta semana&lt;/h2>
&lt;h3 id="primal-android-lanza-pestaña-explore-verificación-nip-05-y-reproductor-de-audio">Primal Android lanza pestaña Explore, verificación NIP-05 y reproductor de audio&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> añadió una nueva pestaña Explore, editor de feeds basado en la DSL de búsqueda avanzada de Primal, verificación &lt;a href="https://github.com/nostr-protocol/nips/blob/master/05.md">NIP-05&lt;/a> y un reproductor de audio embebido. También conectó el escáner QR de cartera con emparejamiento &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="strfry-añade-métricas-prometheus-para-la-ruta-de-escritura-y-corrige-el-sobre-auth-de-nip-42">strfry añade métricas Prometheus para la ruta de escritura y corrige el sobre AUTH de NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> añadió métricas Prometheus para escrituras, logging por conexión y compresión, volvió configurable el límite de tags por filtro y corrigió sus respuestas de AUTH para ajustarse a &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>, usando el sobre &lt;code>OK&lt;/code> en lugar de &lt;code>NOTICE&lt;/code>.&lt;/p>
&lt;h3 id="shopstr-endurece-la-seguridad-del-storefront-en-13-prs">Shopstr endurece la seguridad del storefront en 13 PRs&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> fusionó una serie de correcciones de seguridad que cierran JavaScript almacenado en enlaces de storefront, XSS reflejado en políticas HTML, una API sin autenticación para borrar eventos cacheados, lectura no autenticada de mensajes, fallos SSRF y errores funcionales en cola de publish y descuentos de carrito.&lt;/p>
&lt;h3 id="nostria-v3126-a-v3128-añaden-reproducción-de-música-en-segundo-plano-en-android">Nostria v3.1.26 a v3.1.28 añaden reproducción de música en segundo plano en Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> añadió reproducción de música en segundo plano en Android con controles en la barra de notificaciones y pantalla de bloqueo, y los releases posteriores endurecieron esa nueva superficie del servicio multimedia.&lt;/p>
&lt;h3 id="wisp-v0180-beta-añade-normie-mode-feed-for-you-y-configuración-de-grupos-nip-29">Wisp v0.18.0-beta añade Normie Mode, feed For You y configuración de grupos NIP-29&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> orientó esta versión a usuarios menos nativos de Bitcoin con Normie Mode, onboarding renovado y feed For You. En el lado de protocolo añadió configuración de grupos &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> para flags, invites, roles y AUTH, además de broadcasting a inbox relays &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> de pubkeys mencionadas.&lt;/p>
&lt;h3 id="noornote-v084-añade-scheduled-posts-y-zaps-en-live-streams">NoorNote v0.8.4 añade Scheduled Posts y zaps en live streams&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> añadió publicaciones programadas a través de un relay operado por el proyecto, zaps de un toque desde tarjetas de live stream vía &lt;a href="https://nostrcompass.org/es/topics/nip-53/">NIP-53&lt;/a> y correcciones de duplicación en timelines largas de Android.&lt;/p>
&lt;h3 id="topaz-v002-lanza-un-relay-nostr-para-android">topaz v0.0.2 lanza un relay Nostr para Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a> apareció como un relay Nostr ejecutable en teléfonos Android. El alcance por ahora es acotado, pero la idea es usar el teléfono como relay personal siempre disponible.&lt;/p>
&lt;h3 id="stablekraft-v100-lanza-la-primera-versión-estable-de-su-pwa-de-música-y-podcasts">StableKraft v1.0.0 lanza la primera versión estable de su PWA de música y podcasts&lt;/h3>
&lt;p>&lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a> llegó a &lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.0.0">v1.0.0&lt;/a> como una PWA Next.js para descubrir, organizar y reproducir música obtenida desde feeds de podcasts, usando Nostr para auth y funciones sociales y Lightning para pagos V4V. La semana también mejoró la ingesta de feeds y acortó ventanas de reparseo nocturno.&lt;/p>
&lt;h3 id="niplock-lanza-un-gestor-de-contraseñas-basado-en-nip-17">NipLock lanza un gestor de contraseñas basado en NIP-17&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> almacena credenciales como mensajes directos &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> enviados de la clave del usuario a sí misma, de modo que se sincronicen entre dispositivos autenticados con la misma clave. Soporta firma con &lt;code>nsec&lt;/code>, extensiones de navegador y &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> vía &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-budabit-pule-su-superficie-de-repositorios-nip-34">flotilla-budabit pule su superficie de repositorios NIP-34&lt;/h3>
&lt;p>El fork &lt;a href="https://github.com/Pleb5/flotilla-budabit">flotilla-budabit&lt;/a> siguió mejorando controles de discusión de repositorios, pestañas sticky, carga de anuncios desde relays GRASP y sincronización del estado de patches aplicados por maintainers en su flujo git-over-Nostr.&lt;/p>
&lt;h3 id="rx-nostr-372-a-374-añaden-verificador-por-defecto-y-argumentos-opcionales">rx-nostr 3.7.2 a 3.7.4 añaden verificador por defecto y argumentos opcionales&lt;/h3>
&lt;p>&lt;a href="https://github.com/penpenpng/rx-nostr">rx-nostr&lt;/a> añadió un verificador Schnorr por defecto, corrigió un uso defectuoso de &lt;code>@noble/curves&lt;/code> en su paquete crypto y permitió crear instancias con &lt;code>createRxNostr()&lt;/code> sin configuración obligatoria.&lt;/p>
&lt;h3 id="keep-android-v100-lanza-builds-reproducibles-y-cero-trackers">Keep Android v1.0.0 lanza builds reproducibles y cero trackers&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> llegó a &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.0">v1.0.0&lt;/a> tras añadir receta de build reproducible, sustituir Google ML Kit por ZXing para eliminar dependencias de Google Play Services y publicar un escaneo de Exodus Privacy sin trackers. También añadió un manifiesto &lt;code>zapstore.yaml&lt;/code> para distribuir el APK en Zapstore.&lt;/p>
&lt;h3 id="flotilla-173-y-174-añaden-envoltura-kind-9-para-salas-nip-29-más-ricas">Flotilla 1.7.3 y 1.7.4 añaden envoltura kind-9 para salas NIP-29 más ricas&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> empezó a envolver contenido no orientado a chat dentro de kind &lt;code>9&lt;/code> para preservar el contexto de la sala &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>. Los releases también añadieron encuestas, login &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> mediante Aegis, support de share para invites, room mentions, borradores y vídeo en llamadas.&lt;/p>
&lt;h3 id="wot-relay-v021-migra-el-eventstore-a-lmdb">WoT Relay v0.2.1 migra el eventstore a LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a> migró su eventstore a LMDB, reajustó la carga inicial del grafo de confianza y actualizó dependencias criptográficas y metadatos &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> para el release.&lt;/p>
&lt;h3 id="suite-formstr-revisión-de-seguridad-en-pollerama-i18n-en-forms-y-soporte-rrule-en-calendar">Suite Formstr: revisión de seguridad en Pollerama, i18n en Forms y soporte RRULE en Calendar&lt;/h3>
&lt;p>La suite de Formstr fusionó 26 PRs entre Pollerama, Forms y Nostr Calendar. Pollerama endureció gestión de claves y parsing de perfiles; Forms añadió soporte para audio/vídeo, i18n e importador de Google Forms; y Nostr Calendar lanzó v1.3.0 y v1.4.0 con múltiples RRULE, fechas flotantes en UTC según RFC 5545, eventos compartidos y preferencias de notificación, todo sobre &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a>.&lt;/p>
&lt;h3 id="también-lanzaron-notedeck-nostrblue-cliprelay-captains-log">También lanzaron: notedeck, nostr.blue, cliprelay, Captain&amp;rsquo;s Log&lt;/h3>
&lt;p>Otros proyectos publicaron releases iterativos sin una sola gran novedad: &lt;a href="https://github.com/damus-io/notedeck">notedeck&lt;/a> mejoró renderizado de columnas y relay pools, &lt;a href="https://github.com/patrickulrich/nostr.blue">nostr.blue&lt;/a> actualizó Dioxus y destrabó Android, &lt;a href="https://github.com/tajava2006/cliprelay">cliprelay&lt;/a> ajustó sincronización de portapapeles y &lt;a href="https://github.com/nodetec/comet">Captain&amp;rsquo;s Log&lt;/a> añadió detección de vida de relays de sync.&lt;/p>
&lt;h2 id="en-desarrollo">En desarrollo&lt;/h2>
&lt;h3 id="whitenoise-rs-se-refactoriza-hacia-vistas-de-cuenta-con-alcance-de-sesión">whitenoise-rs se refactoriza hacia vistas de cuenta con alcance de sesión&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> continuó su refactor por fases desde singletons globales hacia &lt;code>AccountSession&lt;/code> por cuenta, moviendo handles de relay, drafts, settings, operaciones de mensajes, lectura y escritura de grupos, membresía, push notifications, key packages y dispatch de eventos a superficies propias de cada sesión.&lt;/p>
&lt;h3 id="la-app-white-noise-añade-ui-de-bloqueodesbloqueo-salida-de-grupo-y-avisos-offline">La app White Noise añade UI de bloqueo/desbloqueo, salida de grupo y avisos offline&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> añadió controles para bloquear y desbloquear usuarios, salir y eliminar grupos desde la app y mostrar avisos offline cuando el daemon no puede alcanzar sus relays. También afinó la eliminación de key packages legacy durante migraciones.&lt;/p>
&lt;h3 id="mdk-añade-soporte-de-invites-entre-versiones-mixtas-y-convergencia-de-selfupdate">MDK añade soporte de invites entre versiones mixtas y convergencia de SelfUpdate&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> mejoró compatibilidad entre clientes Marmot con distintas versiones calculando &lt;code>RequiredCapabilities&lt;/code> como LCD de las capacidades de invitados y alineando el formato wire de SelfUpdate. También reforzó validación de depletion admin, almacenamiento en memoria y acceso a propuestas requeridas por grupo.&lt;/p>
&lt;h3 id="nostter-añade-cifrado-nip-44-a-listas-de-personas-bookmarks-y-mutes">nostter añade cifrado NIP-44 a listas de personas, bookmarks y mutes&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a> siguió migrando de &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> a &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> al cifrar mute lists, bookmarks y people lists, y eliminó una ruta legacy de migración kind-30000 que ya no hacía falta.&lt;/p>
&lt;h3 id="zapcooking-lanza-puntuación-nourish-y-un-hilo-de-comentarios-reutilizable">zap.cooking lanza puntuación Nourish y un hilo de comentarios reutilizable&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">zap.cooking&lt;/a> añadió un módulo Nourish para puntuar recetas por ejes nutricionales y refactorizó su módulo de comentarios hacia un &lt;code>CommentThread&lt;/code> reutilizable, junto con mejoras de escalado, subida de medios y pestañas de replies.&lt;/p>
&lt;h3 id="ridestr-extrae-un-coordinador-compartido-de-pasajeros">ridestr extrae un coordinador compartido de pasajeros&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">ridestr&lt;/a> refactorizó pantallas Compose y extrajo la lógica de protocolo de rider y driver hacia un coordinador compartido &lt;code>:common&lt;/code>, además de añadir un receptor de driver ping kind &lt;code>3189&lt;/code>.&lt;/p>
&lt;h3 id="blossom-propone-cabecera-bud-01-sunset-para-expiración-de-blobs">Blossom propone cabecera BUD-01 Sunset para expiración de blobs&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> abrió una propuesta para añadir una cabecera &lt;code>Sunset&lt;/code> a BUD-01, de modo que un servidor pueda anunciar cuándo dejará de servir un blob y los clientes puedan planificar retención limitada sin descubrirla solo cuando llegue un 404.&lt;/p>
&lt;h2 id="proyectos-nuevos">Proyectos nuevos&lt;/h2>
&lt;h3 id="forgesworn-publica-un-toolkit-criptográfico-de-29-repositorios-para-nostr">Forgesworn publica un toolkit criptográfico de 29 repositorios para Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> lanzó un conjunto amplio de repositorios TypeScript alrededor de firma, identidad, attestations, web of trust y APIs pagadas. Destacan &lt;code>nsec-tree&lt;/code> para subidentidades deterministas, &lt;code>Heartwood&lt;/code> como signer &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> sobre Raspberry Pi, &lt;code>Signet&lt;/code> para verificación de identidad, &lt;code>nostr-attestations&lt;/code> para credenciales y &lt;code>toll-booth&lt;/code> / &lt;code>toll-booth-dvm&lt;/code> para monetizar APIs sobre Lightning y &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a>.&lt;/p>
&lt;h3 id="shockwallet-lanza-sincronización-de-cartera-lightning-nativa-de-nostr-y-conexiones-multi-node">ShockWallet lanza sincronización de cartera Lightning nativa de Nostr y conexiones multi-node&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> usa Nostr como transporte para conectarse a nodos Lightning autocustodiados mediante &lt;code>nprofile&lt;/code>. El proyecto sigue empujando sincronización de estado multi-dispositivo basada en eventos específicos de aplicación y una superficie coherente entre web, Android e iOS.&lt;/p>
&lt;h3 id="los-issues-de-nostrability-migran-a-git-sobre-nostr-tras-la-censura-de-github">Los issues de Nostrability migran a git sobre Nostr tras la censura de GitHub&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/elsat@habla.news/nostrability/issues">Nostrability&lt;/a> movió su workflow de issues a infraestructura git-over-Nostr después de que GitHub eliminara la organización sin respuesta posterior. La idea es mantener los informes de interoperabilidad dentro de infraestructura nativa de Nostr.&lt;/p>
&lt;h3 id="nowhere-codifica-sitios-web-completos-en-fragments-url-y-enruta-pedidos-por-nostr">nowhere codifica sitios web completos en fragments URL y enruta pedidos por Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/5t34k/nowhere">nowhere&lt;/a> serializa un sitio entero dentro del fragmento &lt;code>#&lt;/code> de la URL, lo comprime y lo firma, de modo que el host nunca vea el contenido porque los navegadores no envían fragments a servidores. Para tipos de sitio que necesitan comunicación viva, como store o forum, el tráfico pasa por relays Nostr con cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;h3 id="nuevas-superficies-pequeñas-relaykit-y-brainstorm-search">Nuevas superficies pequeñas: relayk.it y Brainstorm Search&lt;/h3>
&lt;p>&lt;a href="https://relayk.it">relayk.it&lt;/a> apareció como cliente de descubrimiento de relays construido con Shakespeare y ejecutado íntegramente en el navegador, mientras &lt;a href="https://brainstorm.world">Brainstorm Search&lt;/a> ofrece una UI de búsqueda Nostr de página única orientada a descubrir contenido en la red.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificación">Trabajo de protocolo y especificación&lt;/h2>
&lt;h3 id="actualizaciones-de-nip">Actualizaciones de NIP&lt;/h3>
&lt;p>La semana trajo nuevas propuestas en el repositorio de NIPs alrededor de &lt;a href="https://nostrcompass.org/es/topics/nip-67/">NIP-67&lt;/a> para completitud de &lt;code>EOSE&lt;/code>, NIP-5D para applets web, subgrupos y permisos explícitos en &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>, un campo &lt;code>access_control&lt;/code> en &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>, attestations de reputación de agentes para mercados de &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a> y la continuación del trabajo sobre datos privados de localización y cambios de &lt;code>marmot-ts&lt;/code>.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-72-comunidades-moderadas">NIP Deep Dive: NIP-72 (comunidades moderadas)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/72.md">NIP-72&lt;/a> define comunidades temáticas moderadas en las que cualquiera puede enviar contenido, pero solo las publicaciones aprobadas por un moderador aparecen en la vista comunitaria. La comunidad se define con un evento kind &lt;code>34550&lt;/code>, los envíos la referencian mediante una etiqueta &lt;code>a&lt;/code> y los moderadores publican eventos kind &lt;code>4549&lt;/code> para aprobarlos. El modelo es transparente, auditable y bifurcable, a diferencia de &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>, donde el relay controla tanto la membresía como la moderación.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-57-zaps">NIP Deep Dive: NIP-57 (zaps)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/57.md">NIP-57&lt;/a> define cómo adjuntar pagos Lightning a identidades y contenido Nostr mediante solicitudes kind &lt;code>9734&lt;/code> y recibos kind &lt;code>9735&lt;/code>. El punto central sigue siendo la validación: los clientes deben comprobar firma, monto de invoice, description hash y &lt;code>preimage&lt;/code> antes de tratar un recibo como un zap real. Sobre esa base descansan tanto zaps privados y anónimos como sistemas de objetivos de zap de &lt;a href="https://nostrcompass.org/es/topics/nip-75/">NIP-75&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #18</title><link>https://nostrcompass.org/es/newsletters/2026-04-15-newsletter/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-04-15-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó una tanda grande de trabajo en Tor, secp256k1, llamadas WebRTC y &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, incluyendo soporte de llamadas para &lt;a href="https://nostrcompass.org/es/topics/nip-ac/">NIP-AC&lt;/a> y múltiples carteras &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lanzó notificaciones push nativas de Nostr para Android con soporte para &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-40/">NIP-40&lt;/a>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> añadió transporte Reticulum para eventos Nostr sobre LoRa. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a>, &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a>, &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> y &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> encabezaron los lanzamientos de la semana, mientras los análisis de NIP cubren &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a>.&lt;/p>
&lt;h2 id="noticias-principales">Noticias principales&lt;/h2>
&lt;h3 id="amethyst-fusiona-desktop-tor-secp256k1-en-c-llamadas-webrtc-y-multi-wallet-nwc">Amethyst fusiona desktop Tor, secp256k1 en C, llamadas WebRTC y multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó 29 PRs entre criptografía, networking, llamadas y carteras. Lo más importante fue &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a>, que añade soporte Tor de escritorio con diseño fail-closed, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a>, que introduce una implementación secp256k1 en C con bindings JNI para acelerar verificación Schnorr, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a>, que alinea su implementación MLS pura en Kotlin con RFC 9420 para mejorar la interoperabilidad de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>. Una serie de PRs de WebRTC añadió llamadas de voz y vídeo para &lt;a href="https://nostrcompass.org/es/topics/nip-ac/">NIP-AC&lt;/a>, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a> incorpora soporte multi-wallet para &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó una tanda grande de trabajo en Tor, secp256k1, llamadas WebRTC y &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, incluyendo soporte de llamadas para &lt;a href="https://nostrcompass.org/es/topics/nip-ac/">NIP-AC&lt;/a> y múltiples carteras &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lanzó notificaciones push nativas de Nostr para Android con soporte para &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-40/">NIP-40&lt;/a>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> añadió transporte Reticulum para eventos Nostr sobre LoRa. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a>, &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a>, &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> y &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> encabezaron los lanzamientos de la semana, mientras los análisis de NIP cubren &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a>.&lt;/p>
&lt;h2 id="noticias-principales">Noticias principales&lt;/h2>
&lt;h3 id="amethyst-fusiona-desktop-tor-secp256k1-en-c-llamadas-webrtc-y-multi-wallet-nwc">Amethyst fusiona desktop Tor, secp256k1 en C, llamadas WebRTC y multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionó 29 PRs entre criptografía, networking, llamadas y carteras. Lo más importante fue &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a>, que añade soporte Tor de escritorio con diseño fail-closed, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a>, que introduce una implementación secp256k1 en C con bindings JNI para acelerar verificación Schnorr, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a>, que alinea su implementación MLS pura en Kotlin con RFC 9420 para mejorar la interoperabilidad de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>. Una serie de PRs de WebRTC añadió llamadas de voz y vídeo para &lt;a href="https://nostrcompass.org/es/topics/nip-ac/">NIP-AC&lt;/a>, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a> incorpora soporte multi-wallet para &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>.&lt;/p>
&lt;h3 id="nstrfy-lanza-notificaciones-push-nativas-de-nostr-para-android">nstrfy lanza notificaciones push nativas de Nostr para Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> debutó como una app Android de notificaciones push basada en eventos kind &lt;code>7741&lt;/code> en relays Nostr. Soporta payloads en texto plano y cifrados con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, puede firmar vía &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> usando &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, importa listas de relays desde &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y respeta expiración de eventos de &lt;a href="https://nostrcompass.org/es/topics/nip-40/">NIP-40&lt;/a>. El proyecto complementario &lt;a href="https://github.com/vcavallo/nstrfy.sh">nstrfy.sh&lt;/a> ofrece un cliente bash y una versión web alojada.&lt;/p>
&lt;h3 id="hamstr-añade-reticulum-para-nostr-sobre-malla-lora">HAMSTR añade Reticulum para Nostr sobre malla LoRa&lt;/h3>
&lt;p>&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> añadió &lt;a href="https://reticulum.network/">Reticulum&lt;/a> como backend de transporte para enviar eventos Nostr a través de hardware LoRa sin infraestructura de internet. El proyecto mantiene también sus transportes AX.25 Packet Radio y VARA HF, y sigue soportando zaps de &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> para que los pagos Lightning offline aparezcan correctamente en clientes como Amethyst y Primal.&lt;/p>
&lt;h2 id="lanzamientos-de-esta-semana">Lanzamientos de esta semana&lt;/h2>
&lt;h3 id="bloom-v010-lanza-servidor-blossom-y-relay-autoalojados">Bloom v0.1.0 lanza servidor Blossom y relay autoalojados&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> lanzó &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a> como aplicación de escritorio que empaqueta un servidor de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> y un relay Nostr en una sola app Tauri. El release ofrece almacenamiento soberano de archivos con content addressing SHA-256, soporte de metadatos de archivo &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> y resolución de URIs &lt;code>blossom://&lt;/code>.&lt;/p>
&lt;h3 id="wavefunc-v010-y-v011-lanzan-radio-por-internet-sobre-nostr">WaveFunc v0.1.0 y v0.1.1 lanzan radio por internet sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> salió como directorio y reproductor de radio por internet basado en Nostr. Usa kinds personalizados para emisoras, favoritos, chat en vivo y comentarios, y añade una cartera &lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a> con nutzaps, junto con mejoras de escritorio como system tray, media keys y deep linking.&lt;/p>
&lt;h3 id="snort-lanza-v050-a-v053-con-endurecimiento-de-seguridad-y-mejora-de-rendimiento">Snort lanza v0.5.0 a v0.5.3 con endurecimiento de seguridad y mejora de rendimiento&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a> publicó tres releases centrados en una auditoría de seguridad, verificación real de firmas Schnorr, protección reforzada de &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, mejoras en cifrado de PIN y optimizaciones de rendimiento. También añadió visualización de invoices de pago requerido kind &lt;code>7000&lt;/code> para &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a> y rehízo el sistema de mensajería para evitar cuellos de botella.&lt;/p>
&lt;h3 id="primal-android-lanza-3021-y-rediseña-el-layout-del-feed">Primal Android lanza 3.0.21 y rediseña el layout del feed&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> publicó &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.21">v3.0.21&lt;/a> con correcciones de votos zap de encuestas, servicio de cartera y reconexión del signer remoto. Después llegaron siete PRs que unifican el layout principal, rediseñan las tarjetas del feed, mejoran tarjetas multimedia, añaden respuestas rápidas compactas y actualizan las app bars.&lt;/p>
&lt;h3 id="nostria-v3119-a-v3121-añaden-generación-local-de-imágenes">Nostria v3.1.19 a v3.1.21 añaden generación local de imágenes&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> añadió generación local de imágenes con Janus Pro y WebGPU, además de generación en la nube, chat multimodal y mejoras del editor y del sistema de diálogos. El proyecto sigue ampliando una superficie que en el release anterior ya había sumado signer local y aplicaciones móviles nativas.&lt;/p>
&lt;h3 id="tubestr-v103-lanza-mejoras-en-feed-y-estudio">TubeStr v1.0.3 lanza mejoras en feed y estudio&lt;/h3>
&lt;p>&lt;a href="https://github.com/Tubestr/tubestr-v2">TubeStr&lt;/a> añadió mejoras de feed y studio, renovó la experiencia de onboarding y corrigió una exportación de vídeo defectuosa. La app usa NDK y MDK para compartir medios cifrados entre familiares y planea integración futura con &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;h2 id="en-desarrollo">En desarrollo&lt;/h2>
&lt;h3 id="botburrow-inicia-desarrollo-como-plataforma-de-bots-de-marmot">Botburrow inicia desarrollo como plataforma de bots de Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> es una nueva plataforma autoalojada para gestionar bots con identidad Nostr propia dentro de chats grupales &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>. Cada bot se conecta a un daemon &lt;code>wnd&lt;/code>, puede entrar a grupos mediante mensajes Welcome y ejecutar scripts, triggers y tareas programadas.&lt;/p>
&lt;h3 id="nostr-archives-añade-relay-de-trending-feeds-y-resolución-de-entidades">Nostr Archives añade relay de trending feeds y resolución de entidades&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/nostrarchives-api">Nostr Archives&lt;/a> siguió expandiendo su plataforma de archivado y analítica con filtros de leaderboard, contadores de engagement, resolución directa de entidades Nostr desde rutas URL y una página de documentación de API. El servicio mantiene varios relays especializados, incluyendo búsqueda &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> y feeds de tendencias.&lt;/p>
&lt;h3 id="damus-corrige-la-timeline-de-favoritos">Damus corrige la timeline de favoritos&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> reescribió &lt;code>subscribe_to_favorites()&lt;/code> para filtrar in place, reconstruir la deduplicación y persistir la selección de pestaña, corrigiendo fallos en la timeline de favoritos.&lt;/p>
&lt;h3 id="nostur-añade-zaps-privados-y-visualización-de-emoji-personalizados">Nostur añade zaps privados y visualización de emoji personalizados&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> añadió soporte de zaps privados, visualización de emoji personalizados, renderizado corregido de &lt;code>.webp&lt;/code> animado y detección del formato de audio de mensajes de voz.&lt;/p>
&lt;h3 id="amber-lanza-v601-a-v603-con-backups-webdav-y-correcciones-de-reconexión-a-relays">Amber lanza v6.0.1 a v6.0.3 con backups WebDAV y correcciones de reconexión a relays&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> publicó tres releases con nuevas opciones de backup, retroceso exponencial para reconexión a relays, actualización de Quartz y correcciones para eventos y flujos de intents. Como firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, Amber sigue ganando robustez para clientes Android.&lt;/p>
&lt;h3 id="plektos-v060-se-rediseña-con-temas-ditto">Plektos v0.6.0 se rediseña con temas Ditto&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a>, construido sobre &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a>, añadió temas estilo Ditto, configuración de forma de avatar y una revisión visual amplia, además de atender hallazgos de una revisión completa de código.&lt;/p>
&lt;h3 id="shadow-añade-api-nostr-os-y-app-de-cartera-cashu">Shadow añade API Nostr OS y app de cartera Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/justinmoon/shadow">Shadow&lt;/a> siguió ampliando su runtime con una app de cartera Cashu, un reproductor de podcasts demo y APIs del sistema para Nostr y audio. También mejoró soporte Linux de escritorio con correcciones de fuentes y rutas XDG.&lt;/p>
&lt;h3 id="lief-corrige-login-con-amber-y-añade-zapstore">Lief corrige login con Amber y añade Zapstore&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/lief">Lief&lt;/a> solucionó un problema de login con &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, simplificó el flujo de signer nudge, actualizó nostrify y añadió integración con Zapstore.&lt;/p>
&lt;h3 id="espy-rehace-el-selector-de-color-y-corrige-login-con-amber">Espy rehace el selector de color y corrige login con Amber&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/espy">Espy&lt;/a> renovó su color picker con un arco curvo de saturación, corrigió fallos visuales del anillo de tono y añadió personajes ocultos, mientras compartía con Lief las correcciones de login con Amber y la integración con Zapstore.&lt;/p>
&lt;h3 id="jumble-añade-filtros-por-kind-por-feed-y-pestaña-de-artículos">Jumble añade filtros por kind por feed y pestaña de artículos&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a> añadió filtrado por kind para cada feed, una pestaña Articles, sincronización del estado leído de notificaciones, modo para ocultar avatares y una corrección de race condition al cambiar de cuenta.&lt;/p>
&lt;h3 id="primal-web-lanza-8-subidas-de-versión">Primal Web lanza 8 subidas de versión&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-web-app">Primal Web&lt;/a> publicó versiones 3.0.93 a 3.0.101 con foco en mejoras del chat de live streams, mención de límites, paginación de bookmarks, prevención de likes duplicados y correcciones del relay proxy.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificación">Trabajo de protocolo y especificación&lt;/h2>
&lt;h3 id="actualizaciones-de-nip">Actualizaciones de NIP&lt;/h3>
&lt;p>En el repositorio de NIPs se fusionó soporte para URLs de clonación &lt;code>nostr://&lt;/code> en &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a>, y siguieron abiertas varias propuestas alrededor de descriptores mínimos de gateways de pago, manifiestos de autodeclaración de relays, datos privados de localización transitoria, programas WASM de &lt;a href="https://nostrcompass.org/es/topics/nip-5c/">NIP-5C&lt;/a>, payloads grandes para &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> y la restricción de &lt;a href="https://nostrcompass.org/es/topics/nip-c7/">NIP-C7&lt;/a> a vistas de chat.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-29-grupos-basados-en-relay">NIP Deep Dive: NIP-29 (grupos basados en relay)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">NIP-29&lt;/a> define mensajería grupal en la que el relay actúa como autoridad para membresía y moderación. Los eventos de usuario llevan una etiqueta &lt;code>h&lt;/code> con el ID del grupo, las referencias &lt;code>previous&lt;/code> sirven como defensa frente a rebroadcasts fuera de contexto y los eventos de moderación de la serie &lt;code>9000&lt;/code> gestionan alta, baja, roles y metadatos. El modelo es adecuado para comunidades públicas o moderadas en las que el operador del relay puede leer el contenido, a diferencia de alternativas cifradas como &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> o &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-90-data-vending-machines">NIP Deep Dive: NIP-90 (Data Vending Machines)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/90.md">NIP-90&lt;/a> describe un mercado de cómputo bajo demanda sobre Nostr. Los clientes publican trabajos en el rango &lt;code>5000-5999&lt;/code>, los proveedores devuelven resultados en &lt;code>6000-6999&lt;/code> y pueden emitir feedback kind &lt;code>7000&lt;/code> como &lt;code>payment-required&lt;/code>, &lt;code>processing&lt;/code>, &lt;code>error&lt;/code> o &lt;code>success&lt;/code>. El diseño permite entradas por URL, texto, eventos o trabajos previos y deja flexible la lógica comercial para acomodar desde transformaciones baratas hasta tareas costosas de GPU.&lt;/p></content:encoded></item><item><title>Nostr Compass #17</title><link>https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#amethyst-lanza-arti-tor-y-fusiona-mls-y-marmot-puros-en-kotlin">v1.08.0&lt;/a> con integración de Arti Tor y una UI de Shorts rediseñada, mientras fusiona implementaciones puras en Kotlin de &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> en su librería &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nostur-v1270-a%c3%b1ade-grabaci%c3%b3n-de-v%c3%addeo-y-respuestas-privadas">v1.27.0&lt;/a> con grabación de vídeo, perfiles con GIF animados y respuestas privadas. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#shosho-v0150-lanza-shows-y-carrusel-vertical-de-v%c3%addeo">v0.15.0&lt;/a> con Shows (información personalizada de live stream conectada a OBS) y un carrusel vertical de vídeo al estilo TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nymchat-revierte-marmot-y-lanza-chats-grupales-nip-17-mejorados">revierte Marmot y lanza chats grupales NIP-17 mejorados&lt;/a> con claves efímeras rotativas. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nostr-vpn-lanza-soporte-de-exit-node-y-empaquetado-para-umbrel">soporte de exit node y empaquetado para Umbrel&lt;/a> a lo largo de seis releases. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> salta a &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#amber-v600-pre1-a%c3%b1ade-claves-de-firma-nip-46-por-conexi%c3%b3n">v6.0.0-pre1&lt;/a> con claves de firma &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> por conexión y actualizaciones dentro de la app mediante Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> alcanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-lanza-autoactualizaci%c3%b3n-con-zapstore">v0.10.0-beta&lt;/a> con autoactualización de APK vía Zapstore, y &lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> (Badges) recibe una &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#actualizaciones-de-nips">migración de kind&lt;/a>. Dos análisis en profundidad de NIP cubren &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#amethyst-lanza-arti-tor-y-fusiona-mls-y-marmot-puros-en-kotlin">v1.08.0&lt;/a> con integración de Arti Tor y una UI de Shorts rediseñada, mientras fusiona implementaciones puras en Kotlin de &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> en su librería &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nostur-v1270-a%c3%b1ade-grabaci%c3%b3n-de-v%c3%addeo-y-respuestas-privadas">v1.27.0&lt;/a> con grabación de vídeo, perfiles con GIF animados y respuestas privadas. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#shosho-v0150-lanza-shows-y-carrusel-vertical-de-v%c3%addeo">v0.15.0&lt;/a> con Shows (información personalizada de live stream conectada a OBS) y un carrusel vertical de vídeo al estilo TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nymchat-revierte-marmot-y-lanza-chats-grupales-nip-17-mejorados">revierte Marmot y lanza chats grupales NIP-17 mejorados&lt;/a> con claves efímeras rotativas. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#nostr-vpn-lanza-soporte-de-exit-node-y-empaquetado-para-umbrel">soporte de exit node y empaquetado para Umbrel&lt;/a> a lo largo de seis releases. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> salta a &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#amber-v600-pre1-a%c3%b1ade-claves-de-firma-nip-46-por-conexi%c3%b3n">v6.0.0-pre1&lt;/a> con claves de firma &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> por conexión y actualizaciones dentro de la app mediante Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> alcanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-lanza-autoactualizaci%c3%b3n-con-zapstore">v0.10.0-beta&lt;/a> con autoactualización de APK vía Zapstore, y &lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> (Badges) recibe una &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#actualizaciones-de-nips">migración de kind&lt;/a>. Dos análisis en profundidad de NIP cubren &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p>
&lt;h2 id="noticias-principales">Noticias principales&lt;/h2>
&lt;h3 id="amethyst-lanza-arti-tor-y-fusiona-mls-y-marmot-puros-en-kotlin">Amethyst lanza Arti Tor y fusiona MLS y Marmot puros en Kotlin&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android mantenido por vitorpamplona, lanzó cuatro releases desde &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a> hasta &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a> y fusionó un gran lote de trabajo aún no publicado en su librería &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a> (el módulo Nostr compartido de Kotlin Multiplatform). El release principal es v1.08.0 &amp;ldquo;Arti Tor&amp;rdquo;, que migra la conectividad Tor de la app desde la librería Tor basada en C a &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, la implementación en Rust del Tor Project. La migración aborda crashes aleatorios que ocurrían con los bindings anteriores de C Tor. Arti es el reemplazo a largo plazo del Tor Project para la base de código en C, escrito desde cero en Rust para seguridad de memoria y async I/O.&lt;/p>
&lt;p>El release v1.07.3 rediseñó la UI de Shorts, reemplazando el diseño paginado por feeds de borde a borde para imágenes, shorts y vídeos largos. El mismo release migró badges a kind &lt;code>10008&lt;/code> y bookmarks a kind &lt;code>10003&lt;/code>, alineándose con la migración de kind de &lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#actualizaciones-de-nips">fusionada esta semana&lt;/a>. v1.07.4 corrigió un problema en el manejo de secretos de Nostr Wallet Connect, y v1.07.5 corrigió un crash en la subida de imágenes.&lt;/p>
&lt;p>En main, pero todavía no en un release etiquetado, el equipo escribió una implementación completa en Kotlin tanto de &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> como del protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, reemplazando la necesidad de bindings nativos de bibliotecas C/Rust. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a> añade la capa central de mensajería grupal Marmot MLS, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a> añade la UI de chat grupal, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a> añade procesadores de mensajes entrantes y salientes con un gestor de suscripciones, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a> añade persistencia del estado de grupos MLS y gestión de rotación de KeyPackage, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a> añade una suite completa de tests de MLS con firma de GroupInfo mejorada, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a> añade seguimiento del estado de publicación de KeyPackage. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a> añade una implementación pura en Kotlin de secp256k1 para operaciones criptográficas de Nostr, reemplazando la dependencia de la biblioteca nativa en C. Combinado con la implementación MLS en Kotlin, &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a> puede ejecutar firma Nostr y mensajería grupal Marmot sin ningún binding nativo, lo que abre la puerta a objetivos de Kotlin Multiplatform, incluyendo iOS.&lt;/p>
&lt;p>El equipo también está construyendo soporte para &lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a> (P2P Voice and Video Calls): &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a> añade una suite completa de tests para la máquina de estados de llamadas NIP-AC, y &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a> evita que ofertas de llamada obsoletas se disparen de nuevo después de reiniciar la app.&lt;/p>
&lt;h3 id="nostur-v1270-añade-grabación-de-vídeo-y-respuestas-privadas">Nostur v1.27.0 añade grabación de vídeo y respuestas privadas&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, el cliente Nostr para iOS, lanzó &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a> el 2 de abril. El release añade grabación de vídeo dentro de la app con recorte antes de subir, de modo que los usuarios puedan capturar clips cortos, ajustarlos a la duración deseada y publicarlos sin salir del cliente. El soporte para GIF animados se extiende a fotos de perfil y banner, y también se añadió renderizado de WebP animado. Una nueva integración con Shortcuts permite a los usuarios enviar publicaciones de Nostr desde automatizaciones de Apple Shortcuts. El release también añade respuestas privadas y corrige problemas de compatibilidad de DMs que afectaban la entrega de mensajes entre Nostur y otros clientes.&lt;/p>
&lt;h3 id="shosho-v0150-lanza-shows-y-carrusel-vertical-de-vídeo">Shosho v0.15.0 lanza Shows y carrusel vertical de vídeo&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, la app de live streaming sobre Nostr, lanzó &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a> y &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a> el 7 de abril. La función principal es Shows: los streamers pueden configurar información personalizada del show antes de salir en vivo y conectar su show a OBS o a cualquier codificador externo. Esto separa los metadatos de &amp;ldquo;qué estoy transmitiendo&amp;rdquo; del acto de entrar en directo, de modo que los streamers puedan preparar títulos, descripciones y productos antes de empezar a emitir. El mismo release añade un carrusel vertical de vídeo al estilo TikTok para deslizar entre lives, clips y replays en un feed a pantalla completa, y Quick Add para publicar clips de vídeo y añadir productos directamente desde una página de perfil. v0.15.1 corrige un bug por el que el teclado ocultaba el campo de entrada del chat del live stream.&lt;/p>
&lt;h2 id="lanzamientos-de-esta-semana">Lanzamientos de esta semana&lt;/h2>
&lt;h3 id="notedeck-v0100-beta-lanza-autoactualización-con-zapstore">Notedeck v0.10.0-beta lanza autoactualización con Zapstore&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente de escritorio y móvil del equipo Damus, lanzó &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.1">v0.10.0-beta.1&lt;/a> y &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.2">v0.10.0-beta.2&lt;/a> como prereleases de prueba para autoactualización de APK. &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> añade autoactualización de APK a través del actualizador Nostr/Zapstore en Android, construyendo sobre el &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-18-newsletter/#notedeck-moves-release-discovery-onto-nostr">trabajo de descubrimiento de actualizaciones nativo de Nostr cubierto en Newsletter #14&lt;/a>. El flujo de actualización descubre nuevos releases a través de eventos Nostr publicados en relays, luego descarga el APK desde donde el desarrollador lo aloje (GitHub releases, Blossom CDN u otras fuentes), verifica el hash SHA-256 contra el evento Nostr firmado y lo instala. &lt;a href="https://github.com/damus-io/notedeck/pull/1438">PR #1438&lt;/a> corrige un bug en la pantalla de bienvenida donde los botones Login y CreateAccount volvían inmediatamente hacia atrás, y &lt;a href="https://github.com/damus-io/notedeck/pull/1424">PR #1424&lt;/a> corrige desbordamiento de texto en la vista de sesión de Agentium AI.&lt;/p>
&lt;h3 id="amber-v600-pre1-añade-claves-de-firma-nip-46-por-conexión">Amber v6.0.0-pre1 añade claves de firma NIP-46 por conexión&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), lanzó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.0-pre1">v6.0.0-pre1&lt;/a> el 4 de abril. El cambio más importante son las claves de firma por conexión para el protocolo bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing). En lugar de usar un único keypair para todas las conexiones bunker, Amber ahora genera una clave distinta para cada cliente conectado. Si una conexión de cliente se ve comprometida, el atacante no puede suplantar al firmante frente a otros clientes.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/pull/377">PR #377&lt;/a> añade comprobación e instalación de actualizaciones dentro de la app vía Zapstore, uniéndose a &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-lanza-autoactualizaci%c3%b3n-con-zapstore">Notedeck&lt;/a> en la adopción de distribución de apps nativa de Nostr. &lt;a href="https://github.com/greenart7c3/Amber/pull/375">PR #375&lt;/a> maneja los fallos de AndroidKeyStore de forma elegante mostrando una advertencia a los usuarios en lugar de crashear, y &lt;a href="https://github.com/greenart7c3/Amber/pull/371">PR #371&lt;/a> añade limpieza de base de datos con límites de tamaño y truncado de contenido para evitar crecimiento ilimitado del almacenamiento. El prerelease también incluye la whitelist de auth de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> y el login con frase mnemónica de recuperación del &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">ciclo v5.0.x cubierto la semana pasada&lt;/a>.&lt;/p>
&lt;h3 id="nostria-lanza-app-móvil-nativa">Nostria lanza app móvil nativa&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente Nostr multiplataforma mantenido por SondreB, lanzó una app móvil nativa para Android con ocho releases desde &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.11">v3.1.11&lt;/a> hasta &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.18">v3.1.18&lt;/a>. La capacidad nueva más importante es el soporte nativo de firmante local para firmantes como &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> y Aegis. También hay &lt;a href="https://www.nostria.app/download">instaladores de escritorio&lt;/a> para Linux, macOS y Windows. &lt;a href="https://github.com/nostria-app/nostria/pull/610">PR #610&lt;/a> reduce la presión de memoria del feed con límites adaptativos de runtime y limpieza de URLs de preview. v3.1.14 corrige la integración con Brainstorm, un proveedor de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a>. v3.1.15 se centra en mejoras de música. La nueva app Android está disponible en &lt;a href="https://zapstore.dev/apps/app.nostria">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="divine-108-lanza-subidas-reanudables-y-dms">diVine 1.0.8 lanza subidas reanudables y DMs&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de vídeo de formato corto, lanzó &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.8">1.0.8&lt;/a> con 87 PRs fusionados. Las subidas reanudables permiten a los creadores retomar subidas interrumpidas bloque por bloque en lugar de reiniciar desde cero en una conexión inestable. El release añade ajustes de calidad y bitrate de vídeo, doble toque para dar like y mejoras en DMs. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2722">PR #2722&lt;/a> añade un plugin de cámara para macOS para captura de vídeo de escritorio, y &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2820">PR #2820&lt;/a> migra el sistema de notificaciones a una arquitectura BLoC con enriquecimiento y agrupación. El equipo también reemplazó stickers y arte de categorías generados por AI con SVGs de OpenMoji (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2844">PR #2844&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2842">PR #2842&lt;/a>).&lt;/p>
&lt;h3 id="manent-v130-añade-difuminado-de-notas-sensibles-y-auth-nip-42">Manent v1.3.0 añade difuminado de notas sensibles y auth NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, la app privada de notas cifradas y almacenamiento de archivos, lanzó &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.3.0">v1.3.0&lt;/a> el 2 de abril. Los usuarios ahora pueden marcar notas como sensibles para difuminarlas en la vista de lista, manteniendo el contenido privado oculto durante el desplazamiento casual. El release también añade soporte para &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays), permitiendo a Manent autenticarse en relays que lo exigen antes de aceptar eventos. Manent almacena todos los datos cifrados en relays Nostr usando el keypair del usuario, así que el soporte NIP-42 amplía el conjunto de relays que puede usar para almacenamiento.&lt;/p>
&lt;h3 id="wisp-v0170-a-v0173-añaden-zaps-en-live-streams-y-backup-de-billetera">Wisp v0.17.0 a v0.17.3 añaden zaps en live streams y backup de billetera&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, el cliente Nostr para Android, lanzó seis releases desde &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.2-beta">v0.16.2-beta&lt;/a> hasta &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.3-beta">v0.17.3-beta&lt;/a> con 44 PRs fusionados. El release v0.17.0 añade avisos de seguridad para backup de billetera y mejoras de UX para zaps. &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.1-beta">v0.17.1&lt;/a> añade visibilidad del chat de live stream entre plataformas y funcionalidad de zaps en live streams. &lt;a href="https://github.com/barrydeen/wisp/pull/423">PR #423&lt;/a> añade auto-búsqueda de perfiles, una animación de zap exitoso y mejoras en el estado de usuario. &lt;a href="https://github.com/barrydeen/wisp/pull/426">PR #426&lt;/a> corrige un crash por falta de memoria en &lt;code>computeId&lt;/code> para eventos con listas grandes de tags. Los releases v0.16.x añadieron autocompletado de shortcode de emoji, mejoras de UI para chats grupales y filtrado de usuarios bloqueados en todas las rutas de notificaciones.&lt;/p>
&lt;h3 id="mostro-lanza-deep-links-tipos-de-cambio-de-nostr-y-una-corrección-de-pagos-duplicados">Mostro lanza deep links, tipos de cambio de Nostr y una corrección de pagos duplicados&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el exchange peer-to-peer de Bitcoin construido sobre Nostr, recibió actualizaciones tanto en su daemon de servidor como en su cliente móvil esta semana. Del lado del servidor, &lt;a href="https://github.com/MostroP2P/mostro/pull/692">PR #692&lt;/a> evita que escrituras obsoletas de órdenes provoquen pagos duplicados, un bug que podía hacer que un vendedor recibiera el pago dos veces por la misma operación. &lt;a href="https://github.com/MostroP2P/mostro/pull/693">PR #693&lt;/a> usa actualizaciones dirigidas para escrituras de dev_fee en lugar de sobrescribir la orden completa.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, el cliente Flutter, lanzó &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.3">v1.2.3&lt;/a> el 3 de abril. El release maneja deep links de distintas instancias de Mostro, de modo que los usuarios puedan tocar enlaces que enruten al servidor de exchange correcto. &lt;a href="https://github.com/MostroP2P/mobile/pull/498">PR #498&lt;/a> detecta DMs de admin y disputa en el pipeline de notificaciones en segundo plano, y la app ahora obtiene tipos de cambio desde Nostr con fallback HTTP/cache. &lt;a href="https://github.com/MostroP2P/mobile/pull/560">PR #560&lt;/a> corrige un bug de bloqueo en la conexión al relay que impedía a la app alcanzar relays bajo ciertas condiciones de red.&lt;/p>
&lt;h3 id="unfiltered-v1012-añade-hashtags-y-comentarios">Unfiltered v1.0.12 añade hashtags y comentarios&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, un cliente Nostr enfocado en contenido visual, lanzó &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.12">v1.0.12&lt;/a>. &lt;a href="https://github.com/dmcarrington/unfiltered/pull/69">PR #69&lt;/a> añade soporte para hashtags y &lt;a href="https://github.com/dmcarrington/unfiltered/pull/72">PR #72&lt;/a> añade la capacidad de escribir y mostrar comentarios en publicaciones. &lt;a href="https://github.com/dmcarrington/unfiltered/pull/71">PR #71&lt;/a> corrige problemas de navegación con múltiples imágenes por publicación.&lt;/p>
&lt;h3 id="primal-android-lanza-uso-compartido-de-billetera-entre-múltiples-cuentas-y-auto-reconexión-del-firmante-remoto">Primal Android lanza uso compartido de billetera entre múltiples cuentas y auto-reconexión del firmante remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, el cliente Nostr para Android, lanzó un release el 7 de abril. La actualización añade uso compartido de billetera entre múltiples cuentas y un menú overflow con eliminación de billetera en Dev Tools. El firmante remoto ahora se reconecta automáticamente cuando cae la conexión, y el servicio de billetera recibió su propia lógica de auto-reconexión. Entre las correcciones están que los votos zap de encuestas ya no aparecen como Top Zaps, la prevención de crashes por opciones vacías en encuestas, el ocultamiento del balance de billetera cuando no existe ninguna y el mapeo de tipos WalletException a códigos de error en respuestas NWC.&lt;/p>
&lt;h3 id="titan-v010-lanza-navegador-nativo-nsite-con-registro-de-nombres-en-bitcoin">Titan v0.1.0 lanza navegador nativo nsite:// con registro de nombres en Bitcoin&lt;/h3>
&lt;p>&lt;a href="https://github.com/btcjt/titan">Titan&lt;/a>, un navegador nativo de escritorio para la web de Nostr, lanzó &lt;a href="https://github.com/btcjt/titan/releases/tag/v0.1.0">v0.1.0&lt;/a> el 7 de abril. Titan resuelve URLs &lt;code>nsite://&lt;/code> buscando nombres legibles por humanos registrados en Bitcoin, consultando relays Nostr para los eventos de contenido del sitio y renderizando páginas obtenidas desde servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>. El resultado es una experiencia de navegación web sin DNS, sin certificados TLS y sin proveedores de hosting. Los nombres se registran a través de una &lt;a href="https://npub1hmq6xuqnplk5lw0h3700cujmx5gymqn5wrn42u6432r6ntzumezqc3marw.nsite.lol/register">interfaz web&lt;/a> vinculada a transacciones de Bitcoin. El release inicial se distribuye como &lt;code>.dmg&lt;/code> de macOS (ARM, con soporte Rosetta 2 para Intel) e incluye soporte para entorno de desarrollo Nix.&lt;/p>
&lt;h3 id="bikel-v150-lanza-servicio-nativo-en-primer-plano-para-teléfonos-de-googled">Bikel v1.5.0 lanza servicio nativo en primer plano para teléfonos de-Googled&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mnpezz/bikel">Bikel&lt;/a>, un tracker de ciclismo descentralizado que convierte recorridos en datos de infraestructura pública usando Nostr, lanzó &lt;a href="https://github.com/Mnpezz/bikel/releases/tag/v1.5.0">v1.5.0&lt;/a> el 4 de abril. El release migra desde Expo TaskManager dependiente de GMS a un servicio nativo personalizado en primer plano, asegurando seguimiento confiable de recorridos en segundo plano en LineageOS, GrapheneOS y otras variantes Android de-Googled. El Bikel Bot ganó una arquitectura de doble bolsillo con recolección autónoma de eCash mediante Cashu nutzaps. v1.4.3 y v1.4.2 corrigen la sincronización del tracking en segundo plano para entornos Android no estándar, y la app añade toggles para puntos de mapa de aparcabicis OSM.&lt;/p>
&lt;h3 id="sprout-añade-soporte-para-nip-01-nip-23-y-nip-33">Sprout añade soporte para NIP-01, NIP-23 y NIP-33&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, una plataforma de comunicación de Block con relay Nostr integrado, lanzó &lt;a href="https://github.com/block/sprout/releases/tag/desktop/v0.1.0-rc7">desktop/v0.1.0-rc7&lt;/a> el 6 de abril. Esta semana el equipo añadió soporte para artículos kind &lt;code>30023&lt;/code> de &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content), eventos reemplazables parametrizados de &lt;a href="https://nostrcompass.org/en/topics/nip-33/">NIP-33&lt;/a> con reemplazo claveado por tag &lt;code>d&lt;/code>, y notas de texto kind &lt;code>1&lt;/code> y listas de follows kind &lt;code>3&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a>/&lt;a href="https://nostrcompass.org/en/topics/nip-02/">NIP-02&lt;/a>. El release también añade un sistema adaptativo de temas IDE con 54 temas, mejoras de UX para historial de workflows y ejecuciones de agentes, y una limpieza de la barra lateral de miembros.&lt;/p>
&lt;h3 id="mesh-llm-v0560-lanza-protocolo-de-configuración-distribuida">mesh-llm v0.56.0 lanza protocolo de configuración distribuida&lt;/h3>
&lt;p>&lt;a href="https://github.com/michaelneale/mesh-llm">mesh-llm&lt;/a>, un sistema distribuido de inferencia LLM que usa keypairs Nostr para identidad de nodo, lanzó &lt;a href="https://github.com/michaelneale/mesh-llm/releases/tag/v0.56.0">v0.56.0&lt;/a> el 7 de abril. El release añade un protocolo de configuración distribuida con semántica de ownership, cuantización asimétrica de KV cache (claves Q8_0 con valores Q4) para reducir el uso de memoria, almacenamiento en keychain del sistema para keystores de identidad, streaming fluido de chat con cola de mensajes, y correcciones para el layout fullscreen y el particionado de KV cache con flash attention.&lt;/p>
&lt;h3 id="nostr-vpn-lanza-soporte-de-exit-node-y-empaquetado-para-umbrel">Nostr VPN lanza soporte de exit node y empaquetado para Umbrel&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>, una VPN peer-to-peer que usa relays Nostr para señalización y WireGuard para túneles cifrados, lanzó seis releases desde &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.0">v0.3.0&lt;/a> hasta &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.6">v0.3.6&lt;/a> esta semana. El ciclo v0.3.x añade soporte de exit node en Windows y macOS, permitiendo que peers enruten tráfico de internet a través de otros nodos de la red. La propagación de invites y aliases ahora se sincroniza sobre Nostr, así que los usuarios pueden compartir acceso a la red sin coordinación fuera de banda. Los releases añaden empaquetado para Umbrel en despliegues autoalojados, NAT punch-through usando endpoints públicos recordados, limpieza automática de exit nodes obsoletos y una especificación de protocolo publicada. El proyecto también estabilizó el manejo de rutas en macOS con default routes autorreparables y reparación de underlay, y añadió una build Android vía Tauri. Hay builds disponibles para macOS (Apple Silicon e Intel), Linux (AppImage y .deb), Windows y Android.&lt;/p>
&lt;h3 id="nymchat-revierte-marmot-y-lanza-chats-grupales-nip-17-mejorados">Nymchat revierte Marmot y lanza chats grupales NIP-17 mejorados&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>, el cliente de chat con capacidad MLS, lanzó 14 releases desde &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/3.56.261">v3.56.261&lt;/a> hasta &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.274">v3.58.274&lt;/a>. El cambio más significativo es un giro de protocolo: &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.57.261">v3.57.261&lt;/a> añadió chats grupales Marmot MLS, pero &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.268">v3.58.268&lt;/a> revirtió a &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> porque el soporte multidispositivo de Marmot aún no está terminado, lo que causaba problemas con la sincronización del estado del chat grupal entre dispositivos. v3.58.271 introduce chats grupales NIP-17 mejorados con claves efímeras rotativas para todos los mensajes, diseñadas para prevenir ataques de timing y correlación. La semana también trajo un sistema de amigos con control granular de ajustes (&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.262">v3.58.262&lt;/a>), sincronización de mensajes de chat grupal MLS en ajustes cifrados de la app, y múltiples correcciones de conectividad con relays.&lt;/p>
&lt;h3 id="nak-v0195-añade-blossom-multi-servidor-y-publicación-outbox">nak v0.19.5 añade Blossom multi-servidor y publicación outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, el toolkit de línea de comandos Nostr de fiatjaf, lanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.5">v0.19.5&lt;/a>. El comando &lt;code>blossom&lt;/code> ahora acepta múltiples flags &lt;code>--server&lt;/code> para subir a varios servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> en una sola llamada. Un nuevo comando &lt;code>key&lt;/code> amplía claves parciales rellenando con ceros por la izquierda. El comando &lt;code>event&lt;/code> gana un flag &lt;code>--outbox&lt;/code> para publicar eventos a través del modelo outbox, y &lt;code>fetch&lt;/code> ahora sale con código de error cuando no se devuelve ningún evento.&lt;/p>
&lt;h2 id="en-desarrollo">En desarrollo&lt;/h2>
&lt;h3 id="white-noise-añade-previews-con-thumbhash-y-puente-de-registro-push">White Noise añade previews con thumbhash y puente de registro push&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, el mensajero privado construido sobre el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, fusionó cinco PRs. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/549">PR #549&lt;/a> reemplaza previews de imagen con blurhash por thumbhash, un algoritmo más nuevo que produce imágenes placeholder más nítidas con un payload más pequeño (normalmente menos de 30 bytes frente a los ~50-100 bytes de blurhash) mientras preserva la proporción y distribución de color de la imagen original. Blurhash se mantiene como fallback para contenido antiguo. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/548">PR #548&lt;/a> actualiza whitenoise-rs y añade el puente de registro push &lt;a href="https://nostrcompass.org/es/topics/mip-05/">MIP-05&lt;/a>, conectando el &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">trabajo de especificación de notificaciones push de la semana pasada&lt;/a> con el cliente. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/493">PR #493&lt;/a> añade paginación basada en cursor para mensajes de chat, reemplazando la estrategia anterior de carga por un enfoque guiado por scroll.&lt;/p>
&lt;h3 id="route96-añade-configuración-dinámica-de-etiquetas-y-limpieza-de-zero-egress">Route96 añade configuración dinámica de etiquetas y limpieza de zero-egress&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, el servidor de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> de v0l, fusionó tres PRs. &lt;a href="https://github.com/v0l/route96/pull/80">PR #80&lt;/a> añade configuración dinámica del modelo de etiquetas vía la API de admin, permitiendo a los operadores cambiar modelos de clasificación de contenido sin reiniciar el servidor. &lt;a href="https://github.com/v0l/route96/pull/82">PR #82&lt;/a> añade campos de configuración de etiquetas a la UI de admin. &lt;a href="https://github.com/v0l/route96/pull/79">PR #79&lt;/a> añade una política de limpieza de archivos zero-egress que elimina automáticamente archivos que nunca se han descargado, manteniendo bajos los costes de almacenamiento para los operadores.&lt;/p>
&lt;h3 id="snort-lanza-endurecimiento-de-seguridad-e-invoices-de-pago-para-dvm">Snort lanza endurecimiento de seguridad e invoices de pago para DVM&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, el cliente web, lanzó dos releases esta semana con una auditoría de seguridad integral. Las correcciones incluyen verificación de firma Schnorr, protección frente a falsificación de mensajes de relay &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (evitando que atacantes inyecten solicitudes de firma a través de relays comprometidos), mejoras en cifrado de PIN y eliminación de la confianza en delegación NIP-26. Las ganancias de rendimiento vienen de verificación Schnorr por lotes en WASM, rutas con lazy loading, traducciones precompiladas y eliminación de verificación doble por evento. &lt;a href="https://github.com/v0l/snort/pull/618">PR #618&lt;/a> añade la visualización de invoice requerido por pago para kind &lt;code>7000&lt;/code> de &lt;a href="https://nostrcompass.org/en/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), de modo que cuando un DVM responde con un requisito de pago, Snort renderiza el invoice Lightning directamente en el feed.&lt;/p>
&lt;h3 id="damus-mejora-la-compactación-de-lmdb">Damus mejora la compactación de LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, el cliente iOS, fusionó &lt;a href="https://github.com/damus-io/damus/pull/3719">PR #3719&lt;/a> que añade compactación automática programada de LMDB, evitando que la base de datos local crezca sin límite con el tiempo. &lt;a href="https://github.com/damus-io/damus/pull/3663">PR #3663&lt;/a> mejora BlurOverlayView para que parezca protector en lugar de roto.&lt;/p>
&lt;h3 id="captains-log-añade-indexación-de-tags-y-sincronización-de-notas">Captain&amp;rsquo;s Log añade indexación de tags y sincronización de notas&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/captains-log">Captain&amp;rsquo;s Log&lt;/a> (Comet), la herramienta de escritura long-form nativa de Nostr de Nodetec, fusionó cuatro PRs esta semana. &lt;a href="https://github.com/nodetec/captains-log/pull/156">PR #156&lt;/a> añade indexación de tags y soporte de sincronización entre notas, &lt;a href="https://github.com/nodetec/captains-log/pull/157">PR #157&lt;/a> refactoriza la sincronización de notas y el manejo de tags, y &lt;a href="https://github.com/nodetec/captains-log/pull/159">PR #159&lt;/a> corrige la sincronización de notas enviadas a la papelera para que las notas eliminadas permanezcan eliminadas entre dispositivos.&lt;/p>
&lt;h3 id="relatr-v02x-rediseña-su-sistema-de-plugins-con-marketplace-nativo-de-nostr-para-validadores">Relatr v0.2.x rediseña su sistema de plugins con marketplace nativo de Nostr para validadores&lt;/h3>
&lt;p>&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>, un motor de puntuación de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a> que calcula rankings de confianza a partir de la distancia en el grafo social y validadores configurables, lanzó la familia v0.2.x con un rediseño completo del sistema de plugins. Los validadores ahora se escriben en Elo, un lenguaje portable de expresiones funcionales bifurcado para soportar capacidades de múltiples pasos orquestadas por el host (consultas Nostr, búsquedas en el grafo social, resolución NIP-05). Los plugins se publican como eventos Nostr kind &lt;code>765&lt;/code>, haciendo que la distribución sea nativa de la red de relays. Un nuevo &lt;a href="https://relatr.net">plugin marketplace&lt;/a> permite a operadores descubrir, instalar y ponderar validadores desde el navegador, con un CLI (&lt;code>relo&lt;/code>) para autoría y publicación local. La arquitectura está aislada: los plugins solo pueden invocar capacidades que el host proporcione explícitamente, así que un validador malicioso no puede escapar de su ámbito definido. Las instancias de Relatr ahora pueden gestionarse desde el sitio web, con visibilidad completa de qué plugins componen el algoritmo de puntuación y sus pesos individuales.&lt;/p>
&lt;h3 id="shopstr-mejora-la-navegación-móvil-y-el-control-de-acceso">Shopstr mejora la navegación móvil y el control de acceso&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, el marketplace nativo de Nostr para comprar y vender con Bitcoin, empujó 158 commits en su app principal y el proyecto complementario &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> esta semana. Las correcciones incluyen mejoras en el layout de comunidades en móvil, comportamiento de cerrar menú al navegar y autocierre de dropdowns. Las rutas protegidas ya no pueden abrirse vía URL directa sin iniciar sesión, y la lógica de coincidencia de slugs ahora maneja correctamente múltiples coincidencias exactas.&lt;/p>
&lt;h3 id="pollerama-añade-notificaciones-búsqueda-de-películas-y-ui-de-valoración">Pollerama añade notificaciones, búsqueda de películas y UI de valoración&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>, una app de encuestas, sondeos y ratings sociales construida sobre Nostr, añadió notificaciones de hilos, una función de búsqueda de películas y una revisión de la UI de valoración. El release también corrige problemas de carga del feed y actualiza versiones de dependencias.&lt;/p>
&lt;h3 id="purser-construye-daemon-de-pagos-nativo-de-nostr-con-cifrado-marmot">Purser construye daemon de pagos nativo de Nostr con cifrado Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/EthnTuttle/purser">Purser&lt;/a>, un daemon de pagos nativo de Nostr diseñado como reemplazo de Zaprite, fusionó nueve PRs esta semana construyendo su arquitectura central. El proyecto usa MLS de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> vía MDK para mensajería cifrada entre comerciante y cliente, con Strike y Square como proveedores de pagos. Esta semana aterrizaron carga de config y catálogo, validación de esquema de mensajes, la capa de comunicación MDK, implementaciones de proveedores Strike y Square, un motor de polling, limitación anti-spam, persistencia de pagos pendientes y el pipeline de procesamiento de órdenes. Los 99 tests ahora ejercitan operaciones MLS reales de mdk-core después de que el equipo eliminara mock MLS en favor de cifrado real en modo local.&lt;/p>
&lt;h3 id="vector-refactoriza-adjuntos-de-dms-y-añade-edición-de-perfil">Vector refactoriza adjuntos de DMs y añade edición de perfil&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, el mensajero Nostr centrado en privacidad construido con Tauri, fusionó &lt;a href="https://github.com/VectorPrivacy/Vector/pull/55">PR #55&lt;/a> refactorizando el frontend. El descifrado y guardado de adjuntos de DM se movió a la librería vector-core, y la app ahora soporta edición de perfil. La flag de cancelación de subida quedó correctamente conectada a través de TauriSendCallback, y se limpiaron callbacks de preview de adjuntos sin uso.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificación">Trabajo de protocolo y especificación&lt;/h2>
&lt;h3 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h3>
&lt;p>Cambios recientes en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> (Badges): Profile Badges pasan a kind 10008, Badge Sets a kind 30008&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Migra Profile Badges desde kind &lt;code>30008&lt;/code> a kind &lt;code>10008&lt;/code> (un evento reemplazable, uno por pubkey) e introduce kind &lt;code>30008&lt;/code> para Badge Sets. Antes, Profile Badges usaba el mismo kind (&lt;code>30008&lt;/code>) que las definiciones de Badge, lo que los convertía en eventos reemplazables parametrizados claveados por un tag &lt;code>d&lt;/code>. El nuevo kind &lt;code>10008&lt;/code> es un evento reemplazable simple: uno por pubkey, sin necesidad de tag &lt;code>d&lt;/code>. Los clientes consultan un único evento reemplazable por usuario en lugar de escanear eventos reemplazables parametrizados. Amethyst v1.07.3 ya distribuye esta migración.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> (Git Stuff): Añadir listas de follows relacionadas con git&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2130">PR #2130&lt;/a>): Añade convenciones de listas de follows para seguimiento de repositorios y issues de NIP-34. Los usuarios publican follow sets kind &lt;code>30000&lt;/code> con tags &lt;code>d&lt;/code> como &lt;code>git-repos&lt;/code> o &lt;code>git-issues&lt;/code> que contienen referencias de tag &lt;code>a&lt;/code> a repositorios (kind &lt;code>30617&lt;/code>) que quieren seguir. Los clientes pueden suscribirse a estos follow sets para mostrar actividad de repositorios en el feed de un usuario, de forma similar a como funcionan las listas de contactos kind &lt;code>3&lt;/code> para pubkeys.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs abiertos y discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AC: P2P Voice and Video Calls over WebRTC&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2301">PR #2301&lt;/a>): Amplía el NIP-100 original (implementado por 0xChat) con tres cambios: migración a cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> envuelto en gift wraps &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> para eliminar fugas de metadatos, un flujo WebRTC especificado para la configuración de llamadas de voz y vídeo (offer, answer, candidatos ICE), y un modelo mesh de llamadas grupales donde cada peer establece una conexión WebRTC directa con todos los demás peers. La especificación no es retrocompatible con NIP-100. Amethyst ya está construyendo contra ella, con una suite de tests para la máquina de estados de llamadas (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>) y manejo de ofertas de llamada obsoletas (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>) aterrizando esta semana.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-340/">NIP-340&lt;/a> (FROST Quorum)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2299">PR #2299&lt;/a>): Propone convenciones para firma threshold de &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) en Nostr. FROST permite que un grupo de firmantes controle colectivamente una identidad Nostr donde cualquier subconjunto t-de-n puede firmar eventos sin reconstruir la clave privada completa. El NIP define cómo coordinar rondas de firma, distribuir key shares y publicar eventos firmados de forma threshold, construyendo sobre el trabajo del firmante Igloo del &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#igloo-signer-11">proyecto FROSTR&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5d/">NIP-5D&lt;/a> (Nostr Web Applets)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>): Define un protocolo &lt;code>postMessage&lt;/code> para aplicaciones web aisladas (&amp;ldquo;napplets&amp;rdquo;) que corren en iframes y se comunican con una aplicación anfitriona (&amp;ldquo;shell&amp;rdquo;). El shell proporciona a la napplet firma Nostr, acceso a relay y contexto de usuario mediante una API estructurada de mensajes, mientras el sandbox del iframe evita acceso directo a claves. Esto extiende el modelo de hosting de sitios web estáticos de &lt;a href="https://nostrcompass.org/en/topics/nip-5a/">NIP-5A&lt;/a> hacia aplicaciones interactivas que pueden leer y escribir eventos Nostr. El NIP está en desarrollo activo con una implementación de runtime funcional.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5c/">NIP-5C&lt;/a> (Scrolls)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): Renombrado desde la propuesta anterior NIP-A5. Define convenciones para publicar y descubrir programas WebAssembly en Nostr. Los binarios WASM se almacenan como eventos Nostr, y los clientes pueden descargarlos y ejecutarlos en un runtime aislado. Una &lt;a href="https://nprogram.netlify.app/">demo app&lt;/a> muestra scrolls corriendo en el navegador, con programas de ejemplo publicados como eventos Nostr que cualquier cliente puede obtener y ejecutar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions): Aclaraciones&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>): Ajusta el lenguaje de la especificación alrededor de múltiples claves y relays por proveedor de servicio, aclarando cómo deberían manejar los clientes afirmaciones de proveedores que operan a través de varios pubkeys o endpoints de relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-24/">NIP-24&lt;/a> (Extra Metadata Fields): &lt;code>published_at&lt;/code> para eventos reemplazables&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2300">PR #2300&lt;/a>): Generaliza el tag &lt;code>published_at&lt;/code> de &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content) a todos los eventos reemplazables y direccionables. El tag es solo de visualización: si &lt;code>published_at&lt;/code> es igual a &lt;code>created_at&lt;/code>, los clientes muestran el evento como &amp;ldquo;created&amp;rdquo; en ese momento; si difieren (porque el evento fue actualizado), los clientes pueden mostrar &amp;ldquo;updated&amp;rdquo; en su lugar. Esto permite que perfiles kind &lt;code>0&lt;/code> muestren fechas de &amp;ldquo;joined at&amp;rdquo; y que otros eventos reemplazables preserven su marca de tiempo de publicación original a través de actualizaciones. Una propuesta complementaria de &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2302">PR #2302&lt;/a>) añade el mismo tag a eventos de listas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap): kind efímero de gift wrap&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>): Añade kind &lt;code>21059&lt;/code> como contraparte efímera del gift wrap kind &lt;code>1059&lt;/code> existente. Los eventos efímeros (kinds &lt;code>20000&lt;/code>-&lt;code>29999&lt;/code>) siguen la semántica de &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a>: no se espera que los relays los almacenen y pueden descartarlos tras la entrega. Esto permite a las aplicaciones enviar mensajes envueltos en gift wrap que desaparecen de los relays una vez entregados, reduciendo requisitos de almacenamiento para mensajería de alto volumen mientras conservan el mismo modelo de cifrado de tres capas que los DMs regulares de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="opensats-anuncia-la-decimosexta-ola-de-grants-de-nostr">OpenSats anuncia la decimosexta ola de grants de Nostr&lt;/h3>
&lt;p>&lt;a href="https://opensats.org">OpenSats&lt;/a> anunció su &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">decimosexta ola de grants de Nostr&lt;/a> el 8 de abril, financiando cuatro grants por primera vez y una renovación. &lt;a href="https://github.com/vitorpamplona/amethyst/tree/main/desktopApp">Amethyst Desktop&lt;/a> recibe financiación para que el colaborador Robert Nagy construya una app de escritorio independiente sobre los módulos &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a> y Commons, llevando el conjunto de funciones del cliente Android a interfaces guiadas por ratón con conexiones persistentes a relays. &lt;a href="https://github.com/nogringo/nostr-mail">Nostr Mail&lt;/a> recibe financiación para construir un sistema completo de email sobre Nostr usando eventos kind &lt;code>1301&lt;/code> envueltos en gift wraps &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>, con un cliente Flutter y servidores puente SMTP para compatibilidad con Gmail/Outlook. &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> recibe financiación para un cliente grupal basado en relay &lt;a href="https://nostrcompass.org/en/topics/nip-29/">NIP-29&lt;/a> en Kotlin Multiplatform con mensajería grupal estilo Discord, moderación e hilos. &lt;a href="https://github.com/tami1A84/null--nostr">Nurunuru&lt;/a> recibe financiación para construir una versión nativa iOS del cliente Nostr enfocado en japonés, modelado sobre la interfaz familiar de LINE, con login biométrico basado en passkeys para el onboarding. HAMSTR recibió una renovación de grant (financiado por primera vez en la &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants#hamstr">undécima ola&lt;/a>).&lt;/p>
&lt;h2 id="nip-en-profundidad-nip-17-private-direct-messages">NIP en profundidad: NIP-17 (Private Direct Messages)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/17.md">NIP-17&lt;/a> define el estándar actual para mensajes directos privados en Nostr. Reemplaza el esquema más antiguo de &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages), que filtraba metadatos (remitente, receptor y timestamps eran visibles en los relays) y usaba una construcción de cifrado más débil. NIP-17 combina &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) para el cifrado con &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) para proteger metadatos, creando un sistema de tres capas donde los relays no pueden ver quién habla con quién.&lt;/p>
&lt;p>El protocolo usa tres kinds de evento apilados uno dentro de otro. La capa más interna es el mensaje real, un evento kind &lt;code>14&lt;/code> sin firma:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">14&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://inbox.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;subject&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Project update&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;The new relay config is deployed. Let me know if you see any issues.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El evento kind &lt;code>14&lt;/code> es deliberadamente unsigned (&lt;code>sig&lt;/code> vacío). La especificación describe esto como una forma de proporcionar negabilidad, pero en la práctica la protección es limitada. El seal kind &lt;code>13&lt;/code> que envuelve el rumor está firmado por la clave real del remitente. Un receptor puede mostrar el seal firmado a un tercero, probando que el remitente se comunicó con él, incluso sin revelar el contenido del mensaje. Con pruebas de conocimiento cero, un receptor puede probar el contenido exacto del mensaje sin revelar su propia clave privada. El rumor unsigned es como una carta sin firmar dentro de un sobre firmado: la firma del sobre vincula al remitente con el contenido. La verdadera negabilidad requeriría autenticación simétrica (como los HMAC de Signal), lo cual es incompatible con el modelo descentralizado de relay de Nostr, donde los mensajes deben ser autoautenticables. Las fortalezas reales de NIP-17 son la privacidad de metadatos y el secreto del contenido, no la negabilidad.&lt;/p>
&lt;p>Este mensaje unsigned se envuelve luego en un seal kind &lt;code>13&lt;/code>, firmado por el remitente real y cifrado con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> para el receptor:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744022400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 14 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El seal no tiene tags, así que incluso si se descifrara no revelaría al receptor. El seal está firmado por la clave real del remitente, lo que permite al receptor autenticar el mensaje comprobando que el &lt;code>pubkey&lt;/code> del seal coincide con el &lt;code>pubkey&lt;/code> del kind &lt;code>14&lt;/code> interno.&lt;/p>
&lt;p>El seal se envuelve después en un gift wrap kind &lt;code>1059&lt;/code>, firmado por una clave aleatoria desechable y dirigido al receptor:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744065600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 13 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El &lt;code>pubkey&lt;/code> del gift wrap es una clave aleatoria generada solo para este mensaje, y &lt;code>created_at&lt;/code> se aleatoriza hasta dos días hacia el pasado. Esta es la capa más externa que los relays ven realmente: un mensaje de un pubkey desconocido dirigido al receptor, con un timestamp que no refleja cuándo se envió realmente el mensaje. El timestamp aleatorizado protege frente a análisis posteriores de eventos almacenados, pero un adversario conectado activamente a relays aún puede observar cuándo apareció por primera vez el gift wrap, así que esta defensa se limita a observadores pasivos que consultan datos del relay más tarde. Como el pubkey es aleatorio y el timestamp es falso, los relays no pueden determinar el remitente real. Para leer el mensaje, el receptor descifra el gift wrap usando su propia clave y el pubkey aleatorio, encuentra el seal dentro, descifra el seal usando su propia clave y el pubkey del remitente tomado del seal, y encuentra dentro el mensaje kind &lt;code>14&lt;/code>.&lt;/p>
&lt;p>NIP-17 no proporciona forward secrecy. Todos los mensajes se cifran usando el keypair estático de Nostr (mediante la derivación de claves de NIP-44 a partir de las claves del remitente y el receptor). Si una clave privada se ve comprometida, todo mensaje pasado y futuro cifrado para esa clave puede descifrarse. Es un tradeoff deliberado: como el cifrado depende solo del nsec, un usuario que haga backup de su nsec puede recuperar todo su historial de mensajes desde cualquier relay que aún almacene los gift wraps. Protocolos como MLS (usado por &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>) proporcionan forward secrecy mediante rotación de material de claves, pero al coste de requerir sincronización de estado y de hacer imposible la recuperación histórica de mensajes después de la rotación de claves.&lt;/p>
&lt;p>NIP-17 también define kind &lt;code>15&lt;/code> para mensajes de archivo cifrados, que añade tags &lt;code>file-type&lt;/code>, &lt;code>encryption-algorithm&lt;/code>, &lt;code>decryption-key&lt;/code> y &lt;code>decryption-nonce&lt;/code> para que el receptor pueda descifrar un archivo adjunto cifrado con AES-GCM antes de subirse a un servidor Blossom. Kind &lt;code>10050&lt;/code> se usa para publicar la lista preferida de relays de DM del usuario, para que los remitentes sepan dónde entregar gift wraps. El conjunto de tags &lt;code>pubkey&lt;/code> + &lt;code>p&lt;/code> en un mensaje define una sala de chat; añadir o eliminar un participante crea una sala nueva con historial limpio.&lt;/p>
&lt;p>Las implementaciones cubren a la mayoría de los clientes principales. &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> usa NIP-17 para toda la mensajería uno a uno. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> usa NIP-17 para sus DMs con proof-of-work. &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> y &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> implementan NIP-17 como su protocolo principal de DM. La especificación también soporta mensajes que desaparecen estableciendo un tag &lt;code>expiration&lt;/code> en el gift wrap.&lt;/p>
&lt;h2 id="nip-en-profundidad-nip-46-nostr-remote-signing">NIP en profundidad: NIP-46 (Nostr Remote Signing)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> define un protocolo para separar la clave privada del usuario de la aplicación cliente. En lugar de pegar un nsec en una web app, el usuario ejecuta un firmante remoto (también llamado &amp;ldquo;bunker&amp;rdquo;) que guarda la clave privada y responde a solicitudes de firma a través de relays Nostr. El cliente nunca ve la clave privada. Esto reduce la superficie de ataque: un cliente comprometido puede solicitar firmas, pero no puede extraer la propia clave.&lt;/p>
&lt;p>El protocolo usa kind &lt;code>24133&lt;/code> tanto para solicitudes como para respuestas, cifradas con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Un cliente genera un &lt;code>client-keypair&lt;/code> desechable para la sesión y se comunica con el firmante remoto mediante mensajes cifrados con NIP-44 etiquetados con los pubkeys de ambos. Aquí hay una solicitud de firma de un cliente a un firmante remoto:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aa11bb22cc33dd44ee55ff6677889900aabbccdd11223344556677889900aabb&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC request&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1122334455667788990011223344556677889900aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff0011223344556677&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El &lt;code>content&lt;/code> cifrado contiene una estructura similar a JSON-RPC:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;random-request-id-1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;sign_event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;params&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;kind\&amp;#34;:1,\&amp;#34;content\&amp;#34;:\&amp;#34;Hello from remote signing\&amp;#34;,\&amp;#34;tags\&amp;#34;:[],\&amp;#34;created_at\&amp;#34;:1744108800}&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El firmante remoto descifra la solicitud, la presenta al usuario para su aprobación (o la aprueba automáticamente según los permisos configurados), firma el evento con la clave privada del usuario y devuelve el evento firmado en una respuesta:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bb22cc33dd44ee55ff6677889900aabb11223344556677889900aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108801&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC response&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Las conexiones pueden iniciarse desde cualquiera de los dos lados. Un firmante remoto proporciona una URL &lt;code>bunker://&lt;/code> que contiene su pubkey e información de relay. Un cliente proporciona una URL &lt;code>nostrconnect://&lt;/code> con su pubkey de cliente, relays y un secreto para verificación de conexión. El parámetro &lt;code>secret&lt;/code> evita suplantación de conexión: solo la parte que recibió la URL fuera de banda puede completar el handshake.&lt;/p>
&lt;p>Se definen ocho métodos: &lt;code>connect&lt;/code> para establecer la sesión, &lt;code>sign_event&lt;/code> para firmar eventos, &lt;code>get_public_key&lt;/code> para conocer el pubkey del usuario, &lt;code>ping&lt;/code> para keepalive, &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> para cifrado legacy, &lt;code>nip44_encrypt&lt;/code>/&lt;code>nip44_decrypt&lt;/code> para cifrado actual, y &lt;code>switch_relays&lt;/code> para gestión de relays. La migración de relay la maneja el firmante remoto, que puede mover la conexión a nuevos relays con el tiempo sin romper la sesión.&lt;/p>
&lt;p>Los clientes solicitan capacidades específicas en el momento de conexión mediante un sistema de permisos. Una cadena de permisos como &lt;code>nip44_encrypt,sign_event:1,sign_event:14&lt;/code> solicita acceso a cifrado NIP-44 y acceso de firma solo para eventos kind &lt;code>1&lt;/code> y kind &lt;code>14&lt;/code>. El firmante remoto puede aceptar, rechazar o modificar estos permisos. Esto significa que un cliente web para leer y publicar notas podría recibir solo permiso &lt;code>sign_event:1&lt;/code>, mientras que un cliente de DM podría recibir también permisos &lt;code>sign_event:14&lt;/code> y &lt;code>nip44_encrypt&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> implementa NIP-46 en Android, y su &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-08-newsletter/#amber-v600-pre1-a%c3%b1ade-claves-de-firma-nip-46-por-conexi%c3%b3n">v6.0.0-pre1&lt;/a> de esta semana añade claves de firma por conexión para aislar clientes entre sí. &lt;a href="https://github.com/nicktee/nsecapp">nsec.app&lt;/a> (antes Nostr Connect) proporciona un bunker basado en web. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> incluye &lt;code>BunkerSigner&lt;/code> para clientes JavaScript, y &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#nostr-tools-adds-bunker-relay-control-and-fixes-nip-47-multi-relay-parsing">el PR #530 de la semana pasada&lt;/a> añadió &lt;code>skipSwitchRelays&lt;/code> para gestión manual de relays. El protocolo también soporta desafíos de auth: cuando un firmante remoto necesita autenticación adicional (contraseña, biometría o token hardware), responde con una &lt;code>auth_url&lt;/code> que el cliente abre en un navegador para que el usuario la complete.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias para compartir? Envíanos un DM en Nostr o encuéntranos en &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #16</title><link>https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amethyst-lanza-notas-fijadas-gesti%c3%b3n-de-relays-y-request-to-vanish">v1.07.0&lt;/a> con notas fijadas, gestión de relays vía &lt;a href="https://nostrcompass.org/es/topics/nip-86/">NIP-86&lt;/a>, y soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nip-5a-se-fusiona-trayendo-sitios-web-est%c3%a1ticos-a-nostr">NIP-5A&lt;/a> (Static Websites) se fusiona en el repositorio de NIPs, definiendo cómo alojar sitios web bajo pares de claves Nostr usando almacenamiento &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#flotilla-v170-a%c3%b1ade-salas-de-voz-e-inicio-de-sesi%c3%b3n-con-email">v1.7.0&lt;/a> con salas de voz, login con email/contraseña, y DMs con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corrige churn de relays en &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#white-noise-corrige-churn-de-relays-y-ampl%c3%ada-los-controles-del-cliente">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lanza su &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nospeak-se-lanza-como-un-mensajero-privado-10">1.0.0&lt;/a> como mensajero cifrado sin registro. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nymchat-lanza-chats-de-grupo-impulsados-por-marmot">adopta Marmot&lt;/a> para chats de grupo cifrados con MLS con fallback a NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> alcanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con listas privadas de calendario e importación ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> añade &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amber-v502-a-v504">recuperación por mnemónico y whitelisting de autenticación de relay NIP-42&lt;/a>, y la &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#marmot-mueve-keypackages-a-eventos-direccionables-y-ajusta-las-notificaciones-push">especificación Marmot&lt;/a> mueve los KeyPackages a eventos direccionables mientras ajusta el formato de notificaciones push MIP-05.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amethyst-lanza-notas-fijadas-gesti%c3%b3n-de-relays-y-request-to-vanish">v1.07.0&lt;/a> con notas fijadas, gestión de relays vía &lt;a href="https://nostrcompass.org/es/topics/nip-86/">NIP-86&lt;/a>, y soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nip-5a-se-fusiona-trayendo-sitios-web-est%c3%a1ticos-a-nostr">NIP-5A&lt;/a> (Static Websites) se fusiona en el repositorio de NIPs, definiendo cómo alojar sitios web bajo pares de claves Nostr usando almacenamiento &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#flotilla-v170-a%c3%b1ade-salas-de-voz-e-inicio-de-sesi%c3%b3n-con-email">v1.7.0&lt;/a> con salas de voz, login con email/contraseña, y DMs con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corrige churn de relays en &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#white-noise-corrige-churn-de-relays-y-ampl%c3%ada-los-controles-del-cliente">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lanza su &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nospeak-se-lanza-como-un-mensajero-privado-10">1.0.0&lt;/a> como mensajero cifrado sin registro. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nymchat-lanza-chats-de-grupo-impulsados-por-marmot">adopta Marmot&lt;/a> para chats de grupo cifrados con MLS con fallback a NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> alcanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con listas privadas de calendario e importación ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> añade &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amber-v502-a-v504">recuperación por mnemónico y whitelisting de autenticación de relay NIP-42&lt;/a>, y la &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#marmot-mueve-keypackages-a-eventos-direccionables-y-ajusta-las-notificaciones-push">especificación Marmot&lt;/a> mueve los KeyPackages a eventos direccionables mientras ajusta el formato de notificaciones push MIP-05.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="amethyst-lanza-notas-fijadas-gestión-de-relays-y-request-to-vanish">Amethyst lanza notas fijadas, gestión de relays y Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android mantenido por vitorpamplona, lanzó seis versiones en tres días, desde &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a> hasta &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>. El conjunto principal de funciones abarca seis superficies de protocolo: notas fijadas, una pantalla dedicada de feed de encuestas, soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) para solicitar la eliminación completa de eventos de los relays, &lt;a href="https://nostrcompass.org/es/topics/nip-86/">NIP-86&lt;/a> (Relay Management API) desde dentro del cliente, evaluaciones de &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring) en la pantalla de información del relay, y visualización de información de miembros de &lt;a href="https://nostrcompass.org/es/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests).&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-86/">NIP-86&lt;/a> define una interfaz JSON-RPC para operadores de relays, permitiendo a los clientes enviar comandos administrativos como banear pubkeys, permitir pubkeys y listar usuarios baneados sobre una API estandarizada. Amethyst ahora expone esto directamente en su UI de gestión de relays, así que los usuarios que ejecutan sus propios relays pueden administrarlos desde el mismo cliente que usan para publicar. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a> reemplaza el antiguo diálogo de entrada hex para banear y permitir pubkeys con un diálogo interactivo de búsqueda de usuarios.&lt;/p>
&lt;p>v1.07.2 añadió subidas desde teclado GIF y corrigió una regresión de firma donde las respuestas de rechazo de Amber se interpretaban mal porque versiones antiguas de Amber devolvían una cadena vacía para el campo &lt;code>rejected&lt;/code> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>). v1.07.5 corrige un crash en la subida de imágenes. Los lanzamientos &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a> y &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a> a principios de la semana añadieron un selector de tipo de encuesta para encuestas de elección única vs. múltiple, drag-to-seek en barras de progreso de vídeo, y mejoras de publicación anónima.&lt;/p>
&lt;h3 id="nip-5a-se-fusiona-trayendo-sitios-web-estáticos-a-nostr">NIP-5A se fusiona, trayendo sitios web estáticos a Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> (Static Websites) se fusionó vía &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>, definiendo cómo alojar sitios web estáticos bajo pares de claves Nostr. La especificación usa dos kinds de evento: kind &lt;code>15128&lt;/code> para un sitio raíz, uno por pubkey, y kind &lt;code>35128&lt;/code> para sitios nombrados identificados por una etiqueta &lt;code>d&lt;/code>. Cada manifiesto mapea rutas URL a hashes SHA256, con etiquetas &lt;code>server&lt;/code> opcionales apuntando a hosts de almacenamiento &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> donde viven los archivos reales.&lt;/p>
&lt;p>El modelo de hosting funciona así: un autor construye un sitio estático, sube los archivos a uno o más servidores Blossom, y luego publica un evento de manifiesto firmado que mapea rutas a hashes de contenido. Un servidor host recibe solicitudes web, resuelve la pubkey del autor desde el subdominio, obtiene el manifiesto desde la lista de relays &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> del autor, y sirve los archivos descargando los blobs correspondientes desde Blossom. El sitio permanece bajo el control del autor porque solo esa clave puede firmar un manifiesto actualizado. El servidor host es reemplazable porque cualquier servidor que entienda NIP-5A puede servir el mismo sitio desde el mismo manifiesto.&lt;/p>
&lt;p>La especificación se construye sobre infraestructura que ya existía. &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, la implementación host de referencia de NIP-5A construida por lez, y &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, la UI de gestión de hzrd149, ya estaban funcionando antes de que el NIP se fusionara. La fusión hace oficiales los kinds de evento y las reglas de resolución de URL, lo que da a segundas y terceras implementaciones un objetivo estable.&lt;/p>
&lt;h3 id="white-noise-corrige-churn-de-relays-y-amplía-los-controles-del-cliente">White Noise corrige churn de relays y amplía los controles del cliente&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, el mensajero privado construido sobre el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a> el 25 de marzo. El trabajo principal es estabilidad de relays. El login ya no espera a que termine cada publicación de lista de relays antes de continuar, porque la publicación de listas ahora usa lógica de quorum y reintenta el resto en segundo plano. Las operaciones puntuales de fetch y publish usan sesiones efímeras acotadas de relay en lugar de quedarse en el pool de larga duración, las sesiones restauradas recuperan su ruta de refresh de grupos después del arranque, y la app ahora expone diagnósticos e inspección de estado de relay a través de &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a> y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>.&lt;/p>
&lt;p>El mismo lanzamiento cambia cómo se comportan las conversaciones. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/468">PR #468&lt;/a> añade threading de respuestas NIP-C7 con etiquetas &lt;code>q&lt;/code> y referencias &lt;code>nostr:nevent&lt;/code>, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/471">PR #471&lt;/a> y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/512">PR #512&lt;/a> mantienen visibles los mensajes eliminados como marcadores de eliminado en lugar de quitarlos silenciosamente, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/478">PR #478&lt;/a> añade un flujo de reporte de errores en la app usando reportes anónimos con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/486">PR #486&lt;/a> añade chat de soporte directamente en el cliente. Los controles de mensajes orientados al usuario también aterrizaron en la misma ventana: &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/532">PR #532&lt;/a> archiva chats, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/541">PR #541&lt;/a> añade mute y unmute con duraciones configurables, y &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/535">PR #535&lt;/a> añade ajustes de notificaciones. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/539">PR #539&lt;/a> es trabajo preparatorio de registro push, conectando el registro APNs en iOS y la detección de Play Services en Android para que el registro pueda construirse encima. Del lado backend, el &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit) añadió primitivas de notificaciones push MIP-05 y un constructor de solicitudes de notificación (&lt;a href="https://github.com/marmot-protocol/mdk/pull/235">PR #235&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/238">PR #238&lt;/a>), mientras &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> añadió persistencia de registro de notificaciones push (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/688">PR #688&lt;/a>), correcciones de cancelación de tareas en segundo plano (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/696">PR #696&lt;/a>), y recuperación de key packages al iniciar (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/693">PR #693&lt;/a>).&lt;/p>
&lt;h3 id="nostr-vpn-alcanza-v030-con-sincronización-de-roster-e-invite-v2">Nostr VPN alcanza v0.3.0 con sincronización de roster e invite v2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostr-vpn-se-lanza-como-alternativa-a-tailscale">Siguiendo la cobertura de lanzamiento de la semana pasada&lt;/a>, &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, la VPN peer-to-peer que usa relays Nostr para señalización y WireGuard para túneles cifrados, continuó su ritmo rápido de lanzamientos, publicando versiones hasta &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.3">v0.3.3&lt;/a>. El salto de versión trae dos cambios disruptivos: el formato de invitación pasa a v2 (0.3.0 aún puede importar invitaciones v1, pero builds más antiguas no pueden importar invitaciones v2), y se añadió sincronización de roster firmada por administrador al protocolo de señalización. Los peers de versiones mixtas aún pueden conectarse en la capa mesh, pero los peers antiguos no participarán en la sincronización del roster.&lt;/p>
&lt;p>La adición de sincronización de roster inicia el movimiento hacia una red gestionada. Un nodo administrador ahora puede empujar cambios de membresía a todos los peers, de modo que añadir o quitar un dispositivo de la red mesh no requiere que cada peer actualice manualmente su configuración. Las versiones v0.2.x durante la misma semana abordaron problemas específicos de despliegue: &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.22">v0.2.22&lt;/a> a &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.28">v0.2.28&lt;/a> corrigieron gestión de servicios Windows, añadieron scripts de build Android, y refinaron el flujo de emparejamiento LAN.&lt;/p>
&lt;h3 id="nospeak-se-lanza-como-un-mensajero-privado-10">nospeak se lanza como un mensajero privado 1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, un mensajero privado construido sobre Nostr, lanzó su versión &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.0.0">1.0.0&lt;/a> el 27 de marzo. El proyecto incluye conversaciones uno a uno y de grupo, gestión de contactos, y una arquitectura auto-alojable. Los chats uno a uno usan &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), que combina &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) para ocultar el remitente a los relays. Para medios, los archivos se cifran del lado del cliente con AES-256-GCM antes de subirlos a servidores Blossom. El lanzamiento también se distribuye como imagen de contenedor para auto-hosting.&lt;/p>
&lt;h3 id="flotilla-v170-añade-salas-de-voz-e-inicio-de-sesión-con-email">Flotilla v1.7.0 añade salas de voz e inicio de sesión con email&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, el cliente estilo Discord de hodlbod para &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> (Relay-based Groups) construido alrededor del modelo &amp;ldquo;relays as groups&amp;rdquo;, lanzó &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.0">v1.7.0&lt;/a> y &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.1">v1.7.1&lt;/a> el 30 y 31 de marzo. La funcionalidad principal son las salas de voz, contribuidas por mplorentz. Los usuarios ahora pueden unirse a llamadas de voz dentro de canales de grupo, con un diálogo de unión (&lt;a href="https://gitea.coracle.social/coracle/flotilla/pulls/109">PR #109&lt;/a>) que les permite seleccionar un dispositivo de entrada de audio y elegir si quieren entrar a la llamada de voz o solo ver el chat de texto. El diálogo resuelve un problema de UX de la iteración anterior: entrar a una sala con voz habilitada forzaba antes la activación del micrófono incluso cuando el usuario solo quería leer mensajes o revisar ajustes de la sala.&lt;/p>
&lt;p>El mismo lanzamiento añade login con email y contraseña como alternativa a autenticación basada en claves Nostr, proof-of-work en DMs, edición de DMs, onboarding y ajustes de relay rediseñados, detección de soporte Blossom vía &lt;code>supported_nips&lt;/code>, mejoras de badges de notificación, fallback de notificaciones push Android, y correcciones de subida de archivos en Android. v1.7.1 sigue con una corrección para el fallback de registro de pomade al usar un firmante offline.&lt;/p>
&lt;p>Hodlbod también está construyendo &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, un gestor de hosting y panel para relays zooid, que registró 40 commits esta semana en desarrollo inicial.&lt;/p>
&lt;h3 id="nymchat-lanza-chats-de-grupo-impulsados-por-marmot">Nymchat lanza chats de grupo impulsados por Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> (también conocido como NYM, Nostr Ynstant Messenger), el cliente de chat efímero conectado con Bitchat, anunció que todos los nuevos chats de grupo ahora usan el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> para mensajería cifrada con MLS. La integración usa kinds &lt;code>443&lt;/code>, &lt;code>444&lt;/code> y &lt;code>445&lt;/code> para key packages, mensajes welcome y mensajes de grupo respectivamente, proporcionando forward secrecy, seguridad post-compromise y fuga cero de metadatos. Si un receptor no puede usar MLS, Nymchat recurre a su ruta anterior de chats grupales &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), que sigue estando cifrada de extremo a extremo pero carece de las propiedades de árbol ratchet de MLS.&lt;/p>
&lt;p>Las series v3.55 y v3.56 de esta semana se enfocaron en casos límite de chats grupales: carga en dispositivos nuevos, comportamiento de salida, enrutamiento de notificaciones y conteo de badges no leídos. El mismo ciclo también corrigió una vulnerabilidad XSS por HTML sin escapar y añadió bloqueo de palabras clave y frases extendido a apodos de usuario. Esto convierte a Nymchat en otro cliente Marmot que se suma a &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#white-noise-corrige-churn-de-relays-y-ampl%c3%ada-los-controles-del-cliente">White Noise&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#openchat-v024-a-v030">OpenChat&lt;/a>, ampliando el conjunto de apps que pueden intercambiar mensajes grupales cifrados con MLS sobre el mismo protocolo.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="calendar-by-form-v100">Calendar by Form* v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, la app de calendario descentralizada construida sobre &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), alcanzó &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.0.0">v1.0.0&lt;/a> el 29 de marzo. El lanzamiento añade listas privadas de calendario usando eventos Nostr cifrados (kind &lt;code>32123&lt;/code>) con auto-cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), de modo que los usuarios puedan organizar eventos en colecciones privadas sin exponer la agrupación a los relays. El mismo lanzamiento añade manejo de intents ICS para importar datos de calendario desde otras aplicaciones y solicitudes de invitación para compartir eventos entre usuarios.&lt;/p>
&lt;h3 id="amber-v502-a-v504">Amber v5.0.2 a v5.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), lanzó tres point releases: &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.2">v5.0.2&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.3">v5.0.3&lt;/a> y &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.4">v5.0.4&lt;/a>. La adición más visible es el login con frase mnemónica de recuperación (&lt;a href="https://github.com/greenart7c3/Amber/pull/358">PR #358&lt;/a>), que permite a los usuarios restaurar su firmante desde una seed phrase BIP39 en lugar de requerir la cadena nsec o ncryptsec en bruto. &lt;a href="https://github.com/greenart7c3/Amber/pull/357">PR #357&lt;/a> añade una whitelist de autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>, para que los usuarios puedan restringir qué relays están autorizados a solicitar autenticación del cliente. &lt;a href="https://github.com/greenart7c3/Amber/pull/353">PR #353&lt;/a> añade selección de alcance de cifrado para permisos de descifrado, permitiendo a los usuarios conceder acceso de descifrado solo NIP-04 o solo NIP-44 en lugar de un permiso total. v5.0.4 corrige un bug donde el rechazo no respetaba los permisos acotados de cifrado y descifrado y mejora el rendimiento al recibir múltiples solicitudes de bunker.&lt;/p>
&lt;h3 id="aegis-v040">Aegis v0.4.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, el firmante multiplataforma, lanzó &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.4.0">v0.4.0&lt;/a> el 26 de marzo. El lanzamiento añade modos de autorización Full y Selective en Ajustes y corrige múltiples problemas de escaneo de QR. Los commits de seguimiento &lt;a href="https://github.com/ZharlieW/Aegis/commit/d4f799fe51dd82968d54f72ac77f2de29d0cfe6b">d4f799f&lt;/a>, &lt;a href="https://github.com/ZharlieW/Aegis/commit/3313af92e55e449ebc98fbd91a085bd444d716e7">3313af9&lt;/a>, &lt;a href="https://github.com/ZharlieW/Aegis/commit/3b214e4176f5dbe7f18690d0996e69dd151fe00f">3b214e4&lt;/a>, y &lt;a href="https://github.com/ZharlieW/Aegis/commit/e4f40b6f1f48c2dae1bb5e4246df26c26dba419e">e4f40b6&lt;/a> continúan el mismo trabajo con controles de selección por lotes, estadísticas reutilizables de selección en lote, APIs de selección por grupo completo, y estadísticas de uso por permiso en la página de permisos de la app.&lt;/p>
&lt;h3 id="schemata-v027-a-v030">Schemata v0.2.7 a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Schemata&lt;/a>, las definiciones JSON Schema para validar kinds de eventos Nostr, lanzó cuatro versiones desde &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.7">v0.2.7&lt;/a> hasta &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.3.0">v0.3.0&lt;/a> con 21 PRs fusionados. El lanzamiento v0.3.0 trae correcciones de consistencia de patrones a través de URLs de relay, IDs hex, tipos MIME y cadenas BOLT-11 (&lt;a href="https://github.com/nostrability/schemata/pull/126">PR #126&lt;/a>), patrones centralizados de URL de relay (&lt;a href="https://github.com/nostrability/schemata/pull/117">PR #117&lt;/a>), schemas base de tipo bech32 para &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostrability/schemata/pull/118">PR #118&lt;/a>), y validación para eventos de spell kind 777 (&lt;a href="https://github.com/nostrability/schemata/pull/125">PR #125&lt;/a>). El pipeline de lanzamiento ahora publica una nota kind &lt;code>1&lt;/code> en Nostr en cada release (&lt;a href="https://github.com/nostrability/schemata/pull/120">PR #120&lt;/a>), así que el proyecto se anuncia a sí mismo a través del protocolo que valida. Schemata ahora soporta una docena de lenguajes más allá del paquete canónico JS/TS: Rust, Go, Python, Kotlin, Java, Swift, Dart, PHP, C#/.NET, C++, Ruby y C.&lt;/p>
&lt;p>Junto a Schemata, el equipo publicó &lt;a href="https://github.com/nostrability/schemata-codegen">schemata-codegen&lt;/a>, un generador experimental de código que adopta un enfoque diferente al mismo problema de validación. Mientras los paquetes validadores de Schemata requieren una dependencia de runtime de JSON Schema, schemata-codegen convierte schemas directamente en construcciones nativas tipadas del lenguaje (tuplas tipadas de tags, interfaces de kind y validadores de runtime), eliminando la necesidad de una biblioteca validadora en tiempo de ejecución. La &lt;a href="https://github.com/nostrability/schemata-codegen/blob/main/CODEGEN-VS-VALIDATORS.md">comparación codegen-vs-validators&lt;/a> documenta cuándo encaja cada enfoque.&lt;/p>
&lt;h3 id="bigbrotr-v650-a-v654">BigBrotr v6.5.0 a v6.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la plataforma de analíticas de relays, lanzó cinco versiones desde &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.0">v6.5.0&lt;/a> hasta &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.4">v6.5.4&lt;/a>. El lanzamiento v6.5.0 centraliza la validación de URLs de relay con una función factory &lt;code>parse_relay_url()&lt;/code> y añade comprobación de longitud de URL y saneamiento de rutas. La infraestructura de monitoreo también recibió correcciones: los eventos de anuncio ahora incluyen etiquetas de ubicación geohash (siguiendo &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a>), y se añadió protección de timeout a las pruebas de metadatos Geo/Net &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> que no tenían plazo y podían colgarse indefinidamente. &lt;a href="https://github.com/BigBrotr/bigbrotr/pull/410">PR #410&lt;/a> actualiza PostgreSQL de 16 a 18, lo que trae el subsistema de I/O asíncrona y mayor throughput de WAL al pipeline de analíticas de relays.&lt;/p>
&lt;h3 id="el-relay-de-vertex-lab-añade-búsqueda-de-perfiles-nip-50">El relay de Vertex Lab añade búsqueda de perfiles NIP-50&lt;/h3>
&lt;p>&lt;a href="https://vertexlab.io">Vertex Lab&lt;/a>, el equipo detrás de &lt;a href="https://github.com/vertex-lab/npub.world">npub.world&lt;/a> y el motor Web of Trust &lt;a href="https://vertexlab.io/docs">Vertex&lt;/a>, anunció que &lt;code>wss://relay.vertexlab.io&lt;/code> ahora soporta &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> (Search) para consultas de perfiles. NIP-50 extiende el filtro estándar &lt;code>REQ&lt;/code> de Nostr con un campo &lt;code>search&lt;/code>, permitiendo a los clientes enviar consultas de búsqueda de texto completo a relays que soportan indexación. Añadir búsqueda de perfiles a un relay que ya sirve datos de Web of Trust significa que los clientes conectados a &lt;code>relay.vertexlab.io&lt;/code> pueden descubrir usuarios por nombre o descripción sin un servicio de búsqueda separado.&lt;/p>
&lt;h3 id="hashtree-v0217-y-v0218-lanzan-mesh-webrtc-e-iris-desktop">Hashtree v0.2.17 y v0.2.18 lanzan mesh WebRTC e Iris Desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree">Hashtree&lt;/a>, el sistema de almacenamiento de blobs direccionados por contenido de mmalmi que publica raíces de Merkle en Nostr, lanzó &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.17">v0.2.17&lt;/a> y &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.18">v0.2.18&lt;/a> el 31 de marzo. Los dos lanzamientos coronan un sprint de 30 commits que añade tres capacidades distintas. Primero, el crate &lt;code>hashtree-webrtc&lt;/code> (renombrado a &lt;code>hashtree-network&lt;/code> en v0.2.18) añade distribución peer-to-peer de blobs basada en WebRTC con señalización mesh unificada a través del CLI Rust, el harness de simulación y el cliente TypeScript. Segundo, el pipeline de lanzamiento ahora construye artefactos Windows (zip del CLI e instalador de Iris), llevando cobertura multiplataforma a macOS, Linux y Windows. Tercero, ambos lanzamientos empaquetan Iris Desktop 0.1.0, el cliente social Nostr de mmalmi, como assets AppImage, .deb e instalador Windows junto al CLI de hashtree. &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/">Hashtree fue cubierto por primera vez en Newsletter #10&lt;/a> cuando se lanzó como un store compatible con &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> basado en filesystem. La capa WebRTC es el primer paso hacia distribución de contenido peer-to-peer sin depender de servidores Blossom centralizados.&lt;/p>
&lt;h3 id="nostr-mail-client-v070-a-v072">Nostr Mail Client v0.7.0 a v0.7.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a>, el cliente estilo correo construido con Flutter sobre identidades Nostr, lanzó &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.0">v0.7.0&lt;/a>, &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.1">v0.7.1&lt;/a> y &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.2">v0.7.2&lt;/a> en tres días. El trabajo de producto visible se centró en onboarding (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/9">PR #9&lt;/a>) y edición de perfil (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/10">PR #10&lt;/a>), que son piezas básicas para cualquier cliente que intente presentar Nostr como un buzón. Las versiones posteriores empaquetaron ese trabajo en nuevas builds Android y Linux.&lt;/p>
&lt;h3 id="wisp-v0140-a-v0161">Wisp v0.14.0 a v0.16.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, el cliente Nostr Android, lanzó 13 versiones más desde &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.14.0-beta">v0.14.0-beta&lt;/a> hasta &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>. El trabajo de esta semana incluye correcciones de JSON rumor NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/385">PR #385&lt;/a>), badges de repost en tarjetas de galería (&lt;a href="https://github.com/barrydeen/wisp/pull/383">PR #383&lt;/a>), detalles expandibles de reacciones (&lt;a href="https://github.com/barrydeen/wisp/pull/382">PR #382&lt;/a>), sets persistentes de emoji (&lt;a href="https://github.com/barrydeen/wisp/pull/381">PR #381&lt;/a>), y controles de autoplay de vídeo (&lt;a href="https://github.com/barrydeen/wisp/pull/380">PR #380&lt;/a>). El más reciente &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a> también corrige shortcodes de emoji personalizados con guiones y etiquetas de emoji faltantes.&lt;/p>
&lt;h3 id="primal-android-3017">Primal Android 3.0.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> lanzó &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.17">3.0.17&lt;/a> el 24 de marzo. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1000">PR #1000&lt;/a> mapea tipos de WalletException a códigos de error en respuestas NWC, dando a clientes &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> información estructurada de fallos en lugar de errores genéricos. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/995">PR #995&lt;/a> corrige votos zap de encuestas apareciendo como Top Zaps, y &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/998">PR #998&lt;/a> oculta el balance de billetera y botones de acción cuando no hay billetera configurada.&lt;/p>
&lt;h3 id="openchat-v024-a-v030">OpenChat v0.2.4 a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, el cliente de chat basado en Avalonia construido sobre el stack &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó seis versiones desde &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.2.4">v0.2.4&lt;/a> hasta &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.3.0">v0.3.0&lt;/a> en cuatro días. El log de commits cuenta la historia de un cliente llenando los huecos entre &amp;ldquo;Marmot funciona&amp;rdquo; y &amp;ldquo;alguien puede usar esto diariamente&amp;rdquo;. Aterrizó la autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>, seguida de una UI selector de relay con filtrado de eventos duplicados. Los mensajes de voz ganaron pausa, reanudación, seek y visualización de tiempo. La ruta del firmante se endureció: se corrigieron las conexiones Amber con un formato URI &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> actualizado, el WebSocket se reconecta automáticamente antes de enviar solicitudes, y las solicitudes Amber duplicadas ahora se capturan comprobando respuestas repetidas. Del lado de almacenamiento, Linux y macOS recibieron almacenamiento seguro AES-256-GCM con claves respaldadas por archivo, y la obtención de metadatos de usuario ahora usa descubrimiento de relay &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y guarda resultados en caché en una base de datos local.&lt;/p>
&lt;h3 id="igloo-signer-11">Igloo Signer 1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype">Igloo&lt;/a>, el firmante threshold iOS &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> del proyecto FROSTR, lanzó &lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype/releases/tag/v1.1">v1.1&lt;/a> el 28 de marzo. Las firmas FROST (Flexible Round-Optimized Schnorr Threshold) permiten a un grupo de firmantes controlar colectivamente un par de claves Nostr, donde cualquier t-de-n participantes puede firmar un evento sin que ninguna parte tenga la clave privada completa. Igloo es una de las primeras implementaciones móviles de este enfoque para Nostr.&lt;/p>
&lt;h3 id="nak-v0193-y-v0194">nak v0.19.3 y v0.19.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, el toolkit de línea de comandos Nostr de fiatjaf, lanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.3">v0.19.3&lt;/a> y &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.4">v0.19.4&lt;/a> el 26 y 30 de marzo. Ambos lanzamientos corrigen condiciones de panic: &lt;a href="https://github.com/fiatjaf/nak/pull/118">PR #118&lt;/a> reemplaza &lt;code>strings.Split&lt;/code> con &lt;code>strings.Cut&lt;/code> para prevenir un posible acceso fuera de rango, y &lt;a href="https://github.com/fiatjaf/nak/pull/119">PR #119&lt;/a> previene la misma clase de panic en el parseo de flags curl.&lt;/p>
&lt;h3 id="flora-v030">Flora v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/shawnyeager/flora-extension">Flora&lt;/a>, una extensión Chrome para grabación y compartición de pantalla descentralizada en Nostr, lanzó &lt;a href="https://github.com/shawnyeager/flora-extension/releases/tag/v0.3.0">v0.3.0&lt;/a>. El lanzamiento añade compartición privada de vídeo cifrado con modos público, no listado y privado. Las grabaciones privadas se cifran con AES-256-GCM y se entregan a los destinatarios vía &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), de modo que la grabación nunca toca un servidor en texto claro.&lt;/p>
&lt;h3 id="yakihonne-mobile-203">YakiHonne Mobile 2.0.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/YakiHonne/mobile-app">YakiHonne&lt;/a>, el cliente móvil Nostr, lanzó &lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.3">2.0.3&lt;/a> con reseñas de relays y solicitudes de unión, respuestas anidadas ampliadas, auto-traducción de notas, y soporte NWC multi-relay.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="zap-cooking-añade-zap-polls-y-verificación-de-pagos-branta">Zap Cooking añade zap polls y verificación de pagos Branta&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la plataforma de recetas y contenido, fusionó 11 PRs esta semana enfocadas en contenido interactivo y flujos de pago. &lt;a href="https://github.com/zapcooking/frontend/pull/277">PR #277&lt;/a> añade zap polls (kind 6969), donde los usuarios votan enviando sats y pueden ver listas de votantes con fotos de perfil. &lt;a href="https://github.com/zapcooking/frontend/pull/274">PR #274&lt;/a> rediseña la UX de encuestas para que la interfaz de voto se integre de forma más natural en el feed.&lt;/p>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend/pull/276">PR #276&lt;/a> añade escaneo QR basado en cámara al flujo Send Payment e integra &lt;a href="https://branta.pro/">Branta&lt;/a>, un servicio de verificación que comprueba si un destino de pago es legítimo antes del envío. Branta revisa destinos de pago contra phishing, address swaps e intercepciones man-in-the-middle antes de enviar. En la implementación de Zap Cooking, un nombre y logo de plataforma verificados por Branta aparecen directamente en el flujo de pago, y los códigos QR habilitados para Branta pueden llevar parámetros &lt;code>branta_id&lt;/code> y &lt;code>branta_secret&lt;/code> para que la billetera pueda verificar el destino desde el propio código escaneado.&lt;/p>
&lt;h3 id="divine-sienta-bases-para-búsqueda-unificada-y-endurece-la-entrega-de-vídeo">diVine sienta bases para búsqueda unificada y endurece la entrega de vídeo&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de vídeos cortos, pasó la semana ajustando búsqueda, navegación del feed, recuperación de reproducción y comportamiento de subida. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2540">PR #2540&lt;/a> sienta la base para una pantalla de búsqueda unificada, con secciones agrupadas para Videos, People y Tags. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2623">PR #2623&lt;/a> endurece la paginación a través de feeds de perfil, inbox, notificaciones, listas Discover, classic vines, búsqueda y feeds de grid componibles moviéndolos a un controlador compartido de paginación.&lt;/p>
&lt;p>La entrega de vídeo también recibió varias correcciones concretas. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2643">PR #2643&lt;/a> reintenta fuentes derivadas alojadas por Divine en orden y recurre al blob crudo antes de mostrar un error de reproducción, de modo que fallos transitorios en una fuente no maten la reproducción inmediatamente. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2634">PR #2634&lt;/a> mantiene las subidas reanudables en la ruta propiedad de Divine cuando la detección de capacidades falla transitoriamente, reduciendo subidas rotas por fallos breves de red. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2637">PR #2637&lt;/a> también cambia la compuerta de contenido sensible para que los vídeos solo queden estrictamente bloqueados por etiquetas de advertencia reales, no solo por etiquetas de advertencia suministradas por el creador.&lt;/p>
&lt;h3 id="shopstr-añade-storefronts-personalizados-y-milk-market-sigue-enviando-trabajo-de-marketplace">Shopstr añade storefronts personalizados y Milk Market sigue enviando trabajo de marketplace&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, el marketplace basado en Nostr, fusionó &lt;a href="https://github.com/shopstr-eng/shopstr/pull/245">PR #245&lt;/a> añadiendo storefronts personalizados. Esto da a los vendedores una superficie inicial más distintiva en lugar de forzar cada listado a la misma presentación genérica.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, un marketplace dedicado a la leche, continuó con optimizaciones de storefront (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/18">PR #18&lt;/a>), recuperación de cuenta (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/17">PR #17&lt;/a>), beef splits (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/15">PR #15&lt;/a>), y correcciones de tipado de herramientas MCP (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/16">PR #16&lt;/a>).&lt;/p>
&lt;h3 id="notedeck-añade-efectos-de-sonido-y-extiende-su-actualizador-hacia-android">Notedeck añade efectos de sonido y extiende su actualizador hacia Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente de escritorio del equipo Damus, fusionó &lt;a href="https://github.com/damus-io/notedeck/pull/1412">PR #1412&lt;/a> añadiendo un subsistema de efectos de sonido con sonidos de interacción de UI usando rodio, y &lt;a href="https://github.com/damus-io/notedeck/pull/1399">PR #1399&lt;/a> con actualizaciones de Agentium incluyendo un flag de título CLI y carpetas de sesión colapsables. Un &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> abierto propone auto-actualización APK vía Nostr/Zapstore en Android, construyendo sobre &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/#notedeck-mueve-el-descubrimiento-de-versiones-a-nostr">el trabajo de actualizador nativo de Nostr de Notedeck de Newsletter #14&lt;/a>.&lt;/p>
&lt;h3 id="nostria-añade-pistas-de-relay-en-reposts-y-alineación-con-nip-98">Nostria añade pistas de relay en reposts y alineación con NIP-98&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> fusionó &lt;a href="https://github.com/nostria-app/nostria/pull/583">PR #583&lt;/a> añadiendo pistas de relay &lt;a href="https://nostrcompass.org/es/topics/nip-18/">NIP-18&lt;/a> (Reposts) a etiquetas &lt;code>e&lt;/code> de repost para eventos kind 6 y kind 16, &lt;a href="https://github.com/nostria-app/nostria/pull/582">PR #582&lt;/a> alineando la autenticación HTTP de Brainstorm (kind 27235) con las etiquetas requeridas de &lt;a href="https://nostrcompass.org/es/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth), y &lt;a href="https://github.com/nostria-app/nostria/pull/576">PR #576&lt;/a> añadiendo pruebas de validación de schemas Schemata. El cambio NIP-98 significa que Nostria puede autenticarse ante servicios externos usando el mismo formato de autenticación HTTP que otros clientes usan.&lt;/p>
&lt;h3 id="nostr-doc-añade-empaquetado-de-escritorio-y-trabajo-offline-first">Nostr-Doc añade empaquetado de escritorio y trabajo offline-first&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr-Doc&lt;/a>, el editor colaborativo de Form*, tuvo una semana ocupada de empaquetado y trabajo de editor. &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/fcdc00a564c8d76f094c586b06efce07592a60e4">commit fcdc00a&lt;/a> añade una app de escritorio, &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/3977a8eb2e62b84a67de756c2776e14de8470927">commit 3977a8e&lt;/a> inicia trabajo de app nativa, y &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/413a030f5b47fb8e32a5dff81bcef557ad9b5869">commit 413a030&lt;/a> empuja la app hacia comportamiento offline-first. Del lado del editor, &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/1855ce86ee83ad504e14e47d9c339baffb114786">commit 1855ce8&lt;/a> añade guardado con Ctrl+S, advertencias de guardado, correcciones de preview de enlaces y renderizado corregido de texto tachado.&lt;/p>
&lt;h3 id="rust-nostr-optimiza-el-parseo-nip-21-y-añade-soporte-nip-62-del-lado-relay">rust-nostr optimiza el parseo NIP-21 y añade soporte NIP-62 del lado relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> fusionó ocho PRs. El más notable es &lt;a href="https://github.com/rust-nostr/nostr/pull/1308">PR #1308&lt;/a>, que optimiza el parseo de URI &lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> en &lt;code>PublicKey::parse&lt;/code> alineándolo con el rendimiento estándar de parseo bech32. Antes, los URI NIP-21 tardaban aproximadamente el doble que las claves bech32 en bruto. El proyecto también tiene cuatro PRs abiertos añadiendo soporte específico de relay para &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) a través de los backends memory, LMDB, SQLite y database test (&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>).&lt;/p>
&lt;h3 id="nostr-tools-añade-control-de-relay-bunker-y-corrige-parseo-multi-relay-nip-47">nostr-tools añade control de relay bunker y corrige parseo multi-relay NIP-47&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> fusionó &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/530">PR #530&lt;/a> añadiendo &lt;code>skipSwitchRelays&lt;/code> a BunkerSignerParams para gestión manual de relays, y &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/529">PR #529&lt;/a> corrigiendo el parseo de cadenas de conexión &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) para soportar múltiples relays como permite la especificación.&lt;/p>
&lt;h3 id="nostrability-integra-datos-de-auditoría-sherlock-y-publica-visión-general-de-schemata">Nostrability integra datos de auditoría Sherlock y publica visión general de Schemata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/nostrability">Nostrability&lt;/a>, el tracker de interoperabilidad para clientes Nostr, fusionó 14 PRs. &lt;a href="https://github.com/nostrability/nostrability/pull/306">PR #306&lt;/a> integra estadísticas de escaneo Sherlock en el dashboard. Sherlock es la herramienta de auditoría automatizada de Nostrability que se conecta a clientes Nostr, captura los eventos que publican, y valida cada evento contra las definiciones JSON Schema de Schemata para detectar violaciones de especificación. El dashboard ahora muestra tasas de fallo de schema por cliente (&lt;a href="https://github.com/nostrability/nostrability/pull/315">PR #315&lt;/a>) para que los desarrolladores puedan ver qué kinds de evento su cliente implementa mal. &lt;a href="https://github.com/nostrability/nostrability/pull/323">PR #323&lt;/a> renueva el flujo de publicación Nostr para que los anuncios de release corran como un job separado que no puede ser cancelado por pasos previos de CI.&lt;/p>
&lt;p>elsat también publicó &lt;a href="https://njump.me/naddr1qvzqqqr4gupzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqz4fnx4rkw3x57nrcwdn8zt22xd982jehfptsgqtrww">Schemata for nostr devs&lt;/a> el 30 de marzo, describiendo cómo encajan schemata, schemata-codegen y Sherlock y dando números actuales de cobertura: 179 schemas de kinds de evento a través de 65 NIPs, 154 schemas de tags, 13 mensajes de protocolo y 310 eventos de ejemplo.&lt;/p>
&lt;h3 id="nalgorithm-añade-generación-de-digest-y-caché-local-de-puntuaciones">Nalgorithm añade generación de digest y caché local de puntuaciones&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/nalgorithm">Nalgorithm&lt;/a>, un nuevo proyecto de feed Nostr ordenado por relevancia, inició desarrollo público esta semana. &lt;a href="https://github.com/jooray/nalgorithm/commit/cf6c501e754ef95a1b4fecc1a76288471a101f43">commit cf6c501&lt;/a> establece la web app inicial que obtiene publicaciones de follows y las puntúa contra un prompt de preferencias definido por el usuario. &lt;a href="https://github.com/jooray/nalgorithm/commit/8e931b6ae85d470e73603752134ff49b7ba4bb86">commit 8e931b6&lt;/a> añade una herramienta CLI de digest que convierte las publicaciones mejor clasificadas en un resumen hablado, mientras &lt;a href="https://github.com/jooray/nalgorithm/commit/4cb9c635489a9a3429e8d71f3861dc2a11624153">commit 4cb9c63&lt;/a> añade caché de puntuaciones basada en archivos y evolución incremental del prompt aprendida a partir de likes recientes. &lt;a href="https://github.com/jooray/nalgorithm/commit/c2edfb8b89fadbe0028c3f5729bda7e23b2e3c03">commit c2edfb8&lt;/a> también deja de guardar en caché puntuaciones fallback de lotes fallidos, de modo que un fallo transitorio de scoring no aplaste permanentemente el ranking de una publicación.&lt;/p>
&lt;h3 id="tenex-añade-vector-store-rag-y-arranque-mcp-dirigido">TENEX añade vector store RAG y arranque MCP dirigido&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, el framework de agentes nativo de Nostr que conecta agentes a canales Nostr vía Telegram, fusionó siete PRs esta semana. &lt;a href="https://github.com/tenex-chat/tenex/pull/101">PR #101&lt;/a> añade una abstracción conectable de vector store con backends SQLite-vec, LanceDB y Qdrant, dando a los agentes retrieval-augmented generation sin bloquearse a una sola base de datos vectorial. &lt;a href="https://github.com/tenex-chat/tenex/pull/102">PR #102&lt;/a> hace que el arranque MCP sea dirigido: solo se inician servidores MCP cuyas herramientas un agente realmente usa, en lugar de lanzar todos los servidores ansiosamente en la primera ejecución. &lt;a href="https://github.com/tenex-chat/tenex/pull/100">PR #100&lt;/a> añade una herramienta &lt;code>send_message&lt;/code> para que agentes con bindings de canal Telegram puedan empujar mensajes de forma proactiva en lugar de solo responder a mensajes entrantes. &lt;a href="https://github.com/tenex-chat/tenex/pull/106">PR #106&lt;/a> evita un spawn de subproceso que disparaba una preasignación de memoria de 9 GB de Bun/JSC leyendo &lt;code>.git/HEAD&lt;/code> directamente en lugar de ejecutar &lt;code>git branch&lt;/code>.&lt;/p>
&lt;h3 id="dart-ndk-mueve-el-firmante-amber-y-añade-alby-go-1-click">Dart NDK mueve el firmante Amber y añade Alby Go 1-click&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a>, el Nostr development kit para Flutter, lanzó 11 PRs fusionados. &lt;a href="https://github.com/relaystr/ndk/pull/525">PR #525&lt;/a> mueve el soporte de firmante Amber al paquete ndk_flutter, y &lt;a href="https://github.com/relaystr/ndk/pull/552">PR #552&lt;/a> añade conexión one-click a billetera Alby Go en la app de ejemplo. &lt;a href="https://github.com/relaystr/ndk/pull/502">PR #502&lt;/a> añade un script install.sh para el CLI, y &lt;a href="https://github.com/relaystr/ndk/pull/523">PR #523&lt;/a> elimina la dependencia del verificador Rust en favor de manejo nativo de assets.&lt;/p>
&lt;h2 id="trabajo-de-protocolo-y-especificación">Trabajo de Protocolo y Especificación&lt;/h2>
&lt;h3 id="marmot-mueve-keypackages-a-eventos-direccionables-y-ajusta-las-notificaciones-push">Marmot mueve KeyPackages a eventos direccionables y ajusta las notificaciones push&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot">especificación Marmot&lt;/a> fusionó cuatro PRs que cambian cómo el protocolo maneja material de claves y membresía de grupo. &lt;a href="https://github.com/marmot-protocol/marmot/pull/54">PR #54&lt;/a> migra los eventos KeyPackage de &lt;code>kind:443&lt;/code> regular a &lt;code>kind:30443&lt;/code> direccionable con una etiqueta &lt;code>d&lt;/code>, eliminando la necesidad de borrar eventos &lt;a href="https://nostrcompass.org/es/topics/nip-09/">NIP-09&lt;/a> durante la rotación de claves. Los eventos direccionables se sobrescriben en su lugar, haciendo que la rotación sea autocontenida. &lt;a href="https://github.com/marmot-protocol/marmot/pull/57">PR #57&lt;/a> permite a usuarios no administradores confirmar propuestas SelfRemove (salida voluntaria de grupo), y &lt;a href="https://github.com/marmot-protocol/marmot/pull/62">PR #62&lt;/a> exige que los administradores renuncien a su estatus de admin antes de usar SelfRemove, previniendo que un admin desaparezca mientras aún mantiene privilegios elevados.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot/pull/61">PR #61&lt;/a> ajusta el formato de notificaciones push &lt;a href="https://nostrcompass.org/es/topics/mip-05/">MIP-05&lt;/a>, haciendo explícitos la codificación base64 de blob único, el versionado, el formato wire del token y el uso de claves x-only. El efecto es una única representación wire definida para blobs de tokens y claves x-only a través de especificación, bibliotecas cliente y backends de apps. La implementación de estos cambios de especificación aterrizó en el stack White Noise esta semana y está cubierta en la &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#white-noise-corrige-churn-de-relays-y-ampl%c3%ada-los-controles-del-cliente">sección anterior de White Noise v2026.3.23&lt;/a>.&lt;/p>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>: Static Websites&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>): Define eventos de manifiesto kind &lt;code>15128&lt;/code> (sitio raíz) y kind &lt;code>35128&lt;/code> (sitio nombrado) para alojar sitios web estáticos bajo pares de claves Nostr usando almacenamiento Blossom. Ver el &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#nip-deep-dive-nip-5a-sitios-web-est%c3%a1ticos">deep dive abajo&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-30/">NIP-30&lt;/a> (Custom Emoji): Permitir guiones en shortcodes&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2297">PR #2297&lt;/a>): Actualiza la descripción de shortcode para incluir guiones. Los shortcodes con guiones se han usado en la práctica desde que se introdujo el NIP, así que la especificación ahora documenta el uso actual.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Agent TUI Messages&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2295">PR #2295&lt;/a>): Propone un formato estructurado de mensajes para que los agentes envíen elementos de UI interactivos a través de DMs cifrados, incluyendo payloads tipados &lt;code>text&lt;/code>, &lt;code>buttons&lt;/code>, &lt;code>card&lt;/code> y &lt;code>table&lt;/code>. El borrador mantiene todo dentro del contenido JSON de DMs existentes de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a>. No define un nuevo kind de evento, y usa un formato simple de callback string para respuestas de botones.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-95: Hybrid Peer-to-Peer Relay Protocol&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2293">PR #2293&lt;/a>): Propone un modelo híbrido de relay donde los relays siguen siendo autoritativos pero también pueden coordinar distribución peer-to-peer de eventos recientes sobre WebRTC. El borrador introduce mensajes de relay como &lt;code>PEER_REGISTER&lt;/code>, &lt;code>PEER_REQUEST&lt;/code> y &lt;code>PEER_OFFER&lt;/code>, con clientes estables actuando como Super Peers y el relay actuando como nodo semilla y fallback.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-B9: Zap Poll Events&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2284">PR #2284&lt;/a>): Reabre la antigua idea de NIP-69 zap-poll ahora que &lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a> (Polls) cubre encuestas gratuitas. El borrador usa definiciones de encuesta kind &lt;code>6969&lt;/code> y zaps kind &lt;code>9734&lt;/code> como votos, convirtiéndolo en un sistema de encuestas pagadas con resistencia económica a Sybil. Complementa las encuestas gratuitas de una-clave-un-voto.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-AD: Super Zap&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2289">PR #2289&lt;/a>): Propone una convención donde los zaps enviados a la pubkey de un relay o a la pubkey de un cliente se muestran como notas promocionales especializadas, convirtiendo efectivamente los recibos de zap en una superficie publicitaria. Los operadores de relay y clientes publicarían perfiles con &lt;code>lud16&lt;/code>, obtendrían esos recibos, extraerían el contenido incrustado de descripciones de zap, y opcionalmente fijarían umbrales mínimos de sats para suprimir spam.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Agent Reputation Attestations&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2285">PR #2285&lt;/a>): Propone kind &lt;code>30085&lt;/code> como evento reemplazable parametrizado para atestaciones estructuradas de reputación sobre agentes Nostr. El borrador evita una puntuación global única haciendo que la reputación dependa del observador, añade decaimiento temporal para que las atestaciones antiguas pierdan peso, soporta valoraciones negativas con requisitos de evidencia, y esboza tanto puntuación ponderada simple como puntuación por diversidad de grafo para una mejor resistencia Sybil.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Paid API Service Announcements&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2291">PR #2291&lt;/a>): Propone eventos direccionables kind &lt;code>31402&lt;/code> para anunciar APIs HTTP pagadas, con Nostr manejando descubrimiento y el pago a través de HTTP 402. El borrador está orientado a tags para que los relays puedan filtrar por métodos de pago, precios y capacidades sin parsear contenido JSON, y permite request y response schemas opcionales para que clientes o agentes puedan autogenerar llamadas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Key Derivation from LNURL-auth via SplitSig&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2294">PR #2294&lt;/a>): Propone derivar un par de claves Nostr a partir de una firma ECDSA LNURL-auth combinada con un nonce aleatorio del lado cliente. La fórmula de derivación es &lt;code>nsec = SHA256(ecdsa_signature || nonce)&lt;/code>. El servidor ve la firma ECDSA (inherente al handshake LNURL-auth) pero nunca ve el nonce, y el navegador genera el nonce pero no controla la firma. Ninguna pieza por sí sola puede derivar el nsec. El resultado pretendido es que la misma billetera Lightning produzca la misma clave Nostr a través de dispositivos, con la billetera como ancla de recuperación y ningún servidor capaz de reconstruir la clave privada.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>: Documentar campo rejected&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2290">PR #2290&lt;/a>): Documenta el campo &lt;code>rejected&lt;/code> para respuestas de firmantes basadas en intent, formalizando el comportamiento que &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amethyst-lanza-notas-fijadas-gesti%c3%b3n-de-relays-y-request-to-vanish">la corrección de Amethyst v1.07.x&lt;/a> tuvo que sortear.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-5a-static-websites">NIP Deep Dive: NIP-5A (Static Websites)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> define cómo alojar sitios web estáticos bajo pares de claves Nostr, usando dos kinds de evento e infraestructura existente de almacenamiento de blobs para convertir eventos firmados en páginas web servidas. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">especificación&lt;/a> se fusionó el 25 de marzo vía &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>.&lt;/p>
&lt;p>El modelo usa kind &lt;code>15128&lt;/code> para un sitio raíz, uno por pubkey, y kind &lt;code>35128&lt;/code> para sitios nombrados identificados por una etiqueta &lt;code>d&lt;/code>. Cada manifiesto mapea rutas URL absolutas a hashes SHA256. Aquí hay un manifiesto de sitio raíz:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5324d695ed7abf7cdd2a48deb881c93b7f4e43de702989bbfb55a1b97b35a3de&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">15128&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/index.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;186ea5fd14e88fd1ac49351759e7ab906fa94892002b60bf7f5a428f28ca1c99&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/about.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/favicon.ico&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;server&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://blossom.primal.net&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;My Nostr Site&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;A static website hosted on Nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://github.com/lez/nsite&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f4e4a9e785f70e9fcaa855d769438fea10781e84cd889e3fcb823774f83d094cf2c05d5a3ac4aebc1227a4ebc3d56867286c15a6df92d55045658bb428fd5fb5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El flujo de servicio funciona en tres pasos. Un servidor host recibe una solicitud HTTP, extrae la pubkey del autor desde el subdominio (ya sea un npub para sitios raíz o una pubkey codificada en base36 para sitios nombrados), obtiene la lista de relays del autor vía &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a>, y consulta el manifiesto del sitio. Una vez encontrado el manifiesto, el servidor resuelve la ruta solicitada a un hash de contenido, descarga el blob correspondiente desde el servidor o servidores Blossom listados en las etiquetas &lt;code>server&lt;/code>, y lo devuelve.&lt;/p>
&lt;p>El formato DNS del subdominio está especificado de forma estricta. Los sitios raíz usan el npub estándar como subdominio. Los sitios nombrados usan una codificación base36 de 50 caracteres de la pubkey en bruto seguida del valor de la etiqueta &lt;code>d&lt;/code>, todo en una sola etiqueta DNS. Debido a que las etiquetas DNS están limitadas a 63 caracteres y la codificación base36 siempre ocupa 50, la etiqueta &lt;code>d&lt;/code> queda limitada a 13 caracteres. La especificación también exige que las etiquetas &lt;code>d&lt;/code> coincidan con &lt;code>^[a-z0-9-]{1,13}$&lt;/code> y no terminen con guion, previniendo ambigüedades de resolución DNS.&lt;/p>
&lt;p>Usar hashes de contenido significa que el mismo sitio puede servirse desde distintos servidores host, y la integridad del archivo es verificable sin confiar en el servidor. Un servidor host no necesita almacenar archivos por sí mismo. Los obtiene bajo demanda desde Blossom usando los hashes del manifiesto. Eso significa que el autor controla qué se sirve, el servidor Blossom almacena los archivos en bruto, y el servidor host solo conecta ambos. Cualquiera de estos tres componentes puede reemplazarse de forma independiente.&lt;/p>
&lt;p>Las implementaciones existentes incluyen &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, el servidor host que resuelve manifiestos y sirve archivos, y &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, una UI para construir y publicar manifiestos. La especificación también añadió una etiqueta &lt;code>source&lt;/code> para enlazar al repositorio del código fuente del sitio, y la actualización de README fusionada por separado en &lt;a href="https://github.com/nostr-protocol/nips/pull/2286">PR #2286&lt;/a> registró tanto kind &lt;code>15128&lt;/code> como &lt;code>35128&lt;/code> en el índice de kinds del NIP.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-62-request-to-vanish">NIP Deep Dive: NIP-62 (Request to Vanish)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">NIP-62&lt;/a> define kind &lt;code>62&lt;/code> como una solicitud a relays para eliminar todos los eventos de la pubkey que la solicita. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">especificación&lt;/a> tiene motivación legal: en jurisdicciones con leyes de derecho al olvido, disponer de una solicitud de eliminación estandarizada y firmada da a los operadores de relays una señal clara para actuar.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a7b8c9d0e1f23456789012345678901234567890abcdef1234567890abcdef12&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">62&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relay&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Requesting deletion of all events from this relay.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La especificación separa solicitudes de desaparición dirigidas y globales. Una solicitud dirigida incluye etiquetas &lt;code>relay&lt;/code> específicas identificando qué relays deben actuar. Una solicitud global usa la cadena literal &lt;code>ALL_RELAYS&lt;/code> como valor de la etiqueta relay, pidiendo a cada relay que vea el evento que elimine todos los eventos de esa pubkey. Los relays que cumplan también deben asegurar que los eventos eliminados no puedan volver a re-publicarse en ese relay, haciendo que la eliminación quede pegajosa.&lt;/p>
&lt;p>NIP-62 va más allá de &lt;a href="https://nostrcompass.org/es/topics/nip-09/">NIP-09&lt;/a> (Event Deletion) tanto en alcance como en intención. NIP-09 permite borrar eventos individuales, y los relays MAY cumplir. NIP-62 solicita la eliminación de todo, y la especificación dice que los relays MUST cumplir si su URL está etiquetada. También pide a los relays borrar eventos &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) que tengan una p-tag con la pubkey solicitante, lo que significa que los DMs entrantes se limpian junto con los propios eventos del usuario. Publicar una eliminación NIP-09 contra una solicitud de desaparición NIP-62 no tiene efecto: una vez que desapareces, no puedes des-desaparecer borrando la solicitud de desaparición.&lt;/p>
&lt;p>Esta semana, &lt;a href="https://nostrcompass.org/es/newsletters/2026-04-01-newsletter/#amethyst-lanza-notas-fijadas-gesti%c3%b3n-de-relays-y-request-to-vanish">Amethyst v1.07.0&lt;/a> lanzó soporte del lado del cliente para NIP-62, permitiendo a los usuarios iniciar solicitudes de desaparición desde la app. Del lado relay, &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> tiene cuatro PRs abiertos añadiendo soporte NIP-62 a través de los backends memory, LMDB, SQLite y database test (&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>). Esto coloca el trabajo de soporte en clientes y relays en la misma semana.&lt;/p>
&lt;p>El diseño del protocolo plantea una tensión práctica. La propuesta de valor de Nostr incluye resistencia a la censura, lo que significa que los relays no deberían poder impedir la publicación. NIP-62 introduce un caso donde un relay MUST impedir la republicación de una pubkey específica. Las dos propiedades coexisten porque la solicitud está auto-dirigida: estás pidiendo la eliminación de tus propios eventos, no de los de otra persona. La propiedad de resistencia a la censura permanece intacta para todos excepto para la persona que explícitamente decidió salir.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #15</title><link>https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> continúa su lanzamiento de billetera 3.0 con &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#primal-a%c3%b1ade-follow-packs-enriquecimiento-de-zaps-y-deep-links">Follow Packs, enriquecimiento de zaps, y deep links &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> publica un &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#bigbrotr-mapea-claves-privadas-expuestas-a-trav%c3%a9s-de-la-red-de-relays">análisis de nsec filtrados&lt;/a> escaneando 41 millones de eventos a través de 1.085 relays, encontrando 16.599 claves privadas válidas, mientras &lt;a href="https://npub.world">npub.world&lt;/a> integra advertencias de filtraciones en páginas de perfil la misma semana. Martti Malmi lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostr-vpn-se-lanza-como-alternativa-a-tailscale">nostr-vpn&lt;/a>, una alternativa a Tailscale que señaliza sobre relays Nostr y crea túneles WireGuard, publicando 11 versiones en siete días. El equipo de &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#doom-de-c%c3%b3digo-abierto-corre-peer-to-peer-sobre-nostr">libera DOOM P2P de código abierto&lt;/a> sobre Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#fips-v020-lanza-transporte-tor-builds-reproducibles-y-ejemplos-sidecar">v0.2.0&lt;/a>, y &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> se expande a &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostrability-schemata-se-vuelve-multiling%c3%bce">seis lenguajes&lt;/a> en una semana.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> continúa su lanzamiento de billetera 3.0 con &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#primal-a%c3%b1ade-follow-packs-enriquecimiento-de-zaps-y-deep-links">Follow Packs, enriquecimiento de zaps, y deep links &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> publica un &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#bigbrotr-mapea-claves-privadas-expuestas-a-trav%c3%a9s-de-la-red-de-relays">análisis de nsec filtrados&lt;/a> escaneando 41 millones de eventos a través de 1.085 relays, encontrando 16.599 claves privadas válidas, mientras &lt;a href="https://npub.world">npub.world&lt;/a> integra advertencias de filtraciones en páginas de perfil la misma semana. Martti Malmi lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostr-vpn-se-lanza-como-alternativa-a-tailscale">nostr-vpn&lt;/a>, una alternativa a Tailscale que señaliza sobre relays Nostr y crea túneles WireGuard, publicando 11 versiones en siete días. El equipo de &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#doom-de-c%c3%b3digo-abierto-corre-peer-to-peer-sobre-nostr">libera DOOM P2P de código abierto&lt;/a> sobre Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> lanza &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#fips-v020-lanza-transporte-tor-builds-reproducibles-y-ejemplos-sidecar">v0.2.0&lt;/a>, y &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> se expande a &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostrability-schemata-se-vuelve-multiling%c3%bce">seis lenguajes&lt;/a> en una semana.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="primal-añade-follow-packs-enriquecimiento-de-zaps-y-deep-links">Primal añade Follow Packs, enriquecimiento de zaps y deep links&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/">Siguiendo la cobertura de 3.0.7 de la semana pasada&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> pasó esta semana en trabajo post-lanzamiento alrededor de onboarding, UX del compositor, y contexto de billetera. El onboarding rediseñado introduce Follow Packs (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>), un botón nativo de GIF se une al compositor de notas, un servicio de enriquecimiento de zaps (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>) anota transacciones de billetera con contexto de zap, y un protocolo de deep-linking &lt;code>primalconnect://&lt;/code> (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>) habilita navegación entre apps.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> está lanzando el mismo trabajo a través de TestFlight en paralelo, con el cambio de billetera (&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>), implementación de encuestas, y refactorización del onboarding aterrizando en la misma ventana.&lt;/p>
&lt;h3 id="bigbrotr-mapea-claves-privadas-expuestas-a-través-de-la-red-de-relays">BigBrotr mapea claves privadas expuestas a través de la red de relays&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la plataforma de analíticas de relays Nostr, publicó un &lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">análisis detallado de claves privadas expuestas&lt;/a> en la red de relays. El estudio escaneó 41 millones de eventos de 1.085 relays, buscando cadenas nsec válidas incrustadas en el contenido de eventos, y encontró 16.599 claves privadas válidas. Ese número parece alarmante hasta que filtras un bot llamado &amp;ldquo;Mr.nsec&amp;rdquo; que representa el 92% de las coincidencias. Después de eliminar el tráfico de bots, solo 38 cuentas reales con más de 21.000 seguidores combinados tenían claves expuestas, y ninguna mostraba señales de saber que sus claves eran públicas.&lt;/p>
&lt;p>El equipo construyó un nsec-leak-checker como servicio &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), permitiendo a los usuarios verificar si su clave privada aparece en algún lugar del dataset escaneado sin revelar la clave al verificador. &lt;a href="https://npub.world">npub.world&lt;/a> integró los datos de filtraciones la misma semana, mostrando banners de advertencia en páginas de perfil donde se detectaron claves expuestas. La combinación da a la red tanto una interfaz programática para DVMs y agentes como una advertencia legible para usuarios regulares. El dataset subyacente también alimenta &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>, que añade vistas materializadas de eventos reemplazables y direccionables y una corrección de timeout de inactividad del sincronizador.&lt;/p>
&lt;h3 id="nostr-vpn-se-lanza-como-alternativa-a-tailscale">Nostr VPN se lanza como alternativa a Tailscale&lt;/h3>
&lt;p>Martti Malmi (mmalmi), creador de Iris, construyó y lanzó &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, una VPN peer-to-peer que usa relays Nostr para señalización y WireGuard (vía boringtun) para túneles cifrados. La motivación fue directa: &amp;ldquo;Me molestó que Tailscale requiera cuentas de terceros, así que creé Nostr VPN.&amp;rdquo; La herramienta crea redes mesh entre dispositivos usando pares de claves Nostr como identidad, sin servidor de coordinación central.&lt;/p>
&lt;p>El proyecto lanzó 11 versiones en siete días, desde &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a> hasta &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>. Ese sprint añadió soporte de Windows, emparejamiento LAN para descubrimiento de red local, y un sidecar Android para dispositivos móviles. La arquitectura es simple: dos dispositivos intercambian metadatos de conexión sobre relays Nostr, luego establecen un túnel WireGuard directo. Nostr maneja el descubrimiento y la señalización de NAT traversal. WireGuard maneja el tráfico real. La identidad es un par de claves Nostr.&lt;/p>
&lt;p>Malmi también continuó impulsando &lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>, una biblioteca de canal de mensajería segura estilo Signal, lanzando seis versiones desde &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a> hasta &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a> durante la misma semana.&lt;/p>
&lt;h3 id="doom-de-código-abierto-corre-peer-to-peer-sobre-nostr">DOOM de código abierto corre peer-to-peer sobre Nostr&lt;/h3>
&lt;p>El equipo de &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> liberó una implementación multijugador peer-to-peer de DOOM que usa Nostr para descubrimiento de pares, &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> para cifrado de extremo a extremo, e &lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>, la biblioteca de redes QUIC de n0, para transporte gossip. El juego se distribuye como un archivo WebXDC de 4,2 MB que puede enviarse dentro de mensajes de chat, sin requerir servidores para alojar o coordinar una partida.&lt;/p>
&lt;p>El enfoque técnico reemplaza el netcode lockstep original de 1993 con un modelo de sincronización híbrida en tiempo real. Los jugadores se descubren mutuamente a través de consultas a relays Nostr, negocian sesiones a través de canales cifrados con Marmot, y luego pasan a la capa gossip QUIC de Iroh para el tráfico de juego de baja latencia. El stack usa Nostr para descubrimiento, Marmot para cifrado, e Iroh para transporte.&lt;/p>
&lt;p>Vector también lanzó endurecimiento de seguridad esta semana. El lanzamiento añade un almacén de claves endurecido en memoria con protecciones anti-debug y zeroize para material criptográfico sensible, bloqueo de usuarios con filtrado completo de DMs y mensajes de grupo, y correcciones de canales en tiempo real WebXDC para Mini Apps.&lt;/p>
&lt;h3 id="fips-v020-lanza-transporte-tor-builds-reproducibles-y-ejemplos-sidecar">FIPS v0.2.0 lanza transporte Tor, builds reproducibles y ejemplos sidecar&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, el Free Internetworking Peering System y proyecto de redes mesh adyacente a Nostr, lanzó &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>. El lanzamiento añade soporte de transporte Tor para enlaces mesh anonimizados, builds reproducibles, un ejemplo sidecar que conecta a través de un relay Nostr, y publicación de versiones Nostr en el flujo de trabajo de paquetes OpenWrt. El lanzamiento también corrige picos de jitter post-rekey causados por frames de ventana de drenaje. El formato de cable cambió desde v0.1.0, por lo que los nodos v0.1.0 existentes no pueden interoperar con v0.2.0 sin actualizar.&lt;/p>
&lt;h3 id="nostrability-schemata-se-vuelve-multilingüe">Nostrability Schemata se vuelve multilingüe&lt;/h3>
&lt;p>El proyecto &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>, que mantiene definiciones JSON Schema para validar kinds de eventos Nostr, se expandió de solo JavaScript a seis lenguajes en una semana. Nuevos paquetes se lanzaron para Rust, Go, Dart, Swift y Python, cada uno proporcionando tanto un paquete de datos como un validador. &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a> también añadió 17 nuevos schemas de kinds de evento.&lt;/p>
&lt;p>El &lt;a href="https://nostrability.github.io/nostrability/">tracker de interoperabilidad de Nostrability&lt;/a> recibió una renovación en paralelo. Una nueva pestaña Novedades publica actualizaciones a través de un feed Atom y un evento Nostr, el filtrado por categoría de app permite a los visitantes profundizar en tipos de cliente específicos, y el tracker ahora auto-detecta lenguajes de programación desde metadatos de repositorios GitHub. Nostrability también tiene su propio npub ahora, haciendo al proyecto mismo descubrible a través del protocolo que documenta. Para autores de bibliotecas que trabajan a través de lenguajes, los paquetes de schemas multi-lenguaje significan que las mismas definiciones de kinds de evento están disponibles como importaciones nativas en lugar de requerir que cada proyecto mantenga su propia copia de schemas.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="amethyst-v1060-y-v1061">Amethyst v1.06.0 y v1.06.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android mantenido por vitorpamplona, lanzó &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a> y &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a> el 23 de marzo. La funcionalidad principal es soporte de encuestas usando datos de &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) para votación ponderada, con tarjetas rediseñadas de encuestas y encuestas con zap. El nuevo renderizado da a las encuestas estándar y a las encuestas ponderadas por zap un diseño visual más limpio. v1.06.1 sigue con correcciones de crashes por modificación concurrente que abordan regresiones de estabilidad introducidas en la ruta de renderizado de encuestas.&lt;/p>
&lt;h3 id="amber-v500-y-v501">Amber v5.0.0 y v5.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), promovió su reciente trabajo pre-release 4.1.x a estable con &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.0">v5.0.0&lt;/a> el 18 de marzo. Ese lanzamiento estable lleva los cambios de autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>, Tor integrado, permisos específicos por tipo de contenido, y almacenamiento cifrado de PIN cubiertos la semana pasada. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.1">v5.0.1&lt;/a> luego elimina el permiso de internet de la variante de build offline, para que esa build ya no pueda hacer solicitudes de red a nivel de permisos Android.&lt;/p>
&lt;h3 id="mostro-v0170-y-mostro-mobile-v122">Mostro v0.17.0 y Mostro Mobile v1.2.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el exchange peer-to-peer de Bitcoin construido sobre Nostr, lanzó &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.0">v0.17.0&lt;/a> el 18 de marzo. El lanzamiento del servidor continúa el trabajo de disputas y calificaciones del ciclo v0.16.x, añadiendo datos de reputación comercial más completos para compradores y vendedores como eventos Nostr. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, el cliente Flutter, siguió con &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.2">v1.2.2&lt;/a> el 23 de marzo, manteniendo la interfaz móvil sincronizada con los últimos cambios del protocolo.&lt;/p>
&lt;h3 id="shosho-v0140">Shosho v0.14.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, la app de streaming en vivo de Nostr, lanzó &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.14.0">v0.14.0&lt;/a> el 19 de marzo con el lanzamiento de Shosho Shop. El lanzamiento añade una pestaña Shop en perfiles, Shop en Explorar, y un botón In-Live Shop en lives y clips. Las notas de lanzamiento dicen que los &amp;ldquo;productos Nostr&amp;rdquo; existentes aparecen automáticamente y los compradores hacen clic para ir a la página de Plebeian Market del vendedor para la compra. Las notas de lanzamiento de Shosho no identifican el kind de evento de listado, por lo que aún no es posible confirmar si Shosho Shop lee los mismos listados clasificados &lt;a href="https://nostrcompass.org/es/topics/nip-99/">NIP-99&lt;/a> que &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> soporta explícitamente en su README.&lt;/p>
&lt;h3 id="applesauce-v520">Applesauce v5.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, la colección de paquetes auxiliares de hzrd149 para construir aplicaciones Nostr, lanzó &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core@5.2.0">v5.2.0&lt;/a> el 22 de marzo. El lanzamiento abarca seis paquetes. El paquete SQLite corrige una colisión de restricción UNIQUE en etiquetas de eventos que causaba inserciones duplicadas. El paquete de firmantes añade &lt;code>AndroidNativeSigner&lt;/code>, que envuelve la interfaz nativa de firmante Android &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> para que las apps basadas en web-view puedan usar firma respaldada por hardware sin código bridge personalizado. El paquete de relay añade un campo &lt;code>challenge&lt;/code> a los objetos de estado de relay y pool, rastreando el estado de autenticación &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> para que las apps puedan detectar cuando un relay solicita autenticación y responder programáticamente. El paquete core gana los métodos &lt;code>isEventPointerSame&lt;/code> e &lt;code>isAddressPointerSame&lt;/code> para deduplicar referencias de eventos, y el paquete common añade &lt;code>user.blossomServers$&lt;/code> para resolver los servidores de medios Blossom de un usuario. Applesauce alimenta noStrudel, Satellite, y varios otros clientes web, así que estas correcciones se propagan a través de la capa de clientes web.&lt;/p>
&lt;h3 id="wisp-lanza-16-versiones-en-una-semana">Wisp lanza 16 versiones en una semana&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, el cliente Nostr para Android, lanzó 16 versiones desde &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.9.3-beta">v0.9.3-beta&lt;/a> hasta &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.13.1-beta">v0.13.1-beta&lt;/a> esta semana. Las adiciones de funcionalidades incluyen soporte multi-cuenta, un modo zen de notificaciones para interrupciones reducidas, borradores y publicaciones programadas, filtros de seguridad de contenido, y un nuevo ícono de llama.&lt;/p>
&lt;h3 id="manent-v120">Manent v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, la app de notas privadas cifradas y almacenamiento de archivos, lanzó &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.2.0">v1.2.0&lt;/a> el 20 de marzo. El lanzamiento añade captura con cámara directamente desde la app, redimensionamiento de imágenes antes de subir para reducir costos de almacenamiento, y zoom con pellizco para revisar imágenes almacenadas. Manent almacena notas y archivos cifrados en relays Nostr usando el par de claves del usuario, haciendo de la app de teléfono o escritorio un cliente ligero que puede reconstruir su estado completo desde los datos del relay.&lt;/p>
&lt;h3 id="divine-107">diVine 1.0.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de vídeos cortos, lanzó &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.7">1.0.7&lt;/a> el 21 de marzo con un watchdog de reproducción de vídeo que auto-reanuda vídeos estancados. Después de la infraestructura de pruebas E2E y la carga directa de MP4 en &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#divine-ships-v106-with-e2e-test-infrastructure-and-nip-49-import">v1.0.6&lt;/a>, este lanzamiento apunta a la ruta de fallo de reproducción restante: vídeos que se detienen a mitad de stream sin lanzar un error.&lt;/p>
&lt;h3 id="alby-extension-v3142">Alby Extension v3.14.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/lightning-browser-extension">Alby Extension&lt;/a>, la extensión de navegador &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a> (Browser Extension Signer), lanzó &lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.2">v3.14.2&lt;/a> el 18 de marzo con visualización de códigos QR de dirección Lightning y soporte de firma Schnorr. La adición de Schnorr alinea la extensión de navegador con el esquema de firma secp256k1 que Nostr usa nativamente.&lt;/p>
&lt;h3 id="noornote-v065-a-v0611">NoorNote v0.6.5 a v0.6.11&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, la app de toma de notas, lanzó siete versiones desde &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.5">v0.6.5&lt;/a> hasta &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.11">v0.6.11&lt;/a>. La adición principal son Follow Packs: paquetes curados de cuentas que los usuarios pueden explorar y suscribirse en bloque, similar a las Listas de Twitter pero diseñados para onboarding. Los usuarios pueden crear, editar y compartir Follow Packs con títulos, descripciones e imágenes de portada personalizados. La serie también actualiza la biblioteca Nostr subyacente de NDK v2 a v3, que trae manejo mejorado de conexión de relay y gestión de suscripciones. Notas con imagen y una experiencia rediseñada de conexión de relay completan la serie.&lt;/p>
&lt;h3 id="nak-v0191-y-v0192">nak v0.19.1 y v0.19.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, el toolkit de línea de comandos de Nostr de fiatjaf para interactuar con relays, codificar y decodificar identificadores &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), firmar eventos, y consultar datos de relay, lanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a> y &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.2">v0.19.2&lt;/a> el 17 y 20 de marzo. Los dos point releases siguen la adición de UI de foro de grupo de &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/">v0.19.0&lt;/a> de la semana pasada.&lt;/p>
&lt;h3 id="calendar-by-form-v021">Calendar by Form* v0.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, la app de calendario descentralizada construida sobre &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), lanzó &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.1">v0.2.1&lt;/a> el 20 de marzo. El lanzamiento corrige un problema de plantilla de notificaciones que afectaba los recordatorios de eventos. Calendar almacena eventos como eventos Nostr kind 31922 (basados en fecha) y kind 31923 (basados en hora), permitiendo a cualquier cliente Nostr renderizar datos de calendario si elige soportar esos kinds. La app está construida por el equipo Formstr, que también mantiene Formstr (formularios descentralizados) y Pollerama (encuestas).&lt;/p>
&lt;h3 id="nym-v350-a-v353">NYM v3.50 a v3.53&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a>, el cliente de chat efímero ligero conectado con Bitchat, lanzó 28 versiones de v3.50 a v3.53 (las versiones de parche se incrementan rápidamente). La funcionalidad más notable es Nymbot, un bot de chat integrado que responde a menciones &lt;code>@nymbot&lt;/code> en canales y proporciona funciones de estado y gestión de relays. Un &amp;ldquo;modo hardcore&amp;rdquo; genera un par de claves nuevo para cada mensaje enviado, haciendo los hilos de conversación no enlazables a nivel de identidad. La contrapartida es clara: pierdes identidad persistente pero ganas anonimato por mensaje. La capa de proxy de relay también recibió trabajo, con workers proxy de relay fragmentados para mejor conectividad, soporte de canales geohash, y tolerancia de desviación de reloj para nodos con relojes de sistema imprecisos.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="ditto-añade-puente-bluesky-e-integración-con-wikipedia">Ditto añade puente Bluesky e integración con Wikipedia&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, el cliente social Nostr personalizable del equipo Soapbox, registró más de 300 commits esta semana a través de tres líneas de funcionalidades distintas. La primera es un puente Bluesky (19 commits) que renderiza publicaciones de Bluesky en línea como hilos completos estilo feed, añade navegación lateral a una página de descubrimiento Bluesky respaldada por el feed oficial Discover (whats-hot), y conecta botones de acción para comentar, compartir, reaccionar y copiar enlaces. Cuando un usuario responde a una publicación de Bluesky desde dentro de Ditto, el modal de composición muestra un aviso de descargo señalando la naturaleza cross-protocol de la interacción. Las reacciones kind 17 de &lt;a href="https://nostrcompass.org/es/topics/nip-73/">NIP-73&lt;/a> (External Content IDs) alimentan el modelo cross-protocol: un usuario Nostr reacciona a una publicación de Bluesky, y la reacción se almacena como un evento Nostr estándar referenciando el identificador de contenido externo. Este es el mismo patrón NIP-73 que podría conectar reacciones a cualquier contenido externo, desde publicaciones de Bluesky hasta vídeos de YouTube o páginas web.&lt;/p>
&lt;p>La segunda línea es una integración con Wikipedia (9 commits). Ditto ahora renderiza contenido rico de artículos de Wikipedia en páginas de detalle en lugar de previsualizaciones de enlace genéricas, añade autocompletado de búsqueda con miniaturas de artículos, y proporciona una página &lt;code>/wikipedia&lt;/code> que extrae contenido destacado de la API de Wikipedia. Los resultados de Wikipedia y Archive.org también aparecen en el dropdown de autocompletado de búsqueda general. La tercera línea es soporte de plataforma iOS vía Capacitor, con un script de build remoto y configuración de plataforma aterrizando junto a una renovación de UI (55 commits) que reemplaza encabezados backdrop-blur con un nuevo diseño de navegación basado en arco a través de cada página de la app. Los 314 commits mueven a Ditto de un cliente solo Nostr hacia un agregador multi-protocolo que trata Bluesky y Wikipedia como fuentes de contenido de primera clase junto al feed Nostr.&lt;/p>
&lt;h3 id="pika-construye-un-pipeline-ci-de-forge-nip-34">Pika construye un pipeline CI de forge NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, la app de mensajería cifrada basada en Marmot, fusionó 33 PRs esta semana enfocados en un forge &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> auto-alojado con CI pre-merge. El forge es una capa de alojamiento git que recibe parches como eventos NIP-34, ejecuta verificaciones CI antes del merge, y reporta estado estructurado de vuelta a través de eventos Nostr. &lt;a href="https://github.com/sledtools/pika/pull/701">PR #701&lt;/a> añade CI pre-merge y nocturno basado en carriles, donde cada ruta de código (Rust, TypeScript, builds Apple) corre en su propio carril con estado independiente de éxito/fallo. &lt;a href="https://github.com/sledtools/pika/pull/715">PR #715&lt;/a> recorta los agentes CI gestionados a contenedores Incus OpenClaw para aislamiento, y &lt;a href="https://github.com/sledtools/pika/pull/733">PR #733&lt;/a> añade un CLI &lt;code>ph forge&lt;/code> para interactuar con el forge alojado desde la línea de comandos. PRs de soporte manejan permisos de escritura de repo para merges (&lt;a href="https://github.com/sledtools/pika/pull/736">PR #736&lt;/a>), metadatos CI estructurados con insignias de estado en vivo (&lt;a href="https://github.com/sledtools/pika/pull/722">PR #722&lt;/a>), splits de build nocturno Apple (&lt;a href="https://github.com/sledtools/pika/pull/738">PR #738&lt;/a>), y correcciones de autenticación y búsqueda de ramas del forge (&lt;a href="https://github.com/sledtools/pika/pull/734">PR #734&lt;/a>). Este es uno de los primeros sistemas CI/CD funcionales construidos sobre eventos git NIP-34, moviendo el alojamiento de código fuente basado en Nostr más allá del intercambio básico de parches hacia el flujo de trabajo de merge-y-test que los desarrolladores esperan de GitHub o GitLab.&lt;/p>
&lt;h3 id="nostria-añade-comunidades-fragmentos-de-código-y-manejo-de-eventos-de-voz">Nostria añade comunidades, fragmentos de código y manejo de eventos de voz&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente Nostr multiplataforma mantenido por sondreb, pasó esta semana extendiendo la superficie de la app más allá del filtrado Web of Trust cubierto en #14. La adición principal es una implementación completa de &lt;a href="https://nostrcompass.org/es/topics/nip-72/">NIP-72&lt;/a> (Moderated Communities) con creación de comunidades, configuración de moderadores y relays, seguimiento de aprobación de publicaciones con previsualizaciones de imágenes, y una página de comunidad dedicada con pestañas de Publicaciones y Moderadores.&lt;/p>
&lt;p>El mismo período de trabajo también añade renderizado y edición de fragmentos de código con un editor con resaltado de sintaxis, soporte de respuesta a eventos de voz para conversaciones de audio, configuración de relays de chat para mensajes directos, compartir canales a través de la Web Share API, un sistema de acoplamiento de barra de herramientas para el reproductor de medios, registro en la app para el último servicio Web of Trust de Brainstorm, flujos de enviar y recibir dinero en DMs usando NWC e invoices BOLT-11, manejo nativo de GIFs Nostr, y una ruta de importación RSS más robusta para músicos que puede recoger splits Lightning existentes de feeds de podcast.&lt;/p>
&lt;h3 id="iteración-rápida-de-nostr-vpn">Iteración rápida de nostr-vpn&lt;/h3>
&lt;p>Más allá del &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostr-vpn-se-lanza-como-alternativa-a-tailscale">lanzamiento inicial&lt;/a>, el log de commits de &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a> revela los problemas específicos encontrados durante el despliegue real. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.3">v0.2.3&lt;/a> a &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.5">v0.2.5&lt;/a> añadieron el script de instalación inicial y CLI multiplataforma. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.6">v0.2.6&lt;/a> y &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.7">v0.2.7&lt;/a> trajeron soporte de Windows, que requirió entrecomillado de rutas UAC para escrituras de configuración y actualizaciones de configuración propiedad del daemon. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.8">v0.2.8&lt;/a> a &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.10">v0.2.10&lt;/a> corrigieron acciones de servicio GUI de Windows, manejo de subprocesos CLI, y configuración de servicio con alcance de máquina. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.12">v0.2.12&lt;/a> reemplazó el descubrimiento LAN con emparejamiento LAN temporizado, un flujo iniciado por el usuario donde dos dispositivos en la misma red local se emparejan sin señalización de relay. El patrón es un libro de texto de pruebas de campo en etapas tempranas: cada versión apunta a un fallo de despliegue específico, la base de usuarios es lo suficientemente pequeña como para iterar diariamente, y el desarrollador usa la herramienta personalmente entre versiones.&lt;/p>
&lt;h3 id="builds-automatizados-de-comet">Builds automatizados de Comet&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/comet">Comet&lt;/a> (anteriormente Captain&amp;rsquo;s Log), la herramienta de escritura de formato largo nativa de Nostr de Nodetec, produjo más de 40 builds alfa automatizados esta semana. Comet es una app de escritorio para escribir y publicar artículos NIP-23 (Long-form Content), con almacenamiento local de borradores, edición markdown, y publicación con un clic al conjunto de relays del usuario. El pipeline de build automatizado genera un lanzamiento etiquetado para cada commit a la rama principal, lo que hace que el conteo bruto de versiones sea engañoso como medida de velocidad de funcionalidades. Lo que los 40 builds sí muestran es que la app está bajo desarrollo activo diario, con cada commit probado, empaquetado y disponible para descarga en minutos.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a> durante la ventana del 17-24 de marzo:&lt;/p>
&lt;p>No se fusionaron NIPs entre el 18 y el 24 de marzo.&lt;/p>
&lt;p>&lt;strong>PRs Abiertos y Discusiones actualizados durante la ventana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AA: Agentes Autónomos en Nostr&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2259">PR #2259&lt;/a>): Propone convenciones para agentes autónomos operando en la red Nostr. El PR define cómo los agentes se identifican, descubren servicios, y coordinan con otros agentes y humanos a través de eventos Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> (Search): Extensiones de ordenamiento&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2283">PR #2283&lt;/a>): Añade parámetros de ordenamiento a las consultas de búsqueda NIP-50, incluyendo top, hot, zaps y new. Esto permitiría a los clientes solicitar resultados clasificados de relays que soportan búsqueda de texto completo en lugar de ordenar del lado del cliente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-A5: Programas WASM&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): Propone una convención para publicar y descubrir programas WebAssembly en Nostr. Los binarios WASM podrían distribuirse como eventos Nostr, con relays sirviendo como capa de descubrimiento para código ejecutable portátil.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-CF: Combine Forces napps interoperables&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2277">PR #2277&lt;/a>): Define una convención para aplicaciones Nostr interoperables (&amp;ldquo;napps&amp;rdquo;) que pueden componer funcionalidad a través de diferentes clientes y servicios.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP de Snapshots&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>): Propone un mecanismo para snapshots de estado de relay, para sincronización y respaldo de relays.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP de Checkpoints&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2278">PR #2278&lt;/a>): Propone eventos de checkpoint para marcar estado de relay conocido como bueno, complementando la propuesta de snapshots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> (Badges): Refactorización de Badge Sets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Reestructura cómo se organizan y referencian las colecciones de insignias.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document): Extensiones&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2280">PR #2280&lt;/a>): Añade campos adicionales al documento de información del relay para metadatos de relay más ricos legibles por máquinas.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinco-años-de-marzos-de-nostr">Cinco Años de Marzos de Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#cinco-a%C3%B1os-de-febreros-de-nostr">El boletín del mes pasado&lt;/a> cubrió cómo los febreros de Nostr progresaron desde la reescritura de NIP-01 (Basic Protocol Flow) pasando por la ola de Damus en la App Store hasta redes de malla y propuestas de agentes. Esta retrospectiva traza lo que sucedió cada marzo desde 2021 hasta 2026.&lt;/p>
&lt;h3 id="marzo-2021-dos-commits">Marzo 2021: Dos Commits&lt;/h3>
&lt;p>Cuatro meses de existencia, el marzo de Nostr produjo exactamente dos commits al repositorio del protocolo, ambos el 4 de marzo. fiatjaf &lt;a href="https://github.com/nostr-protocol/nostr/commit/dcd8cc3">añadió enlaces a instancias de nostwitter&lt;/a>, señalando a los primeros visitantes hacia despliegues funcionales, y &lt;a href="https://github.com/nostr-protocol/nostr/commit/54dfb46">añadió kind a la definición básica de filtro&lt;/a>. Ese segundo commit es revelador: en marzo de 2021, aún no podías filtrar eventos Nostr por kind. El protocolo era así de primitivo. Dos o tres relays servían la red. El grupo de Telegram era el único canal de coordinación. El repositorio de NIPs no existía aún; las propuestas de protocolo vivían como archivos en el repo principal de nostr. fiatjaf era el único committer ese mes. Toda la producción de marzo 2021 de lo que se convertiría en un protocolo soportando VPNs, juegos multijugador y redes de malla cinco años después cabe en un solo git diff.&lt;/p>
&lt;h3 id="marzo-2022-construcción-pre-damus">Marzo 2022: Construcción Pre-Damus&lt;/h3>
&lt;p>El repositorio principal del protocolo recibió cero commits en marzo de 2022. El desarrollo se había trasladado completamente a repositorios de herramientas. &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, el cliente web Vue.js de fiatjaf y en ese momento la interfaz principal de Nostr, recibió 5 commits incluyendo soporte de despliegue Docker y correcciones de nombre de visualización &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) que eliminaron el prefijo &lt;code>_@&lt;/code> de las insignias de verificación. El &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a> de Robert C. Martin, el cliente de escritorio Clojure, registró 13 o más commits añadiendo threading, navegación por teclado, y una ventana de edición. El autor de software más famoso construyendo activamente en Nostr ese mes no era un desarrollador crypto sino la persona cuyo &amp;ldquo;Clean Code&amp;rdquo; ha vendido millones de copias, escribiendo un cliente Nostr en Clojure, una elección de lenguaje que te dice todo sobre la comunidad temprana: eran programadores con opiniones construyendo para sí mismos.&lt;/p>
&lt;p>La red de relays se había expandido a aproximadamente 15 relays con una base de usuarios activos en los cientos. Damus no existía aún y no sería creado hasta abril de 2022. Nostream tampoco había aparecido. El trabajo del mes fue infraestructura: hacer las herramientas existentes más fiables para la pequeña comunidad que ya las usaba diariamente.&lt;/p>
&lt;h3 id="marzo-2023-infraestructura-post-explosión">Marzo 2023: Infraestructura Post-Explosión&lt;/h3>
&lt;p>Un mes después de la ola de la App Store de Damus y la superación de 300.000 claves públicas, marzo 2023 fue sobre absorber el crecimiento. El &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a> fusionó 28 pull requests, el segundo conteo mensual más alto en la historia del protocolo. &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a> (Lists) se fusionó, dando a los clientes colecciones estructuradas de follows, silenciados y marcadores. &lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles) aterrizó, NIP-78 (Application-Specific Data) proporcionó un kind de almacenamiento de propósito general para apps que necesitaban estado privado, y una reescritura de &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) (&lt;a href="https://github.com/nostr-protocol/nips/pull/392">PR #392&lt;/a>) consolidó el flujo de zaps y clarificó la terminología. El PR más discutido del mes fue una propuesta alternativa de manejo de menciones (&lt;a href="https://github.com/nostr-protocol/nips/pull/381">PR #381&lt;/a>) con más de 50 comentarios.&lt;/p>
&lt;p>El nuevo proyecto más trascendental fue &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> (Nostr Development Kit), la biblioteca TypeScript para conexiones de relay, firma de eventos, caché y gestión de suscripciones. pablof7z hizo el &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/09e5e03">commit inicial&lt;/a> el 16 de marzo de 2023, luego lo reescribió desde cero 11 días después el 27 de marzo (&amp;ldquo;básicamente otro commit inicial&amp;rdquo;), y tenía soporte LNURL y zap funcionando para el 31 de marzo. NDK pasó de nada a capaz de hacer zaps en 15 días. Cinco días después de la creación de NDK, el 21 de marzo, el equipo de Alby creó &lt;a href="https://github.com/getAlby/nostr-wallet-connect">NWC&lt;/a> (Nostr Wallet Connect), la implementación de referencia de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> que conectó billeteras Lightning a aplicaciones Nostr. Los dos proyectos que sustentarían los siguientes tres años de desarrollo Nostr basado en web nacieron en la misma ventana de 30 días. OpenSats aún no había lanzado su fondo Nostr; la primera ola no llegaría hasta &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">julio de 2023&lt;/a>, cuatro meses después de la creación de NDK.&lt;/p>
&lt;p>Otras creaciones notables ese mes incluyeron NostrGit, NostrChat, un proyecto nostr-signing-device por LNbits, y nostrmo. &lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>, el cliente de escritorio Rust enfocado en selección inteligente de relays, lanzó tres versiones. El protocolo estaba en modo de construcción, y las herramientas creadas en marzo 2023 siguen en uso tres años después.&lt;/p>
&lt;h3 id="marzo-2024-maduración-del-protocolo">Marzo 2024: Maduración del Protocolo&lt;/h3>
&lt;p>Marzo 2024 fue sobre endurecer el protocolo para uso a largo plazo. El repositorio de NIPs fusionó 12 pull requests. El más significativo fue &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a> (Git Stuff), &lt;a href="https://github.com/nostr-protocol/nips/pull/997">PR #997&lt;/a>, que se fusionó el 5 de marzo después de más de 130 comentarios y 44 días de revisión. El hilo de discusión es una cápsula del tiempo de la comunidad debatiendo cómo construir un GitHub descentralizado. jb55 trazó paralelos con &lt;code>git send-email&lt;/code>, Giszmo propuso usar hashes de root commit para descubrimiento cross-fork (&amp;ldquo;algo que GitHub no hace y nosotros podríamos&amp;rdquo;), mikedilger sugirió autenticación con eventos firmados &lt;a href="https://nostrcompass.org/es/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth) en lugar de claves SSH, y fiatjaf descartó rotundamente la necesidad de generalidad de control de versiones: &amp;ldquo;not for each version control system, just for git. No one uses the others.&amp;rdquo; A las pocas horas de abrir el PR, fiatjaf ya había cambiado nak, go-nostr y gitstr para aceptar parches sobre Nostr. DanConwayDev, cuyo ngit ya era becario de OpenSats, fue de los contribuidores más activos en la discusión. Un campo de bot para metadatos de perfil también se fusionó, dando a los clientes una forma legible por máquinas de distinguir cuentas automatizadas de humanas.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanzó v0.85.0 con soporte de eventos git, artículos wiki, renderizado de datos médicos, y edición de contenido en un solo lanzamiento. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> alcanzó v0.10.0. &lt;a href="https://github.com/Spl0itable/nosflare">Nosflare&lt;/a>, un relay Nostr serverless corriendo en Cloudflare Workers, demostró que la lógica de relay podía correr en el edge. OpenSats emitió una &lt;a href="https://opensats.org/blog/bruno-garcia-receives-lts-grant">beca de Soporte a Largo Plazo para Bruno Garcia&lt;/a> por contribuciones sostenidas al cliente Amethyst.&lt;/p>
&lt;h3 id="marzo-2025-expansión-de-infraestructura">Marzo 2025: Expansión de Infraestructura&lt;/h3>
&lt;p>Marzo 2025 produjo 10 NIPs fusionados. El titular fue &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring), &lt;a href="https://github.com/nostr-protocol/nips/pull/230">PR #230&lt;/a>, que se fusionó el 3 de marzo después de un viaje de 25 meses. dskvr propuso por primera vez el monitoreo de relays en febrero de 2023, le dijeron que podía hacerse del lado del cliente, explicó por qué conectarse a miles de relays a la vez era impráctico para clientes individuales, pasó por siete borradores completos, construyó nodos de monitoreo en ocho regiones geográficas (Noreste de EE.UU., Brasil, Oeste de EE.UU., Este de EE.UU., Australia, India, Corea, Sudáfrica), y esperó a que las herramientas de relay alcanzaran. Para cuando se fusionó, ya existían implementaciones en nostr.watch, relaypag.es, monitorlizard, Snort, noStrudel y Jumble. Los datos de NIP-66 luego alimentarían los benchmarks de outbox de Nostrability &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#el-modelo-outbox-bajo-la-lupa">cubiertos en Newsletter #12&lt;/a>. NIP-C0 (Code Snippets) también se fusionó (&lt;a href="https://github.com/nostr-protocol/nips/pull/1852">PR #1852&lt;/a>, 63 comentarios), añadiendo eventos kind 1337 para compartir código fuente.&lt;/p>
&lt;p>Los primeros servidores MCP para Nostr aparecieron este mes. &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">nostr-mcp-server&lt;/a> apareció el 23 de marzo y &lt;a href="https://github.com/getAlby/nwc-mcp-server">nwc-mcp-server&lt;/a> el 14 de marzo, solo cuatro meses después de que Anthropic anunciara el Model Context Protocol en noviembre de 2024. Estos puentes tempranos precedieron al SDK completo de &lt;a href="https://nostrcompass.org/es/topics/contextvm/">ContextVM&lt;/a> y al trabajo de comercio de agentes que siguió a finales de 2025 y principios de 2026.&lt;/p>
&lt;p>&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a> lanzó v0.14.0. &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, el cliente web de hodlbod con gestión de feeds consciente de relays, lanzó tres versiones. OpenSats anunció su &lt;a href="https://opensats.org/blog/10th-wave-of-nostr-grants">décima ola de becas Nostr&lt;/a>, continuando el pipeline de financiación que había estado funcionando desde mediados de 2023.&lt;/p>
&lt;h3 id="marzo-2026-convergencia">Marzo 2026: Convergencia&lt;/h3>
&lt;p>&lt;em>La actividad de marzo 2026 se extrae de los números de Nostr Compass &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">#12&lt;/a> al &lt;a href="">#15&lt;/a> (este número).&lt;/em>&lt;/p>
&lt;p>Marzo 2026 es el mes donde hilos dispares convergieron en sistemas funcionales. El &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#marmot-development-kit-lanza-su-primera-versi%C3%B3n-p%C3%BAblica">Marmot Development Kit&lt;/a> lanzó su primera versión pública con medios cifrados, bindings multi-lenguaje, y una migración ChaCha20-Poly1305 que requirió actualizaciones coordinadas a través de especificación, Rust y TypeScript. &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#shopstr-and-milk-market-open-mcp-commerce-surfaces">Shopstr y Milk Market&lt;/a> añadieron superficies de comercio MCP para compras impulsadas por agentes. La autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> aterrizó simultáneamente en &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#nip-42-relay-auth-across-bunker-signer-and-relay">Amber&lt;/a>, strfry, y OAuth Bunker, cerrando el bucle entre software firmante, relay y bunker. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/#notedeck-mueve-el-descubrimiento-de-versiones-a-nostr">Notedeck&lt;/a> lanzó actualizaciones de software nativas de Nostr usando eventos de versión &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> (File Metadata).&lt;/p>
&lt;p>Esta semana, &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#bigbrotr-mapea-claves-privadas-expuestas-a-trav%c3%a9s-de-la-red-de-relays">BigBrotr&lt;/a> escaneó toda la red de relays buscando claves privadas filtradas y publicó tanto el análisis como un verificador DVM. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#nostr-vpn-se-lanza-como-alternativa-a-tailscale">Nostr VPN&lt;/a> demostró que el modelo de claves de Nostr funciona para infraestructura de red, no solo redes sociales. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#doom-de-c%c3%b3digo-abierto-corre-peer-to-peer-sobre-nostr">DOOM&lt;/a> demostró que el descubrimiento Nostr, el cifrado Marmot y el transporte QUIC pueden ejecutar un juego multijugador en tiempo real. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#amber-v500-y-v501">Amber&lt;/a> saltó a v5.0.0. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-25-newsletter/#wisp-lanza-16-versiones-en-una-semana">Wisp&lt;/a> lanzó 16 versiones en siete días. Veinticinco o más lanzamientos etiquetados vinieron de proyectos importantes en una sola semana.&lt;/p>
&lt;p>Siete NIPs se fusionaron en los primeros 24 días del mes. El protocolo añadió marcado Djot de &lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> (Wiki), límites de entrada de &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), lógica de consulta booleana de &lt;a href="https://nostrcompass.org/es/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters), y aserciones Web of Trust de &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Las propuestas abiertas iban desde agentes autónomos (NIP-AA) hasta programas WASM (NIP-A5) y extensiones de ordenamiento de búsqueda para &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;h3 id="mirando-hacia-adelante">Mirando Hacia Adelante&lt;/h3>
&lt;p>Cinco marzos de Nostr trazan un arco claro. En 2021, una persona hizo dos commits a un protocolo que aún no podía filtrar eventos por kind. Para 2023, NDK y NWC nacieron con cinco días de diferencia para absorber la explosión post-Damus. Para 2024, un hilo de PR de 141 comentarios debatía cómo debería funcionar la colaboración git en un protocolo social. Para 2025, una especificación de monitoreo de relays que había sido pacientemente reescrita siete veces durante 25 meses finalmente se fusionó. En 2026, alguien se molestó porque Tailscale requería una cuenta y construyó una VPN usando pares de claves Nostr, mientras otro lanzó DOOM multijugador que descubre pares a través de relays Nostr y cifra el gameplay a través de Marmot. El escaneo de BigBrotr de 41 millones de eventos a través de 1.085 relays da una medida concreta de cuánto ha crecido la red. La superficie del protocolo en marzo de 2026 habría sido irreconocible para marzo de 2021, pero el modelo subyacente, eventos firmados por claves secp256k1 y distribuidos a través de relays, no ha cambiado.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #14</title><link>https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-03-18-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa soporte completo de métodos &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> añade soporte de múltiples relays en &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> lanza &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrado y permisos de firmante más granulares, y &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> elimina una ruta riesgosa de keysend NWC en &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> lanza un actualizador firmado en &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> que descubre versiones a través de eventos &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mientras &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corrige estado obsoleto de &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata), &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> revisa sus resultados de benchmark con datos corregidos, y &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> prueba suscripciones directas a relays para DMs. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> lanza &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> lanza &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a> sigue ajustando la interoperabilidad con Marmot en &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> consolida su runtime en &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, y &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> añade filtrado Web of Trust con &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). El repositorio de NIPs fusiona el marcado Djot para &lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> (Wiki) y un límite de entrada de 5000 caracteres para &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities).&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa soporte completo de métodos &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> añade soporte de múltiples relays en &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> lanza &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrado y permisos de firmante más granulares, y &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> elimina una ruta riesgosa de keysend NWC en &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> lanza un actualizador firmado en &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> que descubre versiones a través de eventos &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mientras &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corrige estado obsoleto de &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata), &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> revisa sus resultados de benchmark con datos corregidos, y &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> prueba suscripciones directas a relays para DMs. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> lanza &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> lanza &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a> sigue ajustando la interoperabilidad con Marmot en &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> consolida su runtime en &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, y &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> añade filtrado Web of Trust con &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). El repositorio de NIPs fusiona el marcado Djot para &lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> (Wiki) y un límite de entrada de 5000 caracteres para &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities).&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="el-soporte-de-wallet-connect-se-amplía-y-los-clientes-de-billetera-ajustan-rutas-de-fallo">El soporte de Wallet Connect se amplía, y los clientes de billetera ajustan rutas de fallo&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android mantenido por vitorpamplona, fusionó &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>, que acerca su implementación de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> a la cobertura completa del protocolo. El parche añade &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code>, &lt;code>list_transactions&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>get_info&lt;/code>, métodos de hold invoice, soporte de keysend con registros TLV, descubrimiento de capacidades vía kind &lt;code>13194&lt;/code>, y eventos de notificación en kind &lt;code>23197&lt;/code> con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Esto da al cliente una superficie NWC mucho más amplia sin depender de extensiones específicas de cada app.&lt;/p>
&lt;p>El stack de billeteras circundante se movió en la misma dirección. &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, el nodo Lightning auto-custodiado y servicio de billetera detrás de muchos despliegues NWC, lanzó &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a> con soporte de múltiples relays y flujos de conexión y swap más simples. &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>, la billetera Lightning móvil, fusionó &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a> eliminando el soporte de keysend NWC después de identificar una ruta silenciosa de drenaje de fondos en ese flujo, mientras también corregía el manejo de eventos pendientes y actividad Cashu. La conectividad de billeteras en Nostr se está ampliando, y los implementadores están eliminando flujos que son difíciles de asegurar.&lt;/p>
&lt;h3 id="notedeck-mueve-el-descubrimiento-de-versiones-a-nostr">Notedeck mueve el descubrimiento de versiones a Nostr&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Siguiendo la cobertura de Notedeck de la semana pasada&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente de escritorio nativo del equipo Damus, lanzó &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> después de fusionar &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>. El nuevo actualizador se suscribe a eventos de versión kind &lt;code>1063&lt;/code> firmados, coincide con la plataforma local, descarga el binario referenciado, y verifica su hash SHA256 antes de instalar. Los metadatos de versión ya no tienen que venir de la API de GitHub o un sitio web del proyecto. Una pubkey de versión de confianza y una conexión a relay son suficientes.&lt;/p>
&lt;p>El mismo parche añade un CLI &lt;code>notedeck-release&lt;/code> que publica esos eventos desde artefactos de versión de GitHub, lo que significa que el pipeline de versiones ahora tiene una ruta de publicación nativa de Nostr además de una ruta de descubrimiento nativa de Nostr. También acerca el modelo de actualizador de Damus y Notedeck al flujo de versiones firmadas publicadas por relay de Zapstore: la herramienta &lt;code>zsp&lt;/code> de Zapstore ya maneja activos de software como eventos kind &lt;code>1063&lt;/code> o &lt;code>3063&lt;/code>, así que esta ruta no está bloqueada a un solo cliente o publicador. El resto del release candidate es trabajo práctico de escritorio: columnas de follows, &amp;ldquo;Ver Como Usuario&amp;rdquo; en perfiles, soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap), estadísticas de notas en tiempo real, y manejo de limitaciones de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document), pero el actualizador es la parte que probablemente sobrevivirá a este ciclo de versión.&lt;/p>
&lt;h3 id="el-estado-del-relay-se-acerca-al-comportamiento-en-tiempo-de-ejecución">El estado del relay se acerca al comportamiento en tiempo de ejecución&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> fusionó &lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>, reemplazando un ID de evento de lista de relays almacenado obsoleto con una consulta directa a la base de datos para el último evento kind &lt;code>10002&lt;/code>. Cuando el valor antiguo quedaba obsoleto, las operaciones de añadir y eliminar relays podían recurrir a listas bootstrap o de un año de antigüedad, lo que hacía que algunos cambios de relay parecieran exitosos mientras dejaban el estado activo sin cambiar. &lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a> corrige una segunda ruta de fallo eliminando estado &lt;code>lock.mdb&lt;/code> obsoleto durante la compactación LMDB para que la app no se bloquee con &lt;code>SIGBUS&lt;/code> en el siguiente arranque.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> abrió &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>, que se suscribe directamente a los relays de escritura &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) de un interlocutor mientras una conversación está abierta, manteniendo el servidor de caché como respaldo. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> abrió &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>, que combina puntuación aleatoria de relays, filtrado de actividad &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> de nostr.watch, y muestreo de Thompson para cambiar la selección de relays de una heurística fija a una política aprendida. Los clientes han tratado la elección de relay como datos de configuración durante mucho tiempo. Más apps ahora lo tratan como estado en vivo que necesita lógica de medición y reparación.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="primal-android-307">Primal Android 3.0.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>, el cliente Android de Primal, lanzó &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a> con un nuevo ciclo de encuestas y billetera. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a> añade votación en encuestas basada en zaps, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a> pagina la carga de votos para que las encuestas más grandes sigan siendo usables, y &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a> obtiene recibos de zap para todas las transacciones. El mismo lanzamiento también etiqueta eventos soportados con metadatos de cliente &lt;a href="https://nostrcompass.org/es/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers) en &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>, lo que ayuda a los clientes downstream a atribuir orígenes de eventos de forma más limpia.&lt;/p>
&lt;h3 id="amber-v413">Amber v4.1.3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Siguiendo la cobertura de Amber de la semana pasada&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, la app firmante Android para flujos &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), lanzó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>. El lanzamiento se construye sobre su reciente trabajo de autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> con más endurecimiento operacional: &lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a> añade Tor integrado junto al soporte de Orbot, &lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a> reemplaza permisos de cifrado gruesos basados en NIP con reglas específicas por tipo de contenido, y &lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a> elimina permisos de red de la variante offline mientras &lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a> añade verificaciones CI para mantenerlo así. &lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a> también mueve el almacenamiento de PIN a DataStore cifrado.&lt;/p>
&lt;p>Este lanzamiento ajusta el límite del firmante en sí. Esto es útil para cualquier flujo Android que entregue claves reales o decisiones de autenticación de relay a Amber, porque la parte difícil no es solo lo que el firmante puede hacer. También es cuán estrechamente puede ser acotado.&lt;/p>
&lt;h3 id="route96-v060">Route96 v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Siguiendo la cobertura de Route96 de la semana pasada&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, el servidor de medios que soporta Blossom y &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> (HTTP File Storage), lanzó &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>. El lanzamiento mueve la configuración y el estado de whitelist a la base de datos con recarga en caliente y añade políticas de retención para archivos fríos o envejecidos. También añade un endpoint &lt;code>GET /user/files&lt;/code> más rico además de seguimiento de estadísticas de archivo para descargas y egress, lo que da a los operadores más visibilidad sobre cómo se usa su servidor de almacenamiento.&lt;/p>
&lt;h3 id="openchat-v010-alpha11">OpenChat v0.1.0-alpha.11&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Siguiendo la cobertura de OpenChat de la semana pasada&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, el cliente de chat basado en Avalonia construido sobre el stack Marmot, lanzó &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a> después de una semana de trabajo rápido de protocolo. &lt;a href="https://github.com/DavidGershony/openChat/commit/c33895d6b1a198f01b9b01a7be974bdce033fb9c">Commit c33895d&lt;/a> envuelve eventos Welcome en gift wrap &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> y elimina los shims antiguos de normalización de etiquetas MIP-00, &lt;a href="https://github.com/DavidGershony/openChat/commit/2738ff428154f60f50debb8f2a53662d427b28f1">commit 2738ff4&lt;/a> completa la auditoría de cumplimiento MIP-02, y &lt;a href="https://github.com/DavidGershony/openChat/commit/8e470cf7945bced010168c8229d73d67db638b9f">commit 8e470cf&lt;/a> hace lo mismo para el cifrado de mensajes de grupo MIP-03. &lt;a href="https://github.com/DavidGershony/openChat/commit/129ca37e264efaa2d1a8b04fe95cd72e5e212547">Commit 129ca37&lt;/a> también consolida el manejo de NIP-44 en la implementación compartida de marmot-cs, reduciendo el riesgo de divergencia criptográfica del lado del cliente.&lt;/p>
&lt;h3 id="nak-v0190-y-v0191">nak v0.19.0 y v0.19.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, el toolkit de línea de comandos para Nostr de fiatjaf, lanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.0">v0.19.0&lt;/a> y &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>. La serie 0.19 añade una UI de foro de grupo en &lt;a href="https://github.com/fiatjaf/nak/commit/5f4efdbc69a36fc80ea3f97b2cdee1db6a7c5b47">commit 5f4efdb&lt;/a>, cambia las ediciones de metadatos de grupo a un flujo de reemplazo completo en &lt;a href="https://github.com/fiatjaf/nak/commit/da0b75337198010687aceb6a07bbae67407faee3">commit da0b753&lt;/a>, y reemplaza el manejo anterior de &lt;code>no-text&lt;/code> con &lt;code>supported_kinds&lt;/code> en &lt;a href="https://github.com/fiatjaf/nak/commit/bef67d35d259e0450debf0fd870e1a937a2406bf">commit bef67d3&lt;/a>. Para implementadores de grupos, esto mantiene el CLI alineado con la dirección en que se mueven las especificaciones y clientes de grupo.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Siguiendo la cobertura de Amethyst de la semana pasada&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android con una de las superficies de protocolo más amplias en Nostr, siguió construyendo sobre su trabajo de billetera y relay después del parche NIP-47. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1853">PR #1853&lt;/a> añade consultas COUNT de &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a> (Event Counting) a través de las pantallas de gestión de relays, para que los usuarios puedan ver cuántos eventos tiene realmente cada relay para feed principal, notificaciones, DMs y datos de índice. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1849">PR #1849&lt;/a> añade subidas de archivos cifrados para chats &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), con una ruta de reintento para subidas sin cifrar cuando un host de almacenamiento rechaza la versión cifrada.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1791">PR #1791&lt;/a> también trae login completo de bunker de escritorio &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) con un indicador de latido, lo que importa porque los fallos de firma remota a menudo se sienten como roturas aleatorias de UI desde el lado del usuario. El cliente muestra si el firmante está vivo y cuán recientemente respondió, mientras también hace obvio cuando la sesión actual usa un bunker.&lt;/p>
&lt;h3 id="nostria">Nostria&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente multiplataforma construido alrededor de un stack local-first, fusionó &lt;a href="https://github.com/nostria-app/nostria/pull/561">PR #561&lt;/a> añadiendo filtrado Web of Trust para feeds y respuestas en hilos. La funcionalidad usa los datos de clasificación del servicio de confianza existente y los expone tanto como filtro de feed como filtro de respuestas, ocultando autores cuya clasificación no supera el umbral mientras preserva la estructura del hilo cuando hay descendientes de confianza presentes. Esto da a los usuarios una capa intermedia entre &amp;ldquo;mostrar a todos&amp;rdquo; y curación hardcodeada basada en listas.&lt;/p>
&lt;p>La misma semana también trajo &lt;a href="https://github.com/nostria-app/nostria/pull/563">PR #563&lt;/a>, que añade filtrado de contenido y soporte de reposts a la página de resumen. Fuera de la lista de PRs rastreados, Nostria también ha estado completando más de su superficie de usuario avanzado. Ahora soporta el último servicio Web of Trust de Brainstorm con registro en la app, junto con flujos de enviar y recibir dinero en DMs usando NWC e invoices BOLT-11. También añade manejo nativo de GIFs a través del NIP de emoji y una ruta de importación RSS más robusta para músicos que puede recoger splits Lightning existentes de feeds de podcast. Nostria está tratando clasificación, medios, pagos y publicación como una superficie de app conectada.&lt;/p>
&lt;h3 id="nostur">Nostur&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, el cliente iOS mantenido por nostur-com, abrió &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a> para cambiar el enrutamiento outbox de un plan fijo a una política con puntuación. El parche añade puntuación aleatoria de relays, filtrado de actividad de relays &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> con un feed en caché de nostr.watch, y muestreo de Thompson para que los datos de éxito y fallo de relay cambien las selecciones futuras. El diseño mantiene una válvula de seguridad cuando demasiados relays serían filtrados y preserva los relays &lt;code>.onion&lt;/code>. Este es uno de los ejemplos actuales más claros de un cliente tratando la selección de relays como un sistema adaptativo.&lt;/p>
&lt;h3 id="nostrability-outbox">Nostrability Outbox&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#el-modelo-outbox-bajo-la-lupa">Siguiendo el informe anterior de benchmarks Outbox&lt;/a>, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>, el proyecto de benchmarks y análisis enfocado en enrutamiento de clientes con &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a>, pasó la semana ajustando sus propias afirmaciones. &lt;a href="https://github.com/nostrability/outbox/pull/35">PR #35&lt;/a> reemplaza resultados inflados de Thompson-sampling con un re-benchmark completo a través de 1.511 ejecuciones y recomienda la variante &lt;code>CG3&lt;/code> para enrutamiento estilo NDK. &lt;a href="https://github.com/nostrability/outbox/pull/43">PR #43&lt;/a> añade comparaciones de decay y casos de uso, corrige un bug de envenenamiento de caché de &lt;code>0 follows&lt;/code>, y luego re-ejecuta el dataset Telluride después de fijar los TTLs de caché.&lt;/p>
&lt;p>Esto no es trabajo de producto en el sentido habitual, pero importa para autores de clientes porque los números del proyecto ahora son más precisos y menos halagüeños en los lugares donde previamente habían sobreestimado. El resultado corregido sigue siendo útil. La selección aleatoria sigue superando al enrutamiento puramente determinista en los casos que Outbox le importan, el aprendizaje estilo Thompson puede mejorar materialmente la cobertura cuando los clientes persisten historial útil de relay, y el filtrado de actividad &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> elimina tiempo perdido en relays muertos. El trabajo también se está convirtiendo en propuestas concretas de implementación, incluyendo &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/387">NDK #387&lt;/a>, &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">Nostur #53&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1833">Amethyst #1833&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1282">rust-nostr #1282&lt;/a>, &lt;a href="https://github.com/coracle-social/welshman/pull/53">welshman #53&lt;/a>, y &lt;a href="https://github.com/hzrd149/applesauce/pull/54">applesauce #54&lt;/a> más &lt;a href="https://github.com/hzrd149/applesauce/pull/55">applesauce #55&lt;/a>.&lt;/p>
&lt;h3 id="backend-de-white-noise">Backend de White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, el backend Rust usado por White Noise y otras herramientas Marmot, fusionó dos parches de endurecimiento de límites alrededor del manejo de medios Blossom. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/637">PR #637&lt;/a> impone HTTPS en URLs de Blossom y añade un timeout de subida, mientras &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/642">PR #642&lt;/a> limita las descargas de blob a &lt;code>100 MiB&lt;/code> para bloquear que descargas de medios sobredimensionados se conviertan en una ruta de denegación de servicio. Para software de mensajería privada, las URLs de medios son una de las interfaces más agudas entre la lógica de aplicación cifrada y la infraestructura de red no confiable. Esta semana el equipo ajustó ese borde.&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>, la biblioteca de protocolo Rust, fusionó &lt;a href="https://github.com/rust-nostr/nostr/pull/1280">PR #1280&lt;/a> añadiendo constructores de conveniencia para &lt;code>LocalRelayBuilderNip42&lt;/code>. Los nuevos helpers de lectura y escritura dan a las configuraciones de relay embebido y pruebas una forma más clara de convertir la política de autenticación &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> en código. Este es un parche de biblioteca pequeño, pero importa para equipos construyendo relays locales o integrados en apps que necesitan autenticación activada sin repetir boilerplate cada vez.&lt;/p>
&lt;h3 id="pika">Pika&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">Siguiendo la cobertura anterior de Pika&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, la app de mensajería basada en Marmot, lanzó &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a> y &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v1.1.1">pikachat-v1.1.1&lt;/a> con un ciclo de lanzamiento enfocado en la convergencia del runtime. &lt;a href="https://github.com/sledtools/pika/pull/542">PR #542&lt;/a> introduce una fachada de runtime Marmot compartida para el CLI y sidecar, con el host de la app moviéndose a la misma superficie. &lt;a href="https://github.com/sledtools/pika/pull/556">PR #556&lt;/a> ajusta el ciclo de vida del agente OpenClaw y el estado de provisioning, mientras &lt;a href="https://github.com/sledtools/pika/pull/600">PR #600&lt;/a> añade restauración desde respaldo y seguridad de recuperación más estricta para entornos gestionados.&lt;/p>
&lt;p>La superficie directa orientada al usuario aquí es más pequeña que en el último artículo sobre Pika, pero el cambio arquitectónico es significativo. Mover la lógica de grupo, medios, llamadas y sesión detrás de un runtime compartido reduce la posibilidad de que la app y el daemon diverjan a medida que el stack Marmot crece.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> (Wiki): Cambio de Asciidoc a Djot&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>): El contenido wiki en kind &lt;code>30818&lt;/code> ahora usa Djot como formato de marcado canónico. El texto fusionado añade comportamiento explícito de wikilinks, ejemplos de merge-request para kind &lt;code>818&lt;/code>, ejemplos de redirección para kind &lt;code>30819&lt;/code>, y ejemplos de normalización para scripts no latinos en etiquetas &lt;code>d&lt;/code>. Esto da a los implementadores un objetivo de parseo más limpio que Asciidoc y elimina una ruta más de especificación que dependía de un toolchain centrado en Ruby.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities): Añadir límite de entrada&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2264">PR #2264&lt;/a>): La especificación ahora recomienda limitar las cadenas de entidades codificadas en Bech32 a 5000 caracteres. Este es un cambio pequeño con valor real para parsers, porque las cadenas NIP-19 ahora aparecen en flujos QR, deep links, hojas de compartir, y entrada pegada por usuarios a través de muchos clientes.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Archivo de Clave Nostr para &lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2269">PR #2269&lt;/a>): Propone un formato de archivo &lt;code>.nostrkey&lt;/code> para exportación e importación de claves cifradas con contraseña. Si se fusiona, daría a los clientes una ruta de respaldo basada en archivos más normal que copiar cadenas &lt;code>ncryptsec&lt;/code> en bruto.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Consistencia del estado de membresía para &lt;a href="https://nostrcompass.org/es/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2267">PR #2267&lt;/a>): Añade una sección aclarando que los relays deberían mantener un estado de membresía autoritativo por pubkey. Esto simplificaría la lógica de clientes de grupo alrededor de cambios de membresía e historial reproducido.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Guía de eliminación para &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2260">PR #2260&lt;/a>): Propone una ruta concreta para editar y eliminar mensajes privados a través de eventos de eliminación envueltos en gift wrap. El trabajo aún está abierto, pero los autores de clientes necesitan una respuesta aquí si NIP-17 va a reemplazar completamente los flujos de DM más antiguos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>URI de share-intent para &lt;a href="https://nostrcompass.org/es/topics/nip-222/">NIP-222&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2266">PR #2266&lt;/a>): El borrador estandarizaría cómo las apps móviles y de escritorio entregan contenido compartido a un cliente Nostr. Este es uno de los bordes de interoperabilidad más ásperos en los flujos actuales de app a app.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-94-file-metadata">NIP Deep Dive: NIP-94 (File Metadata)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> define kind &lt;code>1063&lt;/code> como un evento de metadatos de primera clase para un archivo. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">especificación&lt;/a> da al evento su propio &lt;code>content&lt;/code> legible por humanos más etiquetas legibles por máquinas para URL de descarga, tipo MIME, hashes, dimensiones, previsualizaciones, respaldos y pistas del servicio de almacenamiento. Esto importa porque el archivo se vuelve consultable en relays como su propio objeto. Un cliente no tiene que extraer metadatos del contenido circundante para entender qué es el archivo.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a92ef8d7c3a1b5d4e8f9a0b1c2d3e4f567890abcdef1234567890abcdef1234&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1063&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;application/gzip&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;size&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;48392011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0x0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;magnet&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;magnet:?xt=urn:btih:00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;blurhash&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;LEHV6nWB2yk8pyo0adR*.7kCMdnj&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;thumb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/thumb.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bbccddeeff00112233445566778899aabbccddeeff0011223344556677889900&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/screenshot.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ccddeeff00112233445566778899aabbccddeeff001122334455667788990011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Signed macOS release artifact for Notedeck v0.8.0-rc2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;alt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Notedeck desktop release archive&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fallback&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://mirror.example.net/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;service&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip96&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Notedeck macOS universal build&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Las etiquetas hacen más trabajo del que aparentan a primera vista. &lt;code>x&lt;/code> identifica el archivo servido, mientras &lt;code>ox&lt;/code> identifica el archivo original antes de cualquier transformación del lado del servidor. Las etiquetas de previsualización permiten a los clientes construir índices de archivos navegables sin descargar el activo completo, y &lt;code>summary&lt;/code> puede llevar un extracto breve junto a ellos. &lt;code>fallback&lt;/code> da una segunda fuente cuando la URL principal falla, y &lt;code>service&lt;/code> sugiere el protocolo de almacenamiento detrás del archivo, como &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> u otro host. NIP-94 por lo tanto se sitúa debajo de las publicaciones sociales y por encima del almacenamiento en bruto. Describe el archivo, no la conversación alrededor del archivo.&lt;/p>
&lt;p>Por eso el actualizador de Notedeck de esta semana es interesante. &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a> usa eventos kind &lt;code>1063&lt;/code> firmados para el descubrimiento de versiones de software, luego verifica el binario descargado contra el SHA256 publicado. La misma forma de evento puede describir un artefacto de software o una subida de medios. NIP-94 es lo suficientemente antiguo como para ser estable, pero aún tiene espacio para crecer porque más proyectos están tratando los eventos de metadatos como un transporte para máquinas, no solo como decoración para personas.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-54-wiki">NIP Deep Dive: NIP-54 (Wiki)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> define kind &lt;code>30818&lt;/code> como un evento de artículo wiki. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/54.md">especificación&lt;/a> trata la etiqueta &lt;code>d&lt;/code> como el tema normalizado del artículo y permite que muchos autores publiquen entradas para el mismo tema. El cuerpo del artículo vive en &lt;code>content&lt;/code>, mientras las etiquetas manejan identidad normalizada, título de visualización, resúmenes, y referencias a versiones anteriores. Esto significa que NIP-54 no es solo un formato de contenido. También es un problema de recuperación y clasificación, porque cada cliente aún tiene que decidir qué versión del artículo mostrar.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8c94e5d1f2a300112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30818&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Djot-formatted reference article about Nostr wiki events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30818:11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff:nostr-wiki&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr is a [protocol][] for carrying events across relays.\n\n[protocol]: nostr:nevent1example&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889900112233cc44dd55ee66ff77889900aabbccddeeff00112233445566778899001122&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La fusión de esta semana cambia el marcado canónico de Asciidoc a Djot en &lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>. Esto importa para implementadores porque Djot tiene una especificación standalone más ajustada y una historia de parser más simple entre lenguajes. El texto fusionado también aclara cómo resuelven los wikilinks de estilo referencia, cómo los merge requests usan kind &lt;code>818&lt;/code>, cómo las redirecciones usan kind &lt;code>30819&lt;/code>, y cómo debería comportarse la normalización de etiquetas &lt;code>d&lt;/code> para scripts no latinos. Esas son las partes que hacen que dos clientes independientes coincidan en a qué artículo apunta un enlace.&lt;/p>
&lt;p>NIP-54 también se sitúa en un lugar inusual en el protocolo. Un cliente wiki necesita renderizado de contenido, pero también necesita política de clasificación. Reacciones, listas de relays, listas de contactos, y señales de deferencia explícita, todo alimenta qué artículo gana para un tema dado. El cambio a Djot no resuelve ese problema de clasificación, pero sí elimina una de las ambigüedades de parser que estaba debajo. Por eso la fusión importa ahora: el cambio trata menos sobre un formato de prosa más bonito y más sobre hacer que el comportamiento wiki multi-cliente sea más fácil de implementar consistentemente.&lt;/p>
&lt;p>¿Estás construyendo algo, o quieres que lo cubramos? Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> en Nostr a &lt;code>npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923&lt;/code>.&lt;/p></content:encoded></item><item><title>Nostr Compass #13</title><link>https://nostrcompass.org/es/newsletters/2026-03-11-newsletter/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-03-11-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> y &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> añaden superficies MCP para comercio impulsado por agentes, mientras &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> y &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> agregan soporte de relay-auth y eventos protegidos de &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> (Autenticación de clientes ante relays) a través de software de apps, firmantes y relays. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> publica dos lanzamientos centrados en etiquetado de IA, colas de moderación, hashing perceptual y documentación legible por máquina del servidor. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, ya activo en la web, lanzó su primera alfa de Android y luego añadió soporte de firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Aplicación firmante para Android). &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> añade registro mediante &lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a> (Cifrado de clave privada), &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> incorpora resolución &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> (Verificación de dominio) basada en Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> publica &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, y el repositorio de NIPs fusiona &lt;a href="https://nostrcompass.org/es/topics/nip-91/">NIP-91&lt;/a> (Operador AND para filtros) y guía defensiva para &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Descubrimiento de relays y monitoreo de disponibilidad).&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> y &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> añaden superficies MCP para comercio impulsado por agentes, mientras &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> y &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> agregan soporte de relay-auth y eventos protegidos de &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> (Autenticación de clientes ante relays) a través de software de apps, firmantes y relays. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> publica dos lanzamientos centrados en etiquetado de IA, colas de moderación, hashing perceptual y documentación legible por máquina del servidor. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, ya activo en la web, lanzó su primera alfa de Android y luego añadió soporte de firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Aplicación firmante para Android). &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> añade registro mediante &lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a> (Cifrado de clave privada), &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> incorpora resolución &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> (Verificación de dominio) basada en Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> publica &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, y el repositorio de NIPs fusiona &lt;a href="https://nostrcompass.org/es/topics/nip-91/">NIP-91&lt;/a> (Operador AND para filtros) y guía defensiva para &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Descubrimiento de relays y monitoreo de disponibilidad).&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="shopstr-y-milk-market-abren-superficies-de-comercio-mcp">Shopstr y Milk Market abren superficies de comercio MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, el marketplace peer-to-peer con pagos Lightning y Cashu, fusionó &lt;a href="https://github.com/shopstr-eng/shopstr/pull/234">PR #234&lt;/a> (&lt;a href="https://github.com/shopstr-eng/shopstr/commit/94ef7d1a4519e8e0158668d13c8cb8684b1d46e2">commit 94ef7d1&lt;/a>), añadiendo un servidor MCP con autenticación por API key para gestión de cuentas por agentes. El cambio agrega &lt;code>.well-known/agent.json&lt;/code> para descubrimiento de agentes, endpoints de onboarding y estado de MCP, rutas de creación de pedidos y verificación de pagos, herramientas dedicadas de compra y lectura, y una pantalla de ajustes para API keys. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a> amplía eso con acciones del lado del vendedor para mensajes, direcciones, actualizaciones de pedidos y selección de especificaciones de producto. Una corrección de seguridad en &lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a> reemplaza el hashing de API keys con SHA-256 de una sola iteración por PBKDF2 con sal y 100.000 iteraciones.&lt;/p>
&lt;p>Los agentes pueden leer listados &lt;a href="https://nostrcompass.org/es/topics/nip-99/">NIP-99&lt;/a> (Clasificados) y avanzar por el checkout usando los flujos de pago existentes de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) y &lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a> (Cashu Wallet) sin raspar páginas ni hacer ingeniería inversa del comportamiento del cliente.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, un mercado de alimentos sobre Nostr en &lt;a href="https://milk.market">milk.market&lt;/a>, incorporó la misma base de MCP y API keys en el &lt;a href="https://github.com/shopstr-eng/milk-market/commit/da6c0b499494b4e4861c4ff8a220e066c46285b3">commit da6c0b4&lt;/a>. &lt;a href="https://github.com/shopstr-eng/milk-market/pull/10">PR #10&lt;/a> añade pedidos por suscripción, cambios de dirección de envío después de la compra y manejo de checkout multi-comerciante y multi-moneda para Stripe y otras rutas de pago fiat. Un &lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a> posterior corrige un bug de inicialización de base de datos al arrancar, donde la tabla de publicaciones fallidas a relays no se creaba en instalaciones nuevas, causando errores 500 en la primera carga. La interfaz orientada a agentes funciona tanto con checkout nativo de Bitcoin en Shopstr como con checkout mixto fiat y Bitcoin en Milk Market.&lt;/p>
&lt;h3 id="nip-42-relay-auth-a-través-de-bunker-firmante-y-relay">NIP-42 relay-auth a través de bunker, firmante y relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, un bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) que conecta proveedores OAuth con firma Nostr, añadió login &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a> (Firmante de extensión de navegador), selección automática cuando solo existe una identidad y limpieza de identidades eliminadas (&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>). Cuando solo existe una identidad, el bunker ahora la selecciona automáticamente en lugar de mostrar un prompt. Eliminar una identidad también borra sus asignaciones y conexiones colgantes. El &lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">commit 6b8796c&lt;/a> añade una ruta de configuración &lt;code>ALWAYS_ALLOWED_KINDS&lt;/code> para usuarios asignados, con kind &lt;code>30078&lt;/code> de datos específicos de app por defecto, de modo que las identidades delegadas puedan escribir en almacenamiento específico de la app sin aprobación por evento.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, el principal firmante &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> para Android, publicó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a> con cuatro pre-lanzamientos durante la semana. &lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a> añade manejo de autenticación de relay &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> para solicitudes kind &lt;code>22242&lt;/code>. La implementación añade una nueva columna de base de datos para seguir permisos específicos por relay con un índice único sobre &lt;code>(pkKey, type, kind, relay)&lt;/code>. Los usuarios ven una pantalla dedicada de auth donde pueden permitir o denegar por relay o para todos los relays usando un alcance comodín &lt;code>*&lt;/code>, y persistir esa decisión. Los permisos comodín limpian todas las entradas específicas por relay para un kind. &lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a> continúa ese trabajo refactorizando las pantallas de solicitudes multi-evento para mostrar detalles en línea usando tarjetas composables en lugar de navegar a una pantalla separada. El lanzamiento también actualiza los relays de perfil predeterminados, añade una vista de solicitudes en bottom sheet y corrige un crash en dispositivos MediaTek al desactivar StrongBox keystore.&lt;/p>
&lt;p>Del lado del relay, &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> implementa el manejo NIP-42 para &lt;a href="https://nostrcompass.org/es/topics/nip-70/">NIP-70&lt;/a> (Eventos protegidos), y &lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a> rechaza reposts que incrustan eventos protegidos.&lt;/p>
&lt;h3 id="notedeck-añade-límites-de-relay-nip-11-y-funciones-de-agentium">Notedeck añade límites de relay NIP-11 y funciones de Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente nativo de escritorio del equipo de Damus, fusionó 14 PRs esta semana. &lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a> añade obtención de limitaciones de relay &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> (Documento de información de relay), de modo que todos los relays outbox ahora respetan &lt;code>max_message_length&lt;/code> y &lt;code>max_subscriptions&lt;/code> del documento de información del relay. La implementación incluye procesamiento de trabajos en segundo plano, exponential backoff con jitter para reintentos de conexión y cabeceras HTTP Accept personalizadas. &lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a> corrige un bug donde los DMs a veces no cargaban tras cambiar de cuenta, y &lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a> añade un mecanismo de backoff a la comunicación multicast con relays para evitar spam de broadcast cuando hay errores.&lt;/p>
&lt;p>El subsistema Agentium, la interfaz interna de agente de programación de Notedeck llamada &amp;ldquo;Dave&amp;rdquo;, recibió pegado de imágenes desde el portapapeles, configuraciones de ejecución con nombre que se sincronizan entre dispositivos mediante eventos kind &lt;code>31991&lt;/code> (&lt;a href="https://nostrcompass.org/es/topics/nip-33/">NIP-33&lt;/a> (Eventos reemplazables parametrizados)), un creador de git worktrees y un selector de modelo para elegir backends por sesión (&lt;a href="https://github.com/damus-io/notedeck/pull/1336">PR #1336&lt;/a>). &lt;a href="https://github.com/damus-io/notedeck/pull/1338">PR #1338&lt;/a> integra &lt;code>egui_kittest&lt;/code> para pruebas headless de UI, y &lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a> añade una tarjeta de dashboard que rastrea la creación de nuevas listas de contactos por cliente. Un &lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a> abierto porta la resolución NIP-05 basada en Namecoin de Amethyst a Notedeck con búsquedas ElectrumX, enrutamiento Tor por SOCKS5 e integración en la barra de búsqueda.&lt;/p>
&lt;h3 id="divine-publica-v106-con-infraestructura-de-pruebas-e2e-e-importación-nip-49">diVine publica v1.0.6 con infraestructura de pruebas E2E e importación NIP-49&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de video corto en bucle que restaura archivos de Vine en &lt;a href="https://divine.video">divine.video&lt;/a>, publicó &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.6">v1.0.6&lt;/a> con 127 PRs fusionados. El lanzamiento añade importación de cuentas &lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a>, soporte externo de &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a>, manejo multi-cuenta, builds para macOS y Linux experimental, y una biblioteca rediseñada de borradores y clips respaldada por almacenamiento local.&lt;/p>
&lt;p>En el lado de ingeniería, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1928">PR #1928&lt;/a> añade una infraestructura completa de pruebas de integración E2E usando Patrol para automatización de UI nativa contra un stack backend en Docker (relay, API, Blossom, Postgres, Redis, ClickHouse). Cinco pruebas del recorrido de auth cubren registro, verificación, restablecimiento de contraseña, expiración de sesión y refresh de token. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2105">PR #2105&lt;/a> cambia la carga de video desde HLS-first a MP4 directo con fallback automático a HLS, reduciendo los tiempos de carga de 30-60 segundos a casi instantáneos. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2076">PR #2076&lt;/a> cachea la respuesta de la API del home feed en SharedPreferences para mostrarla de inmediato en arranque en frío. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2104">PR #2104&lt;/a> hace que las etiquetas &lt;code>ai-generated&lt;/code> queden ocultas en los feeds, y &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2100">PR #2100&lt;/a> añade un ajuste de seguridad para mostrar solo videos alojados por diVine. La migración del caché de perfiles de Hive a Drift sigue avanzando a través de &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1881">PR #1881&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1883">PR #1883&lt;/a> y &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1903">PR #1903&lt;/a>, reemplazando aproximadamente 1.074 líneas de código Hive por DAOs de Drift.&lt;/p>
&lt;h3 id="vector-v032-publica-sincronización-nip-77-negentropy-y-mejoras-mls">Vector v0.3.2 publica sincronización NIP-77 Negentropy y mejoras MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, el mensajero de escritorio centrado en privacidad que usa cifrado grupal MLS con &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Mensajes directos privados) y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (Payloads cifrados), publicó &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2">v0.3.2&lt;/a>. El cambio principal es negentropy NIP-77 para sincronización de grupos MLS (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/b06adf4af2673fb5ac5add01356999ea70628eac">commit b06adf4&lt;/a>), que recupera mensajes perdidos mucho más rápido mediante arranque paralelo. El lanzamiento también añade un motor de audio reconstruido con soporte completo para Linux, spoilers de imágenes con vista previa difuminada, hipervínculos clicables con rich link previews, menciones &lt;code>@mention&lt;/code> con &lt;code>@everyone&lt;/code> para admins de grupo, autocompletado de shortcode de emoji, silenciamiento de grupos, tap-to-react sobre reacciones existentes y cargas de archivos cancelables. Vector filtra explícitamente los eventos de chat grupal NIP-17 (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/2179a51c0449b3a70663a1573195b7945adf58ba">commit 2179a51&lt;/a>), usando MLS exclusivamente para cifrado grupal.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="route96-v050-y-v051">Route96 v0.5.0 y v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, un servidor de medios con soporte para Blossom y &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> (Almacenamiento HTTP de archivos), publicó &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.0">v0.5.0&lt;/a> y &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">v0.5.1&lt;/a>. v0.5.0 añade etiquetado automático de IA, backfill retroactivo para cargas sin etiquetar, colas de moderación para archivos marcados, rechazo de privacidad basado en EXIF y manejo de hashes prohibidos.&lt;/p>
&lt;p>v0.5.1 añade hashes perceptuales de imagen, locality-sensitive hashing para buscar imágenes similares, endpoints batch de admin y un &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">&lt;code>SKILL.md&lt;/code>&lt;/a> publicado que describe la superficie de API Blossom y NIP-96 del servidor para tooling de agentes. &lt;a href="https://github.com/v0l/route96/pull/58">PR #58&lt;/a> mueve los workers en segundo plano a tareas Tokio totalmente asíncronas, y el &lt;a href="https://github.com/v0l/route96/commit/97b00a39e27b07053c2ad335dbf475bacba57bf8">commit 97b00a3&lt;/a> añade backoff para evitar hot loops.&lt;/p>
&lt;h3 id="samizdat-v100-alpha">Samizdat v1.0.0-alpha&lt;/h3>
&lt;p>&lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, lector y publicador de contenido largo disponible en &lt;a href="https://samizdat.press">samizdat.press&lt;/a>, publicó su primera build de Android en &lt;a href="https://github.com/satsdisco/samizdat/releases/tag/v1.0.0-alpha">v1.0.0-alpha&lt;/a>. La app abre en una página Press curada de artículos largos de Nostr con navegación por pestañas inferiores entre las vistas Press, Feed, Saved y Write. La build de Android añade almacenamiento nativo de claves mediante cifrado con Android Keystore y desbloqueo biométrico, maneja URIs &lt;code>nostr:&lt;/code> y deep links de &lt;code>samizdat.press&lt;/code>, y soporta handoff hacia firmantes a través del selector de apps de Android (Amber, Primal, etc.) en lugar de requerir importación directa de claves. Pull-to-refresh, manejo de safe area en distintos tamaños de pantalla e integraciones nativas de compartir, portapapeles, hápticos y splash screen ahora forman parte del shell Android en vez del wrapper web.&lt;/p>
&lt;p>El &lt;a href="https://github.com/satsdisco/samizdat/commit/d17308f3c2e6020e14074fbb1c03a8f60f29a3e6">commit d17308f&lt;/a> añade firma &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> basada en intents para flujos con Amber y Primal, y el &lt;a href="https://github.com/satsdisco/samizdat/commit/e29dab84f7b58edd621f7b86ed7ca6458f965614">commit e29dab8&lt;/a> reemplaza un workaround de puente JavaScript por un plugin nativo de Capacitor usando &lt;code>startActivityForResult&lt;/code>. La app requiere Android 7.0+ (API 24), se distribuye como APK de depuración en esta alfa y todavía carece de push notifications. La publicación depende por ahora de una app firmante, mientras el login con &lt;code>nsec&lt;/code> cubre lectura local y acceso a la cuenta.&lt;/p>
&lt;h3 id="calendar-by-form-v020">Calendar by Form* v0.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, una app de calendario descentralizada con compartición privada de eventos &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) disponible en &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>, publicó &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.0">v0.2.0&lt;/a> con &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/38">PR #38&lt;/a>. El lanzamiento amplía el manejo de eventos recurrentes para &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> (Eventos de calendario), superando la base de evento único de v0.1.0. Los cambios subyacentes también tocan almacenamiento local de eventos, manejo de firmantes y plumbing de notificaciones Android. Esta es la segunda aplicación activa de la organización Formstr tras la migración de repositorio del mes pasado.&lt;/p>
&lt;h3 id="mostro-v0164">Mostro v0.16.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el exchange peer-to-peer de Bitcoin construido sobre Nostr, publicó &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>. Las correcciones de restauración de sesión de disputas (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) y auto-cierre (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>) &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">cubiertas la semana pasada&lt;/a> están incluidas. Novedades de esta versión: &lt;a href="https://github.com/MostroP2P/mostro/pull/625">PR #625&lt;/a> añade un campo &lt;code>days&lt;/code> a eventos de valoración de usuario kind &lt;code>38384&lt;/code>, &lt;a href="https://github.com/MostroP2P/mostro/pull/612">PR #612&lt;/a> añade expiración a esos eventos de valoración, y &lt;a href="https://github.com/MostroP2P/mostro/pull/614">PR #614&lt;/a> cambia los eventos de órdenes para usar ajustes de expiración configurados en lugar de una ventana hardcodeada de 24 horas. &lt;a href="https://github.com/MostroP2P/mostro/pull/622">PR #622&lt;/a> añade una comprobación de idempotencia para evitar pagos duplicados de la comisión de desarrollo.&lt;/p>
&lt;h3 id="mostro-mobile-v121">Mostro Mobile v1.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, el cliente Flutter para el exchange P2P Mostro, publicó &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.1">v1.2.1&lt;/a> con 11 funciones nuevas y 11 correcciones de errores. El lanzamiento añade renderizado multimedia cifrado en el chat de disputas (&lt;a href="https://github.com/MostroP2P/mobile/pull/514">PR #514&lt;/a>), cierre automático de la UI de disputa cuando las órdenes alcanzan un estado terminal (&lt;a href="https://github.com/MostroP2P/mobile/pull/503">PR #503&lt;/a>), escaneo QR para importar billeteras NWC (&lt;a href="https://github.com/MostroP2P/mobile/commit/12eaee4d154fa31b07f82b96819de520e825aee6">commit 12eaee4&lt;/a>), traducciones al francés y manejo de push notifications FCM. &lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a> corrige un bug de padding en firmas Schnorr fijando la dependencia bip340 en v0.2.0.&lt;/p>
&lt;h3 id="0xchat-v154">0xchat v1.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main">0xchat&lt;/a>, el cliente de mensajería estilo Telegram con soporte Cashu, publicó &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.4-release">v1.5.4&lt;/a> centrado en correcciones para escritorio Linux: iconos del dock en AppImage, renderizado de emoji, congelamientos del menú contextual y bloqueos de la UI al responder o copiar. El lanzamiento también corrige problemas de subida de imágenes e integración con npub.cash. &lt;a href="https://github.com/0xchat-app/0xchat-app-main/pull/49">PR #49&lt;/a> elimina rebuilds innecesarios de UI al quitar un timer de polling de 3 segundos que forzaba repintados glassmorphic sin hacer nada, y desbloquea la inicialización del login al cargar la caché de eventos de forma concurrente en lugar de bloquear el arranque de relay, contactos y canales.&lt;/p>
&lt;h3 id="keep-v060">Keep v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, un firmante umbral FROST para Android con soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, publicó &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.0">v0.6.0&lt;/a> y &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.1">v0.6.1&lt;/a>. v0.6.0 añade coordinación de descriptores de wallet y UI de gestión, un flujo de backup/restore con autenticación biométrica (&lt;a href="https://github.com/privkeyio/keep-android/pull/184">PR #184&lt;/a>), recuperación de &lt;code>nsec&lt;/code> desde shares umbral (&lt;a href="https://github.com/privkeyio/keep-android/pull/187">PR #187&lt;/a>), generación de marcos QR animados multiplataforma vía Rust UniFFI (&lt;a href="https://github.com/privkeyio/keep-android/pull/188">PR #188&lt;/a>) y una traza de auditoría de firma con verificación de cadena (&lt;a href="https://github.com/privkeyio/keep-android/pull/189">PR #189&lt;/a>). v0.6.1 cambia la licencia de AGPL-3.0 a MIT (&lt;a href="https://github.com/privkeyio/keep-android/pull/191">PR #191&lt;/a>).&lt;/p>
&lt;h3 id="njump-v030">njump v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, la puerta de enlace estática para visualizar contenido Nostr en &lt;a href="https://njump.me">njump.me&lt;/a>, publicó &lt;a href="https://github.com/fiatjaf/njump/releases/tag/v0.3.0">v0.3.0&lt;/a> con un cambio disruptivo en el parseo de códigos &lt;code>note1&lt;/code> y una actualización de la biblioteca Nostr subyacente.&lt;/p>
&lt;h3 id="roadstr-v011">Roadstr v0.1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/roadstr">Roadstr&lt;/a>, una app descentralizada de reporte de eventos viales basada en Nostr, publicó su primer demo release &lt;a href="https://github.com/jooray/roadstr/releases/tag/v0.1.1">v0.1.1&lt;/a>. La app muestra eventos viales en un mapa usando vector tiles de openfreemap.org.&lt;/p>
&lt;h3 id="bitcredit-v053">Bitcredit v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core">Bitcredit&lt;/a>, una aplicación de e-bills con capa de transporte Nostr y relay dedicado en &lt;a href="https://www.bit.cr/">bit.cr&lt;/a>, publicó &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.3">v0.5.3&lt;/a>. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/846">PR #846&lt;/a> añade campos &lt;code>payment_actions&lt;/code> y &lt;code>bill_state&lt;/code> a la API para estado de pago y aceptación, y &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/849">PR #849&lt;/a> corrige el manejo de direcciones de firma para firmantes anónimos.&lt;/p>
&lt;h3 id="openchat-v010-alpha3">OpenChat v0.1.0-alpha.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, una aplicación de chat construida sobre las bibliotecas .NET MLS y C# del protocolo Marmot, publicó &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.3">v0.1.0-alpha.3&lt;/a>. El lanzamiento añade soporte para firmantes externos con Amber y flujos &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/DavidGershony/openChat/commit/e568d979fe15eead19172f2eb6f8cf26ca845247">commit e568d97&lt;/a>), mueve la persistencia del estado MLS al servicio MLS para eliminar pérdida de datos en ventanas de crash (&lt;a href="https://github.com/DavidGershony/openChat/commit/4720bc8625136a0d5b0e23322bc0c50cd80577e8">commit 4720bc8&lt;/a>) y publica builds para Windows, Linux y Android mediante un nuevo pipeline de CI.&lt;/p>
&lt;h3 id="opensignal-v100">OpenSignal v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/turizspace/opensignal">OpenSignal&lt;/a>, un copiloto de trading en Kotlin Multiplatform para Nostr, publicó &lt;a href="https://github.com/turizspace/OpenSignal/releases/tag/v1.0.0">v1.0.0&lt;/a>. El lanzamiento empaqueta módulos KMP compartidos para lógica de dominio, renderizado de gráficos, autenticación y publicación Nostr, soporte de subida Blossom &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> y hooks de inferencia de IA basados en ONNX a través de shells Desktop y Android. La arquitectura publicada también incluye un servicio de IA FastAPI para análisis de capturas de gráficos, pipelines de entrenamiento de modelos y un motor de riesgo que produce planes de trade estructurados con sizing y advertencias. El login soporta tanto claves &lt;code>nsec&lt;/code> crudas como firmantes externos, y el flujo de salida termina en publicación de eventos Nostr en lugar de análisis local únicamente.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de proyectos&lt;/h2>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, la alternativa a Google Forms en Nostr, fusionó &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">PR #434&lt;/a> (&lt;a href="https://github.com/formstr-hq/nostr-forms/commit/e9c4fd5dadfa0b83f1e87d7596eaf35f9fdb7da8">commit e9c4fd5&lt;/a>), añadiendo un flujo de registro que usa claves privadas cifradas mediante &lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a>. Antes de este cambio, los usuarios necesitaban o bien una extensión de navegador &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a> o pegar un &lt;code>nsec&lt;/code> crudo para usar Formstr. El nuevo flujo genera un par de claves en el cliente, cifra la clave privada con una contraseña elegida por el usuario mediante el esquema scrypt + XChaCha20-Poly1305 de NIP-49, y guarda la cadena &lt;code>ncryptsec&lt;/code> resultante. Después, los usuarios pueden volver a iniciar sesión con su contraseña sin instalar una extensión firmante. La gestión de claves permanece del lado del cliente en todo momento.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android de funciones avanzadas, fusionó cuatro PRs que publican el trabajo de resolución &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> con respaldo de Namecoin que estaba &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">abierto la semana pasada&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a> añade verificación NIP-05 resistente a la censura vía ElectrumX para identificadores &lt;code>.bit&lt;/code>, &lt;code>d/&lt;/code> e &lt;code>id/&lt;/code>. Cuando Amethyst detecta uno de esos sufijos en un campo NIP-05, consulta un servidor ElectrumX-NMC por el historial de transacciones del nombre, parsea el script &lt;code>NAME_UPDATE&lt;/code> de la última salida para extraer la pubkey Nostr y rechaza nombres con más de 36.000 bloques de antigüedad, la ventana de expiración de Namecoin. Las conexiones ElectrumX se enrutan por SOCKS5 cuando Tor está habilitado, con selección dinámica de servidor entre endpoints clearnet y &lt;code>.onion&lt;/code>. Un caché LRU con TTL de una hora evita consultas repetidas a la blockchain.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1771">PR #1771&lt;/a> corrige condiciones de carrera y la lógica del resolver en ese flujo. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1785">PR #1785&lt;/a> permite a nuevos usuarios importar una lista de follows durante el registro desde identificadores NIP-05 ordinarios o respaldados por Namecoin. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1786">PR #1786&lt;/a> añade ajustes personalizados de servidor ElectrumX para que los usuarios elijan qué servidor realiza sus búsquedas.&lt;/p>
&lt;h3 id="nostr-idb">nostr-idb&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/nostr-idb">nostr-idb&lt;/a>, una biblioteca que ofrece métodos auxiliares para almacenar eventos Nostr en IndexedDB, fusionó &lt;a href="https://github.com/hzrd149/nostr-idb/pull/6">PR #6&lt;/a> añadiendo soporte para filtros de etiquetas AND de &lt;a href="https://nostrcompass.org/es/topics/nip-91/">NIP-91&lt;/a>. El cambio añade semántica de intersección al matching de filtros del lado del cliente para que las consultas IndexedDB puedan requerir todos los valores de etiqueta listados en vez de cualquiera de ellos. &lt;a href="https://github.com/hzrd149/nostr-idb/pull/8">PR #8&lt;/a> actualiza la biblioteca a la interfaz más reciente de NIP-DB, y un &lt;a href="https://github.com/hzrd149/nostr-idb/commit/b49b3d32c575ff8214dc3fb07675109c2a971972">commit b49b3d3&lt;/a> posterior corrige un deadlock en subscribe y elimina nostr-tools como dependencia de producción.&lt;/p>
&lt;h3 id="pensieve">Pensieve&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a>, un indexador Nostr orientado a archivo con analítica en ClickHouse, fusionó &lt;a href="https://github.com/andotherstuff/pensieve/pull/8">PR #8&lt;/a> añadiendo cumplimiento de TTL de caché por entrada y coalescencia de misses por clave para reducir picos de CPU en la API. Los endpoints de series temporales de mayor costo, estadísticas de engagement, actividad por hora y actividad por kind, ahora usan TTLs del lado del servidor de 10 minutos en vez de disparar tormentas sincronizadas de recomputación.&lt;/p>
&lt;h3 id="blossom">Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, el protocolo y stack de servidores de alojamiento de medios descentralizado, fusionó dos actualizaciones de autorización BUD-11. &lt;a href="https://github.com/hzrd149/blossom/pull/91">PR #91&lt;/a> mueve la autorización opcional a su propio BUD y aclara el papel de las etiquetas &lt;code>x&lt;/code> y &lt;code>server&lt;/code>. &lt;a href="https://github.com/hzrd149/blossom/pull/93">PR #93&lt;/a> limpia el comportamiento de auth específico por endpoint y formaliza la cabecera &lt;code>X-SHA-256&lt;/code> para verificación de subidas. Ambos PRs consolidan la lógica de auth en BUD-11 y eliminan ambigüedades alrededor del hashing de solicitudes en flujos de upload, delete y gestión de medios.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-91/">NIP-91&lt;/a> (Operador AND para filtros)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">PR #1365&lt;/a>): Añade semántica de intersección para filtros de etiquetas, permitiendo que los relays respondan consultas que requieren todos los valores listados de etiqueta en lugar de cualquiera de ellos. Reduce el post-filtrado del lado del cliente y el ancho de banda en consultas intensivas en etiquetas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Descubrimiento de relays y monitoreo de disponibilidad): Medidas defensivas&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">PR #2240&lt;/a>): Tras el &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">trabajo de benchmarks del modelo outbox cubierto la semana pasada&lt;/a>, la especificación ahora añade advertencias sobre rutas problemáticas para datos de monitoreo de relays. Los clientes no deben requerir eventos de monitoreo kind &lt;code>30166&lt;/code> para funcionar. Un monitor puede estar equivocado, desactualizado o ser malicioso. Se espera que los clientes contrasten fuentes y eviten cortar grandes partes del grafo de relays de un usuario basándose en un solo feed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> (Identidades externas en perfiles): limpieza del registro kind 10011&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2256">PR #2256&lt;/a>): Añade la referencia al kind &lt;code>10011&lt;/code> directamente en la especificación, alineándose con la implementación de Amethyst &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/">cubierta la semana pasada&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs abiertos y discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-70/">NIP-70&lt;/a> (Eventos protegidos): rechazar reposts que incrustan eventos protegidos&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>): Si un relay aplica NIP-70 sobre el evento original pero acepta reposts que transportan el mismo contenido, la etiqueta &lt;code>-&lt;/code> pierde efecto práctico. Este PR añade la regla de que los relays también deben rechazar reposts kind 6 y kind 16 de eventos protegidos. &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> ya lo implementa.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71&lt;/a> (Eventos de video): múltiples pistas de audio&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>): Añade etiquetas &lt;code>imeta&lt;/code> de audio para pistas alternativas, variantes de idioma y streams de solo audio. Un cliente podría mantener un archivo de video estable mientras cambia el idioma del audio, o servir el audio como pista separada para contenido tipo podcast.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> (Documento de información de relay) y atributos de relay &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2257">PR #2257&lt;/a>): Añade un campo estructurado &lt;code>attributes&lt;/code> a los documentos de información de relay, dando a clientes y herramientas de descubrimiento metadatos legibles por máquina más allá de la descripción actual en texto libre.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-49-cifrado-de-clave-privada">NIP Deep Dive: NIP-49 (Cifrado de clave privada)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-49/">NIP-49&lt;/a> define cómo un cliente cifra una clave privada con una contraseña y codifica el resultado como una cadena bech32 &lt;code>ncryptsec&lt;/code>. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-11-newsletter/#formstr">Formstr&lt;/a> usa NIP-49 en su nuevo flujo de registro.&lt;/p>
&lt;p>El formato no está ligado a un kind de evento dedicado. Un cliente comienza con la clave privada secp256k1 cruda de 32 bytes, deriva una clave simétrica a partir de la contraseña del usuario con scrypt, cifra la clave usando XChaCha20-Poly1305 y luego encapsula el resultado en una cadena bech32 &lt;code>ncryptsec&lt;/code>. Un flag de un byte registra si alguna vez se supo que la clave fue manejada de forma insegura antes del cifrado.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4d47f4f0a6f6edbc1bbd7f4e2a45ec68f27cba91d6c6ab5cf28d8d87b0f3d57e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1f8b4c3e7b0f9451d4f9b8a7c6e5d4c3b2a1908f7e6d5c4b3a29181716151413&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1741699200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30078&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;encrypted-key-backup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;format&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ncryptsec&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip49&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ncryptsec1qgg9947rlpvqu76pj5ecreduf9jxhselq2nae2kghhvd5g7dgjtcxfqtd67p9m0w57lspw8gsq6yphnm8623nsl8xn9j4jdzz84zm3frztj3z7s35vpzmqf6ksu8r89qk5z2zxfmu5gv8th8wclt0h4p&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a8f6e4b2d1901735f0ad4b6e8c1f3a579d0e2b4c6f8a1d3e5f7091b2c3d4e5f11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El evento JSON anterior es un ejemplo a nivel de aplicación, no un requisito de NIP-49. El NIP estandariza el formato de la clave cifrada. Un cliente puede almacenar el &lt;code>ncryptsec&lt;/code> localmente, sincronizarlo mediante almacenamiento específico de la app o exportarlo como cadena de backup. Las contraseñas se normalizan a Unicode NFKC antes de la derivación de clave para que la misma contraseña descifre de forma consistente entre clientes y plataformas.&lt;/p>
&lt;p>El flag de seguridad de la clave de un byte tiene tres valores definidos: &lt;code>0x00&lt;/code> significa que el historial de manejo de la clave es desconocido, &lt;code>0x01&lt;/code> significa que se sabe que la clave fue manejada de forma insegura, por ejemplo pegada como texto plano en un formulario web antes del cifrado, y &lt;code>0x02&lt;/code> significa que la clave se generó y cifró en un contexto seguro y nunca fue expuesta. Los clientes pueden usar esto para mostrar advertencias al importar claves con un historial conocido de inseguridad.&lt;/p>
&lt;p>NIP-49 protege mejor las claves que la exportación simple de &lt;code>nsec&lt;/code>, pero el cifrado solo es tan fuerte como la contraseña y el costo scrypt configurado. Valores más altos de &lt;code>LOG_N&lt;/code> dificultan el guessing offline, pero ralentizan las operaciones legítimas de descifrado. La especificación advierte contra publicar claves cifradas en relays públicos, ya que los atacantes se benefician al recolectar ciphertext para ataques offline. Como comparación, la firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> evita exponer las claves por completo, y la firma Android &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> mantiene las claves dentro de una app firmante dedicada. NIP-49 ocupa un lugar distinto: backup cifrado portable para usuarios que gestionan sus propias claves.&lt;/p>
&lt;p>Las implementaciones incluyen &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">Formstr PR #434&lt;/a> para el registro, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> para backup y restauración de ncryptsec, &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-11-newsletter/#divine-publica-v106-con-infraestructura-de-pruebas-e2e-e-importaci%c3%b3n-nip-49">diVine v1.0.6&lt;/a> para importación de cuentas, &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-11-newsletter/#keep-v060">Keep v0.6.0&lt;/a> para exportación de shares FROST y herramientas de gestión de claves como &lt;a href="https://nsec.app">nsec.app&lt;/a> y &lt;a href="https://github.com/getAlby/hub">Alby&lt;/a>.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-70-eventos-protegidos">NIP Deep Dive: NIP-70 (Eventos protegidos)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-70/">NIP-70&lt;/a> define eventos protegidos. Cuando un evento lleva la etiqueta &lt;code>[&amp;quot;-&amp;quot;]&lt;/code>, un relay debe rechazarlo a menos que el relay requiera autenticación &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> y la pubkey autenticada coincida con el autor del evento.&lt;/p>
&lt;p>El flujo de auth de NIP-42 funciona así: el relay envía un desafío &lt;code>AUTH&lt;/code> que contiene una cadena aleatoria, y el cliente responde con un evento kind &lt;code>22242&lt;/code> firmado cuyas etiquetas incluyen la URL del relay y el desafío. El relay verifica la firma y comprueba que la pubkey en el evento de auth coincide con la pubkey del evento protegido que se está publicando. Si las pubkeys no coinciden, el relay rechaza el evento con un prefijo de mensaje &lt;code>restricted&lt;/code>.&lt;/p>
&lt;p>El contenido del evento todavía puede ser público. La etiqueta &lt;code>-&lt;/code> solo controla quién puede publicar el evento en un relay que respeta la etiqueta. Esto cubre feeds semi-cerrados de &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> (Grupos simples), espacios de relay solo para miembros y otros contextos donde el autor quiere limitar la redistribución a través del grafo de relays. NIP-70 es una convención de una sola etiqueta, no un nuevo kind de evento, de modo que cualquier kind existente puede llevar la etiqueta &lt;code>-&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;cb8feca582979d91fe90455867b34dbf4d65e4b86e86b3c68c368ca9f9eef6f2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1707409439&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;-&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;hello members of the secret group&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa163f5cfb75d77d9b6269011872ee22b34fb48d23251e9879bb1e4ccbdd8aaaf4b6dc5f5084a65ef42c52fbcde8f3178bac3ba207de827ec513a6aa39fa684c&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Aunque un relay bloquee la publicación de terceros del evento original, alguien todavía puede republicar el contenido dentro de un repost. &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a> aborda esto exigiendo que los relays también rechacen reposts kind 6 y kind 16 de eventos protegidos. &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> añade manejo de auth NIP-42 para eventos protegidos, y &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> bloquea reposts que incrustan contenido protegido.&lt;/p>
&lt;p>NIP-70 controla el comportamiento del relay. Un receptor todavía puede copiar el contenido a otro lugar, y la especificación lo dice explícitamente. La etiqueta &lt;code>-&lt;/code> da a los relays una señal legible por máquina para negarse a republicarlo. Como comparación, &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) pide a los relays borrar datos después del hecho, mientras NIP-70 evita la publicación no autorizada en el momento de la ingesta. Ambos son complementarios: un autor puede marcar eventos como protegidos para limitar la difusión y luego solicitar su eliminación si quiere que el contenido se retire de relays que sí lo aceptaron.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos por DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #12</title><link>https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> El &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> lanza su &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#marmot-development-kit-lanza-su-primera-versi%c3%b3n-p%c3%bablica">primera versión pública&lt;/a> con medios cifrados y bindings multi-lenguaje. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> publica &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#el-modelo-outbox-bajo-la-lupa">benchmarks del modelo outbox&lt;/a> a través de 14 algoritmos de selección de relays. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> pasa de &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#wisp-pasa-de-alfa-a-beta">primera alfa a beta&lt;/a> en ocho días con Tor y firma &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Aplicación Firmante de Android). &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#actualizaciones-de-nips">NIP-91&lt;/a> (filtros AND) se fusiona. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> 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.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> El &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> lanza su &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#marmot-development-kit-lanza-su-primera-versi%c3%b3n-p%c3%bablica">primera versión pública&lt;/a> con medios cifrados y bindings multi-lenguaje. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> publica &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#el-modelo-outbox-bajo-la-lupa">benchmarks del modelo outbox&lt;/a> a través de 14 algoritmos de selección de relays. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> pasa de &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#wisp-pasa-de-alfa-a-beta">primera alfa a beta&lt;/a> en ocho días con Tor y firma &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Aplicación Firmante de Android). &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#actualizaciones-de-nips">NIP-91&lt;/a> (filtros AND) se fusiona. &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> 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.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="el-modelo-outbox-bajo-la-lupa">El Modelo Outbox Bajo la Lupa&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> 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 &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) hasta la fecha.&lt;/p>
&lt;p>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.&lt;/p>
&lt;p>El filtrado de relays muertos con &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (Relay Monitoring) resultó ser significativo. Pre-filtrar candidatos de relay contra datos de actividad de &lt;a href="https://nostr.watch">nostr.watch&lt;/a> 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.&lt;/p>
&lt;p>Para clientes que no pueden reescribir completamente su enrutamiento de relays, un enfoque de &amp;ldquo;enriquecimiento outbox híbrido&amp;rdquo; 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.&lt;/p>
&lt;h3 id="contextvm-abre-nip-de-mcp-y-lanza-gift-wraps-efímeros">ContextVM Abre NIP de MCP y Lanza Gift Wraps Efímeros&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>, el protocolo que conecta Nostr con el &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>, abrió dos propuestas en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a> esta semana. &lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a> formaliza CVM como una convención para transportar mensajes MCP JSON-RPC sobre Nostr usando eventos efímeros kind 25910. &lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> extiende &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con un kind efímero (21059) que sigue la semántica efímera de &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a> (Flujo Básico del Protocolo), permitiendo a los relays descartar mensajes envueltos después de la entrega.&lt;/p>
&lt;p>La convención de gift wrap efímero se lanzó como &lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a> en la familia de versiones v0.6.x del SDK de ContextVM. La &lt;a href="https://github.com/ContextVM/sdk">implementación del SDK&lt;/a> añade un enum &lt;code>GiftWrapMode&lt;/code> 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.&lt;/p>
&lt;p>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.&lt;/p>
&lt;h3 id="marmot-development-kit-lanza-su-primera-versión-pública">Marmot Development Kit Lanza Su Primera Versión Pública&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit), la biblioteca Rust que impulsa la mensajería cifrada con &lt;a href="https://nostrcompass.org/es/topics/mls/">Marmot&lt;/a> a través de &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> y &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, lanzó &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a> como su primera versión pública. Más de 200 PRs se fusionaron en esta versión, con seis nuevos contribuidores.&lt;/p>
&lt;p>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 &lt;code>Secret&amp;lt;T&amp;gt;&lt;/code> que elimina valores sensibles de la memoria con zeroing.&lt;/p>
&lt;p>Un cambio de protocolo complementario (&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>) reemplazó el cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (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 &lt;a href="https://github.com/marmot-protocol/marmot/pull/48">especificación core&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a> y el &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/54">SDK de TypeScript&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>, la implementación TypeScript mantenida por hzrd149, fusionó cuatro PRs con cambios disruptivos de API por derecho propio. Una &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">actualización ómnibus&lt;/a> añadió un gestor de paquetes de claves para el ciclo de vida crear/publicar/rotar, un método de conveniencia &lt;code>sendChatMessage&lt;/code>, vista previa de invitaciones sin unirse (&lt;code>readInviteGroupInfo&lt;/code>), auto-actualización para rotaciones de secreto hacia adelante, y logging de depuración estructurado. Las APIs de descifrado de grupo fueron renombradas de &lt;code>readGroupMessage&lt;/code> a &lt;code>decryptGroupMessage&lt;/code> 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.&lt;/p>
&lt;p>El &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">CLI de White Noise&lt;/a> (&lt;code>wn&lt;/code>), 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 (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>), 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 (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>), y las suscripciones de giftwrap recurren a relays de &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> cuando las listas de inbox están ausentes (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>). Un modo de depuración (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>) 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.&lt;/p>
&lt;p>Marmot vio una expansión significativa más allá del stack Rust core esta semana. &lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>, una interfaz basada en terminal para el stack de mensajería White Noise, se lanzó el 3 de marzo. Envuelve el CLI &lt;code>wn&lt;/code> 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.&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a> publicó un stack Marmot completo en C# que refleja la arquitectura por capas del toolchain Rust. &lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a> implementa primitivas criptográficas MLS RFC 9420 en C#. &lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a> se construye sobre él para añadir transporte de relay Nostr, funcionando como equivalente en C# de MDK. &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, 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 &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) e indicadores de estado multi-relay.&lt;/p>
&lt;p>&lt;a href="https://github.com/zerosats/mdk-pwa-reference">MDK PWA Reference&lt;/a> 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.&lt;/p>
&lt;h3 id="wisp-pasa-de-alfa-a-beta">Wisp Pasa de Alfa a Beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> es un nuevo cliente Nostr para Android que pasó de su &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha">primera alfa&lt;/a> el 24 de febrero a &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta">v0.3.4-beta&lt;/a> el 3 de marzo, produciendo 19 lanzamientos, 115 PRs fusionados y 276 commits en ocho días.&lt;/p>
&lt;p>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 &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> para Amber, un proxy SOCKS5 Tor integrado para conectividad de relay &lt;code>.onion&lt;/code> y &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (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 &lt;a href="https://nostrcompass.org/es/topics/nip-13/">NIP-13&lt;/a> proof-of-work para notas, minado PoW en segundo plano con ajustes persistentes, almacenamiento de relays &lt;code>.onion&lt;/code> y notificaciones de hilos silenciados.&lt;/p>
&lt;p>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.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="vector-v031">Vector v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, la app de mensajería cifrada con Marmot, lanzó &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1">v0.3.1&lt;/a> 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.&lt;/p>
&lt;p>La sincronización determinista basada en &lt;a href="https://nostrcompass.org/es/topics/negentropy/">Negentropy&lt;/a> 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.&lt;/p>
&lt;h3 id="alby-hub-v1215">Alby Hub v1.21.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, el nodo Lightning auto-custodiado con soporte de Nostr Wallet Connect (&lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>), lanzó &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.5">v1.21.5&lt;/a>. 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 &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) malformados. Las nuevas entradas de la tienda de apps incluyen Alby CLI y LNVPS.&lt;/p>
&lt;h3 id="nospeak-v012x">nospeak v0.12.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, el cliente de mensajería Nostr basado en texto, lanzó tres versiones durante el período. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.0">v0.12.0&lt;/a> 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. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.1">v0.12.1&lt;/a> introdujo un tema Cypher con fondos negro puro y acentos cyan, más generación de póster de vídeo en Android. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.2">v0.12.2&lt;/a> añadió exportación de chat y Ver Perfil en menús de contacto.&lt;/p>
&lt;h3 id="citrine-v200-pre2">Citrine v2.0.0-pre2&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, el relay personal Android de greenart7c3, lanzó &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2">v2.0.0-pre2&lt;/a> 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.&lt;/p>
&lt;h3 id="noornote-v05x">NoorNote v0.5.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, una aplicación de toma de notas basada en Nostr, lanzó 8 versiones desde &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.0">v0.5.0&lt;/a> hasta &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.7">v0.5.7&lt;/a>. El lanzamiento de v0.5.0 en Android añadió soporte para firmante Amber &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> y publicación de notas &lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71&lt;/a> (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 &lt;a href="https://nostrcompass.org/es/topics/nip-30/">NIP-30&lt;/a>. Las versiones posteriores hasta v0.5.7 abordaron condiciones de carrera de sincronización en el sistema colaborativo de compartición de notas &amp;ldquo;tribes&amp;rdquo;.&lt;/p>
&lt;h3 id="noscall-v051">NosCall v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>, la app de llamadas de voz y vídeo en Nostr, lanzó &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.1-release">v0.5.1&lt;/a> 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.&lt;/p>
&lt;h3 id="shosho-v0130">Shosho v0.13.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, la app de streaming en vivo de Nostr, lanzó &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0">v0.13.0&lt;/a> con descargas de repetición MP4 desde menús de tarjeta de stream y &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> (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 &lt;a href="https://zap.stream">Zap.Stream&lt;/a>.&lt;/p>
&lt;h3 id="nostr-java-v200">nostr-java v2.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java">nostr-java&lt;/a> lanzó &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0">v2.0.0&lt;/a> 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.&lt;/p>
&lt;h3 id="prism-110">Prism 1.1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> lanzó &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.0">1.1.0&lt;/a> 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 &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.1">1.1.1&lt;/a>.&lt;/p>
&lt;h3 id="angor-v026">Angor v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a>, la plataforma de crowdfunding de Bitcoin, lanzó &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.6">v0.2.6&lt;/a> 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.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">NIP-91: Operador AND para Filtros&lt;/a>&lt;/strong>: 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 &lt;code>p&lt;/code>) 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.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2247">NIP-30: Dirección de Conjunto de Emoji en Etiquetas&lt;/a>&lt;/strong>: Las etiquetas de emoji personalizados en &lt;a href="https://nostrcompass.org/es/topics/nip-30/">NIP-30&lt;/a> 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 &lt;a href="https://github.com/purrgrammer/chachi">Chachi&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2111">NIP-29: Añadir unallowpubkey y unbanpubkey&lt;/a>&lt;/strong>: Dos nuevos comandos de admin para chat grupal &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>. &lt;code>unallowpubkey&lt;/code> elimina una pubkey de la lista permitida sin banearla. &lt;code>unbanpubkey&lt;/code> levanta 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.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2244">NIP-A7: Spells&lt;/a>&lt;/strong> (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 (&lt;code>k&lt;/code> para kinds, &lt;code>authors&lt;/code> para pubkeys, &lt;code>tag&lt;/code> para filtros de etiqueta arbitrarios) con variables de ejecución: &lt;code>$me&lt;/code> se resuelve a la pubkey del usuario conectado, &lt;code>$contacts&lt;/code> se expande a la lista de follows kind 3 del usuario. Marcas de tiempo relativas (&lt;code>7d&lt;/code>, &lt;code>2w&lt;/code>, &lt;code>1mo&lt;/code>) permiten a los spells definir ventanas de tiempo móviles sin fechas hardcodeadas. Ya implementado en &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> y &lt;a href="https://github.com/purrgrammer/grimoire">Grimoire&lt;/a>, los spells permiten a los usuarios crear, compartir y suscribirse a feeds curados que viajan entre clientes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">NIP-59: Gift Wrap Efímero (kind 21059)&lt;/a>&lt;/strong> (abierto 27 feb): Añade una variante efímera de gift wraps de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>. 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.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2246">ContextVM: MCP JSON-RPC sobre Nostr&lt;/a>&lt;/strong> (abierto 27 feb): Especifica cómo transportar mensajes del Model Context Protocol sobre Nostr usando eventos efímeros kind 25910 con etiquetas &lt;code>p&lt;/code> y &lt;code>e&lt;/code> para direccionamiento y correlación. Intencionalmente ligero, delega el detalle del protocolo a la &lt;a href="https://docs.contextvm.org">especificación de ContextVM&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">NIP-29: Espacios en Vivo de Audio/Vídeo&lt;/a>&lt;/strong> (abierto 25 feb, borrador): Borrador de fiatjaf extendiendo grupos de &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> con audio y vídeo en vivo. La propuesta añade etiquetas opcionales &lt;code>livekit&lt;/code> y &lt;code>no-text&lt;/code> a eventos de metadatos de grupo. Cuando un usuario quiere unirse a un espacio de voz, el cliente solicita un JWT al relay en &lt;code>/.well-known/nip29/livekit/{groupId}&lt;/code>. El relay verifica la membresía del grupo y emite un token con la pubkey hex del usuario como claim &lt;code>sub&lt;/code>, que se pasa a &lt;a href="https://livekit.io/">LiveKit&lt;/a> 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.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2235">Propiedad Colaborativa de Eventos&lt;/a>&lt;/strong> (abierto 24 feb): pablof7z propone un evento puntero (kind 39382) que declara un espacio colaborativo listando pubkeys de co-propietarios en etiquetas &lt;code>p&lt;/code> y un kind de evento objetivo en una etiqueta &lt;code>k&lt;/code>. Cualquier propietario listado puede publicar eventos de ese kind con la misma etiqueta &lt;code>d&lt;/code>, 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 etiqueta &lt;code>a&lt;/code> verificable referencia al puntero y el autor aparece en sus etiquetas &lt;code>p&lt;/code>, previniendo reclamaciones falsificadas. Esto habilita páginas wiki compartidas y recursos co-autorizados sin asignar control a un solo par de claves.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2234">NIP-09: Eliminación en Cascada de Reposts&lt;/a>&lt;/strong> (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.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2233">NIP-07: peekPublicKey&lt;/a>&lt;/strong> (abierto 23 feb): Añade un método &lt;code>peekPublicKey()&lt;/code> a extensiones de navegador &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>. A diferencia de &lt;code>getPublicKey()&lt;/code>, retorna la pubkey actual sin solicitar confirmación del usuario, habilitando auto-login silencioso cuando el usuario tiene auto-login habilitado.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2248">NIP-BB: Book&lt;/a>&lt;/strong> (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 &lt;a href="https://nostrcompass.org/es/topics/nip-32/">NIP-32&lt;/a> (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.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">NIP-54: Cambiar de Asciidoc a Djot&lt;/a>&lt;/strong> (abierto 26 feb): Siguiendo la &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-31-newsletter/">corrección de internacionalización de d-tag&lt;/a> en diciembre, este PR propone reemplazar el formato de marcado Asciidoc de la wiki de &lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a> con &lt;a href="https://djot.net/">Djot&lt;/a>, añadiendo una sección de justificación y ejemplos de wikilink para scripts no latinos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">NIP-66: Medidas Defensivas&lt;/a>&lt;/strong> (abierto 26 feb): Basado en aprendizajes de los benchmarks de &lt;a href="https://nostrcompass.org/es/newsletters/2026-03-04-newsletter/#el-modelo-outbox-bajo-la-lupa">nostrability/outbox&lt;/a>, añade llamadas explícitas para casos límite de &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a>. Un &lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a> complementario define etiquetas de salida para comprobaciones de SSL, geolocalización, red y conectividad.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Pruebas de Identidad Criptográfica&lt;/strong> (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 &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-31402: Registro de Oferta de Reparto de Ingresos SARA&lt;/strong> (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.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="prs-abiertos-y-actualizaciones-de-proyectos">PRs Abiertos y Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="damus-nip-89estopicsnip-89-recommended-application-handlers">Damus: &lt;a href="https://nostrcompass.org/es/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3337">PR #3337&lt;/a> implementa soporte de etiqueta de cliente NIP-89 para &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>. 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 &amp;ldquo;vía ClientName&amp;rdquo; 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. &lt;a href="https://github.com/damus-io/damus/pull/3652">PR #3652&lt;/a> 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.&lt;/p>
&lt;p>Abierto: &lt;a href="https://github.com/damus-io/damus/pull/3657">PR #3657&lt;/a> añade respaldo de relay &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> para notas citadas. Cuando un &lt;code>nevent&lt;/code> 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.&lt;/p>
&lt;h3 id="amethyst-nip-39estopicsnip-39-external-identities-nip-c0-nip-66estopicsnip-66">Amethyst: &lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> (External Identities), NIP-C0, &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a>&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> 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 &lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1747">PR #1747&lt;/a>), 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 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1744">PR #1744&lt;/a>) añade eventos kind 1337 con accesores para lenguaje, extensión, runtime, licencia y dependencias. La implementación de monitoreo de relays &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1742">PR #1742&lt;/a>) cubre ambos kinds de evento con parseo completo de etiquetas para métricas RTT, tipo de red, NIPs soportados y geohash.&lt;/p>
&lt;p>DMs cifrados llegaron a Amethyst Desktop (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1710">PR #1710&lt;/a>) con un diseño de chat de panel dividido soportando tanto &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) como &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages). Una nueva pantalla de feed de relay (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1733">PR #1733&lt;/a>) 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 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>) añade una ruta de verificación paralela para identificadores &lt;code>.bit&lt;/code> que resuelve contra la blockchain Namecoin en lugar de DNS HTTP. Cuando Amethyst detecta un sufijo &lt;code>.bit&lt;/code> en un campo NIP-05, consulta un servidor ElectrumX-NMC para el historial de transacciones del nombre, parsea el script &lt;code>NAME_UPDATE&lt;/code> 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 &lt;code>.onion&lt;/code>. Un caché LRU con TTL de una hora previene consultas repetidas a la blockchain.&lt;/p>
&lt;h3 id="notedeck-arquitectura-outbox">Notedeck: Arquitectura Outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1303">PR #1303&lt;/a> migra &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> 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.&lt;/p>
&lt;h3 id="pika-perfiles-por-grupo-y-feed-tutorial">Pika: Perfiles por Grupo y Feed Tutorial&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, la app de mensajería cifrada con Marmot disponible en iOS y Android con build de escritorio, ganó perfiles por grupo (&lt;a href="https://github.com/sledtools/pika/pull/368">PR #368&lt;/a>). 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 (&lt;code>update-group-profile&lt;/code>) como de la UI.&lt;/p>
&lt;p>Una nueva app web &lt;code>pika-news&lt;/code> (&lt;a href="https://github.com/sledtools/pika/pull/401">PR #401&lt;/a>) 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 &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>. Los usuarios pueden discutir tutoriales específicos en tiempo real a través de chat autenticado por Nostr.&lt;/p>
&lt;h3 id="divine-widgets-incrustables-y-respuestas-en-vídeo">diVine: Widgets Incrustables y Respuestas en Vídeo&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, la plataforma de compartición de vídeo nativa de Nostr, fusionó 132 PRs en diez días. Widgets de iframe incrustables (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1843">PR #1843&lt;/a>) proporcionan una página &lt;code>/embed?npub=...&lt;/code> autónoma que renderiza el perfil de un usuario y sus últimos vídeos. La funcionalidad de respuesta en vídeo (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1915">PR #1915&lt;/a>), detrás de un feature flag, usa comentarios Kind 1111 (&lt;a href="https://nostrcompass.org/es/topics/nip-22/">NIP-22&lt;/a>) con metadatos imeta de &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a> (Media Attachments). Filtros de contenido de tres vías inspirados en Bluesky (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1797">PR #1797&lt;/a>) ofrecen controles Mostrar/Advertir/Ocultar a través de 17 categorías de advertencia de contenido &lt;a href="https://nostrcompass.org/es/topics/nip-32/">NIP-32&lt;/a>.&lt;/p>
&lt;h3 id="strfry-validación-de-filtros-req">strfry: Validación de Filtros REQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry/pull/163">PR #163&lt;/a> añade validación configurable de filtros REQ a &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, 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: &lt;a href="https://github.com/hoytech/strfry/pull/173">PR #173&lt;/a> añade compresión zstd opcional para payloads de eventos en el momento de ingesta.&lt;/p>
&lt;h3 id="rust-nostr-nip-62estopicsnip-62-request-to-vanish">rust-nostr: &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>, la biblioteca de protocolo Nostr en Rust, añadió soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) a través de los tres backends de base de datos: &lt;a href="https://github.com/rust-nostr/nostr/pull/1268">LMDB&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1270">SQLite&lt;/a> e &lt;a href="https://github.com/rust-nostr/nostr/pull/1272">in-memory&lt;/a>. La implementación LMDB incluye opciones configurables para habilitar o deshabilitar la aplicación de &lt;a href="https://nostrcompass.org/es/topics/nip-09/">NIP-09&lt;/a> y NIP-62 por despliegue.&lt;/p>
&lt;h3 id="ndk-eventos-colaborativos-y-timeout-de-nip-46">NDK: Eventos Colaborativos y Timeout de NIP-46&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>, el Nostr Development Kit para JavaScript/TypeScript, fusionó &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/380">PR #380&lt;/a> introduciendo &lt;code>NDKCollaborativeEvent&lt;/code> para documentos colaborativos multi-autor usando un evento puntero direccionable (kind 39382) que define autores autorizados. Un timeout configurable para &lt;code>NDKNip46Signer&lt;/code> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/381">PR #381&lt;/a>) previene que operaciones de firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> se queden colgadas indefinidamente cuando un bunker no responde.&lt;/p>
&lt;h3 id="tenex-categorización-de-agentes-y-control-por-pubkey">TENEX: Categorización de Agentes y Control por Pubkey&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, 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 (&lt;a href="https://github.com/tenex-chat/tenex/pull/91">PR #91&lt;/a>) 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 (&lt;a href="https://github.com/tenex-chat/tenex/pull/87">PR #87&lt;/a>) 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.&lt;/p>
&lt;h3 id="zap-cooking-panel-de-membresía">Zap Cooking: Panel de Membresía&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, 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 (&lt;a href="https://github.com/zapcooking/frontend/pull/228">PR #228&lt;/a>) 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 (&lt;a href="https://github.com/zapcooking/frontend/pull/227">PR #227&lt;/a>) 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.&lt;/p>
&lt;p>El almacenamiento de mnemónico de billetera se movió de cifrado derivado de pubkey a cifrado para sí mismo con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (&lt;a href="https://github.com/zapcooking/frontend/pull/224">PR #224&lt;/a>), corrigiendo una vulnerabilidad donde el esquema anterior derivaba su clave de &lt;code>SHA-256(pubkey)&lt;/code>, 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 &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> 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 (&lt;a href="https://github.com/zapcooking/frontend/pull/213">PR #213&lt;/a>). Las vistas previas de enlaces y embebidos de eventos Nostr ahora se renderizan en DMs y mensajes grupales (&lt;a href="https://github.com/zapcooking/frontend/pull/218">PR #218&lt;/a>). Una sección de respaldo Nostr en Ajustes (&lt;a href="https://github.com/zapcooking/frontend/pull/210">PR #210&lt;/a>) almacena follows y listas de silenciados vía almacenamiento cifrado de &lt;a href="https://nostrcompass.org/es/topics/nip-78/">NIP-78&lt;/a> (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 (&lt;a href="https://github.com/zapcooking/frontend/pull/208">PR #208&lt;/a>). Un modal personalizable de impresión de recetas (&lt;a href="https://github.com/zapcooking/frontend/pull/205">PR #205&lt;/a>) permite a los usuarios alternar qué secciones incluir con vista previa en vivo. La integración del &lt;a href="https://github.com/BrantaOps/branta-core">Branta SDK&lt;/a> (&lt;a href="https://github.com/zapcooking/frontend/pull/222">PR #222&lt;/a>) añade protecciones de verificación para solicitudes POST y GET.&lt;/p>
&lt;h3 id="keep-migración-de-estado-por-rust">Keep: Migración de Estado por Rust&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, el gestor de claves privadas basado en Nostr para Android, fusionó &lt;a href="https://github.com/privkeyio/keep-android/pull/178">PR #178&lt;/a>, 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 &lt;code>KeepStateCallback&lt;/code> basado en push desde Rust. &lt;a href="https://github.com/privkeyio/keep-android/pull/179">PR #179&lt;/a> añade respaldo y restauración cifrados con protección por frase de contraseña.&lt;/p>
&lt;h3 id="mostro-mobile-cifrado-de-chat-de-disputas">Mostro Mobile: Cifrado de Chat de Disputas&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, 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 (&lt;a href="https://github.com/MostroP2P/mobile/pull/495">PR #495&lt;/a>) cambia de envoltorio específico de mostro a cifrado de clave compartida derivado de la pubkey del admin. Construyendo sobre eso, &lt;a href="https://github.com/MostroP2P/mobile/pull/501">PR #501&lt;/a> unifica el modelo de mensajes con &lt;code>NostrEvent&lt;/code> 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 (&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>) sobrescribe la dependencia bip340 a 0.2.0, resolviendo un bug de relleno en &lt;code>bigToBytes()&lt;/code> que causaba que 1-2% de las firmas Schnorr fueran inválidas y 100% de fallo para claves cuya clave pública comienza con &lt;code>0x00&lt;/code>. 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 (&lt;a href="https://github.com/MostroP2P/mobile/pull/502">PR #502&lt;/a>). HalCash fue añadido y SEPA eliminado como método de pago (&lt;a href="https://github.com/MostroP2P/mobile/pull/493">PR #493&lt;/a>), ya que las transferencias SEPA pueden exceder 24 horas (SEPA Instant permanece).&lt;/p>
&lt;p>Del lado del servidor, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> corrigió la restauración de sesión de disputas para incluir el campo de iniciador (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) 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 (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>).&lt;/p>
&lt;h2 id="cinco-años-de-febreros-de-nostr">Cinco Años de Febreros de Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-01-28-newsletter/#five-years-of-nostr-januaries">El boletín del mes pasado&lt;/a> 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.&lt;/p>
&lt;h3 id="febrero-2021-la-reescritura">Febrero 2021: La Reescritura&lt;/h3>
&lt;p>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 &lt;a href="https://github.com/nostr-protocol/nostr/commit/33a1a70">reescribió NIP-01&lt;/a>, 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.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> 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 &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, pero dio al puñado de usuarios tempranos su primer canal de comunicación privada en el protocolo.&lt;/p>
&lt;p>Las herramientas se expandieron con &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>, un cliente de línea de comandos en Go para interacción con relays basada en terminal, y futurepaul comenzó &lt;a href="https://github.com/futurepaul/nostr-rs">nostr-rs&lt;/a>, una implementación Rust temprana. La red completa funcionaba con dos o tres relays, coordinada a través de un &lt;a href="https://t.me/nostr_protocol">grupo de Telegram&lt;/a>, con aproximadamente siete contribuidores activos.&lt;/p>
&lt;h3 id="febrero-2022-ganando-impulso">Febrero 2022: Ganando Impulso&lt;/h3>
&lt;p>La &lt;a href="https://news.ycombinator.com/item?id=29749061">publicación en Hacker News&lt;/a> del 31 de diciembre de 2021 continuó atrayendo desarrolladores en febrero. El repositorio &lt;a href="https://github.com/nostr-protocol/nostr">nostr-protocol/nostr&lt;/a> (el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a> 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 &lt;a href="https://github.com/nostr-protocol/nostr/pull/75">NIP-17&lt;/a> (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 &lt;a href="https://gitworkshop.dev">gitworkshop.dev&lt;/a>.&lt;/p>
&lt;p>El &lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a> 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 &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a>. 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.&lt;/p>
&lt;p>Robert C. Martin (Uncle Bob) estaba construyendo &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, 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 &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> de fiatjaf lanzó soporte de descifrado &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> y políticas de preferencia de relay en febrero, implementando la interfaz &lt;code>window.nostr&lt;/code> (&lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>) que los clientes web aún usan para delegación de claves.&lt;/p>
&lt;p>&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, aún el cliente web principal, ganó registro de manejador de protocolo &lt;code>web+nostr&lt;/code> el 13 de febrero, un intento temprano de deep linking entre aplicaciones Nostr. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> reforzó la validación NIP-05. &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> 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.&lt;/p>
&lt;h3 id="febrero-2023-atención-internacional">Febrero 2023: Atención Internacional&lt;/h3>
&lt;p>Febrero 2023 trajo a Nostr su mayor ola de atención pública. &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, el cliente iOS de William Casarin, había sido &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">aprobado en la App Store de Apple el 31 de enero&lt;/a> 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, &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Apple retiró Damus de la App Store de China&lt;/a> supuestamente a petición de la Administración del Ciberespacio de China.&lt;/p>
&lt;p>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.&lt;/p>
&lt;p>El &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a> registró 29 pull requests fusionados ese mes, el conteo mensual más alto en la historia del protocolo hasta ese punto. &lt;a href="https://github.com/nostr-protocol/nips/pull/224">NIP-57&lt;/a> (Lightning Zaps) y &lt;a href="https://github.com/nostr-protocol/nips/pull/220">NIP-23&lt;/a> (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. &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) se había fusionado una semana antes el 7 de febrero, habilitando el modelo outbox que seguiría. &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) y &lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a> (Badges) también aterrizaron antes de fin de mes.&lt;/p>
&lt;p>La Human Rights Foundation &lt;a href="https://hrf.org/devfund2023q1">otorgó $50.000 a William Casarin para desarrollo de Nostr y Damus&lt;/a> 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 &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">julio de 2023&lt;/a>).&lt;/p>
&lt;h3 id="febrero-2024-durabilidad-del-protocolo">Febrero 2024: Durabilidad del Protocolo&lt;/h3>
&lt;p>Febrero 2024 cambió el enfoque del crecimiento a la durabilidad del protocolo. &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), abierto desde el julio anterior, estaba trabajando hacia un reemplazo del envejecido cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> usando la criptografía auditada de &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> y el gift wrapping de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>. 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.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> (Simple Groups) &lt;a href="https://github.com/nostr-protocol/nips/pull/566">se fusionó el 28 de febrero&lt;/a> 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. &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a> (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.&lt;/p>
&lt;p>El 16 de febrero, el repositorio de NIPs añadió &lt;a href="https://github.com/nostr-protocol/nips/commit/62c48eff">BREAKING.md&lt;/a>, 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.&lt;/p>
&lt;p>Veintidós pull requests se fusionaron ese mes. &lt;a href="https://github.com/cashubtc/npubcash-server">npub.cash&lt;/a> se lanzó como servicio de dirección Lightning que permite a cualquier npub recibir pagos sin ejecutar un servidor. Un &lt;a href="https://arxiv.org/abs/2402.05709">artículo académico&lt;/a> 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).&lt;/p>
&lt;h3 id="febrero-2025-crecimiento-de-infraestructura">Febrero 2025: Crecimiento de Infraestructura&lt;/h3>
&lt;p>Febrero 2025 produjo 28 pull requests fusionados al repositorio de NIPs. Un NIP de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">Derecho a Desvanecerse&lt;/a> 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.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a> (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.&lt;/p>
&lt;p>Los lanzamientos de clientes marcaron progreso constante. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> 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 &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> v0.3.0, una implementación de relay en Go, se lanzó el 21 de febrero.&lt;/p>
&lt;p>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 (&lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a>) con el Model Context Protocol, prefigurando el trabajo de integración de agentes de IA que llegaría el mes siguiente.&lt;/p>
&lt;h3 id="febrero-2026-más-allá-de-las-redes-sociales">Febrero 2026: Más Allá de las Redes Sociales&lt;/h3>
&lt;p>&lt;em>La actividad de febrero 2026 se extrae de los números de Nostr Compass &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/">#8&lt;/a> al &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/">#11&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Febrero 2026 produjo la gama más amplia de desarrollo de capa de aplicación en cualquier mes de Nostr. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> lanzó su &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#mostro-ships-first-public-beta">primera beta pública&lt;/a> para trading peer-to-peer descentralizado de Bitcoin, y &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> alcanzó &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#zapstore-v100">1.0 estable&lt;/a> después de meses en pruebas de release candidate. &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> entregó mensajería en tiempo real cifrada con &lt;a href="https://nostrcompass.org/es/topics/mls/">Marmot&lt;/a> con soporte de firmante Amber y más de 160 mejoras fusionadas.&lt;/p>
&lt;p>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 &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#nip-updates">propuesta de Coordinación de Agentes DVM&lt;/a> extendiendo &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#contextvm-mcp-over-nostr">ContextVM&lt;/a> lanzó mejoras del SDK conectando el Model Context Protocol al transporte Nostr. &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#burrow-mls-messaging-for-ai-agents">Burrow&lt;/a> añadió mensajería cifrada con &lt;a href="https://nostrcompass.org/es/topics/mls/">Marmot&lt;/a> 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.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">FIPS&lt;/a> 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.&lt;/p>
&lt;p>&lt;a href="https://opensats.org/blog/fifteenth-wave-of-nostr-grants">OpenSats anunció su decimoquinta ronda de subvenciones Nostr&lt;/a>, financiando proyectos incluyendo ContextVM y Nostube. Los cambios de protocolo incluyeron soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> hold invoice para Nostr Wallet Connect y &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a> (Counting Results) HyperLogLog para estimación de conteo del lado del relay. La descubribilidad de proveedores de servicio de &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) para puntuación de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a> también se fusionó. &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> comenzó un rediseño completo de API mientras Nostria 3.0 y &lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (iOS TestFlight) ambos se lanzaron. La capa de caché local de &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> abordó la disponibilidad de medios a través de relays.&lt;/p>
&lt;h3 id="mirando-hacia-adelante">Mirando Hacia Adelante&lt;/h3>
&lt;p>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.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #11</title><link>https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> trae mensajería en tiempo real y soporte para el firmante Amber con más de 160 mejoras fusionadas. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corrige problemas de reproducción de vídeo y añade eventos de visualización Kind 22236 para análisis de creadores. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> y &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> lanzan actualizaciones. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> lanza una implementación en Rust funcional de redes de malla nativas de Nostr. Notecrumbs recibe correcciones de estabilidad para las vistas previas de enlaces de damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> conecta Nostr con el Model Context Protocol. Los nuevos proyectos incluyen &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> para mensajería cifrada con MLS entre agentes de IA y humanos, y &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> para gestión de bóveda e identidad basada en navegador. Los análisis profundos cubren la firma Android de NIP-55 y la sincronización de billeteras Cashu de NIP-60.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> trae mensajería en tiempo real y soporte para el firmante Amber con más de 160 mejoras fusionadas. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corrige problemas de reproducción de vídeo y añade eventos de visualización Kind 22236 para análisis de creadores. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> y &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> lanzan actualizaciones. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> lanza una implementación en Rust funcional de redes de malla nativas de Nostr. Notecrumbs recibe correcciones de estabilidad para las vistas previas de enlaces de damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> conecta Nostr con el Model Context Protocol. Los nuevos proyectos incluyen &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> para mensajería cifrada con MLS entre agentes de IA y humanos, y &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> para gestión de bóveda e identidad basada en navegador. Los análisis profundos cubren la firma Android de NIP-55 y la sincronización de billeteras Cashu de NIP-60.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="mejoras-de-estabilidad-en-notecrumbs">Mejoras de Estabilidad en Notecrumbs&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>, la API de Nostr y servidor web que impulsa las vistas previas de enlaces de damus.io, recibió una serie de correcciones que abordan problemas de confiabilidad.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">corrección de concurrencia&lt;/a> reemplazó el mecanismo de deduplicación en vuelo con canales watch. Dos llamantes que solicitaban la misma nota podían convertirse ambos en buscadores, llevando a un bloqueo cuando uno completaba antes de que el otro se suscribiera a la notificación. Los canales watch con operaciones atómicas aseguran que solo un buscador se ejecute mientras otros esperan el resultado.&lt;/p>
&lt;p>La &lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">limitación de tasa&lt;/a> implementa una defensa de dos capas contra el martilleo de relays. Cuando los usuarios acceden repetidamente a la misma nota, el sistema ahora aplica debounce a las solicitudes de relay con una ventana de enfriamiento de 5 minutos. Esta protección se extiende a todos los tipos de &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> y feeds de perfil, previniendo spam proporcional a los relays durante tráfico intenso.&lt;/p>
&lt;p>El commit de &lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">mejoras de rendimiento&lt;/a> movió las búsquedas de datos secundarios a tareas tokio en segundo plano. Las páginas ahora se renderizan instantáneamente con datos en caché en lugar de bloquearse en tiempos de espera secuenciales de relay que podían sumar hasta 7.5 segundos. Una actualización a nostrdb 0.10.0 acompañó estas correcciones.&lt;/p>
&lt;h3 id="contextvm-mcp-sobre-nostr">ContextVM: MCP sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a> es un conjunto de herramientas que conectan Nostr y el &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> (MCP). Commits recientes han introducido la nueva especificación &lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a> que habilita pagos, y han estado impulsando mejoras del &lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a> durante febrero.&lt;/p>
&lt;p>El SDK proporciona transportes de cliente y servidor TypeScript para MCP sobre Nostr. Los desarrolladores pueden exponer servidores MCP a través de la red Nostr y los clientes pueden conectarse a ellos. Los relays actúan como un bus de mensajes ciego, solo enrutando eventos cifrados ciegamente. Los clientes sin soporte nativo de Nostr se conectan a través de una capa proxy. La biblioteca maneja la gestión de relays y la firma criptográfica para autenticación de eventos. Funciona tanto en entornos Node.js como de navegador.&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a> proporciona un CLI para descubrimiento de servidores e invocación de métodos. &lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a> calcula puntuaciones de confianza personalizadas a partir de la distancia del grafo social combinada con validación de perfil.&lt;/p>
&lt;p>ContextVM se posiciona como una capa puente: los servidores MCP existentes obtienen interoperabilidad con Nostr mientras mantienen sus transportes convencionales.&lt;/p>
&lt;h3 id="white-noise-documenta-la-búsqueda-descentralizada-de-usuarios">White Noise Documenta la Búsqueda Descentralizada de Usuarios&lt;/h3>
&lt;p>Una &lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">publicación de blog de jgmontoya&lt;/a> detalla cómo &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> maneja la búsqueda de usuarios a través de la red descentralizada de relays.&lt;/p>
&lt;p>La distribución de perfiles crea el desafío: a diferencia de los mensajeros centralizados con bases de datos unificadas, los perfiles de Nostr se dispersan a través de docenas de relays sin índice central. White Noise resuelve esto mediante una arquitectura productor-consumidor que se ejecuta en paralelo.&lt;/p>
&lt;p>Un proceso productor expande continuamente el grafo social hacia afuera desde los follows del usuario, obteniendo listas de follows a distancias crecientes y encolando pubkeys descubiertas para resolución de perfil. El consumidor resuelve coincidencias a través de cinco niveles de costo creciente: tabla de usuarios local (más rápido), perfiles en caché de búsquedas anteriores, relays conectados, listas de relays de usuario por &lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a>, y consultas directas a relays declarados por el usuario (más lento).&lt;/p>
&lt;p>Búsquedas en frío toman aproximadamente 3 segundos mientras que búsquedas en caliente desde caché bajan a alrededor de 10 milisegundos. Para nuevos usuarios sin grafos sociales establecidos, el sistema inyecta nodos bootstrap bien conectados para asegurar la funcionalidad de búsqueda. La membresía de grupo proporciona una señal social implícita junto a los follows explícitos.&lt;/p>
&lt;p>La instrumentación resultó crítica para la optimización, señala el autor. Sin métricas, las mejoras eran conjeturas.&lt;/p>
&lt;h3 id="fips-redes-de-malla-nativas-de-nostr">FIPS: Redes de Malla Nativas de Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> (Free Internetworking Peering System) es una implementación Rust funcional de una red de malla auto-organizada que usa pares de claves Nostr (secp256k1) como identidades de nodo. La &lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">documentación de diseño&lt;/a> acompaña al código funcional.&lt;/p>
&lt;p>El protocolo aborda la independencia de infraestructura: los nodos se descubren entre sí automáticamente sin servidores centrales o autoridades de certificados. Un árbol de expansión proporciona enrutamiento basado en coordenadas mientras los filtros bloom propagan información de alcanzabilidad, permitiendo a los nodos tomar decisiones de reenvío con solo conocimiento local. El agnosticismo de transporte significa que el mismo protocolo funciona sobre UDP, Ethernet, Bluetooth, radio LoRa, o cualquier medio capaz de datagramas.&lt;/p>
&lt;p>Dos capas de cifrado protegen el tráfico. El cifrado de capa de enlace (patrón Noise IK) asegura la comunicación salto a salto entre vecinos con autenticación mutua y secreto hacia adelante. El cifrado de capa de sesión (patrón Noise XK) proporciona protección de extremo a extremo contra enrutadores intermedios, donde solo el destino puede descifrar la carga útil. Esto imita cómo TLS protege el tráfico HTTP incluso al atravesar redes no confiables.&lt;/p>
&lt;p>La arquitectura usa un árbol de expansión de &amp;ldquo;incrustación codiciosa&amp;rdquo; para enrutamiento. Cada nodo recibe coordenadas basadas en su posición relativa a la raíz del árbol y el padre. Los paquetes se enrutan codiciosamente hacia coordenadas más cercanas al destino, con filtros bloom anunciando puntos finales alcanzables. Cuando el enrutamiento codicioso falla (mínimos locales), los nodos pueden recurrir a rutas basadas en árbol.&lt;/p>
&lt;p>La implementación Rust ya incluye transporte UDP con descubrimiento de filtro bloom. El trabajo futuro se dirige a la integración de relays Nostr para arranque de pares.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;p>Esta semana trajo lanzamientos a través de infraestructura de relay y aplicaciones cliente, con nuevos proyectos también entrando al espacio.&lt;/p>
&lt;h3 id="haven-v120">HAVEN v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, el relay personal todo-en-uno que agrupa cuatro funciones de relay con un servidor de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>, lanzó &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>. Este lanzamiento va más allá de la etapa RC &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#haven-v120-rc3">cubierta la semana pasada&lt;/a>.&lt;/p>
&lt;p>El soporte multi-npub permite que una sola instancia de HAVEN sirva a varias identidades Nostr mediante lista blanca, con nueva funcionalidad de lista negra para control de acceso. Un sistema de respaldo reescrito usa formato JSONL portable, con un comando &lt;code>haven restore&lt;/code> para importar notas desde archivos JSONL. La integración de almacenamiento en la nube añade banderas &lt;code>--to-cloud&lt;/code> y &lt;code>--from-cloud&lt;/code> para gestión de respaldo remoto.&lt;/p>
&lt;p>Mejoras de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a> incluyen niveles de profundidad configurables para cálculos de confianza e intervalos de actualización automática de 24 horas con optimización sin bloqueos que reduce la sobrecarga de memoria. Configuración de user-agent para solicitudes de relay y ajustes de timeout de Blastr configurables completan el lanzamiento, junto a exportación de datos a JSONL comprimido.&lt;/p>
&lt;h3 id="white-noise-v030">White Noise v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, la app de mensajería cifrada basada en &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> que implementa el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a> con más de 160 mejoras fusionadas.&lt;/p>
&lt;p>Este lanzamiento trae mensajería en tiempo real mediante conexiones de streaming en lugar de sondeo, por lo que los mensajes llegan instantáneamente. El soporte para Amber (&lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>) significa que las claves privadas nunca necesitan tocar la app. Compartir imágenes ahora funciona con seguimiento de progreso de subida y marcadores de posición blurhash mientras carga. La visualización a pantalla completa soporta pellizcar para hacer zoom.&lt;/p>
&lt;p>Mensajería grupal recibió mejoras de confiabilidad con listas de chat mostrando nombres de remitentes y cifrado &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> asegurando secreto hacia adelante. La búsqueda de usuarios se expande hacia afuera desde los follows hasta cuatro grados de separación con resultados llegando en streaming a medida que se encuentran.&lt;/p>
&lt;p>Un cambio disruptivo reinicia todos los datos locales al actualizar debido a cambios en el protocolo Marmot y el cambio a almacenamiento local cifrado. Los usuarios deben respaldar claves nsec antes de actualizar.&lt;/p>
&lt;h3 id="divine-105">diVine 1.0.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de vídeo corto en bucle construido sobre archivos restaurados de Vine, lanzó &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a> con extensas correcciones de reproducción de vídeo y un nuevo sistema de análisis descentralizado.&lt;/p>
&lt;p>Los problemas de reproducción de vídeo dominaron las correcciones: pausa fantasma, audio dual entre vídeos, destello negro entre miniaturas y primeros fotogramas, y crashes de reproductor desechado están todos resueltos. Un reproductor de vídeo agrupado ahora maneja el feed de Inicio para reproducción consistente.&lt;/p>
&lt;p>Eventos de visualización efímeros Kind 22236 habilitan análisis de creadores y recomendaciones. El sistema rastrea fuentes de tráfico junto a conteos de bucles mientras filtra auto-visualizaciones. Fugas de ruta de archivo local en etiquetas imeta de evento Nostr se corrigen con URLs canónicas de Blossom construidas en el lado del cliente por especificación BUD-01.&lt;/p>
&lt;p>Mejoras de firmante remoto &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> incluyen conexiones de relay paralelizadas y soporte de URL de callback. Android reconecta conexiones WebSocket al reanudar la app después de aprobación del firmante.&lt;/p>
&lt;h3 id="coracle-0630">Coracle 0.6.30&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, el cliente Nostr basado en web enfocado en gestión de relay y moderación de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a>, lanzó &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.30">0.6.30&lt;/a> con soporte de miniaturas de vídeo, mejorando la navegación de medios en feeds.&lt;/p>
&lt;h3 id="nostur-v1260">Nostur v1.26.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, el cliente Nostr para iOS, lanzó &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.26.0">v1.26.0&lt;/a> con una nueva sección de feed de Transmisiones en Vivo y una pantalla de Ajustes rediseñada. Los GIFs ahora pueden alojarse en servidores de medios Blossom, reduciendo la dependencia de servicios centralizados. La integración de GIFs de Klipy proporciona respaldo cuando Tenor no está disponible. Encabezados de año en conversaciones de DM y visualización de conteo de menciones completan los cambios de cara al usuario.&lt;/p>
&lt;p>Herramientas de desarrollador y apps CLI también recibieron actualizaciones esta semana.&lt;/p>
&lt;h3 id="nak-v0185">nak v0.18.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, la navaja suiza de línea de comandos de fiatjaf para Nostr, lanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.5">v0.18.5&lt;/a> con un nuevo subcomando &lt;code>nak profile&lt;/code> para obtener y mostrar perfiles de usuario. El comando &lt;code>git clone&lt;/code> ahora soporta nombres &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> en URIs &lt;code>nostr://&lt;/code>, habilitando clonación de repositorios por identificadores legibles por humanos.&lt;/p>
&lt;h3 id="pika-v053">Pika v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, el mensajero cifrado con &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> para iOS, Android y escritorio construido sobre el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, lanzó &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v0.5.3">v0.5.3&lt;/a>. Commits recientes añaden subida de archivos y soporte de medios de arrastrar y soltar a la app de escritorio, junto a correcciones de despliegue en Cloudflare Workers.&lt;/p>
&lt;p>Pika usa un núcleo Rust que posee toda la lógica de negocio mientras iOS (SwiftUI) y Android (Kotlin) actúan como capas delgadas de UI renderizando instantáneas de estado. MDK (Marmot Development Kit) proporciona la implementación MLS. El proyecto señala estado alfa y advierte contra uso para cargas de trabajo sensibles.&lt;/p>
&lt;h3 id="ridestr-v026">Ridestr v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la plataforma descentralizada de viajes compartidos con pagos Cashu, lanzó &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.6">v0.2.6&lt;/a>. Este lanzamiento corrige problemas de accesibilidad de TalkBack y resuelve bugs donde los conductores desaparecían de la lista cercana al cambiar métodos de pago o donde los conteos de conductor seleccionado no se actualizaban cuando los conductores se desconectaban.&lt;/p>
&lt;p>La función &amp;ldquo;Send to All&amp;rdquo; ahora es &amp;ldquo;Broadcast RoadFlare&amp;rdquo; con correcciones para fallos silenciosos en instalaciones frescas de conductor. Ridestr implementa escrow HTLC para pagos de viaje sin confianza y sincronización de billetera &lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a> entre dispositivos.&lt;/p>
&lt;h3 id="unfiltered-v106">Unfiltered v1.0.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, la app de compartir fotos estilo Instagram para Android, lanzó &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.6">v1.0.6&lt;/a> con búsqueda mejorada de usuarios y reconexión automática de relay cada 60 segundos.&lt;/p>
&lt;p>Construido con Kotlin y Jetpack Compose, Unfiltered usa bindings de rust-nostr y servidores compatibles con Blossom para alojamiento de imágenes. La integración con Amber (&lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>) maneja la gestión segura de claves. La app muestra publicaciones de cuentas seguidas en orden cronológico sin algoritmos ni anuncios.&lt;/p>
&lt;p>Dos nuevos proyectos de mensajería y firma también se lanzaron esta semana.&lt;/p>
&lt;h3 id="burrow-mensajería-mls-para-agentes-de-ia">Burrow: Mensajería MLS para Agentes de IA&lt;/h3>
&lt;p>&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> es un mensajero que implementa el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> para comunicación cifrada con MLS sin números de teléfono ni servidores centralizados. Tanto usuarios humanos como agentes de IA pueden participar.&lt;/p>
&lt;p>Un daemon CLI de Rust puro con modo de salida JSONL maneja la integración con sistemas automatizados. Una app Flutter multiplataforma cubre Android, iOS, Linux, macOS y Windows. Los adjuntos de medios se cifran junto a los mensajes, y WebRTC maneja llamadas de audio y vídeo con servidores TURN configurables.&lt;/p>
&lt;p>Burrow superpone cifrado MLS sobre infraestructura Nostr. La identidad usa pares de claves Nostr (secp256k1) mientras los KeyPackages MLS se publican como eventos kind 443. Los mensajes se cifran con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> como eventos kind 445, y las invitaciones de bienvenida usan gift-wrapping de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>.&lt;/p>
&lt;p>Integración con &lt;a href="https://openclaw.ai">OpenClaw&lt;/a> habilita la participación de agentes de IA con acceso completo a herramientas. Listas de control de acceso con registro de auditoría gestionan permisos de contactos y grupos. Esta combinación posiciona a Burrow para escenarios de mensajería agente-a-agente y agente-a-humano que requieren cifrado de nivel Signal sobre infraestructura descentralizada.&lt;/p>
&lt;h3 id="extensión-nostria-signer">Extensión Nostria Signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> es una extensión de navegador basada en Chromium que proporciona gestión de bóveda e identidad para usuarios de Nostr.&lt;/p>
&lt;p>Múltiples bóvedas conteniendo múltiples cuentas permiten a los usuarios organizar identidades para diferentes contextos. La internacionalización incluye soporte de idiomas RTL. Construido con Angular y TypeScript (79.2% del código), funciona tanto como extensión de navegador como Aplicación Web Progresiva.&lt;/p>
&lt;p>Nostria Signer implementa &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a> para firma de extensión de navegador, habilitando a clientes Nostr basados en web solicitar firmas de eventos sin acceder directamente a claves privadas. Migración automática de billetera maneja actualizaciones distribuidas a través de la Chrome Web Store. Los usuarios también pueden cargar lateralmente desde la carpeta &lt;code>dist/extension&lt;/code>.&lt;/p>
&lt;p>Los desarrolladores enfatizan el estado experimental: los usuarios deben gestionar sus propias frases de recuperación secreta ya que los desarrolladores no pueden restaurar acceso a claves perdidas.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="formstr-migra-a-nueva-organización">Formstr Migra a Nueva Organización&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, la alternativa a Google Forms en Nostr, migró su repositorio de &lt;code>abh3po/nostr-forms&lt;/code> a la organización &lt;code>formstr-hq&lt;/code>. Este receptor de beca OpenSats continúa desarrollo en la nueva ubicación.&lt;/p>
&lt;h3 id="prs-abiertos-notables">PRs Abiertos Notables&lt;/h3>
&lt;p>Trabajo en progreso a través de proyectos Nostr:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Modelo Outbox de Damus&lt;/strong> (&lt;a href="https://github.com/damus-io/damus/pull/3602">PR #3602&lt;/a>): Plan de implementación para el modelo de relay gossip/outbox en iOS. Este cambio arquitectónico mejora la entrega de mensajes publicando a los relays donde los destinatarios realmente leen.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notificaciones Multiplataforma de Notedeck&lt;/strong> (&lt;a href="https://github.com/damus-io/notedeck/pull/1296">PR #1296&lt;/a>): Sistema de notificaciones nativo para el cliente de escritorio Damus cubriendo FCM de Android, macOS y Linux.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Actualización Cashu v3 de NDK&lt;/strong> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/370">PR #370&lt;/a>): Actualiza la integración de billetera del Nostr Development Kit a cashu-ts v3.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cashu Offline de Zeus&lt;/strong> (&lt;a href="https://github.com/ZeusLN/zeus/pull/3742">PR #3742&lt;/a>): Envío y recepción de ecash offline para la billetera Lightning Zeus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Entrega Digital Cifrada de Shopstr&lt;/strong> (&lt;a href="https://github.com/shopstr-eng/shopstr/pull/231">PR #231&lt;/a>): Añade entrega cifrada para bienes digitales con soporte de peso dinámico para artículos físicos.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados Esta Semana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">Descubribilidad de Proveedor de Servicio NIP-85&lt;/a>&lt;/strong>: La especificación de &lt;a href="https://nostrcompass.org/es/topics/nip-85/">NIP-85&lt;/a> ahora incluye orientación sobre cómo los clientes descubren proveedores de aserciones de confianza. Cuando un cliente necesita puntuaciones de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a> u otras métricas computadas, puede consultar relays por anuncios kind 30085 de proveedores que el usuario ya sigue o confía.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2229">NIP-29 Elimina Grupos No Gestionados&lt;/a>&lt;/strong>: La especificación de chat grupal de &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> eliminó el soporte para grupos no gestionados (donde cualquier miembro podía añadir a otros). Todos los grupos NIP-29 ahora requieren gestión del lado del relay con roles de admin explícitos, simplificando implementaciones y reduciendo vectores de spam.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2231">NIP-11 Elimina Campos Deprecados&lt;/a>&lt;/strong>: Los documentos de información de relay de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> ya no incluyen los campos deprecados &lt;code>software&lt;/code> y &lt;code>version&lt;/code>. Las implementaciones deberían eliminarlos de sus respuestas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2227">NIP-39 Mueve Etiquetas de Identidad&lt;/a>&lt;/strong>: Reclamaciones de identidad externa (etiquetas &lt;code>i&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> para GitHub, Twitter, etc.) se movieron de perfiles kind 0 a eventos dedicados kind 30382. Esto separa la verificación de identidad de los metadatos de perfil.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Progreso de NIPs para Agentes de IA:&lt;/strong>&lt;/p>
&lt;p>Cuatro NIPs enfocados en IA continúan desarrollo activo. Desde la &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#llegan-los-nips-para-agentes-de-ia">cobertura de la semana pasada&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>&lt;/strong> (actualizado 19 feb): Define identidad de agente con kind 4199 para definiciones de agente y kind 4201 para prompting (&amp;ldquo;nudges&amp;rdquo;). Los agentes pueden referenciar metadatos de archivo &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> para descripciones extendidas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>&lt;/strong> (actualizado 18 feb): Estandariza mensajería conversacional con siete kinds de evento efímeros (25800-25806) para estado, deltas de streaming, prompts, respuestas, llamadas de herramientas, errores y cancelación. Eventos &amp;ldquo;AI Info&amp;rdquo; kind 31340 permiten a los agentes anunciar modelos y capacidades soportadas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2228">NIP-AC: DVM Agent Coordination&lt;/a>&lt;/strong> (abierto 18 feb): Extiende &lt;a href="https://nostrcompass.org/es/topics/nip-90/">NIP-90&lt;/a> para flujos de trabajo de agentes autónomos. Añade latidos para descubrimiento de agentes, revisiones de trabajos para seguimiento de calidad, escrow de datos para compromiso de resultados, cadenas de flujo de trabajo para pipelines de múltiples pasos, y licitación de enjambre para selección competitiva de proveedores. Una implementación de referencia corre en 2020117.xyz.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server Announcements&lt;/a>&lt;/strong> (abierto 12 feb): Estandariza el anuncio de servidores y habilidades del Model Context Protocol en Nostr. Ya en uso en la plataforma TENEX.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Otros PRs Abiertos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2232">NIP-144: Service Authorization Protocol&lt;/a>&lt;/strong>: Define cómo los clientes prueban identidad y permisos a proveedores de servicio en Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2230">NIP-DC: Nostr Webxdc&lt;/a>&lt;/strong>: alexgleason propone integrar Webxdc (aplicaciones web descentralizadas) con eventos Nostr.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nip-nip-55-aplicación-firmante-de-android">Análisis Profundo de NIP: NIP-55 (Aplicación Firmante de Android)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/55.md">NIP-55&lt;/a> define cómo los clientes Nostr de Android solicitan operaciones criptográficas de aplicaciones firmantes dedicadas. Con &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered v1.0.6&lt;/a> ambos añadiendo soporte para Amber esta semana, el protocolo de firma Android merece examen.&lt;/p>
&lt;p>&lt;strong>Canales de Comunicación:&lt;/strong>&lt;/p>
&lt;p>NIP-55 habilita firma entre apps mediante dos mecanismos. Intents proporcionan aprobación manual del usuario con retroalimentación visual para operaciones de una sola vez. Content Resolvers habilitan firma automatizada cuando los usuarios otorgan permisos persistentes, permitiendo a las apps firmar en segundo plano sin solicitudes repetidas.&lt;/p>
&lt;p>La comunicación usa el esquema URI personalizado &lt;code>nostrsigner:&lt;/code>. Un cliente inicia contacto con:&lt;/p>
&lt;pre tabindex="0">&lt;code>nostrsigner:&amp;lt;base64-encoded-event&amp;gt;?type=sign_event&amp;amp;callbackUrl=myapp://callback
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Operaciones Soportadas:&lt;/strong>&lt;/p>
&lt;p>La especificación define siete métodos criptográficos: firma de eventos (&lt;code>sign_event&lt;/code>), recuperación de clave pública (&lt;code>get_public_key&lt;/code>), cifrado/descifrado &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a>, cifrado/descifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, y descifrado de evento zap (&lt;code>decrypt_zap_event&lt;/code>).&lt;/p>
&lt;p>&lt;strong>Modelo de Permisos:&lt;/strong>&lt;/p>
&lt;p>Los clientes llaman a &lt;code>get_public_key&lt;/code> una vez para establecer una relación de confianza, recibiendo el nombre de paquete del firmante y la pubkey del usuario. La especificación manda que los clientes guarden estos valores y nunca llamen a &lt;code>get_public_key&lt;/code> de nuevo, previniendo ataques de fingerprinting.&lt;/p>
&lt;p>Para solicitudes de firma, los usuarios pueden aprobar una vez u otorgar &amp;ldquo;recordar mi elección&amp;rdquo; para operaciones en segundo plano. Si los usuarios rechazan consistentemente operaciones, el firmante retorna un estado &amp;ldquo;rechazado&amp;rdquo;, previniendo solicitudes repetidas.&lt;/p>
&lt;p>&lt;strong>Implementaciones:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> es el firmante NIP-55 principal para Android. Los clientes que soportan NIP-55 incluyen &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise&lt;/a>, &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered&lt;/a>, y otros. Aplicaciones web no pueden recibir directamente respuestas del firmante y deben usar URLs de callback u operaciones de portapapeles.&lt;/p>
&lt;p>&lt;strong>Relación con Otros NIPs de Firma:&lt;/strong>&lt;/p>
&lt;p>NIP-55 complementa &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a> (extensiones de navegador) y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (firma remota sobre relays). Donde NIP-07 maneja navegadores de escritorio y NIP-46 maneja firma entre dispositivos, NIP-55 proporciona integración Android nativa con latencia mínima.&lt;/p>
&lt;h2 id="análisis-profundo-de-nip-nip-60-billetera-cashu">Análisis Profundo de NIP: NIP-60 (Billetera Cashu)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a> define cómo las billeteras ecash de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> almacenan estado en relays Nostr, habilitando sincronización de billetera entre aplicaciones. Con &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr v0.2.6&lt;/a> usando NIP-60 para sincronización de billetera entre dispositivos, el protocolo merece examen.&lt;/p>
&lt;p>&lt;strong>Kinds de Evento:&lt;/strong>&lt;/p>
&lt;p>NIP-60 usa cuatro tipos de evento. El kind reemplazable 17375 almacena configuración de billetera incluyendo URLs de mint y una clave privada dedicada para recibir pagos ecash P2PK. Eventos de token (kind 7375) contienen pruebas criptográficas no gastadas, mientras el historial de gastos (kind 7376) registra transacciones para transparencia del usuario. Un kind opcional 7374 rastrea cotizaciones de pago de mint.&lt;/p>
&lt;p>&lt;strong>Arquitectura de Billetera:&lt;/strong>&lt;/p>
&lt;p>El estado de la billetera vive en relays, haciéndolo accesible entre aplicaciones. El evento de billetera de un usuario contiene referencias cifradas a mints Cashu y una clave privada específica de billetera separada de la identidad Nostr del usuario. Esta separación importa: la clave de billetera maneja operaciones ecash mientras la clave Nostr maneja funciones sociales.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">17375&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;configuración-de-billetera-cifrada-nip44&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;cashu-wallet&amp;#34;&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Gestión de Pruebas:&lt;/strong>&lt;/p>
&lt;p>Pruebas Cashu son instrumentos al portador. Una vez gastada, una prueba se vuelve inválida. NIP-60 gestiona esto mediante un mecanismo de rollover: al gastar, los clientes crean un nuevo evento de token con pruebas no gastadas restantes y eliminan el original via &lt;a href="https://nostrcompass.org/es/topics/nip-09/">NIP-09&lt;/a>. IDs de token destruidos van en un campo &lt;code>del&lt;/code> para seguimiento de estado.&lt;/p>
&lt;p>Los clientes deberían validar periódicamente pruebas contra mints para detectar credenciales previamente gastadas. Se permiten múltiples eventos de token por mint, y los eventos de historial de gastos ayudan a los usuarios rastrear transacciones aunque son opcionales.&lt;/p>
&lt;p>&lt;strong>Modelo de Seguridad:&lt;/strong>&lt;/p>
&lt;p>Todos los datos sensibles usan cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>. La clave privada de billetera nunca aparece en texto plano. Como los relays almacenan blobs cifrados sin entender sus contenidos, el estado de la billetera permanece privado incluso en relays no confiables.&lt;/p>
&lt;p>&lt;strong>Implementaciones:&lt;/strong>&lt;/p>
&lt;p>Billeteras que soportan NIP-60 incluyen &lt;a href="https://github.com/gandlafbtc/nutsack">Nutsack&lt;/a> y &lt;a href="https://github.com/cashubtc/eNuts">eNuts&lt;/a>. Clientes como &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr&lt;/a> usan NIP-60 para sincronización entre dispositivos, permitiendo a los usuarios recargar en escritorio y gastar desde móvil sin transferencias manuales.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. Estás construyendo algo o tienes noticias que compartir. &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #10</title><link>https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Una capa de caché local para Blossom toma forma mientras proyectos independientes convergen en el acceso offline a medios para Android. Alby lanza un &lt;a href="https://sandbox.albylabs.com">sandbox para desarrolladores NWC&lt;/a> para construir y probar integraciones de Nostr Wallet Connect sin arriesgar fondos reales. Propuestas en competencia para la comunicación de agentes de IA en Nostr llegan en la misma semana de dos autores distintos. fiatjaf elimina campos no utilizados de &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, eliminando políticas de retención, códigos de país, política de privacidad y etiquetas de preferencia comunitaria que los operadores de relay nunca adoptaron. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> fusiona guía de descubrimiento de proveedores de servicios para Aserciones de Confianza. Una nueva etiqueta &lt;code>D&lt;/code> en &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> habilita indexación de marca temporal con granularidad de día en eventos de calendario. Los nuevos proyectos incluyen &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> para distribución descentralizada de teselas de mapa, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> para mensajería cifrada con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> para firma de umbral FROST en Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> para almacenamiento direccionado por contenido con integración Nostr, y &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> para compartir contenido en Nostr desde cualquier app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusiona 11 PRs de NWC añadiendo soporte de billetera dual y ciclo de vida automático del servicio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> lanza una &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">billetera Lightning integrada&lt;/a> mediante integración NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> se prepara para su lanzamiento en Android App Store, mientras HAVEN alcanza &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con soporte multi-npub y respaldo en la nube. Los análisis profundos de esta semana cubren el sistema de Aserciones de Confianza de NIP-85 para delegar cálculos de Web of Trust a proveedores de servicios, y el protocolo de Eventos de Calendario de NIP-52 tras su actualización de indexación con granularidad de día.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Una capa de caché local para Blossom toma forma mientras proyectos independientes convergen en el acceso offline a medios para Android. Alby lanza un &lt;a href="https://sandbox.albylabs.com">sandbox para desarrolladores NWC&lt;/a> para construir y probar integraciones de Nostr Wallet Connect sin arriesgar fondos reales. Propuestas en competencia para la comunicación de agentes de IA en Nostr llegan en la misma semana de dos autores distintos. fiatjaf elimina campos no utilizados de &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, eliminando políticas de retención, códigos de país, política de privacidad y etiquetas de preferencia comunitaria que los operadores de relay nunca adoptaron. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> fusiona guía de descubrimiento de proveedores de servicios para Aserciones de Confianza. Una nueva etiqueta &lt;code>D&lt;/code> en &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> habilita indexación de marca temporal con granularidad de día en eventos de calendario. Los nuevos proyectos incluyen &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> para distribución descentralizada de teselas de mapa, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> para mensajería cifrada con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> para firma de umbral FROST en Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> para almacenamiento direccionado por contenido con integración Nostr, y &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> para compartir contenido en Nostr desde cualquier app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusiona 11 PRs de NWC añadiendo soporte de billetera dual y ciclo de vida automático del servicio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> lanza una &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">billetera Lightning integrada&lt;/a> mediante integración NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> se prepara para su lanzamiento en Android App Store, mientras HAVEN alcanza &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con soporte multi-npub y respaldo en la nube. Los análisis profundos de esta semana cubren el sistema de Aserciones de Confianza de NIP-85 para delegar cálculos de Web of Trust a proveedores de servicios, y el protocolo de Eventos de Calendario de NIP-52 tras su actualización de indexación con granularidad de día.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="emerge-una-capa-de-caché-local-para-blossom">Emerge una Capa de Caché Local para Blossom&lt;/h3>
&lt;p>Múltiples proyectos independientes están convergiendo en el mismo problema: el acceso offline a medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> en dispositivos móviles.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>, una nueva app Android de greenart7c3 (el desarrollador detrás de &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> y &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>), implementa caché del lado del cliente para medios Blossom. Los usuarios pueden acceder a imágenes y archivos vistos anteriormente sin conexión de red.&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a> lanzó &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etiquetado de imágenes, operaciones masivas de espejado/etiquetado/eliminación, filtrado por etiqueta y tipo de archivo, más soporte inicial de caché local para Blossom. Aerith es una interfaz de gestión para usuarios que almacenan medios en múltiples servidores Blossom y necesitan organizar y espejar sus blobs.&lt;/p>
&lt;p>Una nueva &lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">guía de implementación de caché local&lt;/a> en la especificación de Blossom documenta el almacenamiento de blobs del lado del cliente, mientras que &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> (del mismo desarrollador que Aerith) añade integración de subida a Blossom a su flujo de compartir-a-Nostr en Android. Cuatro proyectos independientes convergieron en el mismo problema esta semana: una app de caché dedicada, un gestor de medios, una especificación de referencia y una herramienta de compartir con integración Blossom, todos implementando almacenamiento local persistente más allá del simple subir y recuperar.&lt;/p>
&lt;h3 id="sandbox-nwc-para-desarrolladores-de-alby">Sandbox NWC para Desarrolladores de Alby&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a> lanzó un entorno sandbox para desarrolladores que trabajan con &lt;a href="https://nostrcompass.org/es/topics/nip-47/">Nostr Wallet Connect (NIP-47)&lt;/a>. El sandbox proporciona un servicio de billetera NWC alojado donde los desarrolladores pueden crear conexiones de prueba y enviar pagos simulados sin conectarse a una billetera Lightning real, mientras observan el ciclo completo de solicitud/respuesta de eventos NWC en tiempo real. Los desarrolladores generan una cadena de conexión &lt;code>nostr+walletconnect://&lt;/code> desde el sandbox y la pasan a su cliente. El sandbox entonces muestra los eventos de solicitud kind 23194 y respuesta kind 23195 resultantes a medida que fluyen entre el cliente y el servicio de billetera.&lt;/p>
&lt;p>Esto reduce la barrera para nuevas integraciones NWC. Anteriormente, las pruebas requerían una billetera Lightning personal o un servicio NWC auto-alojado. El sandbox abstrae eso, dando a los desarrolladores un ciclo de retroalimentación inmediato para implementar los métodos &lt;code>pay_invoice&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code> y &lt;code>list_transactions&lt;/code> contra un endpoint NWC activo.&lt;/p>
&lt;h3 id="llegan-los-nips-para-agentes-de-ia">Llegan los NIPs para Agentes de IA&lt;/h3>
&lt;p>Las propuestas de comunicación para agentes de IA en Nostr aparecieron con pocos días de diferencia, abordando el problema desde ángulos distintos.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a> de joelklabo define un protocolo completo para la interacción de agentes de IA: kinds de evento para prompts, respuestas, deltas de streaming, actualizaciones de estado, telemetría de herramientas, errores, cancelaciones y descubrimiento de capacidades. Un evento de descubrimiento &lt;code>ai.info&lt;/code> (kind 31340, reemplazable) permite a los agentes anunciar sus modelos soportados, herramientas con esquemas, soporte de streaming y límites de tasa. La propuesta de joelklabo incluye correlación de ejecuciones mediante ID de prompt, gestión de sesión, reconciliación de streams con ordenamiento por secuencia, y orientación de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> para privacidad de metadatos.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a> de pablof7z adopta un enfoque diferente, definiendo kinds para la instanciación de agentes: definiciones y lecciones. Estos son los tipos de evento que pablof7z utiliza en &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, el sistema de aprendizaje autónomo construido sobre Nostr. Una propuesta complementaria, &lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>, también de pablof7z, define eventos para anunciar servidores &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> y habilidades en Nostr. Se soportan comentarios &lt;a href="https://nostrcompass.org/es/topics/nip-22/">NIP-22&lt;/a>, para que la comunidad pueda discutir y valorar servidores MCP directamente en Nostr.&lt;/p>
&lt;p>NIP-XX cubre la comunicación completa entre agentes mientras NIP-AE y NIP-AD abordan la identidad y el descubrimiento de herramientas. Estas propuestas podrían converger en un estándar unificado o coexistir como capas complementarias.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="haven-v120-rc3">HAVEN v1.2.0-rc3&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, el relay personal todo-en-uno que agrupa cuatro funciones de relay con un servidor de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>, alcanzó &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>. Este release candidate añade soporte para múltiples npubs, permitiendo que una sola instancia de HAVEN sirva a varias identidades Nostr. Los RC anteriores añadieron indicadores &lt;code>--from-cloud&lt;/code> y &lt;code>--to-cloud&lt;/code> para respaldo en la nube (RC2) y corrigieron un bug de doble conteo en Web of Trust (RC1).&lt;/p>
&lt;h3 id="mostro-mobile-v120-billetera-lightning-integrada">Mostro Mobile v1.2.0: Billetera Lightning Integrada&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, el cliente móvil para el exchange P2P de Bitcoin &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> (&lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#mostro-lanza-primera-beta-p%C3%BAblica">v1.1.0 cubierto la semana pasada&lt;/a>), lanzó &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a> con una billetera Lightning integrada mediante integración completa de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NWC (NIP-47)&lt;/a>. Compradores y vendedores ya no necesitan cambiar de app para gestionar facturas. La app detecta facturas hold para vendedores y las paga automáticamente a través de la billetera conectada, mientras los compradores obtienen generación automática de facturas. El lanzamiento sigue a &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a> de principios de semana, que añadió soporte multi-nodo de Mostro con un registro curado de instancias de confianza, obtención de metadatos kind 0 para visualización de nodos, gestión personalizada de nodos por pubkey, y fallback automático cuando el nodo seleccionado queda fuera de línea.&lt;/p>
&lt;p>En el lado del servidor, &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a> llegó con correcciones para pagos duplicados de comisiones de desarrollo, limitación de tasa en el endpoint RPC de validación de contraseña, y limpieza adecuada de disputas en cancelaciones cooperativas.&lt;/p>
&lt;p>Un nuevo proyecto complementario, &lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>, permite a agentes operar en Mostro a través de Nostr.&lt;/p>
&lt;h3 id="aerith-v02">Aerith v0.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>, el gestor de imágenes &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>, lanzó &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etiquetas de imagen para organizar medios, operaciones masivas de espejado/etiquetado/eliminación entre servidores, filtrado por etiqueta y tipo de archivo, más soporte inicial de caché local. Consulta la &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#emerge-una-capa-de-cach%c3%a9-local-para-blossom">sección de Noticias&lt;/a> para el contexto de la tendencia más amplia de caché local.&lt;/p>
&lt;h3 id="mapnolia-teselas-de-mapa-descentralizadas-sobre-nostr">Mapnolia: Teselas de Mapa Descentralizadas sobre Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> es un nuevo servidor de datos geoespaciales que divide archivos de mapas &lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a> en regiones geográficas y las anuncia en Nostr para su descubrimiento descentralizado. Publica eventos reemplazables parametrizados kind 34444 en relays Nostr que contienen un índice completo de fragmentos de teselas de mapa con metadatos de capa, regiones geohash, referencias de archivos y detalles del servidor &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;p>Los clientes descubren y recuperan datos de mapa a través de la red Nostr en lugar de servidores de teselas centralizados, con eventos de anuncio que contienen suficientes metadatos para solicitar solo las regiones geográficas necesarias desde los servidores Blossom listados. Mapnolia es el primer proyecto en llevar la distribución de datos geoespaciales a Nostr, abriendo posibilidades para aplicaciones de mapeo con capacidad offline.&lt;/p>
&lt;h3 id="pika-mensajería-cifrada-basada-en-marmot">Pika: Mensajería Cifrada Basada en Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> es una nueva app de mensajería cifrada de extremo a extremo para iOS y Android que usa el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a>, el cual superpone &lt;a href="https://nostrcompass.org/es/topics/mls/">Messaging Layer Security (MLS)&lt;/a> sobre relays Nostr. La arquitectura separa las responsabilidades en un núcleo Rust (&lt;code>pika_core&lt;/code>) que gestiona el estado MLS y el cifrado/descifrado de mensajes sobre relays Nostr, con capas nativas de UI en SwiftUI (iOS) y Kotlin (Android). El estado fluye de forma unidireccional: la UI despacha acciones al actor Rust, que muta el estado y emite instantáneas con números de revisión de vuelta a la UI via UniFFI y bindings JNI.&lt;/p>
&lt;p>Pika se une a un campo creciente de mensajeros MLS-sobre-Nostr junto a &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, &lt;a href="https://github.com/VectorPrivacy">Vector&lt;/a> y &lt;a href="https://0xchat.com">0xchat&lt;/a>. Todos usan relays Nostr como capa de transporte para el texto cifrado MLS, manteniendo a los operadores de relay sin posibilidad de leer el contenido de los mensajes. Pika usa el Marmot Development Kit (MDK) para su implementación MLS y nostr-sdk para la conectividad con relays.&lt;/p>
&lt;h3 id="keep-firma-de-umbral-frostestopicsfrost-para-android">Keep: Firma de Umbral &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> para Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> es una nueva aplicación Android para firma de umbral &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> donde ningún dispositivo individual posee la clave privada completa. Implementa &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (Android Signer) y &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (firma remota), para que los clientes Nostr compatibles puedan solicitar firmas mientras el material de clave permanece distribuido entre dispositivos. Las configuraciones predeterminadas son 2-de-3 y 3-de-5, aunque se soporta cualquier umbral t-de-n.&lt;/p>
&lt;p>La ceremonia de generación distribuida de claves (DKG) de Keep se ejecuta sobre relays Nostr usando kinds de evento personalizados: kind 21101 para anuncios de grupo, kind 21102 para polinomios de compromiso de la ronda 1 (difundidos públicamente), y kind 21103 para shares de secreto de la ronda 2 (cifrados punto a punto con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> entre participantes). El escalar de clave privada del grupo nunca se computa ni ensambla en ningún lugar durante el DKG. Cada dispositivo posee solo su evaluación del polinomio, y cualquier t shares pueden producir una firma Schnorr válida a través de un protocolo de dos rondas de comprometer-luego-firmar. La firma de 64 bytes resultante es indistinguible de una firma Schnorr de un solo firmante. Bajo el capó, Keep usa el crate &lt;code>frost-secp256k1-tr&lt;/code> de la Zcash Foundation con ajuste Taproot, de modo que la clave pública del grupo funciona directamente como un npub de Nostr.&lt;/p>
&lt;p>Keep se une a la familia de proyectos &lt;a href="https://frostr.org">Frostr&lt;/a> junto a &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>, &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo for Android&lt;/a>, &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a> e &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo for iOS&lt;/a>, ampliando las opciones de gestión de claves de umbral en Nostr.&lt;/p>
&lt;h3 id="prism-comparte-cualquier-cosa-en-nostr-desde-android">Prism: Comparte Cualquier Cosa en Nostr desde Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> es una nueva app Android (Kotlin/Jetpack Compose, API 26+) que se registra como destino de compartir del sistema, permitiendo a los usuarios publicar texto, URLs, imágenes y vídeo en Nostr desde cualquier app de su teléfono. Las URLs compartidas pasan por un eliminador de parámetros de seguimiento antes de componerse en notas. Prism obtiene metadatos OpenGraph para generar vistas previas enriquecidas de enlaces y renderiza referencias nativas de Nostr (&lt;code>note1&lt;/code>, &lt;code>nevent1&lt;/code>) de forma inline.&lt;/p>
&lt;p>El motor de programación usa un enfoque híbrido &lt;code>AlarmManager&lt;/code>/&lt;code>WorkManager&lt;/code> para evitar las optimizaciones de batería de Android: AlarmManager gestiona la temporización precisa de activación mientras que tareas expeditas de WorkManager aseguran la entrega, con reintento exponencial para escenarios offline. Las subidas de medios pasan por servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> configurables con generación de miniaturas para imágenes y fotogramas de vídeo. Toda la firma de eventos se delega a firmantes externos &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> como &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>, con soporte multi-cuenta para cambiar entre identidades. Prism también soporta publicaciones &lt;a href="https://nostrcompass.org/es/topics/nip-84/">NIP-84 (Highlights)&lt;/a>. Del mismo desarrollador que &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#aerith-v02">Aerith&lt;/a>.&lt;/p>
&lt;h3 id="hashtree-almacenamiento-direccionado-por-contenido-con-integración-nostr">Hashtree: Almacenamiento Direccionado por Contenido con Integración Nostr&lt;/h3>
&lt;p>&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> es un sistema de almacenamiento de blobs direccionado por contenido basado en el sistema de archivos que publica raíces Merkle en Nostr para crear direcciones mutables npub/ruta. El sistema usa &amp;ldquo;almacenamiento simple&amp;rdquo; que funciona con cualquier almacén clave-valor, dividiendo el contenido en bloques de 2MB optimizados para subidas a &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>. A diferencia de BitTorrent, no se necesita computación activa de pruebas Merkle, solo almacenar y recuperar blobs por hash.&lt;/p>
&lt;p>La integración con Nostr permite URLs de repositorios git como &lt;code>htree://npub.../repo-name&lt;/code> para clonar repositorios, con comandos como &lt;code>htree publish mydata &amp;lt;hash&amp;gt;&lt;/code> para publicar hashes de contenido en direcciones &lt;code>npub.../mydata&lt;/code>. El CLI integral soporta modos de almacenamiento cifrado (predeterminado) y público, anclaje de contenido, subida a servidores Blossom y gestión de identidades Nostr. Cada elemento almacenado es bytes crudos o un nodo de árbol, proporcionando una base para la distribución descentralizada de contenido a través de la red de relays de Nostr.&lt;/p>
&lt;h3 id="espy-captura-de-paleta-de-colores-en-shakespeare">Espy: Captura de Paleta de Colores en Shakespeare&lt;/h3>
&lt;p>&lt;a href="https://espy.you">Espy&lt;/a>, construido sobre la plataforma &lt;a href="https://soapbox.pub/tools/shakespeare/">Shakespeare&lt;/a>, permite a los usuarios capturar paletas de colores de fotos y compartirlas como eventos Nostr. Shakespeare es un constructor de apps impulsado por IA que autentica a los usuarios via extensiones de navegador NIP-07 y proporciona conectividad integrada a relays Nostr, para que los desarrolladores lancen apps sin implementar su propia gestión de claves o pool de relays. Espy extrae colores dominantes de la entrada de la cámara en tarjetas de paleta compartibles descubribles a través de feeds estándar de Nostr.&lt;/p>
&lt;h3 id="flotilla-164">Flotilla 1.6.4&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, el cliente Nostr estilo Discord de hodlbod que organiza relays como grupos, lanzó &lt;a href="https://gitea.coracle.social/coracle/flotilla/releases/tag/1.6.4">1.6.4&lt;/a>. La familia de proyectos Coracle ha migrado de GitHub a una &lt;a href="https://gitea.coracle.social/coracle">instancia Gitea&lt;/a> auto-alojada. Este lanzamiento añade notificaciones push via NIP-9a y un flujo de recepción de billetera, además de listados clasificados y soporte de URL de espacio. Las mejoras de interfaz incluyen modales y gestión de notificaciones mejorados. El silenciado de salas y los márgenes seguros en móvil completan los cambios, junto a correcciones para subidas de imágenes en Safari y detalles de eventos de calendario.&lt;/p>
&lt;h3 id="shosho-v0120">Shosho v0.12.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, la app de streaming en vivo para móvil con integración Nostr, lanzó &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.12.0">v0.12.0&lt;/a>. Este lanzamiento añade Clips de vídeo con respuestas integradas en el reproductor y emojis personalizados. La protección de hilos bloquea el spam de menciones indirectas, y una nueva función de compartir QR permite a los usuarios intercambiar perfiles offline. Un nuevo modo de reproducción horizontal da a los streams una experiencia de visualización estilo Twitch, y la pantalla de exploración ahora muestra clips de creadores junto a streams en vivo.&lt;/p>
&lt;h3 id="granary-v100">Granary v10.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/snarfed/granary">Granary&lt;/a>, una biblioteca de traducción de la web social que convierte datos entre Nostr, Bluesky, ActivityPub y otras plataformas a un formato común, lanzó &lt;a href="https://github.com/snarfed/granary/releases/tag/v10.0">v10.0&lt;/a> con cambios disruptivos. El lanzamiento cambia los IDs de ActivityStreams 1 predeterminados de Nostr de bech32 a hex y añade soporte ampliado de Nostr incluyendo análisis de menciones &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> y etiquetas de artículo. Una nueva opción de salida múltiple en los conversores permite a los desarrolladores traducir entre protocolos en lote.&lt;/p>
&lt;h3 id="nostr-mcp-server-v300">Nostr MCP Server v3.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">Nostr MCP Server&lt;/a>, un servidor &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> que permite a agentes de IA interactuar con la red Nostr, lanzó &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server/releases/tag/v3.0.0">v3.0.0&lt;/a>. Este lanzamiento mayor añade acciones sociales (follows, reacciones, reposts, respuestas) y gestión de lista de relays con soporte &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> más autenticación opcional &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>. La mensajería directa via &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> también es nueva. El lanzamiento se complementa con las &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#llegan-los-nips-para-agentes-de-ia">propuestas de NIP para agentes de IA&lt;/a> de esta semana como herramientas prácticas para agentes que operan en Nostr.&lt;/p>
&lt;h3 id="aegis-v038">Aegis v0.3.8&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, el firmante Nostr multiplataforma, lanzó &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.8">v0.3.8&lt;/a> con soporte multilingüe en la UI y un gestor de actualizaciones incrementales para su navegador de apps Nostr integrado. El nuevo mecanismo de actualización computa diferencias incrementales contra el estado local, manteniendo el directorio integrado de apps web de Nostr actualizado con menor uso de ancho de banda. El lanzamiento también introduce caché de material de clave de 5 minutos para reducir las consultas a la base de datos al firmar múltiples eventos consecutivos.&lt;/p>
&lt;h3 id="snstr-v031">SNSTR v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/AustinKelsay/snstr">SNSTR&lt;/a> (Secure Nostr Software Toolkit for Renegades), una biblioteca TypeScript para el protocolo Nostr, lanzó &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.1">v0.3.1&lt;/a>. El lanzamiento añade guardas de verificación de paquete que aseguran que todos los puntos de entrada estén incluidos en los tarballs de npm, con aplicación en CI en Node y Bun. &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.0">v0.3.0&lt;/a> se lanzó la misma semana.&lt;/p>
&lt;h3 id="citrine-v200-pre1">Citrine v2.0.0-pre1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, el relay Android de Nostr de greenart7c3, lanzó &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre1">v2.0.0-pre1&lt;/a> con mejoras de rendimiento a través de índices de base de datos optimizados y mejor gestión de corrutinas de Kotlin. El lanzamiento también mejora el soporte para alojar apps web, con cada app ejecutándose ahora en su propio puerto.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="primal-android-expansión-de-infraestructura-nwc">Primal Android: Expansión de Infraestructura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusionó 11 PRs relacionados con NWC esta semana, continuando la construcción &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/#primal-android-lanza-cifrado-nwc">iniciada hace dos semanas&lt;/a>. Este lote añade soporte de NWC para billetera dual, inicio/parada automática del servicio vinculada a notificaciones del backend, enrutamiento de conexión por tipo de billetera y limpieza adecuada de datos al eliminar una billetera. El servicio NWC ahora gestiona su propio ciclo de vida basado en el estado de la conexión de la billetera, reduciendo la intervención manual del usuario.&lt;/p>
&lt;h3 id="notedeck-preparación-para-android-app-store">Notedeck: Preparación para Android App Store&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente Nostr multiplataforma del equipo &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, fusionó la &lt;a href="https://github.com/damus-io/notedeck/pull/1287">preparación para el lanzamiento en Android App Store&lt;/a> esta semana. El PR añade un plan de cumplimiento de UGC (Contenido Generado por el Usuario) requerido por Google Play, incluyendo una pantalla de aceptación de Términos de Servicio, bloqueo de usuarios via menús contextuales y ajustes, funcionalidad &lt;a href="https://nostrcompass.org/es/topics/nip-56/">NIP-56 (Reporting)&lt;/a> que publica eventos de reporte en relays, y una sección de ajustes de Contenido y Seguridad. Se añadió infraestructura de build para generar APKs firmados y AABs (Android App Bundles) para lanzamiento via nuevos objetivos de Makefile. Un documento EULA establece un requisito de edad de 17+ y avisos específicos de Nostr sobre contenido descentralizado. Las características de cumplimiento en sí se lanzan en PRs de seguimiento; esta fusión sienta las bases de documentación y firma.&lt;/p>
&lt;p>En el lado iOS de Damus, se corrigió un &lt;a href="https://github.com/damus-io/damus/pull/3593">spinner de carga infinita&lt;/a> donde el spinner persistía indefinidamente después de que el contenido ya había cargado.&lt;/p>
&lt;h3 id="nostria-relays-de-descubrimiento-y-correcciones-de-dm">Nostria: Relays de Descubrimiento y Correcciones de DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente Nostr multiplataforma enfocado en escala global, fusionó 9 PRs esta semana. El más destacado añade &lt;a href="https://github.com/nostria-app/nostria/pull/460">auto-inicialización de Relays de Descubrimiento&lt;/a> para búsqueda de perfiles, dando a los nuevos usuarios conectividad de relay funcional sin configuración manual. Otras correcciones abordan el &lt;a href="https://github.com/nostria-app/nostria/pull/466">ajuste de texto en DMs&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/479">relleno de viewport en vídeo a pantalla completa&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/481">extracción de metadatos de artículo en vistas previas de repost&lt;/a> y &lt;a href="https://github.com/nostria-app/nostria/pull/458">resolución de URI nostr: en notificaciones&lt;/a>.&lt;/p>
&lt;h3 id="camelus-migración-a-riverpod-v3">Camelus: Migración a Riverpod v3&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, el cliente Nostr basado en Flutter, fusionó 5 PRs esta semana centrados en una &lt;a href="https://github.com/camelus-hq/camelus/pull/158">migración de API a Riverpod v3&lt;/a> y &lt;a href="https://github.com/camelus-hq/camelus/pull/159">refactorización de feed genérico&lt;/a>. Un &lt;a href="https://github.com/camelus-hq/camelus/pull/161">caché de notas embebidas&lt;/a> evita solicitudes redundantes a relays para notas citadas.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85: Descubrimiento de Proveedores de Servicio&lt;/a>&lt;/strong>: vitorpamplona añadió orientación sobre el descubrimiento por parte del cliente de proveedores de servicios de &lt;a href="https://nostrcompass.org/es/topics/trusted-relay-assertions/">NIP-85 Trusted Assertions&lt;/a>, incluyendo sugerencias de relay y claves de servicio específicas por algoritmo. Consulta el &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#an%c3%a1lisis-profundo-de-nip-nip-85-aserciones-de-confianza">análisis profundo a continuación&lt;/a> para cobertura completa.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11: Limpieza de Información de Relay&lt;/a>&lt;/strong>: fiatjaf eliminó &lt;code>privacy_policy&lt;/code>, el array &lt;code>retention&lt;/code>, &lt;code>relay_countries&lt;/code> y el bloque de preferencias de comunidad de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>. Los operadores de relay rara vez poblaban estos campos y los clientes no actuaban sobre ellos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52: Etiqueta de Marca Temporal con Granularidad de Día&lt;/a>&lt;/strong>: staab añadió una etiqueta &lt;code>D&lt;/code> requerida a los eventos de calendario basados en tiempo de &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> (kind 31923) que representa la marca temporal Unix con granularidad de día, calculada como &lt;code>floor(unix_seconds / 86400)&lt;/code>. Múltiples etiquetas &lt;code>D&lt;/code> cubren eventos de varios días, permitiendo una indexación temporal eficiente sin analizar marcas temporales completas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47: Simplificación&lt;/a>&lt;/strong>: El PR de simplificación &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/">discutido en el Boletín #9&lt;/a> se fusionó esta semana, eliminando &lt;code>multi_pay_invoice&lt;/code> y &lt;code>multi_pay_keysend&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Consulta el &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/#an%C3%A1lisis-profundo-de-nip-nip-47-nostr-wallet-connect">Boletín #8&lt;/a> para el análisis profundo completo del protocolo NWC.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74: Podcasts&lt;/a>&lt;/strong>: Cubierto en el &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/">Boletín #8&lt;/a>, esta propuesta de especificación de podcasts generó acalorada discusión esta semana. staab señaló que ya existen al menos tres estándares de podcast en competencia, y derekross apuntó a una implementación existente de seis meses con apps y podcasts activos. El camino a seguir requiere convergencia entre implementaciones antes de que se pueda asignar un número de NIP.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>&lt;/strong>: joelklabo propone un protocolo completo de comunicación para agentes de IA con kinds de evento para prompts, respuestas, streaming, telemetría de herramientas, errores y descubrimiento de capacidades. Consulta la &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-18-newsletter/#llegan-los-nips-para-agentes-de-ia">sección de Noticias&lt;/a> para cobertura de todas las propuestas de IA de esta semana.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1893">NIP-PNS: Private Note Storage&lt;/a>&lt;/strong>: El sistema de notas privadas de jb55 define eventos kind 1080 para almacenar notas personales cifradas en relays sin revelar quién las escribió. El esquema deriva un par de claves seudónimo determinista desde el nsec del usuario via HKDF: &lt;code>pns_key = hkdf_extract(ikm=device_key, salt=&amp;quot;nip-pns&amp;quot;)&lt;/code>, luego genera un par de claves secp256k1 a partir de esa clave derivada. Una segunda derivación produce una clave de cifrado simétrica: &lt;code>pns_nip44_key = hkdf_extract(ikm=pns_key, salt=&amp;quot;nip44-v2&amp;quot;)&lt;/code>. Las notas internas se cifran con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> v2 usando esta clave y se publican bajo la pubkey seudónima, de modo que los relays ven eventos kind 1080 de una identidad no vinculada a la clave principal del usuario. A diferencia de los gift wraps de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>, PNS no es vulnerable a spam (la clave seudónima es determinista, no aleatoria) y no lleva metadatos públicos (no se necesitan etiquetas &lt;code>p&lt;/code> ya que no hay destinatario). Esta semana, jb55 publicó hallazgos de la implementación de PNS en el backend Rust de Notedeck (módulo &lt;code>enostr::pns&lt;/code>). Identificó que la llamada &lt;code>hkdf_extract&lt;/code> de la spec es ambigua porque HKDF del RFC 5869 tiene dos fases (Extract y Expand) que producen salidas diferentes, y la mayoría de las bibliotecas esperan ambas. Aclaró que &lt;code>pns_nip44_key&lt;/code> omite el acuerdo de clave ECDH normal de NIP-44 y se usa directamente como clave de conversación, un detalle que los implementadores necesitan saber ya que la mayoría de las bibliotecas NIP-44 usan ECDH por defecto. También señaló una variable indefinida en la implementación de referencia de TypeScript. El PR, originalmente de abril de 2025, está siendo implementado activamente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>&lt;/strong>: pablof7z define cuatro kinds de evento para la identidad de agentes en Nostr, extraídos de su trabajo en &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>. La plantilla base es kind 4199 (Agent Definition), que lleva título, descripción de rol, instrucciones del sistema, declaraciones de herramientas y versión. Los modificadores de comportamiento viven en kind 4201 (Agent Nudge), que usa etiquetas &lt;code>only-tool&lt;/code>, &lt;code>allow-tool&lt;/code> y &lt;code>deny-tool&lt;/code> para el control de capacidades en tiempo de ejecución. Los agentes publican lo que aprenden como eventos kind 4129 (Agent Lesson), categorizados y vinculados de vuelta a la definición padre via etiquetas &lt;code>e&lt;/code>, refinables a través de hilos de comentarios &lt;a href="https://nostrcompass.org/es/topics/nip-22/">NIP-22&lt;/a>. La verificación de propiedad usa kind 14199, un evento reemplazable donde los operadores humanos listan las pubkeys de sus agentes, estableciendo una cadena bidireccional cuando se compara con la etiqueta &lt;code>p&lt;/code> del perfil kind 0 del agente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>&lt;/strong>: pablof7z define eventos para anunciar servidores &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> y habilidades individuales en Nostr. Los anuncios de servidores MCP llevan la URL del endpoint del servidor y la versión de protocolo soportada junto a una lista de herramientas disponibles con sus esquemas de entrada. Se soportan comentarios &lt;a href="https://nostrcompass.org/es/topics/nip-22/">NIP-22&lt;/a> en los anuncios de servidor, para que la comunidad pueda discutir y valorar servidores MCP directamente en Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2224">NIP-73: OSM Tag Kind&lt;/a>&lt;/strong>: DestBro propone añadir identificadores de OpenStreetMap a &lt;a href="https://nostrcompass.org/es/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, que estandariza cómo los eventos Nostr hacen referencia a contenido externo como libros (ISBN), películas (ISAN), feeds de podcasts (GUID), geohashes y URLs via etiquetas &lt;code>i&lt;/code> y &lt;code>k&lt;/code>. El kind de OSM propuesto permitiría que los eventos referencien características específicas del mapa (edificios, carreteras, parques) por su ID de nodo u objeto de OpenStreetMap, conectando el contenido de Nostr con la base de datos geográfica abierta.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2219">NIP-XX: Responsive Image Variants&lt;/a>&lt;/strong>: woikos propone extender los eventos de metadatos de archivo &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> con etiquetas para variantes de imagen responsiva a diferentes resoluciones. Los clientes podrían seleccionar la variante apropiada según el tamaño de pantalla y las condiciones de red, reduciendo el ancho de banda para usuarios móviles que ven imágenes de alta resolución alojadas en servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nip-nip-85-aserciones-de-confianza">Análisis Profundo de NIP: NIP-85 (Aserciones de Confianza)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> define un sistema para delegar cálculos costosos a proveedores de servicios de confianza que publican resultados firmados como eventos Nostr. Las puntuaciones de Web of Trust y las métricas de engagement requieren rastrear muchos relays y procesar grandes volúmenes de eventos, un trabajo que es impracticable en dispositivos móviles. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">fusión de esta semana&lt;/a> añadió orientación sobre el proceso de descubrimiento de estos proveedores por parte del cliente.&lt;/p>
&lt;p>&lt;strong>Delegación:&lt;/strong>&lt;/p>
&lt;p>Calcular la puntuación de Web of Trust de un usuario requiere rastrear grafos de seguimiento con múltiples saltos a través de muchos relays, y computar conteos precisos de seguidores implica deduplicar en toda la red de relays. Los dispositivos móviles y los clientes de navegador no pueden realizar estas operaciones, sin embargo los resultados son esenciales para el filtrado de spam y la clasificación de contenido. NIP-85 cierra esta brecha permitiendo a los usuarios designar proveedores de confianza para ejecutar los cálculos y publicar resultados como eventos estándar de Nostr.&lt;/p>
&lt;p>&lt;strong>Diseño del Protocolo:&lt;/strong>&lt;/p>
&lt;p>NIP-85 usa cuatro kinds de evento para aserciones sobre diferentes tipos de sujetos. Las aserciones de usuario (kind 30382) llevan conteo de seguidores, conteos de publicaciones/respuestas/reacciones, montos de zap, rango normalizado (0-100), temas comunes y horas activas:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30382&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;followers&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4521&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;first_created_at&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1609459200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;post_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1283&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reply_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;647&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reactions_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8920&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;850000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;320000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;412&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;198&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1150&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;430&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;22&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Las aserciones de evento (kind 30383) califican notas individuales con conteo de comentarios, conteo de citas, reposts, reacciones y datos de zap:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30383&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;target event id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;72&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;45&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;quote_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;repost_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;310&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;23&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;125000&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Para eventos direccionables (artículos de formato largo, páginas wiki), el kind 30384 aplica las mismas métricas de engagement a todas las versiones colectivamente. El kind 30385 califica identificadores externos (libros, películas, sitios web, ubicaciones, hashtags) referenciados a través de &lt;a href="https://nostrcompass.org/es/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, que estandariza cómo los eventos Nostr hacen referencia a contenido externo via etiquetas &lt;code>i&lt;/code> y &lt;code>k&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30385&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn:9780765382030&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;94&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;67&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;203&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cada aserción es un evento direccionable reemplazable donde la etiqueta &lt;code>d&lt;/code> contiene el sujeto: una pubkey, ID de evento, dirección de evento o identificador NIP-73. Los proveedores de servicios firman estos eventos con sus propias claves, y los clientes los evalúan basándose en relaciones de confianza.&lt;/p>
&lt;p>&lt;strong>Descubrimiento de Proveedores:&lt;/strong>&lt;/p>
&lt;p>Los usuarios declaran qué proveedores de aserciones confían publicando eventos kind 10040. Cada entrada especifica el tipo de aserción con la pubkey del proveedor y una sugerencia de relay, más variantes de algoritmo opcionales:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10040&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;3d842afe...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nostr.wine&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30383:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Los usuarios pueden cifrar la lista de etiquetas en &lt;code>.content&lt;/code> usando &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> para mantener privadas sus preferencias de proveedor. Los clientes construyen una lista de proveedores verificando qué proveedores confían las cuentas a las que siguen, creando una capa de reputación descentralizada para los propios proveedores de aserciones.&lt;/p>
&lt;p>&lt;strong>Modelo de Seguridad:&lt;/strong>&lt;/p>
&lt;p>Los proveedores deben usar claves de servicio diferentes para algoritmos distintos, y una clave única por usuario cuando los algoritmos son personalizados, evitando la correlación cruzada de consultas entre usuarios. Cada clave de servicio recibe un evento de metadatos kind 0 que describe el comportamiento del algoritmo, dando a los usuarios transparencia sobre en qué están confiando. Los eventos de aserción solo deben actualizarse cuando los datos subyacentes cambian realmente, evitando tráfico innecesario en los relays y permitiendo a los clientes cachear resultados con confianza.&lt;/p>
&lt;p>&lt;strong>Adopción Actual:&lt;/strong>&lt;/p>
&lt;p>NIP-85 formaliza un patrón que ya estaba emergiendo de forma informal. El servidor de caché de Primal calcula métricas de engagement y puntuaciones de Web of Trust. &lt;a href="https://gitlab.com/soapbox-pub/antiprimal">Antiprimal&lt;/a>, cubierto en el &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#antiprimal-gateway-compatible-con-est%C3%A1ndares-al-cache-de-primal">Boletín #9&lt;/a>, conecta estos cálculos a clientes Nostr estándar usando kinds de evento NIP-85. &lt;a href="https://nostr.band">Nostr.band&lt;/a> opera el relay &lt;code>wss://nip85.nostr.band&lt;/code> referenciado en los propios ejemplos de la spec, sirviendo eventos de aserción para los datos de su índice de búsqueda. En el lado del cliente, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> (desarrollado por vitorpamplona, quien también escribió este NIP) tiene soporte experimental de Aserciones de Confianza en su biblioteca &lt;code>quartz&lt;/code>, analizando eventos de aserción y declaraciones de proveedores de servicio. &lt;a href="https://vertexlab.io">Vertex&lt;/a> calcula métricas similares de Web of Trust pero &lt;a href="https://vertexlab.io/blog/dvms_vs_nip_85/">eligió un enfoque diferente&lt;/a>, usando una API directa en lugar de eventos NIP-85, citando el problema de descubrimiento y la sobrecarga computacional de las arquitecturas basadas en aserciones. Con NIP-85, cualquier cliente puede consumir aserciones de cualquier proveedor a través de un formato de evento estándar, y los proveedores compiten en precisión mientras los usuarios eligen a quién confiar.&lt;/p>
&lt;h2 id="análisis-profundo-de-nip-nip-52-eventos-de-calendario">Análisis Profundo de NIP: NIP-52 (Eventos de Calendario)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/52.md">NIP-52&lt;/a> define eventos de calendario en Nostr, dando a los clientes una forma estándar de representar y descubrir ocurrencias en momentos específicos o entre momentos. La &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">fusión de la etiqueta D&lt;/a> de esta semana añadió indexación con granularidad de día, completando una pieza que faltaba en la infraestructura de consultas de la spec.&lt;/p>
&lt;p>&lt;strong>Dos Tipos de Evento:&lt;/strong>&lt;/p>
&lt;p>NIP-52 separa los eventos de calendario en dos kinds basados en la precisión temporal. Los eventos basados en fecha (kind 31922) representan ocurrencias de todo el día como festivos o festivales de varios días. Usan cadenas de fecha ISO 8601 en sus etiquetas &lt;code>start&lt;/code> y &lt;code>end&lt;/code> opcionales, sin consideración de zona horaria:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1735689600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31922&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Annual celebration of Bitcoin&amp;#39;s genesis block&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin-independence-day-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Independence Day&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-03&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-04&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Worldwide&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;u4pruydqqv&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoinindependenceday.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Los eventos basados en tiempo (kind 31923) representan momentos específicos con marcas temporales Unix en sus etiquetas &lt;code>start&lt;/code> y &lt;code>end&lt;/code> opcionales, más identificadores de zona horaria IANA (&lt;code>start_tzid&lt;/code>, &lt;code>end_tzid&lt;/code>) para visualización. Ambos kinds son eventos reemplazables parametrizados, por lo que los organizadores actualizan los detalles publicando un nuevo evento con la misma etiqueta &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Calendarios y RSVPs:&lt;/strong>&lt;/p>
&lt;p>Los eventos kind 31924 definen calendarios como colecciones, referenciando eventos via etiquetas &lt;code>a&lt;/code> que apuntan a eventos kind 31922 o 31923 por sus coordenadas de dirección:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31924&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr community events worldwide&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-community-calendar&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Community Events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31922:&amp;lt;organizer-pubkey&amp;gt;:bitcoin-independence-day-2026&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Los usuarios pueden mantener múltiples calendarios (personal, trabajo, comunidad) y los clientes pueden suscribirse a calendarios de pubkeys específicas. Los eventos de calendario pueden incluir una etiqueta &lt;code>a&lt;/code> que referencia un calendario para solicitar inclusión, habilitando la gestión colaborativa de calendarios donde múltiples usuarios contribuyen eventos a calendarios que no poseen.&lt;/p>
&lt;p>Los RSVPs usan kind 31925, donde los usuarios publican su estado de asistencia junto a un indicador opcional de libre/ocupado:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31925&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Looking forward to it&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;kind 31923 event id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unique-rsvp-id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;status&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;accepted&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;busy&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Los valores válidos de &lt;code>status&lt;/code> son &amp;ldquo;accepted&amp;rdquo;, &amp;ldquo;declined&amp;rdquo;, &amp;ldquo;tentative&amp;rdquo;, y la etiqueta opcional &lt;code>fb&lt;/code> marca al usuario como libre u ocupado para ese período. Los eventos RSVP referencian la etiqueta &lt;code>a&lt;/code> del evento de calendario y llevan la etiqueta &lt;code>p&lt;/code> del organizador, para que el cliente del organizador pueda agregar respuestas de múltiples relays.&lt;/p>
&lt;p>&lt;strong>La Adición de la Etiqueta D:&lt;/strong>&lt;/p>
&lt;p>Antes de la fusión de esta semana, los clientes que consultaban eventos en un rango de fechas tenían que obtener todos los eventos de una pubkey o calendario y filtrar en el lado del cliente. La nueva etiqueta &lt;code>D&lt;/code> requerida en los eventos basados en tiempo (kind 31923) contiene una marca temporal Unix con granularidad de día calculada como &lt;code>floor(unix_seconds / 86400)&lt;/code>. Los eventos de varios días llevan múltiples etiquetas &lt;code>D&lt;/code>, una por día. Los relays ahora pueden indexar eventos por día y responder a consultas filtradas de forma eficiente, convirtiendo lo que era un problema de filtrado en el cliente en una búsqueda de índice en el relay.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31923&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Monthly meetup for Nostr developers in Austin&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-meetup-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Developer Meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Talks and demos from local Nostr builders&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://example.com/meetup-banner.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740067200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740078000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;D&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;20139&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Commons, Austin TX&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9v6knb2pg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;speaker-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;speaker&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoincommons.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El valor &lt;code>D&lt;/code> de &lt;code>20139&lt;/code> es igual a &lt;code>floor(1740067200 / 86400)&lt;/code>, situando este evento el 20 de febrero de 2025. Los clientes que consultan por &amp;ldquo;todos los eventos de esta semana&amp;rdquo; envían un filtro con el rango &lt;code>D&lt;/code> correspondiente, y los relays devuelven solo los eventos coincidentes.&lt;/p>
&lt;p>&lt;strong>Decisiones de Diseño:&lt;/strong>&lt;/p>
&lt;p>NIP-52 omite intencionalmente los eventos recurrentes. La spec deja las reglas de recurrencia (RRULE de iCalendar) completamente fuera, delegando esa complejidad a los clientes. Un organizador publica eventos individuales para cada ocurrencia, manteniendo el modelo de datos en el relay simple. Las etiquetas de participante llevan roles opcionales (&amp;ldquo;host&amp;rdquo;, &amp;ldquo;speaker&amp;rdquo;, &amp;ldquo;attendee&amp;rdquo;), y las etiquetas de ubicación pueden incluir etiquetas geohash &lt;code>g&lt;/code> para consultas espaciales junto a direcciones legibles por humanos.&lt;/p>
&lt;p>&lt;strong>Implementaciones:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/zmeyer44/flockstr">Flockstr&lt;/a> es el cliente de calendario principal construido sobre NIP-52. &lt;a href="https://gitea.coracle.social/coracle/coracle">Coracle&lt;/a> muestra eventos de calendario en su feed social. La adición de la etiqueta &lt;code>D&lt;/code> de esta semana habilita la indexación temporal en el relay que ambos clientes pueden usar para reducir el ancho de banda al consultar eventos en un rango de fechas específico.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo o tienes noticias que compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #9</title><link>https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Mostro lanza su primera beta pública tras tres años de desarrollo, llevando el intercambio P2P de Bitcoin a móviles vía Nostr. OpenSats otorga su decimosexta ronda de grants de Bitcoin, con Minibits Wallet recibiendo renovación para su billetera Cashu integrada con Nostr. &lt;strong>Zapstore alcanza su versión estable 1.0&lt;/strong>, marcando la maduración de la tienda de aplicaciones Android descentralizada. Coracle 0.6.29 añade temas y comentarios en highlights. Igloo Desktop v1.0.3 incorpora endurecimiento de seguridad para firma de umbral Frostr. Amber v4.1.2-pre1 migra a arquitectura Flow. Angor alcanza v0.2.5 con interfaz de financiación renovada y configuración de servidor de imágenes NIP-96. NostrPress se lanza como herramienta que convierte perfiles Nostr en blogs estáticos. Antiprimal publica un gateway compatible con estándares que conecta el servidor cache propietario de Primal con NIPs estándar de Nostr. Primal Android fusiona 18 PRs expandiendo la infraestructura NWC con soporte de doble billetera, registro de auditoría y el método &lt;code>lookup_invoice&lt;/code>. diVine lanza feeds de video API-first. El SDK TypeScript de Marmot separa su app de chat de referencia en un repositorio independiente y comienza la migración a ts-mls v2. El repositorio de NIPs fusiona conteo aproximado HyperLogLog para NIP-45 y extrae etiquetas de identidad del kind 0. Varias propuestas de vitorpamplona inician una reducción sistemática de eventos de metadatos kind 0. Nuevas propuestas de protocolo incluyen Nostr Relay Connect para traversal de NAT y Nostr Web Tokens para claims web firmados. El análisis profundo de esta semana cubre el nuevo conteo aproximado HyperLogLog de NIP-45 para métricas de eventos entre relays y el protocolo de almacenamiento de archivos HTTP de NIP-96, ahora obsoleto en favor de Blossom, mientras proyectos transitan entre ambos estándares de medios.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Mostro lanza su primera beta pública tras tres años de desarrollo, llevando el intercambio P2P de Bitcoin a móviles vía Nostr. OpenSats otorga su decimosexta ronda de grants de Bitcoin, con Minibits Wallet recibiendo renovación para su billetera Cashu integrada con Nostr. &lt;strong>Zapstore alcanza su versión estable 1.0&lt;/strong>, marcando la maduración de la tienda de aplicaciones Android descentralizada. Coracle 0.6.29 añade temas y comentarios en highlights. Igloo Desktop v1.0.3 incorpora endurecimiento de seguridad para firma de umbral Frostr. Amber v4.1.2-pre1 migra a arquitectura Flow. Angor alcanza v0.2.5 con interfaz de financiación renovada y configuración de servidor de imágenes NIP-96. NostrPress se lanza como herramienta que convierte perfiles Nostr en blogs estáticos. Antiprimal publica un gateway compatible con estándares que conecta el servidor cache propietario de Primal con NIPs estándar de Nostr. Primal Android fusiona 18 PRs expandiendo la infraestructura NWC con soporte de doble billetera, registro de auditoría y el método &lt;code>lookup_invoice&lt;/code>. diVine lanza feeds de video API-first. El SDK TypeScript de Marmot separa su app de chat de referencia en un repositorio independiente y comienza la migración a ts-mls v2. El repositorio de NIPs fusiona conteo aproximado HyperLogLog para NIP-45 y extrae etiquetas de identidad del kind 0. Varias propuestas de vitorpamplona inician una reducción sistemática de eventos de metadatos kind 0. Nuevas propuestas de protocolo incluyen Nostr Relay Connect para traversal de NAT y Nostr Web Tokens para claims web firmados. El análisis profundo de esta semana cubre el nuevo conteo aproximado HyperLogLog de NIP-45 para métricas de eventos entre relays y el protocolo de almacenamiento de archivos HTTP de NIP-96, ahora obsoleto en favor de Blossom, mientras proyectos transitan entre ambos estándares de medios.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="mostro-lanza-primera-beta-pública">Mostro Lanza Primera Beta Pública&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, el exchange peer-to-peer de Bitcoin construido sobre Nostr, lanzó su &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">app móvil v1.1.0&lt;/a>, la primera beta pública del proyecto tras tres años de desarrollo. La app permite intercambiar Bitcoin directamente usando Nostr para la coordinación de órdenes, con Lightning para la liquidación y ningún intermediario custodio.&lt;/p>
&lt;p>El lanzamiento introduce notificaciones push con mejor fiabilidad en segundo plano en Android, un sistema de logging opcional que permite capturar y compartir datos de diagnóstico cuando surgen problemas, actualizaciones de relay más fluidas usando inicialización aditiva, y refinamientos de interfaz de Fase 2 con soporte de internacionalización. La app está disponible en &lt;a href="https://zapstore.dev">Zapstore&lt;/a> y como &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">descarga directa de GitHub&lt;/a>.&lt;/p>
&lt;p>Mostro se une a Shopstr y Plebeian Market como aplicación de comercio nativa de Nostr, con la distinción de que se enfoca en la coordinación del intercambio fiat-a-Bitcoin. El &lt;a href="https://github.com/MostroP2P/mostro">daemon de Mostro&lt;/a> subyacente maneja el emparejamiento de órdenes y la resolución de disputas a través de relays Nostr.&lt;/p>
&lt;h3 id="decimosexta-ronda-de-grants-de-bitcoin-de-opensats">Decimosexta Ronda de Grants de Bitcoin de OpenSats&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a> anunció grants para 17 proyectos de código abierto. Lo destacado para Nostr: &lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>, la billetera Android de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> con soporte de eventos de billetera &lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a> e integración de nutzap, recibió renovación de grant. Minibits usa eventos Nostr para almacenar el estado de tokens ecash, haciendo respaldos de billetera portables entre dispositivos a través de sincronización por relay.&lt;/p>
&lt;h3 id="nostrpress-de-perfil-nostr-a-blog-estático">NostrPress: De Perfil Nostr a Blog Estático&lt;/h3>
&lt;p>&lt;a href="https://github.com/besoeasy/NostrPress">NostrPress&lt;/a> (&lt;a href="https://blog.besoeasy.com">blog.besoeasy.com&lt;/a>) es una herramienta nueva que convierte un perfil Nostr en un blog completamente estático desplegable en cualquier lugar. Tras publicar artículos en Nostr a través de cualquier cliente, NostrPress genera un sitio web independiente a partir de esos eventos, con alojamiento local de medios y feeds RSS.&lt;/p>
&lt;p>Construido con Nunjucks templating y JavaScript, NostrPress produce sitios con cero dependencia de plataforma. La salida generada es HTML/CSS plano que puede alojarse en cualquier servidor de archivos estáticos, GitHub Pages, Netlify o un VPS personal. La herramienta se une a &lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a> y &lt;a href="https://github.com/servus-social/servus">Servus&lt;/a> como opciones para convertir contenido Nostr en sitios web tradicionales.&lt;/p>
&lt;h3 id="antiprimal-gateway-compatible-con-estándares-al-cache-de-primal">Antiprimal: Gateway Compatible con Estándares al Cache de Primal&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/antiprimal">antiprimal&lt;/a> (&lt;a href="https://antiprimal.net">antiprimal.net&lt;/a>), un nuevo proyecto de Alex Gleason y el equipo Soapbox, es un gateway WebSocket que conecta el servidor cache propietario de Primal con mensajes del protocolo estándar de Nostr. Primal ofrece funciones como estadísticas de eventos, búsqueda de contenido y cálculos de Web of Trust a través de &lt;code>wss://cache.primal.net/v1&lt;/code>, pero el acceso requiere un formato de mensaje propietario con un campo &lt;code>cache&lt;/code> no estándar que clientes Nostr normales no pueden usar. Antiprimal traduce solicitudes NIP estándar al formato de Primal y convierte las respuestas de vuelta.&lt;/p>
&lt;p>El gateway soporta consultas COUNT de &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a> (reacciones, respuestas, reposts, conteos de zap, conteos de seguidores), búsqueda &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>, información de relay &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>, y &lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> Trusted Assertions para datos precalculados de Web of Trust de Primal. Un bot acompañante publica eventos NIP-85 kind 30382 (estadísticas de usuario) y kind 30383 (engagement de evento) a relays configurables. El proyecto está construido con TypeScript sobre Bun y usa la biblioteca Nostrify. Creado el 6 de febrero, acumula 53 commits en sus primeros tres días de desarrollo y está en línea en antiprimal.net.&lt;/p>
&lt;h3 id="ikaros-gateway-de-mensajería-de-agentes-de-ia-para-signal-y-nostr">Ikaros: Gateway de Mensajería de Agentes de IA para Signal y Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>, un nuevo proyecto del equipo Soapbox, es un gateway de mensajería que permite a agentes de IA comunicarse a través de DMs cifrados tanto de Signal como de Nostr. El puente usa el &lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a> (ACP) para conectar cualquier asistente de IA compatible con ACP a redes de mensajería reales. Tres pull requests constituyen la construcción inicial del proyecto esta semana.&lt;/p>
&lt;p>El primer PR (&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">#1&lt;/a>) implementa un adaptador completo de DM cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> con soporte de envío/recepción, buffering de respuestas con flush explícito al completar, formatos de clave privada &lt;code>nsec&lt;/code> y hex, publicación multi-relay con reconexión automática, y un asistente de configuración interactivo. El adaptador usa nostr-tools v2.23.0 y actualiza el ACP SDK a v0.14.1.&lt;/p>
&lt;p>El segundo PR (&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">#2&lt;/a>) corrige una pérdida silenciosa de mensajes causada por condición de carrera en la actualización de sesión. Notificaciones entrantes que llegaban antes de que la sesión estuviera registrada en el mapa se perdían, y la corrección almacena esas notificaciones en buffer para reproducirlas cuando el registro se completa. El tercer PR (&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">#3&lt;/a>) añade metadatos de nombre de usuario y grupo/UUID de Signal a interacciones con el agente, para que el agente de IA sepa con quién habla y en qué grupo. El proyecto abre un nuevo espacio de diseño donde agentes de IA direccionables vía DMs de Nostr pueden ser contactados desde Signal, o viceversa.&lt;/p>
&lt;h3 id="campaña-de-reducción-del-kind-0">Campaña de Reducción del Kind 0&lt;/h3>
&lt;p>vitorpamplona abrió una serie de PRs esta semana proponiendo la extracción sistemática de datos de eventos kind 0 (metadatos de usuario) hacia kinds de evento dedicados. La campaña aborda un problema creciente, ya que eventos kind 0 han acumulado campos con el tiempo que la mayoría de clientes no usa, inflando el tamaño de cada consulta de perfil.&lt;/p>
&lt;p>El &lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a> (fusionado) mueve etiquetas de identidad (etiquetas &lt;code>i&lt;/code>) del kind 0 a un nuevo kind 10011, dado que la adopción de estas etiquetas ha sido mínima. Otro PR (&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">#2213&lt;/a>) propone mover la verificación &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05&lt;/a> al kind 10008, lo que permitiría a usuarios tener múltiples identificadores NIP-05 y filtrar eventos por dirección NIP-05. Un tercer PR (&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">#2217&lt;/a>) propone extraer direcciones Lightning (lud06/lud16) a un nuevo kind, evitando que todos los usuarios de kind 0 carguen campos relacionados con zap que solo importan a clientes con integración Lightning.&lt;/p>
&lt;p>Las propuestas han reavivado la discusión sobre la estructura general del kind 0, incluyendo el &lt;a href="https://github.com/nostr-protocol/nips/pull/1770">PR #1770&lt;/a>, la propuesta de larga data para reemplazar JSON stringificado en el contenido del kind 0 con etiquetas estructuradas.&lt;/p>
&lt;h3 id="soporte-de-nip-70-en-relays-es-crítico-para-la-seguridad-de-mensajería-cifrada">Soporte de NIP-70 en Relays es Crítico para la Seguridad de Mensajería Cifrada&lt;/h3>
&lt;p>La implementación White Noise del protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> ha &lt;a href="https://blog.jgmontoya.com/2026/02/10/nip70-relay-status.html">identificado una brecha crítica&lt;/a> en el soporte de relays para &lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a> (Eventos Protegidos) y &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a> (Autenticación). Las pruebas revelaron que relays públicos principales, incluyendo Damus, Primal y nos.lol, rechazan eventos protegidos directamente con errores &lt;code>blocked: event marked as protected&lt;/code> en lugar de iniciar el desafío de autenticación requerido.&lt;/p>
&lt;p>Esto rompe una función de seguridad clave. NIP-70 permite la eliminación segura de KeyPackages MLS gastados, previniendo ataques de &amp;ldquo;recopilar ahora, descifrar después&amp;rdquo;. Al no contar con soporte de relays, protocolos de mensajería cifrada no pueden proteger a usuarios de un futuro compromiso de claves. White Noise ha desactivado NIP-70 por defecto en respuesta, manteniendo bandera opcional para usuarios con relays que lo soporten.&lt;/p>
&lt;p>&lt;strong>Llamado a la acción para operadores de relays:&lt;/strong> Implementen el flujo completo de autenticación NIP-42. Al recibir eventos protegidos, desafíen a clientes a probar la propiedad, luego acepten escrituras validadas. Rechazar eventos protegidos sin autenticación rompe las garantías de seguridad del protocolo de las que dependen aplicaciones de mensajería cifrada.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="coracle-0629">Coracle 0.6.29&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> (&lt;a href="https://coracle.social">coracle.social&lt;/a>), el cliente web de hodlbod, publicó &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.29">0.6.29&lt;/a>. El lanzamiento añade visualización de temas y comentarios en highlights kind 9802. Un nuevo elemento de navegación de listas da acceso rápido a listas curadas por el usuario desde la interfaz principal. Bajo el capó, Coracle se actualizó a la nueva versión de Welshman, la biblioteca Nostr compartida que gestiona el manejo de relays y eventos de Coracle. La lista de relays por defecto fue renovada, y el rastreo de errores Glitchtip fue eliminado del código.&lt;/p>
&lt;h3 id="igloo-desktop-v103">Igloo Desktop v1.0.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>, la aplicación de firma de umbral y gestión de claves basada en &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a>, publicó &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/releases/tag/v1.0.3">v1.0.3&lt;/a> con endurecimiento de seguridad extensivo. El lanzamiento introduce validación IPC, aislamiento Electron, y verificaciones de relay con protección contra SSRF (server-side request forgery). Un nuevo flujo de onboarding e importación de shares simplifica la distribución de claves, la planificación de relays ahora incluye normalización y fusión por prioridad, y la arquitectura de API Electron basada en preload mejora la frontera de seguridad entre el renderer y el proceso principal. Un sistema keep-alive para el firmante mantiene la estabilidad de sesiones de firma de umbral, y mejoras de UX en la recuperación reducen la fricción de la restauración de claves.&lt;/p>
&lt;h3 id="amber-v412-pre1">Amber v4.1.2-pre1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, el firmante de eventos Android, lanzó &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.2-pre1">v4.1.2-pre1&lt;/a> corrigiendo la visualización ausente de puntuación de confianza de relay introducida en v4.1.1, resolviendo problemas de parseo JSON para solicitudes de cifrado/descifrado no-Nostr, y migrando el modelo de cuenta de LiveData a Flow para gestión de estado más predecible. El lanzamiento cambia secretos bunker a UUIDs completos y actualiza al plugin Gradle 9.&lt;/p>
&lt;h3 id="mostro-mobile-v110-y-daemon-v0161">Mostro Mobile v1.1.0 y Daemon v0.16.1&lt;/h3>
&lt;p>Consulta la &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#mostro-lanza-primera-beta-p%c3%bablica">sección de Noticias arriba&lt;/a> para la cobertura completa del lanzamiento móvil. En el lado del servidor, el &lt;a href="https://github.com/MostroP2P/mostro">daemon de Mostro&lt;/a> publicó &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.1">v0.16.1&lt;/a>, añadiendo publicación automática de metadatos NIP-01 kind 0 al iniciar (vía &lt;a href="https://github.com/MostroP2P/mostro/pull/575">PR #575&lt;/a>), para que el daemon ahora anuncie su identidad a la red cuando se conecta. La documentación del cálculo de comisiones de desarrollo fue corregida en &lt;a href="https://github.com/MostroP2P/mostro/pull/571">PR #571&lt;/a>.&lt;/p>
&lt;h3 id="angor-v025">Angor v0.2.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a> (&lt;a href="https://angor.io">angor.io&lt;/a>), el protocolo de financiación P2P descentralizado construido sobre Bitcoin y Nostr, publicó &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.5">v0.2.5&lt;/a> con tres PRs fusionados. El &lt;a href="https://github.com/block-core/angor/pull/649">PR #649&lt;/a> rediseña la sección de gestión de Fondos (V2), reemplazando el diseño anterior con nueva interfaz para rastrear UTXOs individuales y posiciones de inversión. La renovación del InvoiceView en &lt;a href="https://github.com/block-core/angor/pull/651">PR #651&lt;/a> trae estilos de botón actualizados, diálogos cerrables, un nuevo comando &amp;ldquo;Copiar Dirección&amp;rdquo;, soporte de cancelación para monitoreo de direcciones y mejor manejo del flujo de inversión. Servidores de imágenes &lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) configurables en ajustes se añaden en &lt;a href="https://github.com/block-core/angor/pull/652">PR #652&lt;/a>, permitiendo a usuarios elegir qué endpoint de subida de medios maneja sus imágenes y documentación de proyecto. La versión &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.4">v0.2.4&lt;/a> se publicó la semana anterior.&lt;/p>
&lt;h3 id="ridestr-v022-y-v023">Ridestr v0.2.2 y v0.2.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la plataforma de viaje compartido descentralizada &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/#ridestr-v020-lanzamiento-roadflare">cubierta la semana pasada&lt;/a>, continuó su rápida iteración con &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.2">v0.2.2&lt;/a> (Hotfix de Pago Bridge) y &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.3">v0.2.3&lt;/a> tras el v0.2.0 &amp;ldquo;Lanzamiento RoadFlare&amp;rdquo;. El hotfix v0.2.2 aborda un bug donde pagos bridge de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> cross-mint estaban auto-cancelando viajes mientras el pago aún se procesaba o eventualmente tendría éxito, previniendo cancelaciones prematuras de viaje en liquidaciones lentas. Corrige parpadeo de UI y hitboxes táctiles rotos en el botón &amp;ldquo;mi ubicación&amp;rdquo;. La versión v0.2.3 incluye correcciones de bugs adicionales. Ambos lanzamientos incluyen APKs separados para Ridestr (app de pasajero) y Drivestr (app de conductor).&lt;/p>
&lt;h3 id="nostr-php-194">Nostr PHP 1.9.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrver-se/nostr-php">Nostr PHP&lt;/a> (&lt;a href="https://nostr-php.dev">nostr-php.dev&lt;/a>), la biblioteca auxiliar de PHP para el protocolo Nostr, publicó &lt;a href="https://github.com/nostrver-se/nostr-php/releases/tag/1.9.4">1.9.4&lt;/a> añadiendo propiedad configurable de &lt;code>timeout&lt;/code> a la clase de solicitud (en &lt;a href="https://github.com/nostrver-se/nostr-php/pull/106">PR #106&lt;/a>). Esto permite a desarrolladores establecer duraciones de timeout personalizadas para conexiones de relay y solicitudes de mensajes, previniendo bloqueos indefinidos cuando un relay no responde o tarda en contestar.&lt;/p>
&lt;h3 id="zapstore-v100">Zapstore v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0.0">Zapstore&lt;/a> (&lt;a href="https://zapstore.dev">zapstore.dev&lt;/a>), la tienda de aplicaciones Android construida sobre Nostr, &lt;strong>alcanzó su hito de versión estable 1.0&lt;/strong> esta semana tras meses de release candidates.&lt;/p>
&lt;p>El lanzamiento 1.0 incluye mejoras de estabilidad críticas, entre ellas manejo del estado del botón de instalación que asegura que Eliminar aparezca inmediatamente después de completar la instalación, mensajes de error amigables con detalles técnicos expandibles, y un botón &amp;ldquo;Reportar problema&amp;rdquo; que envía DMs cifrados vía Nostr usando claves efímeras. Contiene pantalla nueva de actualizaciones con polling y seguimiento por lotes, mejor watchdog de descargas para transferencias estancadas, límites dinámicos de descargas concurrentes según el rendimiento del dispositivo, sincronización más frecuente de paquetes instalados, y mejor lógica de comparación de versiones. El equipo corrigió un problema crítico de flutter_secure_storage y mejoró el manejo de casos límite del gestor de paquetes.&lt;/p>
&lt;p>Este hito marca la maduración de la primera plataforma dedicada de distribución de apps de Nostr, permitiendo a desarrolladores publicar aplicaciones Android directamente a usuarios sin el control de acceso de tiendas de apps centralizadas.&lt;/p>
&lt;h3 id="zsp-v031">ZSP v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zsp">ZSP&lt;/a>, la herramienta CLI en Go del equipo &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> que reemplaza las herramientas de publicación anteriores para firmar y subir apps Android a relays Nostr, lanzó &lt;a href="https://github.com/zapstore/zsp/releases/tag/v0.3.1">v0.3.1&lt;/a>. ZSP maneja la adquisición de APK desde GitHub, GitLab, Codeberg, F-Droid o archivos locales, luego parsea metadatos, firma eventos Nostr (vía clave privada, bunker &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> o extensión de navegador &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>), y sube artefactos a servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a>. La versión añade modo offline completo para vinculación de keystore sin conexión de red, cabeceras &lt;code>Content-Digest&lt;/code> en subidas a Blossom para cumplimiento del protocolo, detección corregida de APK arm64-v8a desde repositorios F-Droid, correcciones de parámetros de consulta trailing de GitLab, y soporte completo de archivos &lt;code>.env&lt;/code> para configuración.&lt;/p>
&lt;h3 id="damus-ios-117">Damus iOS 1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, el cliente iOS de Nostr, se actualizó a la versión 1.17 (en &lt;a href="https://github.com/damus-io/damus/pull/3606">PR #3606&lt;/a>). El lanzamiento corrige un problema de RelayPool donde conexiones se cerraban tras liberar reservas efímeras (vía &lt;a href="https://github.com/damus-io/damus/pull/3605">PR #3605&lt;/a>), lo que podía causar que suscripciones se interrumpieran inesperadamente. Resuelve un bug donde la línea de tiempo de favoritos no mostraba eventos al cambiar entre pestañas (en &lt;a href="https://github.com/damus-io/damus/pull/3603">PR #3603&lt;/a>).&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, el Nostr army knife CLI, publicó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con tres correcciones de estabilidad: prevención de panic cuando etiquetas de desafío AUTH son nil o demasiado cortas, verificación de errores de dateparser antes de usar el valor parseado, y manejo de URLs de mint Cashu que carecen del separador &lt;code>://&lt;/code>.&lt;/p>
&lt;h3 id="mi-relay-local-en-el-navegador">Mi: Relay Local en el Navegador&lt;/h3>
&lt;p>&lt;a href="https://git.shakespeare.diy/npub1scvyzz02ayma34hesz62pdrd5nhsmxp74hjq8msmfs9khh3r3drsnw68d8/mi.git">Mi&lt;/a> (&lt;a href="https://mi.shakespeare.wtf">mi.shakespeare.wtf&lt;/a>), nueva MiniApp de &lt;a href="https://shakespeare.wtf">Shakespeare&lt;/a>, es un relay local en el navegador que archiva eventos Nostr del usuario en IndexedDB. Mi obtiene perfiles (kind 0), listas de contactos (kind 3), listas de relays (kind 10002) y eventos de billetera desde relays conectados y almacena todo localmente, dando acceso offline a los propios datos. Construido con React y nostr-tools 2.15.0.&lt;/p>
&lt;h3 id="agora-v102">Agora v1.0.2&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> (&lt;a href="https://agora.spot">agora.spot&lt;/a>), plataforma de activismo y recaudación de fondos descentralizada del equipo Soapbox, publicó &lt;a href="https://gitlab.com/soapbox-pub/agora/-/releases/v1.0.2">v1.0.2&lt;/a> con APK Android disponible para instalación directa. Primera mención de Agora en Compass. Lanzada el 17 de enero con declaración de misión: &amp;ldquo;Únete al movimiento global por la libertad. Envía apoyo a activistas en el terreno internacionalmente y participa en acciones locales.&amp;rdquo;&lt;/p>
&lt;p>La plataforma se centra en un mapa mundial donde usuarios exploran por país, crean &amp;ldquo;acciones&amp;rdquo; geoetiquetadas (protestas, campañas, organización comunitaria) y las discuten en hilos de comentarios. Todo el contenido se propaga a través de relays Nostr, por lo que ningún servidor central puede ser desconectado para silenciar la coordinación. Agora soporta múltiples idiomas con paridad de traducción verificada por CI, integra servidores de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> para subidas, e incluye búsqueda, navegación por hashtags con alternancia global/regional, perfiles de usuario y sistemas de reacciones. El lanzamiento v1.0.2 es la build Android actual, disponible como descarga directa de APK.&lt;/p>
&lt;h3 id="xonos-v016">xonos v0.1.6&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/xonos/xonos">xonos&lt;/a>, el cliente experimental de Nostr en 3D construido con el motor de juego Bevy, publicó &lt;a href="https://codeberg.org/xonos/xonos/releases/tag/v0.1.6">v0.1.6&lt;/a>. xonos renderiza eventos Nostr en un entorno espacial 3D con capacidades de text-to-speech, explorando cómo datos del protocolo social podrían funcionar fuera de interfaces 2D convencionales.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="primal-android-expande-infraestructura-nwc">Primal Android Expande Infraestructura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusionó 18 PRs esta semana, continuando la construcción NWC &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/#primal-android-lanza-cifrado-nwc">iniciada la semana pasada&lt;/a>. El &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/883">PR #883&lt;/a> añade soporte para conexiones NWC en ambas billeteras (Spark y externa), y el &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/879">PR #879&lt;/a> implementa el método NWC &lt;code>lookup_invoice&lt;/code> para verificar el estado de pagos.&lt;/p>
&lt;p>El registro de auditoría de solicitud-respuesta NWC para depuración de interacciones de billetera llega en &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/880">PR #880&lt;/a>. El soporte multi-cuenta para &lt;code>PrimalNwcService&lt;/code> se incorpora en &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/877">PR #877&lt;/a>, permitiendo a usuarios con múltiples perfiles mantener conexiones de billetera separadas. La limpieza periódica de retenciones de presupuesto expiradas en &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/882">PR #882&lt;/a> previene que reservas de pago obsoletas bloqueen operaciones de billetera.&lt;/p>
&lt;p>El trabajo de UI incluye rediseños de la pantalla de actualización de billetera (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/889">PR #889&lt;/a>), FAQ de actualización de billetera (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/885">PR #885&lt;/a>), configuración de dirección Lightning durante onboarding (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/888">PR #888&lt;/a>), y corrección para transacciones de zap que aparecían como pagos regulares en tipos no-Lightning (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/887">PR #887&lt;/a>).&lt;/p>
&lt;h3 id="divine-lanza-feeds-de-video-api-first">diVine Lanza Feeds de Video API-First&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de video de formato corto, fusionó 19 PRs esta semana, orientándose hacia arquitectura API-first. Los feeds de video API-first llegan en &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1468">PR #1468&lt;/a>, y endpoints API de tendencias, recientes y home en &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1466">PR #1466&lt;/a>. La indexación de controladores de video específicos para renderizado eficiente de feeds se implementa en &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1433">PR #1433&lt;/a>.&lt;/p>
&lt;p>El manejo de perfiles mejoró con un patrón cache-plus-fresh para ver otros perfiles en &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1440">PR #1440&lt;/a>, reduciendo tiempos de carga mientras asegura datos actualizados. El equipo envió correcciones de notificaciones (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1437">PR #1437&lt;/a>), refactorización del flujo de comentarios (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1431">PR #1431&lt;/a>), y deslizamiento de pestañas en la pantalla de Notificaciones (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1388">PR #1388&lt;/a>).&lt;/p>
&lt;h3 id="white-noise-unificación-de-keyring-y-búsqueda-de-usuarios">White Noise: Unificación de Keyring y Búsqueda de Usuarios&lt;/h3>
&lt;p>El backend &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise&lt;/a> para el protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> fusionó 4 PRs esta semana. Dos PRs mejoraron el manejo de keyring: el &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/468">PR #468&lt;/a> hace el identificador del servicio de keyring configurable vía &lt;code>WhitenoiseConfig&lt;/code>, y el &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/475">PR #475&lt;/a> unifica la implementación en un solo crate &lt;code>keyring-core&lt;/code> con almacenes nativos de plataforma, reemplazando código fragmentado específico por plataforma. Por separado, el &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/470">PR #470&lt;/a> añade funcionalidad de búsqueda de usuarios.&lt;/p>
&lt;h3 id="marmot-ts-extrae-la-app-de-chat-de-referencia">Marmot TS Extrae la App de Chat de Referencia&lt;/h3>
&lt;p>El SDK TypeScript de &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) fusionó el &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/40">PR #40&lt;/a>, eliminando la aplicación de chat de referencia integrada y separándola en un repositorio independiente: &lt;a href="https://github.com/marmot-protocol/marmots-web-chat">marmots-web-chat&lt;/a>. El nuevo repositorio, creado el 6 de febrero, es implementación de referencia del SDK TypeScript de Marmot con su propio pipeline CI, vista de chat con pestañas y sistema de build independiente. La separación permite al SDK enfocarse en asuntos de biblioteca mientras la app de chat itera en UX de forma independiente.&lt;/p>
&lt;p>Un PR abierto (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/41">#41&lt;/a>) migra marmot-ts a ts-mls v2.0.0, trayendo API rediseñada con objetos de contexto unificados, nuevas utilidades de manejo de mensajes (creación de eventos, lectura, deserialización), helpers de metadatos de key package, y soporte de eventos de eliminación.&lt;/p>
&lt;h3 id="actualizaciones-de-alby-hub">Actualizaciones de Alby Hub&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> fusionó 5 PRs esta semana. La adición de Alby CLI a la interfaz de la tienda de apps llega en &lt;a href="https://github.com/getAlby/hub/pull/2049">PR #2049&lt;/a>. El manejo de datos de zap inválidos en la lista de transacciones se corrige en &lt;a href="https://github.com/getAlby/hub/pull/2033">PR #2033&lt;/a>, y el método &lt;code>ListTransactions&lt;/code> no utilizado de la interfaz LNClient se elimina en &lt;a href="https://github.com/getAlby/hub/pull/2046">PR #2046&lt;/a>.&lt;/p>
&lt;h3 id="notedeck-lanza-dashboard-y-agentium">Notedeck Lanza Dashboard y Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente Nostr multiplataforma de Damus, fusionó 6 PRs esta semana. La app de dashboard inicial llega en &lt;a href="https://github.com/damus-io/notedeck/pull/1247">PR #1247&lt;/a>. Agentium, un entorno de desarrollo multi-agente que transforma el asistente de IA Dave en un sistema con modos de IA duales y gestión de agentes basada en escenas, se introduce en &lt;a href="https://github.com/damus-io/notedeck/pull/1293">PR #1293&lt;/a>. Un compositor de mensajes multilínea con keybindings estilo Signal llega en &lt;a href="https://github.com/damus-io/notedeck/pull/1276">PR #1276&lt;/a>, y mejoras de rendimiento de medios en &lt;a href="https://github.com/damus-io/notedeck/pull/1278">PR #1278&lt;/a>. PRs abiertos a destacar incluyen &lt;a href="https://github.com/damus-io/notedeck/pull/1288">infraestructura outbox&lt;/a> y &lt;a href="https://github.com/damus-io/notedeck/pull/1289">planificación de App Git&lt;/a> &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34&lt;/a>.&lt;/p>
&lt;h3 id="agora-lanza-mayor-renovación-de-ui">Agora Lanza Mayor Renovación de UI&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> fusionó 7 PRs esta semana junto a su lanzamiento v1.0.2. El más grande es &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/106">PR #106&lt;/a>, cerrando 11 tareas de UI en ajustes, edición de perfil, interacciones de mapa, resultados de búsqueda, filtrado de comentarios y gestión de servidor Blossom. La fusión desactivó botones de reacción para usuarios no autenticados (que antes obtenían fallos silenciosos al intentar reaccionar a posts en el mapa), corrigió el paneo de mapa en la línea de fecha, y añadió texto coincidente en negrita en resultados de búsqueda.&lt;/p>
&lt;p>Conteos de comentarios bajo posts del feed y en páginas de hilos llegan en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/108">PR #108&lt;/a>. El reintento automático en fallos de carga de eventos con botón de recarga explícito cuando reintentos se agotan se añade en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/107">PR #107&lt;/a>. La navegación de hashtags pasa a alcance global por defecto en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/104">PR #104&lt;/a>, ya que el alcance por país anterior frecuentemente retornaba cero resultados.&lt;/p>
&lt;p>Un paso CI que verifica paridad de traducción en todos los idiomas, fallando el build si alguna clave carece de valor, se incorpora en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/109">PR #109&lt;/a>. El recorte de notas grandes en feeds para preservar el ritmo de scroll llega en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/110">PR #110&lt;/a>, y la corrección de un problema de zoom en iOS móvil al comentar acciones causado por tamaños de fuente pequeños en &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/111">PR #111&lt;/a>.&lt;/p>
&lt;h3 id="clawstr-lanza-cli-y-botones-de-lightning-zap">Clawstr Lanza CLI y Botones de Lightning Zap&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/clawstr">Clawstr&lt;/a>, la plataforma inspirada en Reddit donde agentes de IA crean y gestionan comunidades en Nostr, fusionó 3 PRs esta semana. En &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/11">PR #11&lt;/a>, todos los comandos manuales de nak en definiciones de habilidades del agente de IA se reemplazan con el nuevo paquete &lt;code>@clawstr/cli&lt;/code> (&lt;code>npx -y @clawstr/cli@latest&lt;/code>), eliminando la construcción manual de eventos JSON a favor de comandos CLI y añadiendo operaciones de billetera (init, balance, zap, npc) y búsqueda de texto completo &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>La página de documentación &amp;ldquo;Para Humanos&amp;rdquo; y el componente &lt;code>ProfileZapDialog&lt;/code> llegan en &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/13">PR #13&lt;/a>. El botón de zap aparece en páginas de perfil cuando el usuario tiene dirección Lightning configurada y funciona sin login, usando LNURL-pay directamente con cantidades preestablecidas de sats y visualización de código QR. La documentación del comando &lt;code>wallet sync&lt;/code> en &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/12">PR #12&lt;/a> explica cómo pagos a direcciones Lightning son retenidos por NPC hasta que agentes sincronizan explícitamente sus billeteras.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1561">NIP-45: Respuesta HyperLogLog de Relay&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45 (Conteo de Eventos)&lt;/a> ahora soporta conteo aproximado HyperLogLog (HLL). Relays pueden retornar valores de registro HLL de 256 bytes junto a respuestas COUNT. Al fusionar estos registros de múltiples relays, clientes computan cardinalidad aproximada sin descargar conjuntos completos de eventos. El caso de uso principal son conteos de seguidores y reacciones sin depender de un único relay como fuente autoritativa. Incluso dos eventos de reacción consumen más ancho de banda que el payload HLL de 256 bytes. Correcciones HyperLogLog++ mejoran la precisión en cardinalidades pequeñas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">NIP-39: Etiquetas de Identidad Movidas del Kind 0&lt;/a>&lt;/strong> - Las etiquetas de claim de identidad (etiquetas &lt;code>i&lt;/code>) de &lt;a href="https://nostrcompass.org/es/topics/nip-39/">NIP-39&lt;/a> han sido extraídas de eventos de metadatos kind 0 a un nuevo kind dedicado 10011. La razón: casi ningún cliente soporta estas etiquetas, por lo que añaden tamaño a cada consulta de kind 0 sin proporcionar valor. Primer PR de la serie de extracción del kind 0 de vitorpamplona (ver &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#campa%c3%b1a-de-reducci%c3%b3n-del-kind-0">sección de Noticias&lt;/a>).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2214">NIP-XX: Nostr Relay Connect (NRC)&lt;/a>&lt;/strong> - woikos propone un protocolo para acceder a relays Nostr a través de tunneling cifrado vía relay de rendez-vous público. El mecanismo permite acceso a relays detrás de NAT o firewalls, incluyendo relays personales ejecutándose en servidores domésticos o dispositivos móviles. El tunneling usa eventos kind 24891/24892 con cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> vía relay de rendez-vous que no puede descifrar el tráfico. Aplicación práctica: cualquier cliente Nostr puede exponer almacenamiento local (IndexedDB, SQLite) como endpoint de relay para sincronización entre dispositivos. La semántica estándar de NIP-01 (REQ, EVENT, CLOSE, COUNT) pasa a través del túnel de forma transparente. Existen implementaciones de referencia en Go (ORLY Relay) y TypeScript (Smesh).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2187">Nostr Web Tokens (NWT)&lt;/a>&lt;/strong> - pippellia-btc propone Nostr Web Tokens, formato de evento Nostr para transmitir claims firmados entre partes web, inspirado en JSON Web Tokens (JWTs). NWT puede representar tanto &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (HTTP Auth) como &lt;a href="https://nostrcompass.org/es/topics/blossom/">eventos de autorización Blossom&lt;/a>, dando a clientes flexibilidad en cómo y por cuánto tiempo los tokens permanecen válidos. Hay biblioteca de referencia en Go disponible. La &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens">explicación en video&lt;/a> y la &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens?tab=readme-ov-file#comparisons">comparación detallada&lt;/a> con NIP-98 y Blossom Auth están enlazadas en el PR.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">Simplificación de NIP-47&lt;/a>&lt;/strong> - rolznz propone eliminar los métodos &lt;code>multi_&lt;/code> de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>, que eran complejos de implementar y no ganaron adopción. El PR reduce duplicación en cifrado y manejo de compatibilidad hacia atrás, limpiando la spec tras la &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/#actualizaciones-de-nips">adición de facturas hold de la semana pasada&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">NIP-05: Mover a Kind de Evento Propio&lt;/a>&lt;/strong> - vitorpamplona propone mover la verificación NIP-05 del kind 0 a nuevo kind 10008, habilitando múltiples identificadores NIP-05 por usuario y filtrado por dirección NIP-05. Parte de la campaña de reducción del kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">NIP-57: Direcciones Lightning del Kind 0&lt;/a>&lt;/strong> - vitorpamplona propone extraer lud06/lud16 (direcciones Lightning) del kind 0 a kind de evento dedicado según &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a>, continuando el esfuerzo de reducción del kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2165">Hiperpersonalización de Perfiles&lt;/a>&lt;/strong> - fiatjaf propone capacidades extendidas de personalización de perfil más allá de lo que el kind 0 soporta actualmente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nip-nip-45-conteo-de-eventos-y-hyperloglog">Análisis Profundo de NIP: NIP-45 (Conteo de Eventos) y HyperLogLog&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-45/">NIP-45&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">spec&lt;/a>) define cómo clientes pueden pedir a relays que cuenten eventos que coincidan con un filtro sin transferir los eventos en sí. La fusión de &lt;a href="https://github.com/nostr-protocol/nips/pull/1561">soporte HyperLogLog&lt;/a> esta semana añade estructura de datos probabilística que resuelve un problema fundamental: cómo contar cosas a través de múltiples relays independientes.&lt;/p>
&lt;p>&lt;strong>El Problema:&lt;/strong>&lt;/p>
&lt;p>Contar eventos en un único relay es simple: envía solicitud COUNT, recibe un número. Contar a través de la red es más difícil. Si el relay A reporta 50 reacciones y el relay B reporta 40, el total no es 90 porque muchos eventos existen en ambos relays. Al no descargar todos los eventos para deduplicar, el cliente no puede calcular el conteo real.&lt;/p>
&lt;p>&lt;strong>HyperLogLog:&lt;/strong>&lt;/p>
&lt;p>HyperLogLog (HLL) es un algoritmo probabilístico que estima el número de elementos distintos en un conjunto usando cantidad fija de memoria. La implementación de NIP-45 usa 256 registros de un byte cada uno, consumiendo exactamente 256 bytes sin importar cuántos eventos se cuenten. El algoritmo funciona examinando la representación binaria de cada ID de evento y rastreando la posición de ceros iniciales. Eventos cuyos IDs comienzan con muchos ceros son estadísticamente raros, por lo que su ocurrencia indica un conjunto grande.&lt;/p>
&lt;p>&lt;strong>Cómo Funciona en NIP-45:&lt;/strong>&lt;/p>
&lt;p>Un relay que responde a solicitud COUNT puede incluir un campo &lt;code>hll&lt;/code> conteniendo valores de registro codificados en base64:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;COUNT&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;subscription_id&amp;gt;&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;count&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4527&lt;/span>, &lt;span style="color:#f92672">&amp;#34;hll&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;base64 encoded 256 bytes&amp;gt;&amp;#34;&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El cliente recolecta valores HLL de múltiples relays y los fusiona tomando el valor máximo en cada posición de registro. El HLL fusionado representa la unión de todos los conjuntos de eventos a través de relays, manejando la deduplicación automáticamente. La estimación final de cardinalidad se calcula a partir de registros fusionados.&lt;/p>
&lt;p>&lt;strong>Precisión:&lt;/strong>&lt;/p>
&lt;p>El error estándar con 256 registros es aproximadamente 5.2%. Para un conteo real de 1,000, la estimación típicamente caerá entre 948 y 1,052. Para conteos más grandes, el error relativo se mantiene constante: un conteo real de 100,000 estimará aproximadamente entre 94,800 y 105,200. Correcciones HyperLogLog++ mejoran la precisión para cardinalidades pequeñas (menores a ~200), donde el algoritmo básico tiende a sobreestimar.&lt;/p>
&lt;p>&lt;strong>Por Qué Importa:&lt;/strong>&lt;/p>
&lt;p>Métricas sociales (conteos de seguidores, conteos de reacciones, conteos de reposts) son función central de clientes de redes sociales. El cliente que no cuente con HLL debe consultar un único relay &amp;ldquo;de confianza&amp;rdquo; (centralizando el conteo) o descargar todos los eventos de todos los relays (desperdiciando ancho de banda). HLL permite obtener buen conteo aproximado de múltiples relays con overhead total de 256 bytes por relay, sin importar el conteo real. Incluso dos eventos de reacción consumen más ancho de banda que un payload HLL completo.&lt;/p>
&lt;p>La spec fija el número de registros en 256 para interoperabilidad. Todos los relays producen valores HLL que clientes pueden fusionar, sin importar qué implementación de relay ejecuten. Esta estandarización significa que el cliente puede implementar soporte HLL una vez y beneficiarse de cada relay que lo soporte.&lt;/p>
&lt;p>&lt;strong>Estado Actual:&lt;/strong>&lt;/p>
&lt;p>El PR fue abierto por fiatjaf y había estado en discusión durante varios meses antes de fusionarse esta semana. Implementaciones de relay necesitarán añadir computación HLL a sus manejadores COUNT. Implementaciones de clientes necesitarán añadir fusión HLL a su lógica de agregación de conteos.&lt;/p>
&lt;h2 id="análisis-profundo-de-nip-nip-96-almacenamiento-de-archivos-http-y-la-transición-a-blossom">Análisis Profundo de NIP: NIP-96 (Almacenamiento de Archivos HTTP) y la Transición a Blossom&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) definió cómo clientes Nostr suben, descargan y gestionan archivos en servidores de medios HTTP. Ahora marcado como &amp;ldquo;no recomendado&amp;rdquo; en favor de &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> (alojamiento de medios basado en BUD), NIP-96 sigue siendo relevante esta semana porque Angor v0.2.5 &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#angor-v025">añadió configuración de servidor NIP-96&lt;/a> y ZSP v0.3.1 &lt;a href="https://nostrcompass.org/es/newsletters/2026-02-11-newsletter/#zsp-v031">sube a servidores Blossom&lt;/a>, ilustrando la transición de protocolo en curso.&lt;/p>
&lt;p>&lt;strong>Cómo Funciona NIP-96:&lt;/strong>&lt;/p>
&lt;p>El cliente descubre las capacidades de un servidor de archivos consultando &lt;code>/.well-known/nostr/nip96.json&lt;/code>, que retorna la URL de API, tipos de contenido soportados, límites de tamaño y transformaciones de medios disponibles:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;api_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://file-server.example/api&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;download_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content_types&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;image/jpeg&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;video/webm&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/*&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;plans&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;free&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;is_nip98_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_byte_size&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10485760&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;media_transformations&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;image&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;resizing&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Para subir, el cliente envía POST &lt;code>multipart/form-data&lt;/code> a la URL de API con cabecera de autorización &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (evento Nostr firmado que prueba la identidad del uploader). El servidor retorna estructura de metadatos de archivo &lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a> conteniendo la URL del archivo, hashes SHA-256 original y transformado, tipo MIME y dimensiones:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;status&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;success&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;nip94_event&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files/&amp;lt;hash&amp;gt;.png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;original-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;transformed-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;image/png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;800x600&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Las descargas usan solicitudes GET a &lt;code>&amp;lt;api_url&amp;gt;/&amp;lt;sha256-hash&amp;gt;&lt;/code>, con parámetros de consulta opcionales para transformaciones del lado del servidor como redimensionamiento de imágenes (&lt;code>?w=320&lt;/code>). La eliminación usa DELETE con auth NIP-98, y solo el uploader original puede eliminar sus archivos. Un endpoint de listado retorna resultados paginados de subidas del usuario.&lt;/p>
&lt;p>Cada usuario declara sus servidores de subida preferidos publicando eventos kind 10096, permitiendo a clientes seleccionar automáticamente el servidor correcto sin configuración manual.&lt;/p>
&lt;p>&lt;strong>Por Qué Fue Obsoletado:&lt;/strong>&lt;/p>
&lt;p>NIP-96 ataba URLs de archivos a servidores específicos. Si &lt;code>files.example.com&lt;/code> dejaba de funcionar, cada nota Nostr que referenciaba las URLs de ese servidor perdía sus medios. El servidor era la dirección, y la dirección era frágil.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> (Blobs Stored Simply on Mediaservers) invierte esto haciendo del hash SHA-256 del contenido del archivo el identificador canónico. Una URL de Blossom luce como &lt;code>https://blossom.example/&amp;lt;sha256&amp;gt;.png&lt;/code>, pero cualquier servidor Blossom que aloje el mismo archivo lo sirve en la misma ruta de hash. Si un servidor desaparece, el cliente consulta otro servidor por el mismo hash. El direccionamiento por contenido hace datos portables entre servidores por defecto.&lt;/p>
&lt;p>Blossom simplifica la API. NIP-96 usaba subidas multipart form con respuestas JSON, políticas de transformación y endpoint de descubrimiento. Blossom usa PUT simple para subidas, GET para descargas y eventos Nostr firmados (no cabeceras HTTP) para autorización. La especificación de Blossom se divide en documentos modulares: BUD-01 cubre protocolo de servidor, autorización y recuperación, BUD-02 cubre subida de blobs, BUD-03 cubre servidores de usuarios, y BUD-04 cubre espejeo entre servidores.&lt;/p>
&lt;p>La obsolescencia ocurrió en septiembre 2025 vía &lt;a href="https://github.com/nostr-protocol/nips/pull/2047">PR #2047&lt;/a>, que marcó NIP-96 como &amp;ldquo;no recomendado&amp;rdquo; en el índice de NIPs.&lt;/p>
&lt;p>&lt;strong>La Transición en la Práctica:&lt;/strong>&lt;/p>
&lt;p>Servidores como nostr.build y void.cat soportaban NIP-96 y han añadido o migrado a endpoints Blossom. Cada cliente está en distinta etapa de adopción. El lanzamiento v0.2.5 de Angor esta semana añadió configuración de servidor NIP-96 para imágenes de proyecto, mientras el lanzamiento v0.3.1 de ZSP sube artefactos exclusivamente a servidores Blossom con cabeceras &lt;code>Content-Digest&lt;/code> para cumplimiento del protocolo. Amethyst y Primal soportan subidas Blossom. La coexistencia probablemente continuará hasta que implementaciones restantes de NIP-96 completen su migración.&lt;/p>
&lt;p>&lt;strong>Qué Se Mantiene:&lt;/strong>&lt;/p>
&lt;p>Eventos kind 10096 de preferencia de servidor siguen siendo útiles para la selección de servidor Blossom. Metadatos de archivo NIP-94 (eventos kind 1063) siguen describiendo propiedades de archivos con independencia de qué protocolo de subida los creó. El hashing SHA-256 que NIP-96 usaba para URLs de descarga se convirtió en la base del direccionamiento por contenido de Blossom. El diseño de NIP-96 informó lo que Blossom simplificó: la lección fue que el alojamiento de medios en red descentralizada requiere almacenamiento direccionado por contenido para igualar la resistencia a la censura de la capa de relays.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. Envíanos noticias, sugerencias de cobertura o información sobre tu proyecto. &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Escríbenos vía DM NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #8</title><link>https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-02-04-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> rust-nostr lanza un importante rediseño de API con 21 PRs reformulando la arquitectura del SDK. Nostria 3.0 se lanza con navegación de panel dual, gestión de listas y una renovación completa de la interfaz. Vector añade aceleración SIMD logrando mejoras de velocidad de 65x-184x y lanza soporte del protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> para mensajería grupal cifrada. Frostr trae firma de umbral a iOS vía TestFlight. Damus implementa pistas de relay &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19 (Entidades Codificadas en Bech32)&lt;/a> para descubrimiento de contenido entre relays. Primal Android añade cifrado NWC y exportación de transacciones de billetera. nostr-tools y NDK reciben mejoras de confiabilidad. NIP-82 (Aplicaciones de Software) se expande para cubrir el 98% de plataformas de dispositivos. El repositorio de NIPs fusiona soporte de facturas hold para &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuevas propuestas de protocolo incluyen NIP-74 para podcasting, NIP-DB para bases de datos de eventos en navegador, y una suite de Filtros TRUSTed para curación de contenido descentralizada. Nuevos proyectos incluyen Instagram to Nostr v2 para migración de contenido, Pod21 lanzando un marketplace descentralizado de impresión 3D, Clawstr introduciendo comunidades gestionadas por agentes de IA, y Shosho y NosCall expandiendo capacidades de streaming en vivo y videollamadas.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> rust-nostr lanza un importante rediseño de API con 21 PRs reformulando la arquitectura del SDK. Nostria 3.0 se lanza con navegación de panel dual, gestión de listas y una renovación completa de la interfaz. Vector añade aceleración SIMD logrando mejoras de velocidad de 65x-184x y lanza soporte del protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> para mensajería grupal cifrada. Frostr trae firma de umbral a iOS vía TestFlight. Damus implementa pistas de relay &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19 (Entidades Codificadas en Bech32)&lt;/a> para descubrimiento de contenido entre relays. Primal Android añade cifrado NWC y exportación de transacciones de billetera. nostr-tools y NDK reciben mejoras de confiabilidad. NIP-82 (Aplicaciones de Software) se expande para cubrir el 98% de plataformas de dispositivos. El repositorio de NIPs fusiona soporte de facturas hold para &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuevas propuestas de protocolo incluyen NIP-74 para podcasting, NIP-DB para bases de datos de eventos en navegador, y una suite de Filtros TRUSTed para curación de contenido descentralizada. Nuevos proyectos incluyen Instagram to Nostr v2 para migración de contenido, Pod21 lanzando un marketplace descentralizado de impresión 3D, Clawstr introduciendo comunidades gestionadas por agentes de IA, y Shosho y NosCall expandiendo capacidades de streaming en vivo y videollamadas.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="rust-nostr-lanza-mayor-rediseño-de-api">rust-nostr Lanza Mayor Rediseño de API&lt;/h3>
&lt;p>El SDK &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> experimentó una reformulación significativa de arquitectura esta semana con 21 PRs fusionados introduciendo cambios incompatibles en toda la biblioteca. El rediseño afecta APIs centrales de las que dependen la mayoría de los desarrolladores de Rust.&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a> rediseña APIs de notificación, mientras &lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a> reemplaza &lt;code>RelayNotification::Shutdown&lt;/code> con &lt;code>RelayStatus::Shutdown&lt;/code> para un manejo de estado más limpio. Las APIs de firmante ahora se alinean con otros patrones del SDK vía &lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>. Los métodos de Client y Relay recibieron limpieza en &lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>, y las opciones de cliente ahora usan un patrón builder (&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>).&lt;/p>
&lt;p>Las APIs de envío de mensajes fueron rediseñadas en &lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>, la desuscripción REQ en &lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>, y la eliminación de relay en &lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>. Un &lt;a href="https://github.com/rust-nostr/nostr/pull/1246">PR abierto #1246&lt;/a> añade soporte para APIs de bloqueo para completar el rediseño.&lt;/p>
&lt;p>Los cambios traen consistencia al SDK pero requerirán esfuerzo de migración de proyectos existentes. Los desarrolladores que construyen sobre rust-nostr deberían revisar el changelog cuidadosamente antes de actualizar.&lt;/p>
&lt;h3 id="instagram-to-nostr-v2-habilita-migración-de-contenido">Instagram to Nostr v2 Habilita Migración de Contenido&lt;/h3>
&lt;p>Una nueva herramienta permite a los creadores migrar su contenido existente de plataformas centralizadas a Nostr. &lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a> soporta importación desde Instagram, TikTok, Twitter y Substack sin requerir acceso a las claves privadas del usuario.&lt;/p>
&lt;p>La herramienta aborda una barrera común de incorporación: usuarios reacios a empezar de cero en una nueva plataforma pueden ahora preservar su historial de contenido. También soporta regalar cuentas Nostr a nuevos usuarios o proponer contenido a cuentas existentes, haciéndola útil para ayudar a otros a transicionar al protocolo.&lt;/p>
&lt;h3 id="pod21-red-descentralizada-de-impresión-3d">Pod21: Red Descentralizada de Impresión 3D&lt;/h3>
&lt;p>&lt;a href="https://github.com/gobrrrme/Pod21">Pod21&lt;/a> (&lt;a href="https://pod21.com">pod21.com&lt;/a>) conecta operadores de impresoras 3D con compradores usando Nostr para coordinación de marketplace. La plataforma incluye un bot de DM compatible con &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17 (Mensajes Directos Privados)&lt;/a> que maneja interacciones de marketplace, permitiendo a compradores solicitar impresiones y negociar con fabricantes a través de mensajes directos cifrados.&lt;/p>
&lt;p>Los fabricantes listan su capacidad y características de impresión; los compradores navegan listados e inician órdenes vía el bot. La arquitectura sigue un patrón similar a otras aplicaciones de comercio Nostr: descubrimiento basado en relay, mensajería cifrada para coordinación de órdenes, y Lightning para liquidación. Pod21 se une a Ridestr y Shopstr como aplicaciones Nostr coordinando transacciones del mundo real a través del protocolo.&lt;/p>
&lt;h3 id="clawstr-red-social-de-agentes-de-ia">Clawstr: Red Social de Agentes de IA&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a> se lanza como una plataforma inspirada en Reddit donde agentes de IA crean y gestionan comunidades en Nostr. La plataforma permite a agentes autónomos establecer comunidades temáticas, curar contenido e interactuar con usuarios. Las comunidades funcionan como subreddits pero con moderadores y curadores de IA guiando las discusiones. La arquitectura usa el protocolo abierto de Nostr para interacciones agente-a-agente y agente-a-humano, estableciendo un nuevo modelo para formación de comunidades en redes sociales descentralizadas.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="ridestr-v020-lanzamiento-roadflare">Ridestr v0.2.0: Lanzamiento RoadFlare&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> lanzó &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>, denominado el &amp;ldquo;Lanzamiento RoadFlare&amp;rdquo;, introduciendo redes de viaje compartido personales. La característica permite a los pasajeros agregar conductores favoritos a una red de confianza. Los conductores aprueban seguidores y comparten ubicaciones cifradas, permitiendo a los pasajeros ver cuando conductores de confianza están en línea y cerca. Las solicitudes de viaje van directamente a conductores conocidos.&lt;/p>
&lt;p>La confiabilidad de pagos mejoró con recuperación automática de depósito, mejor sincronización de billetera entre dispositivos, y procesamiento de pagos más rápido vía polling progresivo. &lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a> añade la infraestructura de Fase 5-6 soportando estas características. &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a> siguió con correcciones para bugs del diálogo de pago y el flujo &amp;ldquo;Agregar a Favoritos&amp;rdquo; post-viaje.&lt;/p>
&lt;h3 id="nostria-30">Nostria 3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, el cliente multiplataforma de sondreb construido para escala global, lanzó la versión 3.0 con una renovación completa de UI, nuevo logo, y cientos de correcciones. El lanzamiento representa un ciclo de desarrollo intensivo de seis semanas.&lt;/p>
&lt;p>La navegación de panel dual es el mayor cambio de UX, permitiendo a usuarios de escritorio reducir el cambio de contexto al moverse entre listas, detalles e hilos. Una nueva sección Home proporciona una visión general de todas las características disponibles, y todas las pantallas comparten barra de herramientas, diseño y funcionalidad unificados.&lt;/p>
&lt;p>La gestión de listas es la actualización de característica más significativa, integrándose en toda la aplicación. Los usuarios pueden gestionar listas de perfiles y filtrar contenido en cualquier característica: Streams, Música o Feeds. ¿Cansado del spam en hilos? Filtra por favoritos para ver solo sus respuestas. Quick Zaps añade zapping de un toque con valores configurables. Copy/Screenshot genera capturas de pantalla al portapapeles para compartir eventos en cualquier lugar. Muted Words ahora filtra en campos de perfil (name, display_name, NIP-05), permitiendo a usuarios bloquear todos los perfiles de bridge con una sola palabra prohibida. Configuración se volvió buscable para cambios de configuración más rápidos.&lt;/p>
&lt;p>El lanzamiento añade renderizado de solicitudes de pago BOLT11 y BOLT12, selección de tamaño de texto y fuente, y mensajería &amp;ldquo;Nota para Uno Mismo&amp;rdquo; en la sección de Mensajes con renderizado de contenido referenciado como artículos y eventos. El nuevo diálogo de Compartir permite compartir rápidamente vía correo electrónico, sitios web o mensajes directos a múltiples destinatarios. Características adicionales incluyen conjuntos de emoji personalizados, Intereses (listas de hashtags como feeds dinámicos), Marcadores, Feeds de Relay Públicos, y personalización completa del menú incluyendo qué opción abre el icono de Nostria.&lt;/p>
&lt;p>Disponible en Android, iOS, Windows y web en &lt;a href="https://www.nostria.app/">nostria.app&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v510">Applesauce v5.1.0&lt;/h3>
&lt;p>La suite de bibliotecas &lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a> de hzrd149 lanzó v5.1.0 en todos los paquetes. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a> añade soporte para métodos &lt;code>switch_relays&lt;/code> y &lt;code>ping&lt;/code> en firmantes remotos Nostr Connect, útil para gestionar conexiones de firmantes programáticamente. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-loaders%405.1.0">applesauce-loaders&lt;/a> introduce &lt;code>loadAsyncMap&lt;/code> para carga asíncrona paralela. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a> añade argumentos de padding a &lt;code>useAction().run()&lt;/code>. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.1.0">applesauce-core&lt;/a> actualiza el mapeo de evento a store para manejar strings directamente sin requerir &lt;code>onlyEvents&lt;/code>.&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> (Nostr Army Knife) de fiatjaf alcanzó &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con correcciones de estabilidad de mattn. El lanzamiento previene panics cuando URLs de mint carecen del separador &lt;code>://&lt;/code>, valida errores de dateparser antes de usar valores de fecha, y maneja casos límite en el parseo de etiquetas de desafío AUTH. Estas correcciones defensivas hacen el CLI más resiliente al procesar entradas malformadas.&lt;/p>
&lt;h3 id="aegis-v037">Aegis v0.3.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, el firmante de escritorio multiplataforma, lanzó &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.7">v0.3.7&lt;/a> añadiendo soporte de Navegador de Apps Nostr con firma &lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07 (Interfaz de Extensión de Navegador)&lt;/a>. El lanzamiento registra eventos de cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04 (Mensajes Directos Cifrados)&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44 (Cifrado Versionado)&lt;/a>, permitiendo a usuarios rastrear qué aplicaciones solicitan operaciones de cifrado. El segmento de navegador ahora filtra por plataforma para mostrar solo apps web.&lt;/p>
&lt;h3 id="bitchat-v151-ios">Bitchat v1.5.1 (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat">Bitchat&lt;/a>, la app de mensajería con capacidad offline usando Nostr y mesh Bluetooth, lanzó &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.1">v1.5.1&lt;/a> con endurecimiento de seguridad para iOS. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a> valida firmas de eventos Nostr antes de procesar, rechaza giftwraps y paquetes incrustados inválidos, limita cargas sobredimensionadas, y bloquea IDs de remitente de anuncio BLE falsificados. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/998">PR #998&lt;/a> corrige autenticación de mesh BLE de iOS vinculando IDs de remitente a UUIDs de conexión, previniendo suplantación de identidad en la red mesh. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a> añade limitación de tasa de notificaciones para prevenir inundaciones de descubrimiento de peers cuando múltiples dispositivos mesh están cerca.&lt;/p>
&lt;h3 id="keychat-v1392">KeyChat v1.39.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/keychat-io/keychat-app">KeyChat&lt;/a> lanzó &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.39.2%2B6495">v1.39.2&lt;/a> añadiendo soporte &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect vía &lt;a href="https://github.com/keychat-io/keychat-app/pull/148">PR #148&lt;/a>. Los usuarios pueden ahora conectar billeteras Lightning externas para pagos dentro de la app de mensajería. El lanzamiento también añade notificaciones de escritorio macOS.&lt;/p>
&lt;h3 id="nostrmo-v350">Nostrmo v3.5.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/haorendashu/nostrmo">Nostrmo&lt;/a>, el cliente Flutter multiplataforma, lanzó &lt;a href="https://github.com/haorendashu/nostrmo/releases/tag/3.5.0">v3.5.0&lt;/a> reformulando su sistema de feeds. La actualización reemplaza feeds fijos con alternativas personalizables: Feed General, Feed de Menciones y Feed de Relay, cada uno configurable a través de nuevas páginas de edición. El lanzamiento implementa soporte del modelo outbox para mejor enrutamiento de eventos y expande la funcionalidad de relay local con límites de tamaño configurables y soporte de suscripción.&lt;/p>
&lt;h3 id="shosho-v0111">Shosho v0.11.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, la app de streaming en vivo para Nostr, lanzó &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.11.1">v0.11.1&lt;/a> con capacidades de grabación y VOD. La actualización añade indicadores de presencia de sala mostrando quién está viendo streams, conversaciones de chat en hilos para mejor organización de discusiones, y soporte Nostr Connect en iOS vía &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>. Los streamers pueden ahora guardar sus transmisiones para visualización posterior mientras mantienen interacciones de chat en tiempo real con su audiencia.&lt;/p>
&lt;h3 id="noscall-v050">NosCall v0.5.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>, la app de llamadas de audio y video para Nostr, lanzó &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.0-release">v0.5.0&lt;/a> con grupos de contactos para organizar llamadas por categoría, gestión de relay para optimización de conexión, y configuración de servidor ICE configurable para mejor traversal de NAT. El lanzamiento también añade soporte de modo oscuro. NosCall usa Nostr para señalización y coordinación de llamadas, habilitando llamadas peer-to-peer sin servidores centralizados.&lt;/p>
&lt;h3 id="divine-104">diVine 1.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, el cliente de video de formato corto en bucle de rabble, lanzó &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.4">1.0.4&lt;/a> como pre-lanzamiento alpha de Android antes de su envío a Zapstore. El lanzamiento se enfoca en probar gestión de claves Nostr, incluyendo importación de nsec, firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a> con nsecBunker y Amber, y manejo de URLs nostrconnect://. El equipo está solicitando feedback sobre compatibilidad de relays e interoperabilidad de video con otros clientes. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1265">PR #1265&lt;/a> corrige el manejo de rutas de archivo iOS que causaba que clips de video se volvieran inutilizables después de actualizaciones de app almacenando rutas relativas en lugar de rutas absolutas de contenedor. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1251">PR #1251&lt;/a> corrige problemas de navegación al ver perfiles desde comentarios.&lt;/p>
&lt;h3 id="zeus-v0122">Zeus v0.12.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> lanzó &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.2">v0.12.2&lt;/a> como lanzamiento estable, consolidando las &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-28-newsletter/#zeus-v0122-beta---nwc-fixes">correcciones NWC cubiertas en ediciones anteriores&lt;/a>.&lt;/p>
&lt;h3 id="frostr-igloo-ios-testflight">Frostr Igloo iOS TestFlight&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (&lt;a href="https://frostr.org/">frostr.org&lt;/a>) lanzó &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo para iOS&lt;/a> en &lt;a href="https://testflight.apple.com/join/72hjQe3J">TestFlight&lt;/a>, expandiendo firma de umbral a dispositivos Apple. Frostr usa firmas FROST (Flexible Round-Optimized Schnorr Threshold) para dividir claves nsec en shares distribuidos entre dispositivos, habilitando firma k-de-n con tolerancia a fallos. Los usuarios que se unen en &amp;ldquo;modo demo&amp;rdquo; participan en un experimento de firma de umbral 2-de-2 en vivo, demostrando las capacidades de coordinación en tiempo real del protocolo. El lanzamiento iOS se une a &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo para Android&lt;/a> (v0.1.2), que se lanzó en diciembre con soporte &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55 (Firmante Android)&lt;/a> para solicitudes de firma entre apps. Ambos clientes móviles complementan &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo desktop&lt;/a> y la extensión de navegador &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="damus-implementa-pistas-de-relay-nip-19">Damus Implementa Pistas de Relay NIP-19&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> fusionó &lt;a href="https://github.com/damus-io/damus/pull/3477">PR #3477&lt;/a>, implementando consumo de pistas de relay &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> para obtención de eventos. La característica habilita ver notas en relays no incluidos en el pool configurado del usuario extrayendo pistas de referencias &lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10 (Hilos de Respuesta)&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-18/">NIP-18 (Reposts)&lt;/a> y NIP-19. La implementación usa conexiones de relay efímeras con limpieza contada por referencia, evitando expansión permanente del pool de relays.&lt;/p>
&lt;p>Correcciones adicionales incluyen parseo de facturas Lightning (&lt;a href="https://github.com/damus-io/damus/pull/3566">PR #3566&lt;/a>), carga de vista de billetera (&lt;a href="https://github.com/damus-io/damus/pull/3554">PR #3554&lt;/a>), timing de lista de relays (&lt;a href="https://github.com/damus-io/damus/pull/3553">PR #3553&lt;/a>), y precarga de perfiles para reducir &amp;ldquo;popping&amp;rdquo; visual (&lt;a href="https://github.com/damus-io/damus/pull/3550">PR #3550&lt;/a>). Un &lt;a href="https://github.com/damus-io/damus/pull/3590">borrador PR #3590&lt;/a> muestra soporte de DM privado &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> en progreso.&lt;/p>
&lt;h3 id="primal-android-lanza-cifrado-nwc">Primal Android Lanza Cifrado NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> tuvo una semana muy activa con 18 PRs fusionados enfocados en infraestructura de billetera. La app ahora se integra con Spark, el protocolo Lightning auto-custodiado de Lightspark. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> añade soporte de cifrado NWC, mientras &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/872">PR #872&lt;/a> envía eventos de info NWC cuando se establecen conexiones.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/870">PR #870&lt;/a> habilita exportación CSV para transacciones de billetera, útil para contabilidad e impuestos. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/716">PR #716&lt;/a> añade un cambiador de cuenta local en el Editor de Notas. Múltiples correcciones de restauración de billetera (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/876">PR #876&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/875">PR #875&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/873">PR #873&lt;/a>) abordan casos límite para usuarios con configuraciones de billetera no-Spark.&lt;/p>
&lt;h3 id="sdk-typescript-de-marmot-añade-historial-de-mensajes">SDK TypeScript de Marmot Añade Historial de Mensajes&lt;/h3>
&lt;p>La implementación TypeScript del protocolo &lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a> continúa en desarrollo. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR #38&lt;/a> de hzrd149 implementa persistencia de historial de mensajes con paginación para la aplicación de chat de referencia, mientras &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/39">PR #39&lt;/a> mejora la ergonomía de la biblioteca.&lt;/p>
&lt;p>En el lado Rust, &lt;a href="https://github.com/marmot-protocol/mdk/pull/161">PR #161&lt;/a> implementa manejo de estado reintentable para preservar contexto de mensajes en fallos, y &lt;a href="https://github.com/marmot-protocol/mdk/pull/164">PR #164&lt;/a> cambia a std::sync::Mutex para evitar panics de tokio con SQLite. El backend whitenoise-rs añade &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">integración con Amber&lt;/a> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">PR #418&lt;/a>), &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">actualiza a MDK y nostr-sdk 0.44&lt;/a> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">PR #467&lt;/a>), e introduce streaming de notificaciones en tiempo real vía &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/460">PR #460&lt;/a> con tipos de evento NewMessage y GroupInvite.&lt;/p>
&lt;h3 id="haven-añade-refresco-periódico-de-wot">HAVEN Añade Refresco Periódico de WoT&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, el relay personal, fusionó &lt;a href="https://github.com/bitvora/haven/pull/108">PR #108&lt;/a> añadiendo refresco periódico de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a>. La característica asegura que las puntuaciones de confianza se mantengan actualizadas a medida que evolucionan los grafos sociales de los usuarios, mejorando la precisión del filtrado de spam con el tiempo.&lt;/p>
&lt;h3 id="nostr-tools">nostr-tools&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la biblioteca principal de JavaScript, recibió múltiples mejoras esta semana. Los commits incluyen una &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/c2423f7f31853d97fef2e3d649204cec328e81d5">corrección para parseo de hashtags después de saltos de línea&lt;/a> en menciones &lt;a href="https://nostrcompass.org/es/topics/nip-27/">NIP-27 (Referencias de Notas de Texto)&lt;/a>, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/ab802c8dbe35d29feb732ba54e82a346c21c32e2">poda automática de objetos de relay rotos con seguimiento de inactividad&lt;/a> para limpieza de conexiones, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/be9b91318fea6a0cb154b8734a15b50a4c1e7638">eliminación de cola de mensajes&lt;/a> para optimización de rendimiento de hilo único, y &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/05b1fba5113182ac0aa3c72d1f511cd956a7c139">exportaciones de archivos fuente&lt;/a> para mejores imports de TypeScript.&lt;/p>
&lt;h3 id="ndk">NDK&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> lanzó &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/26abea24726ed844fdd091744ac9f768f1a530a0">beta.71&lt;/a> con una &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/33e759508bc656dc45d3d77c741edf581af323f3">corrección para reconexión después de ciclos de suspensión/despertar del dispositivo y manejo de conexiones obsoletas&lt;/a>, abordando problemas de confiabilidad para aplicaciones móviles.&lt;/p>
&lt;h3 id="notedeck">Notedeck&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, el cliente de escritorio del equipo Damus, tiene un &lt;a href="https://github.com/damus-io/notedeck/pull/1279">PR abierto #1279&lt;/a> añadiendo un visor &lt;a href="https://nostrcompass.org/es/topics/nip-34/">NIP-34 (Colaboración Git)&lt;/a>. Esto habilitaría navegar repositorios git, parches e issues publicados en relays de Nostr directamente dentro del cliente, haciendo de Notedeck un potencial front-end para flujos de trabajo basados en ngit.&lt;/p>
&lt;h3 id="njump">njump&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, el gateway web de Nostr, añadió soporte para dos tipos de evento &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51 (Listas)&lt;/a> vía &lt;a href="https://github.com/fiatjaf/njump/pull/152">PR #152&lt;/a>. El gateway ahora renderiza kind:30000 Follow Sets, que son agrupaciones categorizadas de usuarios que los clientes pueden mostrar en diferentes contextos, y kind:39089 Starter Packs, que son colecciones de perfiles curadas diseñadas para compartir y seguimiento grupal. Estas adiciones permiten a njump mostrar listas curadas por la comunidad cuando usuarios comparten enlaces nevent.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, el cliente Android, corrigió un bug que prevenía compartir video desde la vista del reproductor (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1695">PR #1695&lt;/a>). La opción &amp;ldquo;Compartir video&amp;rdquo; estaba fallando al aparecer porque el parámetro de contenido no se estaba pasando al componente de botones de control. Los usuarios pueden ahora compartir contenido de video de Nostr a otras apps directamente desde el reproductor. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1693">PR #1693&lt;/a> corrige crashes de deserialización Jackson JSON que ocurrían al parsear ciertos eventos malformados.&lt;/p>
&lt;h3 id="jumble">Jumble&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, el cliente web enfocado en navegación de feeds de relay, añadió cargas de archivos de audio vía portapapeles en &lt;a href="https://github.com/CodyTseng/jumble/pull/743">PR #743&lt;/a>. Los usuarios pueden ahora pegar archivos de audio directamente en el editor de publicaciones, que los sube a servidores de medios configurados e incrusta la URL en la nota. La característica refleja la funcionalidad existente de pegado de imágenes.&lt;/p>
&lt;h3 id="flotilla">Flotilla&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a>, el cliente de comunidades &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29 (Grupos Basados en Relay)&lt;/a> de hodlbod, lanzó notificaciones vía &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>. La actualización refactoriza el sistema de alertas de polling basado en anchor a notificaciones pull locales para web y notificaciones push para móvil. La arquitectura implementa el estándar propuesto NIP-9a (ver &lt;a href="https://github.com/nostr-protocol/nips/pull/2194">PR #2194&lt;/a> abajo), donde usuarios registran callbacks de webhook con relays y reciben cargas de eventos cifradas cuando los filtros coinciden.&lt;/p>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, la aplicación de formularios nativa de Nostr, añadió importación de formularios y soporte de formularios cifrados en &lt;a href="https://github.com/abh3po/nostr-forms/pull/422">PR #422&lt;/a>. Los usuarios pueden ahora importar formularios existentes mediante un enlace de respuesta o desde otras instancias de Formstr. La característica de cifrado permite a creadores de formularios restringir respuestas para que solo destinatarios designados puedan leer los envíos, útil para encuestas que recolectan información sensible.&lt;/p>
&lt;h3 id="pollerama">Pollerama&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-polls">Pollerama&lt;/a> (&lt;a href="https://pollerama.fun">pollerama.fun&lt;/a>), construido sobre &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, añadió compartir encuestas vía DM &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> en &lt;a href="https://github.com/abh3po/nostr-polls/pull/141">PR #141&lt;/a> y &lt;a href="https://github.com/abh3po/nostr-polls/pull/142">PR #142&lt;/a>. Los usuarios pueden ahora compartir encuestas directamente a contactos a través de mensajes directos cifrados.&lt;/p>
&lt;h3 id="nostrability-schemata">Nostrability Schemata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Nostrability schemata&lt;/a>, la colección de esquemas de verificación JSON para eventos Nostr, añadió cobertura de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a> vía &lt;a href="https://github.com/nostrability/schemata/pull/59">PR #59&lt;/a>. La actualización incluye esquemas para eventos kind 13 (seal) y kind 1059 (gift wrap), complementando la cobertura existente de esquema &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;h3 id="vector">Vector&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, el mensajero de escritorio enfocado en privacidad usando &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>, &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> para cifrado sin metadatos, fusionó &lt;a href="https://github.com/VectorPrivacy/Vector/pull/39">PR #39&lt;/a> introduciendo optimizaciones de rendimiento aceleradas por SIMD. La codificación hex corre 65x más rápido, la generación de vista previa de imágenes hasta 38x más rápida, y las búsquedas de mensajes 184x más rápidas vía indexación de búsqueda binaria. El PR añade intrínsecos NEON ARM64 para Apple Silicon y AVX2/SSE2 x86_64 con detección en tiempo de ejecución para Windows y Linux. El uso de memoria bajó con structs de mensaje reducidos de 472 a 128 bytes y almacenamiento de npub cortado en 99.6% mediante interning.&lt;/p>
&lt;p>Vector v0.3.0 (diciembre 2025) integró &lt;a href="https://github.com/marmot-protocol/mdk">MDK (Marmot Development Kit)&lt;/a> para mensajería grupal basada en protocolo MLS, trayendo grupos cifrados de extremo a extremo con secreto hacia adelante al cliente. El compartir archivos MIP-04 ahora maneja adjuntos imeta para grupos MLS, diseñado para interoperabilidad con &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-28-newsletter/#marmot-protocol-updates">White Noise&lt;/a>. El lanzamiento también introdujo una plataforma Mini Apps con juegos multijugador P2P basados en WebXDC, una tienda de apps descentralizada llamada The Nexus, integración de billetera PIVX para pagos en la app, edición de mensajes con seguimiento completo de historial, y reducción de memoria 4x durante subidas de imágenes.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1913">NIP-47: Soporte de Facturas Hold&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a> ahora soporta facturas hold, habilitando flujos de trabajo de pago avanzados donde los receptores deben liquidar o cancelar pagos explícitamente. El PR añade tres nuevos métodos RPC: &lt;code>make_hold_invoice&lt;/code> crea una factura hold usando una preimagen pre-generada y hash de pago, &lt;code>settle_hold_invoice&lt;/code> reclama el pago proporcionando la preimagen original, y &lt;code>cancel_hold_invoice&lt;/code> rechaza el pago usando su hash de pago. Una nueva notificación &lt;code>hold_invoice_accepted&lt;/code> se dispara cuando un pagador bloquea el pago. Esto habilita casos de uso como contenido de pago-para-desbloquear, sistemas de escrow de marketplace, y control de acceso por pago. Las implementaciones ya están en marcha en &lt;a href="https://github.com/getAlby/hub/pull/1298">Alby Hub&lt;/a>, &lt;a href="https://github.com/getAlby/js-sdk/pull/382">Alby JS-SDK&lt;/a> y &lt;a href="https://github.com/relaystr/ndk/pull/147">dart NDK&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2208">NIP-05: Requisito de Minúsculas&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/es/topics/nip-05/">NIP-05 (Verificación de Dominio)&lt;/a> ahora requiere explícitamente minúsculas tanto para claves públicas hex como para nombres locales en el archivo &lt;code>nostr.json&lt;/code>. Esto era implícito en la especificación pero no estaba declarado, causando problemas de interoperabilidad cuando algunas implementaciones usaban mayúsculas mixtas mientras otras normalizaban a minúsculas. Los clientes validando identificadores NIP-05 deberían ahora rechazar cualquier respuesta &lt;code>nostr.json&lt;/code> que contenga caracteres mayúsculas en claves o nombres.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2205">NIP-73: Códigos de País&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/es/topics/nip-73/">NIP-73 (Geoetiquetas)&lt;/a> ahora soporta códigos de país ISO 3166 como alternativa a geohashes. Los eventos pueden incluir etiquetas &lt;code>[&amp;quot;g&amp;quot;, &amp;quot;US&amp;quot;, &amp;quot;countryCode&amp;quot;]&lt;/code> para indicar ubicación a nivel de país sin requerir coordenadas precisas. Esto habilita filtrado y descubrimiento de contenido basado en país para aplicaciones donde la ubicación exacta es innecesaria o indeseable. El PR también añadió un ejemplo de geohash faltante a la documentación de la especificación.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1336">NIP-82: Aplicaciones de Software&lt;/a>&lt;/strong> - franzap anunció una actualización mayor a esta especificación borrador, que define cómo se distribuyen aplicaciones de software vía Nostr usando eventos de lanzamiento kind 30063. La actualización ahora cubre aproximadamente el 98% de las plataformas de dispositivos globalmente, incluyendo macOS, Linux, Windows, FreeBSD, entornos WASM, extensiones de VS Code, extensiones de Chrome, y Web Bundles/PWAs. El equipo se está enfocando ahora en soporte para Android, PWA e iOS, invitando a desarrolladores a converger en este estándar compartido. Zapstore planea migrar al nuevo formato en las próximas semanas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74: Podcasts&lt;/a>&lt;/strong> - Define eventos direccionables para programas de podcast (kind 30074) y episodios (kind 30075). Los programas incluyen metadatos como título, descripción, categorías e imágenes de portada. Los episodios referencian su programa padre e incluyen URLs de enclosure, duraciones y marcadores de capítulos. La especificación se integra con estándares de metadatos Podcasting 2.0 e incluye etiquetas de valor para monetización V4V (valor-por-valor) vía Lightning. Plataformas como &lt;a href="https://transmit.fm">transmit.fm&lt;/a>, una plataforma de publicación de podcasts nativa de Nostr, pueden publicar directamente a relays usando este formato, permitiendo a podcasters distribuir contenido sin intermediarios.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2207">NIP-FR: Notas Solo-Amigos&lt;/a>&lt;/strong> - Propone un mecanismo para publicar notas visibles solo para una lista de amigos definida por el usuario, utilizando una clave simétrica compartida llamada ViewKey. El autor cifra notas (kind 2044) con el ViewKey usando NIP-44. El ViewKey se distribuye a cada amigo una sola vez mediante &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>. Los amigos que poseen el ViewKey pueden descifrar y leer las notas; todos los demás solo ven texto cifrado. Cuando el autor elimina a un amigo, el ViewKey se rota: se genera una nueva clave y se redistribuye a todos los amigos restantes vía gift wrap, asegurando que el amigo eliminado pierda acceso a publicaciones futuras. Este enfoque separa el cifrado de contenido (simétrico, eficiente) de la distribución de claves (asimétrica, por amigo), manteniendo el protocolo liviano mientras habilita una característica de privacidad frecuentemente solicitada.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/1a451c1581888215ae5c311d36c8a7c7d9e5e81f1f4010de4afaf7fcbd553e90">NIP-DB: Interfaz de Base de Datos de Eventos Nostr en Navegador&lt;/a>&lt;/strong> (&lt;a href="https://github.com/hzrd149/nostr-bucket/blob/master/nip.md">spec&lt;/a>) - Propone una interfaz estándar &lt;code>window.nostrdb&lt;/code> para extensiones de navegador que proporcionan almacenamiento local de eventos Nostr. La API incluye métodos para agregar eventos, consultar por ID o filtro, contar coincidencias, y suscribirse a actualizaciones. Las aplicaciones web pueden usar esta interfaz para leer de eventos cacheados localmente sin hacer solicitudes a relays, reduciendo ancho de banda y latencia. La extensión de navegador &lt;a href="https://github.com/hzrd149/nostr-bucket">nostr-bucket&lt;/a> de hzrd149 proporciona una implementación de referencia, inyectando la interfaz en todas las pestañas del navegador. Una &lt;a href="https://github.com/hzrd149/window.nostrdb.js">biblioteca polyfill&lt;/a> compañera implementa la misma API usando IndexedDB para entornos sin la extensión.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/237667820943d1c8bbe7ab7732623ae51b337f177776ece439d4a8be84708eb7">Filtros TRUSTed&lt;/a>&lt;/strong> - Una suite de cinco propuestas relacionadas para curación de contenido descentralizada, construyendo sobre el merged &lt;a href="https://github.com/nostr-protocol/nips/pull/1534">PR de Trusted Assertions #1534&lt;/a> de vitorpamplona. La especificación central introduce eventos kind 17570 para declarar Preferencias de Proveedor de Confianza, permitiendo a usuarios especificar qué servicios confían para filtrado y clasificación de eventos. Los proveedores de confianza publican aserciones (kind 37571), estadísticas (kind 37572), y clasificaciones (kind 37573) a las que los clientes pueden suscribirse. El sistema usa una arquitectura de plugins con etiquetas W/w para especificar tipos de filtros y transformaciones. Esto habilita operaciones computacionalmente costosas como detección de spam, puntuación de reputación, y clasificación de contenido para ejecutarse en infraestructura dedicada mientras los usuarios mantienen control sobre qué proveedores confían. La suite incluye especificaciones separadas para presets de filtros, clasificaciones de usuarios, eventos confiados, y definiciones de plugins.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">NIP-9a: Notificaciones Push&lt;/a>&lt;/strong> - hodlbod propone un estándar para notificaciones push basadas en relay usando eventos de registro kind 30390. Los usuarios crean un registro que contiene filtros para eventos que quieren recibir y una URL de callback webhook. El registro se cifra a la pubkey del relay (de su campo &lt;code>self&lt;/code> NIP-11). Cuando ocurren eventos coincidentes, los relays envían POST al callback con el ID del evento (en texto plano para deduplicación) y el evento mismo (cifrado con NIP-44 al usuario). Esta arquitectura permite a los relays enviar notificaciones push mientras protege el contenido de eventos de servidores push intermediarios. El &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a> de Flotilla implementa este estándar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/SigmaEnterprise/Catallax">Catallax&lt;/a>&lt;/strong> - Propone un protocolo de trabajo por contrato descentralizado con escrow usando eventos kind 33400. El sistema define tres roles: árbitros anuncian disponibilidad y términos, patrones crean tareas financiadas con Bitcoin en escrow, y agentes libres completan trabajo para reclamar pago. Los árbitros resuelven disputas cuando es necesario. El protocolo habilita coordinación de trabajo freelance sin confianza donde los fondos se bloquean hasta que los entregables son aceptados o el arbitraje concluye.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nip-nip-47-nostr-wallet-connect">Análisis Profundo de NIP: NIP-47 (Nostr Wallet Connect)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> define Nostr Wallet Connect (NWC), un protocolo para control remoto de billeteras Lightning usando Nostr como capa de comunicación. Con la adición de soporte de facturas hold esta semana, NWC ahora cubre el rango completo de operaciones Lightning.&lt;/p>
&lt;p>El protocolo funciona a través de un intercambio simple. Una aplicación de billetera publica un evento &amp;ldquo;wallet info&amp;rdquo; (kind 13194) describiendo sus capacidades. Las aplicaciones cliente envían solicitudes cifradas (kind 23194) pidiendo a la billetera realizar operaciones como pagar facturas, crear facturas, o verificar saldos. La billetera responde con resultados cifrados (kind 23195).&lt;/p>
&lt;p>NWC usa cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> entre el cliente y la billetera, con un par de claves dedicado para operaciones de billetera, manteniéndolo separado de la identidad principal de Nostr del usuario. Esta separación significa que comprometer una conexión NWC no expone la identidad Nostr del usuario.&lt;/p>
&lt;p>&lt;strong>Métodos Soportados:&lt;/strong>&lt;/p>
&lt;p>La especificación define métodos para operaciones Lightning centrales: &lt;code>pay_invoice&lt;/code> envía pagos, &lt;code>make_invoice&lt;/code> genera facturas para recibir, &lt;code>lookup_invoice&lt;/code> verifica estado de pago, &lt;code>get_balance&lt;/code> retorna el saldo de la billetera, y &lt;code>list_transactions&lt;/code> proporciona historial de pagos. El recientemente fusionado &lt;code>pay_keysend&lt;/code> habilita pagos sin facturas, y &lt;code>hold_invoice&lt;/code> soporta pagos condicionales.&lt;/p>
&lt;p>&lt;strong>Eventos de Ejemplo:&lt;/strong>&lt;/p>
&lt;p>El servicio de billetera publica un evento info (kind 13194) anunciando sus capacidades:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey del servicio de billetera&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;pay_invoice get_balance make_invoice lookup_invoice list_transactions notifications&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;notifications&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_received payment_sent&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash del evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma del servicio de billetera&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Un cliente envía una solicitud cifrada (kind 23194) para pagar una factura:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey efímera del cliente del secreto URI de conexión&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;cifrado NIP-44: {\&amp;#34;method\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;params\&amp;#34;: {\&amp;#34;invoice\&amp;#34;: \&amp;#34;lnbc50n1...\&amp;#34;}}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey del servicio de billetera&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash del evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma de clave efímera del cliente&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El servicio de billetera responde (kind 23195) con el resultado del pago:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23195&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey del servicio de billetera&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;cifrado NIP-44: {\&amp;#34;result_type\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;result\&amp;#34;: {\&amp;#34;preimage\&amp;#34;: \&amp;#34;...\&amp;#34;}, \&amp;#34;error\&amp;#34;: null}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey efímera del cliente&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;id del evento de solicitud&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash del evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma del servicio de billetera&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La etiqueta &lt;code>e&lt;/code> en la respuesta referencia la solicitud original, permitiendo a los clientes emparejar respuestas con sus solicitudes.&lt;/p>
&lt;p>&lt;strong>Facturas Hold:&lt;/strong>&lt;/p>
&lt;p>El &lt;a href="https://github.com/nostr-protocol/nips/pull/1913">PR #1913&lt;/a> de esta semana añadió soporte de facturas hold, habilitando pagos estilo escrow. A diferencia de facturas estándar donde el receptor reclama el pago inmediatamente liberando la preimagen, las facturas hold permiten al receptor diferir esta decisión. Cuando un pagador envía a una factura hold, los fondos se bloquean a lo largo de la ruta de pago. El receptor entonces elige liquidar (liberar la preimagen y reclamar fondos) o cancelar (rechazar pago, retornando fondos al pagador). Si ninguna acción ocurre, el pago expira y los fondos retornan automáticamente. El PR añade tres métodos NWC: &lt;code>make_hold_invoice&lt;/code>, &lt;code>settle_hold_invoice&lt;/code> y &lt;code>cancel_hold_invoice&lt;/code>, más una notificación &lt;code>hold_invoice_accepted&lt;/code>. Este mecanismo potencia aplicaciones como el escrow de viajes compartidos de Ridestr y resolución de disputas de marketplace.&lt;/p>
&lt;p>&lt;strong>Implementaciones Actuales:&lt;/strong>&lt;/p>
&lt;p>Las billeteras principales soportan NWC: Zeus, Alby, y Primal (desde el &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> de esta semana) todos implementan soporte del lado de billetera. Del lado del cliente, Damus, Amethyst, y la mayoría de clientes Nostr principales pueden conectarse a billeteras NWC para zapping y pagos.&lt;/p>
&lt;p>El protocolo habilita una separación de responsabilidades: los usuarios pueden ejecutar su billetera en un dispositivo mientras interactúan con Nostr desde otro, con relays de Nostr sirviendo como canal de comunicación. Esta arquitectura significa que los clientes móviles no necesitan mantener fondos directamente, mejorando la seguridad al mantener la infraestructura de billetera separada de los clientes sociales.&lt;/p>
&lt;p>&lt;strong>Consideraciones de Seguridad:&lt;/strong>&lt;/p>
&lt;p>Las conexiones NWC deben tratarse como sensibles. Mientras el cifrado protege el contenido de los mensajes, la pubkey de billetera y el secreto de conexión deben guardarse. Las aplicaciones deben permitir a los usuarios revocar conexiones y establecer límites de gasto. El protocolo soporta restricciones de capacidad, para que las billeteras puedan limitar qué operaciones puede realizar una conexión particular.&lt;/p>
&lt;h2 id="análisis-profundo-de-nip-nip-59-gift-wrap">Análisis Profundo de NIP: NIP-59 (Gift Wrap)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> define un protocolo para encapsular cualquier evento Nostr en múltiples capas de cifrado, ocultando la identidad del remitente de relays y observadores. Las propuestas de esta semana para notas solo-amigos (NIP-FR) y notificaciones push (NIP-9a) ambas dependen del gift wrapping, haciéndolo un primitivo de privacidad fundamental que vale la pena entender.&lt;/p>
&lt;p>&lt;strong>Las Tres Capas:&lt;/strong>&lt;/p>
&lt;p>El gift wrapping usa tres estructuras anidadas:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rumor&lt;/strong> (evento sin firmar): El contenido original como evento Nostr sin firma. El rumor no puede enviarse directamente a relays porque los relays rechazan eventos sin firmar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Seal&lt;/strong> (kind 13): El rumor se cifra usando &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> y se coloca en un evento kind 13. El seal SÍ está firmado por la clave del autor real. Esta es la prueba criptográfica de autoría.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gift Wrap&lt;/strong> (kind 1059): El seal se cifra y coloca en un evento kind 1059 firmado por un par de claves aleatorio de un solo uso. El gift wrap incluye una etiqueta &lt;code>p&lt;/code> para enrutamiento al destinatario.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Un Malentendido Común: Negabilidad&lt;/strong>&lt;/p>
&lt;p>La especificación menciona que los rumores sin firmar proporcionan &amp;ldquo;negabilidad&amp;rdquo;, pero esto es engañoso. La capa seal SÍ está firmada por el autor real. Cuando el destinatario descifra el gift wrap y luego el seal, tiene prueba criptográfica de quién envió el mensaje. El destinatario podría incluso construir una prueba de conocimiento cero revelando la identidad del remitente sin exponer su propia clave privada.&lt;/p>
&lt;p>Lo que gift wrap realmente proporciona es &lt;strong>privacidad del remitente frente a observadores&lt;/strong>: los relays y terceros no pueden determinar quién envió el mensaje porque solo ven el gift wrap firmado por una clave aleatoria. Pero el destinatario siempre sabe, y puede probarlo.&lt;/p>
&lt;p>&lt;strong>Eventos de Ejemplo:&lt;/strong>&lt;/p>
&lt;p>Aquí está la estructura completa de tres capas de la especificación (enviando &amp;ldquo;¿Vas a la fiesta esta noche?&amp;rdquo;):&lt;/p>
&lt;p>El rumor (sin firmar, no puede publicarse a relays):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1691518405&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;¿Vas a la fiesta esta noche?&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9dd003c6d3b73b74a85a9ab099469ce251653a7af76f523671ab828acd2a0ef9&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El seal (kind 13, firmado por autor real, contiene rumor cifrado):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AqBCdwoS7/tPK+QGkPCadJTn8FxGkd24iApo3BR9/M0uw6n4RFAFSPAKKMgkzVMo...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703015180&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;28a87d7c074d94a58e9e89bb3e9e4e813e2189f285d797b1c56069d36f59eaa7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;02fc3facf6621196c32912b1ef53bac8f8bfe9db51c0e7102c073103586b0d29...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El gift wrap (kind 1059, firmado por clave efímera aleatoria, contiene seal cifrado):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;18b1a75918f1f2c90c23da616bce317d36e348bcf5f7ba55e75949319210c87c&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AhC3Qj/QsKJFWuf6xroiYip+2yK95qPwJjVvFujhzSguJWb/6TlPpBW0CGFwfuf...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703021488&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;166bf3765ebd1fc55decfe395beff2ea3b2a4e0a8946e7eb578512b555737c99&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5c005f3ccf01950aa8d131203248544fb1e41a0d698e846bd419cec3890903ac&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;35fabdae4634eb630880a1896a886e40fd6ea8a60958e30b89b33a93e6235df7...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Nótese: la &lt;code>pubkey&lt;/code> del seal es el autor real (&lt;code>611df01...&lt;/code>), mientras que la &lt;code>pubkey&lt;/code> del gift wrap es una clave de un solo uso aleatoria (&lt;code>18b1a75...&lt;/code>). Los relays solo ven el gift wrap, por lo que no pueden atribuir el mensaje al autor real.&lt;/p>
&lt;p>&lt;strong>Qué Protege Cada Capa:&lt;/strong>&lt;/p>
&lt;p>El rumor está sin firmar y no puede publicarse a relays directamente. El seal está firmado por el autor real y prueba autoría al destinatario. El gift wrap está firmado por una clave aleatoria de un solo uso, ocultando al autor real de relays y observadores. Solo el destinatario puede descifrar a través de ambas capas para alcanzar el contenido original y verificar la firma del autor en el seal.&lt;/p>
&lt;p>&lt;strong>Aplicaciones Actuales:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17 (Mensajes Directos Privados)&lt;/a> usa gift wrap para DMs cifrados, reemplazando el esquema anterior NIP-04. El propuesto NIP-FR (notas solo para amigos) usa gift wrapping para distribuir ViewKeys a amigos, quienes luego descifran notas cifradas con esas claves. NIP-9a (notificaciones push) cifra cargas de notificación usando principios de gift wrap.&lt;/p>
&lt;p>&lt;strong>Protección de Metadatos:&lt;/strong>&lt;/p>
&lt;p>Las marcas de tiempo deben aleatorizarse para frustrar análisis de timing. Los relays deben requerir AUTH antes de servir eventos kind 1059 y solo servirlos al destinatario marcado. Al enviar a múltiples destinatarios, crear gift wraps separados para cada uno.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Construyendo algo? ¿Tienes noticias que compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía DM NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #7</title><link>https://nostrcompass.org/es/newsletters/2026-01-28-newsletter/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-01-28-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Ridestr trae viajes compartidos descentralizados a Nostr con pagos en &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> y ubicación cifrada compartida. Pomade introduce recuperación basada en correo electrónico para firmantes multisig. Damus lanza &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> para sincronización confiable de mensajes directos. La aplicación de escritorio de Amethyst añade búsqueda, marcadores y zaps. Amber v4.1.1 muestra puntuaciones de confianza de relays. Marmot fusiona MIP-03 y construye una aplicación de chat de referencia en TypeScript. diVine añade autenticación QR mediante &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y soporte para menciones. Nuevas propuestas de NIP abordan la gestión de comunidades, sincronización basada en secuencias y almacenamiento cifrado de archivos. También echamos un vistazo a cinco años de eneros en Nostr, trazando la evolución del protocolo desde un puñado de primeros adoptantes en 2021 hasta el lanzamiento explosivo de Damus en la App Store en 2023 y el ecosistema de clientes madurando en 2025.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal de Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Ridestr trae viajes compartidos descentralizados a Nostr con pagos en &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> y ubicación cifrada compartida. Pomade introduce recuperación basada en correo electrónico para firmantes multisig. Damus lanza &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> para sincronización confiable de mensajes directos. La aplicación de escritorio de Amethyst añade búsqueda, marcadores y zaps. Amber v4.1.1 muestra puntuaciones de confianza de relays. Marmot fusiona MIP-03 y construye una aplicación de chat de referencia en TypeScript. diVine añade autenticación QR mediante &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y soporte para menciones. Nuevas propuestas de NIP abordan la gestión de comunidades, sincronización basada en secuencias y almacenamiento cifrado de archivos. También echamos un vistazo a cinco años de eneros en Nostr, trazando la evolución del protocolo desde un puñado de primeros adoptantes en 2021 hasta el lanzamiento explosivo de Damus en la App Store en 2023 y el ecosistema de clientes madurando en 2025.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="ridestr-trae-viajes-compartidos-descentralizados-a-nostr">Ridestr Trae Viajes Compartidos Descentralizados a Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> está desarrollando una aplicación de viajes compartidos peer-to-peer construida completamente sobre Nostr, permitiendo transacciones directas entre conductores y pasajeros con pagos en Bitcoin y &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a>. El protocolo utiliza tipos de eventos personalizados (30173, 3173-3175, 30180/30181) para coordinar viajes mientras mantiene la privacidad a través de divulgación progresiva de ubicación y cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;p>El sistema funciona mediante un flujo cuidadosamente coreografiado: los conductores transmiten disponibilidad usando ubicaciones codificadas en geohash (~5km de precisión) mediante eventos kind 30173, los pasajeros solicitan viajes con estimaciones de tarifa a través de kind 3173, y los pagos se aseguran usando tokens de depósito HTLC antes de que comience el viaje. La privacidad de ubicación se preserva mediante divulgación progresiva, donde los detalles de recogida solo se revelan cuando los conductores llegan y los destinos se comparten después de la verificación del PIN. Toda la comunicación entre las partes usa cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> para privacidad.&lt;/p>
&lt;p>Ridestr implementa seguridad de pagos a través de depósito HTLC con firmas P2PK. Cuando un pasajero acepta la oferta de un conductor, bloquea tokens &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> con un hash de pago que solo el conductor puede reclamar después de completar el viaje. El protocolo actualmente opera con arquitectura de mint único, requiriendo que pasajeros y conductores usen el mismo mint de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a>. La implementación Android basada en Kotlin del proyecto maneja verificación de pruebas y recuperación de pruebas obsoletas a través de verificaciones de estado NUT-07.&lt;/p>
&lt;p>Ridestr aborda desafíos que la mayoría de las aplicaciones Nostr evitan: coordinación de ubicación en tiempo real, depósito de pagos con resolución de disputas y sistemas de reputación para interacciones en el mundo físico. El proyecto está en beta y demuestra que el modelo de eventos de Nostr puede soportar mercados de servicios peer-to-peer, no solo compartir contenido.&lt;/p>
&lt;h3 id="pomade-lanza-sistema-de-recuperación-alpha-para-firmantes-multisig">Pomade Lanza Sistema de Recuperación Alpha para Firmantes Multisig&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>, desarrollado por hodlbod, se construye sobre el ecosistema existente de &lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a> para proporcionar un servicio de firma de umbral enfocado en la recuperación. Usando firmas &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) a través de la biblioteca @frostr/bifrost, Pomade añade flujos de recuperación basados en correo electrónico sobre la criptografía de umbral. El sistema fragmenta la clave secreta del usuario usando Shamir Secret Sharing, distribuyendo fragmentos a través de múltiples firmantes independientes con un umbral configurable (2-de-3, 3-de-5, etc.).&lt;/p>
&lt;p>El protocolo opera completamente sobre Nostr usando un único tipo de evento (28350) con cargas útiles cifradas con &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>. Al firmar, el cliente solicita firmas parciales de al menos &lt;code>threshold&lt;/code> firmantes, luego las agrega en una firma Schnorr válida. Para cifrado, los firmantes colaboran para derivar secretos compartidos vía ECDH sin que ninguna parte individual conozca la clave completa.&lt;/p>
&lt;p>La recuperación funciona a través de dos métodos de autenticación: basado en contraseña (usando argon2id con la pubkey del firmante como sal) o OTP por correo electrónico. Para prevenir ataques MITM durante la recuperación OTP, cada firmante genera su propio código de verificación con un prefijo proporcionado por el cliente, requiriendo que los usuarios se autentiquen independientemente con cada firmante. El protocolo requiere prueba de trabajo en eventos de registro (20+ bits según &lt;a href="https://nostrcompass.org/es/topics/nip-13/">NIP-13&lt;/a>) para prevenir spam.&lt;/p>
&lt;p>El modelo de confianza es explícito: si &lt;code>threshold&lt;/code> firmantes se confabulan, pueden robar la clave. Los proveedores de correo electrónico tienen confianza total ya que pueden interceptar OTPs. Los usuarios no pueden recuperar independientemente su clave secreta completa; hacerlo requiere cooperación de &lt;code>threshold&lt;/code> firmantes. El protocolo está diseñado para incorporar nuevos usuarios no familiarizados con la gestión de claves, con la recomendación explícita de que los usuarios migren a auto-custodia una vez cómodos. Pomade advierte sobre potencial &amp;ldquo;pérdida de claves, robo, denegación de servicio o fuga de metadatos&amp;rdquo; dado su estado alpha no auditado.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="damus-lanza-negentropy-para-sincronización-confiable-de-dms">Damus Lanza Negentropy para Sincronización Confiable de DMs&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a> lanza la implementación de negentropy &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">que previsualizamos como PR abierto la semana pasada&lt;/a>. &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> añade soporte base de &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> a la capa de red, habilitando reconciliación de conjuntos con relays que soportan el protocolo. Un &lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a> complementario añade sincronización de DMs al deslizar para refrescar que usa negentropy para recuperar mensajes faltantes cuando las suscripciones REQ estándar fallan.&lt;/p>
&lt;p>La implementación sigue un enfoque conservador: la carga normal de DMs continúa sin cambios, con &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> disponible como mecanismo de recuperación cuando los usuarios refrescan manualmente. Las pruebas automatizadas demuestran la corrección generando un DM con una marca de tiempo antigua que las consultas estándar perderían, luego usando sincronización &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> para recuperarlo exitosamente. Aunque el soporte de &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> requiere relays compatibles, la implementación maneja elegantemente entornos de relays mixtos usando el protocolo donde esté disponible.&lt;/p>
&lt;h3 id="amber-v411---puntuaciones-de-confianza-de-relays">Amber v4.1.1 - Puntuaciones de Confianza de Relays&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a> lanza la visualización de puntuaciones de confianza de relays (&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>), implementando los conceptos de evaluación de relays discutidos en &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/#nip-updates">la cobertura de Trusted Relay Assertions de la semana pasada&lt;/a>. Las puntuaciones de confianza ahora aparecen en la página de Relays y para solicitudes de conexión NostrConnect, ayudando a los usuarios a evaluar la confiabilidad de relays antes de autorizar conexiones. El lanzamiento también incluye una interfaz rediseñada de login/eventos/permisos y soporte para el método &lt;code>switch_relays&lt;/code>. Las mejoras de rendimiento almacenan en caché las operaciones de keystore, abordando reportes de tiempos de carga de 20+ segundos en dispositivos antiguos.&lt;/p>
&lt;h3 id="nak-v0182---integración-mcp">nak v0.18.2 - Integración MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> (Nostr Army Knife) de fiatjaf &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a> añade soporte para &lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a> vía &lt;code>nak mcp&lt;/code>, permitiendo a agentes de IA buscar personas en Nostr, publicar notas, mencionar usuarios y leer contenido usando el modelo outbox. El lanzamiento también introduce un &lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">instalador de una línea&lt;/a> (&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>) que descarga binarios pre-compilados, eliminando el requisito de la cadena de herramientas Go para usuarios finales. El modo bunker ahora soporta sockets Unix y &lt;code>switch_relays&lt;/code>.&lt;/p>
&lt;h3 id="zeus-v0122-beta---correcciones-nwc">Zeus v0.12.2 Beta - Correcciones NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a> lanza múltiples correcciones NWC abordando problemas cubiertos en &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">la cobertura de Zeus de la semana pasada&lt;/a>.&lt;/p>
&lt;h2 id="actualizaciones-de-proyectos">Actualizaciones de Proyectos&lt;/h2>
&lt;h3 id="amethyst-desktop---fase-2a-lanzada">Amethyst Desktop - Fase 2A Lanzada&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> lanzó &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">la Fase 2A de su aplicación de escritorio&lt;/a>, añadiendo Búsqueda, Marcadores, Zaps, vistas de Hilos y contenido de formato largo (Lecturas) a la experiencia de escritorio. Un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a> complementario añade retroalimentación transparente de transmisión de eventos para que los usuarios ahora vean el estado por relay en tiempo real mientras sus eventos se propagan a través de la red, facilitando el diagnóstico de problemas de conectividad.&lt;/p>
&lt;h3 id="progreso-de-notedeck-aplicación-de-calendario-y-pulido-de-ux">Progreso de Notedeck: Aplicación de Calendario y Pulido de UX&lt;/h3>
&lt;p>El cliente de escritorio &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> del equipo Damus fusionó el comportamiento de auto-ocultar barra de herramientas (&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>) que responde a la velocidad de desplazamiento para más espacio de pantalla en vistas móviles. Un &lt;a href="https://github.com/damus-io/notedeck/pull/1271">borrador PR #1271&lt;/a> añade una aplicación completa de Calendario &lt;a href="https://nostrcompass.org/es/topics/nip-52/">NIP-52&lt;/a> con vistas de mes/semana/día/agenda, soporte RSVP y comentarios &lt;a href="https://nostrcompass.org/es/topics/nip-22/">NIP-22&lt;/a> en eventos de calendario, actualmente con feature-flag para pruebas.&lt;/p>
&lt;h3 id="jumble-añade-modo-comunidad">Jumble Añade Modo Comunidad&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, el cliente web enfocado en relays, añadió &lt;a href="https://github.com/CodyTseng/jumble/pull/738">modo comunidad&lt;/a> y soporte para &lt;a href="https://github.com/CodyTseng/jumble/pull/736">presets de conjuntos de relays vía variables de entorno&lt;/a>, facilitando el despliegue de instancias temáticas como &lt;a href="https://nostr.moe/">nostr.moe&lt;/a>.&lt;/p>
&lt;h3 id="panel-de-órdenes-de-shopstr">Panel de Órdenes de Shopstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> reemplazó su gestión de órdenes basada en chat con un &lt;a href="https://github.com/shopstr-eng/shopstr/pull/219">Panel de Órdenes&lt;/a> dedicado. La nueva interfaz proporciona una vista centralizada para que los comerciantes rastreen el estado de órdenes, marquen mensajes como leídos y gestionen el cumplimiento sin desplazarse por hilos de chat. La actualización deprecia el caché IndexedDB en favor de APIs de estado de órdenes del lado del servidor y revisa cómo se etiquetan los DMs de órdenes para mejor filtrado.&lt;/p>
&lt;h3 id="formstr-añade-preguntas-en-cuadrícula">Formstr Añade Preguntas en Cuadrícula&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, la aplicación de formularios nativa de Nostr, añadió &lt;a href="https://github.com/abh3po/nostr-forms/pull/419">preguntas en cuadrícula&lt;/a> y &lt;a href="https://github.com/abh3po/nostr-forms/pull/410">reescribió su SDK&lt;/a> con soporte para incrustación. Una [corrección para firmantes no-&lt;a href="https://nostrcompass.org/es/topics/nip-07/">NIP-07&lt;/a>](&lt;a href="https://github.com/abh3po/nostr-forms/pull/418">https://github.com/abh3po/nostr-forms/pull/418&lt;/a>) resolvió problemas para usuarios con bunker o firmantes locales intentando enviar formularios con su identidad.&lt;/p>
&lt;h3 id="nostr-tools-actualiza-dependencias-criptográficas">nostr-tools Actualiza Dependencias Criptográficas&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la biblioteca principal de JavaScript, &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/520">actualizó a @noble/curves v2.0.1&lt;/a>, abordando cambios de API incompatibles en 27 archivos y adoptando las últimas bibliotecas noble auditadas. fiatjaf también añadió soporte &lt;code>switch_relays&lt;/code> a &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a>, permitiendo a clientes bunker cambiar conexiones de relay dinámicamente.&lt;/p>
&lt;h3 id="zeus-trabajando-en-reseñas-de-mints-nip-87">Zeus Trabajando en Reseñas de Mints NIP-87&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> tiene un [PR abierto para reseñas de mints &lt;a href="https://nostrcompass.org/es/topics/nip-87/">NIP-87&lt;/a>](&lt;a href="https://github.com/ZeusLN/zeus/pull/3576%29">https://github.com/ZeusLN/zeus/pull/3576)&lt;/a>, permitiendo a los usuarios descubrir y reseñar mints de &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> filtrados por seguidos de Nostr. Las reseñas incluyen calificaciones con estrellas y pueden enviarse anónimamente o con el nsec del usuario.&lt;/p>
&lt;h3 id="camelus-lanza-soporte-completo-de-dm">Camelus Lanza Soporte Completo de DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, un cliente Android basado en Flutter construido con Dart NDK para rendimiento móvil eficiente en batería, añadió mensajería directa completa con más de 20 commits esta semana. La actualización incluye categorías de chat, fechas de mensajes, interfaz de envío optimista, funcionalidad de nota para uno mismo y manejo adecuado de relays de DM.&lt;/p>
&lt;h3 id="actualizaciones-del-protocolo-marmot">Actualizaciones del Protocolo Marmot&lt;/h3>
&lt;p>La resolución determinista de commits MIP-03 &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/#marmot-protocol-white-noise-encrypted-group-chat-library">que cubrimos como PR abierto la semana pasada&lt;/a> ahora se ha fusionado. &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">MDK PR #152&lt;/a> asegura que todos los chats grupales basados en &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> converjan al mismo estado cuando llegan múltiples commits válidos para la misma época.&lt;/p>
&lt;p>Un &lt;a href="https://github.com/marmot-protocol/marmot/pull/28">PR de especificación #28&lt;/a> complementario añade requisitos de ciclo de vida de init_key abordando vacíos de las auditorías de implementación: el material de clave privada de mensajes Welcome debe ser eliminado de forma segura después del procesamiento (zerización, limpieza de almacenamiento), y los nuevos miembros deben realizar auto-actualizaciones dentro de 24 horas para secreto hacia adelante.&lt;/p>
&lt;p>El SDK de TypeScript (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) está construyendo una aplicación de chat de referencia. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/37">PR #37&lt;/a> añade creación/listado de grupos, gestión de paquetes de claves con flujos de publicar/transmitir/eliminar, e invitaciones por código QR. Un &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR abierto #38&lt;/a> por hzrd149 implementa persistencia de historial de mensajes con paginación. El backend whitenoise-rs fusionó 15 PRs esta semana incluyendo soporte multi-idioma (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/455">PR #455&lt;/a>) y referencias de medios MIP-04 v2 (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/450">PR #450&lt;/a>).&lt;/p>
&lt;h3 id="divine-añade-funciones-de-integración-con-nostr">diVine Añade Funciones de Integración con Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, la aplicación de video de formato corto, continúa la rápida integración con Nostr.&lt;/p>
&lt;p>Los PRs abiertos incluyen autenticación por código QR &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1019">PR #1019&lt;/a>) y mensajería directa cifrada &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/834">PR #834&lt;/a>). La actividad de esta semana se centró en &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1098">soporte de menciones&lt;/a> convirtiendo URIs &lt;code>nostr:&lt;/code> y @menciones a enlaces de perfil clicables, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1097">avatares de respaldo de Classic Viners&lt;/a> usando perfiles de Nostr, y herramientas de edición de video incluyendo &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1056">dibujo&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1053">filtros&lt;/a> y &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1050">stickers&lt;/a>.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1534">Trusted Relay Assertions&lt;/a>&lt;/strong> - La propuesta para estandarizar puntuaciones de confianza de relays &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/#nip-updates">que cubrimos la semana pasada&lt;/a> fue fusionada. La especificación define eventos kind 30385 para aserciones de confianza de relay con puntuación en fiabilidad, calidad y accesibilidad. La discusión previa a la fusión se centró en si las puntuaciones de confianza deben ser &amp;ldquo;globales&amp;rdquo; (calculadas una vez para todos los usuarios) o &amp;ldquo;personalizadas&amp;rdquo; (relativas al grafo social de cada observador). Algoritmos estilo PageRank como &lt;a href="https://trust.nostr.band/">Trust Rank de nostr.band&lt;/a> y &lt;a href="https://github.com/Pretty-Good-Freedom-Tech/graperank-nodejs">GrapeRank&lt;/a> resisten ataques sybil dividiendo cualquier rango pasado a través de cuentas falsas por el tamaño de la granja de bots.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Communikeys&lt;/strong> - Una &lt;a href="https://nostrhub.io">propuesta comprehensiva&lt;/a> para gestión de comunidades que usa npubs existentes como identificadores de comunidad en lugar de enfoques basados en relays. Cualquier npub puede convertirse en comunidad publicando un evento kind 10222; las publicaciones apuntan a comunidades vía eventos kind 30222. El control de acceso usa badges &lt;a href="https://nostrcompass.org/es/topics/nip-58/">NIP-58&lt;/a>, permitiendo gestión de membresía delegada con almacenamiento frío para claves de comunidad.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2196">NIP-CF: Changes Feed&lt;/a>&lt;/strong> - Un borrador proponiendo sincronización de eventos basada en secuencia como alternativa a filtros &lt;code>since&lt;/code> basados en marcas de tiempo. El problema: la sincronización estándar de Nostr usando marcas de tiempo &lt;code>since&lt;/code> puede perder eventos cuando múltiples eventos comparten la misma marca de tiempo con precisión de segundo, los relojes del cliente y relay divergen, o el checkpointing es impreciso. NIP-CF resuelve esto haciendo que los relays asignen números de secuencia monotónicamente crecientes a eventos almacenados, proporcionando ordenamiento total estricto. Los clientes solicitan cambios desde un número de secuencia específico y reciben eventos en orden garantizado, con checkpointing preciso que nunca pierde eventos. La propuesta también soporta modo en vivo/continuo donde las suscripciones permanecen abiertas después de la sincronización inicial para actualizaciones en tiempo real.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1947">NIP-XX: Encrypted File Sync&lt;/a>&lt;/strong> - Un protocolo que define kinds 30800 (archivos cifrados), 30801 (índices de bóveda) y 30802 (documentos compartidos) para sincronizar contenido cifrado entre dispositivos usando relays de Nostr. El protocolo permite que aplicaciones de toma de notas local-first proporcionen sincronización cifrada de extremo a extremo sin servidores centralizados. Los contenidos de archivos, rutas, nombres y estructura de carpetas están todos cifrados usando auto-cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, por lo que los relays almacenan blobs que no pueden leer. Los adjuntos binarios como imágenes usan servidores &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> con cifrado del lado del cliente. Kind 30802 permite compartir documentos entre usuarios cifrando a la clave pública del destinatario.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinco-años-de-eneros-en-nostr">Cinco Años de Eneros en Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/es/newsletters/2025-12-31-newsletter/#december-recap-five-years-of-nostr-decembers">El newsletter del mes pasado&lt;/a> trazó los hitos de diciembre de Nostr desde el primer lanzamiento de cliente de fiatjaf hasta la donación catalítica de Jack Dorsey. Esta retrospectiva registra lo que sucedió cada enero desde 2021 hasta 2025, enfocándose en desarrollos técnicos verificados.&lt;/p>
&lt;h3 id="enero-2021-desarrollo-temprano">Enero 2021: Desarrollo Temprano&lt;/h3>
&lt;p>El tercer mes de Nostr vio desarrollo continuo en Branle, el cliente Vue.js de fiatjaf que se había lanzado en diciembre de 2020. Un pequeño grupo de primeros adoptantes, probablemente menos de 15 personas, se coordinaban a través del grupo de Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a> (creado el 16 de noviembre de 2020), probando el protocolo en uno o dos relays experimentales. El cliente de línea de comandos noscl proporcionaba interacción basada en terminal.&lt;/p>
&lt;p>La base técnica ya estaba establecida: usuarios identificados por claves públicas secp256k1, publicaciones firmadas criptográficamente con firmas Schnorr, y relays sirviendo como almacenamiento simple que no se comunican entre sí. Esta fue criptografía deliberadamente nativa de Bitcoin, una elección de diseño que moldearía patrones de adopción años después.&lt;/p>
&lt;h3 id="enero-2022-descubrimiento-por-desarrolladores">Enero 2022: Descubrimiento por Desarrolladores&lt;/h3>
&lt;p>Enero 2022 abrió con Nostr todavía vibrando por su &lt;a href="https://news.ycombinator.com/item?id=29749061">primera aparición en Hacker News&lt;/a> (31 de diciembre de 2021), que generó 110 puntos y 138 comentarios. Al momento de esa publicación, solo alrededor de siete relays alimentaban toda la red, con comentaristas notando que &amp;ldquo;el spam no es un problema todavía porque nostr es súper nuevo y nadie lo usa aún&amp;rdquo;. Robert C. Martin (&amp;ldquo;Uncle Bob&amp;rdquo;) había respaldado a Nostr como potencialmente &amp;ldquo;la solución final para comunicación social&amp;rdquo;. La discusión continuó en enero, con desarrolladores debatiendo arquitectura de relays versus P2P verdadero, resistencia a la censura versus moderación, y si la simplicidad podría escalar.&lt;/p>
&lt;p>La publicación de HN provocó una ola de nuevas implementaciones. El mismo Uncle Bob comenzó &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un cliente de escritorio Clojure, el 18 de enero. La biblioteca &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> de fiatjaf (creada en enero 2021) y el cliente de línea de comandos &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a> proporcionaban herramientas Go, mientras &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> ofrecía soporte JavaScript. Para diciembre 2022, aproximadamente 800 perfiles tenían biografías. Branle seguía siendo el cliente web principal, recibiendo actualizaciones incluyendo importación de clave privada y soporte multi-relay. Los desafíos técnicos eran evidentes: las claves hexadecimales de 64 caracteres resultaban poco intuitivas, los retrasos de mensajes frustraban a los usuarios, y la comunidad cuestionaba si la arquitectura podría manejar tráfico a escala de Twitter.&lt;/p>
&lt;h3 id="enero-2023-el-despegue">Enero 2023: El Despegue&lt;/h3>
&lt;p>Enero 2023 transformó a Nostr de experimento a movimiento. Damus, el cliente iOS de William Casarin (jb55), luchó contra el proceso de aprobación de la App Store de Apple. Rechazado el 1 de enero, rechazado de nuevo el 26 de enero, fue finalmente &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">aprobado el 31 de enero&lt;/a>. Esa aprobación desencadenó una cascada: Damus alcanzó inmediatamente el #10 en Redes Sociales de EE.UU. Jack Dorsey &lt;a href="https://web.archive.org/web/20240304043638/https://www.theblock.co/post/207448/nostr-based-decentralized-twitter-alternative-damus-goes-live-on-apple-app-store">lo llamó&lt;/a> &amp;ldquo;un hito para los protocolos abiertos&amp;rdquo;.&lt;/p>
&lt;p>Ocho días antes, el 23 de enero, &lt;a href="https://x.com/Snowden/status/1617623779626352640">Edward Snowden anunció&lt;/a> su presencia en Nostr: &amp;ldquo;Una de las cosas geniales de Nostr&amp;hellip; más allá de la resistencia a la censura, es que no estás limitado a 280 caracteres&amp;rdquo;. Su respaldo como denunciante de la NSA tenía peso en círculos conscientes de la privacidad, y los usuarios inmediatamente comenzaron a enviarle zaps de sats vía Lightning.&lt;/p>
&lt;p>Los clientes web competían para incorporar la afluencia. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, creado por kieran en diciembre 2022, emergió como un cliente React repleto de funciones; el 13 de enero, Snort integró registro NIP-05 vía la API de Nostr Plebs, permitiendo a nuevos usuarios reclamar identidades legibles por humanos durante la incorporación. &lt;a href="https://iris.to">Iris&lt;/a>, desarrollado a tiempo completo por Martti Malmi (un colaborador temprano de Bitcoin que recibió la segunda transacción de Bitcoin de Satoshi), ofrecía interfaces web y móvil con identidades NIP-05 gratuitas en iris.to. &lt;a href="https://github.com/monlovesmango/astral">Astral&lt;/a>, construido por monlovesmango con Quasar (Vue.js) como fork de Branle, se enfocaba en gestión de relays con su función de agrupación de relays que permitía a usuarios organizar relays en conjuntos para publicación y filtrado. Las betas de TestFlight para clientes iOS se llenaban en horas, y Amethyst dominaba Android.&lt;/p>
&lt;p>La infraestructura luchaba por mantener el ritmo. Todos los relays eran operados por entusiastas pagando de su bolsillo. Los relays de pago usando micropagos Lightning creaban filtrado natural de spam pero introducían fricción de acceso. &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Damus fue retirado de la App Store de China&lt;/a> solo dos días después de la aprobación, supuestamente por solicitud del principal vigilante de internet de China.&lt;/p>
&lt;h3 id="enero-2024-endurecimiento-del-protocolo">Enero 2024: Endurecimiento del Protocolo&lt;/h3>
&lt;p>Enero 2024 se enfocó en estandarización del protocolo y construcción de comunidad. &lt;a href="https://www.nostrphx.com/events">Nostr PHX&lt;/a> inició el año con un meetup el 5 de enero en Phoenix, reuniendo a cypherpunks locales. Este fue el primero de muchos eventos comunitarios ese año incluyendo BTC Prague (junio), Nostriga en Riga (agosto), y Nostrasia.&lt;/p>
&lt;p>El desarrollo de protocolo más significativo fue &lt;a href="https://github.com/nostr-protocol/nips/pull/716">NIP-59 (Gift Wrap)&lt;/a> siendo fusionado el 29 de enero, proporcionando protección de metadatos para comunicaciones cifradas. Gift Wrap se construye sobre el &lt;a href="https://github.com/paulmillr/nip44">estándar de cifrado NIP-44&lt;/a> (que había sido &lt;a href="https://cure53.de/audit-report_nip44-implementations.pdf">auditado por Cure53&lt;/a> en diciembre 2023) para ocultar la identidad del remitente de los relays. El protocolo envuelve mensajes cifrados dentro de un evento exterior firmado por un par de claves aleatorio de uso único. Los relays solo ven la pubkey desechable, mientras la identidad real del remitente está enterrada en la carga útil cifrada que solo el destinatario puede descifrar. Esto previene que operadores de relays y observadores de red aprendan quién está enviando mensajes a quién. Las marcas de tiempo también pueden aleatorizarse para derrotar análisis de timing.&lt;/p>
&lt;p>El ecosistema se expandió más allá de las redes sociales. &lt;a href="https://plebeian.market">Plebeian Market&lt;/a> se volvió completamente nativo de Nostr con cumplimiento de &lt;a href="https://nostrcompass.org/es/topics/nip-15/">NIP-15&lt;/a>, habilitando carritos de compra entre puestos y un navegador de puestos para descubrir comerciantes. &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> emergió como un mercado sin permisos facilitando comercio en Bitcoin. &lt;a href="https://zap.stream/">Zap.stream&lt;/a>, construido por kieran, trajo streaming en vivo a Nostr con pagos Lightning a 21 sats/minuto. Las herramientas de desarrollo maduraron con &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> proporcionando abstracciones TypeScript y &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ofreciendo bindings Rust. &lt;a href="https://blog.zeusln.com/new-release-zeus-v0-8-1/">Zeus v0.8.1&lt;/a> lanzó con importación de contactos Nostr y LND persistente, sentando las bases para integración de Nostr Wallet Connect en versiones posteriores.&lt;/p>
&lt;p>Sin embargo, la sostenibilidad de infraestructura &lt;a href="https://arxiv.org/abs/2402.05709">seguía siendo desafiante&lt;/a>. Investigación académica de este período encontró que el 95% de los relays luchaban por cubrir costos operativos, con 20% experimentando tiempo de inactividad significativo. La tarifa de admisión para relays de pago promediaba menos de 1,000 sats (~$0.45), insuficiente para sostener operaciones.&lt;/p>
&lt;p>&lt;em>Una nota sobre estafas: El &amp;ldquo;Nostr Assets Protocol&amp;rdquo; y el token &amp;ldquo;$NOSTR&amp;rdquo; asociado que se lanzó alrededor de esta época &lt;a href="https://www.aicoin.com/en/article/377704">fueron públicamente denunciados por fiatjaf&lt;/a> como &amp;ldquo;100% fraudulentos&amp;rdquo; y &amp;ldquo;una estafa de afinidad&amp;rdquo; sin conexión con el protocolo Nostr real.&lt;/em>&lt;/p>
&lt;h3 id="enero-2025-maduración-de-clientes">Enero 2025: Maduración de Clientes&lt;/h3>
&lt;p>Enero 2025 vio desarrollo continuo de clientes en todo el ecosistema. &lt;a href="https://www.nobsbitcoin.com/nostur-v1-17-0/">Nostur 1.17.0&lt;/a> lanzó el 13 de enero con sincronización entre dispositivos para estados de lectura, soporte de inicio de sesión multi-firma &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a>, y rendimiento optimizado de base de datos local. Amethyst continuó su transición al modelo outbox, compilando automáticamente conjuntos de relays basados en listas de seguidos en lugar de requerir configuración manual.&lt;/p>
&lt;p>Los clientes principales comenzaron a alejarse de &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> para mensajes directos, migrando hacia &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> y el propuesto &lt;a href="https://nostrcompass.org/es/topics/nip-104/">NIP-104&lt;/a> para cifrado mejorado y protección de metadatos. El modelo Gossip (comunicación outbox/inbox) ganó adopción mientras el ecosistema convergía hacia patrones de uso de relays más eficientes. Observadores de la industria predijeron que este sería el año en que Nostr transicionaría de protocolo de nicho a reconocimiento mainstream, con una potencial migración de plataforma de alto perfil que podría duplicar la actividad diaria.&lt;/p>
&lt;h3 id="enero-2026-seguridad-e-infraestructura-de-firma">Enero 2026: Seguridad e Infraestructura de Firma&lt;/h3>
&lt;p>Enero 2026 trajo avances significativos en seguridad e infraestructura de firma. &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Primal Android 2.6.18&lt;/a> lanzó firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y soporte de firmante local &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, uniéndose a Amber y Aegis como un hub de firma completo para otras aplicaciones Android. &lt;a href="https://github.com/permissionlesstech/bitchat/pulls">Bitchat completó una auditoría de seguridad de Cure53&lt;/a>, la misma firma que auditó Signal y NIP-44, con más de 17 PRs corrigiendo hallazgos críticos incluyendo limpieza de secretos DH y problemas de seguridad de hilos. Tanto Bitchat como Damus migraron de C Tor a Rust Arti para mejor confiabilidad y seguridad de memoria.&lt;/p>
&lt;p>El trabajo de protocolo continuó con &lt;a href="https://github.com/nostr-protocol/nips/pull/1669">NIP-71&lt;/a> (eventos de video direccionables) fusionándose y un NIP de criptografía post-cuántica abriendo discusión sobre preparar Nostr para el futuro contra ataques cuánticos. El borrador de Trusted Relay Assertions propuso estandarizar puntuaciones de confianza de relays a través de atestaciones firmadas. El &lt;a href="https://github.com/marmot-protocol/mdk">Protocolo Marmot&lt;/a> endureció su mensajería cifrada basada en &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a> con 18 PRs fusionados abordando hallazgos de auditoría.&lt;/p>
&lt;p>Las aplicaciones del mundo real se expandieron con &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> desarrollando viajes compartidos descentralizados usando depósito &lt;a href="https://nostrcompass.org/es/topics/cashu/">Cashu&lt;/a> y cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, y &lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a> añadiendo flujos de recuperación basados en correo electrónico a firma de umbral &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a>. Damus lanzó &lt;a href="https://nostrcompass.org/es/topics/negentropy/">negentropy&lt;/a> para sincronización confiable de DMs, mientras la aplicación de escritorio de Amethyst alcanzó la Fase 2A con búsqueda, marcadores y zaps.&lt;/p>
&lt;h3 id="mirando-hacia-adelante">Mirando Hacia Adelante&lt;/h3>
&lt;p>Seis años de eneros revelan la evolución de Nostr desde desarrollo temprano (2021) a descubrimiento público (2022) a crecimiento explosivo (2023) a endurecimiento del protocolo (2024) a maduración de clientes (2025) a infraestructura de seguridad (2026). El patrón es familiar para cualquiera que haya observado protocolos abiertos crecer: años de construcción silenciosa, una explosión repentina cuando las condiciones se alinean, luego el trabajo más largo de hacer todo confiable. Lo que comenzó con siete relays y un hilo de Hacker News es ahora infraestructura auditada con aplicaciones reales. La pregunta para 2027: cuando alguien solicite un viaje, envíe un mensaje cifrado, o recupere una clave perdida usando Nostr, ¿sabrán siquiera que lo están usando?&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Construyendo algo? ¿Tienes noticias que compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía DM NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #6</title><link>https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-01-21-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal sobre Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Bitchat reemplaza C Tor con la implementación Rust Arti para mejor confiabilidad y rendimiento. nostrdb-rs obtiene consultas de plegado en streaming que permiten operaciones de base de datos sin asignación de memoria. Listr recibe una refactorización mayor con migración a NDK 3 beta y mantenimiento asistido por IA después de un año de inactividad. Zeus envía 17 PRs fusionados enfocados en correcciones de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect para control remoto de Lightning) y mejoras de Cashu, mientras que Primal Android añade flujos de respaldo de billetera y soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a> (dimensiones de medios para proporciones de aspecto adecuadas). Un nuevo borrador de NIP propone &lt;a href="https://nostrcompass.org/es/topics/trusted-relay-assertions/">Aserciones de Confianza de Relays&lt;/a> para puntuación estandarizada de confianza de relays.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal sobre Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Bitchat reemplaza C Tor con la implementación Rust Arti para mejor confiabilidad y rendimiento. nostrdb-rs obtiene consultas de plegado en streaming que permiten operaciones de base de datos sin asignación de memoria. Listr recibe una refactorización mayor con migración a NDK 3 beta y mantenimiento asistido por IA después de un año de inactividad. Zeus envía 17 PRs fusionados enfocados en correcciones de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect para control remoto de Lightning) y mejoras de Cashu, mientras que Primal Android añade flujos de respaldo de billetera y soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a> (dimensiones de medios para proporciones de aspecto adecuadas). Un nuevo borrador de NIP propone &lt;a href="https://nostrcompass.org/es/topics/trusted-relay-assertions/">Aserciones de Confianza de Relays&lt;/a> para puntuación estandarizada de confianza de relays.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="bitchat-migra-a-rust-arti-para-soporte-de-tor">Bitchat Migra a Rust Arti para Soporte de Tor&lt;/h3>
&lt;p>Bitchat ha migrado de C Tor a &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, la implementación en Rust del protocolo Tor. El &lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a> elimina la dependencia de C Tor e integra Arti, aportando garantías de seguridad de memoria y mejor confiabilidad. El cambio elimina intentos de despertar inactivos que causaban reinicios del servicio en primer plano, un problema de larga data con la implementación en C.&lt;/p>
&lt;p>&lt;strong>Lo que esto significa para los usuarios:&lt;/strong> Mensajería cifrada más estable con menos desconexiones, especialmente en dispositivos móviles. La implementación en Rust reduce riesgos de fallas y drenaje de batería por intentos constantes de reconexión.&lt;/p>
&lt;p>Arti es una reescritura completa de Tor en Rust, desarrollada por el Proyecto Tor para proporcionar mejor seguridad a través de la seguridad de memoria y facilitar la integración en aplicaciones. Para Bitchat, las propiedades de seguridad de memoria reducen la superficie de ataque al manejar mensajes cifrados y conexiones de relay. La migración sigue la reciente &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-13-newsletter/#bitchat-completes-cure53-security-audit">auditoría de seguridad Cure53&lt;/a> del equipo (cubierta en Newsletter #5), continuando sus mejoras de seguridad.&lt;/p>
&lt;p>El PR también introduce cobertura de pruebas integral para ChatViewModel y BLEService, elimina código muerto y estabiliza la suite de pruebas. Las mejoras de confiabilidad de la malla Bluetooth Low Energy acompañan los cambios de Tor, abordando fallos en transferencias grandes. Juntos, estos cambios mejoran la resiliencia de Bitchat para escenarios de red en malla fuera de línea donde Tor proporciona conectividad a internet junto con comunicación BLE local.&lt;/p>
&lt;h3 id="listr-revitalizado-con-mantenimiento-potenciado-por-ia">Listr Revitalizado con Mantenimiento Potenciado por IA&lt;/h3>
&lt;p>JeffG anunció una refactorización mayor de &lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>, la aplicación de gestión de listas Nostr disponible en &lt;a href="https://listr.lol">listr.lol&lt;/a>, después de que el proyecto había estado inactivo por más de un año. Usando asistencia de IA, completó una actualización integral incluyendo migración a &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3 beta, actualizaciones a las últimas versiones de Svelte y Vite, y todas las dependencias actualizadas. La refactorización añade soporte de primera clase para seguir packs, implementa paginación para listas que exceden 50 elementos, y corrige numerosos errores que se habían acumulado durante el período inactivo.&lt;/p>
&lt;p>&lt;strong>Lo que esto significa para los usuarios:&lt;/strong> Listr está de vuelta en línea con rendimiento mejorado y nuevas características para gestionar listas de seguimiento, colecciones de contenido y curación de temas. La corrección de paginación hace que las listas grandes sean realmente utilizables.&lt;/p>
&lt;p>JeffG señaló que sin asistencia de IA, este trabajo de mantenimiento probablemente nunca habría ocurrido, evitando que el proyecto fuera abandonado. Listr permite la curación de contenido en Nostr, permitiendo a los usuarios crear, gestionar y compartir listas de perfiles, temas y recursos. La actualización mantiene la aplicación compatible con los estándares Nostr actuales y las expectativas de los clientes a medida que la gestión de listas se vuelve más central para el descubrimiento de contenido en el protocolo.&lt;/p>
&lt;h2 id="actualizaciones-de-nip">Actualizaciones de NIP&lt;/h2>
&lt;p>Cambios recientes en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (Grupos basados en relay) - Aclaración de Clave de Relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - fusionado) aclara que la clave de relay es la URL del relay en sí, no una pubkey. La especificación ahora establece explícitamente &amp;ldquo;La clave de relay es la URL WebSocket del relay (ej., wss://groups.example.com)&amp;rdquo; para evitar confusión. Esto afecta cómo los clientes identifican qué relay hospeda un grupo dado, asegurando que los grupos sean apropiadamente atribuidos a sus relays de hospedaje.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos y Discusiones:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Aserciones de Confianza de Relays&lt;/strong> - Un borrador de NIP propone estandarizar la puntuación de confianza de relays a través de eventos kind 30385 que contienen puntuaciones de confianza (0-100) computadas a partir de métricas de &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> (descubrimiento y monitoreo de relays), reputación del operador e informes de usuarios. La especificación divide la confianza en componentes de confiabilidad (tiempo de actividad, latencia), calidad (TLS, documentación, verificación del operador) y accesibilidad (jurisdicción, barreras, riesgo de vigilancia). La verificación del operador incluye firmas criptográficas vía &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> (documentos de información de relay), registros DNS TXT y archivos .well-known. Los usuarios declaran proveedores de aserciones confiables vía eventos kind 10385, permitiendo a los clientes consultar múltiples proveedores para perspectivas diversas. La propuesta complementa el descubrimiento de &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> con evaluación, ayudando a &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> (firma remota/Nostr Connect) a evaluar la confiabilidad del relay en URIs de conexión.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Criptografía Post-Cuántica&lt;/strong> - El &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (abierto) continúa evolucionando desde que el &lt;a href="https://nostrcompass.org/es/newsletters/2026-01-13-newsletter/#nip-updates">Newsletter #5&lt;/a> introdujo la propuesta de algoritmos resistentes a computación cuántica. La discusión de esta semana se enfocó en detalles de implementación para cripto-agilidad: cómo los clientes manejan firmas duales durante la migración, compatibilidad hacia atrás para clientes antiguos e implicaciones de rendimiento de firmas resistentes a cuántica más grandes. Los contribuidores debatieron si mandar solo ML-DSA-44 o soportar múltiples algoritmos (ML-DSA-44, Falcon-512, Dilithium) para flexibilidad. El consenso se inclina hacia un enfoque por fases: firmas cuánticas opcionales inicialmente, volviéndose obligatorias solo después de soporte amplio del cliente y emergencia de amenaza cuántica real.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nip-nip-11-y-nip-66">Análisis Profundo de NIP: NIP-11 y NIP-66&lt;/h2>
&lt;p>Esta semana examinamos dos NIPs que trabajan juntos para permitir el descubrimiento y evaluación de relays: NIP-11 define cómo los relays se describen a sí mismos, y NIP-66 estandariza cómo medimos el comportamiento del relay. Juntos forman la fundación para sistemas de evaluación de confianza de relays.&lt;/p>
&lt;h3 id="nip-11estopicsnip-11-documento-de-información-de-relay">&lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>: Documento de Información de Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a> define un documento JSON que los relays sirven sobre HTTP para describir sus capacidades, políticas e información del operador. Cuando un cliente se conecta a &lt;code>wss://relay.example.com&lt;/code>, puede obtener &lt;code>https://relay.example.com&lt;/code> (reemplazando &lt;code>wss://&lt;/code> con &lt;code>https://&lt;/code>) para recuperar el documento de información del relay.&lt;/p>
&lt;p>El documento usa negociación de contenido HTTP estándar con el encabezado &lt;code>Accept: application/nostr+json&lt;/code>. Esto permite a los relays servir su sitio web normal a navegadores mientras proporcionan metadatos legibles por máquina a clientes Nostr. La respuesta incluye nombre y versión del software del relay, información de contacto del operador (pubkey, email, contacto alternativo), NIPs soportados y parámetros operacionales como requisitos de pago o restricciones de contenido.&lt;/p>
&lt;p>Importante, los documentos NIP-11 básicos son JSON sin firmar servidos sobre HTTPS, dependiendo únicamente de certificados TLS para autenticidad. Esto significa que cualquiera que controle el servidor web del relay puede modificar el documento, haciendo que las afirmaciones del operador sean inverificables. La propuesta de Aserciones de Confianza de Relays aborda esta brecha introduciendo atestaciones firmadas a través del campo &lt;code>self&lt;/code> pubkey del relay, permitiendo prueba criptográfica de identidad del operador similar a cómo los relays usan eventos firmados para mecanismos de autenticación.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;relay.example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Un relay público de propósito general&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;contact&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;admin@example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;supported_nips&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>, &lt;span style="color:#ae81ff">2&lt;/span>, &lt;span style="color:#ae81ff">4&lt;/span>, &lt;span style="color:#ae81ff">9&lt;/span>, &lt;span style="color:#ae81ff">11&lt;/span>, &lt;span style="color:#ae81ff">12&lt;/span>, &lt;span style="color:#ae81ff">16&lt;/span>, &lt;span style="color:#ae81ff">20&lt;/span>, &lt;span style="color:#ae81ff">22&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;software&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;git+https://github.com/relay/relay.git&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1.2.3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;limitation&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_message_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">16384&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subscriptions&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">20&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_filters&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subid_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_prefix&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_event_tags&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_content_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">8196&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_pow_difficulty&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">0&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;auth_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payment_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payments_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://relay.example.com/payments&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;fees&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;admission&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;subscription&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>, &lt;span style="color:#f92672">&amp;#34;period&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2592000&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;publication&amp;#34;&lt;/span>: []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El objeto &lt;code>limitation&lt;/code> dice a los clientes qué restricciones impone el relay. &lt;code>max_message_length&lt;/code> limita el tamaño del marco WebSocket, &lt;code>max_subscriptions&lt;/code> limita las suscripciones REQ concurrentes por conexión, &lt;code>max_filters&lt;/code> limita filtros por REQ, y &lt;code>max_limit&lt;/code> restringe cuántos eventos puede solicitar un solo filtro. Estos parámetros ayudan a los clientes a adaptar su comportamiento a las capacidades del relay, evitando desconexiones por exceder límites.&lt;/p>
&lt;p>La información de pago aparece en &lt;code>fees&lt;/code> y &lt;code>payments_url&lt;/code>. Los relays pueden cobrar por admisión (acceso único), suscripción (acceso recurrente) o publicación (tarifas por evento). El &lt;code>payments_url&lt;/code> apunta a detalles sobre métodos de pago, típicamente facturas Lightning o mints de ecash. Los relays pagos usan estos campos para comunicar precios antes de que los clientes intenten autenticación.&lt;/p>
&lt;p>El array &lt;code>supported_nips&lt;/code> permite a los clientes descubrir capacidades del relay. Si un relay lista &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>, los clientes saben que pueden enviar consultas de búsqueda de texto completo. Si aparece &lt;a href="https://nostrcompass.org/es/topics/nip-42/">NIP-42&lt;/a>, los clientes deben esperar desafíos de autenticación. Esta publicidad declarativa de capacidades permite mejora progresiva: los clientes pueden usar características avanzadas donde estén disponibles mientras se degradan elegantemente en relays con soporte limitado.&lt;/p>
&lt;p>La información del operador construye responsabilidad. El campo &lt;code>pubkey&lt;/code> identifica al operador del relay en Nostr, permitiendo comunicación directa vía DMs de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> o menciones públicas. El email de &lt;code>contact&lt;/code> proporciona un respaldo fuera del protocolo. Juntos, estos campos ayudan a los usuarios a alcanzar operadores para reportes de abuso, solicitudes de acceso o problemas técnicos.&lt;/p>
&lt;p>Los documentos &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> son auto-reportados: los relays describen lo que afirman soportar, no necesariamente lo que realmente hacen. Aquí es donde NIP-66 se vuelve importante.&lt;/p>
&lt;h3 id="nip-66estopicsnip-66-descubrimiento-de-relay-y-monitoreo-de-actividad">&lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a>: Descubrimiento de Relay y Monitoreo de Actividad&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a> estandariza la publicación de datos de monitoreo de relays en Nostr. Los servicios de monitoreo prueban continuamente relays para disponibilidad, latencia, cumplimiento de protocolo y NIPs soportados. Publican resultados como eventos kind 30166, proporcionando estado del relay en tiempo real independiente del auto-reporte del relay.&lt;/p>
&lt;p>Los monitores verifican disponibilidad del relay conectándose y enviando suscripciones de prueba. Las mediciones de latencia rastrean tiempo de conexión, tiempo de respuesta de suscripción y retraso de propagación de eventos. Las pruebas de cumplimiento de protocolo verifican que el comportamiento del relay coincida con las especificaciones, capturando errores de implementación o desviaciones intencionadas. La verificación de soporte de NIP va más allá de las afirmaciones de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> probando realmente si las características anunciadas funcionan correctamente.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a34b5c7d89e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4e2d0bc6f8e7c3a5b9f1d2e3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30166&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;open&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;143&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;92&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;nips&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;geo&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;US&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;United States&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;New York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;network&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;clearnet&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;auth_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;last_check\&amp;#34;: 1736784000, \&amp;#34;checks\&amp;#34;: 8760}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8b9c4d5e6a7f8b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La etiqueta &lt;code>d&lt;/code> contiene la URL del relay, haciendo de este un evento reemplazable parametrizado. Cada monitor publica un evento por relay, actualizado a medida que cambian las mediciones. Múltiples monitores pueden rastrear el mismo relay, proporcionando redundancia y validación cruzada. Los clientes consultan múltiples pubkeys de monitores para obtener perspectivas diversas sobre la salud del relay.&lt;/p>
&lt;p>Las etiquetas de tiempo de ida y vuelta (rtt) miden latencia para diferentes operaciones. &lt;code>rtt open&lt;/code> rastrea el establecimiento de conexión WebSocket, &lt;code>rtt read&lt;/code> mide tiempo de respuesta de suscripción, y &lt;code>rtt write&lt;/code> prueba velocidad de publicación de eventos. Todos los valores están en milisegundos. Los clientes usan estas métricas para preferir relays de baja latencia para operaciones sensibles al tiempo o despriorizar relays lentos.&lt;/p>
&lt;p>La etiqueta &lt;code>nips&lt;/code> lista soporte de NIP realmente verificado, no solo soporte afirmado. Los monitores prueban cada NIP ejercitando su funcionalidad. Si un relay afirma búsqueda de &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> en su documento &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> pero las consultas de búsqueda fallan, los monitores omitirán NIP-50 de la lista verificada. Esto proporciona verdad fundamental sobre capacidades del relay.&lt;/p>
&lt;p>La información geográfica ayuda a los clientes a seleccionar relays cercanos para mejor latencia y resistencia a censura. La etiqueta &lt;code>geo&lt;/code> contiene código de país, nombre de país y región. La etiqueta &lt;code>network&lt;/code> distingue relays clearnet de servicios ocultos Tor o endpoints I2P. Juntas, estas etiquetas permiten diversidad geográfica: los clientes pueden conectarse a relays en múltiples jurisdicciones para resistir censura regional.&lt;/p>
&lt;p>Los datos del monitor potencian selectores de relay en clientes, sitios web exploradores y la propuesta de Aserciones de Confianza de Relays. Al combinar documentos auto-reportados de &lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a> con datos medidos de &lt;a href="https://nostrcompass.org/es/topics/nip-66/">NIP-66&lt;/a> y aserciones de confianza computadas, el ecosistema se mueve hacia selección informada de relays en lugar de depender de valores predeterminados codificados o recomendaciones de boca en boca.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;h3 id="0xchat-v153---características-mejoradas-de-mensajería">0xchat v1.5.3 - Características Mejoradas de Mensajería&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.3-release">0xchat v1.5.3&lt;/a> trae mejoras significativas al cliente de mensajería Nostr estilo Telegram. El lanzamiento aborda problemas de cumplimiento de &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> (aplicación firmante de Android) que estaban impidiendo la firma apropiada de eventos a través de firmantes externos como Amber. El cumplimiento completo significa que 0xchat ahora delega correctamente operaciones de firma, mejorando la seguridad al mantener las claves privadas aisladas.&lt;/p>
&lt;p>La actualización integra tanto FileDropServer como BlossomServer como opciones de almacenamiento de medios predeterminadas, dando a los usuarios redundancia para cargas de archivos. &lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> proporciona almacenamiento direccionado por contenido donde los archivos son referenciados por sus hashes SHA-256, asegurando integridad y permitiendo deduplicación a través de la red. El guardado automático de borradores para Momentos previene pérdida de datos al componer contenido de formato largo, abordando quejas de usuarios sobre publicaciones perdidas durante cambios de aplicación o interrupciones de conectividad.&lt;/p>
&lt;p>La integración de billetera Cashu recibe pulido con filtrado automático de pruebas que elimina tokens gastados de la vista de billetera. Esto resuelve la confusa UX donde los usuarios veían pruebas inválidas junto con ecash válido, haciendo que los cálculos de saldo fueran poco confiables. El filtrado ocurre del lado del cliente, manteniendo privacidad mientras mejora la experiencia de pago para transacciones peer-to-peer dentro de chats.&lt;/p>
&lt;h3 id="amber-v410-pre-lanzamientos---renovación-de-ui">Amber v4.1.0 Pre-lanzamientos - Renovación de UI&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre1">Amber v4.1.0-pre1&lt;/a> hasta &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre3">v4.1.0-pre3&lt;/a> introducen una interfaz rediseñada para el popular firmante de eventos Android. La pantalla de inicio de sesión ahora muestra claramente qué aplicación está solicitando permisos de firma, abordando confusión del usuario sobre flujos de autorización. La nueva pantalla de eventos proporciona inspección detallada de qué datos las aplicaciones quieren firmar, permitiendo a los usuarios tomar decisiones de seguridad informadas antes de aprobar operaciones.&lt;/p>
&lt;p>La gestión de permisos recibe atención significativa con una interfaz renovada que muestra exactamente qué capacidades se han otorgado a cada aplicación conectada. Los usuarios pueden revocar permisos específicos sin desconectarse completamente, permitiendo control de grano fino sobre delegación de firma. Los contadores de relay refactorizados usando la biblioteca quartz actualizada proporcionan estadísticas en tiempo real sobre rendimiento de eventos y desempeño del relay. Las conexiones bunker de &lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> (Nostr Connect) ahora muestran mensajes de error detallados cuando las conexiones fallan, reemplazando errores de tiempo de espera crípticos con diagnósticos accionables.&lt;/p>
&lt;h2 id="cambios-notables-de-código-y-documentación">Cambios notables de código y documentación&lt;/h2>
&lt;p>&lt;em>Estos son pull requests fusionados y desarrollos en etapa temprana que vale la pena rastrear. Algunos son características experimentales que pueden evolucionar antes del lanzamiento.&lt;/em>&lt;/p>
&lt;h3 id="zeus-billetera-lightning-con-nostr-wallet-connect">Zeus (Billetera Lightning con Nostr Wallet Connect)&lt;/h3>
&lt;p>Zeus fusionó 17 pull requests esta semana, fortaleciendo su posición como implementación líder de &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect. Las correcciones más significativas abordan problemas de consistencia de datos y cumplimiento de protocolo que estaban causando problemas de interoperabilidad con clientes Nostr.&lt;/p>
&lt;p>&lt;strong>Corrección de Historial de Transacciones&lt;/strong> - El &lt;a href="https://github.com/ZeusLN/zeus/pull/3542">PR #3542&lt;/a> resuelve un error crítico donde las listas de transacciones NWC mostraban entradas incorrectas o duplicadas. El problema ocurría cuando Zeus almacenaba en caché datos de transacciones sin manejar apropiadamente actualizaciones de eventos, causando que los usuarios vieran transacciones fantasma o pagos faltantes. La corrección implementa deduplicación apropiada de eventos e invalidación de caché, asegurando que el historial de transacciones refleje con precisión el estado del nodo Lightning.&lt;/p>
&lt;p>&lt;strong>Cumplimiento de Protocolo&lt;/strong> - El &lt;a href="https://github.com/ZeusLN/zeus/pull/3548">PR #3548&lt;/a> aborda respuestas incompletas de &lt;code>getInfo&lt;/code> que rompían compatibilidad con clientes esperando cumplimiento completo de NIP-47. Algunos clientes Nostr fallaban al recibir respuestas parciales sin campos como &lt;code>block_height&lt;/code> o &lt;code>network&lt;/code>. El PR asegura que todos los campos requeridos retornen con valores predeterminados sensatos incluso cuando la implementación Lightning subyacente no los proporciona, mejorando la compatibilidad de Zeus a través del ecosistema.&lt;/p>
&lt;p>&lt;strong>Resiliencia de Conexión&lt;/strong> - El &lt;a href="https://github.com/ZeusLN/zeus/pull/3543">PR #3543&lt;/a> implementa notificaciones de tiempo de espera para conexiones Nostr estancadas. Previamente, los usuarios esperaban indefinidamente cuando las conexiones de relay caían silenciosamente. Ahora Zeus muestra mensajes de tiempo de espera claros después de 30 segundos de inactividad, permitiendo a los usuarios reintentar o cambiar relays. El &lt;a href="https://github.com/ZeusLN/zeus/pull/3541">PR #3541&lt;/a> añade validación de backend para prevenir activación de NWC en implementaciones Lightning incompatibles, capturando errores de configuración antes de que causen fallas en tiempo de ejecución.&lt;/p>
&lt;p>&lt;strong>Condición de Carrera de Cashu&lt;/strong> - El &lt;a href="https://github.com/ZeusLN/zeus/pull/3531">PR #3531&lt;/a> corrige un error de concurrencia en la gestión de tokens Cashu donde operaciones simultáneas de mint podían corromper la base de datos de tokens. La condición de carrera ocurría cuando múltiples hilos actualizaban conteos de tokens sin bloqueo apropiado, ocasionalmente resultando en saldos incorrectos. La corrección añade protección de mutex alrededor de secciones críticas, asegurando actualizaciones atómicas al estado de tokens.&lt;/p>
&lt;h3 id="primal-android-cliente">Primal Android (Cliente)&lt;/h3>
&lt;p>Primal Android envió 12 PRs fusionados con mejoras significativas a seguridad de billetera y manejo de medios. La implementación de respaldo de billetera aborda una de las características más solicitadas, mientras que el soporte de NIP-92 mejora la experiencia visual a través de la aplicación.&lt;/p>
&lt;p>&lt;strong>Sistema de Respaldo de Billetera&lt;/strong> - Una serie de cuatro PRs (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/844">#844&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/845">#845&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/846">#846&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/848">#848&lt;/a>) implementa funcionalidad integral de respaldo de frase semilla. Los usuarios ahora pueden exportar su mnemónico de 12 palabras a través de un flujo seguro que previene capturas de pantalla, muestra estado de respaldo en el tablero de billetera y guía a usuarios existentes a través de la migración. La implementación sigue estándares BIP-39 e incluye validación para prevenir que los usuarios pierdan fondos debido a registro incorrecto de frases.&lt;/p>
&lt;p>&lt;strong>Dimensiones de Medios (NIP-92)&lt;/strong> - El &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/718">PR #718&lt;/a> implementa soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a> para proporciones de aspecto apropiadas de imagen y video. Sin metadatos de dimensiones, los clientes deben descargar imágenes para determinar su tamaño, causando saltos de diseño mientras se carga el contenido. NIP-92 añade etiquetas &lt;code>dim&lt;/code> (como &lt;code>[&amp;quot;dim&amp;quot;, &amp;quot;1920x1080&amp;quot;]&lt;/code>) a eventos de metadatos de archivo, permitiendo a Primal reservar espacio correcto antes de descargar medios. Esto elimina reflujos molestos en galerías de imágenes y mejora el rendimiento percibido.&lt;/p>
&lt;p>&lt;strong>Confiabilidad de Firmante Remoto&lt;/strong> - El &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/841">PR #841&lt;/a> corrige problemas de conexión de &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> donde prefijos &lt;code>wss://&lt;/code> faltantes causaban fallos silenciosos. El PR valida URIs de relay durante la configuración de conexión bunker, añadiendo el prefijo de protocolo automáticamente cuando los usuarios pegan dominios desnudos. El &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/843">PR #843&lt;/a> aborda un error de threading donde condiciones de red pobres causaban que las respuestas se publicaran como notas raíz, rompiendo el flujo de conversación. La corrección asegura que los IDs de eventos padre persistan a través de interrupciones de red.&lt;/p>
&lt;h3 id="protocolo-marmot-white-noise-biblioteca-de-chat-grupal-cifrado">Protocolo Marmot: White Noise (Biblioteca de Chat Grupal Cifrado)&lt;/h3>
&lt;p>White Noise, la biblioteca Rust que potencia los chats grupales cifrados del &lt;a href="https://nostrcompass.org/es/topics/marmot/">Protocolo Marmot&lt;/a>, fusionó seis PRs mejorando experiencia de usuario y seguridad. Los cambios acercan a Marmot a la paridad de características con aplicaciones de mensajería convencionales mientras mantiene su arquitectura que prioriza privacidad.&lt;/p>
&lt;p>&lt;strong>Confirmaciones de Lectura&lt;/strong> - El &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/433">PR #433&lt;/a> y &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/436">#436&lt;/a> implementan rastreo de lectura de mensajes para conversaciones grupales. El sistema almacena posiciones de lectura por usuario por grupo dentro de un solo dispositivo, permitiendo insignias de conteo no leídas. La implementación usa marcas de tiempo monotónicas para rastrear la posición del último mensaje leído para cada conversación. Esta característica fundamental permite indicadores de UI mostrando conteos de mensajes no leídos por conversación.&lt;/p>
&lt;p>&lt;strong>Fijado de Conversaciones&lt;/strong> - El &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/442">PR #442&lt;/a> añade fijado persistente de conversaciones a través de un campo &lt;code>pin_order&lt;/code> en la tabla de unión &lt;code>accounts_groups&lt;/code> que vincula cuentas a grupos. Las conversaciones fijadas mantienen su posición en la parte superior de listas de chat sin importar actividad de mensajes, coincidiendo con expectativas de usuarios de Signal y WhatsApp. La implementación usa ordenamiento entero para permitir fijados ilimitados con clasificación determinística.&lt;/p>
&lt;p>&lt;strong>Resolución Determinística de Commits (MIP-03)&lt;/strong> - El &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">PR #152&lt;/a> (abierto) implementa la Propuesta de Mejora de Marmot 03, resolviendo el problema crítico de condiciones de carrera de commit en chats grupales distribuidos. Cuando múltiples miembros envían cambios de estado de grupo (agregar/remover miembros, cambiar permisos) simultáneamente, los clientes podían divergir en ordenamiento de commits, fragmentando el grupo en estados incompatibles. MIP-03 introduce instantáneas de época y selección determinística de ganador: el commit con la marca de tiempo &lt;code>created_at&lt;/code> más temprana gana, con ID de evento lexicográfico como desempate. Esto permite a todos los clientes converger en el mismo estado a través de rollback y reproducción, manteniendo coherencia del grupo incluso durante particiones de red.&lt;/p>
&lt;p>&lt;strong>Endurecimiento de Seguridad&lt;/strong> - El &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/443">PR #443&lt;/a> previene copiado innecesario de secretos criptográficos usando referencias en &lt;code>resolve_group_image_path&lt;/code>. Esto reduce la ventana para ataques de memoria donde los secretos podrían ser recuperados de asignaciones heap liberadas. El &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/438">PR #438&lt;/a> permite cifrado de base de datos SQLCipher a través de parámetros de keyring, protegiendo historial de mensajes en reposo. La integración de keyring permite almacenamiento seguro de claves en keychains de plataforma en lugar de archivos de configuración.&lt;/p>
&lt;h3 id="nostrdb-rs-biblioteca-de-base-de-datos---pr-abierto">nostrdb-rs (Biblioteca de Base de Datos) - PR Abierto&lt;/h3>
&lt;p>&lt;strong>Implementación de Consultas en Streaming&lt;/strong> - El &lt;a href="https://github.com/damus-io/nostrdb-rs/pull/58">PR #58&lt;/a> (abierto) propone consultas de plegado en streaming para permitir operaciones de base de datos sin asignación de memoria. La implementación añadiría métodos &lt;code>fold&lt;/code>, &lt;code>try_fold&lt;/code>, &lt;code>count&lt;/code>, &lt;code>any&lt;/code>, &lt;code>all&lt;/code> y &lt;code>find_map&lt;/code> que procesarían resultados de base de datos uno a la vez sin materializar conjuntos de resultados enteros en vectores. Este enfoque reduciría el consumo de memoria y permitiría terminación temprana para patrones de consulta comunes.&lt;/p>
&lt;p>La implementación técnica expone callbacks de resultados de consulta de bajo nivel (&lt;code>ndb_query_visit&lt;/code>) como visitantes Rust con estado que mapean variantes &lt;code>ControlFlow&lt;/code> a acciones de visitante C. Una vez fusionado, el código de aplicación se leerá como lógica de iterador mientras se ejecuta cerca de la capa de base de datos. Por ejemplo, contar notas coincidentes transmitiría a través de resultados en lugar de recolectarlos, y &lt;code>find_map&lt;/code> retornaría el primer resultado útil sin procesar filas restantes.&lt;/p>
&lt;p>nostrdb potencia Damus y Notedeck, clientes iOS/macOS y de escritorio respectivamente. Las consultas en streaming permitirían patrones eficientes como paginación, filtrado condicional y verificaciones de existencia. El PR cambia 3 archivos con +756 adiciones y -32 eliminaciones, una refactorización sustancial de la capa de consulta. Los usuarios de aplicaciones basadas en nostrdb-rs verían uso reducido de memoria al navegar líneas de tiempo grandes o buscar a través de bases de datos extensas de eventos.&lt;/p>
&lt;h3 id="nak-herramienta-cli">nak (Herramienta CLI)&lt;/h3>
&lt;p>nak, la herramienta Nostr de línea de comandos de fiatjaf, fusionó seis PRs enfocados en mejoras del sistema de compilación y nueva funcionalidad. El &lt;a href="https://github.com/fiatjaf/nak/pull/91">PR #91&lt;/a> implementa una característica de espejo Blossom, permitiendo a nak servir como espejo para servidores de medios Blossom. &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> es un protocolo de almacenamiento de medios direccionado por contenido que funciona junto con eventos Nostr.&lt;/p>
&lt;p>Los PRs restantes abordan compatibilidad del sistema de compilación a través de plataformas Windows, macOS y Linux, permitiendo soporte de sistema de archivos FUSE para montar eventos Nostr como directorios locales.&lt;/p>
&lt;h3 id="damus-cliente-ios---prs-abiertos">Damus (Cliente iOS) - PRs Abiertos&lt;/h3>
&lt;p>Damus tiene 11 PRs abiertos explorando mejoras arquitectónicas significativas. Aunque estos no se han fusionado todavía, señalan direcciones importantes para el desarrollo del cliente Nostr iOS, particularmente en torno a privacidad, eficiencia de sincronización y optimización de datos móviles.&lt;/p>
&lt;p>&lt;strong>Integración de Tor&lt;/strong> - El &lt;a href="https://github.com/damus-io/damus/pull/3535">PR #3535&lt;/a> incorpora el cliente Tor Arti directamente en Damus, permitiendo conexiones anónimas de relay sin dependencias externas. A diferencia de enfoques de Orbot o Tor Browser, incorporar Arti proporciona integración sin costuras con sandboxing de iOS y límites de ejecución en segundo plano. La implementación Rust aporta seguridad de memoria a la anonimización de red, reduciendo superficie de ataque comparada con C Tor. Los usuarios podrían alternar modo Tor por relay o globalmente, con el cliente manejando gestión de circuitos transparentemente.&lt;/p>
&lt;p>&lt;strong>Protocolo de Sincronización Negentropy&lt;/strong> - El &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> implementa Negentropy, un protocolo de reconciliación de conjuntos que mejora radicalmente la eficiencia de sincronización. En lugar de descargar todos los eventos desde la última conexión, Negentropy intercambia huellas compactas (árboles Merkle) para identificar exactamente qué eventos difieren entre cliente y relay. Para usuarios siguiendo cientos de pubkeys, esto reduce ancho de banda de sincronización de megabytes a kilobytes. La implementación se integra con RelayPool y SubscriptionManager, permitiendo sincronización eficiente automática a través de todos los relays conectados.&lt;/p>
&lt;p>&lt;strong>Modo de Datos Bajo&lt;/strong> - El &lt;a href="https://github.com/damus-io/damus/pull/3549">PR #3549&lt;/a> añade características de conservación de datos celulares respondiendo a retroalimentación de usuarios sobre consumo de ancho de banda. El modo deshabilita carga automática de imágenes, precarga de video y reduce límites de suscripción. Los usuarios en conexiones medidas pueden navegar contenido de texto sin temor a exceder límites de datos. La implementación respeta configuraciones de modo de datos bajo de iOS y proporciona controles granulares para diferentes tipos de medios.&lt;/p>
&lt;p>&lt;strong>Optimizaciones de Base de Datos&lt;/strong> - El &lt;a href="https://github.com/damus-io/damus/pull/3548">PR #3548&lt;/a> reelabora el almacenamiento de instantáneas de nostrdb para consultas más rápidas y uso reducido de disco. La optimización cambia cómo las instantáneas de base de datos persisten a disco, mejorando tanto rendimiento de lectura como amplificación de escritura. Esto aborda quejas de drenaje de batería de usuarios con bases de datos grandes de eventos.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía DM NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #5</title><link>https://nostrcompass.org/es/newsletters/2026-01-13-newsletter/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-01-13-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal sobre Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Bitchat se somete a una auditoría de seguridad profesional realizada por Cure53, la misma firma que auditó Signal y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, con más de 17 PRs ya fusionados que corrigen hallazgos críticos. &lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71&lt;/a> se fusiona, trayendo eventos de video direccionables al protocolo. Un NIP de criptografía post-cuántica abre la discusión sobre cómo preparar Nostr para el futuro contra ataques cuánticos. Amethyst v1.05.0 incluye listas de marcadores, notas de voz y una versión temprana para escritorio, mientras que Nostur v1.25.3 mejora los DMs de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> con reacciones y respuestas. En noticias de bibliotecas, rust-nostr expande el soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> en los backends SQLite y LMDB, y NDK corrige un error en el seguimiento de suscripciones.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal sobre Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Bitchat se somete a una auditoría de seguridad profesional realizada por Cure53, la misma firma que auditó Signal y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>, con más de 17 PRs ya fusionados que corrigen hallazgos críticos. &lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71&lt;/a> se fusiona, trayendo eventos de video direccionables al protocolo. Un NIP de criptografía post-cuántica abre la discusión sobre cómo preparar Nostr para el futuro contra ataques cuánticos. Amethyst v1.05.0 incluye listas de marcadores, notas de voz y una versión temprana para escritorio, mientras que Nostur v1.25.3 mejora los DMs de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> con reacciones y respuestas. En noticias de bibliotecas, rust-nostr expande el soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> en los backends SQLite y LMDB, y NDK corrige un error en el seguimiento de suscripciones.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;h3 id="bitchat-completa-la-auditoría-de-seguridad-de-cure53">Bitchat Completa la Auditoría de Seguridad de Cure53&lt;/h3>
&lt;p>Bitchat, el mensajero cifrado para iOS que combina Nostr con Cashu, se ha sometido a una auditoría de seguridad profesional realizada por Cure53, una de las firmas de seguridad más respetadas de la industria. Cure53 anteriormente auditó Signal, Mullvad VPN, y notablemente la especificación de cifrado &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> que sustenta la mensajería privada moderna de Nostr.&lt;/p>
&lt;p>La auditoría encontró más de 12 problemas de seguridad (BCH-01-002 hasta BCH-01-013). El equipo de Bitchat respondió con más de 17 pull requests. Las correcciones clave incluyen:&lt;/p>
&lt;p>&lt;strong>Limpieza de Secretos DH del Protocolo Noise&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a> corrige seis ubicaciones donde los secretos compartidos de Diffie-Hellman no se estaban poniendo a cero después del acuerdo de claves, restaurando las garantías de forward secrecy. Cuando los secretos persisten en memoria más tiempo del necesario, un volcado de memoria o ataque de arranque en frío podría comprometer comunicaciones pasadas.&lt;/p>
&lt;p>&lt;strong>Verificación de Firmas&lt;/strong> - Múltiples PRs refuerzan las rutas de verificación criptográfica, asegurando que las comprobaciones de autenticidad de mensajes no puedan ser eludidas mediante entradas malformadas.&lt;/p>
&lt;p>&lt;strong>Seguridad de Hilos&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a> añade sincronización de barrera a las colas de confirmación de lectura en NostrTransport, previniendo condiciones de carrera que podrían causar corrupción de datos o fallos bajo altos volúmenes de mensajes.&lt;/p>
&lt;p>&lt;strong>Seguridad de Memoria&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a> optimiza el deduplicador de mensajes para mejor rendimiento con alto volumen de mensajes mientras evita el agotamiento de memoria.&lt;/p>
&lt;p>&lt;strong>Validación de Entrada&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a> refuerza el análisis de cadenas hexadecimales para prevenir fallos por entrada malformada, un vector de ataque común para denegación de servicio.&lt;/p>
&lt;p>Bitchat maneja ecash de Cashu, haciendo esencial la revisión de seguridad profesional. La auditoría sigue a la auditoría del Protocolo &lt;a href="https://nostrcompass.org/es/topics/marmot/">Marmot&lt;/a> del año pasado y la auditoría de NIP-44 que verificó la capa de cifrado.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes en el &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - Eventos de Video Direccionables (&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>) introduce los kinds 34235 (video horizontal) y 34236 (video vertical) como eventos direccionables. Una etiqueta &lt;code>d&lt;/code> requerida proporciona identificadores únicos, para que los metadatos del video puedan actualizarse sin republicar todo el evento. Una etiqueta &lt;code>origin&lt;/code> opcional rastrea las fuentes de importación. Ya implementado en Amethyst y nostrvine.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Criptografía Post-Cuántica&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> propone añadir algoritmos criptográficos resistentes a computación cuántica a Nostr. La especificación introduce ML-DSA-44 y Falcon-512 para firmas digitales, dirigidos a &amp;ldquo;eventos de muy alto valor&amp;rdquo; como aplicaciones y autoridades en lugar de usuarios individuales. Mientras que el cifrado simétrico de &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> (ChaCha20) es resistente a computación cuántica, su intercambio de claves usa secp256k1 ECDH que es vulnerable al algoritmo de Shor. La propuesta incluye ML-KEM para acuerdo de claves para abordar esta brecha. Esta es una propuesta en etapa temprana que abre la discusión sobre agilidad criptográfica para la seguridad a largo plazo de Nostr.&lt;/li>
&lt;li>&lt;strong>BOLT12 para NIP-47&lt;/strong> - Después de 137 comentarios y amplia discusión, la comunidad decidió que las ofertas BOLT12 merecen su propia especificación en lugar de extender &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>. Las ofertas BOLT12 proporcionan mejoras significativas sobre las facturas BOLT11 incluyendo reutilización, mejor privacidad a través de rutas cegadas e información opcional del pagador. El nuevo NIP definirá métodos como &lt;code>make_offer&lt;/code>, &lt;code>pay_offer&lt;/code> y &lt;code>list_offers&lt;/code> para implementaciones de Nostr Wallet Connect.&lt;/li>
&lt;li>&lt;strong>NIP de Pistas de Audio&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a> propone los kinds 32100 para pistas musicales y 32101 para episodios de podcast, dando al contenido de audio el mismo tratamiento de primera clase que NIP-71 proporciona para video. Actualmente, plataformas de audio como Wavlake, Zapstr y Stemstr usan cada una formatos de eventos propietarios, fragmentando el ecosistema. Un estándar común permitiría interoperabilidad para que los usuarios puedan descubrir y reproducir audio desde cualquier cliente compatible.&lt;/li>
&lt;li>&lt;strong>NIP-A3 Destinos de Pago Universales&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a> propone eventos kind 10133 usando URIs &lt;code>payto:&lt;/code> de RFC-8905 para exponer opciones de pago a través de múltiples redes. En lugar de crear kinds de eventos separados para Bitcoin, Lightning, Cashu o rieles de pago tradicionales, esta abstracción permite a los clientes analizar etiquetas estandarizadas e invocar manejadores de pago nativos. El enfoque es a prueba de futuro ya que los nuevos métodos de pago solo necesitan un esquema de URI &lt;code>payto:&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="análisis-profundo-de-nips-nip-51-y-nip-65">Análisis Profundo de NIPs: NIP-51 y NIP-65&lt;/h2>
&lt;p>Esta semana cubrimos dos NIPs que almacenan preferencias del usuario: NIP-51 para organizar contenido, y NIP-65 para organizar conexiones de relay. Ambos usan eventos reemplazables, lo que significa que cada nueva publicación sobrescribe la versión anterior.&lt;/p>
&lt;h3 id="nip-51estopicsnip-51-listas">&lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>: Listas&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a> define múltiples tipos de listas para organizar referencias a eventos, usuarios, hashtags y otro contenido. Amethyst v1.05.0 añade soporte de marcadores, haciendo de este un buen momento para entender cómo funcionan las listas.&lt;/p>
&lt;p>La especificación define varios kinds de listas, cada uno sirviendo un propósito diferente. Kind 10000 es tu lista de silenciados para ocultar usuarios, hilos o palabras. Kind 10001 fija eventos para destacar en tu perfil. Kind 30003 almacena marcadores, que es lo que Amethyst ahora soporta. Otros kinds manejan conjuntos de seguidos (30000), colecciones curadas de artículos (30004), intereses de hashtags (30015) y conjuntos de emojis personalizados (30030).&lt;/p>
&lt;p>Las listas referencian contenido a través de etiquetas. Una lista de marcadores usa etiquetas &lt;code>e&lt;/code> para eventos específicos y etiquetas &lt;code>a&lt;/code> para contenido direccionable como artículos:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30003&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;saved-articles&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023:author-pubkey:article-id&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;encrypted-private-bookmarks&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;908a15e46fb4d8675bab026fc230a0e3542bfade63da02d542fb78b2a8513fcd0092619a2c8c1221e581946e0191f2af505dfdf8657a414dbca329186f009262&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La etiqueta &lt;code>d&lt;/code> proporciona un identificador único, para que puedas mantener múltiples conjuntos de marcadores como &amp;ldquo;saved-articles&amp;rdquo;, &amp;ldquo;read-later&amp;rdquo; o &amp;ldquo;favorites&amp;rdquo; bajo el mismo kind.&lt;/p>
&lt;p>Las listas soportan tanto elementos públicos como privados. Los elementos públicos aparecen en el array de etiquetas, visibles para cualquiera que obtenga el evento. Los elementos privados van en el campo &lt;code>content&lt;/code>, cifrados usando &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a> hacia ti mismo. Esta estructura dual te permite mantener marcadores públicos mientras adjuntas notas privadas, o mantener una lista de silenciados sin revelar a quién has silenciado. Para cifrar hacia ti mismo, usa NIP-44 con tu propia pubkey como destinatario.&lt;/p>
&lt;p>Los kinds de la serie 10000 son reemplazables, lo que significa que los relays mantienen solo un evento por pubkey. Los de la serie 30000 son reemplazables parametrizados, permitiendo un evento por combinación de pubkey y etiqueta &lt;code>d&lt;/code>. En ambos casos, actualizar una lista significa publicar un reemplazo completo; no puedes enviar cambios incrementales. Los clientes deben preservar etiquetas desconocidas al modificar listas para evitar sobrescribir datos añadidos por otras aplicaciones.&lt;/p>
&lt;h3 id="nip-65estopicsnip-65-metadatos-de-lista-de-relays">&lt;a href="https://nostrcompass.org/es/topics/nip-65/">NIP-65&lt;/a>: Metadatos de Lista de Relays&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> define eventos kind 10002 que anuncian qué relays prefiere un usuario para lectura y escritura. Esto ayuda a otros usuarios y clientes a encontrar tu contenido.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bd2217a96b5835b59f9a6a42d8d8a36f8c9b7d4e5f0a1b2c3d4e5f6a7b8c9d0e1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10002&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nos.lol&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.nostr.band&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cada etiqueta &lt;code>r&lt;/code> contiene una URL de relay y un marcador opcional. Un marcador &lt;code>write&lt;/code> designa tu outbox: relays donde publicas tu contenido. Un marcador &lt;code>read&lt;/code> designa tu inbox: relays donde verificas menciones, respuestas y etiquetas. Omitir el marcador indica ambos.&lt;/p>
&lt;p>Cuando Alice quiere encontrar las publicaciones de Bob, su cliente obtiene el kind 10002 de Bob, extrae sus relays de escritura (su outbox) y se suscribe allí. Cuando Alice responde a Bob, su cliente publica en los relays de lectura de él (su inbox) para que vea la mención. Este enrutamiento consciente de relays es el &amp;ldquo;modelo outbox&amp;rdquo;, y distribuye a los usuarios entre muchos relays en lugar de concentrar a todos en unos pocos servidores centrales.&lt;/p>
&lt;p>NIP-65 maneja el enrutamiento de contenido público, pero los mensajes privados usan una lista separada. &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> define kind 10050 para relays de inbox de DM, usando etiquetas &lt;code>relay&lt;/code> en lugar de etiquetas &lt;code>r&lt;/code>. Al enviar a alguien un mensaje privado, los clientes buscan el evento kind 10050 del destinatario y publican el mensaje envuelto cifrado allí. Esta separación mantiene el enrutamiento de DM distinto del enrutamiento de contenido público, y permite a los usuarios especificar diferentes relays para comunicación privada versus pública.&lt;/p>
&lt;p>El modelo outbox mejora la resistencia a la censura ya que ningún relay único necesita almacenar o servir el contenido de todos. Los clientes mantienen conexiones con los relays listados en los eventos NIP-65 de sus usuarios seguidos, conectándose dinámicamente a nuevos relays a medida que descubren nuevas cuentas. NIP-65 complementa las pistas de relay encontradas en otros NIPs. Cuando etiquetas a alguien con &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;pubkey&amp;quot;, &amp;quot;wss://hint.relay&amp;quot;]&lt;/code>, la pista le dice a los clientes dónde buscar esa referencia específica. NIP-65 proporciona la lista autoritativa controlada por el usuario, mientras que las pistas ofrecen atajos incrustados en eventos individuales.&lt;/p>
&lt;p>Para mejores resultados, mantén tu lista de relays actualizada ya que las entradas obsoletas te hacen más difícil de encontrar. La especificación recomienda de dos a cuatro relays por categoría. Listar demasiados relays sobrecarga a cada cliente que quiere obtener tu contenido, ralentizando su experiencia y aumentando la carga de red. Los clientes almacenan en caché los eventos NIP-65 y los refrescan periódicamente para mantenerse actualizados a medida que los usuarios actualizan sus preferencias.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;p>&lt;strong>Amethyst v1.05.0&lt;/strong> - El popular cliente de Android &lt;a href="https://github.com/vitorpamplona/amethyst/releases">lanza una actualización importante&lt;/a> con varias características destacadas. Las listas de marcadores kind 30003 de &lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a> permiten a los usuarios guardar publicaciones para referencia posterior, sincronizándose entre clientes compatibles. Las notas de voz ahora funcionan en DMs y publicaciones regulares con visualización de forma de onda, selección de servidor de medios e indicadores de progreso de carga. Las puntuaciones de &lt;a href="https://nostrcompass.org/es/topics/web-of-trust/">Web of Trust&lt;/a> ahora son visibles en la interfaz, ayudando a los usuarios a entender cómo el algoritmo evalúa las cuentas en relación con su grafo social. La migración de base de datos &lt;a href="https://nostrcompass.org/es/topics/quartz/">Quartz&lt;/a> mejora el rendimiento de consultas como parte del trabajo de Kotlin Multiplatform financiado por OpenSats. Un lanzamiento temprano para escritorio trae Amethyst a Windows, macOS y Linux a través de Compose Multiplatform, compartiendo la misma base de código que la aplicación de Android. Nuevos flujos de incorporación suavizan la experiencia para usuarios nuevos de Nostr.&lt;/p>
&lt;p>&lt;strong>Nostur v1.25.3&lt;/strong> - El cliente de iOS y macOS &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases">se enfoca en la mensajería privada&lt;/a> con mejoras de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>. Las conversaciones de DM ahora soportan reacciones y respuestas, trayendo la interactividad de las publicaciones públicas a los mensajes cifrados. La vista de conversación ha sido rediseñada con mejor threading para que los intercambios de múltiples mensajes sean más fáciles de seguir, y las marcas de tiempo muestran &amp;ldquo;hace tiempo&amp;rdquo; en la lista de DM para escaneo rápido. Los usuarios de escritorio obtienen diseños de múltiples columnas para ver múltiples feeds o conversaciones lado a lado. El soporte de firmante remoto &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> permite a los usuarios mantener sus claves privadas en aplicaciones de firmante dedicadas como Amber o nsec.app. Correcciones adicionales restauran la funcionalidad de DM en iOS 15 e iOS 16, resuelven retrasos en notificaciones y añaden la capacidad de configurar qué relays reciben los DMs publicados.&lt;/p>
&lt;h2 id="cambios-notables-de-código-y-documentación">Cambios notables de código y documentación&lt;/h2>
&lt;p>&lt;em>Estos son pull requests abiertos y trabajo en etapa temprana, perfectos para obtener retroalimentación antes de que se fusionen. Si algo te llama la atención, considera revisar o comentar.&lt;/em>&lt;/p>
&lt;h3 id="citrine-relay-de-android">Citrine (Relay de Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/89">PR #89&lt;/a> corrige una vulnerabilidad de inyección SQL en la aplicación de relay personal de Android. El problema permitía que datos de eventos malformados ejecutaran consultas de base de datos arbitrarias, un fallo serio para cualquier aplicación que almacena y procesa entrada no confiable. La corrección sanitiza correctamente todas las operaciones de base de datos usando consultas parametrizadas. Aún no se ha etiquetado ningún lanzamiento, por lo que los usuarios necesitarán esperar la próxima versión o compilar desde el código fuente. &lt;a href="https://github.com/greenart7c3/Citrine/pull/90">PR #90&lt;/a> optimiza el rendimiento de consultas de ContentProvider con filtrado a nivel de base de datos y paginación, reduciendo la latencia cuando aplicaciones externas como Amethyst acceden a la base de datos de eventos de Citrine a través de la capa de comunicación entre procesos de Android.&lt;/p>
&lt;h3 id="rust-nostr-biblioteca">rust-nostr (Biblioteca)&lt;/h3>
&lt;p>El soporte de &lt;a href="https://nostrcompass.org/es/topics/nip-62/">NIP-62&lt;/a> (Solicitudes de Desvanecimiento) se está expandiendo a través de los backends de base de datos de rust-nostr. &lt;a href="https://github.com/rust-nostr/nostr/pull/1180">PR #1180&lt;/a>, fusionado hace dos semanas, añadió soporte de NIP-62 a SQLite, manejando solicitudes de desvanecimiento &lt;code>ALL_RELAYS&lt;/code> ya que la capa de base de datos no conoce URLs de relay específicas. &lt;a href="https://github.com/rust-nostr/nostr/pull/1210">PR #1210&lt;/a> extiende esto al backend LMDB, asegurando que las solicitudes de desvanecimiento se persistan en disco y sobrevivan a reinicios del relay. Una implementación de IndexedDB para entornos de navegador también está en progreso. Juntos, estos cambios dan a los desarrolladores soporte consistente de NIP-62 a través de SQLite, LMDB y pronto almacenamiento del navegador.&lt;/p>
&lt;h3 id="ndk-nostr-development-kit">NDK (Nostr Development Kit)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/375">PR #375&lt;/a> corrige un error en el sistema de seguimiento de seenEvents. El problema causaba que ciertos patrones de suscripción marcaran incorrectamente eventos como ya vistos, llevando a contenido perdido cuando los usuarios abrían nuevas suscripciones o se reconectaban a relays. La corrección asegura que los eventos se rastreen con precisión a través de los ciclos de vida de las suscripciones, lo cual es particularmente importante para aplicaciones que se suscriben y desuscriben dinámicamente basándose en la navegación del usuario. NDK se actualizó a beta.70 con esta corrección incluida.&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3515">PR #3515&lt;/a> corrige un fallo de inicio que afectaba a usuarios de iOS 17. El problema provenía de un desbordamiento aritmético en &lt;code>NdbUseLock&lt;/code>, una clase de respaldo usada porque los Swift Mutexes no están disponibles en iOS 17. La corrección reemplaza el enfoque de sincronización anterior con &lt;code>NSLock&lt;/code>, que está disponible en iOS 17 y maneja las condiciones de carrera restantes correctamente. Los usuarios de iOS 18+ no estaban afectados ya que tienen acceso a la implementación nativa de Swift Mutex.&lt;/p>
&lt;p>Por separado, un lote de mejoras para artículos de formato largo llegó via &lt;a href="https://github.com/damus-io/damus/pull/3509">PR #3509&lt;/a>. Las barras de progreso de lectura rastrean tu posición a través de los artículos, los tiempos estimados de lectura aparecen en las vistas previas, y el modo sepia con ajustes de altura de línea configurables proporcionan una lectura más cómoda. El modo de enfoque oculta automáticamente la navegación al desplazarse hacia abajo y la restaura al tocar, reduciendo el desorden visual para una lectura sin distracciones. Varias correcciones abordan la visualización de imágenes en contenido markdown y aseguran que los artículos se abran al principio en lugar de a mitad de camino.&lt;/p>
&lt;h3 id="zapstream-transmisión-en-vivo">Zap.stream (Transmisión en Vivo)&lt;/h3>
&lt;p>La integración de chat de YouTube y Kick conecta mensajes de plataformas de streaming externas a Nostr. Los streamers que transmiten simultáneamente a YouTube, Kick y Zap.stream ahora pueden ver todos los mensajes de chat en una vista unificada, con mensajes de cada plataforma apareciendo junto a los comentarios nativos de Nostr. Esto elimina un punto de fricción importante para creadores que quieren usar Nostr para streaming pero no pueden abandonar audiencias en plataformas establecidas. La integración muestra de qué plataforma se originó cada mensaje y maneja el flujo de autenticación para conectar cuentas externas.&lt;/p>
&lt;h3 id="chachi-grupos-nip-29">Chachi (Grupos NIP-29)&lt;/h3>
&lt;p>El cliente de chat grupal &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> envió seis PRs fusionados esta semana. Una actualización de seguridad aborda &lt;a href="https://github.com/purrgrammer/chachi/pull/89">CVE-2026-22029&lt;/a>, una vulnerabilidad XSS en react-router que podría habilitar ataques de redirección abierta; la corrección actualiza a react-router-dom 6.30.0. &lt;a href="https://github.com/purrgrammer/chachi/pull/92">PR #92&lt;/a> añade carga paginada de mensajes para chats grupales, para que las conversaciones largas se carguen incrementalmente en lugar de todas a la vez. &lt;a href="https://github.com/purrgrammer/chachi/pull/91">PR #91&lt;/a> corrige varios errores de NIP-29 incluyendo una condición de carrera que causaba nombres de grupo en blanco en la carga inicial y listas de participantes indefinidas que hacían fallar las vistas de miembros. La cobertura de traducción ahora abarca los 31 idiomas soportados con 1060 claves cada uno.&lt;/p>
&lt;h3 id="0xchat-mensajería">0xchat (Mensajería)&lt;/h3>
&lt;p>El cliente de mensajería estilo Telegram mejoró el cumplimiento de &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> al guardar correctamente los nombres de paquetes de firmantes cuando se usan aplicaciones de firma externas, corrigiendo problemas donde la aplicación perdía el rastro de qué firmante usar después de reinicios. El manejo de respuestas NIP-17 ahora incluye correctamente la etiqueta &lt;code>e&lt;/code> para threading, asegurando que las respuestas aparezcan en el contexto de conversación correcto entre clientes. Las optimizaciones de rendimiento abordan el lag de desplazamiento en listas de mensajes, un punto de dolor común al cargar historiales de chat largos. El autoguardado de borradores previene la pérdida de mensajes si navegas lejos a mitad de composición, y las opciones de almacenamiento de archivos ahora incluyen endpoints predeterminados de FileDropServer y BlossomServer.&lt;/p>
&lt;h3 id="primal-ios">Primal (iOS)&lt;/h3>
&lt;p>El soporte de firmante remoto &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> llega a iOS via &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/184">PR #184&lt;/a>, completando el despliegue multiplataforma que comenzó con Android hace varias semanas. Los usuarios ahora pueden mantener sus claves privadas en servicios bunker dedicados como nsec.app o instancias de nsecBunker autoalojadas, conectándose a través de relays de Nostr para firmar eventos sin exponer las claves a la aplicación cliente. Esta separación mejora la postura de seguridad para usuarios que quieren usar las características de Primal mientras mantienen prácticas de gestión de claves más estrictas. La implementación incluye escaneo de códigos QR para URIs de conexión bunker y maneja el flujo de solicitud/respuesta de NIP-46 sobre mensajes cifrados de relay.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos via DM de NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #4</title><link>https://nostrcompass.org/es/newsletters/2026-01-07-newsletter/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2026-01-07-newsletter/</guid><description>&lt;p>Bienvenidos de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Primal Android implementa firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y soporte para firmante local &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, convirtiéndolo en un centro de firma completo para otras aplicaciones Android. El equipo del &lt;a href="https://nostrcompass.org/es/topics/marmot/">Protocolo Marmot&lt;/a> abordó hallazgos de una auditoría de seguridad con 18 PRs fusionados que fortalecen la mensajería cifrada basada en &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a>. Citrine alcanza la v1.0 y Applesauce lanza la v5.0 en toda su suite de bibliotecas. TENEX desarrolla supervisión de agentes de IA en Nostr, y Jumble agrega agrupación inteligente de relays. Una corrección en la especificación NIP-55 aclara los campos de retorno de &lt;code>nip44_encrypt&lt;/code>, y un PR de &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> propone extensiones de expresiones de consulta para búsqueda avanzada. En nuestra sección de profundización, explicamos &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>: por qué el cifrado heredado tiene fallas de seguridad y cómo el reemplazo moderno las corrige.&lt;/p></description><content:encoded>&lt;p>Bienvenidos de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Primal Android implementa firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y soporte para firmante local &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, convirtiéndolo en un centro de firma completo para otras aplicaciones Android. El equipo del &lt;a href="https://nostrcompass.org/es/topics/marmot/">Protocolo Marmot&lt;/a> abordó hallazgos de una auditoría de seguridad con 18 PRs fusionados que fortalecen la mensajería cifrada basada en &lt;a href="https://nostrcompass.org/es/topics/mls/">MLS&lt;/a>. Citrine alcanza la v1.0 y Applesauce lanza la v5.0 en toda su suite de bibliotecas. TENEX desarrolla supervisión de agentes de IA en Nostr, y Jumble agrega agrupación inteligente de relays. Una corrección en la especificación NIP-55 aclara los campos de retorno de &lt;code>nip44_encrypt&lt;/code>, y un PR de &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a> propone extensiones de expresiones de consulta para búsqueda avanzada. En nuestra sección de profundización, explicamos &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>: por qué el cifrado heredado tiene fallas de seguridad y cómo el reemplazo moderno las corrige.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;p>&lt;strong>Primal Android se Convierte en un Centro de Firma Completo&lt;/strong> - La &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Versión 2.6.18&lt;/a> agrega tanto firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> como firma local &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, convirtiendo a Primal en un firmante completo para otras aplicaciones Nostr. La firma remota vía NIP-46 permite a los usuarios conectarse a servicios bunker a través de relays Nostr, manteniendo las claves completamente fuera de su dispositivo. La firma local vía NIP-55 expone a Primal como un proveedor de contenido de Android, para que aplicaciones como Amethyst o Citrine puedan solicitar firmas sin jamás tocar la clave privada. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">Varios PRs de seguimiento&lt;/a> corrigieron problemas de compatibilidad con el requisito de pubkey hexadecimal de la especificación NIP-55, y mejoraron el análisis de URIs &lt;code>nostrconnect://&lt;/code> mal formadas. La versión también incluye pre-caché de medios para un desplazamiento más fluido, tiempos de carga de hilos mejorados y pre-caché de avatares.&lt;/p>
&lt;p>&lt;strong>Protocolo Marmot Fortalece la Seguridad Tras Auditoría&lt;/strong> - El &lt;a href="https://github.com/marmot-protocol/mdk">Kit de Desarrollo Marmot&lt;/a> (mdk), que implementa mensajería cifrada de extremo a extremo basada en &lt;a href="https://nostrcompass.org/es/topics/nip-104/">NIP-104&lt;/a> MLS, recibió extensas correcciones de seguridad esta semana. Dieciocho pull requests fusionados abordaron hallazgos de la auditoría incluyendo: &lt;a href="https://github.com/marmot-protocol/mdk/pull/97">verificación de hash para imágenes de grupo cifradas&lt;/a> para prevenir ataques de sustitución de blobs a nivel de almacenamiento, &lt;a href="https://github.com/marmot-protocol/mdk/pull/110">paginación para bienvenidas pendientes&lt;/a> para prevenir agotamiento de memoria, &lt;a href="https://github.com/marmot-protocol/mdk/pull/112">filtración de MLS Group ID en mensajes de error&lt;/a>, y &lt;a href="https://github.com/marmot-protocol/mdk/pull/98">aplicación de codificación base64&lt;/a> para paquetes de claves. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/20">especificación de Marmot en sí fue actualizada&lt;/a> con versionado MIP-04 v2 y mejoras de seguridad. PRs activos continúan abordando reutilización de nonce, zerorizacion de secretos y vectores de contaminación de caché.&lt;/p>
&lt;p>&lt;strong>Nostrability Rastrea Soporte de Relay Hints&lt;/strong> - Un nuevo &lt;a href="https://github.com/nostrability/nostrability/issues/270">rastreador de compatibilidad de relay hints&lt;/a> documenta cómo los clientes construyen y consumen relay hints en todo el ecosistema. El rastreador revela que mientras la mayoría de los clientes ahora construyen hints según &lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a>, el consumo varía ampliamente: algunos clientes incluyen hints en eventos salientes pero no usan hints entrantes para obtener datos. Seis clientes obtuvieron el estado &amp;ldquo;Completo&amp;rdquo; por implementación completa. El rastreador es útil para desarrolladores que verifican interoperabilidad y para usuarios que se preguntan por qué algunos clientes encuentran contenido que otros no pueden.&lt;/p>
&lt;p>&lt;strong>Nostria 2.0 Lanza Renovación de Funciones Multiplataforma&lt;/strong> - El cliente &lt;a href="https://nostria.app">Nostria&lt;/a> &lt;a href="#ZgotmplZ">lanzó la versión 2.0&lt;/a> el 30 de diciembre con adiciones significativas en iOS (TestFlight), Android (Play Store), Web y Windows. La versión agrega soporte nativo de música con creación de listas de reproducción, subida de pistas, pagos a artistas basados en zap, y un reproductor estilo WinAmp con ecualizador funcional. El streaming en vivo obtiene integración con Game API mostrando metadatos enriquecidos durante transmisiones de juegos. Una nueva función de Resumen genera digestos de actividad por hora, día o semana como vistas de línea de tiempo comprimidas. La sección Descubrir ofrece listas curadas para encontrar contenido y perfiles. La publicación de medios se simplifica con generación automática de publicaciones de formato corto para descubrimiento entre clientes. Las conexiones de firmante remoto ahora funcionan vía escaneo de código QR sin configuración manual. El descubrimiento de perfiles aborda un punto de dolor común de Nostr: cuando los usuarios se mueven entre relays sin llevar sus metadatos, Nostria localiza su perfil y lo republica en sus relays actuales. Los suscriptores Premium obtienen integración de canal de YouTube, Memos privados, paneles de analíticas y respaldos automáticos de lista de seguidos con opciones de fusión/restauración.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Fusionados:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Corregido el campo de retorno para el método &lt;code>nip44_encrypt&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>). Los firmantes de Android ahora deben devolver la carga útil cifrada en el campo &lt;code>signature&lt;/code> (coincidiendo con &lt;code>nip44_decrypt&lt;/code>) en lugar de un campo separado. Esto alinea la especificación con las implementaciones existentes en Amber y Primal.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs Abiertos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - Extensiones de Expresiones de Consulta (&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>) propone extender la búsqueda NIP-50 con expresiones de consulta estructuradas. El PR agrega operadores como &lt;code>kind:1&lt;/code>, &lt;code>author:npub1...&lt;/code>, y combinaciones booleanas (&lt;code>AND&lt;/code>, &lt;code>OR&lt;/code>, &lt;code>NOT&lt;/code>), permitiendo consultas de búsqueda más precisas más allá de la simple coincidencia de texto. Esto permitiría a los clientes construir interfaces de búsqueda avanzadas mientras mantienen compatibilidad hacia atrás con cadenas de búsqueda básicas.&lt;/li>
&lt;/ul>
&lt;h2 id="profundización-en-nips-nip-04-y-nip-44">Profundización en NIPs: NIP-04 y NIP-44&lt;/h2>
&lt;p>Esta semana cubrimos los estándares de cifrado de Nostr: el heredado NIP-04 que aún encontrarás, y su reemplazo moderno NIP-44 que corrige fallas de seguridad críticas.&lt;/p>
&lt;h3 id="nip-04estopicsnip-04-mensajes-directos-cifrados-heredado">&lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a>: Mensajes Directos Cifrados (Heredado)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a> fue el primer intento de Nostr de mensajería cifrada, usando eventos kind 4. Aunque es simple de implementar, tiene debilidades de seguridad conocidas y está deprecado en favor de NIP-44.&lt;/p>
&lt;p>&lt;strong>Cómo funciona:&lt;/strong> NIP-04 usa ECDH (Diffie-Hellman de Curva Elíptica) para derivar un secreto compartido entre emisor y receptor, luego cifra con AES-256-CBC.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event-id&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sender-pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736200000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;recipient-pubkey&amp;gt;&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;base64-ciphertext?iv=base64-iv&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El flujo de cifrado:&lt;/p>
&lt;ol>
&lt;li>Calcular punto compartido: &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>Derivar clave: &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>Generar IV aleatorio de 16 bytes&lt;/li>
&lt;li>Cifrar: &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>Formatear contenido: &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Problemas de seguridad:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Sin autenticación:&lt;/strong> AES-CBC proporciona confidencialidad pero no integridad. Un atacante que controle un relay podría modificar bits del texto cifrado, causando cambios predecibles en el texto plano (ataques de volteo de bits).&lt;/li>
&lt;li>&lt;strong>IV en claro:&lt;/strong> El vector de inicialización se transmite junto al texto cifrado, y el modo CBC con IVs predecibles habilita ataques de texto plano elegido.&lt;/li>
&lt;li>&lt;strong>Sin validación de relleno:&lt;/strong> Las implementaciones varían en cómo manejan el relleno PKCS#7, potencialmente habilitando ataques de oráculo de relleno.&lt;/li>
&lt;li>&lt;strong>Exposición de metadatos:&lt;/strong> La pubkey del emisor, la pubkey del receptor y la marca de tiempo son todas visibles para los relays.&lt;/li>
&lt;li>&lt;strong>Reutilización de clave:&lt;/strong> El mismo secreto compartido se usa para todos los mensajes entre dos partes, para siempre.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Por qué aún existe:&lt;/strong> Muchos clientes y relays antiguos solo soportan NIP-04. Lo encontrarás al interactuar con sistemas heredados. Firmantes como Amber y aplicaciones como Primal aún implementan &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> para compatibilidad hacia atrás.&lt;/p>
&lt;h3 id="nip-44estopicsnip-44-cifrado-versionado">&lt;a href="https://nostrcompass.org/es/topics/nip-44/">NIP-44&lt;/a>: Cifrado Versionado&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">NIP-44&lt;/a> es el estándar de cifrado moderno, diseñado para corregir las fallas conocidas de NIP-04. Una auditoría de seguridad de Cure53 de las implementaciones de NIP-44 identificó 10 problemas (incluyendo ataques de temporización y preocupaciones de secreto hacia adelante) que fueron abordados antes de que la especificación fuera finalizada. Usa ChaCha20-Poly1305 con derivación de clave apropiada y cifrado autenticado.&lt;/p>
&lt;p>&lt;strong>Mejoras clave sobre NIP-04:&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Aspecto&lt;/th>
 &lt;th style="text-align: left">NIP-04&lt;/th>
 &lt;th style="text-align: left">NIP-44&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Cifrador&lt;/td>
 &lt;td style="text-align: left">AES-256-CBC&lt;/td>
 &lt;td style="text-align: left">XChaCha20-Poly1305&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Autenticación&lt;/td>
 &lt;td style="text-align: left">Ninguna&lt;/td>
 &lt;td style="text-align: left">Poly1305 MAC&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Derivación de clave&lt;/td>
 &lt;td style="text-align: left">SHA256(shared_x)&lt;/td>
 &lt;td style="text-align: left">HKDF con sal&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Nonce&lt;/td>
 &lt;td style="text-align: left">IV de 16 bytes, patrón reutilizado&lt;/td>
 &lt;td style="text-align: left">Nonce aleatorio de 24 bytes&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Relleno&lt;/td>
 &lt;td style="text-align: left">PKCS#7 (filtra longitud)&lt;/td>
 &lt;td style="text-align: left">Rellenado a potencia de 2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Versionado&lt;/td>
 &lt;td style="text-align: left">Ninguno&lt;/td>
 &lt;td style="text-align: left">Prefijo de byte de versión&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Flujo de cifrado:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Clave de conversación:&lt;/strong> Derivar una clave estable para cada par emisor-receptor:&lt;/p>
&lt;pre tabindex="0">&lt;code>shared_x = ECDH(sender_privkey, recipient_pubkey).x
conversation_key = HKDF-SHA256(
 ikm = shared_x,
 salt = &amp;#34;nip44-v2&amp;#34;,
 info = &amp;#34;&amp;#34;
)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Claves de mensaje:&lt;/strong> Para cada mensaje, generar un nonce aleatorio de 32 bytes y derivar claves de cifrado/autenticación:&lt;/p>
&lt;pre tabindex="0">&lt;code>keys = HKDF-SHA256(
 ikm = conversation_key,
 salt = nonce,
 info = &amp;#34;nip44-v2&amp;#34;
)
chacha_key = keys[0:32]
chacha_nonce = keys[32:44]
hmac_key = keys[44:76]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Rellenar texto plano:&lt;/strong> Rellenar a la siguiente potencia de 2 (minimo 32 bytes) para ocultar la longitud del mensaje:&lt;/p>
&lt;pre tabindex="0">&lt;code>padded = [length_u16_be] + [plaintext] + [zeros to next power of 2]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cifrar y autenticar:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>ciphertext = XChaCha20(chacha_key, chacha_nonce, padded)
mac = HMAC-SHA256(hmac_key, nonce + ciphertext)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Formatear carga util:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>payload = [version=0x02] + [nonce] + [ciphertext] + [mac]
content = base64(payload)
&lt;/code>&lt;/pre>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Byte de versión:&lt;/strong> El primer byte (&lt;code>0x02&lt;/code>) indica la versión de cifrado. Esto permite actualizaciones futuras sin romper mensajes existentes. La versión &lt;code>0x01&lt;/code> fue un borrador anterior que nunca fue ampliamente desplegado.&lt;/p>
&lt;p>&lt;strong>Descifrado:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Decodificar base64, verificar que el byte de versión sea &lt;code>0x02&lt;/code>&lt;/li>
&lt;li>Extraer nonce (bytes 1-32), texto cifrado y MAC (últimos 32 bytes)&lt;/li>
&lt;li>Derivar clave de conversación usando la clave privada del receptor y la clave pública del emisor&lt;/li>
&lt;li>Derivar claves de mensaje de la clave de conversación y el nonce&lt;/li>
&lt;li>Verificar MAC antes de descifrar (rechazar si es inválido)&lt;/li>
&lt;li>Descifrar texto cifrado, extraer prefijo de longitud, devolver texto plano sin relleno&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Propiedades de seguridad:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cifrado autenticado:&lt;/strong> El MAC Poly1305 asegura que cualquier manipulación se detecte antes del descifrado&lt;/li>
&lt;li>&lt;strong>Secreto hacia adelante (parcial):&lt;/strong> Cada mensaje usa un nonce único, por lo que comprometer un mensaje no revela otros. Sin embargo, comprometer una clave privada aún revela todos los mensajes pasados (sin ratcheting).&lt;/li>
&lt;li>&lt;strong>Ocultación de longitud:&lt;/strong> El relleno a potencia de 2 oscurece la longitud exacta del mensaje&lt;/li>
&lt;li>&lt;strong>Resistencia a ataques de temporización:&lt;/strong> Comparación en tiempo constante para verificación de MAC&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Uso en la práctica:&lt;/strong> NIP-44 es la capa de cifrado para:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> mensajes directos privados (dentro de gift wrap)&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> comunicación de firmante remoto&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> cifrado de seal&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/es/topics/nip-104/">Protocolo Marmot&lt;/a> mensajes de grupo, donde NIP-44 envuelve contenido cifrado con MLS usando una clave derivada del secreto exportador de MLS&lt;/li>
&lt;li>Cualquier aplicación que necesite cifrado seguro punto a punto&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Guía de migración:&lt;/strong> Las nuevas aplicaciones deben usar NIP-44 exclusivamente. Para compatibilidad hacia atrás, verifica si el cliente de un contacto soporta NIP-44 (vía metadatos de aplicación &lt;a href="https://nostrcompass.org/es/topics/nip-89/">NIP-89&lt;/a> o soporte de relay) antes de recurrir a NIP-04. Al recibir mensajes, intenta primero el descifrado NIP-44, luego recurre a NIP-04 para contenido heredado.&lt;/p>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;p>&lt;strong>Primal Android v2.6.18&lt;/strong> - El &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">lanzamiento completo&lt;/a> agrega firma remota &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> y firma local &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, convirtiendo a Primal en un centro de firma para otras aplicaciones Android. Las mejoras de rendimiento incluyen pre-caché de medios, pre-caché de avatares y carga de hilos más rápida. Las correcciones de errores abordan auto-menciones en biografías, fallos en la galería de medios y respaldos de títulos de stream. En iOS, Primal usa reproducción de audio en segundo plano para mantener la aplicación activa y recibir solicitudes de firma NIP-46; los usuarios pueden cambiar el sonido o silenciarlo completamente en configuración.&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.6&lt;/strong> - La plataforma de trading P2P de Bitcoin &lt;a href="https://nostrcompass.org/es/topics/nip-69/">NIP-69&lt;/a> en su &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.6">último lanzamiento&lt;/a> completa la implementación del fondo de desarrollo con eventos de auditoría de Fase 4. Los pagos de tarifas de desarrollo ahora se rastrean vía eventos Nostr kind 38383 publicados después de cada pago exitoso, permitiendo verificación y analíticas de terceros. Los cálculos de montos fueron corregidos para mensajes de comprador/vendedor, y la lógica de premium fue alineada con la implementación de referencia lnp2pbot.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.5&lt;/strong> - El firmante multiplataforma &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.5">agrega modo oscuro&lt;/a>, visualización mejorada de iconos de aplicación y diseños de UI más limpios. Las correcciones de errores abordan conflictos con iCloud Private Relay en iOS y problemas de análisis de eventos. El lanzamiento también mejora cómo el JSON de eventos se pasa a la función de firma en Rust.&lt;/p>
&lt;p>&lt;strong>Citrine v1.0.0&lt;/strong> - La aplicación de relay para Android &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v1.0.0">alcanza la 1.0&lt;/a>. Citrine te permite ejecutar un relay Nostr personal directamente en tu dispositivo Android, útil para caché local, respaldo o como compañero de NIP-55. Esta versión agrega un manejador de reportes de fallos, mejora la eficiencia de consultas de base de datos y actualiza traducciones vía Crowdin.&lt;/p>
&lt;p>&lt;strong>Applesauce v5.0.0&lt;/strong> - La suite de bibliotecas TypeScript de hzrd149 &lt;a href="https://github.com/hzrd149/applesauce/releases">lanza una versión mayor&lt;/a> con cambios que rompen compatibilidad enfocados en corrección y simplicidad. El paquete core ahora &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.0.0">verifica firmas de eventos por defecto&lt;/a> y renombra métodos de coordenadas para usar terminología de &amp;ldquo;address&amp;rdquo; más clara (&lt;code>parseCoordinate&lt;/code> -&amp;gt; &lt;code>parseReplaceableAddress&lt;/code>). El paquete relay &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-relay%405.0.0">reduce los reintentos por defecto de 10 a 3&lt;/a> e ignora relays inalcanzables por defecto, además agrega &lt;code>createUnifiedEventLoader&lt;/code> para obtención de eventos más simple. El paquete wallet obtiene &lt;a href="https://nostrcompass.org/es/topics/nip-87/">descubrimiento de mints Cashu NIP-87&lt;/a> &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet%405.0.0">&lt;/a>. Las dependencias directas de &lt;code>nostr-tools&lt;/code> fueron removidas de los paquetes, reduciendo el tamaño del bundle y conflictos de versiones.&lt;/p>
&lt;h2 id="cambios-notables-de-código-y-documentación">Cambios notables de código y documentación&lt;/h2>
&lt;p>&lt;em>Estos son pull requests abiertos y trabajo en etapa temprana, perfectos para obtener retroalimentación antes de que se fusionen. Si algo te llama la atención, considera revisar o comentar!&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Una serie de PRs mejoran la experiencia de artículos de formato largo. &lt;a href="https://github.com/damus-io/damus/pull/3496">Mejoras de UX de lectura&lt;/a> agregan una barra de progreso, tiempo estimado de lectura, modo sepia, altura de línea ajustable y modo de enfoque que oculta la navegación mientras se desplaza. &lt;a href="https://github.com/damus-io/damus/pull/3489">Correcciones de imágenes&lt;/a> aseguran que las imágenes en contenido markdown se muestren con proporciones adecuadas al preprocesar imágenes independientes como elementos a nivel de bloque. &lt;a href="https://github.com/damus-io/damus/pull/3497">Tarjetas de vista previa de formato largo&lt;/a> reemplazan texto inline &lt;code>@naddr1...&lt;/code> con tarjetas de vista previa enriquecidas mostrando título y metadatos del artículo. Una nueva &lt;a href="https://github.com/damus-io/damus/pull/3508">suite de pruebas de integración de relay&lt;/a> agrega 137 pruebas relacionadas con red incluyendo verificación del protocolo &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a> y comportamiento bajo condiciones de red degradadas (simulación 3G).&lt;/p>
&lt;h3 id="bitchat-mensajería-cifrada">Bitchat (Mensajería Cifrada)&lt;/h3>
&lt;p>Endurecimiento de seguridad en el mensajero iOS Nostr+Cashu. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">Limpieza de secreto DH del protocolo Noise&lt;/a> corrige seis ubicaciones donde los secretos compartidos no se estaban poniendo a cero después del acuerdo de claves Diffie-Hellman, restaurando las garantías de secreto hacia adelante. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">Seguridad de hilos para colas de recibos de lectura&lt;/a> agrega sincronización de barrera para prevenir condiciones de carrera en NostrTransport. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">Optimización del deduplicador de mensajes&lt;/a> mejora el rendimiento con altos volúmenes de mensajes, y &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">endurecimiento del análisis de cadenas hexadecimales&lt;/a> previene fallos por entrada malformada.&lt;/p>
&lt;h3 id="frostr-firma-de-umbral">Frostr (Firma de Umbral)&lt;/h3>
&lt;p>El protocolo de firma de umbral basado en &lt;a href="https://nostrcompass.org/es/topics/frost/">FROST&lt;/a> &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/pull/62">agregó visualización de código QR&lt;/a> para credenciales de grupo y credenciales de participación durante la incorporación y en la interfaz del firmante. Esto permite una configuración más fácil al distribuir participaciones de clave entre múltiples dispositivos, permitiendo a los usuarios escanear credenciales en lugar de copiar manualmente cadenas largas.&lt;/p>
&lt;h3 id="marmot-mdk-biblioteca">Marmot mdk (Biblioteca)&lt;/h3>
&lt;p>Más allá de las correcciones de seguridad mencionadas anteriormente, PRs activos abordan hallazgos restantes de la auditoría: &lt;a href="https://github.com/marmot-protocol/mdk/pull/109">tipo Secret&lt;T> para zerorizacion&lt;/a> introduce un tipo envolvente que automáticamente pone a cero datos sensibles al descartarse, &lt;a href="https://github.com/marmot-protocol/mdk/pull/111">paginación de consultas de mensajes&lt;/a> previene agotamiento de memoria al cargar historial de chat, y &lt;a href="https://github.com/marmot-protocol/mdk/pull/102">almacenamiento cifrado&lt;/a> agrega cifrado en reposo para la base de datos SQLite que almacena el estado del grupo y mensajes.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Una semana ocupada de correcciones de estabilidad en el cliente Android. &lt;a href="https://github.com/vitorpamplona/amethyst/commit/2c42796">Análisis JSON tolerante&lt;/a> previene fallos de eventos malformados al hacer que Kotlin Serialization sea más permisivo. La validación de eventos ahora &lt;a href="https://github.com/vitorpamplona/amethyst/commit/40f9622">verifica el tamaño del campo kind&lt;/a> antes de procesar para evitar excepciones de valores sobredimensionados. La UI de puntuación de confianza obtuvo un icono más pequeño para reducir la interferencia visual, y &lt;a href="https://github.com/vitorpamplona/amethyst/commit/69c53ac">registro de errores mejorado&lt;/a> ayuda a diagnosticar problemas de conexión de relay. Las actualizaciones de traducción llegaron vía Crowdin, y varias advertencias de SonarQube fueron abordadas.&lt;/p>
&lt;h3 id="tenex-agentes-de-ia">TENEX (Agentes de IA)&lt;/h3>
&lt;p>El framework de agentes de IA nativo de Nostr vio 81 commits esta semana construyendo capacidades autónomas. El nuevo &lt;a href="https://github.com/tenex-chat/tenex/pull/48">sistema de supervisión de agentes&lt;/a> implementa heurísticas de comportamiento para monitorear acciones de agentes e intervenir cuando sea necesario. &lt;a href="https://github.com/tenex-chat/tenex/commit/b244c10">Transparencia de delegación&lt;/a> agrega registro de intervención de usuario a las transcripciones de delegación, para que los usuarios puedan auditar lo que los agentes hicieron en su nombre. El &lt;a href="https://github.com/tenex-chat/tenex/pull/47">registro de proveedores LLM&lt;/a> fue modularizado para integración más fácil de diferentes backends de IA. El soporte de conversación entre proyectos permite que los agentes mantengan contexto a través de múltiples proyectos basados en Nostr.&lt;/p>
&lt;h3 id="jumble-cliente-web">Jumble (Cliente Web)&lt;/h3>
&lt;p>El cliente web enfocado en relays agregó varias mejoras de experiencia de usuario. &lt;a href="https://github.com/CodyTseng/jumble/commit/695f2fe">Pool de relay inteligente&lt;/a> gestiona conexiones inteligentemente basándose en patrones de uso. &lt;a href="https://github.com/CodyTseng/jumble/commit/917fcd9">Alternador de feed en vivo&lt;/a> permite a los usuarios cambiar entre streaming en tiempo real y actualización manual. &lt;a href="https://github.com/CodyTseng/jumble/commit/d1b3a8c">Mostrar automáticamente nuevas notas&lt;/a> en la parte superior muestra contenido fresco sin requerir recarga de página. &lt;a href="https://github.com/CodyTseng/jumble/commit/fd9f41c">Caché persistente&lt;/a> para el feed de seguidos y notificaciones mejora los tiempos de carga en visitas de retorno. Los usuarios ahora pueden &lt;a href="https://github.com/CodyTseng/jumble/commit/53a67d8">cambiar relays por defecto&lt;/a> a través de configuración.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Estás construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía DM NIP-17&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #3</title><link>https://nostrcompass.org/es/newsletters/2025-12-31-newsletter/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2025-12-31-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Al cerrar 2025, miramos hacia atrás a cinco años de hitos de diciembre en la evolución de Nostr. Desde el primer lanzamiento del cliente de fiatjaf en diciembre de 2020, pasando por la donación fundamental de Jack Dorsey de 14 BTC en diciembre de 2022, hasta la proliferación de NIP-55 signer este mes y la aceleración de caché de 162x de NDK, diciembre ha marcado consistentemente puntos de inflexión para el protocolo. Este número especial traza la historia técnica a través de cada diciembre, documentando el crecimiento del protocolo desde dos relays experimentales hasta más de 2,500 nodos en 50 países. Además: El módulo de escritorio de Amethyst toma forma a través de Quartz, Notedeck obtiene mensajería, Citrine aloja aplicaciones web, y NIP-54 corrige la internacionalización para scripts no latinos.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Al cerrar 2025, miramos hacia atrás a cinco años de hitos de diciembre en la evolución de Nostr. Desde el primer lanzamiento del cliente de fiatjaf en diciembre de 2020, pasando por la donación fundamental de Jack Dorsey de 14 BTC en diciembre de 2022, hasta la proliferación de NIP-55 signer este mes y la aceleración de caché de 162x de NDK, diciembre ha marcado consistentemente puntos de inflexión para el protocolo. Este número especial traza la historia técnica a través de cada diciembre, documentando el crecimiento del protocolo desde dos relays experimentales hasta más de 2,500 nodos en 50 países. Además: El módulo de escritorio de Amethyst toma forma a través de Quartz, Notedeck obtiene mensajería, Citrine aloja aplicaciones web, y NIP-54 corrige la internacionalización para scripts no latinos.&lt;/p>
&lt;h2 id="resumen-de-diciembre-cinco-años-de-diciembres-de-nostr">Resumen de Diciembre: Cinco Años de Diciembres de Nostr&lt;/h2>
&lt;p>Nostr cumple cinco años este año. fiatjaf inició el protocolo el 7 de noviembre de 2020, y cada diciembre desde entonces ha marcado una fase distinta en su evolución: desde prueba de concepto hasta movimiento global hasta ecosistema de producción. Este es un retrospectivo técnico de diciembre de 2020 hasta diciembre de 2025, los años formativos que establecieron la base de Nostr y catalizaron su momento de explosión.&lt;/p>
&lt;h3 id="diciembre-2020-génesis">Diciembre 2020: Génesis&lt;/h3>
&lt;p>El primer mes completo de existencia de Nostr vio a fiatjaf lanzar &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, el primer cliente del protocolo, construido con Quasar (Vue.js) y absurd-sql para almacenamiento local. fiatjaf ya había establecido la arquitectura central: usuarios identificados por claves públicas secp256k1, todas las publicaciones firmadas criptográficamente, relays sirviendo como almacenamiento simple que no se comunican entre sí. Uno o dos relays experimentales servían a un puñado de primeros adoptantes coordinándose en el grupo de Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>, que se había lanzado el 16 de noviembre. La &lt;a href="https://fiatjaf.com/nostr.html">documentación original&lt;/a> describía &amp;ldquo;el protocolo abierto más simple que es capaz de crear una red social global resistente a la censura,&amp;rdquo; una premisa que tomaría dos años más en probarse.&lt;/p>
&lt;h3 id="diciembre-2021-desarrollo-temprano">Diciembre 2021: Desarrollo Temprano&lt;/h3>
&lt;p>El 31 de diciembre de 2021, Nostr llegó a la &lt;a href="https://news.ycombinator.com/item?id=29749061">portada de Hacker News&lt;/a> con 110 puntos y 138 comentarios, enviado por Cameri. Esto marcó la primera exposición significativa del protocolo a la comunidad de desarrolladores más amplia. La red funcionaba con aproximadamente siete relays con menos de 1,000 usuarios. Branle recibió actualizaciones incluyendo importación de clave privada (31 de diciembre) y soporte multi-relay. Un cliente de línea de comandos, noscl, proporcionaba interacción basada en terminal. Las especificaciones del protocolo existían en la documentación de fiatjaf, aunque el &lt;a href="https://github.com/nostr-protocol/nips">repositorio formal de NIPs&lt;/a> no se crearía hasta mayo de 2022. El protocolo era, como lo describió fiatjaf, &amp;ldquo;un trabajo en progreso.&amp;rdquo;&lt;/p>
&lt;h3 id="diciembre-2022-el-punto-de-inflexión">Diciembre 2022: El Punto de Inflexión&lt;/h3>
&lt;p>Diciembre de 2022 transformó a Nostr de un experimento de nicho en un movimiento mainstream. El catalizador llegó el 15 de diciembre, cuando Jack Dorsey donó &lt;a href="https://www.coindesk.com/tech/2022/12/15/jack-dorsey-gives-decentralized-social-network-nostr-14-btc-in-funding">14.17171699 BTC&lt;/a> (~$245,000-$250,000) a fiatjaf después de descubrir el protocolo y declarar que era &amp;ldquo;100 por ciento lo que queríamos de Bluesky, pero no fue desarrollado por una empresa.&amp;rdquo; El 16 de diciembre, fiatjaf anunció la división de fondos con el desarrollador de Damus William Casarin (jb55), y Dorsey verificó su cuenta de Nostr (npub: &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>). El financiamiento legitimó el proyecto de la noche a la mañana.&lt;/p>
&lt;p>La misma semana, el caos de Twitter aceleró la adopción. Del 14 al 15 de diciembre vio suspensiones de periodistas prominentes del New York Times, CNN y Washington Post. El 18 de diciembre, Twitter &lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">anunció prohibiciones&lt;/a> a cuentas que promocionaban Nostr, Mastodon y otras plataformas. La política se revirtió al día siguiente después de la reacción negativa. El éxodo llevó a los usuarios a explorar alternativas.&lt;/p>
&lt;p>El desarrollo del protocolo se aceleró. El 16 de diciembre, se fusionó &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>), introduciendo identificadores codificados en bech32 (npub, nsec, note, nprofile, nevent) que hacían las claves legibles por humanos y distinguibles. El repositorio de NIPs registró más de 36 commits ese mes, incluyendo actualizaciones de NIP-40 y NIP-07. Los clientes proliferaron: Damus llenó su beta de TestFlight en horas, Astral bifurcó Branle para creación de perfiles, Snort se lanzó como un cliente web &amp;ldquo;rápido y resistente a la censura,&amp;rdquo; y Vitor Pamplona comenzó el desarrollo de Amethyst. Alby v1.22.1 &amp;ldquo;Kemble&amp;rsquo;s Cascade of Stars&amp;rdquo; se envió el 22 de diciembre con soporte para NIP-19. Para el 7 de diciembre, Nostr tenía aproximadamente 800 usuarios con perfiles; cuando Damus llegó a la App Store el 31 de enero de 2023, se abrieron las compuertas, impulsando el crecimiento a más de 315,000 usuarios para junio de 2023.&lt;/p>
&lt;h3 id="diciembre-2023-maduración-del-ecosistema">Diciembre 2023: Maduración del Ecosistema&lt;/h3>
&lt;p>Diciembre de 2023 marcó un punto de inflexión crítico para la seguridad del protocolo Nostr. El 20 de diciembre, se fusionó la &lt;a href="https://github.com/nostr-protocol/nips/pull/746">revisión 3 de NIP-44&lt;/a> después de una auditoría de seguridad independiente de Cure53 (NOS-01) que identificó 10 problemas en las implementaciones de TypeScript, Go y Rust, incluyendo ataques de timing y preocupaciones de forward secrecy. La especificación actualizada reemplazó el cifrado defectuoso de &lt;a href="https://nostrcompass.org/es/topics/nip-04/">NIP-04&lt;/a> con ChaCha20 y HMAC-SHA256, estableciendo la base criptográfica que ahora sustenta los DMs privados de &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> y el gift wrapping de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>. La misma semana, &lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSats anunció su cuarta oleada de grants&lt;/a> el 21 de diciembre, financiando siete proyectos incluyendo Lume, noStrudel, ZapThreads, y una auditoría independiente de NIP-44. Esto siguió a la &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">primera oleada en julio de 2023&lt;/a> que había financiado Damus, Coracle, Iris, y otros, llevando la asignación total del Fondo Nostr a aproximadamente $3.4 millones a través de 39 grants.&lt;/p>
&lt;p>El mes también expuso tensiones de sostenibilidad en el ecosistema. El 28 de diciembre, William Casarin (jb55) &lt;a href="https://stacker.news/items/368863">publicó en Stacker News&lt;/a> que 2024 sería &amp;ldquo;probablemente el último año de Damus,&amp;rdquo; citando que &amp;ldquo;los clientes de nostr no generan dinero&amp;rdquo; después de que las restricciones de Apple sobre zaps en la aplicación limitaron severamente el potencial de ingresos. El equipo de Damus había rechazado previamente financiamiento de VC. Mientras tanto, &lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a> se envió el 26 de diciembre, extendiendo &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> con métodos &lt;code>pay_keysend&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code>, &lt;code>list_transactions&lt;/code>, &lt;code>get_balance&lt;/code>, y &lt;code>get_info&lt;/code>, sentando las bases para las integraciones de wallets que se convertirían en estándar en todos los clientes.&lt;/p>
&lt;h3 id="diciembre-2024-avance-del-protocolo">Diciembre 2024: Avance del Protocolo&lt;/h3>
&lt;p>Diciembre de 2024 abrió con el &lt;a href="https://damus.io/notedeck/">lanzamiento Alpha de Notedeck&lt;/a> el 30 de noviembre, el cliente de escritorio basado en Rust del equipo Damus con una interfaz multi-columna con soporte para múltiples cuentas. Construido para Linux, macOS y Windows (Android planificado para 2025), Notedeck se envió inicialmente a suscriptores de Damus Purple y representó una expansión estratégica más allá de iOS. Dos semanas después, &lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSats anunció su novena oleada de grants&lt;/a> el 16 de diciembre, financiando AlgoRelay (el primer relay algorítmico para feeds personalizados), Pokey (app Android con mesh Bluetooth para internet restringido), Nostr Safebox (almacenamiento de tokens Cashu con &lt;a href="https://nostrcompass.org/es/topics/nip-60/">NIP-60&lt;/a>), y LumiLumi (cliente web ligero y accesible), llevando la asignación total del Fondo Nostr a aproximadamente $9 millones, un aumento del 67% año tras año.&lt;/p>
&lt;p>El mes vio una maduración significativa de clientes en todo el ecosistema. &lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a> llegó el 23 de diciembre con soporte de File Metadata (&lt;a href="https://nostrcompass.org/es/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/es/topics/nip-94/">NIP-94&lt;/a>), integración de Blossom, y búsqueda en relay con &lt;a href="https://nostrcompass.org/es/topics/nip-50/">NIP-50&lt;/a>. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.5.0">Coracle 0.5.0&lt;/a> se envió el 12 de diciembre con onboarding rediseñado e integración de nostr-editor. El desarrollo del protocolo se mantuvo activo con 30 pull requests enviados entre el 9 y el 22 de diciembre (10 fusionados), incluyendo reescrituras de &lt;a href="https://nostrcompass.org/es/topics/nip-46/">NIP-46&lt;/a> para usar solo cifrado NIP-44 y trabajo continuo en &lt;a href="https://nostrcompass.org/es/topics/nip-104/">NIP-104&lt;/a> para cifrado double ratchet al nivel de Signal. Las estadísticas de red mostraron más de 224,000 eventos diarios de pubkeys confiables, crecimiento de 4x año tras año en nuevos perfiles con listas de contactos, y un aumento del 50% en eventos de escritura pública.&lt;/p>
&lt;h3 id="diciembre-2025-expansión-del-ecosistema">Diciembre 2025: Expansión del Ecosistema&lt;/h3>
&lt;p>Diciembre de 2025 trajo maduración continua del protocolo y expansión del ecosistema. El 21 de diciembre, &lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSats anunció su decimocuarta oleada de grants de Nostr&lt;/a>, financiando tres proyectos: YakiHonne (un cliente multiplataforma con portal de creadores para contenido de formato largo e integración de pagos Cashu/Nutzaps), Quartz (biblioteca Kotlin Multiplatform de Vitor Pamplona que impulsa Amethyst y permitirá una versión iOS), y Nostr Feedz (integración bidireccional RSS-a-Nostr por PlebOne). Las renovaciones de grants fueron para Dart NDK y nostr-relay de Mattn.&lt;/p>
&lt;p>La evolución del protocolo continuó con &lt;a href="https://nostrcompass.org/es/topics/nip-be/">NIP-BE&lt;/a> (mensajería Bluetooth Low Energy, &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>) fusionado en noviembre, habilitando sincronización offline de dispositivos. &lt;a href="https://nostrcompass.org/es/topics/nip-a4/">NIP-A4&lt;/a> (Mensajes Públicos, kind 24, &lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>) llegó más tarde en el mes, definiendo mensajes de pantalla de notificación que usan tags &lt;code>q&lt;/code> para evitar complicaciones de threading. &lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a> recibió clarificación mayor (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>), introduciendo el tag &lt;code>hidden&lt;/code> para grupos verdaderamente privados e invisibles. La especificación de &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> también vio refinamiento (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>), abordando un error común de implementación donde los desarrolladores llamaban &lt;code>get_public_key&lt;/code> desde procesos en segundo plano.&lt;/p>
&lt;p>En el lado del cliente, &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/#news">Primal Android se convirtió en un signer NIP-55 completo&lt;/a> a través de ocho PRs fusionados implementando &lt;code>LocalSignerContentProvider&lt;/code>, uniéndose a Amber y Aegis como opciones de firma en Android. La &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/#notable-code-and-documentation-changes">biblioteca NDK logró consultas de caché 162x más rápidas&lt;/a> (de ~3,690ms a ~22ms) eliminando escrituras duplicadas y búsquedas innecesarias de caché LRU (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a>, &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a>). Shopstr introdujo &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/#news">Zapsnags&lt;/a> para ventas flash vía zaps. White Noise envió notificaciones push que preservan la privacidad con &lt;a href="https://nostrcompass.org/es/topics/mip-05/">MIP-05&lt;/a>. Consulta &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/">Newsletter #1&lt;/a> y &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/">Newsletter #2&lt;/a> para cobertura completa.&lt;/p>
&lt;hr>
&lt;p>Hace cinco años, fiatjaf lanzó Branle a un puñado de usuarios a través de dos relays experimentales. Hoy, el protocolo soporta más de 140 clientes, más de 2,500 relays en 50 países, y una creciente red de confianza que vincula cientos de miles de keypairs. El patrón de diciembre de lanzamientos importantes continuó este mes con mensajería Bluetooth, proliferación de signers en Android, y grants de infraestructura que señalan inversión sostenida en herramientas multiplataforma.&lt;/p>
&lt;h2 id="noticias">Noticias&lt;/h2>
&lt;p>&lt;strong>Amethyst Desktop Toma Forma&lt;/strong> - El grant de Quartz de la decimocuarta oleada de OpenSats ya está produciendo resultados. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1625">PR #1625&lt;/a> crea un módulo completo &lt;code>:desktopApp&lt;/code> para Amethyst usando Compose Multiplatform, con pantallas de inicio de sesión y feed global funcionales en Desktop JVM. La arquitectura convierte el módulo &lt;code>:commons&lt;/code> a Kotlin Multiplatform con una estructura de source set limpia (&lt;code>commonMain&lt;/code>, &lt;code>jvmAndroid&lt;/code>, &lt;code>androidMain&lt;/code>, &lt;code>jvmMain&lt;/code>), permitiendo componentes de UI compartidos entre Android y escritorio mientras deja las decisiones específicas de plataforma a cada target. Esto sienta las bases para la eventual versión iOS a través del mismo enfoque Kotlin Multiplatform.&lt;/p>
&lt;p>&lt;strong>Amethyst Respuestas de Voz&lt;/strong> - Una entrega navideña de davotoula: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1622">PR #1622&lt;/a> añade pantallas dedicadas de respuesta de voz con visualización de forma de onda, soporte para re-grabar, selección de servidor de medios, e indicadores de progreso de carga. Los usuarios ahora pueden responder tanto a mensajes de voz raíz como a respuestas de voz con audio.&lt;/p>
&lt;p>&lt;strong>Notedeck Añade Mensajería&lt;/strong> - Notedeck, el cliente de escritorio de Damus, ganó una función de mensajes en &lt;a href="https://github.com/damus-io/notedeck/pull/1223">PR #1223&lt;/a>, expandiéndose más allá de la navegación del timeline hacia comunicación directa.&lt;/p>
&lt;p>&lt;strong>Citrine Aloja Aplicaciones Web&lt;/strong> - Citrine ahora puede &lt;a href="https://github.com/greenart7c3/Citrine/pull/81">alojar aplicaciones web&lt;/a>, convirtiendo tu teléfono en un servidor web Nostr local-first. Un &lt;a href="https://github.com/greenart7c3/Citrine/pull/85">PR #85&lt;/a> separado añade reconexión automática y broadcasting de eventos cuando la conectividad de red regresa, con cobertura de pruebas completa a través de niveles de API de Android.&lt;/p>
&lt;p>&lt;strong>Registro de Kits de Desarrollo de Nostrability&lt;/strong> - El rastreador de &lt;a href="https://github.com/nostrability/nostrability/issues/264">Developer Kits &amp;amp; Tooling&lt;/a> mantiene un registro curado de SDKs, bibliotecas y herramientas de desarrollo a través de lenguajes (TypeScript, Rust, Python, Go, Dart, Swift, y más). Si eres nuevo en el desarrollo de Nostr, este es un punto de partida útil para encontrar el toolkit adecuado para tu stack.&lt;/p>
&lt;h2 id="actualizaciones-de-nips">Actualizaciones de NIPs&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-54/">NIP-54&lt;/a>&lt;/strong> - Corrección crítica de internacionalización para normalización de d-tag wiki (&lt;a href="https://github.com/nostr-protocol/nips/pull/2177">#2177&lt;/a>). Las reglas anteriores convertían todos los caracteres no ASCII a &lt;code>-&lt;/code>, rompiendo el soporte para japonés, chino, árabe, cirílico y otros scripts. La especificación actualizada preserva las letras UTF-8, aplica minúsculas solo a caracteres con variantes de mayúsculas, e incluye ejemplos completos: &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code> permanece &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>, &lt;code>&amp;quot;Москва&amp;quot;&lt;/code> se convierte en &lt;code>&amp;quot;москва&amp;quot;&lt;/code>, y scripts mixtos como &lt;code>&amp;quot;日本語 Article&amp;quot;&lt;/code> se normalizan a &lt;code>&amp;quot;日本語-article&amp;quot;&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="lanzamientos">Lanzamientos&lt;/h2>
&lt;p>&lt;strong>Zapstore 1.0-rc1&lt;/strong> - La tienda de aplicaciones sin permisos basada en Nostr envía el &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0-rc1">primer release candidate&lt;/a> de su nueva arquitectura, presentando una actualización completa de UI, gestor de paquetes reescrito con mejor manejo de errores, App Stacks para descubrimiento curado, pantallas de perfil rediseñadas, verificación de actualizaciones en segundo plano, y desplazamiento infinito en listas de lanzamientos.&lt;/p>
&lt;p>&lt;strong>KeyChat v1.38.1&lt;/strong> - La aplicación de mensajería cifrada basada en MLS &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.38.1%2B6489">añade soporte UnifiedPush&lt;/a> para notificaciones push de Android y Linux, más autenticación biométrica para operaciones de privacidad. Disponible para Android, Windows, macOS y Linux.&lt;/p>
&lt;p>&lt;strong>Alby Go v2.0.0&lt;/strong> - El compañero de wallet Lightning móvil &lt;a href="https://github.com/getAlby/go/releases/tag/v2.0.0">envía un rediseño visual&lt;/a> con nuevo logo, paleta de colores actualizada, libreta de direcciones rediseñada, y teclado de entrada de cantidades mejorado. BTC Map ahora es accesible desde la pantalla de inicio, y las descripciones de transacciones aparecen en notificaciones.&lt;/p>
&lt;p>&lt;strong>nak v0.17.4&lt;/strong> - La herramienta de línea de comandos Nostr de fiatjaf &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.4">lanzada&lt;/a>, siguiendo la corrección de restricción de LMDB Linux de v0.17.3 de la semana pasada.&lt;/p>
&lt;h2 id="cambios-notables-de-código-y-documentación">Cambios notables de código y documentación&lt;/h2>
&lt;p>&lt;em>Pull requests abiertos y trabajo en etapa temprana que vale la pena seguir.&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3477">NIP-19 relay hints&lt;/a> implementa consumo de relay hints para obtención de eventos. Cuando los usuarios abren enlaces nevent, nprofile, o naddr, Damus ahora extrae relay hints de los datos TLV bech32 y se conecta a relays efímeros para obtener contenido que no está en el pool de relays del usuario. La implementación incluye limpieza con conteo de referencias para prevenir condiciones de carrera durante búsquedas concurrentes. &lt;a href="https://github.com/damus-io/damus/pull/3474">Detección de URL de imagen&lt;/a> convierte automáticamente URLs de imagen pegadas en miniaturas de vista previa en el compositor, con insignia de posición de carrusel para múltiples imágenes. &lt;a href="https://github.com/damus-io/damus/pull/3473">Conversión de pegado npub&lt;/a> transforma strings npub/nprofile pegados en enlaces de mención con resolución de perfil asíncrona.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1627">Payment targets&lt;/a> añade una interfaz de evento para splits de zap NIP-57, permitiendo que las publicaciones especifiquen múltiples destinatarios que comparten zaps entrantes (útil para colaboraciones, reparto de ingresos, o dar propinas tanto a creadores de contenido como a las herramientas que usan). &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1624">Documentación de paridad de características de Quartz&lt;/a> añade una tabla detallada que rastrea qué características están implementadas a través de los targets Android, Desktop JVM, e iOS, notando que iOS carece de criptografía central (&lt;code>Secp256k1Instance&lt;/code>), serialización JSON, y estructuras de datos.&lt;/p>
&lt;h3 id="notedeck-desktop">Notedeck (Desktop)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1226">Reconstrucción de filtro de timeline&lt;/a> corrige un bug donde las cuentas dejadas de seguir seguían apareciendo en feeds. Los filtros de timeline se construían una vez desde la lista de contactos y nunca se actualizaban; la corrección añade rastreo de &lt;code>contact_list_timestamp&lt;/code> y un método &lt;code>invalidate()&lt;/code> para activar reconstrucciones cuando cambia el estado de seguimiento.&lt;/p>
&lt;h3 id="citrine-android-relay">Citrine (Android Relay)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/86">ContentProvider API&lt;/a> expone la base de datos de eventos del relay local a otras apps Android vía &lt;code>ContentResolver&lt;/code>. A diferencia de la interfaz WebSocket (que requiere que las apps mantengan una conexión persistente y hablen el protocolo relay de Nostr), ContentProvider ofrece acceso directo síncrono a la base de datos a través del mecanismo IPC nativo de Android. Las apps externas pueden consultar eventos por ID, pubkey, kind, o rango de fechas, insertar nuevos eventos con validación, y eliminar eventos sin gestionar conexiones de socket.&lt;/p>
&lt;h3 id="rust-nostr-library">rust-nostr (Library)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1183">Soporte de NIP-40 a nivel de relay&lt;/a> añade manejo de expiración a nivel del relay builder. Los eventos expirados ahora son rechazados antes del almacenamiento y filtrados antes de enviar a clientes, eliminando la necesidad de que cada implementación de base de datos maneje verificaciones de expiración independientemente.&lt;/p>
&lt;h3 id="nak-cli">nak (CLI)&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak/pull/91">Blossom mirror&lt;/a> implementa funcionalidad de mirroring de blobs para la herramienta de línea de comandos.&lt;/p>
&lt;h3 id="mostro-p2p-trading">Mostro (P2P Trading)&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/559">Dev fee audit events&lt;/a> añade pistas de auditoría transparentes para pagos al fondo de desarrollo a través de eventos Nostr kind 8383. La implementación publica eventos de auditoría no bloqueantes después de pagos de fees exitosos, incluyendo detalles de orden y hashes de pago mientras excluye pubkeys de comprador/vendedor por privacidad.&lt;/p>
&lt;h3 id="mdk-marmot-development-kit">MDK (Marmot Development Kit)&lt;/h3>
&lt;p>Tres correcciones de auditoría de seguridad llegaron: &lt;a href="https://github.com/marmot-protocol/mdk/pull/40">Verificación de autor&lt;/a> obliga a que los pubkeys de rumor coincidan con las credenciales del remitente MLS, previniendo ataques de suplantación. &lt;a href="https://github.com/marmot-protocol/mdk/pull/41">KeyPackage identity binding&lt;/a> verifica que la identidad de credencial coincida con los firmantes de eventos. &lt;a href="https://github.com/marmot-protocol/mdk/pull/42">Validación de actualización de admin&lt;/a> previene sets de admin vacíos y asignaciones de admin a no miembros.&lt;/p>
&lt;h3 id="shopstr-marketplace">Shopstr (Marketplace)&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/217">HODL invoice escrow&lt;/a> implementa un sistema de pago que minimiza la confianza para bienes físicos. La arquitectura usa &lt;code>makeHoldInvoice&lt;/code> de Alby para bloquear fondos del comprador en su propia wallet, con liquidación activada solo después de la verificación de inventario del comerciante. El protocolo de handshake fluye a través de DMs cifrados &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>: el comprador envía solicitud de orden, el comerciante responde con HODL invoice, el comprador paga (fondos bloqueados), el comerciante confirma stock y envío, luego la liquidación libera los fondos. El soporte de carrito multi-comerciante divide pagos entre vendedores.&lt;/p>
&lt;h3 id="jumble-web-client">Jumble (Web Client)&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/pull/713">Modo de descubrimiento por relay&lt;/a> añade un toggle para ocultar publicaciones de usuarios seguidos en relays específicos, habilitando feeds de descubrimiento basados en idioma (ej., nostr.band/lang/*). La característica filtra publicaciones donde el pubkey del autor aparece en la lista de seguidos del usuario, persistiendo el estado del toggle por URL de relay en localStorage.&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (Encrypted Messaging)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/937">Reintento de carga de medios&lt;/a> añade opciones de reintento para cargas fallidas. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/927">Advertencias de edición de perfil&lt;/a> alerta a usuarios sobre cambios de perfil. En el backend, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/422">whitenoise-rs&lt;/a> corrige una condición de carrera en la creación de AccountGroup.&lt;/p>
&lt;h3 id="npubcash-lightning-address-service">npub.cash (Lightning Address Service)&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/npubcash-server/pull/40">Reescritura v3&lt;/a> migra a Bun para el monorepo y servidor, añade soporte SQLite, elimina compatibilidad v1, implementa LUD-21, y añade actualizaciones de mint quote en tiempo real.&lt;/p>
&lt;h3 id="nostr-java-library">nostr-java (Library)&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v1.1.1">v1.1.1&lt;/a> envía refactorizaciones de manejo de WebSocket y robustez de pruebas mejorada a través de &lt;a href="https://github.com/tcheeric/nostr-java/pull/499">dos PRs&lt;/a>.&lt;/p>
&lt;h3 id="nips-repository">NIPs Repository&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2180">Migración de NIP-54 a Djot&lt;/a> propone un cambio separado a la especificación wiki: cambiar el formato de contenido de Asciidoc a Djot, un lenguaje de marcado ligero con sintaxis más limpia. El PR introduce enlaces de estilo referencia para wikilinks, haciendo las referencias cruzadas entre artículos wiki más legibles en forma de fuente. &lt;a href="https://github.com/nostr-protocol/nips/pull/2179">NIP-XX Quorum&lt;/a> introduce gobernanza de multi-firma umbral para grupos Nostr usando FROST (Flexible Round-Optimized Schnorr Threshold signatures). Un Quorum es un nsec compartido entre miembros a través de un esquema T-de-N donde los miembros pueden representarse a sí mismos o delegar a un consejo de representantes. Cuando el consejo cambia, el viejo nsec queda obsoleto y uno nuevo es distribuido—el acto final de cualquier consejo es firmar el evento de transición de gobernanza. La especificación define membresía (pública o privada), elecciones y encuestas (votos populares, votos de no confianza), &amp;ldquo;leyes&amp;rdquo; opcionales en lenguaje natural, y crucialmente, ontologías de quorum donde los quorums pueden ser miembros de otros quorums, habilitando estructuras jerárquicas como localidades uniéndose a cuerpos regionales. Los casos de uso abarcan desarrollo de código fuente, juntas directivas de empresas, HOAs, y comunidades moderadas.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana y este año. ¿Construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía NIP-17 DM&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #2</title><link>https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2025-12-24-newsletter/</guid><description>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Tres implementaciones de firmadores &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> reciben actualizaciones: Amber añade caché de rendimiento, Aegis obtiene soporte para URI &lt;code>nostrsigner:&lt;/code>, y Primal Android se une a ellos como firmador local completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; para ventas flash vía zaps. Mostro añade un fondo de desarrollo. Cuatro actualizaciones de NIP aterrizan incluyendo Mensajes Públicos (kind 24) y mejoras de privacidad de grupos. Las consultas de caché de NDK se aceleran 162x, Applesauce añade reacciones y soporte de billetera NIP-60, y Tenex introduce arquitectura RAL para delegación de agentes IA. En nuestra profundización, explicamos &lt;a href="https://nostrcompass.org/es/topics/nip-02/">NIP-02&lt;/a> (listas de seguidos) y &lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10&lt;/a> (hilos de respuestas), especificaciones fundamentales para construir líneas de tiempo sociales y conversaciones.&lt;/p></description><content:encoded>&lt;p>Bienvenido de nuevo a Nostr Compass, tu guía semanal del ecosistema del protocolo Nostr.&lt;/p>
&lt;p>&lt;strong>Esta semana:&lt;/strong> Tres implementaciones de firmadores &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> reciben actualizaciones: Amber añade caché de rendimiento, Aegis obtiene soporte para URI &lt;code>nostrsigner:&lt;/code>, y Primal Android se une a ellos como firmador local completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; para ventas flash vía zaps. Mostro añade un fondo de desarrollo. Cuatro actualizaciones de NIP aterrizan incluyendo Mensajes Públicos (kind 24) y mejoras de privacidad de grupos. Las consultas de caché de NDK se aceleran 162x, Applesauce añade reacciones y soporte de billetera NIP-60, y Tenex introduce arquitectura RAL para delegación de agentes IA. En nuestra profundización, explicamos &lt;a href="https://nostrcompass.org/es/topics/nip-02/">NIP-02&lt;/a> (listas de seguidos) y &lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10&lt;/a> (hilos de respuestas), especificaciones fundamentales para construir líneas de tiempo sociales y conversaciones.&lt;/p>
&lt;h2 id="news">Noticias&lt;/h2>
&lt;p>&lt;strong>Primal Android Se Convierte en Firmador NIP-55&lt;/strong> - Construyendo sobre el &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/#primal-android">soporte de Nostr Connect de la semana pasada&lt;/a>, Primal ha implementado capacidades completas de firma local a través de ocho pull requests fusionados. La implementación incluye un &lt;code>LocalSignerContentProvider&lt;/code> completo que expone operaciones de firma a otras apps Android vía la interfaz de content provider de Android, siguiendo la especificación &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>. La arquitectura separa responsabilidades limpiamente: &lt;code>SignerActivity&lt;/code> maneja flujos de aprobación cara al usuario, &lt;code>LocalSignerService&lt;/code> gestiona operaciones en segundo plano, y un nuevo sistema de permisos permite a los usuarios controlar qué apps pueden solicitar firmas. Esto hace de Primal una alternativa viable a Amber para usuarios de Android que quieren mantener sus claves en una app mientras usan otras para diferentes experiencias Nostr.&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags: Ventas Flash vía Lightning&lt;/strong> - El mercado nativo de Nostr introdujo &lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">&amp;ldquo;Zapsnags&amp;rdquo;&lt;/a>, una función de venta flash que permite a los compradores adquirir artículos directamente desde su feed social con un solo zap. La implementación filtra notas kind 1 etiquetadas con &lt;code>#shopstr-zapsnag&lt;/code> y las renderiza como tarjetas de producto con un botón &amp;ldquo;Zap para Comprar&amp;rdquo; en lugar del flujo de carrito estándar. Cuando un comprador zapea, el sistema genera una solicitud de pago usando &lt;a href="https://nostrcompass.org/es/topics/nip-57/">NIP-57&lt;/a>, consulta el recibo de zap kind 9735 para confirmar el pago, luego encripta la información de envío usando gift wrapping &lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a> antes de enviarla de forma privada al vendedor. La función almacena detalles del comprador localmente para compras repetidas e incluye un panel de comerciante para crear listados de venta flash. Es una combinación inteligente de primitivos sociales, de pago y privacidad que demuestra cómo el diseño componible de Nostr permite patrones de comercio novedosos.&lt;/p>
&lt;p>&lt;strong>Mostro Introduce Fondo de Desarrollo&lt;/strong> - La plataforma de trading P2P de Bitcoin &lt;a href="https://nostrcompass.org/es/topics/nip-69/">NIP-69&lt;/a> &lt;a href="https://github.com/MostroP2P/mostro/pull/555">implementó tarifas de desarrollo configurables&lt;/a> para apoyar el mantenimiento sostenible. Los operadores pueden establecer &lt;code>dev_fee_percentage&lt;/code> entre 10-100% de la tarifa de trading de Mostro (por defecto 30%), que se enruta automáticamente a un fondo de desarrollo en cada operación exitosa. La implementación añade tres columnas de base de datos (&lt;code>dev_fee&lt;/code>, &lt;code>dev_fee_paid&lt;/code>, &lt;code>dev_fee_payment_hash&lt;/code>) para rastrear contribuciones y valida el porcentaje al inicio del daemon. La documentación técnica en &lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a> explica el sistema. Este modelo opt-in permite a los operadores apoyar el desarrollo continuo mientras mantienen total transparencia sobre la asignación de tarifas.&lt;/p>
&lt;h2 id="nip-updates">Actualizaciones de NIP&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuevos NIPs:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-a4/">NIP-A4&lt;/a> (Mensajes Públicos, kind 24)&lt;/strong> - Un nuevo kind para mensajes de pantalla de notificación diseñados para amplio soporte de clientes (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>). A diferencia de conversaciones con hilos, estos mensajes no tienen concepto de historial de chat o cadenas de mensajes. Usan etiquetas &lt;code>q&lt;/code> (citas) en lugar de etiquetas &lt;code>e&lt;/code> para evitar complicaciones de hilos, haciéndolos ideales para notificaciones públicas simples que aparecen en el feed de notificaciones de un destinatario sin crear estado de conversación.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Cambios Significativos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - Clarificación mayor de semántica de grupos (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>). La etiqueta &lt;code>closed&lt;/code> ahora significa &amp;ldquo;incapaz de escribir&amp;rdquo; (solo lectura para no miembros), desacoplada de la mecánica de unirse. Una nueva etiqueta &lt;code>hidden&lt;/code> previene que los relays sirvan metadata o eventos de miembros a no miembros, permitiendo grupos verdaderamente privados que son indescubribles sin invitación fuera de banda. La etiqueta &lt;code>private&lt;/code> controla visibilidad de mensajes mientras permite metadata pública para descubrimiento.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Añadido kind 30006 para conjuntos de imágenes curadas (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>), siguiendo el patrón de 30004 (artículos) y 30005 (videos). Ya implementado en Nostria.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Clarificado inicio de conexión para firmadores Android (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>). Los desarrolladores implementando sesiones multi-usuario estaban usando mal &lt;code>get_public_key&lt;/code> llamándolo desde procesos en segundo plano. La especificación actualizada recomienda llamarlo solo una vez durante la conexión inicial, previniendo un footgun de implementación común.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">Profundización en NIP: NIP-02 y NIP-10&lt;/h2>
&lt;p>Esta semana cubrimos dos NIPs esenciales para funcionalidad social: cómo los clientes saben a quién sigues y cómo se estructuran las conversaciones en hilos.&lt;/p>
&lt;h3 id="nip-02estopicsnip-02-lista-de-seguidos">&lt;a href="https://nostrcompass.org/es/topics/nip-02/">NIP-02&lt;/a>: Lista de Seguidos&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a> define eventos kind 3, que almacenan tu lista de seguidos. Este mecanismo simple potencia el grafo social que hace posibles las líneas de tiempo.&lt;/p>
&lt;p>&lt;strong>Estructura:&lt;/strong> Un evento kind 3 contiene etiquetas &lt;code>p&lt;/code> listando pubkeys seguidas:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7a8f...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9..af5f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://alicerelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;alice&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb..8dad&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://bobrelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bob&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae..982b&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e4f8a...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Cada etiqueta &lt;code>p&lt;/code> tiene cuatro posiciones: el nombre de la etiqueta, la pubkey seguida (hex), un hint de relay URL opcional, y un &amp;ldquo;petname&amp;rdquo; opcional (un apodo local). El hint de relay dice a otros clientes dónde encontrar los eventos de ese usuario. El petname te permite asignar nombres memorables a contactos sin depender de sus nombres de pantalla auto-declarados.&lt;/p>
&lt;p>&lt;strong>Comportamiento reemplazable:&lt;/strong> Kind 3 cae en el rango reemplazable (0, 3, 10000-19999), así que los relays mantienen solo la versión más reciente por pubkey. Cuando sigues a alguien nuevo, tu cliente publica un nuevo kind 3 completo conteniendo todos tus seguidos más el nuevo. Esto significa que las listas de seguidos deben ser completas cada vez; no puedes publicar actualizaciones incrementales.&lt;/p>
&lt;p>&lt;strong>Construyendo líneas de tiempo:&lt;/strong> Para construir un feed home, los clientes obtienen el kind 3 del usuario, extraen todas las pubkeys de etiquetas &lt;code>p&lt;/code>, luego se suscriben a eventos kind 1 de esos autores:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;home&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;authors&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae...&amp;#34;&lt;/span>], &lt;span style="color:#f92672">&amp;#34;limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">50&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El relay devuelve notas coincidentes, y el cliente las renderiza. Los hints de relay en kind 3 ayudan a los clientes a saber qué relays consultar para cada usuario seguido.&lt;/p>
&lt;p>&lt;strong>Petnames e identidad:&lt;/strong> El campo petname habilita un esquema de nombres descentralizado. En lugar de confiar en cualquier nombre que un usuario reclame en su perfil, puedes asignar tu propia etiqueta. Un cliente podría mostrar &amp;ldquo;alice (Mi Hermana)&amp;rdquo; donde &amp;ldquo;alice&amp;rdquo; viene de su perfil kind 0 y &amp;ldquo;Mi Hermana&amp;rdquo; es tu petname. Esto proporciona contexto que los nombres de usuario globales no pueden.&lt;/p>
&lt;p>&lt;strong>Consideraciones prácticas:&lt;/strong> Debido a que los eventos kind 3 son reemplazables y deben ser completos, los clientes deberían preservar etiquetas desconocidas al actualizar. Si otro cliente añadió etiquetas que tu cliente no entiende, sobrescribir ciegamente perdería esos datos. Añade nuevos seguidos en lugar de reconstruir desde cero.&lt;/p>
&lt;h3 id="nip-10estopicsnip-10-hilos-de-notas-de-texto">&lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10&lt;/a>: Hilos de Notas de Texto&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a> especifica cómo las notas kind 1 se referencian entre sí para formar hilos de respuestas. Entender esto es esencial para construir vistas de conversación.&lt;/p>
&lt;p>&lt;strong>El problema:&lt;/strong> Cuando alguien responde a una nota, los clientes necesitan saber: ¿A qué es esto una respuesta? ¿Cuál es la raíz de la conversación? ¿A quién se debe notificar? NIP-10 responde estas preguntas a través de etiquetas &lt;code>e&lt;/code> (referencias de evento) y etiquetas &lt;code>p&lt;/code> (menciones de pubkey).&lt;/p>
&lt;p>&lt;strong>Etiquetas marcadas (preferidas):&lt;/strong> Los clientes modernos usan marcadores explícitos en etiquetas &lt;code>e&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f9c2e...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912345&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;root&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;¡Buen punto! Estoy de acuerdo.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7d3f...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El marcador &lt;code>root&lt;/code> apunta a la nota original que inició el hilo. El marcador &lt;code>reply&lt;/code> apunta a la nota específica que se está respondiendo. Si respondes directamente a la raíz, usa solo &lt;code>root&lt;/code> (no se necesita etiqueta &lt;code>reply&lt;/code>). La distinción importa para el renderizado: el &lt;code>reply&lt;/code> determina la indentación en una vista de hilo, mientras que &lt;code>root&lt;/code> agrupa todas las respuestas juntas.&lt;/p>
&lt;p>&lt;strong>Reglas de hilos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Respuesta directa a raíz: Una etiqueta &lt;code>e&lt;/code> con marcador &lt;code>root&lt;/code>&lt;/li>
&lt;li>Respuesta a una respuesta: Dos etiquetas &lt;code>e&lt;/code>, una &lt;code>root&lt;/code> y una &lt;code>reply&lt;/code>&lt;/li>
&lt;li>El &lt;code>root&lt;/code> permanece constante a lo largo del hilo; &lt;code>reply&lt;/code> cambia según a qué estés respondiendo&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Etiquetas pubkey para notificaciones:&lt;/strong> Incluye etiquetas &lt;code>p&lt;/code> para todos los que deberían ser notificados. Como mínimo, etiqueta al autor de la nota a la que respondes. La convención es también incluir todas las etiquetas &lt;code>p&lt;/code> del evento padre (para que todos en la conversación estén al tanto), más cualquier usuario que @menciones en tu contenido.&lt;/p>
&lt;p>&lt;strong>Hints de relay:&lt;/strong> La tercera posición en etiquetas &lt;code>e&lt;/code> y &lt;code>p&lt;/code> puede contener una URL de relay donde ese evento o contenido de usuario podría encontrarse. Esto ayuda a los clientes a obtener el contenido referenciado incluso si no están conectados al relay original.&lt;/p>
&lt;p>&lt;strong>Etiquetas posicionales deprecadas:&lt;/strong> Las implementaciones tempranas de Nostr inferían significado de la posición de etiquetas en lugar de marcadores: la primera etiqueta &lt;code>e&lt;/code> era raíz, la última era respuesta, las del medio eran menciones. Este enfoque está deprecado porque crea ambigüedad. Si ves etiquetas &lt;code>e&lt;/code> sin marcadores, probablemente son de clientes antiguos. Las implementaciones modernas siempre deberían usar marcadores explícitos.&lt;/p>
&lt;p>&lt;strong>Construyendo vistas de hilo:&lt;/strong> Para mostrar un hilo, obtén el evento raíz, luego consulta todos los eventos con una etiqueta &lt;code>e&lt;/code> referenciando esa raíz:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;thread&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;#e&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;&amp;lt;root-event-id&amp;gt;&amp;#34;&lt;/span>]}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ordena resultados por &lt;code>created_at&lt;/code> y usa marcadores &lt;code>reply&lt;/code> para construir la estructura de árbol. Los eventos cuyo &lt;code>reply&lt;/code> apunta a la raíz son respuestas de nivel superior; los eventos cuyo &lt;code>reply&lt;/code> apunta a otra respuesta son respuestas anidadas.&lt;/p>
&lt;h2 id="releases">Lanzamientos&lt;/h2>
&lt;p>&lt;strong>Zeus v0.12.0&lt;/strong> - Construyendo sobre el &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/#zeus-lightning-wallet">soporte de pagos paralelos NWC de la semana pasada&lt;/a>, el &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.0">lanzamiento mayor&lt;/a> de la billetera Lightning incluye un servicio completo &lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect con soporte de relay personalizado y seguimiento de presupuesto. Una &lt;a href="https://github.com/ZeusLN/zeus/pull/3455">corrección de recarga de presupuesto&lt;/a> asegura que las conexiones usen límites actuales. &lt;a href="https://github.com/ZeusLN/zeus/pull/3460">Copiar dirección Lightning&lt;/a> ya no incluye el prefijo &lt;code>lightning:&lt;/code>, corrigiendo problemas de pegado en campos de perfil Nostr.&lt;/p>
&lt;p>&lt;strong>Amber v4.0.6&lt;/strong> - El firmador &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a> de Android &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.6">añade caché de rendimiento&lt;/a> a operaciones de firma y mejora el manejo de errores al desencriptar contenido malformado. La confiabilidad de conexión mejoró con lógica de reintentos para eventos de conexión de relay, y varias correcciones de crash abordan casos extremos alrededor de URIs &lt;code>nostrconnect://&lt;/code> inválidos e interacciones de pantalla de permisos.&lt;/p>
&lt;p>&lt;strong>nak v0.17.3&lt;/strong> - El &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.3">último lanzamiento&lt;/a> de la herramienta de línea de comandos Nostr restringe builds LMDB a Linux, corrigiendo problemas de compilación multiplataforma.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.4&lt;/strong> - El firmador Nostr multiplataforma &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.4">añade soporte&lt;/a> para el esquema URI &lt;code>nostrsigner:&lt;/code> definido en &lt;a href="https://nostrcompass.org/es/topics/nip-55/">NIP-55&lt;/a>, coincidiendo con el flujo de conexión de Amber. Los datos de relay local ahora pueden ser importados y exportados para respaldo, y el lanzamiento incluye correcciones de errores para errores de socket de relay y mejoras de UI para la interfaz de relay local.&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Cambios notables de código y documentación&lt;/h2>
&lt;p>&lt;em>Estos son pull requests abiertos y trabajo en etapa temprana, perfectos para obtener retroalimentación antes de fusionarse. Si algo te llama la atención, ¡considera revisar o comentar!&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3469">Persistencia de lista de silenciados&lt;/a> corrige un problema donde las listas de silenciados se borraban en inicio frío. La corrección añade guardas para prevenir sobrescrituras accidentales durante la inicialización de la app. &lt;a href="https://github.com/damus-io/damus/pull/3457">Temporización de stream de perfil&lt;/a> elimina un retraso de ~1 segundo antes de que los perfiles en caché aparecieran. Anteriormente, las vistas esperaban a que las tareas de suscripción reiniciaran; ahora &lt;code>streamProfile()&lt;/code> inmediatamente devuelve datos en caché de NostrDB, eliminando la ventana donde pubkeys abreviadas e imágenes placeholder se mostraban.&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (Mensajería Encriptada)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/919">Streaming de mensajes en tiempo real&lt;/a> reemplaza el mecanismo de polling anterior con una arquitectura basada en streams. El nuevo &lt;code>ChatStreamNotifier&lt;/code> consume el stream de mensajes del SDK Rust directamente, manteniendo orden cronológico y manejando actualizaciones incrementales eficientemente. Las pruebas mostraron mejora significativa en capacidad de respuesta. Una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/921">API de lista de chat&lt;/a> añade &lt;code>get_chat_list&lt;/code> para recuperar resúmenes de conversaciones, y una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/905">corrección de ordenamiento estable&lt;/a> previene loops de reordenamiento de mensajes usando &lt;code>createdAt&lt;/code> con ID de mensaje como desempate.&lt;/p>
&lt;h3 id="ndk-library">NDK (Librería)&lt;/h3>
&lt;p>Dos pull requests entregaron mejoras dramáticas de rendimiento de caché. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a> corrigió un bug donde eventos leídos de caché SQLite se escribían inmediatamente de vuelta, causando 100% de escrituras duplicadas al iniciar la app. La corrección añade una guarda &lt;code>fromCache&lt;/code> e implementa verificación de duplicados O(1) vía un Set en memoria. Para conjuntos de resultados pequeños (&amp;lt;100 eventos), la transferencia JSON directa reemplaza la sobrecarga de codificación binaria. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a> eliminó llamadas innecesarias a &lt;code>seenEvent&lt;/code> para eventos en caché. La búsqueda en caché LRU costaba 0.24-0.64ms por evento; para 5,700 eventos en caché, esto añadía ~1.4 segundos de sobrecarga. Resultado: las consultas de caché bajaron de ~3,690ms a ~22ms (162x más rápido).&lt;/p>
&lt;h3 id="rust-nostr-library">rust-nostr (Librería)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1176">Soporte de REQ multi-filtro&lt;/a> fue restaurado después de ser eliminado en un refactor previo. El SDK nuevamente acepta &lt;code>Vec&amp;lt;Filter&amp;gt;&lt;/code> para solicitudes de suscripción, permitiendo consultas eficientes que combinan múltiples condiciones de filtro con lógica OR. &lt;a href="https://github.com/rust-nostr/nostr/pull/1156">Procedencia de relay&lt;/a> fue añadida a métodos &lt;code>stream_events*&lt;/code>, así que cada evento en stream ahora incluye el &lt;code>RelayUrl&lt;/code> de donde vino y un &lt;code>Result&lt;/code> indicando éxito o fallo, útil para rastrear confiabilidad de relay y depurar problemas de conexión. Una &lt;a href="https://github.com/rust-nostr/nostr/pull/1179">corrección de seguridad&lt;/a> eliminó la dependencia &lt;code>url-fork&lt;/code> siguiendo RUSTSEC-2024-0421, eliminando una vulnerabilidad conocida.&lt;/p>
&lt;h3 id="applesauce-library">Applesauce (Librería)&lt;/h3>
&lt;p>La librería TypeScript que potencia &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> vio desarrollo significativo esta semana. Nuevos modelos incluyen un &lt;a href="https://github.com/hzrd149/applesauce">sistema de reacciones&lt;/a> y casting de grupos de usuarios. La funcionalidad de billetera se expandió con soporte NIP-60, una pestaña de envío, y herramientas mejoradas de recuperación de tokens. Una nueva propiedad &lt;code>user.directMessageRelays$&lt;/code> expone configuración de relay DM. Todas las acciones fueron refactorizadas para usar interfaces async (eliminando generadores async), y correcciones de bugs abordaron restauración de contenido encriptado y casos extremos de filtros de eventos basados en tiempo.&lt;/p>
&lt;h3 id="tenex-ai-agents">Tenex (Agentes IA)&lt;/h3>
&lt;p>El &lt;a href="https://github.com/tenex-chat/tenex">sistema de coordinación multi-agente&lt;/a> construido sobre Nostr introdujo arquitectura RAL (Request-Action-Lifecycle) en &lt;a href="https://github.com/pablof7z/tenex/pull/38">cinco PRs fusionados&lt;/a>. RAL permite a los agentes pausar cuando delegan tareas y reanudar cuando llegan resultados, con persistencia de estado en alcance de conversación. Las herramientas de delegación (&lt;code>delegate&lt;/code>, &lt;code>ask&lt;/code>, &lt;code>delegate_followup&lt;/code>, &lt;code>delegate_external&lt;/code>) ahora publican eventos Nostr y retornan señales de parada en lugar de bloquear. El refactor incluye migración a AI SDK v6, infraestructura de testing VCR para grabación determinística de interacciones LLM, y soporte de imágenes multimodal.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía NIP-17 DM&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #1</title><link>https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/</guid><description>&lt;p>Bienvenido a Nostr Compass, un boletín semanal dedicado al ecosistema del protocolo Nostr. Nuestra misión es mantener informados a desarrolladores, operadores de relays y constructores sobre desarrollos importantes en toda la red. Documentamos la evolución del protocolo con precisión técnica, neutralidad y profundidad, cubriendo desde propuestas de NIP hasta lanzamientos de clientes y mejores prácticas de implementación.&lt;/p>
&lt;p>Nostr Compass está inspirado en &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, cuyo trabajo dedicado durante años avanzando el conocimiento técnico de Bitcoin estableció el estándar para boletines enfocados en protocolos. Estamos agradecidos por su ejemplo y esperamos aportar el mismo rigor al ecosistema Nostr.&lt;/p></description><content:encoded>&lt;p>Bienvenido a Nostr Compass, un boletín semanal dedicado al ecosistema del protocolo Nostr. Nuestra misión es mantener informados a desarrolladores, operadores de relays y constructores sobre desarrollos importantes en toda la red. Documentamos la evolución del protocolo con precisión técnica, neutralidad y profundidad, cubriendo desde propuestas de NIP hasta lanzamientos de clientes y mejores prácticas de implementación.&lt;/p>
&lt;p>Nostr Compass está inspirado en &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, cuyo trabajo dedicado durante años avanzando el conocimiento técnico de Bitcoin estableció el estándar para boletines enfocados en protocolos. Estamos agradecidos por su ejemplo y esperamos aportar el mismo rigor al ecosistema Nostr.&lt;/p>
&lt;p>Este número inaugural establece nuestro formato semanal. Cada miércoles te traeremos actualizaciones de NIP, notas de lanzamiento, destacados de desarrollo y guías técnicas. Ya sea que estés construyendo un cliente, operando un relay o contribuyendo al protocolo, Nostr Compass pretende ser tu fuente confiable sobre lo que está sucediendo en el ecosistema.&lt;/p>
&lt;h2 id="qué-es-nostr">¿Qué es Nostr?&lt;/h2>
&lt;p>&lt;em>Dado que este es nuestro primer número, comenzamos con una introducción sobre cómo funciona Nostr. Los lectores habituales pueden &lt;a href="https://nostrcompass.org/es/newsletters/2025-12-17-newsletter/#noticias">saltar adelante&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Nostr (Notes and Other Stuff Transmitted by Relays) es un protocolo descentralizado para redes sociales y mensajería. A diferencia de las plataformas tradicionales, Nostr no tiene servidor central, ninguna empresa lo controla y no tiene un punto único de fallo. Los usuarios poseen su identidad a través de pares de claves criptográficas, y el contenido fluye a través de servidores relay independientes que cualquiera puede ejecutar.&lt;/p>
&lt;p>&lt;strong>Cómo funciona:&lt;/strong> Los usuarios generan un par de claves (una clave privada llamada nsec y una clave pública llamada npub). La clave privada firma mensajes llamados &amp;ldquo;eventos&amp;rdquo;, y la clave pública sirve como tu identidad. Los eventos se envían a relays, que los almacenan y reenvían a otros usuarios. Debido a que controlas tus claves, puedes cambiar entre clientes o relays sin perder tu identidad o seguidores.&lt;/p>
&lt;p>&lt;strong>Por qué importa:&lt;/strong> Nostr proporciona resistencia a la censura a través de la diversidad de relays (si un relay te banea, otros aún pueden servir tu contenido), portabilidad (tu identidad funciona en cualquier aplicación Nostr) e interoperabilidad (todos los clientes Nostr hablan el mismo protocolo). No hay algoritmo decidiendo qué ves, sin anuncios y sin recolección de datos.&lt;/p>
&lt;p>&lt;strong>El ecosistema hoy:&lt;/strong> Nostr soporta microblogging (como Twitter/X), contenido largo (como Medium), mensajes directos, mercados, streaming en vivo y más. Los clientes incluyen Damus (iOS), Amethyst (Android), Primal, Coracle y docenas más. La integración con Lightning Network permite pagos instantáneos a través de &amp;ldquo;zaps&amp;rdquo;. El protocolo continúa evolucionando a través de NIPs (Nostr Implementation Possibilities), especificaciones impulsadas por la comunidad que extienden la funcionalidad.&lt;/p>
&lt;h2 id="news">Noticias&lt;/h2>
&lt;p>&lt;strong>NIP-BE Fusionado: Soporte para Bluetooth Low Energy&lt;/strong> - Una nueva capacidad significativa &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">aterrizó en el protocolo&lt;/a>. &lt;a href="https://nostrcompass.org/es/topics/nip-be/">NIP-BE&lt;/a> especifica cómo las aplicaciones Nostr pueden comunicarse y sincronizarse sobre Bluetooth Low Energy. Esto permite que las aplicaciones capaces de funcionar sin conexión sincronicen datos entre dispositivos cercanos sin conectividad a internet. La especificación adapta los patrones de relay WebSocket a las restricciones de BLE, usando compresión DEFLATE y mensajería fragmentada para manejar los tamaños MTU pequeños de BLE (20-256 bytes). Los dispositivos negocian roles basándose en la comparación de UUID, con el UUID más alto convirtiéndose en el servidor GATT.&lt;/p>
&lt;p>&lt;strong>MIP-05: Notificaciones Push que Preservan la Privacidad&lt;/strong> - El &lt;a href="https://nostrcompass.org/es/topics/marmot/">Protocolo Marmot&lt;/a> publicó &lt;a href="https://nostrcompass.org/es/topics/mip-05/">MIP-05&lt;/a> (&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">especificación&lt;/a>), una especificación para notificaciones push que mantienen la privacidad. Los sistemas push tradicionales requieren que los servidores conozcan los tokens de dispositivo e identidades de usuario; MIP-05 resuelve esto encriptando tokens de dispositivo con ECDH+HKDF y ChaCha20-Poly1305, usando claves efímeras para prevenir la correlación. Un protocolo gossip de tres eventos (kinds 447-449) sincroniza tokens encriptados entre miembros del grupo, y las notificaciones usan gift wrapping de &lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a> con tokens señuelo para ocultar tamaños de grupo. Esto permite a WhiteNoise y otros clientes Marmot entregar notificaciones oportunas sin comprometer la privacidad del usuario.&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10: Nuevo Esquema URI&lt;/strong> - El protocolo de medios &lt;a href="https://nostrcompass.org/es/topics/blossom/">Blossom&lt;/a> está obteniendo un esquema URI personalizado vía &lt;a href="https://nostrcompass.org/es/topics/bud-10/">BUD-10&lt;/a> (&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">especificación&lt;/a>). El nuevo formato &lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code> incorpora hash de archivo, extensión, tamaño, múltiples hints de servidor y pubkeys de autor para descubrimiento de servidor &lt;a href="https://nostrcompass.org/es/topics/bud-03/">BUD-03&lt;/a>. Esto hace que los enlaces de blob sean más resilientes que las URLs HTTP estáticas al permitir fallback automático entre servidores.&lt;/p>
&lt;p>&lt;strong>Actualizaciones del Mercado Shopstr&lt;/strong> - El mercado nativo de Nostr &lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">implementó Nostr Wallet Connect&lt;/a> (&lt;a href="https://nostrcompass.org/es/topics/nip-47/">NIP-47&lt;/a>) para pagos, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">añadió expiración de listados&lt;/a> usando &lt;a href="https://nostrcompass.org/es/topics/nip-40/">NIP-40&lt;/a>, e introdujo &lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">códigos de descuento&lt;/a> para vendedores.&lt;/p>
&lt;h2 id="nip-updates">Actualizaciones de NIP&lt;/h2>
&lt;p>Cambios recientes al &lt;a href="https://github.com/nostr-protocol/nips">repositorio de NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuevos NIPs:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Mensajería Bluetooth Low Energy y sincronización de dispositivos (&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - Estándar de Paywall/Contenido Premium para manejar contenido con acceso restringido dentro del protocolo (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Cambios Significativos:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Añadido array opcional &lt;code>languages&lt;/code> a metadatos de usuario Kind 0, permitiendo a los usuarios especificar múltiples idiomas preferidos usando etiquetas IETF BCP 47 para mejor descubrimiento de contenido y coincidencia de relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/2159">#2159&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - Añadido soporte de expiración de órdenes para trading P2P con etiquetas &lt;code>expires_at&lt;/code> y &lt;code>expiration&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2118">#2118&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Los eventos gift wrap ahora pueden ser eliminados vía solicitudes NIP-09/NIP-62 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2131">#2131&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Eliminadas etiquetas de hashtag y URL de marcadores genéricos; hashtags ahora usan kind 30015 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2133">#2133&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - Mejorados los reposts genéricos para eventos reemplazables con soporte de etiqueta &lt;code>a&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2132">#2132&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - Redacción refinada y añadido soporte de reacción kind 7 a DMs (&lt;a href="https://github.com/nostr-protocol/nips/pull/2098">#2098&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/es/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - Añadido campo &lt;code>self&lt;/code> para identificación de clave pública del relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/1764">#1764&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-01-and-nip-19">Profundización en NIP: NIP-01 y NIP-19&lt;/h2>
&lt;p>Para este número inaugural, cubrimos dos NIPs fundamentales que todo desarrollador de Nostr debería entender. Consulta nuestras páginas de temas para &lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a> y &lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a>.&lt;/p>
&lt;h3 id="nip-01-protocolo-básico">NIP-01: Protocolo Básico&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-01/">NIP-01&lt;/a> define el protocolo central. Todo en Nostr se construye sobre esta especificación.&lt;/p>
&lt;p>&lt;strong>Los eventos&lt;/strong> son el único tipo de objeto. Cada evento contiene:&lt;/p>
&lt;ul>
&lt;li>&lt;code>id&lt;/code>: Hash SHA256 del evento serializado (el identificador único del evento)&lt;/li>
&lt;li>&lt;code>pubkey&lt;/code>: La clave pública del creador (hex de 32 bytes, secp256k1)&lt;/li>
&lt;li>&lt;code>created_at&lt;/code>: Marca de tiempo Unix&lt;/li>
&lt;li>&lt;code>kind&lt;/code>: Entero que categoriza el tipo de evento&lt;/li>
&lt;li>&lt;code>tags&lt;/code>: Array de arrays para metadatos&lt;/li>
&lt;li>&lt;code>content&lt;/code>: La carga útil (la interpretación depende del kind)&lt;/li>
&lt;li>&lt;code>sig&lt;/code>: Firma Schnorr probando que la pubkey creó este evento&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Los kinds&lt;/strong> determinan cómo los relays almacenan eventos:&lt;/p>
&lt;ul>
&lt;li>Eventos regulares (1, 2, 4-44, 1000-9999): Almacenados normalmente, todas las versiones se mantienen&lt;/li>
&lt;li>Eventos reemplazables (0, 3, 10000-19999): Solo se mantiene el más reciente por pubkey&lt;/li>
&lt;li>Eventos efímeros (20000-29999): No almacenados, solo reenviados a suscriptores&lt;/li>
&lt;li>Eventos direccionables (30000-39999): Más reciente por combinación de pubkey + kind + etiqueta &lt;code>d&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Kind 0 son metadatos de usuario (perfil), kind 1 es una nota de texto (la publicación básica), kind 3 es la lista de seguidos.&lt;/p>
&lt;p>&lt;strong>Kind 1: Notas de Texto&lt;/strong> son el corazón del Nostr social. Un evento kind 1 es una publicación corta, similar a un tweet. El campo &lt;code>content&lt;/code> contiene el texto del mensaje (texto plano, aunque los clientes a menudo renderizan markdown). Las etiquetas permiten respuestas, menciones y referencias:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734480000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;¡Hola Nostr! Mira el trabajo de @jb55 en Damus.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;replied-to-event-id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;jb55-pubkey&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-byte-hex&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La etiqueta &lt;code>e&lt;/code> con marcador &amp;ldquo;reply&amp;rdquo; indica que esto es una respuesta (ver &lt;a href="https://nostrcompass.org/es/topics/nip-10/">NIP-10&lt;/a> para convenciones de hilos). La etiqueta &lt;code>p&lt;/code> menciona a un usuario, permitiendo a los clientes notificarle y renderizar su nombre en lugar de la pubkey cruda. Los clientes obtienen el evento kind 0 del usuario mencionado para obtener su nombre de pantalla e imagen.&lt;/p>
&lt;p>Para construir una línea de tiempo, un cliente se suscribe a eventos kind 1 de pubkeys seguidas: &lt;code>[&amp;quot;REQ&amp;quot;, &amp;quot;feed&amp;quot;, {&amp;quot;kinds&amp;quot;: [1], &amp;quot;authors&amp;quot;: [&amp;quot;&amp;lt;pubkey1&amp;gt;&amp;quot;, &amp;quot;&amp;lt;pubkey2&amp;gt;&amp;quot;, ...], &amp;quot;limit&amp;quot;: 50}]&lt;/code>. El relay devuelve notas coincidentes, y el cliente las renderiza cronológicamente.&lt;/p>
&lt;p>&lt;strong>Los eventos direccionables&lt;/strong> (30000-39999) funcionan como eventos reemplazables pero usan una etiqueta &lt;code>d&lt;/code> como identificador adicional. El relay mantiene solo la última versión de cada combinación pubkey + kind + d-tag. Esto permite artículos editables, listados de productos, o cualquier caso donde necesites múltiples elementos reemplazables por usuario.&lt;/p>
&lt;p>&lt;strong>Las etiquetas&lt;/strong> son arrays donde el primer elemento es el nombre de la etiqueta. Las etiquetas estándar de una sola letra (&lt;code>e&lt;/code>, &lt;code>p&lt;/code>, &lt;code>a&lt;/code>, &lt;code>d&lt;/code>, &lt;code>t&lt;/code>) son indexadas por relays para consultas eficientes. Por ejemplo, &lt;code>[&amp;quot;e&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt;&amp;quot;]&lt;/code> referencia otro evento, &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;&amp;lt;pubkey&amp;gt;&amp;quot;]&lt;/code> referencia un usuario.&lt;/p>
&lt;p>&lt;strong>Comunicación Cliente-Relay&lt;/strong> usa conexiones WebSocket con arrays JSON como mensajes. El primer elemento identifica el tipo de mensaje.&lt;/p>
&lt;p>De cliente a relay:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;event&amp;gt;]&lt;/code> - Publica un evento al relay&lt;/li>
&lt;li>&lt;code>[&amp;quot;REQ&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;filter&amp;gt;, ...]&lt;/code> - Suscribirse a eventos que coincidan con el/los filtro(s)&lt;/li>
&lt;li>&lt;code>[&amp;quot;CLOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - Terminar una suscripción&lt;/li>
&lt;/ul>
&lt;p>De relay a cliente:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;event&amp;gt;]&lt;/code> - Entrega un evento que coincide con tu suscripción&lt;/li>
&lt;li>&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - &amp;ldquo;Fin de eventos almacenados&amp;rdquo; - el relay ha enviado todos los coincidentes históricos y ahora solo enviará nuevos eventos conforme lleguen&lt;/li>
&lt;li>&lt;code>[&amp;quot;OK&amp;quot;, &amp;lt;event-id&amp;gt;, &amp;lt;true|false&amp;gt;, &amp;lt;message&amp;gt;]&lt;/code> - Reconoce si un evento fue aceptado o rechazado (y por qué)&lt;/li>
&lt;li>&lt;code>[&amp;quot;NOTICE&amp;quot;, &amp;lt;message&amp;gt;]&lt;/code> - Mensaje legible por humanos del relay&lt;/li>
&lt;/ul>
&lt;p>El flujo de suscripción: el cliente envía &lt;code>REQ&lt;/code> con un ID de suscripción y filtro, el relay responde con mensajes &lt;code>EVENT&lt;/code> coincidentes, luego envía &lt;code>EOSE&lt;/code> para señalar que está al día con el historial. Después de &lt;code>EOSE&lt;/code>, cualquier nuevo mensaje &lt;code>EVENT&lt;/code> es en tiempo real. El cliente envía &lt;code>CLOSE&lt;/code> cuando termina.&lt;/p>
&lt;p>&lt;strong>Los filtros&lt;/strong> especifican qué eventos recuperar. Un objeto filtro puede incluir: &lt;code>ids&lt;/code> (IDs de evento), &lt;code>authors&lt;/code> (pubkeys), &lt;code>kinds&lt;/code> (tipos de evento), &lt;code>#e&lt;/code>/&lt;code>#p&lt;/code>/&lt;code>#t&lt;/code> (valores de etiqueta), &lt;code>since&lt;/code>/&lt;code>until&lt;/code> (marcas de tiempo), y &lt;code>limit&lt;/code> (máximo de resultados). Todas las condiciones dentro de un filtro usan lógica AND. Puedes incluir múltiples filtros en un &lt;code>REQ&lt;/code>, y se combinan con lógica OR - útil para obtener diferentes tipos de evento en una suscripción.&lt;/p>
&lt;h3 id="nip-19-identificadores-codificados-en-bech32">NIP-19: Identificadores Codificados en Bech32&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/es/topics/nip-19/">NIP-19&lt;/a> define los formatos amigables para humanos que ves en todas partes en Nostr: npub, nsec, note, y más. Estos no se usan en el protocolo mismo (que usa hex), pero son esenciales para compartir y mostrar.&lt;/p>
&lt;p>&lt;strong>¿Por qué bech32?&lt;/strong> Las claves hex crudas son propensas a errores al copiar y difíciles de distinguir visualmente. La codificación bech32 añade un prefijo legible y suma de verificación. Puedes distinguir inmediatamente un &lt;code>npub&lt;/code> (clave pública) de un &lt;code>nsec&lt;/code> (clave privada) o &lt;code>note&lt;/code> (ID de evento).&lt;/p>
&lt;p>&lt;strong>Formatos básicos&lt;/strong> codifican valores crudos de 32 bytes:&lt;/p>
&lt;ul>
&lt;li>&lt;code>npub&lt;/code> - Clave pública (tu identidad, segura para compartir)&lt;/li>
&lt;li>&lt;code>nsec&lt;/code> - Clave privada (mantener en secreto, usada para firmar)&lt;/li>
&lt;li>&lt;code>note&lt;/code> - ID de evento (referencia un evento específico)&lt;/li>
&lt;/ul>
&lt;p>Ejemplo: La pubkey hex &lt;code>3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&lt;/code> se convierte en &lt;code>npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Identificadores compartibles&lt;/strong> incluyen metadatos usando codificación TLV (Type-Length-Value):&lt;/p>
&lt;ul>
&lt;li>&lt;code>nprofile&lt;/code> - Perfil con hints de relay (ayuda a los clientes a encontrar al usuario)&lt;/li>
&lt;li>&lt;code>nevent&lt;/code> - Evento con hints de relay, pubkey de autor y kind&lt;/li>
&lt;li>&lt;code>naddr&lt;/code> - Referencia de evento direccionable (pubkey + kind + d-tag + relays)&lt;/li>
&lt;/ul>
&lt;p>Estos resuelven un problema clave: si alguien comparte un ID de nota, ¿cómo sabes qué relay lo tiene? Un &lt;code>nevent&lt;/code> agrupa el ID de evento con relays sugeridos, haciendo más confiable compartir.&lt;/p>
&lt;p>&lt;strong>Importante:&lt;/strong> Nunca uses formatos bech32 en el protocolo mismo. Los eventos, mensajes de relay y respuestas NIP-05 deben usar hex. Bech32 es puramente para interfaces humanas: visualización, copiar/pegar, códigos QR y URLs.&lt;/p>
&lt;h2 id="releases">Lanzamientos&lt;/h2>
&lt;p>&lt;strong>Amber v4.0.4&lt;/strong> - La aplicación firmadora de Android corrige un NullPointerException, mejora el rendimiento en la pantalla de actividad y añade traducciones para algunos tipos de evento. El lanzamiento anterior v4.0.3 añadió UI renovada de encriptación/desencriptación, exportación/importación de cuentas, manejo de relay por cuenta, soporte de ping bunker y reporte de errores. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.4">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Coracle 0.6.28&lt;/strong> - Lanzamiento de corrección de errores para el cliente web. Corregidos feeds de temas, manejo de imágenes cuando imgproxy está deshabilitado, y linkificación de fuentes de resaltado que no son enlaces. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.28">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Flotilla v1.6.2&lt;/strong> - El cliente de comunidades estilo Discord corrige scroll modal y problemas de estilo. Lanzamientos anteriores en este ciclo añadieron insignias y sonidos opcionales para notificaciones, renderizado de enlaces mejorado, escaneo de códigos QR para enlaces de invitación, y configuración simplificada de billetera. &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.6.2">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>nak v0.17.2&lt;/strong> - La herramienta de línea de comandos Nostr añadió un nuevo comando &lt;code>nip&lt;/code> para búsqueda rápida de referencia NIP, más correcciones para manejo de repositorio git y procesamiento de eventos stdin. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.2">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>White Noise v0.2.1&lt;/strong> - Lanzamiento mayor para la aplicación de mensajería encriptada basada en MLS añadiendo compartir imágenes vía Blossom, sincronización en segundo plano, notificaciones push, localización en 8 idiomas, y gestión de miembros de grupo. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.2.1%2B14">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Amethyst v1.04.2&lt;/strong> - Lanzamiento con nuevas características introduciendo listas/packs de seguidos, nuevos filtros de línea de tiempo, galería de imágenes, y compresión de video H.265 (archivos 50% más pequeños). Migración completa a Kotlin Multiplatform. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.04.2">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.5&lt;/strong> - Actualización de la plataforma de trading P2P con soporte de expiración de órdenes NIP-69 y respuestas mejoradas de historial de operaciones. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.5">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Nosflare v8.9.26&lt;/strong> - Relay Nostr serverless construido en infraestructura Cloudflare. Este lanzamiento entrega un hotfix crítico que aborda un error que podía causar fallos de websocket, asegurando conexiones más estables para usuarios y aplicaciones que dependen del relay. &lt;a href="https://github.com/Spl0itable/nosflare/releases/tag/v8.9.26">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Noscall v0.4.1&lt;/strong> - Aplicación de llamadas de audio y video seguras basada en Nostr. Este lanzamiento mejora la UI pop-up en la página Me y corrige varios problemas conocidos, resultando en mejor estabilidad y confiabilidad de llamadas. &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.4.1-release">Lanzamiento&lt;/a>&lt;/p>
&lt;p>&lt;strong>Gitplaza v0.25.0&lt;/strong> - Cliente de escritorio Nostr enfocado en actividad relacionada con Git. Este lanzamiento introduce un filtro de kind avanzado para el feed del inbox, incluye zaps regulares en filtros, y simplifica el formato de texto de pestañas. Las mejoras de rendimiento optimizan la carga del árbol de comentarios, reducen consultas innecesarias a base de datos, y usan ramas de comentarios en caché para visualización más rápida. &lt;a href="https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0">Lanzamiento&lt;/a>&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Cambios notables de código y documentación&lt;/h2>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Enfoque en estabilidad con correcciones de crashes y UI: &lt;a href="https://github.com/damus-io/damus/pull/3377">corrección de salto de cursor&lt;/a> para la vista de composición, &lt;a href="https://github.com/damus-io/damus/pull/3366">rediseño de interfaz NostrDB&lt;/a> usando tipos &lt;code>~Copyable&lt;/code> de Swift para seguridad de transacciones, &lt;a href="https://github.com/damus-io/damus/pull/3341">estabilidad de UI de hilos&lt;/a> corrigiendo reinstanciación de barra de acciones, &lt;a href="https://github.com/damus-io/damus/pull/3346">congelación de lista de silenciados&lt;/a> por ciclos de AttributeGraph, y &lt;a href="https://github.com/damus-io/damus/pull/3334">crash de perfil&lt;/a> por limpieza de transacciones entre hilos. También añadió directrices &lt;a href="https://github.com/damus-io/damus/pull/3293">AGENTS.md&lt;/a> para agentes de código IA.&lt;/p>
&lt;h3 id="notedeck-desktop-mobile">Notedeck (Escritorio/Móvil)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1191">Almacenamiento seguro de claves&lt;/a> mueve nsec al almacén seguro del SO con migración automática. &lt;a href="https://github.com/damus-io/notedeck/pull/1201">Filtrado de notas futuras&lt;/a> oculta eventos fechados 24+ horas adelante (anti-spam). &lt;a href="https://github.com/damus-io/notedeck/pull/1183">Copia de nevent&lt;/a> ahora incluye hints de relay. También: &lt;a href="https://github.com/damus-io/notedeck/pull/1212">adición rápida de columna de perfil&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1208">navegación por teclado&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1210">optimización de carga de medios&lt;/a>.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Soporte de &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1555">firma remota NIP-46&lt;/a> para Nostr Connect. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1586">Organización de marcadores&lt;/a> con gestión de listas públicas/privadas. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1596">Corrección de compatibilidad strfry&lt;/a> para casos extremos de análisis de info de relay.&lt;/p>
&lt;h3 id="primal-android">Primal (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/788">Deep links de Nostr Connect&lt;/a> para URLs &lt;code>nostrconnect://&lt;/code>. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/787">Inicio de sesión remoto&lt;/a> vía escaneo QR para conexiones bunker. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/783">Corrección de condición de carrera de conexión&lt;/a>.&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (Mensajería Encriptada)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/890">Corrección de retención de datos de app&lt;/a> desactiva auto-backup de Android para privacidad. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/861">Comportamiento de scroll de chat&lt;/a> preserva la posición al leer historial.&lt;/p>
&lt;h3 id="zeus-lightning-wallet">Zeus (Billetera Lightning)&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/pull/3407">Pagos paralelos NIP-47&lt;/a> para mayor rendimiento en zaps por lotes.&lt;/p>
&lt;h2 id="mejores-prácticas-para-desarrolladores">Mejores Prácticas para Desarrolladores&lt;/h2>
&lt;p>&lt;strong>Valida Eventos Auth de Forma Defensiva&lt;/strong> - go-nostr corrigió un &lt;a href="https://github.com/nbd-wtf/go-nostr/pull/182">panic en validación NIP-42&lt;/a> cuando faltaba la etiqueta relay. Siempre verifica las etiquetas requeridas antes de acceder a ellas, incluso en flujos auth donde esperas eventos bien formados.&lt;/p>
&lt;p>&lt;strong>Limita Tasa por Estado de Autenticación&lt;/strong> - khatru añadió &lt;a href="https://github.com/fiatjaf/khatru/pull/57">limitación de tasa basada en NIP-42&lt;/a>, permitiendo a los relays aplicar diferentes límites para conexiones autenticadas vs anónimas. Considera límites escalonados basados en estado auth en lugar de restricciones generales.&lt;/p>
&lt;p>&lt;strong>Usa Paginación por Cursor para Listas&lt;/strong> - Blossom &lt;a href="https://github.com/hzrd149/blossom/pull/65">reemplazó paginación basada en fecha&lt;/a> con paginación basada en cursor en el endpoint &lt;code>/list&lt;/code>. La paginación basada en fecha falla cuando items comparten timestamps; los cursores proporcionan iteración confiable.&lt;/p>
&lt;p>&lt;strong>Validación de Esquema para Tipos de Evento&lt;/strong> - El proyecto &lt;a href="https://github.com/nostrability/schemata">nostrability/schemata&lt;/a> proporciona esquemas JSON para validar eventos compatibles con NIP. Considera integrar validación de esquema en desarrollo para detectar eventos malformados antes de que lleguen a los relays.&lt;/p>
&lt;hr>
&lt;p>Eso es todo por esta semana. ¿Construyendo algo? ¿Tienes noticias para compartir? ¿Quieres que cubramos tu proyecto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contáctanos vía NIP-17 DM&lt;/a> o encuéntranos en Nostr.&lt;/p></content:encoded></item></channel></rss>