<?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>Newsletter on Nostr Compass</title><link>https://nostrcompass.org/it/newsletters/</link><description>Recent content in Newsletter on Nostr Compass</description><generator>Hugo</generator><language>it</language><atom:link href="https://nostrcompass.org/it/newsletters/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nostr Compass #26</title><link>https://nostrcompass.org/it/newsletters/2026-06-10-newsletter/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-10-newsletter/</guid><description>&lt;p>L&amp;rsquo;organizzazione Marmot Protocol apre tre nuovi repo per una bozza di protocollo v2 e una linea di client nativi: un workspace Rust chiamato &lt;code>darkmatter&lt;/code>, un&amp;rsquo;app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> e un&amp;rsquo;app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. L&amp;rsquo;originale Flutter Whitenoise viene archiviato. Chama comprime diciassette release in una settimana e attraversa la linea di app standalone con v3.0.0 prima di portare un ridisegno completo della UI della trade room e storefront per venditore in v3.1.0, sopra a share Shamir solo per il detentore, sostituzione dell&amp;rsquo;arbitro, routing di community mondiale e notifiche di trade end-to-end. Coracle lancia un servizio di relay ospitato a pagamento sostenuto dallo stack open-source Caravel e zooid, con integrazione profonda con Flotilla pianificata. Angor passa a mainnet di default in v0.2.30 e porta un test di funding UAT a 3 utenti in v0.2.29. Amethyst porta 41 PR non rilasciate che continuano il lavoro NIP-32 / NIP-F4 / Tor della scorsa settimana. NIP-67 (hint di completezza EOSE) e autocomplete NIP-50 sono mergiati, chiudendo due gap di correttezza di lunga data nel protocollo relay core. NIP-GART propone un wire format a tutela della privacy per gli alert di emergenza, e NIP-46 acquisisce un metodo di logout.&lt;/p></description><content:encoded>&lt;p>L&amp;rsquo;organizzazione Marmot Protocol apre tre nuovi repo per una bozza di protocollo v2 e una linea di client nativi: un workspace Rust chiamato &lt;code>darkmatter&lt;/code>, un&amp;rsquo;app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> e un&amp;rsquo;app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. L&amp;rsquo;originale Flutter Whitenoise viene archiviato. Chama comprime diciassette release in una settimana e attraversa la linea di app standalone con v3.0.0 prima di portare un ridisegno completo della UI della trade room e storefront per venditore in v3.1.0, sopra a share Shamir solo per il detentore, sostituzione dell&amp;rsquo;arbitro, routing di community mondiale e notifiche di trade end-to-end. Coracle lancia un servizio di relay ospitato a pagamento sostenuto dallo stack open-source Caravel e zooid, con integrazione profonda con Flotilla pianificata. Angor passa a mainnet di default in v0.2.30 e porta un test di funding UAT a 3 utenti in v0.2.29. Amethyst porta 41 PR non rilasciate che continuano il lavoro NIP-32 / NIP-F4 / Tor della scorsa settimana. NIP-67 (hint di completezza EOSE) e autocomplete NIP-50 sono mergiati, chiudendo due gap di correttezza di lunga data nel protocollo relay core. NIP-GART propone un wire format a tutela della privacy per gli alert di emergenza, e NIP-46 acquisisce un metodo di logout.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter-ridisegno-del-protocollo-client-nativi-app-flutter-archiviata">Marmot v2 (Dark Matter): ridisegno del protocollo, client nativi, app Flutter archiviata&lt;/h3>
&lt;p>Tre nuovi repo sono apparsi sotto l&amp;rsquo;organizzazione GitHub &lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a> questa settimana, che insieme formano la forma dei primi progressi di una bozza di protocollo Marmot v2 e una linea di client nativi che sostituisce la linea di app Flutter. &lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust, creato il 13 maggio, trentaquattro commit negli ultimi sette giorni) contiene la bozza del protocollo v2 in &lt;code>spec/&lt;/code>, un engine CGKA sostenuto da OpenMLS in &lt;code>crates/cgka-engine&lt;/code>, un simulatore di conformità con property test e un modello formale Tamarin per prove di convergenza. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift, creato il 25 maggio) è un client SwiftUI sostenuto da un xcframework &lt;code>MarmotKit&lt;/code> UniFFI vendorizzato generato dal workspace Rust. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose, creato il 25 maggio) siede sugli stessi binding Rust. L&amp;rsquo;originale Flutter Whitenoise è stato contrassegnato come &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 nuovo repo Dart &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> porta la linea Flutter attiva in parallelo.&lt;/p>
&lt;p>Leggete questo come progresso iniziale verso un Marmot più affidabile, non come un pivot finito. Il README di darkmatter si etichetta come &amp;ldquo;Candidate Marmot v2 protocol draft, CGKA engine, and conformance workspace&amp;rdquo; e dice direttamente: &amp;ldquo;MDK remains the deployed Rust protocol implementation until this draft and engine are adopted.&amp;rdquo; All&amp;rsquo;interno del workspace, il crate cgka-engine è taggato &lt;code>0.1.0&lt;/code>, &amp;ldquo;single internal consumer, not semver-stable&amp;rdquo;. Ogni pagina di spec porta &amp;ldquo;Status: draft for internal review&amp;rdquo;. Tre stelle sul repo del workspace e zero sulle app iOS e Android confermano che il lavoro è pre-annuncio. Direzione, ambito e disciplina sono il segnale qui; la prontezza per la produzione non è la rivendicazione.&lt;/p>
&lt;p>La bozza del protocollo rende concreti i delta da v1 a v2. L&amp;rsquo;estensione MLS monolitica &lt;code>marmot_group_data&lt;/code> di MIP-01, che ha portato nome del gruppo, descrizione, pubkey admin, id di routing del gruppo Nostr, lista relay, dati immagine del gruppo e impostazioni di messaggi a scomparsa sotto un unico ombrello sin dall&amp;rsquo;inizio di Marmot, viene &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">divisa in componenti applicativi versionati&lt;/a>: &lt;code>marmot.group.profile.v1&lt;/code> per nome e descrizione, &lt;code>marmot.group.admin-policy.v1&lt;/code> per pubkey admin, &lt;code>marmot.transport.nostr.routing.v1&lt;/code> per il &lt;code>nostr_group_id&lt;/code> casuale e la lista relay canonica, &lt;code>marmot.group.blossom.image.v1&lt;/code> per hash immagine, chiave di cifratura, nonce e chiave di upload, e &lt;code>marmot.group.message-retention.v1&lt;/code> per i secondi dei messaggi a scomparsa. Ciascun componente possiede i propri byte esatti e il proprio percorso di versionamento, così una funzionalità futura può revisionare un componente senza forzare il resto dello stato del gruppo a ripercorrere il consenso sulle estensioni MLS. Le credenziali MIP-00 ottengono anche un nuovo documento fondazionale &lt;code>account-identity-proof-v1.md&lt;/code>, indicato come &amp;ldquo;new in v2 and breaking&amp;rdquo;. La prova di identità vive ora sulla propria superficie, separata dalla costruzione del KeyPackage.&lt;/p>
&lt;p>I delta della libreria supportano il ridisegno della spec. &lt;code>cgka-engine&lt;/code> è la nuova macchina a stati locale del gruppo: avvolge OpenMLS, possiede gli stati di epoch &lt;code>Stable&lt;/code>, &lt;code>PendingPublish&lt;/code>, &lt;code>Merging&lt;/code> e &lt;code>Recovering&lt;/code>, traduce gli intent in commit MLS, restituisce valori tipizzati &lt;code>IngestOutcome&lt;/code> e &lt;code>GroupEvent&lt;/code> per ogni inviluppo di trasporto in ingresso e rilascia esplicitamente nessun trasporto e nessuna persistenza. Un trait &lt;code>TransportPeeler&lt;/code> separa Nostr dall&amp;rsquo;engine, e un trait &lt;code>StorageProvider&lt;/code> separa SQLite (via &lt;code>storage-sqlite&lt;/code>, backed da SQLCipher) dall&amp;rsquo;engine. L&amp;rsquo;MDK di oggi impacchetta tutto ciò insieme; dividere i layer consente a un engine di stare sotto un trasporto relay Nostr ora e i &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">trasporti QUIC stream e broker&lt;/a> anch&amp;rsquo;essi rilasciati più tardi, senza riscrivere il modello di convergenza. La convergenza stessa è documentata come &lt;code>distributed-convergence.md&lt;/code> e provata in un modello Tamarin che copre selezione deterministica di branch, eleggibilità gated dalla policy, replay di anchor mantenuti, rifiuto di branch obsoleti, riordinamento della consegna, duplicazione, invalidazione dell&amp;rsquo;output applicativo, handoff welcome/commit, consumo di proposal e gating in uscita durante la sync. I property test Rust controllano poi che l&amp;rsquo;engine segua le stesse regole con oggetti OpenMLS reali e l&amp;rsquo;harness del simulatore. Il lavoro di affidabilità con metodi formali di questa portata è assente dallo stack Marmot attuale.&lt;/p>
&lt;p>Entrambi i client nativi abbandonano Flutter per toolkit UI nativi della piattaforma. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> è puro SwiftUI con una Notification Service Extension che decifra i push wake MIP-05 sul dispositivo, vendorizza un pacchetto Swift &lt;code>MarmotKit&lt;/code> generato dal workspace Rust e si registra sotto il bundle ID e l&amp;rsquo;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> è Kotlin e Jetpack Compose, con una build pilotata da &lt;code>just&lt;/code> che produce un APK &lt;code>arm64-v8a&lt;/code> firmato e legge endpoint di telemetria da &lt;code>local.properties&lt;/code>. Il README Android dichiara direttamente il principio architetturale: &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; Questo rispecchia la disciplina di confine che il README di cgka-engine impone nel layer Rust, applicata al layer UI.&lt;/p>
&lt;p>I client nativi contano per Marmot perché la debolezza più citata del protocollo è stata l&amp;rsquo;affidabilità mobile in condizioni di consegna non uniformi: notification wake mancati, race di commit MLS durante fluttuazioni di rete, limiti di background-fetch che bloccano gli avanzamenti di epoch. SwiftUI e Compose danno ai client accesso diretto alle primitive di background-processing della piattaforma che Flutter raggiunge tramite un bridge plugin, e il percorso di binding UniFFI mantiene la logica di protocollo in un unico workspace Rust rilasciato come libreria statica su entrambe le piattaforme. La linea Flutter Whitenoise continua nel repo non archiviato &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a>, quindi l&amp;rsquo;annuncio è additivo: una nuova linea di client nativi corre accanto all&amp;rsquo;app Flutter mentre la spec v2 converge. Il cutover di produzione da MDK o dall&amp;rsquo;attuale app Whitenoise attende che bozza, engine e client raggiungano release pronte per la produzione.&lt;/p>
&lt;h3 id="chama-v200-fino-a-v310-escrow-p2p-standalone-in-una-settimana">Chama v2.0.0 fino a v3.1.0: escrow P2P standalone in una settimana&lt;/h3>
&lt;p>Il client di escrow P2P Nostr-native introdotto nella Newsletter #25 alla v1.3.0 ha rilasciato diciassette release taggate negli ultimi sette giorni, terminando a &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> il 9 giugno con un ridisegno della UI della trade room e storefront per venditore. La scia di versioni racconta la storia: &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a> è la base BREAKING, poi &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> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a> chiudono i gap della funding-rail Fedi WebView; &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> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a> rafforzano il layer dell&amp;rsquo;arbitro; &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> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a> aggiungono superfici di self-custody e routing di community mondiale; &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> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a> stratificano copia di chiavi in inglese semplice, applicazioni di gruppo, arbitraggio di deadline di disputa e reputazione. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a> lega il pacchetto insieme con notifiche di trade end-to-end, e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> del 9 giugno ridisegna la schermata di trade attorno a una spina di progresso Reserved → Locked → Settled, card di azione con colori di ruolo e una classe di storefront per venditore (curated swap, loanbook e bill) che rilascia annunci.&lt;/p>
&lt;p>Il pivot architetturale vive in v2.0.0. Il formato LOCK dell&amp;rsquo;escrow è cambiato così ogni share di uno split Shamir 2-di-3 è cifrata solo verso il suo detentore (sharePolicy &lt;code>holder-only-v1&lt;/code>). L&amp;rsquo;ecash bearer della federazione non si ricostruisce più da un singolo partecipante da solo, chiudendo un percorso in cui una parte malevola con sia la propria share sia una share detenuta dalla federazione poteva completare il trade senza consenso. I client pre-2.0 falliscono in modo evidente con &amp;ldquo;can&amp;rsquo;t find your share&amp;rdquo;; il trade non può completarsi su un client obsoleto, e nessun fondo viene perso nel processo. Un lock v2.0 richiede che ogni parte sia su v2.x per essere regolata. v2.0.0 ha aggiunto anche storefront multi-unità e una vista Market solo-sats.&lt;/p>
&lt;p>v2.1.0 ha introdotto la sostituzione dell&amp;rsquo;arbitro: la share dell&amp;rsquo;arbitro all&amp;rsquo;indice Shamir 2 è ora cifrata a un ordine di priorità deterministico sopra il pool di arbitri della community, così un arbitro assente può essere sostituito senza bloccare il trade. v2.2.0 ha provato che la sostituzione ha funzionato sul campo su un trade da ₿121 e ha aggiunto backup di healing-substitution. v2.3.0 ha chiuso l&amp;rsquo;ultimo gap di front-running dell&amp;rsquo;arbitro controllando l&amp;rsquo;appartenenza dell&amp;rsquo;arbitro dell&amp;rsquo;annuncio alla community al momento del lock, e v2.3.1 ha chiuso la race gemella in cui uno slot di arbitro auto-assegnato era un&amp;rsquo;anteprima finché il lock non li insediava.&lt;/p>
&lt;p>Le superfici di self-custody sono arrivate in v2.4.0 (frase di recupero BIP-39 per il wallet ecash Fedimint, memorizzato cifrato su Nostr) e v2.5.0 (backup master nsec che possiede l&amp;rsquo;identità Nostr e il seed del wallet). v2.6.0 ha rifatto l&amp;rsquo;onboarding attorno a un picker di community globale così gli utenti in paesi senza una Chama locale sono instradati alla federazione più vicina; le build precedenti facevano rimbalzare l&amp;rsquo;utente senza fallback. v2.7.0 ha riscritto la schermata di chiave di recupero in inglese semplice (&amp;ldquo;the only key to your account and the money in it; Chama never sees it and can&amp;rsquo;t reset it; if you lose it, no one can get your account back&amp;rdquo;). v2.8.0 ha aggiunto applicazioni di gruppo, tema chiaro/scuro e due nuovi kind di evento (38120 roster, 38121 application). v2.9.0 ha cambiato la risoluzione di disputa alla deadline: i trade contestati che raggiungono la loro scadenza si risolvono ora per ruling dell&amp;rsquo;arbitro; il comportamento precedente rimborsava automaticamente. La release è marcata COORDINATED così tutte le parti in una disputa devono aggiornarsi. v2.10.0 ha aggiunto rating per-trade pollice su/pollice giù come nuovo kind di evento 38123.&lt;/p>
&lt;p>v3.0.0 è la milestone in cui l&amp;rsquo;app smette di aver bisogno di una community di coordinamento per operare. Le notifiche di trade end-to-end pingano l&amp;rsquo;utente solo sulle transizioni di stato attuabili: la controparte ha lockato i sats, payout pronto per essere reclamato, la disputa richiede la decisione dell&amp;rsquo;utente come arbitro, o trade regolato o scaduto. Un toggle nella schermata Me accende o spegne le notifiche, e il prompt di permesso scatta solo quando il toggle è abilitato. La deduplicazione fire-once impedisce che un ricaricamento di stato inneschi una tempesta di alert. Un bug di guardrail wrong-chama è stato anche chiuso in &lt;a href="https://github.com/jesuspirate/chama/pull/103">PR #103&lt;/a>, dove le versioni precedenti potevano contrassegnare un annuncio con l&amp;rsquo;etichetta di una chama ma la federazione di un&amp;rsquo;altra chama. I bundle desktop Windows e Linux sono rilasciati con la release; il dmg macOS è trattenuto finché la firma e la notarizzazione non arrivano.&lt;/p>
&lt;p>Chama si unisce ora a Mostro e Shopstr come marketplace Nostr-native, distinta per architettura serverless, escrow Shamir 2-di-3 supportato da Fedimint, cifratura di share solo per il detentore e l&amp;rsquo;unica delle tre che rilascia un client desktop e mobile autonomo senza una community di coordinamento.&lt;/p>
&lt;h3 id="coracle-hosting-servizio-relay-a-pagamento-più-stack-caravel-open-source">Coracle Hosting: servizio relay a pagamento più stack Caravel open-source&lt;/h3>
&lt;p>Il 3 giugno Hodlbod ha &lt;a href="https://nos.lol/e/f8586160cd12df479c261397353c99e6f3e4d870b616382e1b4338bad3ab498a">annunciato Coracle Hosting&lt;/a> a &lt;a href="https://hosting.coracle.social">hosting.coracle.social&lt;/a>, un servizio di relay di community ospitato che accetta pagamenti lightning ricorrenti su NWC o carta. Il servizio è alimentato da &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, il frontend di billing e provisioning di Coracle, e &lt;a href="https://gitea.coracle.social/coracle/zooid">zooid&lt;/a>, un runtime di relay che ospita molti relay virtuali su una singola macchina. Entrambi sono open source sul gitea self-hosted di Coracle. Caravel è rilasciato con integrazione opzionale &lt;a href="https://livekit.io">livekit&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> che gli operatori possono abilitare per relay. Un tier gratuito con limiti di conteggio membri consente agli operatori di valutare il servizio prima di impegnare dettagli di pagamento.&lt;/p>
&lt;p>Hodlbod è schietto sul modello di business: monetizzare l&amp;rsquo;open source vendendo una versione ospitata di uno stack che chiunque altro può anche far girare. Il fossato competitivo è l&amp;rsquo;integrazione &lt;a href="https://flotilla.social">Flotilla&lt;/a>, che è il prossimo passo pianificato. Flotilla possiede la superficie utente, così l&amp;rsquo;opzione ospitata servita dall&amp;rsquo;interno di Flotilla diventa il percorso di default per qualunque utente che preferisca infrastruttura gestita. Hodlbod ha offerto di aggiungere altri operatori Caravel al picker di hosting alternativo di Flotilla se si mettono in contatto, tenendo aperta la porta a un mercato di hosting federato.&lt;/p>
&lt;p>Caravel si unisce a &lt;a href="https://relay.tools">relay.tools&lt;/a> come piattaforma pubblica di provisioning di relay Nostr con tier a pagamento per membro. relay.tools precede Caravel ed è rilasciato come il servizio dominante di creazione di relay oggi, con la propria directory di relay di community e flussi di join per membri o moderatori a pagamento. La caratteristica distintiva di Caravel è lo stack coordinato: il runtime del relay (zooid), il frontend di billing e provisioning (Caravel stesso) e il picker lato client (integrazione con Flotilla, ancora in corso) sono rilasciati come un unico design. L&amp;rsquo;altra caratteristica distintiva è la densità many-relay-per-process di zooid, in cui i relay dei clienti condividono un singolo processo host così l&amp;rsquo;operatore ammortizza i costi di hosting su molte piccole community. Questo è lo stesso argomento di densità che ha reso il web hosting condiviso praticabile all&amp;rsquo;inizio degli anni 2000, applicato al layer relay di Nostr.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="angor-v0229-e-v0230-default-mainnet-e-test-uat-funding-a-3-utenti">Angor v0.2.29 e v0.2.30: default mainnet e test UAT funding a 3 utenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.29">Angor v0.2.29&lt;/a> del 4 giugno e &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.30">v0.2.30&lt;/a> dell'8 giugno sono le due release di questa settimana per il protocollo decentralizzato di funding Bitcoin-e-Nostr. La modifica principale di v0.2.30 è &lt;a href="https://github.com/block-core/angor/pull/893">PR #893&lt;/a>, che porta la rete di default a mainnet. Angor è ancora rilasciato come release alpha unstable, ma lo switch al default mainnet segnala che il protocollo è oltre la fase solo testnet per i client desktop e mobile. v0.2.30 porta anche un flusso mobile di creazione di progetto single-tap con upload immagine e reset dello scroll (&lt;a href="https://github.com/block-core/angor/pull/889">PR #889&lt;/a>) e risolve una race condition in cui lo spinner di invoice lightning poteva bloccarsi (&lt;a href="https://github.com/block-core/angor/pull/890">PR #890&lt;/a>).&lt;/p>
&lt;p>v0.2.29 ha aggiunto un test UAT end-to-end in &lt;a href="https://github.com/block-core/angor/pull/881">PR #881&lt;/a> che copre 3-user send funds su 10 round con spese non confermate, il primo test di flusso di funding multi-utente nella suite di test Angor. La release ha aggiunto anche un piano di implementazione per una CLI Angor e un server MCP (&lt;a href="https://github.com/block-core/angor/pull/792">PR #792&lt;/a>), con miglioramenti CLI per il workflow di test MCP in &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> di DavidGershony ha corretto un invoice lightning Boltz che usava la rete sbagliata dopo un cambio di rete a runtime, un bug che sarebbe emerso in produzione dopo il default mainnet di v0.2.30. Le impostazioni offrono ora una purga opzionale del file wallet di recupero durante il data wipe (&lt;a href="https://github.com/block-core/angor/pull/883">PR #883&lt;/a>).&lt;/p>
&lt;h3 id="sprout-v0315-refresh-del-ttl-dei-canali-effimeri-e-comandi-slash-acp">Sprout v0.3.15: refresh del TTL dei canali effimeri e comandi 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>, rilasciato il 10 giugno, è l&amp;rsquo;ottava release in una serie iniziata con v0.3.7 il 2 giugno. La Newsletter #25 ha coperto la serie da v0.3.1 a v0.3.6 con l&amp;rsquo;integrazione mesh-llm e il lavoro sulle sezioni di canale; da v0.3.7 a v0.3.15 sono a valle di quello, focalizzate su rifiniture e alcune aggiunte rivolte all&amp;rsquo;utente. La modifica più visibile all&amp;rsquo;utente è un refresh del TTL per canali effimeri in &lt;a href="https://github.com/block/sprout/pull/902">PR #902&lt;/a>: quando un utente disarchivia un canale effimero, Sprout estende il time-to-live del canale così il disarchivio non ri-archivia immediatamente sotto il timer di scadenza originale. Gli emoji custom mobile arrivano in &lt;a href="https://github.com/block/sprout/pull/906">PR #906&lt;/a> insieme a un redesign delle impostazioni, e i conteggi delle reazioni ora animano al cambiamento (&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> corregge un gap di lunga data in cui i display name multi-parola si rompevano e l&amp;rsquo;estrazione di mention &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> &lt;code>nostr:npub&lt;/code> cadeva silenziosamente. Una UI di team basata su directory per desktop è rilasciata in &lt;a href="https://github.com/block/sprout/pull/912">PR #912&lt;/a> con comandi install, sync e reveal. I comandi slash ora passano ai connector &lt;a href="https://agentclientprotocol.com">ACP&lt;/a> in &lt;a href="https://github.com/block/sprout/pull/919">PR #919&lt;/a>, consentendo a Sprout di inoltrare comandi in stile &lt;code>/help&lt;/code> direttamente ai runtime degli agenti mentre la UI di Sprout resta fuori dal percorso.&lt;/p>
&lt;h3 id="wisp-v111-integrazione-wallet-spark-e-guardia-contro-il-paste-di-nsec">Wisp v1.1.1: integrazione wallet Spark e guardia contro il paste di nsec&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.1">Wisp v1.1.1&lt;/a>, rilasciato il 5 giugno, porta una schermata Connect wallet a due livelli con sub-schermata &lt;a href="https://www.spark.money">Spark&lt;/a> in &lt;a href="https://github.com/barrydeen/wisp/pull/548">PR #548&lt;/a> e parità dashboard con la UI wallet iOS in &lt;a href="https://github.com/barrydeen/wisp/pull/549">PR #549&lt;/a>. La release include una &lt;a href="https://github.com/barrydeen/wisp/pull/553">guardia contro il paste di nsec&lt;/a> a livello di sistema che rileva un paste con prefisso &lt;code>nsec1&lt;/code> ovunque nell&amp;rsquo;app e blocca il campo dall&amp;rsquo;accettarlo, chiudendo uno degli errori più citati nella UX Nostr. Il login QR-scan più una modalità watch-only per &lt;code>npub&lt;/code> e &lt;code>nprofile&lt;/code> è rilasciato in &lt;a href="https://github.com/barrydeen/wisp/pull/552">PR #552&lt;/a>, consentendo a un utente di sfogliare un profilo in sola lettura. I messaggi zap ora si rendono come mini-post nel drawer di engagement (&lt;a href="https://github.com/barrydeen/wisp/pull/559">PR #559&lt;/a>) così le note zap portano il loro testo insieme all&amp;rsquo;importo in sat. Un filtro web-of-trust sulle risposte al thread arriva in &lt;a href="https://github.com/barrydeen/wisp/pull/583">PR #583&lt;/a>, consentendo agli utenti di nascondere lo spam di risposte da account fuori dal loro grafo di follow.&lt;/p>
&lt;h3 id="nostria-v3146-e-nospeak-113-rifacimento-delle-notifiche-e-restart-ice">Nostria v3.1.46 e nospeak 1.1.3: rifacimento delle notifiche e restart 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> del 7 giugno chiude una serie di tre release che ha rifatto il contatore delle notifiche per contare solo le nuove notifiche dalla vista precedente, eliminando un&amp;rsquo;inflazione di lunga data in cui caricare notifiche più vecchie scrollando faceva salire il conteggio del badge. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.45">Nostria v3.1.45&lt;/a> ha corretto un bug di split-payment che colpiva pagamenti lightning e QR-code e ha abbandonato una UI traslucida precedentemente pianificata come non fattibile sul compositor Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.1.3">nospeak v1.1.3&lt;/a> del 4 giugno aggiunge il restart ICE su stato FAILED per chiamate voce 1-on-1. Il comportamento WebRTC standard scarta una chiamata quando i candidati ICE vanno in timeout senza un percorso alternativo; il percorso di restart ICE rinegozia i candidati così la chiamata recupera da cambi transitori di NAT o rete. Le chiamate Android ora tengono lo schermo acceso durante le videochiamate.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-41-pr-che-continuano-la-traccia-nip-32--nip-f4--tor">Amethyst: 41 PR che continuano la traccia NIP-32 / NIP-F4 / Tor&lt;/h3>
&lt;p>Amethyst ha mergiato 41 PR questa settimana senza tagliare una release tag, sopra le 52 PR della scorsa settimana e il lavoro sull&amp;rsquo;etichettatura hashtag &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> e podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a> trattato nella Newsletter #25. La branch attiva continua ad accumulare funzionalità per la prossima release taggata, stratificando rifiniture sulle aggiunte principali della scorsa settimana: scoperta di labeler hashtag, schermata podcast, tracce musicali e playlist, watchdog di auto-heal Tor, signer effimeri per upload anonimi e zap onchain con filtraggio NIP-05. Il throughput di PR di Amethyst resta il più alto di qualunque client Nostr, e la coda non rilasciata è la roadmap de-facto per ciò che altri client Nostr Android dovranno eguagliare.&lt;/p>
&lt;h3 id="damus-tracciamento-dei-relay-dai-messaggi-ok-e-changelog-v117">Damus: tracciamento dei relay dai messaggi OK e changelog v1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3786">Damus PR #3786&lt;/a>, mergiata il 3 giugno, aggiunge i messaggi &lt;code>OK&lt;/code> riusciti da un relay alla lista dei post-relay. Le build precedenti di Damus popolavano la lista dei relay visti solo quando ricevevano un messaggio generico dal relay, il che significava che un relay che confermava il post ma non consegnava eventi era invisibile all&amp;rsquo;utente. Il cambiamento conta per gli utenti che vogliono confermare che il loro post sia arrivato sul loro relay outbox preferito. &lt;a href="https://github.com/damus-io/damus/pull/3796">PR #3796&lt;/a> corregge un ciclo &lt;code>AttributeGraph&lt;/code> su Profile View, e &lt;a href="https://github.com/damus-io/damus/pull/3725">PR #3725&lt;/a> porta il changelog v1.17 in vista della prossima release taggata.&lt;/p>
&lt;h3 id="shopstr-dual-publishing-nip-34">Shopstr: dual-publishing NIP-34&lt;/h3>
&lt;p>Il &lt;a href="https://relay.ngit.dev/npub1u350hpq840naxzkkle4gmdtvzanfxmjd9m9tytn5355aua7jh2cqgfuw39/shopstr.git">repo shopstr su ngit&lt;/a> di Shopstr è stato annunciato su Nostr questa settimana come repo git &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, unendosi ai repo tracciati di ngit. Il repo GitHub del client shop resta la superficie primaria di sviluppo; l&amp;rsquo;annuncio NIP-34 rende disponibile un percorso parallelo di collaborazione git-over-Nostr. Questo è il secondo grande progetto marketplace Nostr a dual-publish su NIP-34 dopo &lt;a href="https://relay.ngit.dev/">Mostro&lt;/a>, e continua la migrazione graduale dei metadati di progetto sul trasporto git di Nostr.&lt;/p>
&lt;h3 id="hermes-marmot-gateway-di-agente-ai-su-mls">Hermes-Marmot: gateway di agente AI su MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/notmandatory/hermes-marmot">hermes-marmot&lt;/a>, un plugin per l&amp;rsquo;&lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>, connette la superficie di messaggistica di un agente AI ai gruppi &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr) usando &lt;a href="https://github.com/marmot-protocol/mdk-python">mdk-python&lt;/a>, i binding Python al Marmot Development Kit Rust. Il plugin consente a un utente di DMare un agente AI da qualunque client Nostr che parla messaggi MLS di kind 445, incluso &lt;a href="https://whitenoise.chat">Whitenoise&lt;/a>. I DM in ingresso usano l&amp;rsquo;unwrapping gift-wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> tramite i binding Python di &lt;a href="https://github.com/rust-nostr/nostr">nostr-sdk&lt;/a>, e i welcome in ingresso fluiscono attraverso &lt;code>UnwrappedGift.from_gift_wrap&lt;/code> a &lt;code>mdk.process_welcome&lt;/code> e &lt;code>mdk.accept_welcome&lt;/code>. Il controllo di accesso passa attraverso &lt;code>MARMOT_ALLOWED_USERS&lt;/code> (una allowlist di npub separata da virgole) o &lt;code>MARMOT_ALLOW_ALL_USERS=true&lt;/code> per accesso di sviluppo aperto.&lt;/p>
&lt;p>Il repo è nuovo (ultimo aggiornamento 27 maggio) e piccolo. La sua importanza è architetturale: è il primo ponte pubblico fra un runtime di agente LLM e un canale di messaggistica Nostr cifrato con MLS, e il primo uso in produzione di mdk-python oltre a Whitenoise stesso. Il pattern punta verso comunicazione agente-a-agente in cui entrambi gli endpoint detengono chiavi MLS e il relay vede solo ciphertext.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="nip-67-hint-di-completezza-eose-pr-2317-mergiato">NIP-67 hint di completezza EOSE (PR #2317) mergiato&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a> di mattn mergiata il 6 giugno, aggiungendo &lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> al protocollo. Il NIP estende il messaggio relay &lt;code>EOSE&lt;/code> con un terzo elemento opzionale: &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;quot;finish&amp;quot;]&lt;/code> segnala che ogni evento memorizzato che corrisponde al filtro è stato consegnato, mentre un nudo &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;]&lt;/code> non porta alcuna dichiarazione di completezza. Un relay che omette l&amp;rsquo;hint sta dicendo al client che potrebbe esserci di più; un relay che omette la pubblicità NIP-67 in NIP-11 mantiene il comportamento di oggi sotto l&amp;rsquo;euristica legacy esistente. Il cambiamento è backward compatible in entrambe le direzioni: i client legacy ignorano l&amp;rsquo;elemento finale dell&amp;rsquo;array e i relay legacy lo omettono.&lt;/p>
&lt;p>La motivazione nella spec mergiata è duplice. Primo, perdita silenziosa di dati: un client chiede le ultime 500 note contro un relay con un cap interno di 300 eventi, il relay restituisce 300 eventi, e il client (usando l&amp;rsquo;euristica standard &lt;code>received &amp;lt; limit&lt;/code>) conclude che il risultato è completo. La 201esima fino alla N-esima nota più vecchia che corrisponde restano sul relay non lette, con il client cieco a quel fatto. Secondo, round-trip sprecati obbligatoriamente: quando un relay cappa le risposte a 300 eventi, qualunque sottoscrizione che esaurisce il cap richiede un secondo &lt;code>REQ&lt;/code> con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code> puramente per confermare il completamento, anche quando il filtro corrisponde esattamente a 300 eventi. Entrambe le modalità di fallimento sono pagate da ogni client su ogni sottoscrizione che esaurisce il cap. L&amp;rsquo;hint &lt;code>&amp;quot;finish&amp;quot;&lt;/code> è una stringa opzionale su un messaggio esistente ed elimina entrambi i costi.&lt;/p>
&lt;h3 id="estensione-autocomplete-nip-50-pr-2357-mergiata">Estensione autocomplete NIP-50 (PR #2357) mergiata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> di Alex Gleason mergiata il 6 giugno, aggiungendo un token &lt;code>autocomplete:true/false&lt;/code> alla ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>. L&amp;rsquo;estensione consente a un client di marcare una query come un lookup typeahead così il relay usa prefix matching, con la full-text search come default per query senza il token. Il relay di Ditto lo implementa per follow pack, lista e qualunque evento con un tag &lt;code>title&lt;/code>, restituendo match contro il prefisso del titolo; il percorso di ricerca di default esegue lo scoring full-text. Senza questo token, le UI stile autocomplete non avevano modo di comunicare l&amp;rsquo;intento di prefix search e i relay dovevano indovinare dalla forma della query. Il token è un hint per-ricerca, non una capability a livello relay, così un relay può implementarlo per una classe di eventi (titoli) senza rivendicare supporto autocomplete generale.&lt;/p>
&lt;h3 id="nip-gart-alert-di-emergenza-e-broadcast-di-posizione-pr-2374">NIP-GART alert di emergenza e broadcast di posizione (PR #2374)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2374">PR #2374&lt;/a> di disinqa, aperta il 9 giugno, definisce un wire format a tutela della privacy su Nostr per alert di emergenza e broadcast di posizione indirizzati a un gruppo di destinatari fidati. L&amp;rsquo;obiettivo di design dichiarato è nascondere l&amp;rsquo;identità del mittente, l&amp;rsquo;appartenenza al gruppo e il payload agli operatori del relay mantenendo gli eventi replay-safe e verificabili tramite firma end-to-end. Il numero NIP è ancora TBD, la proposta è in bozza iniziale. Il caso d&amp;rsquo;uso è il pattern standard di alert di emergenza: un utente sotto minaccia broadcasta un ping di posizione che solo un gruppo pre-condiviso di contatti fidati può decifrare, con il relay cieco a mittente, set di destinatari e payload. I dettagli del wire format vivono nella PR e probabilmente evolveranno mentre i manutentori revisionano.&lt;/p>
&lt;h3 id="metodo-logout-nip-46-pr-2373">Metodo logout NIP-46 (PR #2373)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a> di hzrd149, aperta l'8 giugno, aggiunge un metodo &lt;code>logout&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> così un client può dire esplicitamente a un bunker che la sessione è terminata. Finora, l&amp;rsquo;unico modo per terminare una sessione bunker era aspettare il timeout della sessione o smettere di usare la connessione, entrambi i quali lasciano il bunker a detenere stato di sessione per un client che è scomparso. La proposta è breve (un nuovo metodo) ed è il tipo di modifica di manutenzione che rende le integrazioni bunker a lungo termine più pulite.&lt;/p>
&lt;h3 id="proposta-ibrida-relay-p2p-nip-95-circolata-come-long-form">Proposta ibrida relay-P2P NIP-95 circolata come long-form&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips">specifica NIP-95&lt;/a> long-form è circolata come post &lt;code>kind:30023&lt;/code> dall&amp;rsquo;npub &lt;code>91bea5cd9361504c409aaf459516988f68a2fcd482762fd969a7cdc71df4451c&lt;/code> il 4 giugno sotto il titolo &lt;em>Protocolo Híbrido Relay-P2P via WebRTC&lt;/em>. Il documento in lingua portoghese definisce un protocollo relay ibrido peer-to-peer in cui i client Nostr si connettono l&amp;rsquo;uno all&amp;rsquo;altro direttamente via WebRTC per la messaggistica live continuando a usare i relay per il recupero di eventi memorizzati e la consegna offline. L&amp;rsquo;autore ha esplicitamente inquadrato la spec come &amp;ldquo;LLM-ready&amp;rdquo;, fornendo definizioni di messaggi, flussi logici, schemi di dati e regole di stato a un livello di dettaglio che lascia a un modello AI la possibilità di generare codice client o server funzionante. La proposta non è ancora arrivata come PR NIP; la circolazione tramite &lt;code>kind:30023&lt;/code> è il precursore usuale a una pull request formale su nostr-protocol/nips.&lt;/p>
&lt;h3 id="nip-44-v3-prende-un-secondo-signer-clave-porta-la-spec">NIP-44 v3 prende un secondo signer: Clave porta la spec&lt;/h3>
&lt;p>Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/#nip-44-v3-implementazione-amber-prima-della-spec">rollout di NIP-44 v3 di Amber v6.2.0 della scorsa settimana&lt;/a> è arrivato prima di qualunque PR NIP mergiata, lasciando v3 come estensione specifica di Amber che altri client dovevano rispecchiare per interoperare. Quell&amp;rsquo;inquadratura a singola implementazione è cambiata questa settimana. &lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>, il remote signer iOS NIP-46 basato su push, ha portato un porting indipendente di NIP-44 v3 il 3 e 4 giugno attraverso otto commit. Le primitive crittografiche sono rilasciate in tre commit: &lt;a href="https://github.com/DocNR/clave/commit/99ca5a5aacb501d1666c489fcdea30187c7853fa">layer di chiavi HKDF + ECDH&lt;/a>, &lt;a href="https://github.com/DocNR/clave/commit/8808cdca54d32b4ae57856bd4b07ed73a45e8e5c">l&amp;rsquo;algoritmo di padding v3&lt;/a> e un&amp;rsquo;&lt;a href="https://github.com/DocNR/clave/commit/ae1f506a53cb2c8aa16523540dbe790876c1839e">API pubblica di alto livello più Context di cifratura&lt;/a>. Sopra questi, la superficie NIP-46 segue in &lt;a href="https://github.com/DocNR/clave/commit/f37aa1afc8368862fc3ebac533408442349bfc38">wiring del dispatch RPC dentro LightSigner&lt;/a> e uno &lt;a href="https://github.com/DocNR/clave/commit/e51bcb49fc61cfa89b6030d61b203e046aeddb0a">schema PendingRequest che porta il contesto v3 (kind più scope)&lt;/a>, così il signer può registrare per quale kind di evento e caso d&amp;rsquo;uso il payload v3 è stato approvato.&lt;/p>
&lt;p>Clave diverge da Amber sulla superficie rivolta all&amp;rsquo;utente. Uno &lt;a href="https://github.com/DocNR/clave/commit/0a8b7de63c1f2994a80a66bf139ec519fab12877">schema di grant di permesso con tier di sensibilità&lt;/a> consente agli utenti di garantire la cifratura v3 per un particolare kind di evento e scope a un livello di sensibilità scelto. Al primo incontro, &lt;a href="https://github.com/DocNR/clave/commit/2cf563cb15b0406f5e8aaa0b4e34b887ff1896a1">prompt di approvazione consapevoli del contesto v3 con una card di explainer una-tantum&lt;/a> introducono v3 agli utenti. Il lavoro è in main ed è &lt;a href="https://github.com/DocNR/clave/commit/4bd0c26d7cf308386ef15e5d96ee5673d6db2d4a">collegato al progetto Xcode&lt;/a> ma non è rilasciato; la build taggata più recente è &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build79">v0.2.0-build79&lt;/a> del 12 maggio.&lt;/p>
&lt;p>Due implementazioni indipendenti portano NIP-44 v3 in percorsi di produzione prima che la PR NIPs sia mergiata, il che rafforza il caso per il wire format sottostante che la PR di protocollo formalizzerà. Il testing di interop cross-implementazione diventa ora il percorso alla convergenza della spec, con la superficie di approvazione Android di Amber e il modello di tier di sensibilità iOS di Clave come i due punti di riferimento. Altri remote signer che collegano v3 (il noauth di nsec.app è stato dormiente da maggio 2025, e altri bunker non hanno annunciato lavoro su v3) restringerebbero ulteriormente il consenso.&lt;/p>
&lt;h3 id="attività-nip-34-iris-adotta-lo-stack-con-un-nuovo-trasporto-hashtree">Attività NIP-34: Iris adotta lo stack con un nuovo trasporto hashtree&lt;/h3>
&lt;p>Iris ha pubblicato annunci di repo NIP-34 per &lt;a href="https://njump.me/nevent1qqs8kmy7a9dn5awurlp9q26lsaetl7dc4wauzdl8ww68dzmn09e074gpzfmhxue69uhhgetdwqhxjunfwvh8gmc850du0">&lt;code>hashtree&lt;/code>&lt;/a> l'8 giugno e &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> e &lt;a href="https://njump.me/nevent1qqs0x98hpsv8vmrxvwm2rs9exxttrue5qv5p2n2sqjeylz2kgdmd7tgpzfmhxue69uhhgetdwqhxjunfwvh8gmca8783s">&lt;code>iris-chat-rs&lt;/code>&lt;/a> il 9 giugno, pubblicizzando URL di clone sotto un nuovo schema &lt;code>htree://&lt;/code> servito da &lt;code>wss://temp.iris.to&lt;/code>. Il trasporto hashtree è un&amp;rsquo;alternativa content-addressed ai clone instradati via GRASP, e questi quattro annunci sono i suoi primi usi pubblici. I repo portano descrizioni vuote e i dettagli architetturali stanno ancora emergendo, ma la scelta di pubblicare tramite annuncio NIP-34 (sopra un manifest Iris-interno custom) segnala che Iris si sta impegnando allo stack più ampio git-over-Nostr NIP-34.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-67-eose-completeness-hint">NIP deep dive: NIP-67 (EOSE Completeness Hint)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> chiude uno dei gap di correttezza più antichi di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>. La spec originale definisce &lt;code>EOSE&lt;/code> come il confine tra eventi memorizzati e eventi di sottoscrizione live per un &lt;code>REQ&lt;/code>, ma non ha mai specificato se il relay avesse finito di consegnare tutti i match memorizzati o si fosse fermato a metà a causa di un cap interno. Ogni relay impone un cap per-sottoscrizione (comunemente da 300 a 1000 eventi) indipendente dal &lt;code>limit&lt;/code> del client, e i client non hanno avuto modo di osservare quel cap.&lt;/p>
&lt;p>Il workaround standard era confrontare il conteggio ricevuto con il &lt;code>limit&lt;/code> richiesto. Se &lt;code>received &amp;lt; limit&lt;/code>, trattare il risultato come completo; altrimenti paginare con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>. Entrambi i branch sono rotti. Il branch &lt;code>received &amp;lt; limit&lt;/code> tronca silenziosamente: un client che chiede 500 note contro un relay cappato a 300 vede 300 eventi, conclude che il risultato è completo perché &lt;code>300 &amp;lt; 500&lt;/code>, e non recupera mai il resto. Gli eventi trattenuti sul relay non possono segnalare &amp;ldquo;altro disponibile&amp;rdquo; attraverso alcun messaggio esistente. La paginazione come secondo branch è sprecona: un filtro che corrisponde esattamente al cap richiede un secondo &lt;code>REQ&lt;/code> per confermare la completezza, restituendo zero eventi mentre consuma una scansione di filtro completa sul relay.&lt;/p>
&lt;p>Il fix di NIP-67 è una stringa opzionale sul messaggio &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;] // esplicito: tutti gli eventi memorizzati consegnati
[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;] // nessuna dichiarazione di completezza
&lt;/code>&lt;/pre>&lt;p>Un relay che pubblicizza NIP-67 nei &lt;code>supported_nips&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> ed emette un &lt;code>EOSE&lt;/code> nudo sta dicendo al client che c&amp;rsquo;è di più. Un relay che omette la pubblicità mantiene il comportamento di oggi, e il client ricade sull&amp;rsquo;euristica esistente. I client legacy ignorano l&amp;rsquo;elemento finale dell&amp;rsquo;array. La compatibilità all&amp;rsquo;indietro tiene in entrambe le direzioni, senza nuovi verbi o kind di evento.&lt;/p>
&lt;p>Ciò che rende NIP-67 degno di esame è lo scope che deliberatamente restringe. La spec non definisce cursore o token di paginazione, quindi la paginazione basata su &lt;code>until&lt;/code> resta il meccanismo. I cap dei relay restano dove sono, e il NIP non richiede alcuna esposizione di essi. NIP-67 preserva il significato di &lt;code>EOSE&lt;/code> come confine memorizzato-a-live e aggiunge solo un segnale sì-o-no al confine: &amp;ldquo;Ho di più per te&amp;rdquo; contro &amp;ldquo;questo è tutto&amp;rdquo;. Questa superficie minima è perché la PR è stata mergiata dopo un periodo di review relativamente breve per un&amp;rsquo;estensione di NIP-01, e perché mattn nota esplicitamente nella PR che è stata usata la traduzione AI per il testo inglese. Il cambiamento è abbastanza piccolo che l&amp;rsquo;incertezza della traduzione non conta.&lt;/p>
&lt;p>Esempio di scambio consapevole di NIP-67 tra un client e un relay che impone il cap. Pubblicità NIP-11 dal 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>Lo scambio a livello di wire che segue:&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;] // no &amp;#34;finish&amp;#34;: cap raggiunto, altro disponibile
→ [&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 esplicito
&lt;/code>&lt;/pre>&lt;p>La risposta di 178 eventi prima avrebbe innescato una terza &lt;code>REQ&lt;/code> per confermare il completamento. Con NIP-67 il client si ferma lì.&lt;/p>
&lt;p>NIP-67 è notabile anche come emendamento a NIP-01 che arriva con raro consenso. La maggior parte dei cambiamenti a NIP-01 attrae lunghi thread di dibattito perché la superficie minuscola del protocollo è portante per ogni implementazione. NIP-67 è stato mergiato dopo un periodo di review esteso (all&amp;rsquo;incirca sette settimane dall&amp;rsquo;apertura al merge), suggerendo che quando un cambio NIP-01 è abbastanza piccolo e la modalità di fallimento è abbastanza concreta (perdita silenziosa di dati, round trip sprecato obbligatorio), i manutentori del protocollo sono disposti a estendere il vocabolario dei messaggi core.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-50-ricerca">NIP deep dive: NIP-50 (Ricerca)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> definisce il campo di filtro &lt;code>search&lt;/code> nei messaggi &lt;code>REQ&lt;/code>, consentendo ai client di chiedere a un relay di filtrare eventi tramite match full-text contro una stringa di query. La spec base mergiata è deliberatamente minima: il campo &lt;code>search&lt;/code> è una stringa, ciascun relay decide la propria semantica di ricerca (quali campi sono indicizzati, come funziona lo scoring, se si applica lo stemming), e i relay pubblicizzano il supporto NIP-50 nel loro documento NIP-11. I client controllano l&amp;rsquo;algoritmo di ricerca solo tramite la stringa di query stessa.&lt;/p>
&lt;p>Questo minimalismo è sia la forza sia il vincolo di NIP-50. La forza è che qualunque relay può implementare la ricerca a qualunque livello di qualità: una scansione di sottostringa di base soddisfa la spec, e un relay che esegue Elasticsearch o Meilisearch la soddisfa ugualmente. Il vincolo è che i client mancano di un modo per esprimere l&amp;rsquo;intento di ricerca. Una UI typeahead di mention di profilo vuole prefix matching contro i display name; una ricerca di contenuto full-text vuole scoring full-text tokenizzato attraverso il corpo della nota. Lo stesso campo &lt;code>search&lt;/code> porta entrambi, e il relay deve indovinare dalla forma della query.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> aggiunge il primo token di estensione NIP-50: &lt;code>autocomplete:true&lt;/code> o &lt;code>autocomplete:false&lt;/code> incorporato nella query di ricerca segnala quale modalità il client vuole. Il relay di Ditto implementa il token per follow pack, lista e qualunque evento con un tag &lt;code>title&lt;/code>, passando al prefix matching quando &lt;code>autocomplete:true&lt;/code> è presente. Il token vive inline nella query (i campi di filtro separati restano intoccati), così viaggia con la stringa di ricerca e non richiede alcun bump di wire protocol:&lt;/p>
&lt;pre tabindex="0">&lt;code>search: &amp;#34;fiat autocomplete:true&amp;#34;
&lt;/code>&lt;/pre>&lt;p>Hint in forma di token come questo sono il modo in cui NIP-50 ha sempre gestito dialetti relay-specifici. I relay supportavano già token come &lt;code>language:en&lt;/code> e &lt;code>domain:example.com&lt;/code>. Ciascuno resta relay-specifico, con ciascun relay che documenta il proprio dialetto. La PR #2357 di NIP-50 eleva &lt;code>autocomplete&lt;/code> da un token relay-privato a uno benedetto dalla spec, aprendo la strada a ricerca typeahead-aware attraverso i relay.&lt;/p>
&lt;p>Esempio di &lt;code>REQ&lt;/code> NIP-50 con il token autocomplete, mirato a un relay che indicizza i titoli di profilo di 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>L&amp;rsquo;effettivo REQ a livello di wire:&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 che non riconosce il token tratta &lt;code>autocomplete:true&lt;/code> come parte della stringa di ricerca letterale e ricade sul matching full-text, restituendo risultati corretti (se classificati diversamente). La degradazione graziosa rende il token sicuro da includere incondizionatamente per client che preferiscono il prefix matching quando disponibile.&lt;/p>
&lt;p>La prossima probabile estensione NIP-50 è il controllo di ranking per-kind: un hint che dice &amp;ldquo;classifica per &lt;code>created_at&lt;/code> decrescente&amp;rdquo; contro il default relevance score. Diversi relay accettano già &lt;code>sort:newest&lt;/code> come token relay-privato, e lo stesso percorso di elevazione che ha portato &lt;code>autocomplete&lt;/code> nella spec si applica. La ricerca resta una delle poche primitive Nostr dove i relay competono sulla qualità del risultato; l&amp;rsquo;affidabilità della consegna è la stessa attraverso tutti i relay conformi. Token incrementali consentono ai client di sfruttare quella competizione di qualità senza forzare i relay a rilasciare una nuova spec pesante.&lt;/p></content:encoded></item><item><title>Nostr Compass #25</title><link>https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/</guid><description>&lt;p>Amber 6.2.0 rilascia la cifratura NIP-44 v3 prima della spec. Mostro porta le fondamenta per l&amp;rsquo;escrow regolato con Cashu attraverso otto PR, avvolgendo l&amp;rsquo;esistente Cashu Development Kit come secondo backend di regolamento accanto a Lightning. NIP-F4 podcast è mergiato dopo 27 mesi di dibattito. fiatjaf apre una proposta contestata di disaccoppiamento delle chiavi NIP-17 che riapre la discussione architetturale bunker-contro-Marmot. Amethyst porta l&amp;rsquo;etichettatura di hashtag NIP-32, una schermata podcast dedicata e gli zap onchain attraverso 52 PR non rilasciate.&lt;/p></description><content:encoded>&lt;p>Amber 6.2.0 rilascia la cifratura NIP-44 v3 prima della spec. Mostro porta le fondamenta per l&amp;rsquo;escrow regolato con Cashu attraverso otto PR, avvolgendo l&amp;rsquo;esistente Cashu Development Kit come secondo backend di regolamento accanto a Lightning. NIP-F4 podcast è mergiato dopo 27 mesi di dibattito. fiatjaf apre una proposta contestata di disaccoppiamento delle chiavi NIP-17 che riapre la discussione architetturale bunker-contro-Marmot. Amethyst porta l&amp;rsquo;etichettatura di hashtag NIP-32, una schermata podcast dedicata e gli zap onchain attraverso 52 PR non rilasciate.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amber-620-cifratura-nip-44-v3-rilasciata">Amber 6.2.0: cifratura NIP-44 v3 rilasciata&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>, rilasciato il 1° giugno, aggiunge il &lt;a href="https://github.com/greenart7c3/Amber/pull/448">supporto alla cifratura NIP-44 v3&lt;/a> con una schermata di approvazione dedicata, anteprima dell&amp;rsquo;intent, anteprima bunker, logging della cronologia e auto-reject per richieste non valide. La release registra anche le &lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">autorità ContentProvider NIP-44 v3&lt;/a> così altre app Android possono richiedere la cifratura v3 insieme al percorso v2 esistente. NIP-44 stesso è la spec versionata di payload cifrato usata dai DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, dal traffico bunker NIP-46 e da altre primitive Nostr; v3 in Amber è opt-in accanto a v2, segnalato da un metodo signer separato così i client lato ricevente possono negoziare l&amp;rsquo;algoritmo esplicitamente. La corrispondente PR nel repo NIPs deve ancora arrivare, quindi Amber sta rilasciando v3 prima del consensus di protocollo, con il wire format e l&amp;rsquo;autorità ContentProvider registrati per l&amp;rsquo;integrazione dei client a valle.&lt;/p>
&lt;p>Le sessioni NIP-46 ora auto-accettano le richieste di ping alla connessione, rimuovendo il prompt sul primo round trip dopo il pairing. Il metodo signer &lt;code>sign_message&lt;/code> è stato rimosso completamente dopo essere stato deprecato e non utilizzato.&lt;/p>
&lt;p>Poiché Amber è il signer Android dominante, ogni client a valle che vuole v3 deve puntare al wire format di Amber finché la PR NIPs non arriva. Ciò dà ad Amber implicitamente voce in capitolo sulla spec finale v3 finché il protocollo non recupera. Il trade è reale: v3 in produzione lascia che Amber raccolga feedback implementativi per l&amp;rsquo;eventuale NIP, al costo di un punto di riferimento a singola implementazione temporaneo che gli altri client ora devono eguagliare.&lt;/p>
&lt;h3 id="mostro-integrazione-dellescrow-cashu-tramite-cdk">Mostro: integrazione dell&amp;rsquo;escrow Cashu tramite CDK&lt;/h3>
&lt;p>grunch ha portato otto PR attraverso MostroP2P questa settimana integrando le primitive multisig P2PK esistenti di Cashu (NUT-10 e NUT-11) come secondo backend di regolamento accanto a Lightning sull&amp;rsquo;exchange Bitcoin P2P coordinato via Nostr. Le primitive crittografiche sono di Cashu; il lavoro è impalcatura di integrazione e un nuovo trait di backend escrow. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>, rilasciato il 30 maggio, aggiunge i &lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">tipi di protocollo per l&amp;rsquo;escrow multisig 2-di-3&lt;/a>, firme P_M per-proof e consente eventi escrow attraverso la validazione della risposta. L&amp;rsquo;architettura è documentata in &lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a> e usa chiavi di trade per-order chiarite in &lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>.&lt;/p>
&lt;p>L&amp;rsquo;implementazione è stata dispiegata attraverso sei PR di follow-up in un solo giorno. &lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a> ha aggiunto la configurazione, la modalità escrow e il boot condizionale. La fetta successiva, &lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>, ha definito un trait &lt;code>EscrowBackend&lt;/code> con un&amp;rsquo;implementazione Lightning e uno stub Cashu, consentendo a Mostro di cambiare backend di regolamento senza cambiare la macchina a stati degli ordini. &lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a> ha wrappato &lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (il Cashu Development Kit) per operazioni di mint e wallet. Il lavoro sul database in &lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a> ha aggiunto lock escrow compare-and-swap e query active-locked. &lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a> ha costruito una mint containerizzata in un job CI dedicato per il test end-to-end dell&amp;rsquo;escrow. Il flusso Mostro usa già DM gift-wrapped NIP-59 per la coordinazione degli ordini sul relay, così l&amp;rsquo;escrow Cashu si inserisce come una seconda opzione di regolamento accanto a Lightning senza toccare il wire protocol.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="ngit-v250-fallback-grasp-e-fetch-git-pigri">ngit v2.5.0: fallback GRASP e fetch git pigri&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 il comportamento di default di &lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code> e &lt;code>ngit send&lt;/code> per produrre un PR kind per nuove proposte quando il repository ha almeno un server GRASP registrato. In precedenza questo si attivava solo per commit sovradimensionati oltre i 60 KB o commit contenenti submoduli. Quando un PR non può essere pushato ai server GRASP del repository, ngit ora ricade su routing GRASP-06 attraverso i server dichiarati. Il flag &lt;code>ngit send --git-server&lt;/code> o &lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code> consente ai contributor di puntare esplicitamente a un URL git custom o server GRASP.&lt;/p>
&lt;p>I republish di &lt;code>ngit init&lt;/code> ora preservano i tag sconosciuti dagli annunci esistenti, così i tag aggiunti da una futura versione di ngit o da uno strumento di terze parti sopravvivono al republish. Un warning giallo elenca i tag riportati, e &lt;code>--clean&lt;/code> li rimuove su richiesta. &lt;code>ngit pr apply&lt;/code>, &lt;code>ngit pr checkout&lt;/code> e &lt;code>ngit pr list&lt;/code> consultano i server git pigramente e condividono un singolo helper di fetch, così il checkout non fa più fetch incondizionato quando il commit è già locale. &lt;code>ngit pr checkout&lt;/code> prova anche URL di clone forniti dal submitter dall&amp;rsquo;evento PR come fallback quando i server git dichiarati del repo non portano la punta del PR, corrispondendo al comportamento esistente in &lt;code>ngit pr apply&lt;/code>. ngit è l&amp;rsquo;implementazione di riferimento &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> per la collaborazione git su Nostr, e v2.5.0 rende GRASP il percorso di prima classe per i nuovi contributor.&lt;/p>
&lt;h3 id="jumble-v2657-rimozione-exif-e-conteggi-zap-validati">Jumble v26.5.7: rimozione EXIF e conteggi zap validati&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.7">Jumble v26.5.7&lt;/a> aggiunge due modifiche che influenzano direttamente la privacy dell&amp;rsquo;utente e l&amp;rsquo;integrità dei dati. Gli identificatori di posizione EXIF e della camera sono ora rimossi dagli upload di immagini prima che lascino il client, chiudendo una superficie di lunga data di leak di metadati che ha colpito ogni immagine postata da Jumble. I conteggi degli zap sono ora calcolati solo da ricevute validate crittograficamente, correggendo conteggi gonfiati da eventi zap malformati che avevano lasciato agli attaccanti la possibilità di esagerare i totali degli zap sulle note. La release aggiunge anche la verifica dell&amp;rsquo;identità del mittente per i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, chiudendo una superficie di spoofing in cui un mittente poteva falsificare il proprio &lt;code>pubkey&lt;/code> nel seal.&lt;/p>
&lt;h3 id="nostr-calendar-v160-rsvp-e-gestione-dei-partecipanti-duplicati">nostr-calendar v1.6.0: RSVP e gestione dei partecipanti duplicati&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> porta il flusso RSVP di Formstr (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/169">PR #169&lt;/a>) e impedisce partecipanti duplicati negli inviti a eventi (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/168">PR #168&lt;/a>). L&amp;rsquo;opzione &lt;code>waitForAll&lt;/code> nella funzione di publish ora ha come default false così la UI non si blocca su relay lenti (&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> ha rilasciato le due bozze di proposta NIP di Formstr per la programmazione di appuntamenti e prenotazioni.&lt;/p>
&lt;h3 id="sprout-036-sprout--mesh-llm-e-sezioni-di-canale">Sprout 0.3.6: Sprout × mesh-llm e sezioni di canale&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a> è la principale di una serie di sei release da v0.3.1 a v0.3.6 questa settimana. L&amp;rsquo;integrazione in-process Sprout × mesh-llm arriva in &lt;a href="https://github.com/block/sprout/pull/798">PR #798&lt;/a>, consentendo a Sprout di servire e consumare nodi mesh-llm tramite ammissione dal relay. Le sezioni di canale definite dall&amp;rsquo;utente si sincronizzano fra dispositivi via Nostr in &lt;a href="https://github.com/block/sprout/pull/792">PR #792&lt;/a>, e le sezioni di canale arrivano su mobile con sync via relay in &lt;a href="https://github.com/block/sprout/pull/800">PR #800&lt;/a>. Le notifiche thread-aware con controlli di follow e mute mutabili arrivano in &lt;a href="https://github.com/block/sprout/pull/761">PR #761&lt;/a>.&lt;/p>
&lt;p>Gli allegati file di tipo arbitrario con card di download sono arrivati in &lt;a href="https://github.com/block/sprout/pull/810">PR #810&lt;/a>, espandendo Sprout oltre gli allegati solo immagine. Mobile ha guadagnato una tab feed sociale Pulse (&lt;a href="https://github.com/block/sprout/pull/772">PR #772&lt;/a>) e rifiniture Pulse fra feed, compose e superfici di filtro (&lt;a href="https://github.com/block/sprout/pull/796">PR #796&lt;/a>).&lt;/p>
&lt;h3 id="nostrbotkit-v050-chat-di-gruppo-marmot-in-un-framework-di-bot-rust">NostrBotKit v0.5.0: chat di gruppo Marmot in un framework di bot Rust&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/Tuxor/NostrBotKit/src/branch/main/CHANGELOG.md">NostrBotKit v0.5.0&lt;/a>, rilasciato il 24 maggio su Codeberg, aggiunge il supporto &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr, &lt;a href="https://github.com/nostr-protocol/nips/pull/2014">NIP-104&lt;/a>) al framework di bot Rust self-hosted. Quando &lt;code>marmot: true&lt;/code> è impostato, il bot pubblica i suoi key package MLS (kind 443, 30443, 10051), accetta inviti di gruppo automaticamente e ascolta i messaggi nei gruppi a cui è unito. Due nuovi tipi di comando, &lt;code>dm_marmot&lt;/code> e &lt;code>dm_marmot_npub&lt;/code>, consentono ai bot di inviare messaggi in gruppi Marmot con nome o chat Marmot 1:1 tramite cron job o webhook. Per prevenire loop di feedback con altri bot, i bot NostrBotKit rispondono solo a messaggi esplicitamente indirizzati a loro tramite &lt;code>/command&lt;/code> o &lt;code>@botname/command&lt;/code>. Gli allegati cifrati che usano MIP-04 sono decifrati automaticamente e ri-caricati via Blossom o NIP-96, e il database di stato MLS è cifrato con una chiave derivata dalla chiave privata del bot. NostrBotKit è il primo framework Rust a rilasciare il supporto ai bot NIP-104, aprendo il deployment di bot cifrati Marmot a un profilo operatore diverso dal percorso TypeScript esistente.&lt;/p>
&lt;h3 id="noscrypt-v0114-rilascio-firmato-della-libreria-di-crittografia">noscrypt v0.1.14: rilascio firmato della libreria di crittografia&lt;/h3>
&lt;p>&lt;a href="https://github.com/vnuge/noscrypt/releases/tag/v0.1.14">noscrypt v0.1.14&lt;/a> è una release di sicurezza della libreria di crittografia C usata da diversi client Nostr per le primitive secp256k1, NIP-04 e NIP-44. La release è distribuita con &lt;a href="https://www.vaughnnugent.com/resources/software/modules/noscrypt">download PGP-firmati&lt;/a> verificabili contro la chiave pubblica del manutentore. I client a valle che integrano noscrypt dovrebbero validare la firma prima di integrarla.&lt;/p>
&lt;h3 id="chama-v130-nuovo-escrow-p2p-nostr-native-con-fedimint">Chama v1.3.0: nuovo escrow P2P Nostr-native 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>, rilasciato il 1° giugno, è la principale di una serie di quattro release per un nuovo client di escrow P2P Nostr-native che usa ecash Fedimint e secret sharing Shamir 2-di-3 per il regolamento. Il progetto è rilasciato a &lt;a href="https://getchama.app">getchama.app&lt;/a> e gira senza server. v1.3.0 introduce &amp;ldquo;heal that sticks&amp;rdquo; (re-broadcast riuscito e healing del trade che sopravvive ai riavvii di sessione) e pay-rail matching, dove le Chama US-leaning mostrano prima le rail di pagamento US. Le fondamenta per storefront multi-unità sono arrivate attraverso &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.11">v1.2.11&lt;/a> (schema multi-unità) e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.12">v1.2.12&lt;/a> (accountant per lo stock dello storefront + hardening del recovery del bridge Fedimint nativo). Chama si unisce a Mostro e Shopstr nella categoria marketplace Nostr, distinta per la sua architettura serverless e il regolamento escrow basato su Fedimint.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-etichettatura-hashtag-nip-32-schermata-podcast-tracce-musicali">Amethyst: etichettatura hashtag NIP-32, schermata podcast, tracce musicali&lt;/h3>
&lt;p>Amethyst ha mergiato 52 PR e 411 commit questa settimana senza tagliare una release tag. La più grande aggiunta funzionale è &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>, che implementa l&amp;rsquo;etichettatura hashtag &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> e un feed hashtag basato su etichette usando eventi di kind 1985 con namespace &lt;code>L&lt;/code> e tag di etichetta &lt;code>l&lt;/code>. Questo sostituisce il fragile meccanismo di corrispondenza testuale &lt;code>#tag&lt;/code> con un modello di scoperta basato su labeler dove gli utenti possono seguire specifici npub labeler nel modo in cui seguono i creator di contenuto. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> aggiunge una schermata podcast dedicata con lista degli episodi e player inline, arrivando entro pochi giorni dal merge della spec podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3071">PR #3071&lt;/a> aggiunge un feed Software Apps con filtraggio per follow list, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3067">PR #3067&lt;/a> aggiunge il supporto a tracce musicali e playlist tramite set &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>.&lt;/p>
&lt;p>I signer effimeri per upload di post anonimi arrivano in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3123">PR #3123&lt;/a>, consentendo agli utenti di postare anonimamente senza esporre la propria chiave di identità ai servizi di upload. Un watchdog di auto-healing Tor con test di integrazione contro Arti v2.3.0 arriva in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a>, rafforzando il routing Tor di Amethyst durante outage di rete transitori. Gli zap onchain e un filtro NIP-05 per utenti che ritornano da Gemini arrivano in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3052">PR #3052&lt;/a>, ampliando la superficie di zap oltre Lightning ai pagamenti Bitcoin onchain.&lt;/p>
&lt;h3 id="shopstr-validazione-degli-url-di-anteprima-opengraph">Shopstr: validazione degli URL di anteprima OpenGraph&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/504">PR #504&lt;/a> valida gli URL di anteprima OpenGraph prima di renderizzarli negli annunci del marketplace, chiudendo una potenziale superficie XSS in cui venditori malevoli potevano incorporare contenuto scriptato tramite metadati OG appositamente costruiti. Gli shop ospitati su Shopstr mostrano anteprime OG per link esterni, e URL non validati permettevano a un attaccante di iniettare contenuto arbitrario nella UI dello shop.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="nip-f4-podcast-mergiato-dopo-due-anni">NIP-F4 (Podcast) mergiato dopo due anni&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1093">PR #1093&lt;/a> è stato mergiato il 28 maggio, due anni e tre mesi dopo che fiatjaf ha aperto la bozza originale. NIP-F4 definisce gli episodi di podcast come eventi di kind 54 con tag &lt;code>imeta&lt;/code> per i metadati del file audio (URL, mime type, codice lingua ISO, URL di fallback, flag di servizio NIP-96, bitrate, durata), un tag &lt;code>title&lt;/code>, tag opzionali &lt;code>image&lt;/code> e &lt;code>description&lt;/code> e tag &lt;code>t&lt;/code> per etichette di topic. La spec mantiene deliberatamente RSS come fonte di verità: gli episodi possono portare un tag &lt;code>i&lt;/code> che fa riferimento al GUID del podcast RSS, consentendo ai client Nostr di collegarsi ai feed di podcast esistenti senza duplicare l&amp;rsquo;hosting audio. Il lungo dibattito nel thread della PR (con Dave Jones co-autore del podcast-namespace, Alex Gleason e Mike Terenzio) si è concluso su un modello di coesistenza in cui Nostr fornisce il layer sociale sopra RSS mentre RSS mantiene il layer di distribuzione. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> schermata podcast di Amethyst arriva entro pochi giorni dal merge della spec, e il lavoro sul picker GIF di Jumble include anche fondamenta iniziali per l&amp;rsquo;allegato podcast.&lt;/p>
&lt;h3 id="disaccoppiamento-delle-chiavi-nip-17-pr-2361">Disaccoppiamento delle chiavi NIP-17 (PR #2361)&lt;/h3>
&lt;p>fiatjaf ha aperto &lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a> il 1° giugno, proponendo che NIP-17 separi la chiave di identità dalla chiave di cifratura. I destinatari pubblicizzano la loro chiave di cifratura in un nuovo evento di kind 10044, e i mittenti usano quella chiave pubblicizzata (quando presente) per il seal interno del gift-wrap, ricadendo sulla chiave di identità del destinatario solo quando la pubblicità è assente. La PR aggiunge anche un tag &lt;code>n&lt;/code> al seal che porta la pubkey di cifratura del mittente, così i destinatari possono derivare la conversation key corretta senza decifratura per tentativi contro ogni chiave ritirata. La motivazione dichiarata è la UX bunker: sotto il design attuale, un utente bunker deve fare round-trip di ogni DM ricevuto attraverso il signer per decifrare, poiché la chiave di cifratura è la chiave di identità detenuta dal signer. Il disaccoppiamento lascia che il client detenga la chiave di cifratura localmente mantenendo la chiave di identità nel bunker per le firme.&lt;/p>
&lt;p>La proposta ha attirato la review più contestata della settimana. Cody Tseng (Jumble) la sostiene come il percorso più facile per l&amp;rsquo;interop DM cross-client. Vitor Pamplona (Amethyst) obietta su due basi: aggiunge un nuovo secret di decifratura a lungo termine fuori dal bunker, e i client che non lo rilasciano falliranno silenziosamente a decifrare i messaggi dai client che lo fanno, senza percorso di degradazione perché la rottura è al layer del seal. Pamplona argomenta che il problema è già risolto correttamente dai key package e dalla rotazione di epoch di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, e che retrofittare la separazione delle chiavi nella spec base NIP-17 crea il tipo di fallimento di interop che Marmot ha impiegato due anni a progettare per aggirare. La controrisposta di fiatjaf ha tre parti: il disaccoppiamento è opzionale per destinatario, il fix dell&amp;rsquo;n-tag affronta la preoccupazione della decifratura per tentativi, e l&amp;rsquo;alternativa è mantenere rotta la UX bunker mentre Telegram divora il caso d&amp;rsquo;uso della messaggistica. Il thread resta aperto senza una decisione di merge ed è la discussione NIP più osservata del trimestre.&lt;/p>
&lt;h3 id="nip-silent-payments-flusso-di-pagamento-pr-2362">NIP-Silent Payments flusso di pagamento (PR #2362)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2362">silentius-satoshi ha aperto la PR #2362&lt;/a> il 1° giugno come compagno della più ampia &lt;a href="https://github.com/nostr-protocol/nips/pull/2355">bozza NIP Nostr Silent Payments (PR #2355)&lt;/a>. Il NIP del flusso di pagamento definisce il kind 8352 per le notifiche di ricevuta di silent payment (consegnate tramite gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> così il link di ricevuta non è pubblicamente osservabile) e il kind 10353 per una cache UTXO cifrata che si sincronizza fra i dispositivi per lo stesso wallet Silent Payments. La coppia insieme consente a un pagatore di segnalare un pagamento a un indirizzo Silent Payments usando primitive Nostr-native senza esporre il link on-chain al layer aperto dei relay.&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 ha aperto la PR #2364&lt;/a> il 1° giugno come bozza. Introduce un trasporto ad albero di pacchetti con tre nuovi kind indirizzabili: 39078 porta il manifest, 39079 porta gli slice individuali, e 39080 porta le richieste di riparazione. La spec definisce un wire format in cui file grandi sono spezzati in slice indirizzabili, con manifest che descrivono l&amp;rsquo;albero degli slice e richieste di riparazione che consentono ai destinatari di chiedere slice mancanti. Si applica lo status di bozza iniziale, e la proposta non ha ancora attirato la review dei manutentori.&lt;/p>
&lt;h3 id="nip-29-spazi-live-audiovideo-pr-2238">NIP-29 spazi live audio/video (PR #2238)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">PR #2238&lt;/a> mergiata il 28 maggio, estendendo i gruppi basati su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con supporto a spazi live audio e video. I gruppi possono ora fare riferimento a una sessione live-space attiva, consentendo agli eventi live activity in stile &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a> di ancorarsi in un contesto di gruppo NIP-29.&lt;/p>
&lt;h3 id="nip-71-video-multiple-tracce-audio-pr-2255">NIP-71 video multiple tracce audio (PR #2255)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a> mergiata il 28 maggio, aggiungendo tag &lt;code>imeta&lt;/code> di traccia audio agli eventi video NIP-71. Il nuovo formato porta URL, hash, mime type, tag di lingua (con ISO-639-1 più flag di versione originale), URL di fallback, segnale di servizio NIP-96, bitrate e durata. Questo abilita lo streaming solo audio (video podcast), il cambio di risoluzione con audio stabile, tracce multiple in lingua e ridotto storage quando i server non incorporano l&amp;rsquo;audio direttamente nei file video. I client dovrebbero controllare la disponibilità di traccia audio prima di assumere un comportamento a traccia singola.&lt;/p>
&lt;h3 id="nip-59-gift-wrap-effimero-pr-2245">NIP-59 gift wrap effimero (PR #2245)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> mergiata il 28 maggio, aggiungendo il kind 21059 come controparte effimera dell&amp;rsquo;esistente gift wrap di kind 1059. La semantica corrisponde al wrap standard NIP-59 ma segue le regole di eventi effimeri per NIP-01 (i relay li scartano dopo il broadcast e non li persistono). Ciò consente alle app di scegliere la persistenza in base ai requisiti: gli indicatori di digitazione e i ping di presenza beneficiano dell&amp;rsquo;effimero, mentre la cronologia DM ha bisogno di persistenza.&lt;/p>
&lt;h3 id="nip-78-kind-application-specific-pr-2292">NIP-78 kind application-specific (PR #2292)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2292">PR #2292&lt;/a> mergiata il 28 maggio, riclassificando i dati application-specific NIP-78 come un normale kind indirizzabile, abbandonando la precedente gamma separata. Questo semplifica la semantica di replaceability e allinea NIP-78 con il modello di eventi indirizzabili usato da altri NIP di stato applicativo.&lt;/p>
&lt;h3 id="chiarimenti-nip-85-pr-2304">Chiarimenti NIP-85 (PR #2304)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a> mergiata il 28 maggio con piccoli miglioramenti al linguaggio attorno a chiavi e relay multipli per service provider nelle Trusted Assertions &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a>, chiarendo il percorso di rotazione della chiave operatore per i servizi di assertion sui relay.&lt;/p>
&lt;h3 id="nip-01-one-liner-sulla-gestione-della-connessione-relay-pr-2307">NIP-01 one-liner sulla gestione della connessione relay (PR #2307)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2307">PR #2307&lt;/a> mergiata il 28 maggio, aggiungendo una singola frase a NIP-01 su come i client dovrebbero gestire i tempi di vita della connessione relay. Il fix affronta un gap di lunga data in cui i client differivano su se tenere le connessioni WebSocket aperte dopo il fetch, portando a perdita silenziosa di messaggi su relay che scartano connessioni idle.&lt;/p>
&lt;h3 id="nip-c7-vincolo-di-chat-kind-9-pr-2310">NIP-C7 vincolo di chat kind 9 (PR #2310)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a> mergiata il 28 maggio, restringendo le viste chat NIP-C7 ai soli messaggi di kind 9. Questo separa la chat effimera dai post di timeline di kind 1 nei client che implementano superfici di chat in stile NIP-C7.&lt;/p>
&lt;h3 id="semplificazione-nip-55-pr-2363">Semplificazione NIP-55 (PR #2363)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2363">PR #2363&lt;/a> di greenart7c3, aperta il 1° giugno, semplifica la spec dell&amp;rsquo;applicazione signer Android. Vitor Pamplona ha approvato come &amp;ldquo;Looks good&amp;rdquo; e fiatjaf ha chiesto se è pronta per il merge. La modifica apre la strada alla registrazione dell&amp;rsquo;autorità ContentProvider NIP-44 v3 che Amber ha rilasciato questa settimana.&lt;/p>
&lt;h3 id="nip-44-v3-implementazione-amber-prima-della-spec">NIP-44 v3 (implementazione Amber prima della spec)&lt;/h3>
&lt;p>Amber ha rilasciato NIP-44 v3 in v6.2.0 con otto commit che implementano l&amp;rsquo;upgrade di cifratura e la registrazione dell&amp;rsquo;autorità ContentProvider, ma la PR della spec nel repo NIPs deve ancora arrivare. NIP-44 stesso definisce un formato di payload cifrato versionato usato dentro eventi firmati; l&amp;rsquo;esistente v2 (in produzione dal 2024) usa ECDH secp256k1, HKDF, padding, ChaCha20, HMAC-SHA256 e base64. Il wire format v3 aggiunge un nuovo byte di versione (0x03) prima del nonce, consentendo ai client destinatari di negoziare esplicitamente l&amp;rsquo;algoritmo. L&amp;rsquo;implementazione di Amber include auto-reject per richieste v3 non valide, una schermata di approvazione dedicata distinta dalle approvazioni v2 e logging del plaintext per direzione per la cronologia. Finché la PR NIPs non è mergiata, v3 rimane un&amp;rsquo;estensione specifica di Amber. Trattatela come un segnale prospettico, non come una segnalazione stabile a livello di protocollo.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-32-labeling">NIP deep dive: NIP-32 (Labeling)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> definisce un modo strutturato per qualunque attore Nostr di etichettare eventi, pubkey, relay, URL o topic usando eventi indirizzabili di kind 1985 con un vocabolario di etichette namespaced. La spec introduce due nuovi tag: &lt;code>L&lt;/code> denota un namespace di etichetta, e &lt;code>l&lt;/code> denota un&amp;rsquo;etichetta all&amp;rsquo;interno di quel namespace. I tag di target dell&amp;rsquo;etichetta (&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>) specificano cosa viene etichettato. Il requisito di namespace impedisce a più sistemi di etichette di collidere: un&amp;rsquo;etichetta &lt;code>spam&lt;/code> in &lt;code>nip28.moderation&lt;/code> porta una semantica diversa da un&amp;rsquo;etichetta &lt;code>spam&lt;/code> in &lt;code>relay-report&lt;/code>.&lt;/p>
&lt;p>La scelta di design che rende NIP-32 utile oltre la moderazione è che le etichette sono asserzioni, non verità a livello di protocollo. Un evento di kind 1985 dice solo che una particolare pubkey ha etichettato un particolare target in un particolare namespace. Il modello di fiducia è delegato al client: ogni client sceglie quali labeler onorare, quali namespace leggere e quale affordance UI dare a ciascuna etichetta. La stessa primitiva porta avvertimenti di contenuto, assegnazione di licenza, tag di lingua ISO-639-1 sulle note di kind 1, tag geografici ISO-3166-2, classificazione di contenuto, suggerimenti di moderazione distribuita e punteggi di reputazione.&lt;/p>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a> di Amethyst di questa settimana è il più grande deployment finora. Aggiunge l&amp;rsquo;etichettatura hashtag tramite NIP-32 e un feed hashtag basato su etichette, consentendo agli utenti di sfogliare per etichette assegnate da labeler fidati. Il precedente meccanismo di corrispondenza testuale &lt;code>#tag&lt;/code> che originariamente pilotava la scoperta hashtag su Nostr resta come fallback per note non etichettate. Il modello hashtag-come-etichetta significa che la stessa nota può essere scopribile sotto più etichette assegnate da labeler diversi, e gli utenti possono silenziare o promuovere specifici labeler senza influenzare le note sottostanti.&lt;/p>
&lt;p>Anche l&amp;rsquo;auto-etichettatura è supportata. Un autore può attaccare tag &lt;code>L&lt;/code> e &lt;code>l&lt;/code> direttamente alle proprie note di kind 1 per dichiarare lingua, posizione e topic. Una nota taggata &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> si auto-identifica come inglese e può essere filtrata da client language-aware senza infrastruttura di etichettatura di terze parti.&lt;/p>
&lt;p>Esempio di evento etichetta NIP-32 che tagga una nota di kind 1 come inglese e le assegna un tag di moderazione:&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>Il rollout di Amethyst combinato con il recente lavoro sulle Trusted Relay Assertions suggerisce che NIP-32 sta diventando il substrato standard per qualunque pattern di &amp;ldquo;asserzione guidata dall&amp;rsquo;utente su un target&amp;rdquo; su Nostr. Il prossimo test è se i labeler stessi svilupperanno gerarchie di fiducia: se gli utenti seguiranno specifici npub labeler nel modo in cui seguono i creator di contenuto.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-f4-podcast">NIP deep dive: NIP-F4 (Podcast)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/F4.md">NIP-F4&lt;/a> è stato mergiato questa settimana, due anni e tre mesi dopo che fiatjaf ha aperto la bozza originale (PR #1093). Il prefisso F è semplice numerazione hex: NIP-F0 fino a NIP-FF usano lo stesso spazio hex a 1 byte di NIP-0A fino a NIP-0D, con la gamma hex superiore che serve da overflow ora che la gamma decimale 01–99 si sta riempiendo. NIP-F4 definisce come i podcast pubblicano episodi e metadati come eventi Nostr mantenendo RSS come layer complementare per il file audio stesso.&lt;/p>
&lt;p>La scelta architettonica di base è che ogni podcast è la propria keypair Nostr. La spec apre con questo direttamente: &amp;ldquo;each podcast is its own Nostr keypair&amp;rdquo;. Ciò consente ai podcast di combinare la loro presenza podcast con una normale presenza di microblogging di kind 0 / kind 1, e consente a un podcast di cambiare proprietà nel tempo tramite handover di chiave o firma condivisa stile MuSig2. Quattro kind di evento portano il layer di pubblicazione:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>kind:10154&lt;/code>&lt;/strong>: metadati podcast replaceable. Porta tag &lt;code>title&lt;/code>, &lt;code>image&lt;/code>, &lt;code>description&lt;/code>, tag &lt;code>website&lt;/code> opzionali e tag &lt;code>p&lt;/code> opzionali che marcano gli autori con un &lt;code>role&lt;/code> di &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>: contro-claim dell&amp;rsquo;autore. L&amp;rsquo;esempio nella spec usa il kind &lt;code>10064&lt;/code> (un typo aperto a correzione), ma l&amp;rsquo;header e il testo circostante lo identificano come &lt;code>kind:10164&lt;/code>. Gli utenti elencano le pubkey di podcast di cui sono autori, così i client possono verificare i tag &lt;code>p&lt;/code> in &lt;code>kind:10154&lt;/code> contro una claim equivalente dal presunto autore. Senza questo, un podcast potrebbe falsamente taggare chiunque come host.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:54&lt;/code>&lt;/strong>: eventi episodio scritti dalla pubkey del podcast direttamente. I tag includono &lt;code>title&lt;/code>, &lt;code>image&lt;/code> opzionale, &lt;code>description&lt;/code> e uno o più tag &lt;code>audio&lt;/code>. Ogni tag &lt;code>audio&lt;/code> è &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 spec nota &amp;ldquo;other important fields to be specified here later after further discovery&amp;rdquo;, e la forma mergiata è deliberatamente minima.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10054&lt;/code>&lt;/strong>: una lista di podcast preferiti in stile &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>, consentendo agli utenti di marcare quali podcast seguono.&lt;/li>
&lt;/ul>
&lt;p>Il dibattito del thread attorno al merge ha coinvolto il co-autore di 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> e &lt;a href="https://github.com/staab">staab&lt;/a>. Jones ha argomentato fortemente contro qualunque tentativo di sostituire RSS: &amp;ldquo;It&amp;rsquo;s been tried many times and always fails&amp;rdquo;, citando JSONfeed, XMPP, AMP, l&amp;rsquo;API di Twitter e la migrazione fallita di Spotify. Terenzio ha ripresentato la proposta come layer sociale sopra RSS, mantenendo RSS stesso come layer di distribuzione. fiatjaf ha accettato di fare un passo indietro e lasciar maturare la proposta: &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;. Due anni dopo, la spec mergiata atterra più vicina alla coesistenza che alla sostituzione.&lt;/p>
&lt;p>Tre domande di design restano esplicite nella spec mergiata:&lt;/p>
&lt;ul>
&lt;li>Il typo del &lt;code>kind:10164&lt;/code> (l&amp;rsquo;esempio mostra &lt;code>10064&lt;/code>) deve essere riconciliato prima che i client possano interoperare in sicurezza.&lt;/li>
&lt;li>La scoperta a livello di episodio senza collegamento GUID RSS è lasciata aperta. La spec mergiata non ha tag &lt;code>i&lt;/code>, formato &lt;code>podcast:item:guid&lt;/code> o meccanismo di bridging RSS. I client che vogliono fare bridge di un catalogo RSS esistente in eventi di kind 54 devono definire da soli la convenzione di bridge.&lt;/li>
&lt;li>Lo stub &amp;ldquo;other important fields&amp;rdquo; sulla definizione di &lt;code>kind:54&lt;/code> lascia bitrate, durata, lingua, puntatori a trascrizioni, capitoli e metadati per segmento come territorio aperto per proposte di follow-up.&lt;/li>
&lt;/ul>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> di Amethyst porta una schermata podcast dedicata con lista degli episodi e player inline entro pochi giorni dal merge, la prima grande implementazione client. Jumble ha rilasciato le prime fondamenta per l&amp;rsquo;allegato podcast insieme al suo picker GIF. Wavlake resta la più grande piattaforma podcast Nostr-native e dovrà decidere se allineare i suoi esistenti eventi di traccia musicale di kind 31337 con il modello di episodio di kind 54 di NIP-F4.&lt;/p>
&lt;p>Esempio di evento episodio NIP-F4 kind 54, corrispondente al set di tag minimo della spec mergiata:&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 è stata aperta per 27 mesi, ben oltre la durata mediana di apertura per le PR NIP mergiate. Il prossimo test per NIP-F4 è se il typo del kind 10164 sarà riconciliato, se convenzioni di scoperta di episodi e bridge RSS emergeranno dagli implementatori, e se i principali host podcast pubblicheranno sotto keypair per-podcast come la spec raccomanda.&lt;/p></content:encoded></item><item><title>Nostr Compass #24</title><link>https://nostrcompass.org/it/newsletters/2026-05-28-newsletter/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-28-newsletter/</guid><description>&lt;p>Amethyst v1.11.0 porta un&amp;rsquo;implementazione completa del calendario NIP-52 con promemoria, split di zap Bitcoin onchain e supporto alle risposte nei gruppi Marmot. White Noise v2026.5.22 rilascia le notifiche push iOS tramite una Notification Service Extension, insieme alla UX di block e a un pulsante per aggiungere membri. Vector v0.4.0 porta un rewrite da zero di vector-core, Tor one-click con bridge, remote signer NIP-46, sincronizzazione MLS di gruppo full-negentropy e un server MCP a 21 tool per agenti AI. Applesauce v6.1.0 introduce liste di lookup relay NIP-51 (kind 10086) e un set completo di factory per git-cast NIP-34. MDK aggiunge i messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI unificata, e Mostro v0.17.4 chiude il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 al vincitore. Notedeck mergia la riconciliazione completa negentropy NIP-77 per giftwrap e backfill dei thread, Cordn appare come messenger MLS mediato da coordinator che scambia una dipendenza di disponibilità a punto singolo per un ordinamento di epoch più stretto e un modello operativo più semplice, un&amp;rsquo;implementazione di riferimento NIP-B0 chiamata deepmarks rilascia un client di bookmark monetizzato dal curatore, e il team Formstr apre quattro proposte NIP calendario coordinate che coprono l&amp;rsquo;auto-rimozione dei partecipanti, gli eventi privati, la ricorrenza e la programmazione decentralizzata degli appuntamenti.&lt;/p></description><content:encoded>&lt;p>Amethyst v1.11.0 porta un&amp;rsquo;implementazione completa del calendario NIP-52 con promemoria, split di zap Bitcoin onchain e supporto alle risposte nei gruppi Marmot. White Noise v2026.5.22 rilascia le notifiche push iOS tramite una Notification Service Extension, insieme alla UX di block e a un pulsante per aggiungere membri. Vector v0.4.0 porta un rewrite da zero di vector-core, Tor one-click con bridge, remote signer NIP-46, sincronizzazione MLS di gruppo full-negentropy e un server MCP a 21 tool per agenti AI. Applesauce v6.1.0 introduce liste di lookup relay NIP-51 (kind 10086) e un set completo di factory per git-cast NIP-34. MDK aggiunge i messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI unificata, e Mostro v0.17.4 chiude il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 al vincitore. Notedeck mergia la riconciliazione completa negentropy NIP-77 per giftwrap e backfill dei thread, Cordn appare come messenger MLS mediato da coordinator che scambia una dipendenza di disponibilità a punto singolo per un ordinamento di epoch più stretto e un modello operativo più semplice, un&amp;rsquo;implementazione di riferimento NIP-B0 chiamata deepmarks rilascia un client di bookmark monetizzato dal curatore, e il team Formstr apre quattro proposte NIP calendario coordinate che coprono l&amp;rsquo;auto-rimozione dei partecipanti, gli eventi privati, la ricorrenza e la programmazione decentralizzata degli appuntamenti.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amethyst-v1110-calendari-split-di-zap-onchain-e-risposte-marmot">Amethyst v1.11.0: calendari, split di zap onchain e risposte Marmot&lt;/h3>
&lt;p>Amethyst, il client Nostr per Android manutenuto da Vitor Pamplona, ha rilasciato &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> aggiunge un&amp;rsquo;implementazione di eventi di calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> con una UI dedicata e un sistema di promemoria, così gli eventi di calendario sono ora resi nella propria categoria di timeline, separata dalla vista generica di kind-30023 long-form. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a> estende gli zap Bitcoin onchain con il supporto agli split, distribuendo una singola transazione Bitcoin fra più destinatari secondo il tag zap-split esistente, così un pagamento onchain si comporta come uno split Lightning. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a> aggiunge una schermata paginata di cronologia delle transazioni onchain che mostra ciascuno zap regolato con lo stato di conferma del blocco.&lt;/p>
&lt;p>La messaggistica di gruppo guadagna parità con la chat uno-a-uno: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a> aggiunge il supporto alle risposte per i messaggi di gruppo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>/MLS, così i thread all&amp;rsquo;interno di gruppi cifrati sono ora resi con la stessa UI di riferimento genitore delle note pubbliche. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a> rafforza la validazione delle ricevute zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> controllando che il provider LNURL corrisponda al lud16 dichiarato del destinatario, chiudendo una classe di falsificazione in cui un LNURL di terze parti poteva emettere una ricevuta per un pagamento mai avvenuto. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a> accetta dimensioni floating-point nei tag &lt;code>imeta&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a>, allineando Amethyst con i client che pubblicano valori di densità pixel frazionari da dispositivi come il display Retina dell&amp;rsquo;iPhone. La release collega anche i Payment Targets, un nuovo tip jar multi-rail su evento replaceable trattato nella sezione protocollo più sotto.&lt;/p>
&lt;h3 id="white-noise-v2026522-push-ios-ux-di-block-e-aggiunta-membri">White Noise v2026.5.22: push iOS, UX di block e aggiunta membri&lt;/h3>
&lt;p>White Noise, il messenger di gruppo protocollo Marmot, ha rilasciato &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a> con le notifiche push iOS come funzionalità principale. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a> implementa una Notification Service Extension (NSE) iOS che decifra i messaggi MLS all&amp;rsquo;interno del processo dell&amp;rsquo;extension e li presenta come notifiche di sistema, così gli utenti iPhone non hanno più bisogno che l&amp;rsquo;app sia in foreground per ricevere messaggi. Il plumbing dei token push Android passa attraverso la stessa pipeline backend, con la NSE per-piattaforma che tiene il ciphertext fuori dal broker.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a> aggiunge una UX completa di block e unblock con flussi di conferma e filtraggio della lista contatti. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a> aggiunge il pulsante &amp;ldquo;Aggiungi membri&amp;rdquo; richiesto da tempo alla schermata di info del gruppo, chiudendo un gap UX in cui gli admin del gruppo dovevano ricadere sui share link. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a> introduce una schermata di impostazioni notifiche iOS dedicata, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a> collega la condivisione tramite long-press per media e messaggi.&lt;/p>
&lt;h3 id="mdk-aggiunge-i-messaggi-a-scomparsa-nip-40-su-tutte-le-piattaforme">MDK aggiunge i messaggi a scomparsa NIP-40 su tutte le piattaforme&lt;/h3>
&lt;p>Il Marmot Development Kit, il core Rust condiviso usato da White Noise iOS, White Noise Android e qualunque futuro client Marmot, ha mergiato &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> per esporre la validazione di messaggi a scomparsa e la gestione della scadenza &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> tramite il bridge UniFFI. La PR è la seconda di una serie in tre parti. iOS e Android ora condividono un&amp;rsquo;unica implementazione Rust della logica di scadenza; le regole di timing vivono in un singolo percorso di codice auditato consumato da entrambe le piattaforme via UniFFI. &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> limita la lunghezza memorizzata delle ragioni di fallimento welcome e le sanifica prima della persistenza, un passaggio di hardening separato che complementa la gestione degli eventi welcome rilasciata la scorsa settimana.&lt;/p>
&lt;p>I messaggi a scomparsa in MLS non sono solo una comodità UI. Il tag di scadenza è pubblicato con l&amp;rsquo;inviluppo del messaggio cifrato, così un destinatario che non apre mai il messaggio ha comunque il ciphertext sottostante che scade a livello relay insieme a qualunque copia in cache nel client ricevente. Con MDK che possiede il percorso di validazione, il comportamento resta consistente fra i client: qualunque implementazione Marmot conforme forza la stessa semantica di scadenza, così un client che rispetta la scadenza mentre un altro fa cache per sempre cessa di essere un rischio di portabilità.&lt;/p>
&lt;h3 id="mostro-v0174-la-fase-3-chiude-il-ciclo-del-bond-slashato">Mostro v0.17.4: la Fase 3 chiude il ciclo del bond slashato&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, il protocollo di exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la Fase 3 del suo rollout di bond anti-abuso in &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> porta il flusso di payout per i bond slashati, prendendo il collaterale confiscato al perdente e distribuendolo al vincitore della disputa. &lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a> aggiunge la Fase 3.5, un messaggio esplicito di conferma di payout al vincitore così che sappia che i sats slashati sono stati regolati, con l&amp;rsquo;evento di conferma che arriva sulla stessa sessione Nostr della risoluzione della disputa. La Fase 2, trattata la scorsa settimana, ha introdotto lo slashing come azione admin; la Fase 3 è la differenza fra minacciare una penalità e farla rispettare.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/746">PR #746&lt;/a> consente al daemon di finalizzare dispute che non hanno una riga solver, un caso limite che precedentemente bloccava la risoluzione su dispute legacy. &lt;a href="https://github.com/MostroP2P/mostro/pull/748">PR #748&lt;/a> tollera rate null nella risposta &lt;code>/exrates/BTC&lt;/code> di Yadio così un breve outage di Yadio non rompe più il percorso di conversione fiat di Mostro. &lt;a href="https://github.com/MostroP2P/mostro/pull/745">PR #745&lt;/a> documenta la spec per provider di prezzo multi-sorgente, il fondamento per rimuovere Yadio come single point of failure. Il client mobile Mostro ha collegato il corrispondente percorso di claim di Fase 3 in &lt;a href="https://github.com/MostroP2P/mobile/pull/596">PR #596&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v610-lookup-relay-e-git-cast-nip-34">Applesauce v6.1.0: lookup relay e git cast NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, il toolkit Nostr modulare che alimenta Coracle, noStrudel e lo stack di Pablo F7z, ha rilasciato &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0">v6.1.0&lt;/a> attraverso i suoi pacchetti. La release aggiunge il supporto nativo alle liste di lookup relay &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>: gli eventi di kind 10086 permettono a un utente di segnalare &amp;ldquo;chiedi a questi relay se vuoi trovarmi&amp;rdquo;, accanto alle liste outbox &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> come primitiva di scoperta. Le applicazioni costruite su &lt;code>applesauce-core&lt;/code> ottengono un observable reattivo &lt;code>User.lookupRelays$&lt;/code> e un loader corrispondente in &lt;code>applesauce-relay&lt;/code>.&lt;/p>
&lt;p>Le factory di git-cast &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> arrivano in &lt;code>applesauce-factory&lt;/code>, dando a ogni client basato su Applesauce un percorso di una riga per pubblicare annunci di repo (kind 30617), patch (kind 1617) e issue (kind 1621). Le proprietà reattive &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> e &lt;code>User.graspServers$&lt;/code> consentono alle applicazioni di elencare repo seguiti da un utente, manutentori di repo e server GRASP configurati direttamente dallo stesso oggetto User. La release corregge anche i metodi manuali del pool che scartavano silenziosamente i relay offline in &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>.&lt;/p>
&lt;h3 id="notedeck-mergia-il-negentropy-nip-77-per-giftwrap-e-backfill-dei-thread">Notedeck mergia il negentropy NIP-77 per giftwrap e backfill dei thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop multi-colonna nativo di Damus, ha mergiato &lt;a href="https://github.com/damus-io/notedeck/pull/1459">PR #1459&lt;/a> il 25 maggio per collegare la piena riconciliazione negentropy &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> nel percorso outbox condiviso. La PR aggiunge frame client e relay NIP-77, sessioni negentropy locali del relay e un tracker di storia completa outbox che pilota la riconciliazione dei set locali e il fetch di eventi mancanti. I giftwrap di messaggi ottengono la riconciliazione negentropy così gli inviluppi di messaggi privati possono essere recuperati dai relay di lettura dell&amp;rsquo;account selezionato. Le viste dei thread non sono più limitate dal limite di risposte della sottoscrizione live. Dave PNS sostituisce la sua implementazione negentropy locale a Dave con il percorso outbox condiviso preservando il suo comportamento esistente di storia limitata.&lt;/p>
&lt;p>Le sottoscrizioni live e negentropy usano ora filtri separati. Un flusso può mantenere una piccola richiesta live emettendo al contempo un filtro negentropy più ampio per riconciliare ciò che il relay ha già. La PR non abilita intenzionalmente la sync negentropy ampia per home o timeline di profilo, che cambierebbe le caratteristiche di costo a cold-start. La copertura di test è stata aggiunta per riconciliazione, consegna di giftwrap, backfill dei thread, ripristino di Dave PNS, cambio account, retargeting dei relay, retry di fetch e comportamento relay NIP-77.&lt;/p>
&lt;h3 id="vector-v040-rewrite-di-vector-core-tor-nip-46-mls-full-negentropy-e-una-superficie-di-agente-mcp">Vector v0.4.0: rewrite di vector-core, Tor, NIP-46, MLS full-negentropy e una superficie di agente MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger cross-platform focalizzato sulla privacy costruito su DM NIP-17 e gruppi Marmot, ha rilasciato &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">v0.4.0&lt;/a>. La novità è un rewrite dell&amp;rsquo;engine da zero: tutta la logica di Vector vive ora in un singolo crate disaccoppiato, &lt;code>vector-core&lt;/code>, condiviso fra desktop, Android e qualunque futuro client, con oltre 440 test nel core stesso e la shell dell&amp;rsquo;applicazione ridotta di migliaia di righe. Il rewrite è la base per una CLI Vector, bot e SDK che pilotano lo stesso codice di protocollo della GUI.&lt;/p>
&lt;p>L&amp;rsquo;integrazione Tor è rilasciata con routing del traffico one-click e supporto ai bridge per il bypass della censura. Il supporto multi-account arriva con uno switcher in-app. Il login con remote signer arriva tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> con pairing bunker via QR o URI incollato, così gli utenti possono accedere senza mai esporre il proprio nsec. Delete-for-everyone funziona sia nei DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> sia nelle chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, con Vector che mantiene la chiave di firma effimera come divergenza dalla spec deliberata che le note di release evidenziano esplicitamente: &amp;ldquo;una diversione dalle spec tradizionali NIP-17/Marmot per controlli di privacy utente potenziati&amp;rdquo;. La chiave effimera trattenuta dà ai client Vector una prova locale che un&amp;rsquo;eliminazione è stata sanzionata dal mittente originale, ma significa anche che qualunque altro client che tocca Vector vede una superficie di verificabilità dell&amp;rsquo;eliminazione diversa dai client NIP-17/Marmot baseline.&lt;/p>
&lt;p>La sincronizzazione dei gruppi MLS è ora completamente riconciliata su negentropy &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a>, la stessa direzione che Notedeck ha preso per giftwrap e thread questa settimana. L&amp;rsquo;uploader Blossom fa failover su più server, impara le capability di ciascun server e sincronizza la lista dei server fra i dispositivi. I pacchetti di emoji custom sono creabili dall&amp;rsquo;utente, condivisibili e cross-compatibili con altri client Nostr. La memoria SQLite è scesa da circa 308MB a 5MB. Il pannello emoji si apre dalla cache su disco e gli shortcode stile Discord (&lt;code>:smile:&lt;/code>) più il ranking di frequenza Unicode mostrano il glifo giusto per primo.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta più originale è &lt;code>vector-agent&lt;/code>, un server MCP (Model Context Protocol) che espone 21 tool così gli agenti AI possono pilotare Vector: inviare DM, gestire gruppi, caricare file, modificare profili. Questo è il secondo progetto Nostr questa settimana (insieme a Shopstr) a rilasciare una superficie MCP, e la prima applicazione di classe messenger a farlo. Combinato con AgentNoise (trattato la scorsa settimana), il pattern di client Nostr controllati da agenti si muove da esperimenti isolati a una direzione di piattaforma deliberata.&lt;/p>
&lt;h3 id="cordn-appare-come-messenger-mls-mediato-da-coordinator">Cordn appare come messenger MLS mediato da coordinator&lt;/h3>
&lt;p>&lt;a href="https://cordn.net">Cordn&lt;/a> (client web a &lt;a href="https://cordn.net">cordn.net&lt;/a>, repo a &lt;a href="https://github.com/Cordn-msg/cordn">Cordn-msg/cordn&lt;/a> e &lt;a href="https://github.com/Cordn-msg/cordn-web">Cordn-msg/cordn-web&lt;/a>) è un nuovo messenger MLS che prende una direzione architetturale diversa da Marmot. Dove &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> è completamente basato su relay senza un coordinator privilegiato (ogni membro del gruppo scrive direttamente ai relay e qualunque relay conforme può trasportare il traffico), Cordn introduce un ruolo di coordinator per-gruppo implementato come un servizio &lt;a href="https://nostrcompass.org/it/topics/contextvm/">ContextVM&lt;/a>. Il coordinator ordina i commit MLS e gestisce la distribuzione dei welcome.&lt;/p>
&lt;p>L&amp;rsquo;argomento di Cordn, dichiarato sulla sua pagina &lt;a href="https://cordn.net/why">/why&lt;/a>, è che MLS come deployato nei messenger di produzione &amp;ldquo;non è coordination-free&amp;rdquo; e che &amp;ldquo;la disseminazione pubblica debolmente ordinata&amp;rdquo; rende la convergenza dello stato di gruppo &amp;ldquo;molto più difficile&amp;rdquo; senza un punto di coordinamento forte. Un design mediato da coordinator fornisce avanzamento predicibile delle epoch e una risoluzione più semplice dei commit concorrenti. I partecipanti si connettono al coordinator usando chiavi effimere, così il coordinator apprende l&amp;rsquo;ID del gruppo e il timing del traffico di commit ma non quali pubkey a lungo termine sono membri. Qualunque parte che interroghi i relay per un gruppo Marmot può già vedere la stessa superficie: attività del gruppo per ID di gruppo, con il timing inferibile dall&amp;rsquo;arrivo degli eventi. Cordn riconosce anche che &amp;ldquo;la fiducia di disponibilità resta&amp;rdquo; con il self-hosting: un coordinator self-hosted evita la preoccupazione di centralizzazione a livello operatore ma introduce un single point of failure per la vivacità del gruppo. Marmot evita quel single point lasciando l&amp;rsquo;ordinamento a MLS stesso (le epoch e i messaggi Commit gestiscono l&amp;rsquo;ordinamento all&amp;rsquo;interno del protocollo) e distribuendo eventi Welcome via gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, al costo della disciplina lato admin: gli admin devono aspettare l&amp;rsquo;acknowledgement del relay di un Commit prima di inviare il Welcome corrispondente, e i client devono riconciliare commit concorrenti quando la consegna del relay va in gara con una transizione di stato.&lt;/p>
&lt;p>Il contrasto merita di essere approfondito da qualunque team che scelga uno stack di messaggistica privata. Marmot scambia una certa complessità implementativa per un deployment agnostico ai relay senza attori privilegiati nel percorso. Cordn scambia una dipendenza di disponibilità a punto singolo per un ordinamento più stretto e un modello operativo più semplice. Entrambi i progetti si basano su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e usano Nostr come livello di identità e trasporto. Il disaccordo è su dove viva il costo del coordinamento. I repo cordn-msg mostrano una cadenza di commit stabile con il servizio coordinator implementato su ContextVM e il livello MLS costruito su &lt;code>ts-mls&lt;/code>.&lt;/p>
&lt;h3 id="deepmarks-bookmark-nip-b0-con-pubblicazione-monetizzata-dai-curatori">deepmarks: bookmark NIP-B0 con pubblicazione monetizzata dai curatori&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public">deepmarks-public&lt;/a> è un client di riferimento per la spec di bookmark proposta &lt;a href="https://nostrcompass.org/it/topics/nip-b0/">NIP-B0&lt;/a> (kind 39701), con un&amp;rsquo;architettura a tre riquadri (curatore, indicizzatore, viewer) e un sistema di tier finanziato da zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> diretti al curatore. Il client implementa NIP-B0, &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, NIP-57, &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e Blossom BUD-01 e BUD-04 per lo storage file. Un tier lifetime da 21.000 sat converte lettori paganti in destinatari ricorrenti di zap per il curatore. Il curatore pubblica gli eventi bookmark, l&amp;rsquo;indicizzatore li arricchisce con metadati leggibili dalla macchina e il viewer rende il feed; ciascun ruolo è un servizio deployabile separato.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="amber-v610-ga-backup-cifrato-per-account">Amber v6.1.0 GA: backup cifrato per-account&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> è passato da &lt;code>v6.1.0-pre3&lt;/code> alla GA &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0">v6.1.0&lt;/a> questa settimana. &lt;a href="https://github.com/greenart7c3/Amber/pull/444">PR #444&lt;/a> rilascia il backup e ripristino cifrati per il database dei permessi dell&amp;rsquo;applicazione, e &lt;a href="https://github.com/greenart7c3/Amber/pull/446">PR #446&lt;/a> divide il backup per account, così gli utenti con più identità Nostr possono fare backup e ripristino di ogni set di grant di app indipendentemente. Il lavoro sulla firma PSBT trattato la scorsa settimana è nel taglio GA.&lt;/p>
&lt;h3 id="citrine-sottoscrizioni-per-relay-e-prevenzione-di-leak-di-url-onion">Citrine: sottoscrizioni per-relay e prevenzione di leak di URL onion&lt;/h3>
&lt;p>&lt;strong>Citrine&lt;/strong>, il personal relay on-device che viene rilasciato con Amethyst, ha rilasciato due correzioni in questo ciclo. &lt;a href="https://github.com/greenart7c3/Citrine/pull/157">PR #157&lt;/a> passa da una singola sottoscrizione globale a sottoscrizioni per-relay taggate, così due relay sorgente che condividono un filtro &lt;code>kinds: [1]&lt;/code> non collidono più sul lato aggregatore. &lt;a href="https://github.com/greenart7c3/Citrine/pull/162">PR #162&lt;/a> filtra gli URL di relay onion quando il proxy Tor in uscita è disabilitato, impedendo che gli indirizzi onion trapelino nel percorso di routing clearnet.&lt;/p>
&lt;h3 id="angor-v0227-e-v0228-affidabilità-dei-relay-e-riconnessione-boltz">Angor v0.2.27 e v0.2.28: affidabilità dei relay e riconnessione Boltz&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong> ha rilasciato &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.27">v0.2.27&lt;/a> e &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> corregge un bug di deduplicazione dei relay in cui solo un relay era connesso alla volta, una regressione che degradava silenziosamente l&amp;rsquo;affidabilità per i progetti con più endpoint relay. &lt;a href="https://github.com/block-core/angor/pull/876">PR #876&lt;/a> aggiunge logica di riconnessione WebSocket per il monitoraggio degli swap sottomarini Boltz, così una breve disconnessione non lascia più uno swap in uno stato sconosciuto.&lt;/p>
&lt;h3 id="nostrord-v110-zap-nip-57-e-distinzione-dei-ruoli-nip-29">Nostrord v1.1.0: zap NIP-57 e distinzione dei ruoli NIP-29&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> ha rilasciato &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.1.0">v1.1.0&lt;/a> con supporto agli zap Lightning &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> per messaggi e profili (&lt;a href="https://github.com/nostrord/nostrord/pull/98">PR #98&lt;/a>) e una distinzione corretta nel feed di attività fra cambi di ruolo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e aggiunte di membri (&lt;a href="https://github.com/nostrord/nostrord/pull/92">PR #92&lt;/a>), che prima si rendevano in modo identico e oscuravano chi era stato promosso rispetto a chi era stato invitato.&lt;/p>
&lt;h3 id="ぬるぬる-v15x-keystore-mls-sqlcipher-e-catch-up-delle-epoch">ぬるぬる v1.5.x: keystore MLS SQLCipher e catch-up delle epoch&lt;/h3>
&lt;p>&lt;strong>ぬるぬる&lt;/strong> (nurunuru, di tami1A84), un client Nostr in lingua giapponese che implementa la messaggistica di gruppo MLS (kind 443) insieme a NIP-44, ricerca avanzata NIP-50, NIP-55 e NIP-70, ha rilasciato cinque release questa settimana. &lt;a href="https://github.com/tami1A84/null--nostr/pull/184">PR #184&lt;/a> introduce la cifratura SQLCipher per il keystore MLS nel layer rust-engine. &lt;a href="https://github.com/tami1A84/null--nostr/pull/187">PR #187&lt;/a> e &lt;a href="https://github.com/tami1A84/null--nostr/pull/188">PR #188&lt;/a> estendono SQLCipher rispettivamente ad Android e iOS, con un passaggio di purga legacy-plaintext e guardie CI. &lt;a href="https://github.com/tami1A84/null--nostr/pull/189">PR #189&lt;/a> e &lt;a href="https://github.com/tami1A84/null--nostr/pull/191">PR #191&lt;/a> aggiungono il catch-up delle epoch peer MLS con una replay cache e un banner di recovery su entrambe le piattaforme, così un client che resta indietro sui commit di gruppo può recuperare senza perdere la conversazione. ぬるぬる è un client Marmot costruito su &lt;code>mdk-core&lt;/code>, &lt;code>mdk-sqlite-storage&lt;/code> e &lt;code>mdk-storage-traits&lt;/code> da &lt;code>marmot-protocol/mdk&lt;/code>, così il lavoro su SQLCipher e catch-up delle epoch atterra dentro lo stesso runtime MDK che White Noise usa.&lt;/p>
&lt;h3 id="bitcredit-core-v0510-correzione-della-propagazione-di-blocchi-con-radice-nostr">Bitcredit Core v0.5.10: correzione della propagazione di blocchi con radice Nostr&lt;/h3>
&lt;p>&lt;strong>Bitcredit Core&lt;/strong> ha rilasciato &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10">v0.5.10&lt;/a> con una correzione per un campo Nostr-node-id mancante durante la propagazione dei blocchi, che rompeva i flussi di creazione azienda che includevano l&amp;rsquo;upload dell&amp;rsquo;identità. Bitcredit è un protocollo di e-bill che usa identità Nostr come radice di fiducia per gli eventi di propagazione di aziende e bill.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;p>&lt;strong>Jumble&lt;/strong> ha aperto &lt;a href="https://github.com/CodyTseng/jumble/pull/797">PR #797&lt;/a> per il login Google tramite il threshold signer Pomegranate, consentendo a un utente di dividere la propria chiave Nostr fra più parti così nessun singolo signer detiene l&amp;rsquo;intero segreto. Questo è un passo significativo oltre i flussi bunker o import di nsec: un utente può recuperare il proprio account anche se una parte signer è compromessa, senza che quella parte detenga mai la chiave privata completa.&lt;/p>
&lt;p>&lt;strong>Shopstr&lt;/strong> ha aperto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/492">PR #492&lt;/a> inizializzando un server MCP (Model Context Protocol), con &lt;a href="https://github.com/shopstr-eng/shopstr/pull/494">PR #494&lt;/a> che costruisce l&amp;rsquo;infrastruttura di supporto (fetch dei relay, parser, validazione, errori, deduplicazione, audit logging) e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/472">PR #472&lt;/a> che aggiunge una allowlist di relay per il gestore di relay MCP. Ciò rende Shopstr il primo marketplace Nostr a esporre se stesso come server MCP, così gli agenti AI possono navigare e agire su annunci NIP-99 come uno strumento strutturato.&lt;/p>
&lt;p>&lt;strong>Keydex&lt;/strong>, il vault di secret-sharing Shamir, ha aperto una migrazione sostanziale in &lt;a href="https://github.com/mplorentz/keydex/pull/226">PR #226&lt;/a> spostando i kind custom 1337-1345 nella gamma 713-721, insieme a &lt;a href="https://github.com/mplorentz/keydex/pull/239">PR #239&lt;/a> che aggiunge AEAD sopra le share Shamir e &lt;a href="https://github.com/mplorentz/keydex/pull/234">PR #234&lt;/a> che migra all&amp;rsquo;aritmetica GF256. La migrazione della gamma di kind allinea Keydex con il modo in cui il repo NIPs alloca i kind custom, allontanandosi da una gamma auto-reclamata.&lt;/p>
&lt;p>&lt;strong>Mill&lt;/strong> (&lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a>) è una nuova UI di signer Nostr drop-in di &lt;a href="https://github.com/0ceanSlim">OceanSlim&lt;/a> (manutentore del relay Go &lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>), rilasciata come Web Component a singolo script-tag su &lt;a href="https://www.npmjs.com/package/nostr-mill">npm&lt;/a> e &lt;a href="https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js">jsDelivr&lt;/a>. Un tag &lt;code>&amp;lt;script&amp;gt;&lt;/code> dà a un&amp;rsquo;app web tutti e sei i punti di ingresso comuni del signer dietro una UI unificata: estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (URL incollato o pairing QR con relay specificabili dall&amp;rsquo;utente, insolito fra le integrazioni bunker in-pagina), Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> via Android intent, nsec cifrato memorizzato in &lt;code>sessionStorage&lt;/code> via AES-256-GCM con PBKDF2, &lt;code>npub&lt;/code> read-only e generazione di keypair nel browser. Il componente è personalizzabile tramite 29 proprietà CSS custom collegate allo Shadow DOM ed espone una piccola API tracciata SemVer (&lt;code>MILL.open&lt;/code>, eventi &lt;code>mill:connected&lt;/code> / &lt;code>mill:disconnected&lt;/code>, esportazioni di tema con nome). La motivazione del manutentore è che i flussi di login bunker sono stati re-implementati un&amp;rsquo;app web alla volta attraverso Nostr. Consolidare su un componente condiviso consente ai client di convergere su come la UX del signer dovrebbe comportarsi, e trasforma flussi opzionali (come il login con chiave delegata tramite threshold signer, che rispecchia il login Google basato su Pomegranate di Wisp trattato sopra) in una superficie riutilizzabile che qualunque app può inserire. Mill è a npm v1.5.0, single-maintainer, stadio alpha, con grain come primo integratore pianificato.&lt;/p>
&lt;p>&lt;strong>moStard&lt;/strong>, un fork Monero-first di &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> di &lt;a href="https://github.com/roguehashrate">roguehashrate&lt;/a>, ha raggiunto &lt;a href="https://github.com/roguehashrate/moStard/releases">v1.0.1&lt;/a> questa settimana con un set di funzionalità ridotto e un&amp;rsquo;identità a tema Monero stratificata sullo stesso stack Applesauce + worker-relay. Il lavoro di questa settimana ha portato il rendering per gli eventi software-application di kind 32267 di Zapstore (embed card nella timeline che mostrano nome dell&amp;rsquo;app, icona, screenshot, piattaforma, licenza e un link di lancio a &lt;code>zapstore.dev/apps/&amp;lt;d-tag&amp;gt;&lt;/code>), sondaggi via kind 20 e kind 21, tipping basato su NIP-A3 Payment Targets con QR code per metodo, rendering markdown nelle note, supporto del picker GIF per tastiere GIF esterne e correzioni al pairing del signer Amber. L&amp;rsquo;inquadratura Monero si estende al flusso di tip: le voci &lt;code>payto&lt;/code> NIP-A3 per indirizzi &lt;code>monero&lt;/code> ottengono pulsanti di prima classe nella stessa UI insieme a &lt;code>lightning&lt;/code> e &lt;code>bitcoin&lt;/code>. Il client è single-maintainer e in fase alpha, ma il lavoro del 27 maggio mostra un builder che tira NIP-A3 dagli annunci di spec di protocollo di questa settimana direttamente in un fork rilasciato entro pochi giorni.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="stack-nip-calendario-quattro-proposte-dal-team-formstr">Stack NIP calendario: quattro proposte dal team Formstr&lt;/h3>
&lt;p>Ix2 (&lt;a href="https://github.com/geralt-debugs">@geralt-debugs&lt;/a>) ha aperto quattro PR NIP coordinate il 17 maggio, tutte riferendosi all&amp;rsquo;implementazione &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> già rilasciata sotto lo stesso autore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> propone il kind 84 come un evento generalizzato di &amp;ldquo;auto-rimozione partecipante&amp;rdquo;: un partecipante taggato su qualunque evento può pubblicare un kind 84 che fa riferimento all&amp;rsquo;originale via tag &lt;code>e&lt;/code>, &lt;code>a&lt;/code> e &lt;code>k&lt;/code> per segnalare opt-out. I relay devono validare che il firmatario del kind 84 appaia in un tag &lt;code>p&lt;/code> dell&amp;rsquo;evento di riferimento prima di onorare la rimozione, e un&amp;rsquo;eliminazione di kind 5 ha sempre precedenza. La PR generalizza un pattern che era precedentemente descritto solo dentro il contesto calendario NIP-52, così il kind 84 diventa il modo standard per i non-autori di ritirarsi da qualunque evento partecipante.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> è il fondamento dello stack calendario: NIP-52E per eventi di calendario privati (kind 32678 basato sul tempo, 32681 evento giornaliero, 32123 lista calendario privata, 31926 lista busy, 1052 gift wrap, 52 rumor) e NIP-52R per eventi ricorrenti. Al centro architetturale c&amp;rsquo;è il pattern view-key: una keypair generata casualmente cifra il contenuto dell&amp;rsquo;evento con NIP-44, e la metà segreta (codificata bech32 come &lt;code>nsec&lt;/code>) è gift-wrapped a ciascun partecipante. Il firmatario detiene solo il tag &lt;code>d&lt;/code> pubblico; tutto il resto vive nel &lt;code>content&lt;/code> cifrato. Disaccoppiare la cifratura del contenuto dall&amp;rsquo;identità in questo modo significa che modificare un evento non richiede di re-chiavare i destinatari. NIP-52R definisce due tag opzionali sui kind esistenti 31923 e 31922 per dichiarare la ricorrenza usando valori RFC 5545 RRULE nudi, con l&amp;rsquo;indice di giorno &lt;code>D&lt;/code> che diventa opzionale quando RRULE è presente. La forward secrecy è esplicitamente assente: una view key trapelata rivela tutte le versioni passate e future dell&amp;rsquo;evento sotto lo stesso 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> costruisce su NIP-52E con una spec di programmazione appuntamenti decentralizzata che la descrizione della PR chiama &amp;ldquo;un&amp;rsquo;alternativa drop-in a Calendly/Cal.com senza intermediario centrale&amp;rdquo;. Il kind 31927 pubblicizza una pagina di scheduling con finestre di disponibilità cifrate; il kind 32680 è un record di recovery self-encrypted lato host per la view key; i kind 1057 e 1058 sono la richiesta e la risposta di booking gift-wrapped. Il meccanismo intelligente: il booker genera sia il tag &lt;code>d&lt;/code> sia la view key per il futuro evento privato prima di inviare la richiesta, così il booker può aggiungere l&amp;rsquo;appuntamento al proprio calendario immediatamente con la chiave corretta, e l&amp;rsquo;host non deve mai fare round-trip di una chiave. Le risposte di booking portano un tag &lt;code>status&lt;/code> non cifrato sul wrap esterno così i relay possono filtrare senza decifrare.&lt;/p>
&lt;p>Un&amp;rsquo;implementazione di riferimento è già live a &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> e come app Calendar Android su Zapstore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> chiude &lt;a href="https://github.com/nostr-protocol/nips/pull/2027">PR #2027&lt;/a> a suo favore, consolidando una proposta precedente di calendario privato che era aperta dall&amp;rsquo;inizio dell&amp;rsquo;anno.&lt;/p>
&lt;h3 id="payment-targets-e-silent-payments">Payment Targets e Silent Payments&lt;/h3>
&lt;p>Due proposte NIP in più hanno circolato questa settimana in documenti &lt;code>kind:30023&lt;/code> long-form.&lt;/p>
&lt;p>Una proposta &lt;strong>Payment Targets&lt;/strong> (NIP-A3 / payto) definisce un evento replaceable di kind 10133 che porta uno o più tag &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> che mappano a URI &lt;code>payto:&lt;/code> RFC 8905. I tipi supportati includono bitcoin, lightning, ethereum, monero, nano, cashme, revolut e venmo. L&amp;rsquo;intento è standardizzare un tip jar multi-rail che complementi (non sostituisca) gli zap NIP-57 basati su lud16. Amethyst v1.11.0 è il primo implementatore; le PR mergiate &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2953">#2953&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3009">#3009&lt;/a> rilasciano la superficie di sottoscrizione e osservazione, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3011">PR #3011&lt;/a> collega la UI per &lt;code>PaymentTargetsEvent&lt;/code>.&lt;/p>
&lt;p>Due proposte Silent Payments concorrenti sono arrivate da autori diversi. La prima variante deriva le chiavi scan e spend di silent-payment BIP-352 da &lt;code>nsec&lt;/code> tramite tweak additivi pubblici, così qualunque mittente può costruire un indirizzo &lt;code>sp1q...&lt;/code> da un &lt;code>npub&lt;/code> senza setup. L&amp;rsquo;avvertimento dell&amp;rsquo;autore è esplicito nella spec: &amp;ldquo;bscan e bspend DEVONO essere trattate esattamente con la stessa cura di nsec&amp;rdquo;, perché la chiave di scan rivela l&amp;rsquo;nsec. Una seconda variante prende l&amp;rsquo;approccio inverso, aggiungendo un campo &lt;code>sp_address&lt;/code> ai metadati profilo di kind 0 contenente un indirizzo silent-payment BIP-352 standard le cui chiavi sono tenute indipendenti dall&amp;rsquo;identità Nostr. La variante due è strutturalmente più sicura. Entrambe le proposte hanno attratto un thread di review ponderato; erskingardner (lead di Marmot) ha postato un &lt;a href="https://gist.github.com/trbouma/77648ebe1005b181b67d1c4b42c7f31d?permalink_comment_id=6167489#gistcomment-6167489">commento&lt;/a> dettagliato sul gist trbouma che traccia la proposta. La sua preoccupazione centrale è che la variante 1 deriva la chiave privata di scan da &lt;code>nsec&lt;/code> più un tweak calcolabile pubblicamente, il che significa che chiunque detenga la chiave scan (incluso un servizio di scansione di terze parti a cui l&amp;rsquo;utente deve delegare in pratica) può recuperare il &lt;code>nsec&lt;/code> completo sottraendo quel tweak. La stessa chiave che consente a un servizio remoto di scansionare i pagamenti in arrivo per te consente anche a quel servizio di rubare la tua identità e qualunque fondo derivato da essa.&lt;/p>
&lt;p>Sul lato NIP-34 git-over-Nostr, hzrd149 ha pubblicato 2 patch 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> stesso ha attirato due segnalazioni di issue: una che segnala che le sessioni di login vengono perse al refresh della pagina quando si usa un remote signer NIP-46, l&amp;rsquo;altra che chiede uno styling di link distinto nelle anteprime README.&lt;/p>
&lt;h2 id="sei-anni-di-may-di-nostr">Sei anni di May di Nostr&lt;/h2>
&lt;p>L&amp;rsquo;ultima newsletter di maggio 2026 fa un passo indietro dai rilasci della settimana per attraversare il mese di maggio nella storia di Nostr. Ogni anno ha avuto un baricentro diverso: il 2021 è stato un singolo commit, il 2022 la formazione del repo NIPs stesso, il 2023 l&amp;rsquo;esplosione delle spec di protocollo, il 2024 il ciclo di consolidamento, il 2025 quando il negentropy è stato mergiato e Notedeck di Damus è passato a Beta, e il 2026 è il mese trattato in questo e nei tre numeri precedenti.&lt;/p>
&lt;h3 id="maggio-2021">Maggio 2021&lt;/h3>
&lt;p>Nostr aveva sei mesi. L&amp;rsquo;unico codice Nostr viveva in &lt;a href="https://github.com/fiatjaf/nostr">fiatjaf/nostr&lt;/a> e l&amp;rsquo;intero mese ha prodotto esattamente un commit, ma quel commit è diventato una delle parti più usate del protocollo. Il 22 maggio, fiatjaf ha &lt;a href="https://github.com/fiatjaf/nostr/commit/9ee3a02">ridefinito NIP-02&lt;/a> come il NIP della lista contatti. Il messaggio di commit recita: &amp;ldquo;repurpose NIP-02 and add NIP authorship&amp;rdquo;, e il credito esplicito va alla &lt;a href="https://github.com/nostr-protocol/nostr/pull/16">PR #16&lt;/a> di arcbtc (Ben Arc di LNbits), aperta il 9 febbraio e chiusa il giorno prima che fiatjaf incorporasse l&amp;rsquo;idea in NIP-02. Il pitch di arcbtc era piccolo: un kind per &amp;ldquo;inviare la lista dei follower ai relay&amp;rdquo; che sarebbe stato &amp;ldquo;utile per ripristinare account e raccomandare chiavi pubbliche da seguire&amp;rdquo;. fiatjaf lo ha generalizzato in un singolo evento &lt;code>kind:3&lt;/code> i cui tag servono tre scopi contemporaneamente. Sono una lista di follow (il grafo sociale), uno store di petname (nickname locali per gli amici) e una sorgente di raccomandazione di relay (quali relay usa un follow). Lo stesso evento, replaceable per autore, è diventato la risposta canonica a &amp;ldquo;chi segue questa persona&amp;rdquo;, &amp;ldquo;come li chiama&amp;rdquo; e &amp;ldquo;dove legge&amp;rdquo;. Ogni client costruito nei successivi cinque anni legge &lt;code>kind:3&lt;/code>. La convenzione aggiunta nello stesso commit, che ogni NIP nomini il proprio autore, è la ragione per cui ogni spec ha ora una firma.&lt;/p>
&lt;h3 id="maggio-2022">Maggio 2022&lt;/h3>
&lt;p>Il mese in cui il repo NIPs è diventato un progetto di comunità. Il 1° maggio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nips/commit/f25c7e6">migrato le spec&lt;/a> da &lt;code>fiatjaf/nostr&lt;/code> in un repo dedicato &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> e il 2 maggio ha aggiunto i &lt;a href="https://github.com/nostr-protocol/nips/commit/c053670">criteri formali di accettazione&lt;/a>. Due giorni dopo, Robert C. Martin (Uncle Bob) ha aperto la &lt;a href="https://github.com/nostr-protocol/nips/pull/1">PR #1&lt;/a>, la prima pull request esterna, proponendo convenzioni di threading per i tag &lt;code>e&lt;/code> e &lt;code>p&lt;/code>. La PR era originariamente numerata NIP-13, poi &lt;a href="https://github.com/nostr-protocol/nips/commit/bd4a81a">rinominata NIP-10&lt;/a> per fare spazio a proof-of-work. Tre dei primi sei NIP sono di Uncle Bob: NIP-10 (threading marker), NIP-14 (&lt;a href="https://github.com/nostr-protocol/nips/commit/ebacbcc">il tag Subject&lt;/a>) e il commit del 21 maggio che ha fissato &lt;a href="https://github.com/nostr-protocol/nips/commit/e22ea1a">&lt;code>kind:1&lt;/code> come il kind canonico di short text-note&lt;/a>. Il 5 maggio, William Casarin ha fatto i suoi primi commit NIP: &lt;a href="https://github.com/nostr-protocol/nips/commit/d7a4aad">NIP-13 Proof of Work&lt;/a> e l&amp;rsquo;evento &lt;a href="https://github.com/nostr-protocol/nips/commit/ad1eb96">kind:2 recommend-relay&lt;/a>. Il giorno dopo, fiatjaf ha pubblicato &lt;a href="https://github.com/nostr-protocol/nips/commit/37eb53e">NIP-07 &lt;code>window.nostr&lt;/code>&lt;/a>, venti righe di markdown che hanno definito l&amp;rsquo;interfaccia signer browser-extension ancora usata oggi. L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/57b86d2">avvertimento CORS&lt;/a> di NIP-05 di David A. Harding e il &lt;a href="https://github.com/nostr-protocol/nips/commit/a4aea53">&lt;code>filter.limit&lt;/code>&lt;/a> di NIP-01 sono arrivati la stessa settimana. nostr-tools ha rilasciato la sua &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/dc489bf">prima build ESM importabile in browser&lt;/a> l'8 maggio. Semisol ha redatto &lt;a href="https://github.com/nostr-protocol/nips/commit/a787093">NIP-15 (End Of Stored Events)&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/commit/62fde6c">NIP-16 (event kind ranges)&lt;/a> a fine mese, i documenti che ancora governano la semantica di sync dei relay e la classificazione regular-vs-replaceable-vs-ephemeral.&lt;/p>
&lt;h3 id="maggio-2023">Maggio 2023&lt;/h3>
&lt;p>L&amp;rsquo;esplosione di spec di protocollo. Sessantaquattro PR NIP sono state aperte quel mese, con diverse delle proposte che hanno definito la superficie di Nostr per i due anni successivi che sono tutte arrivate in 31 giorni, e il più grande annuncio di finanziamento che Nostr avesse mai ricevuto è arrivato il 4 maggio con il &lt;a href="https://opensats.org/blog/opensats-receives-additional-funding-of-dollar10m-from-startsmall">grant OpenSats da 10 milioni di dollari da parte di #startsmall di Jack Dorsey&lt;/a>, il denaro che ha finanziato ogni ondata di grant Nostr da allora. NIP-47 (Nostr Wallet Connect) è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/406">mergiato il 2 maggio&lt;/a>, portando la spec di wallet-connect di Alby nel protocollo principale. Due giorni dopo Vitor Pamplona ha &lt;a href="https://github.com/nostr-protocol/nips/pull/498">proposto NIP-53 Live Activities&lt;/a> con room di &lt;code>kind:30311&lt;/code> e messaggi di chat di &lt;code>kind:1311&lt;/code>, il fondamento di ogni superficie di livestream Nostr seguita. Pablo Fernandez ha aperto &lt;a href="https://github.com/nostr-protocol/nips/pull/501">NIP-84 Highlights&lt;/a> il 5 maggio e &lt;a href="https://github.com/nostr-protocol/nips/pull/530">NIP-89 Recommended Application Handlers&lt;/a> il 14 maggio. v0l (Kieran Babich, autore di Snort) ha proposto &lt;a href="https://github.com/nostr-protocol/nips/commit/29f26e7">NIP-98 HTTP Auth&lt;/a> l'8 maggio, la primitiva di autenticazione da cui NIP-96 e Blossom hanno entrambi in seguito dipeso. Jonathan Staab ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/532">NIP-32 Labels&lt;/a> il 15 maggio, e &lt;a href="https://github.com/nostr-protocol/nips/pull/484">NIP-30 Custom Emoji&lt;/a> è stato mergiato lo stesso giorno. Arthur Franca ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/547">NIP-96 HTTP File Storage Integration&lt;/a> il 21 maggio. Due giorni dopo, Vitor ha aggiunto gli &lt;a href="https://github.com/nostr-protocol/nips/commit/e4937be">zap split a NIP-57&lt;/a> e verbiricha ha aggiunto le &lt;a href="https://github.com/nostr-protocol/nips/commit/0495931">bozze long-form &lt;code>kind:30024&lt;/code> a NIP-23&lt;/a>, la spec che è diventata il fondamento dei moderni workflow di scrittura long-form Nostr in Habla, YakiHonne e Highlighter. fiatjaf ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/566">NIP-29 Simple Groups&lt;/a> il 28 maggio, la prima spec di gruppo gestita dal relay che copre gli eventi di moderazione da &lt;code>kind:9000&lt;/code> a &lt;code>kind:9020&lt;/code>. Il mese si è chiuso con Paul Miller che apriva &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la conversazione NIP-44&lt;/a> il 31 maggio, un design di DM cifrato basato su XChaCha20 destinato a sostituire NIP-04. Il lato client si è mosso altrettanto rapidamente: Damus ha rilasciato NWC, zap pool e Pending Zap fra &lt;a href="https://github.com/damus-io/damus/commits/master/?since=2023-05-10&amp;amp;until=2023-05-15">il 10 e il 15 maggio&lt;/a>; Snort ha lanciato &lt;a href="https://github.com/v0l/snort/commit/6cbc3ae">zap pool&lt;/a> e &lt;a href="https://github.com/v0l/snort/commit/d5032d6">media a paywall L402&lt;/a>; &lt;a href="https://github.com/vitorpamplona/amethyst/releases">Amethyst&lt;/a> ha rilasciato circa trenta release versionate nel corso del mese, da v0.40.1 il 1° maggio fino alla gamma v0.55.x a fine mese, con zap split in v0.45.0 ed etichette NIP-32 in v0.46.0; il &lt;a href="https://github.com/PrimalHQ/primal-android-app/commit/6654cf9">repo Primal Android&lt;/a> è stato creato il 16 maggio; &lt;a href="https://github.com/rust-nostr/nostr/releases/tag/v0.22.0">rust-nostr v0.22.0&lt;/a> ha aggiunto NIP-47 e NIP-58. Il 1° maggio, &lt;a href="https://github.com/hoytech/strfry/commit/de475c5">strfry ha rilasciato la sua integrazione negentropy&lt;/a>, la prima implementazione relay del protocollo di riconciliazione dei set di Doug Hoyte che sarebbe più tardi diventato NIP-77. Il mese si è chiuso con &lt;a href="https://www.forbes.com/sites/digital-assets/2023/05/30/bitcoin-social-network-nostr-creator-fiatjaf-/">Forbes che pubblicava un profilo long-form di fiatjaf il 30 maggio&lt;/a>, uno dei primi approfondimenti della stampa mainstream sul fondatore anonimo di Nostr.&lt;/p>
&lt;h3 id="maggio-2024">Maggio 2024&lt;/h3>
&lt;p>Il ciclo di consolidamento. Meno proposte appariscenti, più cose in rilascio. &lt;a href="https://github.com/nostr-protocol/nips/pull/787">NIP-54 Decentralized Wikis&lt;/a> è stato mergiato il 2 maggio con articoli &lt;code>kind:30818&lt;/code> e tag &lt;code>d&lt;/code> normalizzati per case. Tre giorni dopo, &lt;a href="https://github.com/nostr-protocol/nips/pull/1213">NIP-56&lt;/a> è stato esteso così le abuse report potessero segnalare minacce digitali (malware, phishing) accanto alle categorie solo contenuto. Il 6 maggio, &lt;a href="https://github.com/nostr-protocol/nips/pull/1221">le reazioni NIP-25 sono state semplificate&lt;/a> per smettere di includere l&amp;rsquo;intero thread di risposta come tag &lt;code>e&lt;/code>. Arthur Franca ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1233">proposto NIP-22 Comment&lt;/a> il 12 maggio, introducendo &lt;code>kind:1111&lt;/code> così le risposte a eventi non-&lt;code>kind:1&lt;/code> (articoli, file, prodotti) ottenessero un modo strutturato per fare thread. Il 19 maggio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1248">ristrutturato NIP-46&lt;/a> per abbandonare completamente NIP-04 e passare tutto il traffico bunker alla cifratura NIP-44, la mossa di deprecazione che ha plasmato ogni implementazione bunker da allora. Il 20 maggio, &lt;a href="https://github.com/nostr-protocol/nips/pull/923">NIP-71 Video Events&lt;/a> è stato mergiato con &lt;code>kind:21&lt;/code> e &lt;code>kind:22&lt;/code>, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1171">NIP-10&lt;/a> ha aggiunto l&amp;rsquo;argomento pubkey opzionale sui tag &lt;code>e&lt;/code> così i client possono risolvere gli autori dei thread senza prima recuperare l&amp;rsquo;evento di riferimento. &lt;a href="https://github.com/nostr-protocol/nips/pull/1175">NIP-35 Torrents&lt;/a> di Kieran Walsh è stato mergiato il 22 maggio, e il 24 maggio il README dei NIP ha per la prima volta fatto riferimento a &lt;a href="https://github.com/nostr-protocol/nips/pull/1251">CIP-01&lt;/a> come una proposta fuori-repo, segnalando l&amp;rsquo;inizio del pattern &amp;ldquo;NIP come uno di diversi luoghi di proposta&amp;rdquo;. Il 25 maggio, una &lt;a href="https://github.com/nostr-protocol/nips/pull/1254">PR di pulizia&lt;/a> ha rimosso il tag &lt;code>aes-256-gcm&lt;/code> da NIP-71 prima che le implementazioni a valle lo congelassero. NIP-96 ha aggiunto &lt;a href="https://github.com/nostr-protocol/nips/pull/1262">&lt;code>list files&lt;/code> e ha eliminato il requisito di transform&lt;/a> il 27 maggio. Il 28 maggio, Jonathan Staab ha proposto di &lt;a href="https://github.com/nostr-protocol/nips/pull/1264">alzare l&amp;rsquo;asticella di accettazione dei NIP&lt;/a> per richiedere almeno due implementazioni interoperanti prima che una bozza possa laurearsi. Lato client: Damus ha taggato &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.7.2">v1.7.2&lt;/a> e &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.8">v1.8&lt;/a> più una &lt;a href="https://github.com/damus-io/damus/commits/v1.9">v1.9 con piena gestione dei marker NIP-10&lt;/a> il 9-10 maggio, ha portato l&amp;rsquo;&lt;a href="https://github.com/damus-io/damus/commit/8feb228">autenticazione NIP-98 sulle notifiche push&lt;/a> e ha rilasciato il pieno &lt;a href="https://github.com/damus-io/damus/commit/52aefc8">supporto ai marker NIP-10&lt;/a>. Amethyst ha reso &lt;a href="https://github.com/vitorpamplona/amethyst/commit/1f45a63">NIP-17 la modalità DM di default&lt;/a> il 14 maggio, ha costruito la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/aa97c7e">gestione dei relay outbox-model NIP-65&lt;/a>, ha aggiunto la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/ff94f45">selezione dei server NIP-96&lt;/a> e ha rilasciato la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/04c4490">derivazione di chiavi 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> il 10 maggio ha aggiunto tagging utenti e NWC per wallet esterni, seguita da &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.4">0.99.4&lt;/a>. Pablo Fernandez ha portato un &lt;a href="https://github.com/nostr-dev-kit/ndk/commits/master/?since=2024-05-01&amp;amp;until=2024-06-01">cluster di optimistic-update NDK&lt;/a> dal 24 al 31 maggio. Snort ha aggiunto la &lt;a href="https://github.com/v0l/snort/commit/5763d91">selezione dei server NIP-96&lt;/a>, e cashu-ts ha &lt;a href="https://github.com/cashubtc/cashu-ts/commit/3e20f45">separato le sue primitive crypto&lt;/a> in &lt;code>@cashu/crypto&lt;/code>.&lt;/p>
&lt;h3 id="maggio-2025">Maggio 2025&lt;/h3>
&lt;p>Il mese in cui &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 (Negentropy Syncing)&lt;/a> è stato mergiato il 27 maggio, la spec di fiatjaf e Doug Hoyte per il wire protocol che sostituisce i filtri REQ brute-force con un calcolo di differenza a costo logaritmico. Questo era lo stesso negentropy che strfry aveva rilasciato due anni prima come funzionalità lato relay, ora formalizzato come protocollo client-relay, e la &lt;a href="https://github.com/nostr-protocol/nips/pull/1939">voce del README&lt;/a> è arrivata lo stesso giorno. La settimana prima, &lt;a href="https://github.com/nostr-protocol/nips/pull/1897">NIP-23 long-form&lt;/a> ha definito come i documenti HTML si associano a entità Nostr tramite un tag &lt;code>&amp;lt;link&amp;gt;&lt;/code> il 24 maggio, la primitiva canonical-web-copy. NIP-25 ha aggiunto gli &lt;a href="https://github.com/nostr-protocol/nips/pull/1702">hint di relay per il target della reazione&lt;/a> il 22 maggio e ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1486">abbandonato la raccomandazione emoji-to-like/dislike&lt;/a>, trattando le emoji come unità semantiche distinte. NIP-52 è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/1922">semplificato&lt;/a> il 14 maggio per focalizzarsi sui kind che i client stavano rilasciando in produzione, la sfoltita che ha reso le estensioni calendario di Formstr di un anno dopo più pulite da innestare. Il 9 maggio, &lt;a href="https://github.com/nostr-protocol/nips/commit/873afc5fb823f58c3b7f29c5090f9c56172623f2">Follow Pack&lt;/a> (liste di follow curate di kind 39089) e &lt;a href="https://github.com/nostr-protocol/nips/pull/1848">Favorite Relay&lt;/a> (una nuova lista replaceable sotto NIP-51) sono entrati nel README lo stesso giorno. L&amp;rsquo;arco del Protocollo Marmot non era ancora cominciato: esisteva solo il repo &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> (primo commit 9 settembre 2024), e maggio 2025 era la sua fase di prototipo Svelte+Tauri, con il &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/commit/b8e6754">commit del 14 maggio&lt;/a> che rimuoveva codice specifico di Tauri mentre il progetto pivotava alla sua architettura attuale. Il core Rust dedicato MDK (12 settembre 2025), il repo spec di Marmot (19 settembre 2025) e la UI Flutter (2 dicembre 2025) sono tutti arrivati dopo nell&amp;rsquo;anno. Sul lato client, &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.4.0">Notedeck v0.4.0&lt;/a> di Damus è stato rilasciato il 5 maggio come prima Beta, laureandosi da Alpha con full-text search, l&amp;rsquo;assistente AI Dave, zap su NWC, GIF, tagging utenti e mute list. Due giorni dopo, &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.0.0">Flotilla 1.0.0&lt;/a> di hodlbod ha attraversato il confine del lancio pubblico come client di group-chat basato su NIP-29, insieme a &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.12">Coracle 0.6.12&lt;/a>, la prima di sei release Coracle che si sono estese fino a &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.17">0.6.17 il 14 maggio&lt;/a>. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v3.4.0">Amber v3.4.0&lt;/a> il 12 maggio si è spostato dalle API Autofill e ClipboardManager Android deprecate ed è migrato dalle encrypted shared preferences a DataStore. Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.2.20">2.2.20&lt;/a> il 20 maggio ha aggiunto il flusso Redeem Code per Primal Premium e una galleria immagini ridisegnata. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.14.0">nak v0.14.0&lt;/a> il 21 maggio ha tagliato una minor della CLI canonica nella stessa settimana delle release di Coracle, Flotilla e Notedeck. OpenSats ha ricevuto la sua più grande donazione non-Bitcoin-treasury a oggi quando &lt;a href="https://opensats.org/blog/opensats-receives-two-million-donation-from-the-reynolds-foundation">la Reynolds Foundation ha dato 2 milioni di dollari&lt;/a> il 22 maggio.&lt;/p>
&lt;h3 id="maggio-2026">Maggio 2026&lt;/h3>
&lt;p>Il mese trattato in &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/">Newsletter #21&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-13-newsletter/">#22&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/">#23&lt;/a> e in questo numero. Il filo definitorio è MLS-on-Nostr che raggiunge produzione multi-client: &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">MDK 0.8.0&lt;/a> ha rilasciato le primitive di leaf-index MIP-05 e i key package indirizzabili, seguito da &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> che aggiunge la validazione di messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI condivisa. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">White Noise v2026.5.22+25&lt;/a> ha rilasciato la push iOS tramite una Notification Service Extension che decifra il ciphertext MLS dentro il processo dell&amp;rsquo;extension così il broker non vede mai plaintext, e sono apparsi due nuovi client Marmot: &lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (un client desktop e Android .NET/Avalonia con slot KeyPackage multi-dispositivo) e &lt;a href="https://cordn.net">Cordn&lt;/a> (un&amp;rsquo;architettura MLS alternativa che usa un coordinator per-gruppo su ContextVM). Angor ha migrato la sua messaggistica cifrata da NIP-04 a NIP-44 in &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>, chiudendo l&amp;rsquo;arco di deprecazione aperto con &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la proposta NIP-44 di Paul Miller nel maggio 2023&lt;/a>. Il team Formstr ha aperto la più grande submission NIP coordinata a memoria recente il 17 maggio, con &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> per l&amp;rsquo;auto-rimozione dei partecipanti, &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> per eventi di calendario privati e ricorrenza (NIP-52E e NIP-52R) e &lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> per la programmazione decentralizzata di appuntamenti, tutti con &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> che già rilascia l&amp;rsquo;implementazione di riferimento. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">Amethyst v1.11.0&lt;/a> ha reso i calendari NIP-52 come una categoria di timeline nativa e ha esteso gli zap Bitcoin onchain a distribuzioni split. Un anno dopo che &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 è stato mergiato nel maggio 2025&lt;/a>, tre implementazioni indipendenti hanno rilasciato l&amp;rsquo;adozione negentropy nella stessa finestra: &lt;a href="https://github.com/damus-io/notedeck/pull/1459">Notedeck PR #1459&lt;/a> l&amp;rsquo;ha collegata al client desktop di Damus per giftwrap e backfill dei thread, &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">Vector v0.4.0&lt;/a> ha usato la sync MLS full-negentropy come parte del suo rewrite da zero di &lt;code>vector-core&lt;/code> insieme al Tor one-click e a una superficie di agente MCP a 21 tool, e &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0-pre1">Citrine v3.0.0-pre1&lt;/a> l&amp;rsquo;ha aggiunta al relay Android-nativo insieme a Tor integrato e aggregazione multi-relay. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">Mostro v0.17.4&lt;/a> ha chiuso il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 in &lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>, facendo rispettare ciò che il protocollo prima solo minacciava. Tre anni da &amp;ldquo;sostituiamo NIP-04&amp;rdquo; a &amp;ldquo;sostituiamo NIP-44 con lo stato di gruppo MLS completo&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;p>Se vuoi discutere, mandaci un DM su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #23</title><link>https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/</guid><description>&lt;p>Primal 3.5 rilascia una shell Android ricostruita, Amethyst aggiunge gli zap Bitcoin onchain, White Noise guadagna il rendering markdown e i deep link, Keycast supera un audit di sicurezza e AgentNoise permette di controllare agenti di coding AI locali su chat cifrate Marmot. Hostr lancia una piattaforma di locazione P2P su Nostr con quattro bozze di NIP che coprono annunci, prenotazioni ed escrow basato su EVM. Angor migra la messaggistica cifrata da NIP-04 a NIP-44, Dart NDK aggiunge NIP-77 e un web signer, Alby js-sdk v8 rilascia la riconnessione multi-relay nativa NWC, e KeyChat corregge un gap di forward secrecy nell&amp;rsquo;eliminazione delle one-time prekey di Signal. Sul lato protocollo, il bond anti-abuso di Mostro raggiunge la Fase 2, Wisp rilascia risposte private e reazioni gift-wrapped, e un&amp;rsquo;ondata di implementazione NIP-05 su Namecoin tocca una mezza dozzina di client in una sola settimana.&lt;/p></description><content:encoded>&lt;p>Primal 3.5 rilascia una shell Android ricostruita, Amethyst aggiunge gli zap Bitcoin onchain, White Noise guadagna il rendering markdown e i deep link, Keycast supera un audit di sicurezza e AgentNoise permette di controllare agenti di coding AI locali su chat cifrate Marmot. Hostr lancia una piattaforma di locazione P2P su Nostr con quattro bozze di NIP che coprono annunci, prenotazioni ed escrow basato su EVM. Angor migra la messaggistica cifrata da NIP-04 a NIP-44, Dart NDK aggiunge NIP-77 e un web signer, Alby js-sdk v8 rilascia la riconnessione multi-relay nativa NWC, e KeyChat corregge un gap di forward secrecy nell&amp;rsquo;eliminazione delle one-time prekey di Signal. Sul lato protocollo, il bond anti-abuso di Mostro raggiunge la Fase 2, Wisp rilascia risposte private e reazioni gift-wrapped, e un&amp;rsquo;ondata di implementazione NIP-05 su Namecoin tocca una mezza dozzina di client in una sola settimana.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="primal-35-per-android">Primal 3.5 per Android&lt;/h3>
&lt;p>Primal, il client sociale sostenuto dalla propria infrastruttura di relay di caching, ha rilasciato &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a> questa settimana con una shell applicativa ricostruita. Il redesign sostituisce la struttura di navigazione precedente con un layout aggiornato e una nuova schermata Explore, dando alla superficie principale di scoperta la propria home dedicata. La release aggiunge la riproduzione audio per le anteprime dei link, così i file audio incorporati nelle note vengono riprodotti inline senza lasciare il feed. I badge di verifica NIP-05 sono ora mostrati inline sui profili, portando in vista la conferma di identità a colpo d&amp;rsquo;occhio. Il filtraggio delle notifiche ha ricevuto una revisione, consentendo agli utenti di restringere quali tipi di evento raggiungono la loro lista di notifiche. L&amp;rsquo;editor ha guadagnato una migliore gestione degli event-link, e il layer di database sottostante ha ricevuto correzioni di stabilità.&lt;/p>
&lt;h3 id="white-noise-markdown-deep-link-e-metadati-audio">White Noise: markdown, deep link e metadati audio&lt;/h3>
&lt;p>White Noise, l&amp;rsquo;app di messaggistica di gruppo cifrata con Marmot costruita su Nostr e MLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>), ha avuto una delle sue settimane più intense fino a oggi attraverso i repository frontend e backend.&lt;/p>
&lt;p>Sul frontend, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a> aggiunge il rendering markdown completo per i messaggi in chat, così grassetto, corsivo, blocchi di codice e link ora sono resi nativamente nella vista dei messaggi. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a> abilita il flusso di uscita dal gruppo che era precedentemente bloccato per gli admin non ultimi, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a> aggiunge il supporto nativo ai deep link per gli URI &lt;code>whitenoise://&lt;/code> e &lt;code>whitenoise-staging://&lt;/code> che coprono utenti, chat e impostazioni, senza richiedere alcuna infrastruttura di redirect HTTP.&lt;/p>
&lt;p>Sul backend in whitenoise-rs, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a> fa funzionare correttamente la rotazione dei key package riutilizzando lo slot &lt;code>d_tag&lt;/code> per le pubblicazioni di kind:30443, abilitando la semantica di eventi replaceable NIP-33 così che le successive rotazioni di key package sostituiscano l&amp;rsquo;evento precedente sui relay, mantenendo solo il key package corrente. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a> estende &lt;code>FileMetadata&lt;/code> con campi opzionali &lt;code>duration_ms&lt;/code> e &lt;code>waveform&lt;/code> per gli allegati audio, coordinato con la &lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a> di MDK che aggiunge gli stessi campi ai tag media MIP-04. Un nuovo crate &lt;code>whitenoise-markdown&lt;/code> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>) sostituisce il precedente parser di token nostr-sdk con una libreria dedicata al rendering markdown.&lt;/p>
&lt;p>La spec del protocollo Marmot stessa ha ricevuto una correzione di sicurezza in &lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>, che chiude un problema di sicurezza specificando esplicitamente HKDF-SHA256 per le derivazioni di chiave immagine in MIP-01, rimuovendo un&amp;rsquo;ambiguità che poteva portare a divergenze implementative. In MDK, &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> sanifica le ragioni di fallimento dei welcome e limita la lunghezza memorizzata, chiudendo una separata segnalazione di sicurezza.&lt;/p>
&lt;h3 id="amethyst-v1100-zap-bitcoin-onchain">Amethyst v1.10.0: Zap Bitcoin Onchain&lt;/h3>
&lt;p>Amethyst ha rilasciato quattro release questa settimana, con &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a> come principale. La release aggiunge il supporto agli zap Bitcoin onchain NIP-BC, consentendo agli utenti di inviare, ricevere e visualizzare zap regolati direttamente onchain tramite transazioni Bitcoin. Le release precedenti nella serie hanno corretto la rilevazione di blob Blossom per rifiutare filename non conformi (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>), patchato le regole ProGuard per le build desktop e mergiato la pull request &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a> per mostrare gli zapper Bitcoin onchain come una riga ₿ dedicata nella galleria delle reazioni espansa. Una schermata in-progress di cronologia transazioni onchain con paginazione è arrivata in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>.&lt;/p>
&lt;h3 id="agentnoise-controllare-agenti-di-coding-su-white-noise">AgentNoise: controllare agenti di coding su White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a> di nvk è un helper desktop Rust-nativo che consente di usare un telefono che esegue White Noise come superficie di controllo per sessioni di agenti di coding Codex e Claude locali. Lo strumento ascolta una o più chat White Noise, autentica i mittenti tramite un flusso PIN di first-pairing e lancia gli agenti di coding locali tramite il launcher configurato. Inviare &lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code> dal telefono apre una nuova sessione di lavoro White Noise chiamata come l&amp;rsquo;hostname della macchina e un breve riepilogo del prompt, poi trasmette gli aggiornamenti di progresso e l&amp;rsquo;output finale a quella chat. È intenzionalmente Rust-first e tiene Node fuori dal percorso trusted del bridge. Il progetto ha raggiunto &lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a> questa settimana, aggiungendo risposte più brevi leggibili dal telefono, riferimenti a job per prefisso breve univoco e un watcher opzionale di sessione locale. AgentNoise pilota le CLI &lt;code>wn&lt;/code> e &lt;code>wnd&lt;/code> di &lt;code>marmot-protocol/whitenoise-rs&lt;/code> come sottoprocessi, quindi condivide il proprio trasporto Nostr con il client White Noise stesso.&lt;/p>
&lt;h3 id="audit-di-sicurezza-di-keycast-completato">Audit di sicurezza di Keycast completato&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>, il server di remote signing NIP-46 orientato ai team che memorizza chiavi private Nostr cifrate a riposo in SQLite, ha completato un audit di sicurezza nel maggio 2026. Il passaggio di hardening ha affrontato problemi di autenticazione, permessi, integrità dei dati e dipendenze, e i risultati sono documentati in &lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>. Le modifiche includono: l&amp;rsquo;auth HTTP NIP-98 richiede ora esattamente un tag &lt;code>u&lt;/code> e un tag &lt;code>method&lt;/code>, rifiuta timestamp obsoleti e valida gli hash &lt;code>payload&lt;/code>; l&amp;rsquo;allowlist &lt;code>ALLOWED_PUBKEYS&lt;/code> è parsata esattamente e forzata lato server; le policy vuote ora rifiutano di default le richieste sign/encrypt/decrypt; il rispetto delle foreign key è abilitato sulle connessioni SQLite; e le route app nidificate come &lt;code>/teams/:id&lt;/code> sono protette lato server. Una migrazione SQL normalizza il JSON dei vecchi permessi di kind consentiti all&amp;rsquo;avvio. Il progetto è ancora in fase iniziale e l&amp;rsquo;audit segnala elementi residui prima di affidargli chiavi di team reali.&lt;/p>
&lt;h3 id="scramble-client-marmot-per-desktop-e-android">Scramble: client Marmot per desktop e Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (precedentemente OpenChat) è un client desktop e Android in .NET/Avalonia per il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a>, che implementa i MIP 00-04: pubblicazione di KeyPackage (kind:30443), metadati di gruppo con l&amp;rsquo;estensione MLS NostrGroupData, eventi welcome gift-wrapped NIP-59 (kind:444), messaggi cifrati ChaCha20-Poly1305 (kind:445) e allegati media cifrati Blossom. È pienamente interoperabile con White Noise e con qualsiasi altro client compatibile con Marmot.&lt;/p>
&lt;p>Il progetto ha rilasciato 13 release questa settimana, con il supporto multi-dispositivo come funzionalità principale. Ogni dispositivo genera uno slot KeyPackage univoco (un tag &lt;code>d&lt;/code> su kind:30443). All&amp;rsquo;avvio, Scramble recupera i KeyPackage propri dell&amp;rsquo;utente dai relay, rileva gli ID slot dei dispositivi peer e li aggiunge automaticamente ai gruppi MLS esistenti usando il flusso di staged commit. L&amp;rsquo;auto-aggiunta è ristretta ai gruppi in cui l&amp;rsquo;utente corrente è admin; i gruppi non-admin vengono saltati con l&amp;rsquo;indicazione di chiedere all&amp;rsquo;admin del gruppo. Un banner informativo di forward-secrecy avvisa i dispositivi appena collegati che i vecchi messaggi non sono disponibili. Un passaggio di riconciliazione degli ID slot (&lt;code>TryReconcileSlotId&lt;/code>) gestisce i dispositivi migrati da versioni pre-multi-dispositivo confrontando i byte di KeyPackage del relay con il materiale di chiave locale per adottare il tag &lt;code>d&lt;/code> corretto. È stata anche corretta la riconnessione al signer esterno per utenti Amber e NIP-46: la guardia &lt;code>IsConnected&lt;/code> che bloccava l&amp;rsquo;auto-riconnessione interna di &lt;code>ExternalSignerService&lt;/code> è stata rimossa in tutti e nove i call site in &lt;code>NostrService&lt;/code>.&lt;/p>
&lt;h3 id="hostr-locazione-p2p-su-nostr">Hostr: locazione P2P su Nostr&lt;/h3>
&lt;p>&lt;a href="https://hostr.network">Hostr&lt;/a> (&lt;a href="https://github.com/sudonym-btc/hostr">sorgente&lt;/a>) è una piattaforma di locazione peer-to-peer costruita interamente su Nostr. Copre l&amp;rsquo;intero flusso stile Airbnb (ricerca e pubblicazione di proprietà, negoziazione di prenotazioni e regolamento dei pagamenti) usando quattro bozze di NIP che il progetto sta sviluppando in parallelo con l&amp;rsquo;applicazione.&lt;/p>
&lt;p>Il NIP di accommodation estende gli annunci classificati &lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">NIP-99&lt;/a> (kind:30402 attivo, kind:30403 draft) con tag specifici per l&amp;rsquo;ospitalità per il 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>), orari di check-in/check-out, permanenza minima e indici di celle geospaziali H3 per la ricerca basata su posizione con precisione configurabile. Il NIP di prenotazione definisce un protocollo completo di negoziazione e ciclo di vita: gli eventi di prenotazione replaceable di kind:32122 portano un trade ID &lt;code>d&lt;/code>, un tag &lt;code>a&lt;/code> di ancoraggio all&amp;rsquo;annuncio e tag &lt;code>p&lt;/code> dei partecipanti con ruoli (&lt;code>buyer&lt;/code>, &lt;code>seller&lt;/code>, &lt;code>escrow&lt;/code>); i rumor di messaggio strutturato di kind:1327 consegnano controproposte private in fase di negoziazione tramite gift wrap NIP-59 così la negoziazione resta fuori dai relay pubblici; gli eventi di transizione append-only di kind:1326 creano un audit trail pubblico una volta che una prenotazione viene confermata. La privacy del compratore è preservata tramite chiavi Nostr temporanee per-trade legate all&amp;rsquo;identità reale del compratore tramite tag &lt;code>participant_proof&lt;/code> cifrati. Il NIP di escrow definisce annunci di servizio escrow di kind:30303 e dichiarazioni di fiducia utente di kind:17388; l&amp;rsquo;implementazione di riferimento usa smart contract EVM su Rootstock, con &lt;code>contractBytecodeHash&lt;/code> che permette ai client di verificare che il contratto deployato corrisponda a un&amp;rsquo;implementazione nota e auditata. Il NIP di marketplace listing definisce tag generici condivisi da tutti i profili marketplace NIP-99, inclusi &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> e &lt;code>maxDisputePeriod&lt;/code>. Questa settimana il progetto ha preparato la sua submission all&amp;rsquo;app store e mergiato il supporto all&amp;rsquo;identità del client MCP per l&amp;rsquo;automazione rivolta agli agenti.&lt;/p>
&lt;p>Due nuove voci sono apparse sulla piattaforma Shakespeare MiniApps questa settimana: &lt;a href="https://inkpress.shakespeare.wtf">InkPress&lt;/a>, un generatore di riviste AI che pubblica contenuto strutturato in stile rivista come eventi Nostr, e &lt;a href="https://pressstr.shakespeare.wtf">PressStr&lt;/a>, una piattaforma di scrittura e pubblicazione per lo stack Soapbox.&lt;/p>
&lt;h2 id="rilasciato-questa-settimana">Rilasciato questa settimana&lt;/h2>
&lt;h3 id="ngit-v244">ngit v2.4.4&lt;/h3>
&lt;p>&lt;strong>ngit&lt;/strong> ha rilasciato &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4">v2.4.4&lt;/a>, aggiungendo &lt;code>ngit sync --trust-server&lt;/code> (&lt;code>-t&lt;/code>) per i casi in cui un server git è fast-forward avanti rispetto allo stato Nostr. Quando questa situazione viene rilevata, sync segnala i ref interessati e richiede il flag per firmare e pubblicare un evento di stato aggiornato; un setting git config &lt;code>nostr.trust-server-domains&lt;/code> fornisce una allowlist separata da punti e virgola per i server che dovrebbero essere considerati affidabili automaticamente senza il flag.&lt;/p>
&lt;h3 id="amber-v610-pre3-aggiunge-la-firma-psbt">Amber v6.1.0-pre3 aggiunge la firma PSBT&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> ha rilasciato &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3">v6.1.0-pre3&lt;/a> con un layout migliorato per le nuove connessioni di app, correzioni di crash e un&amp;rsquo;opzione seleziona/deseleziona tutto nella schermata dei permessi. &lt;a href="https://github.com/greenart7c3/Amber/pull/438">PR #438&lt;/a> aggiunge il supporto alla firma PSBT sia tramite il percorso Intent-based sia tramite quello NIP-46 basato su relay, permettendo ad Amber di firmare Partially Signed Bitcoin Transactions senza esporre l&amp;rsquo;nsec all&amp;rsquo;app richiedente.&lt;/p>
&lt;h3 id="wisp-v110-rilascia-risposte-private-e-abbandona-il-supporto-ad-amber">Wisp v1.1.0 rilascia risposte private e abbandona il supporto ad Amber&lt;/h3>
&lt;p>&lt;strong>Wisp&lt;/strong> ha rilasciato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.0">v1.1.0&lt;/a> con risposte private tramite gift wrap NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/540">PR #540&lt;/a>), reazioni gift-wrapped e zap DIP-03 sulle risposte private (&lt;a href="https://github.com/barrydeen/wisp/pull/543">PR #543&lt;/a>), auto-traduzione per le note (&lt;a href="https://github.com/barrydeen/wisp/pull/523">PR #523&lt;/a>) e un input fiat stile register sul dialog dello zap. &lt;a href="https://github.com/barrydeen/wisp/pull/541">PR #541&lt;/a> migra gli zap privati da uno schema plaintext DM-relay fatto in casa a DIP-03 con un corretto routing DM-relay. Lo stesso ciclo di release ha rimosso il supporto al remote signer NIP-55 (&lt;a href="https://github.com/barrydeen/wisp/pull/531">PR #531&lt;/a>), abbandonando Amber e altre integrazioni con signer esterni, e ha rimosso il relay locale in bundle (&lt;a href="https://github.com/barrydeen/wisp/pull/533">PR #533&lt;/a>). Wisp è un client sociale Nostr per Android.&lt;/p>
&lt;h3 id="calendar-by-formstr-v154-corregge-il-gift-wrap-per-i-nuovi-partecipanti">Calendar by Formstr v1.5.4 corregge il gift wrap per i nuovi partecipanti&lt;/h3>
&lt;p>&lt;strong>Calendar by Formstr&lt;/strong> ha rilasciato &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4">v1.5.4&lt;/a> (l&amp;rsquo;ultima in una sequenza v1.5.2 → v1.5.4). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/160">PR #160&lt;/a> corregge un bug in cui l&amp;rsquo;editing di un evento di calendario privato con nuovi partecipanti pubblicava l&amp;rsquo;evento aggiornato con le nuove pubkey nei tag &lt;code>p&lt;/code> ma non creava né consegnava mai inviti gift wrap a quei partecipanti, rompendo il flusso di invito per aggiunte dell&amp;rsquo;ultimo minuto. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/156">PR #156&lt;/a> aggiunge gestione degli errori attorno alla decifratura degli eventi privati così i client non lanciano più eccezioni su eventi non decifrabili, e &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/138">PR #138&lt;/a> corregge orari di eventi ricorrenti che stavano andando alla deriva fra fusi orari.&lt;/p>
&lt;h3 id="applesauce-v610-aggiunge-git-cast-nip-34-e-lookup-relay-nip-51">Applesauce v6.1.0 aggiunge git cast NIP-34 e lookup relay NIP-51&lt;/h3>
&lt;p>&lt;strong>Applesauce&lt;/strong> ha rilasciato &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0">v6.1.0&lt;/a> attraverso i suoi pacchetti con un significativo supporto NIP-34 (git-over-Nostr): applesauce-common aggiunge nuovi cast &lt;code>GitRepository&lt;/code>, &lt;code>GitGraspList&lt;/code> e &lt;code>FavoriteGitRepos&lt;/code> più factory corrispondenti, ed espone le proprietà reattive &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> e &lt;code>User.graspServers$&lt;/code> così le applicazioni possono elencare i repo git seguiti da un utente, i manutentori dei repo e i server GRASP configurati direttamente dallo stesso oggetto User. La stessa release aggiunge il supporto alle liste di lookup relay NIP-51 di kind 10086, un&amp;rsquo;aggiunta recente alla famiglia di relay list usata per scoprire dove trovare dati specifici. applesauce-core guadagna &lt;code>replaceableAddress&lt;/code> su &lt;code>EventCast&lt;/code> per il lookup di indirizzi replaceable NIP-01, più &lt;code>pointer&lt;/code>, &lt;code>kind&lt;/code> e un helper &lt;code>getReplaceableAddressForEvent&lt;/code>, e aggiunge un metodo &lt;code>timeline$()&lt;/code> sul cast &lt;code>User&lt;/code> base. &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a> corregge i metodi manuali del pool che scartavano silenziosamente i relay offline.&lt;/p>
&lt;h3 id="sprout-v0016-rilascia-il-binario-sprig-e-il-protocollo-huddle-v2">Sprout v0.0.16 rilascia il binario Sprig e il protocollo huddle v2&lt;/h3>
&lt;p>&lt;strong>Sprout&lt;/strong> di Block, un workspace di team basato su relay Nostr self-hosted dove esseri umani e agenti AI condividono le stesse stanze e event log, ha rilasciato &lt;a href="https://github.com/block/sprout/releases/tag/v0.0.16">v0.0.16&lt;/a> dell&amp;rsquo;app desktop insieme a build rolling del nuovo binario all-in-one Sprig (&lt;a href="https://github.com/block/sprout/pull/605">PR #605&lt;/a>), che raggruppa l&amp;rsquo;harness ACP, l&amp;rsquo;agente e l&amp;rsquo;MCP per sviluppatori in un unico binario stile busybox per un deployment facile. Il flag &lt;code>--no-memory&lt;/code> aggiunto in &lt;a href="https://github.com/block/sprout/pull/611">PR #611&lt;/a> consente agli operatori di disabilitare l&amp;rsquo;injection della core memory NIP-AE per l&amp;rsquo;harness ACP. Sul lato realtime, &lt;a href="https://github.com/block/sprout/pull/609">PR #609&lt;/a> estende il protocollo voice huddle a un header di frame v2 che supporta fino a 10 peer simultanei.&lt;/p>
&lt;h3 id="nostrord-v103-aggiunge-keychain-os-e-multi-account">Nostrord v1.0.3 aggiunge keychain OS e multi-account&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> ha rilasciato &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.3">v1.0.3&lt;/a> con lo storage locale delle chiavi rafforzato usando keychain OS e fallback a passphrase, supporto multi-account e un QR code bunker tappable che apre l&amp;rsquo;app signer su Android.&lt;/p>
&lt;h3 id="angor-migra-a-nip-44-e-rilascia-hardening-di-sicurezza">Angor migra a NIP-44 e rilascia hardening di sicurezza&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong>, l&amp;rsquo;app di crowdfunding Bitcoin costruita su Nostr e Taproot, ha rilasciato tre release unstable questa settimana (&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> e &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.26">v0.2.26&lt;/a>) con una serie di modifiche di hardening di sicurezza e integrazione Nostr. &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a> migra la messaggistica cifrata Nostr da NIP-04 a NIP-44, sostituendo lo schema deprecato basato su XOR con la cifratura ChaCha20-Poly1305. &lt;a href="https://github.com/block-core/angor/pull/861">PR #861&lt;/a> consente upload media Blossom senza un wallet selezionato usando una chiave di auth Nostr effimera, sbloccando gli upload per gli utenti che non hanno ancora connesso un wallet. La serie di sicurezza ha affrontato diverse categorie hardened: &lt;a href="https://github.com/block-core/angor/pull/854">PR #854&lt;/a> aggiunge type safety per AngorKey e protezione della memoria della mnemonic, &lt;a href="https://github.com/block-core/angor/pull/856">PR #856&lt;/a> impone validazione a livello di protocollo per timelock, fee rate, soglie di dust e regole di penalty, e &lt;a href="https://github.com/block-core/angor/pull/851">PR #851&lt;/a> applica hardening non-breaking attraverso otto categorie di gravità media e bassa. &lt;a href="https://github.com/block-core/angor/pull/859">PR #859&lt;/a> corregge la compatibilità con GrapheneOS abilitando la compilazione AOT e rimuovendo la generazione di codice a runtime, e &lt;a href="https://github.com/block-core/angor/pull/855">PR #855&lt;/a> previene la perdita del wallet allo swipe-kill Android persistendo lo stato del wallet prima che l&amp;rsquo;OS termini il processo.&lt;/p>
&lt;h3 id="alby-js-sdk-v80-rilascia-la-riconnessione-multi-relay-nwc">Alby js-sdk v8.0 rilascia la riconnessione multi-relay NWC&lt;/h3>
&lt;p>&lt;strong>Alby js-sdk&lt;/strong> ha rilasciato la linea v8.0 (da &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 il supporto alle sottoscrizioni multi-relay NWC. &lt;a href="https://github.com/getAlby/js-sdk/pull/516">PR #516&lt;/a> aggiorna la dipendenza nostr-tools e abilita l&amp;rsquo;auto-riconnessione nativa attraverso più relay, sostituendo il precedente approccio a polling con una logica di riconnessione nativa del relay. &lt;a href="https://github.com/getAlby/js-sdk/pull/542">PR #542&lt;/a> sostituisce tutte le chiamate &lt;code>console.debug&lt;/code> con un&amp;rsquo;interfaccia logger iniettabile così gli sviluppatori di applicazioni possono instradare la diagnostica dell&amp;rsquo;SDK attraverso la propria infrastruttura di logging. La release abbandona il polyfill WebSocket, richiedendo Node.js 22 o superiore per i consumer lato server. v8.0.2 ha aggiunto una correzione per un bug di import crypto utils che rompeva certi bundler.&lt;/p>
&lt;h3 id="keychat-v1411-corregge-la-forward-secrecy">KeyChat v1.41.1 corregge la forward secrecy&lt;/h3>
&lt;p>&lt;strong>KeyChat&lt;/strong>, un&amp;rsquo;app di messaggistica che combina il protocollo Signal con il trasporto tramite relay Nostr, ha rilasciato &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 correzione principale impone la forward secrecy eliminando le one-time prekey di Signal immediatamente dopo una decifratura riuscita, chiudendo un gap dove una prekey trattenuta poteva essere usata per decifrare messaggi passati se il dispositivo fosse stato successivamente compromesso. La release aggiunge anche l&amp;rsquo;anteprima URL per i messaggi consistenti in un singolo link, centralizza l&amp;rsquo;auto-download dei media sotto un nuovo &lt;code>FileDownloadManager&lt;/code> con una soglia automatica di 20 MB, e rifattora il fetch delle informazioni di relay NIP-11 per forzare il refresh al cold start così le configurazioni di fee dei relay a pagamento vengono sempre caricate correttamente.&lt;/p>
&lt;h2 id="in-sviluppo">In sviluppo&lt;/h2>
&lt;p>&lt;strong>Citrine&lt;/strong> ha mergiato &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> implementando l&amp;rsquo;enforcement di NIP-70: il relay Android ora blocca i repost che incorporano contenuto di eventi protetti, come richiede la spec. &lt;a href="https://github.com/greenart7c3/Citrine/pull/149">PR #149&lt;/a> aggiunge azioni di visualizzazione e copia per più indirizzi di connessione, localhost, Wi-Fi locale e Tor, dalla schermata delle impostazioni del relay. &lt;a href="https://github.com/greenart7c3/Citrine/pull/141">PR #141&lt;/a> aggiunge la gestione delle challenge AUTH NIP-42 tramite integrazione con signer esterno tramite Amber.&lt;/p>
&lt;p>&lt;strong>Mostro&lt;/strong> ha raggiunto la Fase 2 del suo rollout di bond anti-abuso. &lt;a href="https://github.com/MostroP2P/mostro/pull/737">PR #737&lt;/a> porta la logica di slash di dispute diretta dal solver: gli handler admin ora consumano il payload &lt;code>BondResolution&lt;/code> da mostro-core, consentendo a un admin di slashare il bond di una delle parti quando risolve una disputa. La Fase 1.5, mergiata in &lt;a href="https://github.com/MostroP2P/mostro/pull/736">PR #736&lt;/a>, ha introdotto un&amp;rsquo;azione dedicata &lt;code>PayBondInvoice&lt;/code> e uno status &lt;code>WaitingTakerBond&lt;/code>, separando il pagamento del bond anti-abuso del taker dal payout di trade del compratore. Il client mobile ha aggiunto la UX completa di Fase 1.5 in &lt;a href="https://github.com/MostroP2P/mobile/pull/592">PR #592&lt;/a>. Mostro è un protocollo di exchange Bitcoin peer-to-peer costruito su Nostr.&lt;/p>
&lt;p>&lt;strong>Damus&lt;/strong> ha mergiato &lt;a href="https://github.com/damus-io/damus/pull/3773">PR #3773&lt;/a> ripristinando l&amp;rsquo;indicatore di segnale del relay, e &lt;a href="https://github.com/damus-io/damus/pull/3775">PR #3775&lt;/a> corregge relay che rifiutavano di riconnettersi dopo un fallimento iniziale di connessione.&lt;/p>
&lt;p>&lt;strong>rust-nostr&lt;/strong> ha mergiato &lt;a href="https://github.com/rust-nostr/nostr/pull/1358">PR #1358&lt;/a> aggiungendo trait di finalizzazione degli eventi e builder di eventi specifici per NIP, rendendo più facile costruire eventi correttamente tipizzati per funzioni di protocollo specifiche. &lt;a href="https://github.com/rust-nostr/nostr/pull/1363">PR #1363&lt;/a> porta indietro una correzione che assicura che il signer NIP-46 si sottoscriva alle notifiche prima di inviare la risposta di connect, chiudendo una race condition in cui i messaggi del client che arrivavano immediatamente dopo il connect potevano essere persi.&lt;/p>
&lt;p>&lt;strong>dart-nostr&lt;/strong> ha mergiato &lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">PR #44&lt;/a> aggiungendo un resolver di relay Namecoin &lt;code>.bit&lt;/code> e record di pin TLSA, permettendo alle applicazioni Flutter di risolvere URL di relay &lt;code>wss://example.bit/&lt;/code> tramite DNS Namecoin ai loro effettivi indirizzi WebSocket.&lt;/p>
&lt;p>&lt;strong>Dart NDK&lt;/strong> (il Nostr development kit Dart/Flutter, ora in &lt;code>relaystr/ndk&lt;/code>) ha mergiato &lt;a href="https://github.com/relaystr/ndk/pull/464">PR #464&lt;/a> implementando NIP-77, il protocollo di firma eventi offline. Sul lato signer, &lt;a href="https://github.com/relaystr/ndk/pull/602">PR #602&lt;/a> e &lt;a href="https://github.com/relaystr/ndk/pull/601">PR #601&lt;/a> aggiungono un event signer specifico per web e un&amp;rsquo;astrazione &lt;code>PlatformEventVerifier&lt;/code>, consentendo alle app Flutter web di usare il signer di piattaforma senza un percorso di codice separato; &lt;a href="https://github.com/relaystr/ndk/pull/604">PR #604&lt;/a> introduce una factory di event signer per la selezione a runtime del signer. &lt;a href="https://github.com/relaystr/ndk/pull/608">PR #608&lt;/a> aggiunge &lt;code>getDmRelays()&lt;/code> per recuperare la lista di relay DM NIP-17 di un utente (kind:10050), e &lt;a href="https://github.com/relaystr/ndk/pull/600">PR #600&lt;/a> corregge la preservazione dei campi firmati NIP-46 così i remote signer non perdono campi al round-trip.&lt;/p>
&lt;p>&lt;strong>Pages by Form*&lt;/strong> (&lt;a href="https://github.com/formstr-hq/nostr-docs">repo&lt;/a>), l&amp;rsquo;app di documenti collaborativi Nostr-native di Formstr ospitata a &lt;a href="https://pages.formstr.app">pages.formstr.app&lt;/a>, ha mergiato quattro PR questa settimana stringendo i flussi di attachment cifrato e gestione documenti. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/37">PR #37&lt;/a> corregge immagini mancanti negli export DOCX, HTML e PDF inserendo inline gli allegati cifrati: recupera i blob &lt;code>&amp;lt;encrypted-file&amp;gt;&lt;/code> dai server Blossom, li decifra con AES-GCM 256-bit usando la chiave e il nonce memorizzati, valida il MIME type dell&amp;rsquo;immagine e li converte in URL dati base64 così gli export preservano immagini che esistono solo su Blossom in forma cifrata. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/39">PR #39&lt;/a> aggiunge un meccanismo di ricerca documenti locali, &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/38">PR #38&lt;/a> sistema il flusso di rinomina, e &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/40">PR #40&lt;/a> corregge la gestione dei backup condivisi.&lt;/p>
&lt;p>&lt;strong>Zap Cooking&lt;/strong> ha mergiato &lt;a href="https://github.com/zapcooking/frontend/pull/396">PR #396&lt;/a>, la prima fase di una revisione del feed che pone le primitive di rendering del feed senza alcun cambiamento ancora visibile all&amp;rsquo;utente. La PR introduce un parser di tag &lt;code>imeta&lt;/code> NIP-92 che legge gli slot &lt;code>url&lt;/code>, &lt;code>m&lt;/code> (MIME), &lt;code>dim&lt;/code> (dimensioni), &lt;code>blurhash&lt;/code>, &lt;code>alt&lt;/code>, &lt;code>x&lt;/code> (hash file) e &lt;code>fallback&lt;/code>, più un decoder canonico blurhash portato a mano (~200 LOC) che produce data URL PNG tramite canvas con un fallback null SSR-safe. Quando i tag &lt;code>imeta&lt;/code> sono assenti, il parser ricade sull&amp;rsquo;estrazione di URL grezzi di immagine e video dal contenuto dell&amp;rsquo;evento usando le stesse euristiche che il feed corrente già usa.&lt;/p>
&lt;p>&lt;strong>Nurunuru&lt;/strong> (ぬるぬる, &lt;code>tami1A84/null--nostr&lt;/code>), un client Nostr con varianti Android, iOS e Web native che condividono un engine FFI Rust, ha mergiato la sua sync Native → Web v1.5.0 in &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">PR #176&lt;/a>. La sync porta diverse aggiunte di funzionalità alla build Web che erano già state rilasciate su Android v1.4.9 e iOS 1.0.4: la &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">NotificationModal&lt;/a> ora mostra notifiche di compleanno, rilevazione di zap mutual-follow e notifiche di reazione con emoji custom; il selettore di reazioni abbandona la quick-row di reazioni Unicode di default e centra la UX sulle emoji custom; l&amp;rsquo;engine di raccomandazione in &lt;code>lib/recommendation.js&lt;/code> filtra utenti senza icone o display name e dà priorità alle voci Following con Recommended che carica in background. L&amp;rsquo;input vocale è l&amp;rsquo;unica funzionalità che va nella direzione opposta: la build Web usa già lo streaming ElevenLabs Scribe, e v1.5.0 sincronizza parzialmente il lato Native con &lt;code>SpeechRecognizer&lt;/code> standard OS (Android) e &lt;code>SFSpeechRecognizer&lt;/code> + &lt;code>AVAudioEngine&lt;/code> (iOS) mentre l&amp;rsquo;integrazione Scribe Native completa è rimandata a v1.6.&lt;/p>
&lt;h2 id="lavoro-di-protocollo-e-spec">Lavoro di protocollo e spec&lt;/h2>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">#2251&lt;/a>&lt;/strong> stringe la spec degli eventi protetti NIP-70: ora dichiara esplicitamente che i repost che incorporano il contenuto completo di un evento protetto devono essere rifiutati dai relay. NIP-70 definisce il tag &lt;code>-&lt;/code> che segnala che un autore di nota non acconsente a che la sua nota venga ripubblicata. La spec originale copriva il comportamento di filtraggio del relay, ma lasciava ambiguo il caso di repost. Questa PR chiude quel gap. La &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> di Citrine implementa l&amp;rsquo;enforcement sul lato relay in questa stessa settimana.&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 Drafts per salvare e sincronizzare eventi di bozza privati. La proposta usa eventi replaceable con status &lt;code>draft&lt;/code> e cifratura NIP-44 verso la chiave dell&amp;rsquo;autore stesso, consentendo ai client di salvare lavori in corso sui relay senza che quegli eventi siano visibili a chiunque altro. L&amp;rsquo;evento draft porta l&amp;rsquo;evento completo di pubblicazione intesa come contenuto cifrato, incluso il suo eventuale kind e tag.&lt;/p>
&lt;p>&lt;strong>Snapshots (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>)&lt;/strong> è una proposta aperta di definire un evento snapshot immutabile per preservare una versione esatta di un evento Nostr replaceable. L&amp;rsquo;evento snapshot porta il contenuto completo dell&amp;rsquo;evento replaceable in un dato momento nel tempo, con un tag &lt;code>a&lt;/code> che lo collega all&amp;rsquo;indirizzo dell&amp;rsquo;evento replaceable così tutte le versioni storiche sono interrogabili insieme. Questo rende possibile agli osservatori ispezionare lo stato storico anche dopo che i relay smettono di conservare le vecchie versioni.&lt;/p>
&lt;p>&lt;strong>Ondata Namecoin NIP-05:&lt;/strong> Questa settimana ha visto una spinta coordinata per aggiungere la risoluzione NIP-05 &lt;code>.bit&lt;/code> ai client Nostr. Il feed di discussione NIP ha catturato PR open-source contro Aegis (&lt;a href="https://github.com/ZharlieW/Aegis/pull/14">#14&lt;/a>, che aggiunge la verifica al momento della firma nel signer), nostter (&lt;a href="https://github.com/SnowCait/nostter/pull/2128">#2128&lt;/a>) e dart-nostr (&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">#44&lt;/a>), insieme a una bozza NIP upstream (&lt;a href="https://github.com/nostr-protocol/nips/pull/2349">PR #2349&lt;/a>). La PR di Aegis è notevole per aver posto la verifica sul lato produttore: il signer controlla la chain Namecoin prima di firmare qualsiasi evento di kind:0 che rivendica un&amp;rsquo;identità &lt;code>.bit&lt;/code> e avvisa l&amp;rsquo;utente in caso di mismatch, catturando il problema prima che l&amp;rsquo;evento raggiunga qualsiasi relay.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-07-windownostr-per-i-browser-web">NIP Deep Dive: NIP-07 (window.nostr per i browser Web)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> definisce l&amp;rsquo;interfaccia &lt;code>window.nostr&lt;/code> che le estensioni browser espongono alle applicazioni web. È l&amp;rsquo;interfaccia di signer più ampiamente deployata sul web, implementata da estensioni tra cui Alby, nos2x, Flamingo e horse.&lt;/p>
&lt;p>L&amp;rsquo;interfaccia ha due metodi obbligatori e diversi opzionali. &lt;code>window.nostr.getPublicKey()&lt;/code> restituisce la chiave pubblica dell&amp;rsquo;utente come stringa hex senza mai esporre la chiave privata alla pagina chiamante. &lt;code>window.nostr.signEvent(event)&lt;/code> prende un evento parziale con &lt;code>created_at&lt;/code>, &lt;code>kind&lt;/code>, &lt;code>tags&lt;/code> e &lt;code>content&lt;/code>, e restituisce l&amp;rsquo;evento firmato completo con &lt;code>id&lt;/code>, &lt;code>pubkey&lt;/code> e &lt;code>sig&lt;/code> aggiunti. Il punto chiave è che la chiave privata non lascia mai il contesto isolato dell&amp;rsquo;estensione; l&amp;rsquo;applicazione web sottomette un evento non firmato e riceve indietro uno firmato.&lt;/p>
&lt;p>I metodi opzionali coprono la cifratura: &lt;code>window.nostr.nip04.encrypt&lt;/code> e &lt;code>window.nostr.nip04.decrypt&lt;/code> per il vecchio schema NIP-04 (ora deprecato), e &lt;code>window.nostr.nip44.encrypt&lt;/code> e &lt;code>window.nostr.nip44.decrypt&lt;/code> per lo schema NIP-44 corrente. Le estensioni che supportano NIP-44 possono quindi gestire sia la cifratura dei messaggi diretti sia qualsiasi altra applicazione che necessita di cifratura keyed su pubkey senza che la pagina chiamante veda l&amp;rsquo;nsec.&lt;/p>
&lt;p>La spec include anche una raccomandazione agli autori di estensioni: caricare gli script con &lt;code>&amp;quot;run_at&amp;quot;: &amp;quot;document_end&amp;quot;&lt;/code> nel manifest dell&amp;rsquo;estensione così &lt;code>window.nostr&lt;/code> è disponibile in modo sincrono quando la pagina si carica, evitando race condition in cui un client controlla &lt;code>window.nostr&lt;/code> prima che l&amp;rsquo;estensione l&amp;rsquo;abbia iniettato.&lt;/p>
&lt;p>Un esempio chiave di NIP-07 in azione è il progetto Keycast trattato sopra. Il frontend web di Keycast usa NIP-07 per firmare eventi di auth HTTP NIP-98: l&amp;rsquo;app SvelteKit non gestisce mai direttamente l&amp;rsquo;nsec dell&amp;rsquo;utente. Chiama &lt;code>window.nostr.signEvent&lt;/code> per produrre l&amp;rsquo;header di auth, poi invia quell&amp;rsquo;header all&amp;rsquo;API Keycast. Questa architettura significa che il materiale della chiave resta nell&amp;rsquo;estensione browser lungo tutto il flusso di gestione delle chiavi di team.&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-identità-esterne-nei-profili">NIP Deep Dive: NIP-39 (identità esterne nei profili)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/39.md">NIP-39&lt;/a> definisce come un utente Nostr può dichiarare il controllo su identità esterne di piattaforma nel proprio profilo. Ciascuna dichiarazione usa un tag &lt;code>i&lt;/code> dentro un evento di kind:10011, asserendo la proprietà di uno specifico account su un&amp;rsquo;altra piattaforma insieme a una prova che può essere verificata indipendentemente.&lt;/p>
&lt;p>Ogni tag segue il formato &lt;code>[&amp;quot;i&amp;quot;, &amp;quot;platform:identity&amp;quot;, &amp;quot;proof&amp;quot;]&lt;/code>, dove &lt;code>platform:identity&lt;/code> combina il nome della piattaforma e lo username con un separatore due punti (&lt;code>github:semisol&lt;/code>, &lt;code>twitter:semisol_public&lt;/code>). &lt;code>proof&lt;/code> punta a un artefatto verificabile sulla piattaforma stessa.&lt;/p>
&lt;p>Per GitHub, la prova è un ID di Gist. L&amp;rsquo;utente crea una Gist pubblica dal proprio account GitHub contenente il testo &lt;code>Verifying that I control the following Nostr public key: npub1...&lt;/code>. Un client che verifica il claim recupera &lt;code>https://gist.github.com/&amp;lt;identity&amp;gt;/&amp;lt;proof&amp;gt;&lt;/code> e controlla che la Gist sia stata scritta dallo username GitHub reclamato e contenga la pubkey attesa. Per Twitter la prova è un ID di tweet, per Mastodon un ID di post, e per Telegram un riferimento a messaggio in un gruppo pubblico.&lt;/p>
&lt;p>Il nome del provider di identità deve contenere solo &lt;code>a-z&lt;/code>, &lt;code>0-9&lt;/code> e i caratteri &lt;code>._-/&lt;/code>, e non deve contenere &lt;code>:&lt;/code>. I nomi di identità dovrebbero essere normalizzati in minuscolo, con l&amp;rsquo;alias principale usato quando ne esistono multipli.&lt;/p>
&lt;p>La discussione NIP-05 &lt;code>.bit&lt;/code> Namecoin che avviene questa settimana mostra il ruolo di NIP-39 nello stack di identità più ampio: fornisce un modo standardizzato e agnostico ai relay di cross-referenziare una chiave Nostr con un&amp;rsquo;identità stabilita altrove, senza richiedere alcuna autorità di verifica centrale. Un client può verificare indipendentemente la prova recuperando un artefatto pubblico sulla piattaforma nominata, e la prova è legata alla specifica pubkey Nostr nel testo della Gist o del tweet, non a una credenziale di piattaforma generica.&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>È tutto per questa settimana. Se stai costruendo qualcosa o hai notizie da condividere, mandaci un DM su Nostr o trovaci su &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/it/newsletters/2026-05-13-newsletter/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-13-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale allo sviluppo del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Nostr VPN pubblica otto versioni in sette giorni, da un flusso di pairing dei dispositivi ridisegnato a uno swap AEAD FIPS che circa raddoppia il throughput TCP. Marmot Protocol (la base di White Noise) pubblica una versione frontend che completa la funzionalità di blocco degli utenti e 31 PR unite su MDK e backend. Grain pubblica v0.6.0 con quattro nuove implementazioni NIP in un unico traguardo. Citrine pubblica v3.0.0-pre1 con Tor integrato e aggregazione relay. Amber pubblica v6.1.0-pre2 con miglioramenti al flusso di connessione e alla firma. Alby Hub pubblica v1.22.2 con una pagina AI e Agenti e l&amp;rsquo;integrazione Core Lightning. Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0. Jumble pubblica cinque versioni con la cronologia delle ricerche recenti e correzioni alla persistenza dei dati account. Nostrord pubblica tre versioni con modal di condivisione gruppo e pacchetti Arch Linux. Flotilla pubblica 1.8.0 con videochiamate, rendering email e menzioni di stanza. Calendar by Formstr pubblica v1.5.1 con la pianificazione degli appuntamenti e la sincronizzazione del calendario Android. Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale allo sviluppo del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Nostr VPN pubblica otto versioni in sette giorni, da un flusso di pairing dei dispositivi ridisegnato a uno swap AEAD FIPS che circa raddoppia il throughput TCP. Marmot Protocol (la base di White Noise) pubblica una versione frontend che completa la funzionalità di blocco degli utenti e 31 PR unite su MDK e backend. Grain pubblica v0.6.0 con quattro nuove implementazioni NIP in un unico traguardo. Citrine pubblica v3.0.0-pre1 con Tor integrato e aggregazione relay. Amber pubblica v6.1.0-pre2 con miglioramenti al flusso di connessione e alla firma. Alby Hub pubblica v1.22.2 con una pagina AI e Agenti e l&amp;rsquo;integrazione Core Lightning. Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0. Jumble pubblica cinque versioni con la cronologia delle ricerche recenti e correzioni alla persistenza dei dati account. Nostrord pubblica tre versioni con modal di condivisione gruppo e pacchetti Arch Linux. Flotilla pubblica 1.8.0 con videochiamate, rendering email e menzioni di stanza. Calendar by Formstr pubblica v1.5.1 con la pianificazione degli appuntamenti e la sincronizzazione del calendario Android. Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="nostr-vpn-pubblica-otto-versioni-culminando-con-v4010">Nostr VPN pubblica otto versioni culminando con v4.0.10&lt;/h3>
&lt;p>Nostr VPN, la VPN mesh decentralizzata basata su Rust che utilizza Nostr per la scoperta dei peer, ha pubblicato otto versioni da v4.0.1 a v4.0.10 su macOS, Linux, Windows e Android. La modifica principale di v4.0.8: l&amp;rsquo;AEAD è stato sostituito dal backend software RustCrypto chacha20poly1305 con ChaCha20-Poly1305 di BoringSSL in ring 0.17, che utilizza NEON ottimizzato a mano su aarch64 e AVX2/AVX-512 su x86_64. I benchmark Docker su hardware identico hanno mostrato il throughput TCP diretto a 2 nodi passare da 437 a 1097 Mbps. v4.0.9 ha aggiunto il batching sendmmsg(2) sul percorso di invio UDP, portando il TCP single-stream da 1066 a 1548 Mbps (1,45×). v4.0.10 ha pubblicato una completa revisione della UX di pairing dei dispositivi.&lt;/p>
&lt;h3 id="marmot--white-noise-pubblica-una-versione-frontend-che-completa-il-blocco-degli-utenti-e-31-pr-unite-su-mdk-e-backend">Marmot / White Noise pubblica una versione frontend che completa il blocco degli utenti e 31 PR unite su MDK e backend&lt;/h3>
&lt;p>White Noise ha pubblicato v2026.5.7+24 il 7 maggio completando il set di funzionalità di blocco. Un utente bloccato è ora nascosto dagli inviti, dalle anteprime delle chat, dalle timeline dei messaggi, dai risultati di ricerca e dalle notifiche, e i suoi messaggi non contano più nei badge dei messaggi non letti. MDK ha integrato PR #258 con il formato wire dell&amp;rsquo;estensione v3 e lo schema disappearing_message_secs, gettando le basi per i messaggi a scomparsa.&lt;/p>
&lt;h3 id="grain-v060-aggiunge-nip-40-nip-50-nip-70-e-nip-45">Grain v0.6.0 aggiunge NIP-40, NIP-50, NIP-70 e NIP-45&lt;/h3>
&lt;p>Grain ha pubblicato v0.6.0 il 6 maggio con quattro nuove implementazioni NIP. La scadenza degli eventi NIP-40 consente ai publisher di impostare un timestamp di scadenza affinché il relay elimini gli eventi dopo la loro scadenza. La ricerca full-text NIP-50 consente ai client di emettere filtri di ricerca nei messaggi REQ. Gli eventi protetti NIP-70 impediscono ai relay di ricondividere eventi senza l&amp;rsquo;esplicita autorizzazione dell&amp;rsquo;autore. Le query di conteggio NIP-45 consentono ai client di chiedere a un relay di restituire un conteggio degli eventi corrispondenti.&lt;/p>
&lt;h2 id="pubblicazioni-della-settimana">Pubblicazioni della settimana&lt;/h2>
&lt;h3 id="citrine-v300-pre1-integra-tor-nativo-e-aggregazione-relay">Citrine v3.0.0-pre1 integra Tor nativo e aggregazione relay&lt;/h3>
&lt;p>Citrine ha pubblicato v3.0.0-pre1 con supporto Tor integrato per un accesso ai relay che preserva la privacy e l&amp;rsquo;aggregazione relay, dove Citrine può estrarre eventi da più relay upstream e servirli ai client locali. PR #139 aggiunge il supporto NIP-77 (Negentropy Reconciliation) per la sincronizzazione efficiente degli eventi basata sulla riconciliazione degli insiemi.&lt;/p>
&lt;h3 id="amber-v610-pre2-migliora-il-flusso-di-connessione-delle-nuove-app">Amber v6.1.0-pre2 migliora il flusso di connessione delle nuove app&lt;/h3>
&lt;p>Amber ha pubblicato v6.1.0-pre2. Le correzioni principali: il dialogo del firmatario ora si chiude correttamente dopo aver accettato una richiesta bunker, le richieste bunker malformate mostrano una schermata di richiesta non valida, e viene aggiunta la limitazione della velocità per le richieste di firma basate su intent.&lt;/p>
&lt;h3 id="alby-hub-v1222-aggiunge-la-pagina-ai-e-agenti-e-il-supporto-core-lightning">Alby Hub v1.22.2 aggiunge la pagina AI e Agenti e il supporto Core Lightning&lt;/h3>
&lt;p>Alby Hub ha pubblicato v1.22.2. La nuova pagina AI e Agenti espone le capacità Lightning e NWC di Alby Hub agli agenti AI e agli strumenti compatibili MCP. Core Lightning (CLN) è ora un backend supportato insieme a LND e LDK.&lt;/p>
&lt;h3 id="mostro-pubblica-i-bond-del-taker-concorrenti-e-mostro-core-v0110">Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0&lt;/h3>
&lt;p>Mostro ha integrato 11 PR che avanzano la funzionalità di bond del taker. PR #733 implementa i bond del taker concorrenti dove più taker possono inviare fatture di bond contemporaneamente e il primo a bloccare vince. mostro-core ha pubblicato v0.11.0 con PR #144 che aggiunge Action::PayBondInvoice e Status::WaitingTakerBond. mostro-cli ha pubblicato v0.15.0.&lt;/p>
&lt;h3 id="jumble-pubblica-cinque-versioni-con-ricerca-recente-e-persistenza-degli-account">Jumble pubblica cinque versioni con ricerca recente e persistenza degli account&lt;/h3>
&lt;p>Jumble ha pubblicato v26.5.2 fino a v26.5.6. v26.5.5 aggiunge la cronologia delle ricerche recenti. Un bug critico di persistenza è corretto in v26.5.6: gli account e i dati memorizzati nella cache sopravvivono ora a un riavvio completo dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="nostrord-pubblica-modal-di-condivisione-gruppo-caricamento-media-e-pacchetti-arch-linux">Nostrord pubblica modal di condivisione gruppo, caricamento media e pacchetti Arch Linux&lt;/h3>
&lt;p>Nostrord ha pubblicato v1.0.0, v1.0.1 e v1.0.2. v1.0.1 pubblica pacchetti Arch Linux tramite AUR come nostrord-bin con artefatti firmati con PGP, un pulsante per saltare all&amp;rsquo;ultimo messaggio e l&amp;rsquo;incolla di immagini/media nella chat. v1.0.2 aggiunge la condivisione del gruppo tramite PR #49 con un modal di condivisione che genera sia un URI nostr:naddr che un link nostrord.com/open/.&lt;/p>
&lt;h3 id="fips-v030-pubblica-portata-multipiattaforma-scoperta-peer-nostr-e-un-gateway-per-lan-non-modificate">FIPS v0.3.0 pubblica portata multipiattaforma, scoperta peer Nostr e un gateway per LAN non modificate&lt;/h3>
&lt;p>FIPS ha pubblicato v0.3.0, un traguardo importante che si espande da Linux-only a Linux, macOS, Windows e OpenWrt. I nodi ora pubblicano annunci overlay firmati come eventi parametrizzati sostituibili kind:37195 sui relay Nostr pubblici. Lo stesso swap ChaCha20-Poly1305 di ring 0.17 che ha alimentato il salto di throughput di Nostr VPN è presente anche in FIPS v0.3.0.&lt;/p>
&lt;h3 id="camelus-v1101-pubblica-versioni-desktop">Camelus v1.10.1 pubblica versioni desktop&lt;/h3>
&lt;p>Camelus ha pubblicato v1.10.1 con versioni desktop per Windows e Linux, espandendo la distribuzione oltre il solo mobile.&lt;/p>
&lt;h3 id="flotilla-180-pubblica-videochiamate-rendering-email-e-menzioni-di-stanza">Flotilla 1.8.0 pubblica videochiamate, rendering email e menzioni di stanza&lt;/h3>
&lt;p>Flotilla ha pubblicato 1.8.0. Le stanze vocali ora supportano il video: i partecipanti possono attivare le telecamere o condividere il proprio schermo durante una chiamata. Il rendering email arriva tramite un aggiornamento alla libreria welshman. Le menzioni di stanza consentono agli utenti di fare riferimento ad altre stanze e relay con link inline cliccabili.&lt;/p>
&lt;h3 id="calendar-by-formstr-pubblica-v151-con-pianificazione-degli-appuntamenti-e-sincronizzazione-del-calendario-android">Calendar by Formstr pubblica v1.5.1 con pianificazione degli appuntamenti e sincronizzazione del calendario Android&lt;/h3>
&lt;p>Calendar by Formstr ha pubblicato v1.5.0 il 10 maggio e v1.5.1 l'11 maggio. La pianificazione degli appuntamenti consente agli utenti di creare slot temporali prenotabili. L&amp;rsquo;integrazione del calendario Android in sola lettura sincronizza gli eventi Nostr con il calendario del dispositivo.&lt;/p>
&lt;h2 id="in-sviluppo">In sviluppo&lt;/h2>
&lt;h3 id="amethyst-aggiunge-post-programmati-regole-di-comunità-nip-9a-e-un-relay-locale-desktop">Amethyst aggiunge post programmati, regole di comunità NIP-9A e un relay locale desktop&lt;/h3>
&lt;p>Amethyst ha integrato 78 PR questa settimana. I post programmati arrivano in PR #2765. Una versione desktop acquisisce un relay locale integrato con persistenza degli eventi SQLite in PR #2841. Tre PR implementano le regole di comunità NIP-9A: PR #2798 valida i post rispetto alle regole di comunità prima dell&amp;rsquo;invio, PR #2799 aggiunge un editor di regole NIP-9A strutturato, e PR #2800 aggiunge un filtro di feed NIP-9A opzionale.&lt;/p>
&lt;h3 id="shopstr-aggiunge-la-registrazione-degli-audit-mcp-e-la-sicurezza-delle-sessioni">Shopstr aggiunge la registrazione degli audit MCP e la sicurezza delle sessioni&lt;/h3>
&lt;p>Shopstr ha integrato cinque PR. La registrazione degli audit per il livello di strumenti MCP arriva in PR #456. La sicurezza delle sessioni si rafforza in PR #477 con il pinning delle sessioni alla chiave API di origine e l&amp;rsquo;espulsione TTL.&lt;/p>
&lt;h3 id="dart-ndk-aggiunge-il-supporto-web-e-la-verifica-delle-firme-dei-sigilli">Dart NDK aggiunge il supporto web e la verifica delle firme dei sigilli&lt;/h3>
&lt;p>Dart NDK ha integrato sei PR. Il supporto web arriva in SembastCacheManager tramite PR #571. La verifica delle firme dei sigilli arriva in PR #595 per il flusso NIP-59 Gift Wrap.&lt;/p>
&lt;h2 id="nuovi-progetti">Nuovi progetti&lt;/h2>
&lt;h3 id="tamagostrich-lancia-un-tamagotchi-nip-78-decentralizzato-con-ricompense-in-sats">Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats&lt;/h3>
&lt;p>Tamagostrich è un gioco di animale virtuale nel browser lanciato all&amp;rsquo;IDENTITY Hackathon 2026 dove un piccolo struzzo, Nori, si evolve attraverso la tua attività sociale Nostr. Lo stato dell&amp;rsquo;animale è memorizzato in un evento NIP-78 kind:30078 per la sincronizzazione multi-dispositivo. Le ricompense ai traguardi vengono pagate in sats tramite NIP-47: 50 sats al livello 5, 210 sats al livello 10 e 420 sats al livello massimo 21, inviati all&amp;rsquo;indirizzo lud16 dell&amp;rsquo;utente.&lt;/p>
&lt;h2 id="lavori-su-protocollo-e-specifiche">Lavori su protocollo e specifiche&lt;/h2>
&lt;p>Cinque nuove proposte sono state aperte questa settimana:&lt;/p>
&lt;p>PR #2331 propone NIP-9A: Regole di Comunità Verificabili, introducendo kind:34551 per documenti di regole di comunità leggibili da macchina e firmati crittograficamente.&lt;/p>
&lt;p>PR #2335 propone gli Eventi di Prenotazione per i Marketplace Nostr, definendo kind:32122 (eventi di prenotazione parametrizzati sostituibili), kind:1326 (record di audit delle transizioni solo in aggiunta) e kind:32124 (recensioni post-transazione). La negoziazione è privata tramite messaggi gift-wrapped NIP-59.&lt;/p>
&lt;p>PR #2334 propone i Servizi di Escrow per i Marketplace Nostr usando kind:30303 affinché gli operatori di escrow dichiarino il loro indirizzo di contratto EVM e il listino tariffe.&lt;/p>
&lt;p>PR #2333 propone i Profili di Annuncio di Alloggio per gli Annunci del Marketplace NIP-99, estendendo NIP-99 con tag g di indice geospaziale H3 per gli annunci di affitto a breve termine.&lt;/p>
&lt;p>PR #2332 propone NIP-BC: Zap On-chain (kind 8333), sfruttando l&amp;rsquo;identità diretta tra le chiavi Nostr e gli indirizzi Bitcoin Taproot. Il numero di kind rispecchia NIP-57: 9735 è la porta P2P di Lightning; 8333 è la porta P2P della mainnet Bitcoin.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-78-dati-specifici-dellapp">Approfondimento NIP: NIP-78 (dati specifici dell&amp;rsquo;app)&lt;/h2>
&lt;p>NIP-78 definisce un metodo standard con cui le applicazioni memorizzano dati arbitrari privati o pubblici per conto di un utente tramite eventi Nostr. Il tipo di evento centrale è 30078, un evento parametrizzato sostituibile in cui il tag d è una stringa identificatore definita dall&amp;rsquo;applicazione. Un&amp;rsquo;applicazione assegna al proprio slot di storage un tag d univoco e pubblica un evento 30078 con qualsiasi contenuto JSON o testo che deve persistere. La motivazione principale è la sincronizzazione multi-dispositivo senza un server centralizzato. Per i dati privati dell&amp;rsquo;applicazione, gli eventi NIP-78 possono cifrare il campo content usando NIP-44 prima della pubblicazione. Gli utenti attuali includono Tamagostrich (sincronizzazione dello stato dell&amp;rsquo;animale), Wisp (backup del portafoglio e impostazioni di sicurezza), NosPress (stato di orchestrazione CMS) e diverse implementazioni di sincronizzazione delle impostazioni dei client Nostr.&lt;/p>
&lt;hr>
&lt;p>Fonti primarie:&lt;/p>
&lt;ul>
&lt;li>Specifica NIP-78: &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">https://github.com/nostr-protocol/nips/blob/master/78.md&lt;/a>&lt;/li>
&lt;li>Tamagostrich: &lt;a href="https://github.com/Negr087/tamagostrich">https://github.com/Negr087/tamagostrich&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Vedi anche: Liste NIP-51, Metadati elenco relay NIP-65&lt;/p>
&lt;h2 id="approfondimento-nip-nip-98-http-auth">Approfondimento NIP: NIP-98 (HTTP Auth)&lt;/h2>
&lt;p>NIP-98 definisce uno schema di autenticazione HTTP che consente alle coppie di chiavi Nostr di autorizzare richieste a server HTTP, eliminando nomi utente, password o token OAuth. Un client costruisce un evento Nostr di breve durata di kind 27235, lo firma con la propria chiave privata, codifica il JSON in base64 e lo invia in un header HTTP Authorization: Nostr &lt;base64>. L&amp;rsquo;evento kind 27235 include il metodo HTTP in un tag method, l&amp;rsquo;URL completo della richiesta in un tag u e un timestamp created_at. Il server valida la firma, verifica che metodo e URL corrispondano e controlla che il timestamp sia recente per prevenire gli attacchi di replay. NIP-98 è usato in Blossom (BUD-01) per l&amp;rsquo;autenticazione dell&amp;rsquo;upload dei blob, Routstr per il controllo degli accessi API per richiesta, Sprout per l&amp;rsquo;autenticazione del trasporto git e Alby Hub per l&amp;rsquo;autenticazione dell&amp;rsquo;API admin.&lt;/p>
&lt;hr>
&lt;p>Fonti primarie:&lt;/p>
&lt;ul>
&lt;li>Specifica NIP-98: &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">https://github.com/nostr-protocol/nips/blob/master/98.md&lt;/a>&lt;/li>
&lt;li>BUD-01: &lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/01.md">https://github.com/hzrd149/blossom/blob/master/buds/01.md&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Vedi anche: Integrazione archiviazione file HTTP NIP-96&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, inviateci un DM su Nostr o trovateci su nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #21</title><link>https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Marmot Protocol pubblica MDK 0.8.0 con le prime primitive di notifica MIP-05, pacchetti di chiavi NIP-51 indirizzabili e una revisione della sicurezza rafforzata. LaWallet NWC pubblica v0.10.0, la versione più importante dalla copertura di OpenSats, con una dashboard admin completa, portafoglio utente, registro delle attività end-to-end e un nuovo schema LightningAddress 1→N e NWCConnection. Amethyst porta uno sprint di stabilizzazione di Nests con l&amp;rsquo;eliminazione dei gap audio durante il refresh JWT, sottoscrizioni di dati chiave lifecycle-aware, riconnessione keep-alive dei relay e un indicatore animato del parlante attivo. ngit pubblica v2.4.2 e v2.4.3 correggendo il rilevamento del server GRASP per le submission di PR e il filtraggio degli eventi di stato multi-remote. GRAIN pubblica v0.5.4 con hardening per la produzione e una correzione silenziosa di perdita di dati nel Docker quick-start. Mostro Core pubblica v0.10.1 con artefatti di release firmati con PGP. Clave lancia v0.2.0 con supporto multi-account su iOS.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Marmot Protocol pubblica MDK 0.8.0 con le prime primitive di notifica MIP-05, pacchetti di chiavi NIP-51 indirizzabili e una revisione della sicurezza rafforzata. LaWallet NWC pubblica v0.10.0, la versione più importante dalla copertura di OpenSats, con una dashboard admin completa, portafoglio utente, registro delle attività end-to-end e un nuovo schema LightningAddress 1→N e NWCConnection. Amethyst porta uno sprint di stabilizzazione di Nests con l&amp;rsquo;eliminazione dei gap audio durante il refresh JWT, sottoscrizioni di dati chiave lifecycle-aware, riconnessione keep-alive dei relay e un indicatore animato del parlante attivo. ngit pubblica v2.4.2 e v2.4.3 correggendo il rilevamento del server GRASP per le submission di PR e il filtraggio degli eventi di stato multi-remote. GRAIN pubblica v0.5.4 con hardening per la produzione e una correzione silenziosa di perdita di dati nel Docker quick-start. Mostro Core pubblica v0.10.1 con artefatti di release firmati con PGP. Clave lancia v0.2.0 con supporto multi-account su iOS.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="mdk-080-aggiunge-le-primitive-di-notifica-mip-05-e-i-pacchetti-di-chiavi-indirizzabili">MDK 0.8.0 aggiunge le primitive di notifica MIP-05 e i pacchetti di chiavi indirizzabili&lt;/h3>
&lt;p>MDK, la libreria Rust centrale per il protocollo Marmot, ha pubblicato v0.8.0 il 4 maggio. Questa versione introduce i primi blocchi costruttivi di notifica MIP-05, sposta i pacchetti di chiavi MIP-00 verso eventi indirizzabili così da poter sostituire il pacchetto chiavi di un utente in-place, migliora la compatibilità dei gruppi a versione mista, espande la copertura UniFFI per i binding mobile e rafforza i percorsi di validazione attorno alle azioni admin, commit, storage, limiti di cifratura e gestione dei replay. Le primitive MIP-05 includono helper di indice foglia aggiunti in PR #235, che forniscono ai client downstream informazioni sufficienti per consegnare notifiche push per destinatario senza rivelare la struttura del gruppo. PR #273 ripristina la pubblicazione di mdk-core su crates.io, e PR #269 espone il modulo test_util dietro una feature Cargo test-utils così che le suite di test client esterne possano condividere il test harness di Marmot.&lt;/p>
&lt;h3 id="lawallet-nwc-v0100-pubblica-il-monorepo-completo-e-il-portafoglio-utente-finale">LaWallet NWC v0.10.0 pubblica il monorepo completo e il portafoglio utente finale&lt;/h3>
&lt;p>LaWallet NWC, l&amp;rsquo;implementazione NIP-47 Nostr Wallet Connect del team LaWallet, ha pubblicato v0.10.0 il 30 aprile. È la versione più importante da quando il progetto ha ricevuto il finanziamento OpenSats. Include il monorepo completo, la dashboard admin completa, un portafoglio utente finale, un registro attività end-to-end, branding dinamico e il nuovo schema LightningAddress 1→N e NWCConnection. Il portafoglio per gli utenti finali, pubblicato in PR #191, copre l&amp;rsquo;onboarding, la home, invio/ricezione, scansione, valute, un feed attività e una cache offline.&lt;/p>
&lt;h3 id="amethyst-stabilizza-nests-con-keep-alive-resilienza-jwt-e-sottoscrizioni-lifecycle">Amethyst stabilizza Nests con keep-alive, resilienza JWT e sottoscrizioni lifecycle&lt;/h3>
&lt;p>Amethyst, il client Android ricco di funzionalità, ha continuato il lavoro sulle stanze audio NIP-53 Nests con uno sprint di stabilizzazione incentrato sui modi di guasto che interrompevano le chiamate in produzione. La correzione del gap audio in PR #2733 sovrappone la nuova acquisizione delle credenziali con il flusso attivo durante il refresh JWT. Un nuovo meccanismo keep-alive in PR #2730 riconnette i relay disconnessi senza richiedere un&amp;rsquo;azione manuale dell&amp;rsquo;utente, e PR #2728 sostituisce la vecchia KeyDataSourceSubscription con LifecycleAwareKeyDataSourceSubscription. PR #2724 aggiunge un indicatore ad anello esterno animato che evidenzia il parlante attivo nelle sessioni multi-parlante.&lt;/p>
&lt;h3 id="ngit-v242-e-v243-correggono-il-rilevamento-del-server-grasp-e-gli-eventi-di-stato-multi-remote">ngit v2.4.2 e v2.4.3 correggono il rilevamento del server GRASP e gli eventi di stato multi-remote&lt;/h3>
&lt;p>ngit, lo strumento da riga di comando e plugin git per la collaborazione NIP-34, ha pubblicato v2.4.2 il 28 aprile e v2.4.3 il 1° maggio. v2.4.2 corregge una mancata corrispondenza di normalizzazione URL in cui i repo_grasps contenevano hostname normalizzati ma il confronto veniva effettuato rispetto agli URL di clone completi. v2.4.3 corregge un&amp;rsquo;ambiguità negli eventi di stato che emergeva quando un repository ha più remote nostr:// che condividono lo stesso identificatore.&lt;/p>
&lt;h3 id="grain-v054-aggiunge-hardening-per-la-produzione-e-corregge-una-perdita-di-dati-silenziosa">GRAIN v0.5.4 aggiunge hardening per la produzione e corregge una perdita di dati silenziosa&lt;/h3>
&lt;p>GRAIN, il relay Nostr e la libreria client basati su Go, ha pubblicato v0.5.4 il 30 aprile. La versione raccoglie sei correzioni accumulate dalla v0.5.3, incluso un bug di perdita di dati silenziosa nel Docker quick-start che in precedenza eliminava eventi al riavvio del container, e un bug di correttezza nel livello di storage nelle letture di eventi indirizzabili.&lt;/p>
&lt;h3 id="mostro-core-v0101-aggiunge-artefatti-di-release-firmati-con-pgp">Mostro Core v0.10.1 aggiunge artefatti di release firmati con PGP&lt;/h3>
&lt;p>Mostro Core, la libreria Rust che fornisce funzionalità peer-to-peer per il daemon Mostro, ha pubblicato v0.10.1 il 28 aprile. La nuova versione aggiunge artefatti di release firmati con PGP e un flusso di verifica della release così che i packager downstream possano confermare la provenienza degli artefatti.&lt;/p>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="clave-v020-lancia-il-multi-account-su-ios-con-firma-nip-46-nostr-connect">Clave v0.2.0 lancia il multi-account su iOS con firma NIP-46 (Nostr Connect)&lt;/h3>
&lt;p>Clave, l&amp;rsquo;app iOS per la firma remota NIP-46, ha pubblicato v0.2.0 il 5 maggio. Il principale aggiornamento introduce il supporto multi-account: Clave può ora gestire fino a quattro account su un unico dispositivo, con un selettore one-tap e isolamento per account. PR #23 aggiunge il codice iOS per il multi-account, e PR #22 aggiunge un campo signer_pubkey al payload APNs così che il dispositivo sappia a quale account appartiene una richiesta di firma remota.&lt;/p>
&lt;h3 id="wisp-pubblica-v103--v105-con-lavori-di-stabilità">Wisp pubblica v1.0.3 → v1.0.5 con lavori di stabilità&lt;/h3>
&lt;p>Wisp, il client Android, ha pubblicato v1.0.3, v1.0.4 e v1.0.5 il 4 maggio con lavori di stabilità. PR #506 aggiunge Thumbhash per le anteprime sfocate delle immagini mentre i media completi si caricano, e PR #514 riduce lo scatto nel cambio delle schede inferiori.&lt;/p>
&lt;h3 id="amber-610-pre1-pubblica-correzioni-di-layout-e-stabilità">Amber 6.1.0-pre1 pubblica correzioni di layout e stabilità&lt;/h3>
&lt;p>Amber, l&amp;rsquo;app di firma Android per NIP-55 e NIP-46, ha pubblicato v6.1.0-pre1 con una revisione del layout nel flusso di connessione delle nuove app e diverse correzioni di crash. PR #416 corregge il layout di ActivityStatsBar e i problemi di overflow del testo.&lt;/p>
&lt;h3 id="routstr-core-v043-migliora-pagamento-rimborso-e-reportistica-sullutilizzo">Routstr Core v0.4.3 migliora pagamento, rimborso e reportistica sull&amp;rsquo;utilizzo&lt;/h3>
&lt;p>Routstr Core ha pubblicato v0.4.3 come pre-release il 1° maggio con miglioramenti alla gestione dei pagamenti e dei rimborsi, al tracciamento dei costi e alla reportistica sull&amp;rsquo;utilizzo.&lt;/p>
&lt;h3 id="nostria-v3137-fino-a-v3141-aggiungono-i-segnalibri-web-e-un-tema-auto">Nostria v3.1.37 fino a v3.1.41 aggiungono i segnalibri Web e un tema Auto&lt;/h3>
&lt;p>Nostria, il client Nostr multi-piattaforma, ha pubblicato v3.1.37 fino a v3.1.41 aggiungendo il supporto ai segnalibri Web NIP-B0, un tema Auto che segue le impostazioni del dispositivo e la visualizzazione PDF integrata nell&amp;rsquo;app.&lt;/p>
&lt;h3 id="noornote-v089-corregge-la-schermata-vuota-al-primo-avvio-sul-desktop">NoorNote v0.8.9 corregge la schermata vuota al primo avvio sul desktop&lt;/h3>
&lt;p>NoorNote ha pubblicato v0.8.9 il 28 aprile correggendo un bug di schermata vuota al primo avvio dell&amp;rsquo;app desktop.&lt;/p>
&lt;h3 id="kubo-v034-fino-a-v041-pubblicano-una-piattaforma-video-nostr-a-misura-di-bambino-con-controlli-parentali-e-curation-del-feed-tramite-web-of-trust">Kubo v0.3.4 fino a v0.4.1 pubblicano una piattaforma video Nostr a misura di bambino con controlli parentali e curation del feed tramite Web of Trust&lt;/h3>
&lt;p>Kubo, una piattaforma video a misura di bambino su Nostr, ha pubblicato v0.3.4 fino a v0.4.1 il 4 e 5 maggio. Ogni bambino riceve una coppia di chiavi Nostr separata e un feed incentrato sui video dove i genitori controllano i limiti di tempo (da 15 a 180 minuti al giorno), le finestre temporali consentite e la visibilità delle azioni sui post.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="sprout-pubblica-desktop-v004-e-v005-con-autenticazione-agente-nip-oa-e-il-sidecar-pair-relay">Sprout pubblica Desktop v0.0.4 e v0.0.5 con autenticazione agente NIP-OA e il sidecar pair-relay&lt;/h3>
&lt;p>Sprout, il client Nostr di Block con relay integrato, ha pubblicato Desktop v0.0.4 il 5 maggio e v0.0.5 il 6 maggio. PR #471 integra l&amp;rsquo;autenticazione agente NIP-OA nel flusso di membership NIP-43 del relay così che un agente autonomo possa dimostrare che una specifica chiave pubblica umana ha autorizzato le sue azioni. Un nuovo relay sidecar effimero per il pairing di dispositivi NIP-AB arriva in PR #467 come sprout-pair-relay.&lt;/p>
&lt;h3 id="nostream-aggiunge-il-supporto-relay-marmot-e-le-reazioni-nip-25">nostream aggiunge il supporto relay Marmot e le reazioni NIP-25&lt;/h3>
&lt;p>nostream, l&amp;rsquo;implementazione relay Node.js, ha integrato il supporto relay Marmot Protocol che copre i MIP da 00 a 03 in PR #602, il supporto alle reazioni NIP-25 in PR #589 e la corrispondenza del prefisso geohash per i filtri #g in PR #586.&lt;/p>
&lt;h3 id="strfry-aggiunge-losservabilità-per-connessione-e-riduce-il-tetto-nofiles">strfry aggiunge l&amp;rsquo;osservabilità per connessione e riduce il tetto nofiles&lt;/h3>
&lt;p>strfry, il relay Nostr in C++, ha integrato 14 PR che puntano all&amp;rsquo;osservabilità. PR #218 aggiunge l&amp;rsquo;osservabilità degli outbound in attesa per connessione e un cap di back-pressure configurabile. PR #224 rimuove le allocazioni heap di std::function dal fanout del monitor per evento.&lt;/p>
&lt;h3 id="damus-sostituisce-i-gif-tenor-con-un-proxy-purple-e-pubblica-la-ux-di-compattazione">Damus sostituisce i GIF Tenor con un proxy Purple e pubblica la UX di compattazione&lt;/h3>
&lt;p>Damus ha integrato PR #3737 sostituendo l&amp;rsquo;integrazione GIF Tenor con un proxy Damus Purple.&lt;/p>
&lt;h3 id="primal-android-migliora-explore-gli-avvisi-e-il-badge-di-verifica-nip-05">Primal Android migliora Explore, gli avvisi e il badge di verifica NIP-05&lt;/h3>
&lt;p>Primal Android ha integrato PR #1043 correggendo un badge di verifica NIP-05 lampeggiante per gli utenti con identificatori _@domain.&lt;/p>
&lt;h3 id="alby-hub-aggiunge-i-pagamenti-nwc-dalle-connessioni-delle-app">Alby Hub aggiunge i pagamenti NWC dalle connessioni delle app&lt;/h3>
&lt;p>Alby Hub ha integrato PR #2267 che consente i pagamenti dalle connessioni delle app.&lt;/p>
&lt;h3 id="routstrd-auth-un-routstrd-docker-per-team-con-autenticazione-nip-98-e-rbac-npub">routstrd-auth: un Routstrd Docker per team con autenticazione NIP-98 e RBAC npub&lt;/h3>
&lt;p>routstrd-auth, creato il 27 aprile, è una variante Docker di Routstrd per i deployment in team multi-utente con controllo degli accessi basato sui ruoli npub e autenticazione HTTP NIP-98.&lt;/p>
&lt;h3 id="routstrd-integra-hermes-per-i-client-daemon-e-la-modalità-remota">Routstrd integra Hermes per i client daemon e la modalità remota&lt;/h3>
&lt;p>Routstrd ha integrato PR #22 aggiungendo l&amp;rsquo;integrazione con Hermes Agent così che il file di configurazione dell&amp;rsquo;agente venga popolato con i provider di modelli e le chiavi API che Routstrd scopre tramite Nostr.&lt;/p>
&lt;h3 id="whitenoise-rs-pubblica-lisolamento-del-database-per-account-e-gli-aggiornamenti-delle-proposte">whitenoise-rs pubblica l&amp;rsquo;isolamento del database per account e gli aggiornamenti delle proposte&lt;/h3>
&lt;p>whitenoise-rs ha integrato PR #796 spostando le tabelle di proiezione dei messaggi in database per account, e PR #791 aggiunge gli aggiornamenti delle proposte così che i gruppi possano estendere le funzionalità con nuovi tipi di proposta.&lt;/p>
&lt;h3 id="angor-0221-pubblica-flussi-applicativi-compatti-con-hardening-del-provider-di-chiavi-e-del-cambio-rete">Angor 0.2.21 pubblica flussi applicativi compatti con hardening del provider di chiavi e del cambio rete&lt;/h3>
&lt;p>Angor ha pubblicato 0.2.21 il 6 maggio con miglioramenti alle performance del design mobile, flussi applicativi compatti e un provider di chiavi sicuro.&lt;/p>
&lt;h2 id="nuovi-tracciati-e-scoperti">Nuovi tracciati e scoperti&lt;/h2>
&lt;h3 id="bitmacro-signer-un-bunker-nip-46-auto-ospitato-con-cifratura-delle-chiavi-lato-client">BitMacro Signer: un bunker NIP-46 auto-ospitato con cifratura delle chiavi lato client&lt;/h3>
&lt;p>BitMacro Signer è uno strumento di firma Nostr auto-ospitato che utilizza il modello bunker NIP-46. Le chiavi vengono cifrate lato client prima della memorizzazione così che il server non detenga mai testo in chiaro.&lt;/p>
&lt;p>La scoperta di repository NIP-34 ha portato alla luce 26 nuovi annunci di repository questa settimana, di cui quattro si distinguono:&lt;/p>
&lt;h3 id="gnostr-unimplementazione-git-costruita-direttamente-su-nostr">gnostr: un&amp;rsquo;implementazione git costruita direttamente su Nostr&lt;/h3>
&lt;p>gnostr è un&amp;rsquo;implementazione git costruita direttamente su Nostr, che fornisce i propri comandi di albero di lavoro come client di controllo versione nativo Nostr sviluppato da zero.&lt;/p>
&lt;h3 id="nostr-archive-una-specifica-di-archivio-content-addressed-su-nostr-e-blossom">nostr-archive: una specifica di archivio content-addressed su Nostr e Blossom&lt;/h3>
&lt;p>nostr-archive è una specifica bozza e un&amp;rsquo;implementazione di riferimento per archivi content-addressed su Nostr e Blossom.&lt;/p>
&lt;h3 id="flower-cache-un-server-di-cache-blossom-locale">flower-cache: un server di cache Blossom locale&lt;/h3>
&lt;p>flower-cache è un server di cache Blossom locale, utile per i client che desiderano un mirror locale attivo del set di blob di un server Blossom remoto.&lt;/p>
&lt;h3 id="micro-vpn-ansible-playbook-ansible-per-il-deployment-vpn-tramite-nip-34">micro-vpn-ansible: playbook Ansible per il deployment VPN tramite NIP-34&lt;/h3>
&lt;p>micro-vpn-ansible è una piccola raccolta di playbook Ansible per il deployment di una micro VPN, ospitata come repository NIP-34.&lt;/p>
&lt;h2 id="lavori-sul-protocollo">Lavori sul protocollo&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;ul>
&lt;li>Un mercato dell&amp;rsquo;hashrate senza broker su Nostr (proposta bozza): Una bozza di NIP anonima che sostiene che gli attuali attori del mercato dell&amp;rsquo;hashrate sono broker custodiali che richiedono il KYC agli utenti. Propone un mercato P2P dell&amp;rsquo;hashrate sugli eventi Nostr.&lt;/li>
&lt;li>Curated Feeds: un&amp;rsquo;alternativa più semplice ai feed DVM (proposta bozza): Sostiene che i DVM NIP-90 sono troppo pesanti per la curation semplice dei feed; propone eventi indirizzabili snelli con liste ordinate di ID evento.&lt;/li>
&lt;li>Profile Colors: identità visiva deterministica (proposta bozza): Nuova bozza di NIP per derivare colori leggibili deterministici da una chiave pubblica Nostr per un&amp;rsquo;identità visiva coerente tra i client.&lt;/li>
&lt;li>NIPs della traccia Namecoin: ancoraggio di identità, relay, TLS e reputazione (cluster di bozze): Un cluster di bozze di NIP che spostano i componenti dello stack Nostr in record ancorati a Namecoin.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-34-git-stuff">Approfondimento NIP: NIP-34 (git stuff)&lt;/h2>
&lt;p>NIP-34 definisce i tipi di evento per ospitare repository git, patch, pull request, issue e stati di merge sui relay Nostr. Un repository è annunciato come evento indirizzabile di kind 30617. Le patch usano il kind 1617 che porta l&amp;rsquo;output di git format-patch. Le pull request usano il kind 1618. Le issue usano il kind 1621 con contenuto markdown. Gli eventi di stato fanno passare un thread tra Aperto (1630), Applicato/Unito o Risolto (1631), Chiuso (1632) e Bozza (1633). La notizia NIP-34 di questa settimana è la stessa del lancio di GitWorkshop v2 della settimana scorsa: il pulsante di merge della PR nel browser funziona perché i server GRASP, ngit e lo schema URL di clone nostr:// insieme chiudono il cerchio su una forge completamente decentralizzata.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-53-live-activities">Approfondimento NIP: NIP-53 (Live Activities)&lt;/h2>
&lt;p>NIP-53 definisce la superficie di eventi standard per le attività live su Nostr: stream live, spazi di meeting persistenti, eventi di conferenza programmati, presenza degli ascoltatori e chat live. Uno stream live è annunciato come evento indirizzabile di kind 30311. NIP-53 separa la stanza persistente dall&amp;rsquo;evento programmato che vi si tiene: un kind 30312 Meeting Space definisce una stanza, e un kind 30313 Conference Event rappresenta un meeting programmato o in corso in quella stanza. La superficie delle attività live di Nostr è intenzionalmente snella: NIP-53 annuncia l&amp;rsquo;attività, mentre altri NIP gestiscono le preoccupazioni adiacenti come i zap (NIP-57), gli obiettivi di zap (NIP-75) e le registrazioni video (NIP-71).&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, inviateci un DM su Nostr o trovateci su nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #20</title><link>https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> trasforma git-over-Nostr in una superficie di code review più completa con un pulsante di merge PR nel browser, Stars e following dei repository, un git explorer efficiente in banda, commenti di review inline di kind &lt;code>1111&lt;/code> e stato delle notifiche cifrato multi-dispositivo. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lancia un daemon locale che scopre i provider di modelli tramite annunci Nostr di kind &lt;code>38421&lt;/code> e li paga con Cashu. I rilasci tagged includono &lt;a href="https://nostrcompass.org/it/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/it/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 e v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 e Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/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/it/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 e altro. Le modifiche non rilasciate coprono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 e NWC&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">il bootstrap udp:nat basato su Nostr di FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">l&amp;rsquo;osservabilità di strfry&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">le owner attestation di Sprout&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">i recipe pack di Zap Cooking&lt;/a>. I nuovi progetti tracciati includono Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr. Il retrospettivo di fine mese copre gli April di Nostr dal 2021 al 2026.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> trasforma git-over-Nostr in una superficie di code review più completa con un pulsante di merge PR nel browser, Stars e following dei repository, un git explorer efficiente in banda, commenti di review inline di kind &lt;code>1111&lt;/code> e stato delle notifiche cifrato multi-dispositivo. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lancia un daemon locale che scopre i provider di modelli tramite annunci Nostr di kind &lt;code>38421&lt;/code> e li paga con Cashu. I rilasci tagged includono &lt;a href="https://nostrcompass.org/it/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/it/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 e v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 e Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/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/it/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 e altro. Le modifiche non rilasciate coprono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 e NWC&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">il bootstrap udp:nat basato su Nostr di FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">l&amp;rsquo;osservabilità di strfry&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">le owner attestation di Sprout&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">i recipe pack di Zap Cooking&lt;/a>. I nuovi progetti tracciati includono Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr. Il retrospettivo di fine mese copre gli April di Nostr dal 2021 al 2026.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="gitworkshop-rilascia-merge-pr-nel-browser-following-dei-repository-e-un-git-explorer-efficiente-in-banda">GitWorkshop rilascia merge PR nel browser, following dei repository e un git explorer efficiente in banda&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>, il layer di collaborazione basato sul web di Dan Conway per &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> git-over-Nostr, ha rilasciato questa settimana una versione importante che avvicina il workflow molto di più a ciò che gli sviluppatori si aspettano da GitHub o GitLab, mantenendo commenti, elenchi di repository e notifiche all&amp;rsquo;interno di eventi Nostr firmati.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta principale è un tanto atteso pulsante di merge PR nel browser per i repository che usano relay GRASP. Il rilascio aggiunge anche Stars e following dei repository costruiti su reazioni ed elenchi &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>, con set di repository fissati pubblicati come eventi di kind &lt;code>10617&lt;/code> che puntano ad annunci di repo di kind &lt;code>30617&lt;/code> tramite tag &lt;code>a&lt;/code> ordinati. Le pagine profilo possono ora presentare un elenco portatile di repository.&lt;/p>
&lt;p>Un git explorer efficiente in banda sostituisce il precedente shallow clone nel browser. Il nuovo explorer si appoggia al sottostante protocollo client/server git su cui GRASP è costruito, quindi può gestire repository grandi senza forzare il browser a scaricare un pack completo. La ricerca copre ora nomi utente e metadati dei repository, alimentata da &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a> e da un&amp;rsquo;implementazione di relay &lt;code>ngit-indexer&lt;/code> che scopre e sincronizza gli annunci di repository attraverso la rete. Un workflow di creazione di repository nel browser completa il percorso di scoperta e onboarding.&lt;/p>
&lt;p>Gli strumenti di review sono ricostruiti attorno a una scheda Files Changed, un visualizzatore di diff per singola patch e un set di nuove primitive sperimentali. I commenti di code review inline usano kind &lt;code>1111&lt;/code>, costruito su &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a>: ogni commento punta a un percorso file (tag &lt;code>f&lt;/code>), a uno SHA di commit (tag &lt;code>c&lt;/code>) e a un intervallo di righe selezionato (tag &lt;code>line&lt;/code>), così un client può rendere il commento nella posizione corretta di un diff. Un secondo livello di primitive sperimentali è autorizzato per autori e manutentori dei repo e usa etichette &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a>: rinominare il soggetto di un Issue o PR dopo la submission, aggiungere hashtag dopo la submission, fissare una CoverNote versionata in cima a un PR o Issue per un riepilogo modificabile e marcare come risolti i sottothread di discussione inline. Gli eventi Verdict e i blocchi &lt;code>suggestion&lt;/code> restano in bozza e non sono ancora stati rilasciati.&lt;/p>
&lt;p>Lo stato delle notifiche fra dispositivi è anch&amp;rsquo;esso sincronizzato tramite Nostr, ma con una svolta a tutela della privacy. GitWorkshop genera una keypair dedicata alle notifiche, cifra quella nsec e la memorizza dentro un evento di kind &lt;code>30078&lt;/code>. L&amp;rsquo;nsec di notifica firma poi gli effettivi eventi di stato delle notifiche. L&amp;rsquo;indirezione impedisce che il signer principale dell&amp;rsquo;utente venga bombardato da frequenti richieste di cifratura e decifratura per ogni azione di lettura o archiviazione, e impedisce agli osservatori esterni di vedere facilmente quando un utente tocca il proprio stato di notifica. Un utente può sincronizzare lo stato di lettura e archiviazione fra dispositivi; i relay vedono solo blob cifrati.&lt;/p>
&lt;h3 id="routstrd-lancia-un-router-locale-per-linferenza-su-nostr">Routstrd lancia un router locale per l&amp;rsquo;inferenza su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a> è un nuovo daemon TypeScript che offre agli strumenti locali un endpoint compatibile con OpenAI e instrada ogni richiesta a un provider &lt;a href="https://routstr.com">Routstr&lt;/a> concorrente. Il daemon scopre i provider tramite annunci Nostr di kind &lt;code>38421&lt;/code> definiti nella spec RIP-02 di Routstr. Assegna poi un punteggio ai provider in base a prezzo, fiducia e performance recenti secondo RIP-06 e invia ogni richiesta all&amp;rsquo;opzione attualmente migliore.&lt;/p>
&lt;p>Il pagamento passa attraverso un wallet Cashu locale gestito da cocod e finanziato con Lightning. Ciò offre al client un percorso di regolamento denominato in sats mantenendo la scoperta dei provider pubblica e permissionless attraverso i relay Nostr. Se un provider fallisce durante una sessione, Routstrd può ripiegare sul nodo classificato successivamente. Il percorso di installazione è &lt;code>bun install -g routstrd&lt;/code>, seguito da &lt;code>routstrd onboard&lt;/code> per la configurazione di wallet e relay.&lt;/p>
&lt;p>La più ampia &lt;a href="https://github.com/routstr">Routstr org&lt;/a> mantiene il daemon, il software di nodo Python (&lt;code>routstr-core&lt;/code>), una UI di chat e le specifiche di protocollo. Per gli utenti, la porta locale diventa l&amp;rsquo;interfaccia stabile: gli strumenti esistenti compatibili con OpenAI puntano a Routstrd, mentre il daemon gestisce scoperta dei provider, routing e pagamento.&lt;/p>
&lt;h2 id="rilasci-tagged">Rilasci tagged&lt;/h2>
&lt;h3 id="ngit-v242-corregge-la-rilevazione-del-server-grasp-per-le-submission-di-pr">ngit v2.4.2 corregge la rilevazione del server GRASP per le submission di PR&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a> ha rilasciato &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a> con una correzione per la rilevazione del server GRASP del repository, mantenendo la submission di PR sul percorso corretto quando una proposta usa il kind PR. Da notare che ngit attualmente imposta come default il kind &lt;code>Patch&lt;/code> per la maggior parte delle modifiche, a meno che non siano grandi; il manutentore sta lavorando per cambiare il default. &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>, rilasciata all&amp;rsquo;inizio della settimana, ha corretto errori &lt;code>fatal&lt;/code> durante clone e fetch quando i dati git di un PR aperto non erano disponibili sui server git specificati per il repository.&lt;/p>
&lt;h3 id="wisp-v100-esce-dalla-beta">Wisp v1.0.0 esce dalla beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, un client Android in Kotlin e Jetpack Compose focalizzato su routing dei relay, privacy e una piccola UI nativa, ha rilasciato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a> seguita da &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>. La milestone 1.0.0 raccoglie il toggle di denominazione fiat Normie Mode, il feed For You, la configurazione dei gruppi basata su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e la trasmissione della relay-list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> trattate in &lt;a href="https://nostrcompass.org/it/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 aggiunge il supporto Android 15 per page-size da 16 KB, una scheda di scansione QR nel drawer sheet, un pulsante di download per i controlli video inline e correzioni di performance per le liste di notifiche.&lt;/p>
&lt;h3 id="grain-v052-risolve-il-lockup-websocket-v053-continua-le-rifiniture">grain v0.5.2 risolve il lockup WebSocket, v0.5.3 continua le rifiniture&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>, il relay in Go di 0ceanSlim, ha rilasciato &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a> come hotfix critico per un lockup WebSocket introdotto in v0.5.0, seguito poi da &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>. Il lockup faceva bloccare le connessioni in alcuni percorsi di filter e WebSocket, quindi gli operatori su v0.5.1 o v0.5.0 dovrebbero aggiornarsi. grain traccia tutte le principali categorie di eventi Nostr, espone informazioni relay NIP-11, supporta controllo di accesso whitelist/blacklist, rate limit per kind, una dashboard web e una libreria client Go aggiunta nella linea v0.5.x.&lt;/p>
&lt;h3 id="mostro-core-v0100-e-mostro-mobile-v125-adottano-il-gift-wrap-nip-59-a-doppia-chiave">Mostro Core v0.10.0 e Mostro Mobile v1.2.5 adottano il gift wrap NIP-59 a doppia chiave&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> aggiunge il nuovo modulo gift-wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> con identità e chiavi di trade separate. Il codice di trasporto precedente usava una singola chiave di identità sia per l&amp;rsquo;identità del trade sia per il gift wrapping. v0.10.0 separa l&amp;rsquo;identità stabile del trade dalla chiave effimera di wrapping, così ogni trade può usare una chiave di trasporto fresca preservando l&amp;rsquo;identità necessaria al protocollo di trade. L&amp;rsquo;integrazione del daemon arriva tramite &lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>, e &lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a> porta la stessa migrazione al client a riga di comando.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.5">Mostro Mobile v1.2.5&lt;/a> esce insieme al lavoro sul protocollo. &lt;a href="https://github.com/MostroP2P/mobile/pull/581">PR #581&lt;/a> permette ai takers di filtrare le offerte in base all&amp;rsquo;età dell&amp;rsquo;account del maker, dando agli utenti un modo per evitare account maker appena creati nell&amp;rsquo;order book. &lt;a href="https://github.com/MostroP2P/mobile/pull/580">PR #580&lt;/a> corregge le etichette di ruolo nei dettagli degli ordini cancellati, e &lt;a href="https://github.com/MostroP2P/mobile/pull/576">PR #576&lt;/a> sistema i pulsanti di cancellazione cooperativa.&lt;/p>
&lt;h3 id="marmot-ts-v050-rilascia-i-keypackage-indirizzabili">marmot-ts v0.5.0 rilascia i KeyPackage indirizzabili&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a> ha rilasciato &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>, la prima release con breaking-change pianificata per il client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> TypeScript. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/68">PR #68&lt;/a> aggiunge il supporto ai KeyPackage indirizzabili: &lt;code>KeyPackageManager&lt;/code> può ora gestire sia i legacy eventi KeyPackage di kind &lt;code>443&lt;/code> sia i nuovi di kind &lt;code>30443&lt;/code>. La release rimuove &lt;code>KeyPackageStore&lt;/code> e le classi di storage dello stato di gruppo, sostituendole con store generici key-value passati a &lt;code>KeyPackageManager&lt;/code> e &lt;code>MarmotGroup&lt;/code>. Sposta inoltre la gestione di invite e gruppi su &lt;code>MarmotClient.invites&lt;/code> e &lt;code>MarmotClient.groups&lt;/code>, quindi chi incorpora direttamente ha bisogno di modifiche a costruttori e storage prima di aggiornare.&lt;/p>
&lt;h3 id="cruxcoach-v013-rilascia-il-backup-cifrato-dei-dati-di-arrampicata-con-nostr-e-blossom">CruxCoach v0.1.3 rilascia il backup cifrato dei dati di arrampicata con Nostr e Blossom&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/CruxCoach/CruxCoach">CruxCoach&lt;/a> è una nuova app Android open-source per scalatori di Kilter Board. La Kilter Board è una parete di allenamento interattiva le cui prese si illuminano via Bluetooth per mostrare le vie. L&amp;rsquo;app è stata lanciata il 14 aprile e ha raggiunto &lt;a href="https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3">v0.1.3&lt;/a> il 26 aprile.&lt;/p>
&lt;p>v0.1.3 aggiunge il backup cloud cifrato opzionale. L&amp;rsquo;account CruxCoach di un utente è una keypair Nostr, e la chiave privata funge anche da input per la chiave locale di cifratura del backup. L&amp;rsquo;app cifra i dati di arrampicata sul dispositivo e replica il ciphertext sui server di storage Blossom (&lt;code>blossom.primal.net&lt;/code> e &lt;code>nostr.download&lt;/code>). Le azioni di eliminazione remota chiamano il percorso di cleanup Blossom. Oltre al backup, CruxCoach usa il remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per il supporto Amber, i DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per il contatto in-app con lo sviluppatore, le relay-list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> per la scoperta dei relay e la libreria &lt;a href="https://github.com/vitorpamplona/quartz">Quartz&lt;/a> di Vitor Pamplona per la parte Nostr. Gli utenti possono installarla tramite Zapstore o APK Codeberg diretti.&lt;/p>
&lt;h3 id="meiso-v130-aggiunge-sotto-attività-allegati-blossom-e-tagging-nip-89">Meiso v1.3.0 aggiunge sotto-attività, allegati Blossom e tagging NIP-89&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso">Meiso&lt;/a> è un task manager Flutter minimalista per Android che memorizza le attività come dati applicativi cifrati &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> di kind &lt;code>30078&lt;/code> sui relay Nostr. &lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.3.0">v1.3.0&lt;/a>, rilasciata il 6 aprile, aggiunge sotto-attività con relazioni genitore/figlio, task link per blocks/blocked-by/related-to/duplicate-of, allegati immagine tramite Blossom ed endpoint di upload file HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a>, un tag &lt;code>client&lt;/code> di applicazione raccomandata &lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a> sugli eventi pubblicati e uno strumento di sincronizzazione da riga di comando in Go. v1.3.0 corregge anche il comportamento del relay al cold-start e il riuso del client Amber.&lt;/p>
&lt;h3 id="noornote-nostria-nostr-calendar-nos2x-fox-e-rilasci-di-librerie">NoorNote, Nostria, Nostr Calendar, nos2x-fox e rilasci di librerie&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> ha pubblicato &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> e &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.9">v0.8.9&lt;/a>. Queste release correggono la gestione del click di immagini e video nei repost citati, aggiungono il supporto lightbox per le immagini di articoli long-form e correggono la schermata di avvio desktop vuota. &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha rilasciato &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> e &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.31">v3.1.31&lt;/a>, aggiungendo la compressione delle immagini nell&amp;rsquo;editor di articoli, un toggle USD del wallet, controlli per le carte promozionali, il supporto PDF e rifiniture del layout mobile.&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> disaccoppia la pubblicazione degli eventi del calendario dalla gestione della lista dei calendari e corregge il tracciamento degli inviti. &lt;a href="https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0">nos2x-fox v1.19.0&lt;/a> aggiunge tempi di autorizzazione personalizzati per le grant di firma browser NIP-07 su Firefox. &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97">nostr-double-ratchet v0.0.97&lt;/a> rilascia nuovi binari. &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> per impostazione predefinita, e &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/535">nostr-tools PR #535&lt;/a> aggiunge il supporto al parsing multi-relay per le stringhe wallet-connect NIP-47.&lt;/p>
&lt;p>A fine settimana, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1">Amber v6.1.0-pre1&lt;/a> ha rilasciato una pre-release con un migliore layout di connessione di nuove app, correzioni al dialog del signer, gestione migliorata dei permessi di notifica e refactoring della selezione dell&amp;rsquo;account. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14">nostr-vpn v0.3.14&lt;/a> ha rilasciato una build fresca con artefatti macOS Apple Silicon, Linux e Windows. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8">Bitcredit Core v0.5.7-hotfix-1 e v0.5.8&lt;/a> hanno rilasciato correzioni consecutive per un problema di validazione dei blocchi orfani. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">Surveil v0.1.6&lt;/a> ha portato rifiniture UI mobile e una pagina About rivisitata; il progetto stesso è presentato &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">più sotto&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-600-rimuove-le-vecchie-event-factory-e-aggiunge-il-parsing-degli-uri-blossom">applesauce 6.0.0 rimuove le vecchie event factory e aggiunge il parsing degli URI Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">applesauce&lt;/a>, il toolkit Nostr TypeScript di hzrd149, ha rilasciato un treno di release 6.0.0 attraverso il monorepo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0">applesauce-core@6.0.0&lt;/a> rimuove la vecchia classe &lt;code>EventFactory&lt;/code> e i vecchi helper &lt;code>buildEvent&lt;/code>, &lt;code>modifyEvent&lt;/code> e &lt;code>createEvent&lt;/code>, spingendo i chiamanti verso le nuove classi factory in &lt;code>applesauce-core/factories&lt;/code> e &lt;code>applesauce-common&lt;/code>. Aggiunge anche la gestione di indirizzi IP e localhost al parsing dei link, espressioni regolari per URI Blossom BUD-10 e nuovi helper observable come &lt;code>timeoutWithIgnore&lt;/code>, &lt;code>combineLatestBy&lt;/code>, &lt;code>combineLatestByIndex&lt;/code> e &lt;code>combineLatestByKey&lt;/code>.&lt;/p>
&lt;p>I rilasci a livello di pacchetto completano i pezzi specifici di Nostr. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0">applesauce-content@6.0.0&lt;/a> aggiunge nodi URI Blossom BUD-10 per testo e Markdown, dando ai renderer un modo nativo di analizzare i riferimenti Blossom nel contenuto. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0">applesauce-actions@6.0.0&lt;/a> aggiunge classi factory di base per le liste NIP-51 che coprono relay, utenti ed elementi, rendendo la costruzione di liste meno 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> espone &lt;code>WalletConnect.connectURI&lt;/code>, così le app possono accedere direttamente a un URI wallet-connect NIP-47 esistente.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-avanza-le-stanze-audio-nests-con-i-test-di-interop-moq">Amethyst avanza le stanze audio Nests con i test di interop MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha mergiato diverse PR focalizzate su Nests questa settimana, costruendo sullo stack di stanze audio &lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a> della scorsa settimana. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2622">PR #2622&lt;/a> aggiunge un harness di interop cross-client che esercita il client MoQ Amethyst contro l&amp;rsquo;implementazione web di riferimento. L&amp;rsquo;obiettivo è cogliere la divergenza a livello wire fra Android e browser prima che colpisca gli utenti. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2625">PR #2625&lt;/a> migliora il focus del parlante in picture-in-picture e lo stato della connessione, mentre &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2620">PR #2620&lt;/a> chiarisce avatar, stato di mute e stato di parlante nella griglia dei partecipanti. A fine settimana, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2634">PR #2634&lt;/a> corregge il padding IME e gli window insets nella vista Nest a schermo intero e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2635">PR #2635&lt;/a> aggiunge il filtro di freschezza basato su presenza al feed Nests. Separatamente, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2627">PR #2627&lt;/a> rimuove l&amp;rsquo;implementazione C custom di secp256k1 di Amethyst e migra a &lt;code>libschnorr256k1&lt;/code>.&lt;/p>
&lt;h3 id="nostream-aggiunge-il-supporto-alle-relay-list-nip-65-e-ai-pagamenti-nwc">nostream aggiunge il supporto alle relay list NIP-65 e ai pagamenti NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> ha mergiato tre PR notevoli dopo lo sprint da 53 PR della scorsa settimana. Il supporto ai metadati della relay list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> arriva in &lt;a href="https://github.com/Cameri/nostream/pull/585">PR #585&lt;/a>, così il relay può indicizzare e servire eventi di relay list di kind &lt;code>10002&lt;/code>. Un processore di pagamenti Nostr Wallet Connect segue in &lt;a href="https://github.com/Cameri/nostream/pull/539">PR #539&lt;/a>, aggiungendo un percorso pay-to-relay. La pulizia delle connessioni migliora in &lt;a href="https://github.com/Cameri/nostream/pull/438">PR #438&lt;/a>, che chiude un bug di connessioni morte in cui i socket con sottoscrizioni attive non venivano raccolti, causando la deriva dei conteggi delle sottoscrizioni sulle istanze long-running.&lt;/p>
&lt;h3 id="fips-aggiunge-il-bootstrap-udpnat-basato-su-nostr">FIPS aggiunge il bootstrap udp:nat basato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, il Free Internetworking Peering System coperto in precedenza in &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>, ha mergiato &lt;a href="https://github.com/jmcorgan/fips/pull/53">PR #53&lt;/a> con il bootstrap &lt;code>udp:nat&lt;/code> basato su Nostr. Il cambiamento consente ai nodi di pubblicare annunci Nostr, scambiare signaling offer/answer cifrato, scoprire indirizzi pubblici tramite STUN, eseguire hole punching UDP e consegnare il socket bucato al normale stack di trasporto FIPS. L&amp;rsquo;implementazione lega le identità del payload di signal all&amp;rsquo;effettivo sender Nostr, interroga i relay DM e advert configurati per il lookup della inbox e ripristina gli handoff di traversal adottati falliti così che i trasporti UDP orfani non restino vivi. Questo è il lavoro di annuncio Nostr e traversal NAT da tracciare nel repo canonico, &lt;code>jmcorgan/fips&lt;/code>.&lt;/p>
&lt;h3 id="strfry-aggiunge-osservabilità-per-connessione">strfry aggiunge osservabilità per connessione&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ha mergiato &lt;a href="https://github.com/hoytech/strfry/pull/214">PR #214&lt;/a>, aggiungendo osservabilità per connessione e metriche a livello di connessione esportabili tramite Prometheus. &lt;a href="https://github.com/hoytech/strfry/pull/204">PR #204&lt;/a> normalizza le etichette Prometheus, e &lt;a href="https://github.com/hoytech/strfry/pull/215">PR #215&lt;/a> aggiunge una sezione Community Integrations alla documentazione che copre progetti di identità Namecoin costruiti sopra strfry.&lt;/p>
&lt;h3 id="sprout-aggiunge-owner-attestation-e-supporto-multi-workspace">Sprout aggiunge Owner Attestation e supporto multi-workspace&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, il client Nostr di Block, ha mergiato &lt;a href="https://github.com/block/sprout/pull/406">PR #406&lt;/a> che implementa NIP-OA (Owner Attestation). La funzionalità dà a un agente autonomo una prova crittografica che una specifica pubkey umana ha autorizzato le sue azioni. &lt;a href="https://github.com/block/sprout/pull/409">PR #409&lt;/a> aggiunge il supporto multi-workspace all&amp;rsquo;app desktop, &lt;a href="https://github.com/block/sprout/pull/411">PR #411&lt;/a> aggiunge l&amp;rsquo;autocompletamento &lt;code>#channel&lt;/code> al compose mobile, e &lt;a href="https://github.com/block/sprout/pull/410">PR #410&lt;/a> chiude una race window che poteva scartare messaggi di canale attivi. &lt;a href="https://github.com/block/sprout/pull/413">PR #413&lt;/a> introduce NIP-RS per la sincronizzazione dello stato di lettura cross-device, e le successive &lt;a href="https://github.com/block/sprout/pull/420">PR #420&lt;/a> e &lt;a href="https://github.com/block/sprout/pull/422">PR #422&lt;/a> collegano quello stato di lettura ai badge di non letti su mobile.&lt;/p>
&lt;h3 id="zap-cooking-aggiunge-recipe-pack-delete-request-e-login-via-bunker">Zap Cooking aggiunge recipe pack, delete request e login via bunker&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> ha mergiato una settimana produttiva di lavoro sulla pubblicazione di ricette. Le richieste di eliminazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> per i Recipe Pack propri dell&amp;rsquo;utente arrivano in &lt;a href="https://github.com/zapcooking/frontend/pull/367">PR #367&lt;/a>. L&amp;rsquo;affidabilità della pubblicazione migliora tramite &lt;a href="https://github.com/zapcooking/frontend/pull/366">PR #366&lt;/a>, che forza ogni nuova ricetta sul relay garden e aggiunge una coda di retry per il recipe set condiviso. La pubblicazione one-click di pack redatti dall&amp;rsquo;autore arriva in &lt;a href="https://github.com/zapcooking/frontend/pull/365">PR #365&lt;/a>, e &lt;a href="https://github.com/zapcooking/frontend/pull/331">PR #331&lt;/a> aggiunge il supporto al login via bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="whitenoise-rs-cifra-il-proprio-database-locale">Whitenoise-rs cifra il proprio database locale&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> ha mergiato &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/758">PR #758&lt;/a>, aggiungendo la cifratura SQLCipher per il database Whitenoise su disco. Questo chiude un gap di sicurezza at-rest di vecchia data per lo stack del daemon Marmot. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/775">PR #775&lt;/a> espone le capability richieste del gruppo, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/772">PR #772&lt;/a> migra le operazioni sui media di gruppo a &lt;code>MediaOps&lt;/code> di proprietà della sessione, e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/773">PR #773&lt;/a> estrae un holder &lt;code>SharedServices&lt;/code> come parte del refactor delle session-ops. Sul lato mobile, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/577">whitenoise PR #577&lt;/a> abilita l&amp;rsquo;auto-riavvio al boot per il servizio foreground Android, correggendo il caso in cui il daemon non tornava dopo un riavvio del dispositivo.&lt;/p>
&lt;h2 id="progetti-tracciati-e-scoperti-di-recente">Progetti tracciati e scoperti di recente&lt;/h2>
&lt;h3 id="nostrord-un-client-nip-29-costruito-con-kotlin-multiplatform-e-wasm">Nostrord: un client NIP-29 costruito con Kotlin Multiplatform e WASM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a> è un nuovo client di group-chat &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> che punta al caso d&amp;rsquo;uso di sostituto di Discord. I gruppi vivono su relay Nostr con membership, ruoli, moderazione e controllo di accesso applicati dal relay, quindi lo stato di gruppo è ospitato dal relay NIP-29 selezionato. Lo sviluppatore del client non controlla un database applicativo separato per quei gruppi. La web app gira su &lt;a href="https://web.nostrord.com">web.nostrord.com&lt;/a> ed è costruita con Kotlin Multiplatform che compila in WebAssembly, con build native Android, iOS e desktop in sviluppo. Nostrord è un beneficiario di grant &lt;a href="https://opensats.org">OpenSats&lt;/a> e interopera con gli stessi relay NIP-29 usati da Flotilla, Chachi e 0xChat.&lt;/p>
&lt;h3 id="clave-porta-il-remote-signing-nip-46-su-ios-tramite-apns">Clave porta il remote signing NIP-46 su iOS tramite APNs&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a> è un remote signer iOS in beta che firma eventi Nostr quando l&amp;rsquo;app non è aperta. La chiave privata resta nella Keychain dell&amp;rsquo;iPhone. Quando un client invia una richiesta di remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, un proxy lato server consegna una Apple Push Notification, svegliando una Notification Service Extension per un massimo di 30 secondi. Quell&amp;rsquo;extension decifra la richiesta con la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, firma con la chiave della Keychain e pubblica la risposta. La registrazione del token del dispositivo usa l&amp;rsquo;HTTP Auth &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> per impedire il dirottamento del token. Clave supporta il pairing &lt;code>bunker://&lt;/code> e &lt;code>nostrconnect://&lt;/code>, livelli di fiducia per-client, override per-kind ed è stato testato con Nostur e noStrudel.&lt;/p>
&lt;h3 id="treasures-geocaching-decentralizzato-su-nostr">Treasures: geocaching decentralizzato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/treasures">Treasures&lt;/a> è una piattaforma di geocaching in cui cache e ritrovamenti sono eventi Nostr firmati. I creatori di cache pubblicano eventi indirizzabili di kind &lt;code>37516&lt;/code> con coordinate GPS. I finder registrano la scoperta scansionando un QR code attaccato alla cache fisica; il codice codifica la pubkey del creatore, il tag &lt;code>d&lt;/code> della cache e una chiave privata di verifica usata come prova della visita fisica. Gli zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> possono fluire dai finder ai creatori di cache, e l&amp;rsquo;app live è su &lt;a href="https://treasures.to">treasures.to&lt;/a>.&lt;/p>
&lt;h3 id="smesh-v051-relay-nostr-self-hosted-client-e-signer-in-uno-stack-unico">smesh v0.5.1: relay Nostr self-hosted, client e signer in uno stack unico&lt;/h3>
&lt;p>&lt;a href="https://git.smesh.lol/smesh/smesh">smesh&lt;/a> è uno stack Nostr self-hosted scritto in Moxie, un linguaggio custom derivato da Go e TinyGo da mleku. Lo stack rilascia un binario relay nativo con supporto HTTP, WebSocket, AUTH, ricerca e Blossom; &lt;code>sm3sh&lt;/code>, un web client compilato in moduli ES; e un&amp;rsquo;estensione browser signer con firma browser NIP-07 più supporto alla cifratura NIP-04 e NIP-44. Il lavoro recente include messaggistica di gruppo MLS (RFC 9420) in v0.5.0, riconciliazione di set negentropy per la sync dei relay e un engine di grafo Web of Trust. Il codice vive sulla forge self-hosted di mleku a &lt;code>git.smesh.lol&lt;/code>, costruita con il suo strumento &lt;code>git-web&lt;/code>. Il repo correlato &lt;a href="https://git.smesh.lol/smesh/gitea-nostr-auth">gitea-nostr-auth&lt;/a> è un bridge OAuth2/OIDC per Gitea: gli utenti si autenticano con un signer browser NIP-07, il bridge scopre i relay tramite NIP-65 e Gitea riceve claim di identità OIDC standard.&lt;/p>
&lt;h3 id="surveil-un-deck-builder-di-magic-the-gathering-su-nostr">Surveil: un deck builder di Magic: The Gathering su Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/surveil">Surveil&lt;/a> è un client Nostr per giocatori di Magic: The Gathering che consente agli utenti di cercare carte, costruire mazzi, scansionare carte cartacee su Android con OCR ML Kit on-device e condividere mazzi attraverso la rete. I mazzi sono pubblicati come eventi indirizzabili di kind &lt;code>37381&lt;/code>, e la spec dell&amp;rsquo;evento mazzo è documentata nel &lt;code>NIP.md&lt;/code> del progetto. Il livello sociale è costruito da primitive Nostr standard: commenti threaded NIP-22 (kind &lt;code>1111&lt;/code>) associati a ogni mazzo, reazioni NIP-25 (kind &lt;code>7&lt;/code>), dati profilo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">NIP-78&lt;/a> (kind &lt;code>30078&lt;/code>) per le pagine dei giocatori, follow feed di kind &lt;code>3&lt;/code> e fork che portano un tag &lt;code>a&lt;/code> che riporta al mazzo originale. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">v0.1.6&lt;/a> è stato rilasciato questa settimana con rifiniture UI mobile, miglioramenti al life counter, una pagina About rivisitata e una relay pill sul banner hero del mazzo. La web app gira ovunque HTML statico sia servito, la build Android è distribuita tramite &lt;a href="https://zapstore.dev">Zapstore&lt;/a>, e gli eventi di kind &lt;code>37381&lt;/code> sono anche indicizzati nativamente da &lt;a href="https://about.ditto.pub/reference">Ditto&lt;/a> come mazzi Magic. Il repo è su GitLab a &lt;a href="https://gitlab.com/chad.curtis/surveil">chad.curtis/surveil&lt;/a>.&lt;/p>
&lt;h3 id="aggiunte-minori-fundstr-nod-city-deploy-nsite-to-pages-e-null--nostr">Aggiunte minori: Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ritty65/Fundstr">Fundstr&lt;/a> è una piattaforma di finanziamento per creator su Nostr che usa Cashu ecash per pledge una tantum e ricorrenti, con definizioni di tier del creator e DM Nostr. &lt;a href="https://nod.city">Nod City&lt;/a> è un sito di recensioni di servizi Bitcoin in cui le recensioni sono eventi Nostr firmati e i recensori possono ricevere zap; non è stato trovato un repo sorgente pubblico. &lt;a href="https://github.com/Origami74/deploy-nsite-to-pages">deploy-nsite-to-pages&lt;/a> è una GitHub Action che replica un nsite su GitHub Pages usando &lt;code>nsyte download&lt;/code>, supportando nsite root di kind &lt;code>15128&lt;/code> e named di kind &lt;code>35128&lt;/code>. &lt;a href="https://github.com/tami1A84/null--nostr">null&amp;ndash;nostr&lt;/a>, scoperto anch&amp;rsquo;esso nei dati NIP-34 di questa settimana, è il client trattato nella recente ondata OpenSats come Nurunuru; supporta messaggistica di gruppo MLS, Amber, ricerca NIP-50, post protetti NIP-70, badge ProofMode e distribuzione Zapstore.&lt;/p>
&lt;p>FIPS non è un progetto nuovo per Compass. È stato trattato in &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>. Il database ora punta al repo canonico corretto, &lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a>, e la scoperta NIP-34 di questa settimana ha fatto emergere anche mirror git-over-Nostr correlati come &lt;code>fips&lt;/code> e &lt;code>awesome-fips&lt;/code>.&lt;/p>
&lt;h2 id="lavoro-di-protocollo">Lavoro di protocollo&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Proposte e discussioni recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Mergiate questa settimana:&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>): Rimuove un&amp;rsquo;estensione di tag &lt;code>refs&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> che era definita ma non usata. La pulizia riduce l&amp;rsquo;ambiguità implementativa per gli strumenti git-over-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>): Rimuove una dichiarazione errata secondo cui gli eventi di eliminazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> possono resettare lo stato del repository. L&amp;rsquo;eliminazione NIP-09 è una richiesta di eliminazione evento lato client, non una macchina a stati del repository. La correzione impedisce agli implementatori NIP-34 di trattare gli hint di eliminazione come reset autoritativi del repo.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Lavoro aperto e guidato dalle implementazioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>GitWorkshop kind &lt;code>1111&lt;/code> commenti di review inline&lt;/strong>: Il kind di commento di code review inline è documentato nel &lt;code>NIP.md&lt;/code> di GitWorkshop ed è ora in uso attivo, ma non è ancora stato proposto come NIP formale. Gli eventi Verdict (kind &lt;code>7321&lt;/code>) e i blocchi &lt;code>suggestion&lt;/code> restano in bozza e non sono ancora stati rilasciati. Il feedback implementativo da GitWorkshop e ngit determinerà se le forme diventeranno un NIP git-review autonomo o resteranno una convenzione applicativa stratificata su NIP-34.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Nostr mail core e Nostrmon&lt;/strong>: Due nuove bozze di NIP custom hanno circolato questa settimana. &lt;a href="https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697">Nostr mail core&lt;/a> propone il kind &lt;code>1301&lt;/code> per contenuti email RFC 2822, wrappati con NIP-59 per la consegna privata e ponte verso l&amp;rsquo;email legacy tramite pubkey di bridge risolte via NIP-05. &lt;a href="https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27">Nostrmon&lt;/a> delinea kind di eventi indirizzabili per regioni, mappe, creature, NPC, salvataggi giocatore e oggetti. Entrambe restano bozze custom, non NIP mergiati.&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 proposta continua a iterare sull&amp;rsquo;aggiunta di un marcatore positivo di completezza a &lt;code>EOSE&lt;/code>, permettendo ai relay di distinguere &amp;ldquo;eventi memorizzati consegnati integralmente&amp;rdquo; dai casi legacy &lt;code>EOSE&lt;/code> in cui il relay non fa alcuna dichiarazione di completezza.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="sei-april-di-nostr">Sei April di Nostr&lt;/h2>
&lt;p>April dà una sezione trasversale pulita del percorso di sviluppo di Nostr: il documento di protocollo nel 2021, i primi lavori sui client nel 2022, l&amp;rsquo;ondata applicativa post-Damus nel 2023, la messaggistica privata e il lavoro git-over-Nostr nel 2024, Blossom e la pulizia della relay list nel 2025 e le grant focalizzate sull&amp;rsquo;adozione dei client nel 2026.&lt;/p>
&lt;h3 id="aprile-2021-il-documento-di-protocollo-prima-del-repo-nips">Aprile 2021: il documento di protocollo prima del repo NIPs&lt;/h3>
&lt;p>Fiatjaf ha pubblicato l&amp;rsquo;articolo originale su Nostr, &lt;a href="https://fiatjaf.com/nostr.html">&amp;ldquo;Notes and Other Stuff Transmitted by Relays&amp;rdquo;&lt;/a>, il 20 novembre 2020. Quel primo testo conteneva già la forma centrale che ancora definisce il protocollo: gli utenti firmano eventi con chiavi, li pubblicano ai relay e leggono dai relay che scelgono. Il &lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&amp;amp;until=2021-04-30">commit log di &lt;code>nostr-protocol/nostr&lt;/code>&lt;/a> mostra zero commit tra il 1° e il 30 aprile. L&amp;rsquo;attività si trova ai due lati: i commit di marzo 2021 hanno aggiunto i primi link &amp;ldquo;nostwitter&amp;rdquo; e un filtro &lt;code>kind&lt;/code>, mentre quelli di maggio 2021 hanno riproposto NIP-02 e aggiunto la NIP authorship.&lt;/p>
&lt;p>Nell&amp;rsquo;aprile 2021 non c&amp;rsquo;era un mercato client pubblico, nessuna rete di relay visibile, nessun repo NIPs. Il protocollo viveva ancora come un piccolo documento e pochi esperimenti. Nostr non era ancora diventato un social network o una piattaforma di sviluppo. Era ancora un modello relay/chiave/evento in attesa della sua prima ondata sostenuta di contributor.&lt;/p>
&lt;h3 id="aprile-2022-i-nip-vivevano-ancora-nel-repo-principale">Aprile 2022: i NIP vivevano ancora nel repo principale&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2022 è stato l&amp;rsquo;ultimo mese prima che i NIP si spostassero fuori dal repo principale &lt;code>nostr-protocol/nostr&lt;/code>. Poiché lo split non era ancora avvenuto, il repo dedicato &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> non aveva storia di pull request in aprile. Nel repo principale, tre commit di aprile sono arrivati: &lt;a href="https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8">&amp;ldquo;Update readme to add nip12&amp;rdquo;&lt;/a> l'8 aprile di goswami1999, &lt;a href="https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d">&amp;ldquo;add kinds list&amp;rdquo;&lt;/a> il 25 aprile di jb55 e &lt;a href="https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367">&amp;ldquo;add js formatting to sample code&amp;rdquo;&lt;/a> il 28 aprile di steliosrammos.&lt;/p>
&lt;p>Anche il lavoro sui client cominciava a prendere forma. I commit di Damus dell&amp;rsquo;aprile 2022 hanno aggiunto il primo comportamento chatroom, la gestione del profilo e le icone dell&amp;rsquo;app, mentre nostr-tools stava diventando il percorso di libreria JavaScript per i primi client ed esperimenti. Sul lato protocollo, le query di tag generiche NIP-12 hanno dato alla ricerca per tag un posto documentato, la kinds list ha spostato Nostr verso un modello a registry e migliori esempi JavaScript hanno reso la spec più facile da implementare per autori di client e librerie. Il 1° maggio, fiatjaf ha spostato i NIP nel repo dedicato. L&amp;rsquo;aprile 2022 è stato l&amp;rsquo;ultimo mese dell&amp;rsquo;era originale a repo unico.&lt;/p>
&lt;h3 id="aprile-2023-espansione-applicativa-post-damus">Aprile 2023: espansione applicativa post-Damus&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2023 è arrivato tre mesi dopo il lancio di Damus sull&amp;rsquo;App Store iOS del 31 gennaio 2023, e dopo che Jack Dorsey aveva postato la sua chiave pubblica Nostr. La rete aveva appena assorbito la sua prima grande ondata di crescita pubblica. Client come Damus, Snort, Iris, Coracle e Amethyst erano attivi, mentre gli operatori di relay stavano imparando cosa un social graph più grande faceva alle assunzioni su banda, spam, ricerca e moderazione.&lt;/p>
&lt;p>L&amp;rsquo;aprile 2023 ha avuto una sola PR NIPs mergiata: &lt;a href="https://github.com/nostr-protocol/nips/pull/456">PR #456&lt;/a>, mergiata il 17 aprile, che aggiungeva link a entità bech32 NIP-19 alla gestione URI NIP-21. I commit circostanti mostrano la pressione applicativa dietro il lavoro di protocollo. L&amp;rsquo;aprile 2023 ha visto lavoro su &lt;a href="https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e">NIP-45 COUNT&lt;/a>, zap marker specifici per evento, &lt;a href="https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c">NIP-15 marketplace&lt;/a>, semantica di delegated delete NIP-26, file metadata NIP-94, gestione degli errori wallet-connect NIP-47 e &lt;a href="https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3">NIP-30 custom emoji&lt;/a>. La lista dei contributor si era allargata a includere fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt e arkin0x.&lt;/p>
&lt;p>Damus, Snort, Iris, Coracle e Amethyst non erano più demo attorno a una spec; erano client di produzione che affrontavano onboarding, feed, spam, zap, media e selezione dei relay. Il lavoro di protocollo dell&amp;rsquo;aprile 2023 si legge come il backlog che quei client hanno creato: zap, marketplace, file metadata, conteggio, emoji e link identitari hanno tutti spinto la spec oltre le semplici note e i semplici follow.&lt;/p>
&lt;h3 id="aprile-2024-messaggistica-privata-git-over-nostr-e-supporto-ai-manutentori">Aprile 2024: messaggistica privata, git-over-Nostr e supporto ai manutentori&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2024 ha avuto due PR NIP mergiate. &lt;a href="https://github.com/nostr-protocol/nips/pull/1167">PR #1167&lt;/a>, mergiata il 10 aprile, ha corretto terminologia confusa nel remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, in cui client e signer hanno bisogno di linguaggio esatto per le azioni richieste e autorizzate. &lt;a href="https://github.com/nostr-protocol/nips/pull/1108">PR #1108&lt;/a>, mergiata il 17 aprile, ha espanso i git repositories &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> con eventi di stato, chiarimenti, manutentori opzionali, identificatori di repo e tag di discoverability. Quel passo ha reso git-over-Nostr più pratico per ngit e in seguito GitWorkshop.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b">NIP-17&lt;/a>, precedentemente NIP-24, è atterrato il 24 aprile come messaggi sigillati e gift-wrapped per DM privati e piccole chat di gruppo. Il lavoro su client e librerie ha corso in parallelo: Amethyst, Primal, Gossip, nostr-tools, NDK e rust-nostr erano tutti attivi nello stesso periodo.&lt;/p>
&lt;p>OpenSats ha anche annunciato supporto a lungo termine per gli sviluppatori Nostr nell&amp;rsquo;aprile 2024: &lt;a href="https://opensats.org/blog/pablofz7-receives-lts-grant">PabloF7z&lt;/a> il 9 aprile, &lt;a href="https://opensats.org/blog/stuart-bowman-receives-lts-grant">Stuart Bowman&lt;/a> il 12 aprile e &lt;a href="https://opensats.org/blog/hzrd149-receives-lts-grant">hzrd149&lt;/a> il 15 aprile. Quelle grant hanno spostato il finanziamento dalle grant di progetto isolate verso la manutenzione sostenuta di relay, librerie e infrastruttura client.&lt;/p>
&lt;h3 id="aprile-2025-pulizia-densa-dei-nip-e-formalizzazione-di-blossom">Aprile 2025: pulizia densa dei NIP e formalizzazione di Blossom&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2025 è stato il mese di protocollo più denso in questo retrospettivo, con sedici PR NIPs mergiate. Il mese è iniziato con &lt;a href="https://github.com/nostr-protocol/nips/pull/1846">PR #1846&lt;/a>, che ha aggiunto transazioni e indirizzi blockchain a NIP-73, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1865">PR #1865&lt;/a>, che ha aggiunto i tag NIP-C0 alla tabella dei tag standardizzati. È continuato con &lt;a href="https://github.com/nostr-protocol/nips/pull/1801">PR #1801&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/pull/1889">PR #1889&lt;/a>, entrambe migliorativi delle indicazioni di ripubblicazione della relay list di kind &lt;code>10002&lt;/code>, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1879">PR #1879&lt;/a>, che ha ridotto e chiarito &lt;a href="https://nostrcompass.org/it/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> ha aggiunto NIP-B7 per l&amp;rsquo;interazione Blossom, dando ai client Nostr e ai server Blossom un layer di coordinamento canonico dopo più di un anno di pratica informale. &lt;a href="https://github.com/nostr-protocol/nips/pull/1051">PR #1051&lt;/a> ha deprecato &lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a>, la spec di firma evento delegata. NIP-26 era stato difficile da implementare in modo sicuro ed era diventato meno attraente man mano che NIP-46 e altri pattern di signer maturavano.&lt;/p>
&lt;p>Il resto del mese ha combinato pulizia con espansione applicativa: &lt;a href="https://github.com/nostr-protocol/nips/pull/1882">PR #1882&lt;/a> ha aggiunto campi di privacy policy e terms of service a &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>, &lt;a href="https://github.com/nostr-protocol/nips/pull/1849">PR #1849&lt;/a> ha espanso i bookmark web di kind &lt;code>39701&lt;/code> sotto NIP-B0, &lt;a href="https://github.com/nostr-protocol/nips/pull/1891">PR #1891&lt;/a> ha aggiunto quel kind di bookmark al README, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1895">PR #1895&lt;/a> ha aggiunto tag standardizzati NIP-B0. OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants">Eleventh Wave of Nostr Grants&lt;/a> il 16 aprile, finanziando Swae, HAMSTR, Vertex, Nostr Double Ratchet e Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK e rust-nostr stavano anch&amp;rsquo;essi rilasciando in questo periodo, quindi la pulizia del protocollo si è affiancata al lavoro attivo su client e librerie.&lt;/p>
&lt;h3 id="aprile-2026-hardening-di-nip-34-badge-e-grant-focalizzate-sulladozione">Aprile 2026: hardening di NIP-34, badge e grant focalizzate sull&amp;rsquo;adozione&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2026, il mese con cui si chiude questo numero, ha avuto quattro PR NIPs mergiate. La prima è stata &lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>, mergiata il 1° aprile, che ha modificato i badge profilo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">NIP-58&lt;/a> al kind &lt;code>10008&lt;/code> e aggiunto set di badge di kind &lt;code>30008&lt;/code>, rendendo l&amp;rsquo;assegnazione dei badge e le collezioni di badge più componibili. Un secondo cambiamento di usabilità git-over-Nostr è arrivato in &lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>, mergiata il 10 aprile, che ha aggiunto la semantica URL di clone &lt;code>nostr://&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>. Le pulizie del 25 aprile, &lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>, hanno rimosso linguaggio NIP-34 inutilizzato e scorretto.&lt;/p>
&lt;p>I commit correlati affilano le stesse superfici. Il 22 aprile, fiatjaf ha aggiunto una lista di server Blossom a NIP-51 e regolato l&amp;rsquo;editing dei metadati NIP-29 per corrispondere al comportamento PUT-style di Flotilla. Il 26 aprile, ha rinominato NIP-5A per chiarezza. L&amp;rsquo;aprile 2026 si è concentrato sul rendere superfici di protocollo già usate più facili da implementare e più difficili da fraintendere.&lt;/p>
&lt;p>OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">Sixteenth Wave of Nostr Grants&lt;/a> l'8 aprile, sostenendo Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null&amp;ndash;nostr) e un rinnovo HAMSTR: client desktop, messaggistica email-like, UX di gruppo, onboarding giapponese e connettività off-grid.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Grazie per aver letto Nostr Compass #20. &lt;a href="https://nostr.com">Mandateci un DM su Nostr&lt;/a> con suggerimenti, correzioni o nuovi progetti da coprire.&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #19</title><link>https://nostrcompass.org/it/newsletters/2026-04-22-newsletter/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-22-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> chiude un grande ciclo di lavoro su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, communities &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>, zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> e audio rooms basate su Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilizza l&amp;rsquo;accesso Internet pay-per-use su Nostr e Cashu 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> completa una settimana di lavoro relay attorno a &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a>, compressione, hardening delle query e piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> pubblica un intero stack per firma, identità e API a pagamento su Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> continua a spingere flussi Lightning nativi su Nostr. Il gruppo Formstr porta avanti 26 PR tra hardening di sicurezza e supporto RRULE. &lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a>, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, &lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> e &lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> completano la lista delle release. Gli approfondimenti di questa settimana coprono &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> chiude un grande ciclo di lavoro su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, communities &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>, zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> e audio rooms basate su Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilizza l&amp;rsquo;accesso Internet pay-per-use su Nostr e Cashu 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> completa una settimana di lavoro relay attorno a &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a>, compressione, hardening delle query e piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> pubblica un intero stack per firma, identità e API a pagamento su Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> continua a spingere flussi Lightning nativi su Nostr. Il gruppo Formstr porta avanti 26 PR tra hardening di sicurezza e supporto RRULE. &lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a>, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, &lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> e &lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> completano la lista delle release. Gli approfondimenti di questa settimana coprono &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>.&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-ships-marmot-mip-compliance-nip-72-communities-zap-goals-and-moq-audio-rooms">Amethyst ships Marmot MIP compliance, NIP-72 communities, zap goals, and MoQ audio rooms&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito 57 PR questa settimana. I temi principali sono la conformità ai MIP di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, il supporto di prima classe alle moderated communities, gli zap goals sui live stream e un nuovo stack per audio rooms costruito su Media over QUIC.&lt;/p>
&lt;p>Sul fronte Marmot, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2462">PR #2462&lt;/a> allinea l&amp;rsquo;implementazione embedded di &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> ai formati wire MIP-01 e MIP-05, aggiungendo codifica VarInt e validazione round-trip contro i test vector di MDK. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2435">PR #2435&lt;/a> aggiunge il supporto MIP-00 KeyPackage Relay List, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2436">PR #2436&lt;/a> chiude i gap residui emersi dai test cross-client con &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2466">PR #2466&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2471">PR #2471&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2477">PR #2477&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2493">PR #2493&lt;/a> sistemano framing MLS, bug di decrittazione e validazione completa della crittografia dei commit.&lt;/p>
&lt;p>Accanto al lavoro di protocollo, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2488">PR #2488&lt;/a> pubblica &lt;code>amy&lt;/code>, uno strumento command-line per operazioni di gruppo Marmot e MLS guidato dall&amp;rsquo;implementazione di Amethyst. Gli integratori ottengono così un modo scriptabile per creare gruppi, generare KeyPackages, simulare welcome e validare commit contro un signer reale di Amethyst.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a> aggiunge la creazione e la gestione complete delle community &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>. Gli utenti possono pubblicare il kind &lt;code>34550&lt;/code>, aggiungere moderator e relay hint, inviare post con un tag &lt;code>a&lt;/code> che punta alla community e gestire l&amp;rsquo;approvazione dei contributi tramite eventi kind &lt;code>4549&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2458">PR #2458&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2473">PR #2473&lt;/a> aggiungono supporto agli emoji set e una UI completa per la gestione degli emoji pack &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2469">PR #2469&lt;/a> collega gli zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> alla schermata Live Activities &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. Ogni stream mostra un header con goal di raccolta, barra di avanzamento, pulsante zap e classifica dei top zapper calcolata dalle ricevute kind &lt;code>9735&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2486">PR #2486&lt;/a> aggiunge una schermata dedicata Live Streams, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2491">PR #2491&lt;/a> introduce helper per proof-of-agreement ed event builder, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2461">PR #2461&lt;/a> migliora la riproduzione HLS.&lt;/p>
&lt;p>La nuova superficie più ambiziosa è l&amp;rsquo;audio real-time. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2494">PR #2494&lt;/a> aggiunge un client Media over QUIC e il supporto alle audio rooms. Insieme alla nuova schermata Public Chats di &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2487">PR #2487&lt;/a>, Amethyst arriva a una superficie end-to-end per stanze audio pubbliche accanto alla propria messaggistica cifrata Marmot.&lt;/p>
&lt;h3 id="tollgate-v010-stabilizes-pay-per-use-internet-over-nostr-and-cashu">TollGate v0.1.0 stabilizes pay-per-use internet over Nostr and Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> ha taggato &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a> il 21 aprile, il primo snapshot stabile del suo insieme di specifiche per l&amp;rsquo;accesso alla rete pay-per-use. Il protocollo permette a un dispositivo che può controllare la connettività, come un router WiFi o uno switch Ethernet, di pubblicizzare i prezzi, accettare token ecash &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e gestire sessioni tramite token locali prepagati invece di account o subscription. Un cliente con pochi sats in un wallet Cashu locale può acquistare il prossimo minuto o megabyte di connettività da qualunque TollGate compatibile.&lt;/p>
&lt;p>La release fissa tre livelli dell&amp;rsquo;architettura. Il livello protocollo, definito in &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-01.md">TIP-01&lt;/a>, specifica tre forme di evento base: Advertisement, Session e Notice. &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-02.md">TIP-02&lt;/a> aggiunge i pagamenti Cashu, permettendo al cliente di riscattare token da qualunque mint pubblicizzata dal gate. Sopra c&amp;rsquo;è il livello interfaccia: &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/HTTP-01.md">HTTP-01&lt;/a> fino a HTTP-03 definiscono una superficie HTTP semplice per dispositivi con sistemi operativi restrittivi, mentre &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/NOSTR-01.md">NOSTR-01&lt;/a> definisce il trasporto tramite relay Nostr. Infine, &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/WIFI-01.md">WIFI-01&lt;/a> copre il livello medium descrivendo il routing captive-portal per i clienti paganti.&lt;/p>
&lt;p>Il nuovo &lt;a href="https://nostrcompass.org/it/topics/tollgate/">topic su TollGate&lt;/a> copre l&amp;rsquo;intero stack.&lt;/p>
&lt;h3 id="nostream-merges-53-prs-for-nip-45-nip-62-compression-and-query-hardening">nostream merges 53 PRs for NIP-45, NIP-62, compression, and query hardening&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>, implementazione relay TypeScript di Cameri, ha unito 53 PR in una settimana tra nuovo supporto NIP, performance delle query, hardening di sicurezza e miglioramenti operativi.&lt;/p>
&lt;p>Sul lato funzionale, &lt;a href="https://github.com/Cameri/nostream/pull/522">PR #522&lt;/a> aggiunge il supporto &lt;code>COUNT&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://github.com/Cameri/nostream/pull/544">PR #544&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> alla lista delle funzionalità pubblicizzate, &lt;a href="https://github.com/Cameri/nostream/pull/548">PR #548&lt;/a> estende lo schema dei filtri ai tag maiuscoli e &lt;a href="https://github.com/Cameri/nostream/pull/514">PR #514&lt;/a> aggiunge compressione gzip e xz per import ed export di eventi.&lt;/p>
&lt;p>Prestazioni e correttezza arrivano con &lt;a href="https://github.com/Cameri/nostream/pull/534">PR #534&lt;/a>, che introduce un harness di benchmark e una passata di ottimizzazione sulla traduzione dei filtri in SQL. &lt;a href="https://github.com/Cameri/nostream/pull/524">PR #524&lt;/a> corregge un bug nel matching pubkey delle whitelist e blacklist, &lt;a href="https://github.com/Cameri/nostream/pull/553">PR #553&lt;/a> aggiunge un tie-breaker deterministico a &lt;code>upsertMany&lt;/code>, &lt;a href="https://github.com/Cameri/nostream/pull/493">PR #493&lt;/a> limita la fiducia in &lt;code>X-Forwarded-For&lt;/code> ai proxy configurati e &lt;a href="https://github.com/Cameri/nostream/pull/557">PR #557&lt;/a> porta il relay alla piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="primal-android-ships-explore-tab-nip-05-verification-and-audio-player">Primal Android ships Explore tab, NIP-05 verification, and audio player&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 11 PR sopra il redesign del feed della settimana scorsa. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1021">PR #1021&lt;/a> introduce una nuova tab Explore costruita su utenti popolari, follow packs e curated feeds, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1015">PR #1015&lt;/a> aggiunge un editor dei feed che si prepopola dalla DSL Advanced Search di Primal, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/994">PR #994&lt;/a> porta la UI di verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> e &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/997">PR #997&lt;/a> integra un audio player inline nei feed. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1018">PR #1018&lt;/a> aggiunge anche il pairing nostr-connect &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> dal wallet QR scanner.&lt;/p>
&lt;h3 id="strfry-adds-prometheus-write-path-metrics-and-fixes-nip-42-auth-envelope">strfry adds Prometheus write-path metrics and fixes NIP-42 AUTH envelope&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ha pubblicato un gruppo di miglioramenti orientati agli operatori. &lt;a href="https://github.com/hoytech/strfry/pull/194">PR #194&lt;/a> aggiunge un exporter Prometheus dedicato per le metriche del write path, &lt;a href="https://github.com/hoytech/strfry/pull/197">PR #197&lt;/a> registra byte e compressione per connessione e &lt;a href="https://github.com/hoytech/strfry/pull/192">PR #192&lt;/a> rende configurabile a runtime il limite dei tag nei filtri. Sul piano della correttezza del protocollo, &lt;a href="https://github.com/hoytech/strfry/pull/201">PR #201&lt;/a> cambia le risposte di fallimento AUTH &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> da &lt;code>NOTICE&lt;/code> all&amp;rsquo;envelope &lt;code>OK&lt;/code> previsto dalla specifica.&lt;/p>
&lt;h3 id="shopstr-hardens-storefront-security-across-13-prs">Shopstr hardens storefront security across 13 PRs&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, client marketplace su Nostr, ha unito 13 PR dominate da fix di sicurezza. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/434">PR #434&lt;/a> chiude un hole di stored JavaScript nei link delle storefront, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/417">PR #417&lt;/a> fa escaping dell&amp;rsquo;HTML delle policy per bloccare XSS riflesso, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/418">PR #418&lt;/a> chiude un&amp;rsquo;API di cancellazione eventi cached non autenticata e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/433">PR #433&lt;/a>, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/419">PR #419&lt;/a>, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/435">PR #435&lt;/a> e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/414">PR #414&lt;/a> rafforzano letture, mutazioni ed endpoint sensibili.&lt;/p>
&lt;h3 id="nostria-v3126-through-v3128-add-background-music-playback-on-android">Nostria v3.1.26 through v3.1.28 add background music playback on Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha pubblicato sei release da &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.22">v3.1.22&lt;/a> a &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a>. La novità principale di &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.26">v3.1.26&lt;/a> è la riproduzione musicale in background su Android, con controlli media nella notification bar e nella lock screen. Le release successive rafforzano questo nuovo media-service surface.&lt;/p>
&lt;h3 id="wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Wisp v0.18.0-beta adds Normie Mode, For You feed, and NIP-29 group config&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, client Android in Kotlin e Jetpack Compose di barrydeen, ha pubblicato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.18.0-beta">v0.18.0-beta&lt;/a> il 16 aprile. &lt;a href="https://github.com/barrydeen/wisp/pull/462">PR #462&lt;/a> aggiunge una Normie Mode con importi fiat-denominati, &lt;a href="https://github.com/barrydeen/wisp/pull/464">PR #464&lt;/a> rinnova l&amp;rsquo;onboarding e &lt;a href="https://github.com/barrydeen/wisp/pull/469">PR #469&lt;/a> introduce un feed For You. Sul lato protocollo, &lt;a href="https://github.com/barrydeen/wisp/pull/471">PR #471&lt;/a> aggiunge la configurazione dei gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e &lt;a href="https://github.com/barrydeen/wisp/pull/478">PR #478&lt;/a> corregge il flusso AUTH &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> prima degli eventi amministrativi di gruppo. &lt;a href="https://github.com/barrydeen/wisp/pull/481">PR #481&lt;/a> inoltra anche le note agli inbox relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> delle pubkey menzionate.&lt;/p>
&lt;h3 id="noornote-v084-adds-scheduled-posts-and-live-stream-zapping">NoorNote v0.8.4 adds Scheduled Posts and live stream zapping&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> ha pubblicato &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.4">v0.8.4&lt;/a> e &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.5">v0.8.5&lt;/a>. La novità principale della v0.8.4 è Scheduled Posts: l&amp;rsquo;app consegna un evento già firmato a un relay gestito da NoorNote che lo pubblica al momento pianificato, cosi le chiavi private non lasciano mai il dispositivo. La stessa release aggiunge zapping con un tocco dalle card dei live stream, dove i sats compaiono nell&amp;rsquo;overlay chat via &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. La v0.8.5 corregge un bug di deduplicazione della timeline.&lt;/p>
&lt;h3 id="topaz-v002-ships-a-nostr-relay-for-android">topaz v0.0.2 ships a Nostr relay for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, nuovo relay Nostr che gira su telefoni Android creato da fiatjaf, ha pubblicato &lt;a href="https://github.com/fiatjaf/topaz/releases/tag/v0.0.2">v0.0.2&lt;/a> il 17 aprile. Il progetto è Kotlin-first e punta a trasformare il telefono in un relay personale sempre disponibile. Per ora l&amp;rsquo;obiettivo è stretto: un relay funzionante in un pacchetto Android installabile.&lt;/p>
&lt;h3 id="stablekraft-v100-ships-the-first-stable-music-and-podcast-pwa-release">StableKraft v1.0.0 ships the first stable music-and-podcast PWA release&lt;/h3>
&lt;p>&lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a> è una PWA Next.js per scoprire, organizzare e ascoltare musica prelevata dai feed podcast, con Nostr per auth e funzioni social e Lightning per i pagamenti V4V. Ha raggiunto &lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.0.0">v1.0.0&lt;/a> il 18 aprile. Nella stessa settimana il progetto ha stretto l&amp;rsquo;ingestion dei feed con una cache OPML di 15 minuti e la rimozione di XML illegale, e ha ridotto la finestra di reparse notturna da 720 ore a 24 ore per permettere ai feed aggiunti di recente di autoripararsi più in fretta.&lt;/p>
&lt;h3 id="niplock-ships-a-nip-17-based-password-manager">NipLock ships a NIP-17-based password manager&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> è un password manager che memorizza e sincronizza credenziali tra dispositivi usando messaggi diretti gift-wrapped &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. Ogni voce password è un DM NIP-17 dall&amp;rsquo;utente verso se stesso, cosi gli stessi eventi si replicano su qualunque dispositivo si autentichi con la stessa chiave. La firma funziona con &lt;code>nsec&lt;/code> raw, estensioni browser come &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> o &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> via &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-budabit-polishes-its-nip-34-repo-surface">flotilla-budabit polishes its NIP-34 repo surface&lt;/h3>
&lt;p>Il fork della comunità Budabit di &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, &lt;a href="https://github.com/Pleb5/flotilla-budabit">flotilla-budabit&lt;/a>, ha pubblicato un gruppo di fix per il proprio workflow git-over-nostr NIP-34. Gli aggiornamenti ripristinano i controlli per la discussione dei repository, mantengono visibili le sticky repo tabs sulle pagine dettaglio, caricano gli annunci repo dai relay GRASP salvati e tengono sincronizzato lo stato delle patch applicate dai maintainer.&lt;/p>
&lt;h3 id="rx-nostr-372-through-374-add-default-verifier-and-optional-constructor-args">rx-nostr 3.7.2 through 3.7.4 add default verifier and optional constructor args&lt;/h3>
&lt;p>&lt;a href="https://github.com/penpenpng/rx-nostr">rx-nostr&lt;/a>, libreria Nostr basata su RxJS, ha pubblicato &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.2">3.7.2&lt;/a>, &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.3">3.7.3&lt;/a> e &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.4">3.7.4&lt;/a>. &lt;a href="https://github.com/penpenpng/rx-nostr/pull/192">PR #192&lt;/a> aggiunge un verificatore Schnorr predefinito e &lt;a href="https://github.com/penpenpng/rx-nostr/pull/195">PR #195&lt;/a> rende opzionali gli argomenti di &lt;code>createRxNostr()&lt;/code> per integrazioni rapide a configurazione zero.&lt;/p>
&lt;h3 id="keep-android-v100-ships-with-reproducible-builds-and-zero-trackers">Keep Android v1.0.0 ships with reproducible builds and zero trackers&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, gestore di password e segreti nativo Nostr, ha pubblicato &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.0">v1.0.0&lt;/a> il 21 aprile dopo una serie di PR di hardening. &lt;a href="https://github.com/privkeyio/keep-android/pull/241">PR #241&lt;/a> aggiunge una recipe per build riproducibili, &lt;a href="https://github.com/privkeyio/keep-android/pull/248">PR #248&lt;/a> sostituisce Google ML Kit con ZXing per rimuovere la dipendenza da Google Play Services, &lt;a href="https://github.com/privkeyio/keep-android/pull/252">PR #252&lt;/a> pubblica una scansione Exodus Privacy che mostra zero tracker e &lt;a href="https://github.com/privkeyio/keep-android/pull/256">PR #256&lt;/a> aggiunge un file &lt;code>zapstore.yaml&lt;/code> per la distribuzione tramite &lt;a href="https://zapstore.dev">zapstore&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-173-and-174-add-kind-9-wrapping-for-richer-nip-29-rooms">Flotilla 1.7.3 and 1.7.4 add kind-9 wrapping for richer NIP-29 rooms&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, client per gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> di hodlbod, ha pubblicato &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.3">1.7.3&lt;/a> e &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.4">1.7.4&lt;/a>. Il cambiamento di protocollo principale è il wrapping dei tipi di contenuto non-chat dentro eventi kind &lt;code>9&lt;/code>, annunciato nel &lt;a href="#ZgotmplZ">release note di hodlbod&lt;/a> e collegato a &lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>. Questo permette di preservare il contesto della stanza quando eventi come poll o calendario vengono inviati nel gruppo.&lt;/p>
&lt;h3 id="wot-relay-v021-migrates-eventstore-to-lmdb">WoT Relay v0.2.1 migrates eventstore to LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, relay filtrato tramite web of trust di bitvora, ha pubblicato &lt;a href="https://github.com/bitvora/wot-relay/releases/tag/v0.2.1">v0.2.1&lt;/a> il 22 aprile. &lt;a href="https://github.com/bitvora/wot-relay/pull/97">PR #97&lt;/a> migra l&amp;rsquo;eventstore a &lt;a href="http://www.lmdb.tech/">LMDB&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay/pull/99">PR #99&lt;/a> aggiorna &lt;code>golang.org/x/crypto&lt;/code> e &lt;a href="https://github.com/bitvora/wot-relay/pull/100">PR #100&lt;/a> aggiorna URL software e stringa versione in &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h3 id="formstr-suite-pollerama-security-pass-forms-i18n-calendar-rrule-support">Formstr suite: Pollerama security pass, Forms i18n, Calendar RRULE support&lt;/h3>
&lt;p>La suite Formstr ha unito 26 PR tra Pollerama, Formstr Forms e Nostr Calendar, con un tema chiaro di sicurezza sul lato poll e avanzamento funzionale sul resto.&lt;/p>
&lt;p>&lt;a href="https://pollerama.fun">Pollerama&lt;/a>, l&amp;rsquo;app &lt;a href="https://github.com/formstr-hq/nostr-polls">nostr-polls&lt;/a>, rafforza la gestione delle chiavi. &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/182">PR #182&lt;/a> scade i DM in cache al logout, &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/175">PR #175&lt;/a> sposta la chiave locale in uno storage browser più sicuro e &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/171">PR #171&lt;/a> protegge &lt;code>JSON.parse&lt;/code> del contenuto profilo kind &lt;code>0&lt;/code> in tutti i percorsi di login. &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/186">PR #186&lt;/a> aggiunge deep linking HTTPS e &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/169">PR #169&lt;/a> rende cliccabili i nomi degli autori nei risultati.&lt;/p>
&lt;p>&lt;a href="https://formstr.app">Formstr&lt;/a>, suite &lt;a href="https://github.com/formstr-hq/nostr-forms">nostr-forms&lt;/a>, amplia la superficie di input e onboarding. &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/475">PR #475&lt;/a> aggiunge supporto a URL audio e video, &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/439">PR #439&lt;/a> introduce i18n, &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/466">PR #466&lt;/a> aggiunge un importatore da Google Forms e &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/463">PR #463&lt;/a> rimuove log sensibili dal browser console.&lt;/p>
&lt;p>&lt;a href="https://calendar.formstr.app">Nostr Calendar by Formstr&lt;/a> ha pubblicato &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.3.0">v1.3.0&lt;/a> e &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.0">v1.4.0&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/107">PR #107&lt;/a> aggiunge supporto multiplo e personalizzato a RRULE, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/101">PR #101&lt;/a> interpreta come UTC le floating RRULE date secondo RFC 5545, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/97">PR #97&lt;/a> permette di aggiungere eventi condivisi al proprio calendario, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/86">PR #86&lt;/a> introduce preferenze di notifica per lista e &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/112">PR #112&lt;/a> rinnova login e loading path. Tutti e tre i progetti si basano sugli eventi calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>.&lt;/p>
&lt;h3 id="also-shipped-notedeck-nostrblue-cliprelay-captains-log">Also shipped: notedeck, nostr.blue, cliprelay, Captain&amp;rsquo;s Log&lt;/h3>
&lt;p>Alcuni client hanno pubblicato release iterative senza una singola headline dominante. &lt;a href="https://github.com/damus-io/notedeck">notedeck&lt;/a> ha pubblicato &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.4">v0.10.0-beta.4&lt;/a> con fix su rendering a colonne e relay pool. &lt;a href="https://github.com/patrickulrich/nostr.blue/releases/tag/v0.8.6">nostr.blue v0.8.6&lt;/a> aggiorna Dioxus e sblocca la build Android. &lt;a href="https://github.com/tajava2006/cliprelay">cliprelay&lt;/a> ha pubblicato &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/desktop%2Fv0.0.3">Desktop v0.0.3&lt;/a> e &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/android%2Fv0.0.4">Android v0.0.4&lt;/a>, stringendo il loop di sync. &lt;a href="https://github.com/nodetec/comet">Captain&amp;rsquo;s Log&lt;/a> ha pubblicato tre build alpha che aggiungono il rilevamento della liveness dei sync relay.&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="whitenoise-rs-refactors-to-session-scoped-account-views">whitenoise-rs refactors to session-scoped account views&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, il daemon Rust sotto il client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha unito 15 PR per una refactor multi-fase che sposta la logica da singleton globali a viste per-account &lt;code>AccountSession&lt;/code>. L&amp;rsquo;obiettivo è scomporre un monolite condiviso in superfici più piccole, più facili da comprendere, testare ed evolvere senza effetti collaterali tra account diversi.&lt;/p>
&lt;p>La base arriva con &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/743">PR #743&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/753">PR #753&lt;/a>, seguite dallo spostamento di draft, settings, operazioni messaggi, lettura e scrittura di gruppo, membership, notifiche push, letture dei key package e creazione dei gruppi nelle PR successive. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/770">PR #770&lt;/a> chiude il giro reindirizzando il dispatch degli eventi sulla sessione, cosi ogni account consuma il proprio traffico relay senza contesa.&lt;/p>
&lt;h3 id="white-noise-app-adds-blockunblock-ui-leave-group-and-offline-notices">White Noise app adds block/unblock UI, leave-group, and offline notices&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, aggiunge i controlli mancanti sul ciclo di vita dei gruppi. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/578">PR #578&lt;/a> pubblica la UI per block e unblock sopra l&amp;rsquo;hook introdotto in &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/573">PR #573&lt;/a>, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/571">PR #571&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/572">PR #572&lt;/a> collegano &lt;code>clear_chat&lt;/code>, &lt;code>delete_chat&lt;/code> e &lt;code>leave_and_delete_group&lt;/code> dal lato Rust all&amp;rsquo;app, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/569">PR #569&lt;/a> insieme a &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/576">PR #576&lt;/a> aggiungono avvisi offline nelle schermate chat e impostazioni. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/585">PR #585&lt;/a> restringe inoltre la cancellazione da &amp;ldquo;all key packages&amp;rdquo; a &amp;ldquo;legacy key packages&amp;rdquo;.&lt;/p>
&lt;h3 id="mdk-adds-mixed-version-invite-support-and-selfupdate-convergence">MDK adds mixed-version invite support and SelfUpdate convergence&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>, il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> Development Kit, ha unito sette PR. La linea comune è la compatibilità tra versioni vicine, mantenendo i client in grado di invitarsi a vicenda, ruotare il proprio stato e recuperare da input malformati.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/pull/261">PR #261&lt;/a> calcola le &lt;code>RequiredCapabilities&lt;/code> di un gruppo come LCD delle capability degli invitati e sblocca inviti tra &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>. &lt;a href="https://github.com/marmot-protocol/mdk/pull/264">PR #264&lt;/a> converge il formato wire di SelfUpdate tra implementazioni, &lt;a href="https://github.com/marmot-protocol/mdk/pull/262">PR #262&lt;/a> valida i key package degli invitati prima di persistere il signer del creatore, &lt;a href="https://github.com/marmot-protocol/mdk/pull/256">PR #256&lt;/a> corregge la validazione della depletion admin lato ricevente, &lt;a href="https://github.com/marmot-protocol/mdk/pull/259">PR #259&lt;/a> protegge lo stato in-memory critico e &lt;a href="https://github.com/marmot-protocol/mdk/pull/265">PR #265&lt;/a> espone un accessor &lt;code>group_required_proposals&lt;/code>.&lt;/p>
&lt;h3 id="nostter-adds-nip-44-encryption-across-people-lists-bookmarks-and-mutes">nostter adds NIP-44 encryption across people lists, bookmarks, and mutes&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a> ha unito 10 PR. &lt;a href="https://github.com/SnowCait/nostter/pull/2088">PR #2088&lt;/a> aggiunge cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> alle mute list, &lt;a href="https://github.com/SnowCait/nostter/pull/2089">PR #2089&lt;/a> la aggiunge ai bookmark e &lt;a href="https://github.com/SnowCait/nostter/pull/2090">PR #2090&lt;/a> alle people list, migrando dove possibile da &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. &lt;a href="https://github.com/SnowCait/nostter/pull/2087">PR #2087&lt;/a> rimuove anche un vecchio percorso di migrazione per le mute kind 30000.&lt;/p>
&lt;h3 id="zapcooking-ships-nourish-scoring-and-a-reusable-comment-thread">zap.cooking ships Nourish scoring and a reusable comment thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">zap.cooking&lt;/a>, client Nostr per ricette, ha unito 20 PR. La novità principale è un modulo Nourish per il punteggio nutrizionale delle ricette nelle &lt;a href="https://github.com/zapcooking/frontend/pull/317">PR #317&lt;/a> e &lt;a href="https://github.com/zapcooking/frontend/pull/319">PR #319&lt;/a>. Accanto a questo, una refactor in quattro fasi da &lt;a href="https://github.com/zapcooking/frontend/pull/299">PR #299&lt;/a> a &lt;a href="https://github.com/zapcooking/frontend/pull/302">PR #302&lt;/a> estrae il modulo Comments in un &lt;code>CommentThread&lt;/code> riutilizzabile.&lt;/p>
&lt;h3 id="ridestr-extracts-shared-rider-coordinator">ridestr extracts shared rider coordinator&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">ridestr&lt;/a>, app di ride-sharing decentralizzata, ha unito 10 PR che rifattorizzano le schermate Compose in componenti più focalizzati ed estraggono la logica di protocollo per rider e driver in un modulo coordinatore condiviso &lt;code>:common&lt;/code>. &lt;a href="https://github.com/variablefate/ridestr/pull/60">PR #60&lt;/a> aggiunge anche un ricevitore kind &lt;code>3189&lt;/code> lato Roadflare.&lt;/p>
&lt;h3 id="blossom-drafts-a-bud-01-sunset-header-for-blob-expiration">Blossom drafts a BUD-01 Sunset header for blob expiration&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, protocollo di hzrd149 per la memorizzazione di blob su server HTTP indicizzati da hash SHA-256, ha aperto &lt;a href="https://github.com/hzrd149/blossom/pull/99">PR #99&lt;/a> per aggiungere un header &lt;code>Sunset&lt;/code> a BUD-01. Il server potrebbe usarlo per pubblicizzare un timestamp futuro dopo il quale un blob non sarà più servito, permettendo ai client di pianificare in anticipo invece di scoprire la scadenza solo con un 404.&lt;/p>
&lt;h2 id="new-projects">New Projects&lt;/h2>
&lt;h3 id="forgesworn-publishes-a-29-repo-cryptographic-toolkit-for-nostr">Forgesworn publishes a 29-repo cryptographic toolkit for Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> ha pubblicato 29 repository open source in cinque giorni, coprendo firma, identità, attestazioni, web of trust e discovery di API a pagamento su Nostr.&lt;/p>
&lt;p>Lo stack di firma ruota attorno a &lt;a href="https://github.com/forgesworn/nsec-tree">nsec-tree&lt;/a>, schema deterministico di derivazione di sotto-identità che trasforma un master secret in identità Nostr illimitate e non collegabili, e a &lt;a href="https://github.com/forgesworn/heartwood">Heartwood&lt;/a>, signer remoto NIP-46 che gira su Raspberry Pi con Tor attivo per default. &lt;a href="https://github.com/forgesworn/sapwood">Sapwood&lt;/a> aggiunge una UI di gestione web, &lt;a href="https://github.com/forgesworn/heartwood-esp32">heartwood-esp32&lt;/a> porta lo stesso approccio su una board Heltec WiFi LoRa 32 e &lt;a href="https://github.com/forgesworn/nsec-tree-cli">nsec-tree-cli&lt;/a> espone i flussi di derivazione, prova e recupero Shamir.&lt;/p>
&lt;p>Sul lato identità e fiducia, &lt;a href="https://github.com/forgesworn/signet">Signet&lt;/a> arriva a &lt;a href="https://github.com/forgesworn/signet/releases/tag/v1.6.0">v1.6.0&lt;/a> come protocollo di verifica dell&amp;rsquo;identità decentralizzata per Nostr, &lt;a href="https://github.com/forgesworn/nostr-attestations">nostr-attestations&lt;/a> definisce un singolo evento kind &lt;code>31000&lt;/code> per credential, endorsement, provenance e trust, e &lt;a href="https://github.com/forgesworn/nostr-veil">nostr-veil&lt;/a> costruisce sopra un web of trust privacy-preserving con firme di anello LSAG su secp256k1.&lt;/p>
&lt;p>Sul lato monetizzazione, &lt;a href="https://github.com/forgesworn/toll-booth">toll-booth&lt;/a> è un middleware L402 per Express, Hono, Deno, Bun e Cloudflare Workers che trasforma una API in un toll booth Lightning in una riga. &lt;a href="https://github.com/forgesworn/toll-booth-dvm">toll-booth-dvm&lt;/a> espone la API protetta come DVM &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>, &lt;a href="https://github.com/forgesworn/toll-booth-announce">toll-booth-announce&lt;/a> la collega a &lt;a href="https://github.com/forgesworn/402-announce">402-announce&lt;/a>, che pubblica eventi parameterized replaceable kind &lt;code>31402&lt;/code> per la discovery di servizi HTTP 402 su Nostr, e &lt;a href="https://github.com/forgesworn/402-indexer">402-indexer&lt;/a> indicizza questi annunci. L&amp;rsquo;organizzazione pubblica anche una &lt;a href="https://github.com/forgesworn/nip-drafts">collezione di 29 draft NIP&lt;/a>.&lt;/p>
&lt;h3 id="shockwallet-ships-nostr-native-lightning-wallet-sync-and-multi-node-connections">ShockWallet ships Nostr-native Lightning wallet sync and multi-node connections&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> è un wallet Lightning che usa Nostr come trasporto per connettersi a nodi Lightning self-custodial. L&amp;rsquo;app si accoppia a uno o più nodi &lt;a href="https://github.com/shocknet/Lightning.Pub">Lightning.Pub&lt;/a> tramite un &lt;code>nprofile&lt;/code>, poi firma le autorizzazioni di pagamento end-to-end tra wallet e nodo. Il team ha pubblicato &lt;a href="https://github.com/shocknet/wallet2/pull/608">PR #608&lt;/a> il 18 aprile con un pass UI sulla dashboard dei canali, accanto a un flusso QR con admin-invite-link per nuovi utenti PUB (&lt;a href="https://github.com/shocknet/wallet2/pull/606">PR #606&lt;/a>) e un fix di leggibilità della dashboard metriche (&lt;a href="https://github.com/shocknet/wallet2/pull/607">PR #607&lt;/a>).&lt;/p>
&lt;p>ShockWallet usa gli eventi dati specifici per applicazione di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-78&lt;/a> per la sincronizzazione multi-device dello stato del wallet, cosi la vista del wallet resta coerente tra browser desktop e telefono senza server centralizzato. Questo lo colloca un livello sotto &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>: NIP-47 è l&amp;rsquo;interfaccia che un&amp;rsquo;app usa per chiedere a un wallet esistente di pagare, mentre ShockWallet usa Nostr come trasporto dell&amp;rsquo;account e della sessione del wallet verso il nodo Lightning sottostante.&lt;/p>
&lt;h3 id="nostrability-issues-migrate-to-git-over-nostr-after-github-censorship">Nostrability issues migrate to git over Nostr after GitHub censorship&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/elsat@habla.news/nostrability/issues">Nostrability&lt;/a>, il tracker di interoperabilità di elsat per client e relay Nostr, sta spostando il proprio workflow issue su git over Nostr dopo la rimozione dell&amp;rsquo;organizzazione Nostrability da GitHub. Il tracker migrato ora vive su GitWorkshop/ngit, dove i problemi esistenti sono già stati trasferiti e i futuri report di interoperabilità possono restare dentro un&amp;rsquo;infrastruttura nativa Nostr.&lt;/p>
&lt;h3 id="nowhere-encodes-full-websites-into-url-fragments-and-routes-orders-through-nostr">nowhere encodes full websites into URL fragments and routes orders through Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/5t34k">nowhere&lt;/a> è un nuovo progetto AGPL-3.0 di 5t34k che serializza un intero sito nel frammento URL dopo &lt;code>#&lt;/code>, lo comprime con sostituzione di dizionario e raw DEFLATE e lo codifica in base64url. Poiché HTTP vieta al browser di inviare i frammenti al server, l&amp;rsquo;host che consegna la pagina non vede mai il contenuto e il sito stesso non viene memorizzato su un server. Il progetto include otto tipi di sito, cinque completamente statici e tre che usano relay Nostr per ordini, post e firme con chiavi effimere e cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;h3 id="small-new-surfaces-relaykit-and-brainstorm-search">Small new surfaces: relayk.it and Brainstorm Search&lt;/h3>
&lt;p>Due progetti piccoli meritano una menzione rapida. &lt;a href="https://relayk.it">relayk.it&lt;/a>, costruito da sam del team Soapbox, è un client per la discovery di relay costruito con Shakespeare che gira interamente nel browser. &lt;a href="https://brainstorm.world">Brainstorm Search&lt;/a> arriva come interfaccia di ricerca Nostr single-page focalizzata sull&amp;rsquo;emersione di contenuti attraverso la rete.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Proposte e discussioni recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a>: EOSE Completeness Hint&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>): propone un terzo elemento facoltativo nel messaggio &lt;code>EOSE&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> per indicare se il relay ha davvero consegnato tutti gli eventi memorizzati che corrispondono al filtro.&lt;/li>
&lt;li>&lt;strong>NIP-5D: Nostr Applets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>): propone un nuovo kind per distribuire applet interattive su Nostr, tra &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> per siti statici e &lt;a href="https://nostrcompass.org/it/topics/nip-5c/">NIP-5C&lt;/a> per scroll WASM.&lt;/li>
&lt;li>&lt;strong>NIP-29: Subgroups spec&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2319">PR #2319&lt;/a>): estende &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con una gerarchia di sottogruppi, cosi un singolo gruppo può ospitare più canali paralleli senza creare gruppi indipendenti.&lt;/li>
&lt;li>&lt;strong>NIP-29: Explicit role permissions on kind 39003&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2316">PR #2316&lt;/a>): definisce uno schema esplicito dei permessi nei ruoli kind &lt;code>39003&lt;/code>, rendendo leggibili a client e utenti i poteri effettivi di un ruolo come moderator.&lt;/li>
&lt;li>&lt;strong>NIP-11: access_control field for gated-relay discovery&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2318">PR #2318&lt;/a>): aggiunge un oggetto &lt;code>access_control&lt;/code> facoltativo a &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> per descrivere il modello di accesso del relay.&lt;/li>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>): continua a iterare sulla forma dell&amp;rsquo;evento kind &lt;code>10164&lt;/code> e sul layout dei campi per regole di subscription per livello.&lt;/li>
&lt;li>&lt;strong>NIP-XX: Agent Reputation Attestations (Kind 30085)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2320">PR #2320&lt;/a>): propone un evento addressable kind &lt;code>30085&lt;/code> per attestazioni firmate su agenti e servizi autonomi in Nostr, con punteggi, evidenze e supporto ai mercati &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>.&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>): prosegue il lavoro sul kind &lt;code>20411&lt;/code>, sulla forma di cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per destinatario e sulla semantica del tag &lt;code>ttl&lt;/code>.&lt;/li>
&lt;li>&lt;strong>marmot-ts 0.5.0 release PR&lt;/strong> (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/70">PR #70&lt;/a>): la PR di release per &lt;code>@internet-privacy/marmot-ts@0.5.0&lt;/code> include i primi breaking changes pianificati nel client TypeScript Marmot.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-72-moderated-communities">NIP Deep Dive: NIP-72 (Moderated Communities)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/72.md">NIP-72&lt;/a> definisce un modello di community tematiche su Nostr in cui i moderator curano una vista di lettura sopra scritture altrimenti non ristrette. Diversamente dai gruppi basati su relay di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, una community NIP-72 vive in eventi Nostr ordinari e qualunque relay che porti i kind rilevanti può servirla. Chiunque può pubblicare in una community, ma solo i post approvati da un moderator riconosciuto compaiono nel feed della community.&lt;/p>
&lt;p>Una community è definita da un evento addressable kind &lt;code>34550&lt;/code> pubblicato dal suo creatore. Il tag &lt;code>d&lt;/code> è lo slug stabile della community, i tag &lt;code>name&lt;/code>, &lt;code>description&lt;/code>, &lt;code>image&lt;/code> e &lt;code>rules&lt;/code> portano i metadati di presentazione, e una serie di tag &lt;code>p&lt;/code> marcati &lt;code>moderator&lt;/code> elenca le pubkey i cui approval contano. Tag &lt;code>relay&lt;/code> facoltativi con marker &lt;code>author&lt;/code>, &lt;code>requests&lt;/code> o &lt;code>approvals&lt;/code> suggeriscono dove pubblicare e recuperare ciascun tipo di evento:&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;f1e2d3c4b5a69788f1e2d3c4b5a69788f1e2d3c4b5a69788f1e2d3c4b5a69788&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;c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2&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">1745280000&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">34550&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-devs&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Devs&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 moderated community for Bitcoin protocol discussion.&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/bitcoin-devs.png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rules&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Stay on topic. Cite code or specs when possible.&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;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;moderator&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;a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;moderator&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 style="color:#e6db74">&amp;#34;author&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.moderator.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;approvals&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;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>Un utente invia un post pubblicando un normale evento Nostr e aggiungendo un tag &lt;code>a&lt;/code> con coordinata &lt;code>34550:&amp;lt;creator_pubkey&amp;gt;:&amp;lt;slug&amp;gt;&lt;/code>. L&amp;rsquo;approvazione è un evento separato kind &lt;code>4549&lt;/code> pubblicato da un moderator. Questo evento riferisce il post tramite tag &lt;code>e&lt;/code>, il submitter tramite tag &lt;code>p&lt;/code> e la community tramite tag &lt;code>a&lt;/code>, e inserisce nel &lt;code>content&lt;/code> una copia stringified dell&amp;rsquo;evento inviato. Questo mantiene renderizzabile il post approvato anche se l&amp;rsquo;autore originale elimina in seguito l&amp;rsquo;evento sorgente.&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;a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&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">1745283600&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">4549&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;34550:c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2:bitcoin-devs&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;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&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;e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5&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;1&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;id\&amp;#34;:\&amp;#34;b3c4d5e6...\&amp;#34;,\&amp;#34;pubkey\&amp;#34;:\&amp;#34;e4f5a6b7...\&amp;#34;,\&amp;#34;kind\&amp;#34;:1,\&amp;#34;content\&amp;#34;:\&amp;#34;Question about sighash flags\&amp;#34;,\&amp;#34;tags\&amp;#34;:[[\&amp;#34;a\&amp;#34;,\&amp;#34;34550:c3d2e1f0...:bitcoin-devs\&amp;#34;]],\&amp;#34;created_at\&amp;#34;:1745283500,\&amp;#34;sig\&amp;#34;:\&amp;#34;...\&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;bbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aa&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>Il modello di approvazione ha tre proprietà utili. La moderazione è trasparente, perché ogni approval è un evento Nostr firmato che chiunque può recuperare e verificare. Non è esclusiva, perché lo stesso post può essere approvato da community diverse. Ed è reversibile al livello di lettura, perché se una community rimuove un moderator dal suo evento kind &lt;code>34550&lt;/code>, le approvazioni precedenti di quel moderator smettono di contare per i client che rispettano la lista corrente dei moderator.&lt;/p>
&lt;p>Il lato lettura è il punto in cui i client divergono. Molti client community-aware renderizzano il feed filtrando gli eventi kind &lt;code>4549&lt;/code> taggati con la coordinata della community, deduplicando per ID dell&amp;rsquo;evento sottostante e poi renderizzando il post embedded. Alcuni recuperano anche direttamente i submission event e usano gli approval solo come whitelist. Client come &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> e, da questa settimana, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> via &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a>, espongono anche la coda dei post pendenti ai moderator. Rispetto a &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, il compromesso è chiaro: NIP-72 è più portabile e forkabile, mentre NIP-29 è più adatto quando spam e post non approvati devono restare del tutto fuori dal wire.&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> definisce gli zaps, un modo per collegare pagamenti Lightning a identità ed eventi Nostr e pubblicare una ricevuta verificabile del pagamento sui relay. Uno zap prova che un determinato mittente ha pagato un determinato importo a un destinatario specifico per un target specifico, e la prova è leggibile da qualunque client Nostr senza doversi fidare della parola del mittente. La specifica attraversa LNURL, Lightning e Nostr e fissa come devono cooperare.&lt;/p>
&lt;p>Il flusso coinvolge quattro attori. Il client del mittente scopre l&amp;rsquo;endpoint LNURL del destinatario dai metadati profilo kind &lt;code>0&lt;/code> (&lt;code>lud06&lt;/code> o &lt;code>lud16&lt;/code>) o da un tag &lt;code>zap&lt;/code> sull&amp;rsquo;evento da zappare. Quel client firma poi un evento zap request kind &lt;code>9734&lt;/code> che descrive il pagamento desiderato e lo invia al callback LNURL del destinatario, non ai relay. Dall&amp;rsquo;altra parte, il server LNURL del destinatario valida la richiesta, restituisce una invoice Lightning il cui description hash si impegna alla richiesta stringified e, una volta pagata la invoice, pubblica una ricevuta kind &lt;code>9735&lt;/code> sull&amp;rsquo;insieme di relay richiesto dal mittente.&lt;/p>
&lt;p>Una zap request kind &lt;code>9734&lt;/code> contiene un tag &lt;code>p&lt;/code> con la pubkey del destinatario, opzionalmente un tag &lt;code>e&lt;/code> o &lt;code>a&lt;/code> che identifica il contenuto da finanziare, un tag &lt;code>amount&lt;/code> in millisats, un tag &lt;code>relays&lt;/code> che elenca dove pubblicare la ricevuta e un tag &lt;code>k&lt;/code> che registra il kind del target:&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;c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&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;a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876&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">1745280000&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">9734&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;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&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;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;21000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relays&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;wss://nos.lol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.nostr.band&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;1&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;great post&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;ccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbcc&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 ricevuta zap kind &lt;code>9735&lt;/code> viene pubblicata dal wallet server del destinatario dopo la conferma del pagamento. Non è firmata dal mittente ma dal wallet server usando la &lt;code>nostrPubkey&lt;/code> pubblicizzata nella risposta LNURL. Una ricevuta valida porta la richiesta zap stringified nel tag &lt;code>description&lt;/code>, la invoice pagata nel tag &lt;code>bolt11&lt;/code> e un tag &lt;code>preimage&lt;/code> che prova il settlement:&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;d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3&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;e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0&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">1745280060&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">9735&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;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&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;a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876&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;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;bolt11&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lnbc210n1pj...bolt11invoicestring&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;{\&amp;#34;id\&amp;#34;:\&amp;#34;c1d2e3f4...\&amp;#34;,\&amp;#34;pubkey\&amp;#34;:\&amp;#34;a5b4c3d2...\&amp;#34;,\&amp;#34;kind\&amp;#34;:9734,\&amp;#34;content\&amp;#34;:\&amp;#34;great post\&amp;#34;,\&amp;#34;tags\&amp;#34;:[...]}&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;preimage&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef&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;ddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccdd&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 regola di validazione è il cuore delle garanzie di NIP-57. Un client che mostra una ricevuta kind &lt;code>9735&lt;/code> come zap dovrebbe verificare quattro cose: che la firma della ricevuta corrisponda alla &lt;code>nostrPubkey&lt;/code> annunciata nella risposta LNURL, che l&amp;rsquo;importo della invoice &lt;code>bolt11&lt;/code> corrisponda al tag &lt;code>amount&lt;/code> nella richiesta embedded, che il description hash della invoice si impegni alla richiesta zap stringified e che il &lt;code>preimage&lt;/code> faccia hash al &lt;code>payment_hash&lt;/code> della invoice. Una ricevuta che fallisce uno di questi controlli è solo una dichiarazione di pagamento, non una prova.&lt;/p>
&lt;p>I private zaps aggiungono riservatezza. Il mittente può cifrare il &lt;code>content&lt;/code> della richiesta per il destinatario e includere un tag &lt;code>anon&lt;/code>, cosi la rete relay vede il target del pagamento ma non legge la nota allegata. Alcuni client fanno un passo in più e generano una coppia di chiavi effimera per la richiesta stessa, cosi la ricevuta continua a provare che il pagamento è avvenuto ma il destinatario non può ricollegare lo zap alla pubkey di lunga durata del mittente.&lt;/p>
&lt;p>NIP-57 sostiene anche il sistema di zap goals di &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a>. Un goal è un evento kind &lt;code>9041&lt;/code> che dichiara un target e un insieme di relay sui quali contano le ricevute. Qualunque ricevuta zap collegata all&amp;rsquo;ID dell&amp;rsquo;evento del goal contribuisce al suo avanzamento. Client come &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> sommano gli importi validati dei &lt;code>bolt11&lt;/code> per mostrare il progresso e una classifica dei top zapper nella schermata &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a> Live Activities.&lt;/p>
&lt;p>Le zap split sono definite in un&amp;rsquo;appendice del NIP. Un destinatario può pubblicare un profilo kind &lt;code>0&lt;/code> con più tag &lt;code>zap&lt;/code>, ciascuno con un peso, cosi un singolo zap viene diviso tra più pubkey secondo i pesi pubblicati. Client come &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> e &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> implementano già il pagamento split end-to-end.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, scriveteci su Nostr o passate da &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #18</title><link>https://nostrcompass.org/it/newsletters/2026-04-15-newsletter/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-15-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> integra desktop Tor, una implementazione C di secp256k1, chiamate WebRTC per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, conformità RFC 9420 MLS per &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> e supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lancia notifiche push native su Nostr per Android con eventi kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> aggiunge Reticulum e porta eventi Nostr su mesh LoRa senza Internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> pubblica una prima release come server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e relay self-hosted in un&amp;rsquo;app desktop. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> debutta come directory e player di radio Internet basata su Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> avvia lo sviluppo come piattaforma bot self-hosted per chat di gruppo cifrate con Marmot. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> pubblica quattro release con audit di sicurezza e un grande lavoro sulle performance, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ridisegna feed e app bars.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> integra desktop Tor, una implementazione C di secp256k1, chiamate WebRTC per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, conformità RFC 9420 MLS per &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> e supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lancia notifiche push native su Nostr per Android con eventi kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> aggiunge Reticulum e porta eventi Nostr su mesh LoRa senza Internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> pubblica una prima release come server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e relay self-hosted in un&amp;rsquo;app desktop. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> debutta come directory e player di radio Internet basata su Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> avvia lo sviluppo come piattaforma bot self-hosted per chat di gruppo cifrate con Marmot. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> pubblica quattro release con audit di sicurezza e un grande lavoro sulle performance, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ridisegna feed e app bars.&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-merges-desktop-tor-c-secp256k1-webrtc-calls-and-multi-wallet-nwc">Amethyst merges desktop Tor, C secp256k1, WebRTC calls, and multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito 29 PR in una sola settimana tra crittografia, networking, calling e infrastruttura wallet.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a> aggiunge il supporto a Tor su desktop incorporando un daemon kmp-tor con design fail-closed. Se Tor è attivo, tutte le connessioni ai relay passano dal processo Tor integrato e l&amp;rsquo;app rifiuta di connettersi se Tor non parte. Il routing orientato alla privacy raggiunge cosi la parità tra build Android e desktop, supportato da oltre 130 unit test.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a> aggiunge una implementazione personalizzata in C di secp256k1 con binding JNI per la verifica delle firme. Il risultato è un&amp;rsquo;accelerazione di circa 2-3x nella verifica delle firme Schnorr rispetto al precedente percorso puro Kotlin. Le PR collegate &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2188">#2188&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2195">#2195&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2204">#2204&lt;/a> introducono fused multiply-reduce, una struct Fe4 dedicata e intrinsics specifiche per piattaforma per migliorare ulteriormente le prestazioni su Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a> aggiorna l&amp;rsquo;implementazione MLS in puro Kotlin per allinearla a RFC 9420, aggiungendo reuse guard, additional authenticated data, correzioni nella gestione dei commit e thread safety per l&amp;rsquo;integrazione con &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>. La serie WebRTC da &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2203">PR #2203&lt;/a> a &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2211">PR #2211&lt;/a> introduce un sistema completo di chiamate vocali e video per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, con ICE restart, cambio camera a runtime, monitoraggio della rete, riconnessione automatica e fix per le restrizioni Android 14+ sui servizi in foreground.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a> aggiunge il supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. Gli utenti possono collegare più wallet NWC allo stesso account, vedere schede saldo separate, scegliere un wallet predefinito e migrare dal vecchio modello a wallet singolo. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2189">PR #2189&lt;/a> aggiunge anche la conversione GIF-to-MP4 con uno slider di qualità.&lt;/p>
&lt;h3 id="nstrfy-launches-nostr-native-push-notifications-for-android">nstrfy launches Nostr-native push notifications for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> è stato lanciato il 13 aprile con tre release da &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.0.0">v1.0.0&lt;/a> a &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.2.0">v1.2.0&lt;/a>. L&amp;rsquo;app è un fork di ntfy-android dove il trasporto HTTP è stato sostituito da Nostr. Invece di interrogare un server per ricevere notifiche push, nstrfy si sottoscrive a eventi kind &lt;code>7741&lt;/code> su relay configurabili e li mostra come notifiche Android native.&lt;/p>
&lt;p>Il modello di notifica supporta sia payload in chiaro sia payload cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Quando la cifratura è attiva, nstrfy usa &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> per firmare via &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> o tramite un nsec locale. Le subscription per topic permettono allowlist per mittente con whitelist npub, l&amp;rsquo;app importa le liste relay dal profilo utente con &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e rispetta la scadenza degli eventi di &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a>. La ricerca utenti usa NIP-50 e dati &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> da brainstorm.world.&lt;/p>
&lt;p>Il progetto companion &lt;a href="https://github.com/vcavallo/nstrfy.sh">nstrfy.sh&lt;/a> fornisce sia una CLI bash sia un client web ospitato su &lt;a href="https://nstrfy.sh">nstrfy.sh&lt;/a>, con supporto al signer &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. L&amp;rsquo;app nativa è disponibile su &lt;a href="https://zapstore.dev/apps/io.nstrfy.android">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="hamstr-adds-reticulum-for-nostr-over-lora-mesh">HAMSTR adds Reticulum for Nostr over LoRa mesh&lt;/h3>
&lt;p>&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>, il progetto che invia eventi Nostr e Lightning zaps via radio amatoriale, ha unito &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/10">PR #10&lt;/a> il 12 aprile aggiungendo &lt;a href="https://reticulum.network/">Reticulum&lt;/a> come backend di trasporto mesh. Reticulum è un protocollo mesh crittografico che funziona su LoRa, HF, VHF/UHF, link seriali e TCP/IP. Con questa aggiunta, HAMSTR può inoltrare eventi Nostr su una mesh di dispositivi RNode senza alcuna infrastruttura Internet.&lt;/p>
&lt;p>I trasporti AX.25 Packet Radio e VARA HF restano disponibili, cosi gli operatori possono scegliere il collegamento radio più adatto. L&amp;rsquo;architettura zero-knowledge del server significa che il relay non vede le chiavi private, e la conformità zap di &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> fa si che i Lightning zap offline appaiano correttamente in client come Amethyst e Primal. Una guida di setup per Reticulum è inclusa in &lt;a href="https://github.com/LibertyFarmer/hamstr/blob/master/RETICULUM.MD">RETICULUM.MD&lt;/a>. Nella stessa settimana, &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/11">PR #11&lt;/a> ha migrato il frontend a Svelte 5 e TailwindCSS v4.&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="bloom-v010-ships-self-hosted-blossom-server-and-relay">Bloom v0.1.0 ships self-hosted Blossom server and relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> ha pubblicato la sua prima release, &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a>, il 9 aprile. Costruita con Tauri v2 e React 19, Bloom unisce in una sola applicazione desktop un server media completo &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e un relay Nostr. Gli utenti ottengono storage file sovrano con content addressing SHA-256, supporto ai metadati file di &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> e risoluzione dello schema URI &lt;code>blossom://&lt;/code> senza dover gestire da soli l&amp;rsquo;infrastruttura server.&lt;/p>
&lt;h3 id="wavefunc-v010-and-v011-launch-nostr-internet-radio">WaveFunc v0.1.0 and v0.1.1 launch Nostr internet radio&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> ha pubblicato &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.0">v0.1.0&lt;/a> e &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> il 13 aprile, debuttando come directory e player di internet radio basato su Nostr. Event kind personalizzati definiscono il modello dati: kind &lt;code>31237&lt;/code> per le stazioni radio, kind &lt;code>30078&lt;/code> per i preferiti, kind &lt;code>1311&lt;/code> per la live chat e kind &lt;code>1111&lt;/code> per i commenti alle stazioni. Il backend relay basato su Khatru usa SQLite e ricerca full-text Bluge con supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>WaveFunc include un wallet Cashu &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> e supporto nutzap, con migrazione da NDK ad applesauce-core. &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> aggiunge caroselli per genere, un popover per donazioni Lightning, gestione delle stazioni per utenti autenticati e listing Zapstore. La build desktop Tauri v2 guadagna system tray, media key, autostart e deep linking.&lt;/p>
&lt;h3 id="snort-ships-v050-through-v053-with-security-hardening-and-performance-overhaul">Snort ships v0.5.0 through v0.5.3 with security hardening and performance overhaul&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, il client web React per Nostr, ha pubblicato tre release da &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.0">v0.5.0&lt;/a> a &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.3">v0.5.3&lt;/a>. La v0.5.0 è la più grande e consegna un audit di sicurezza completo con verifica reale delle firme Schnorr, protezione rafforzata di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> contro messaggi relay falsificati, PIN encryption migliorata e rimozione della fiducia verso delegation NIP-26 non verificata. Sul fronte performance arrivano verifica WASM batch delle firme, route lazy-loaded, un loader profili riscritto e ottimizzazioni del worker relay.&lt;/p>
&lt;p>La release aggiunge anche la visualizzazione delle invoice kind &lt;code>7000&lt;/code> per DVM &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://github.com/v0l/snort/pull/620">PR #620&lt;/a> rifà il sistema di messaggistica per ridurre la complessità del calcolo della chat list e persistere i gift wrap nel worker relay.&lt;/p>
&lt;h3 id="primal-android-ships-3021-and-redesigns-feed-layout">Primal Android ships 3.0.21 and redesigns feed layout&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha pubblicato &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.21">v3.0.21&lt;/a> con fix per poll zap votes, condivisione multi-account del wallet e auto-reconnect per signer remoto e servizio wallet. Sette PR successive ridisegnano il layout principale: &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1008">PR #1008&lt;/a> unifica la schermata principale, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1010">PR #1010&lt;/a> implementa nuove feed card, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1009">PR #1009&lt;/a> aggiunge supporto video nelle card media e &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1013">PR #1013&lt;/a> ridisegna le app bar.&lt;/p>
&lt;h3 id="nostria-v3119-through-v3121-add-local-ai-image-generation">Nostria v3.1.19 through v3.1.21 add local AI image generation&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha pubblicato tre release da &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.19">v3.1.19&lt;/a> a &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.21">v3.1.21&lt;/a> con oltre 80 commit. L&amp;rsquo;aggiunta principale è la generazione locale di immagini con Janus Pro e accelerazione WebGPU, cosi gli utenti possono creare immagini sul dispositivo senza API esterne. Le release aggiungono anche generazione cloud, chat multimodale, supporto ONNX runtime, libreria di prompt e gestione della cache.&lt;/p>
&lt;h3 id="tubestr-v103-ships-feed-and-studio-updates">TubeStr v1.0.3 ships feed and studio updates&lt;/h3>
&lt;p>&lt;a href="https://github.com/Tubestr/tubestr-v2">TubeStr&lt;/a>, app privata per la condivisione di video familiari costruita su Nostr, ha pubblicato &lt;a href="https://github.com/Tubestr/tubestr-v2/releases/tag/v1.0.3">v1.0.3&lt;/a> il 13 aprile. La release aggiunge miglioramenti a feed e studio. &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/3">PR #3&lt;/a> rinnova l&amp;rsquo;onboarding e &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/2">PR #2&lt;/a> corregge un errore nell&amp;rsquo;export video. L&amp;rsquo;app usa NDK e MDK per la condivisione cifrata dei media tra familiari, con integrazione &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> pianificata per lo storage.&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="botburrow-begins-development-as-marmot-bot-platform">Botburrow begins development as Marmot bot platform&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> è un nuovo progetto del team Marmot, iniziato il 3 aprile. È una piattaforma self-hosted di gestione bot dove ogni bot ha una propria identità Nostr, entra in chat di gruppo cifrate &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> tramite messaggi Welcome e invia e riceve messaggi end-to-end encrypted. La dashboard, costruita con Rails 8.1, comunica con un singolo daemon whitenoise-rs (&lt;code>wnd&lt;/code>) attraverso un socket Unix.&lt;/p>
&lt;p>Botburrow espone un livello consistente di scripting e operations: comandi, trigger e azioni pianificate eseguono codice Ruby personalizzato, gli script possono ispezionare profili, membership di gruppo e inviti pendenti tramite &lt;code>wnd&lt;/code>, la dashboard include una vista live chat e ogni bot ha un proprio storage file per configurazioni, cache e output generato. Un&amp;rsquo;&lt;a href="https://github.com/marmot-protocol/botburrow/commit/2ed012078eaab3c5b92dff16b87865c2e353bd80">immagine Docker&lt;/a> con build multi-arch punta a self-hosting zero-config su Umbrel e Start9.&lt;/p>
&lt;h3 id="nostr-archives-adds-trending-feeds-relay-and-entity-resolution">Nostr Archives adds trending feeds relay and entity resolution&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/nostrarchives-api">Nostr Archives&lt;/a>, la piattaforma di archiviazione e analytics per Nostr su &lt;a href="https://nostrarchives.com">nostrarchives.com&lt;/a>, ha continuato a svilupparsi sia lato &lt;a href="https://github.com/barrydeen/nostrarchives-api">API&lt;/a> sia lato &lt;a href="https://github.com/barrydeen/nostrarchives-frontend">frontend&lt;/a>. &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/118">PR #118&lt;/a> aggiunge il filtro per intervallo temporale alla classifica client e &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/117">PR #117&lt;/a> aggiunge contatori di engagement agli eventi di risposta. Sul frontend, &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/85">PR #85&lt;/a> risolve entità Nostr direttamente dall&amp;rsquo;URL e &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/86">PR #86&lt;/a> aggiunge una pagina di documentazione API.&lt;/p>
&lt;p>La piattaforma gestisce quattro servizi relay: un relay di ricerca NIP-50, un relay per trending feeds, un scheduler relay per eventi futuri e un relay indicizzatore per kind 0, 3 e 10002.&lt;/p>
&lt;h3 id="damus-fixes-favorites-timeline">Damus fixes favorites timeline&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS, ha unito &lt;a href="https://github.com/damus-io/damus/pull/3708">PR #3708&lt;/a> riscrivendo &lt;code>subscribe_to_favorites()&lt;/code> con filtraggio in-place, ricostruzione della deduplicazione e persistenza della selezione tab.&lt;/p>
&lt;h3 id="nostur-adds-private-zaps-and-custom-emoji-viewing">Nostur adds private zaps and custom emoji viewing&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client iOS, ha pubblicato 10 commit questa settimana aggiungendo supporto ai private zaps, visualizzazione di custom emoji, un fix per il rendering di &lt;code>.webp&lt;/code> animati e il rilevamento del formato audio dei messaggi vocali.&lt;/p>
&lt;h3 id="amber-ships-v601-through-v603-with-webdav-backup-and-relay-reconnection-fixes">Amber ships v6.0.1 through v6.0.3 with WebDAV backup and relay reconnection fixes&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, ha pubblicato tre release questa settimana. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.1">v6.0.1&lt;/a> aggiunge backup WebDAV e condivisione su Google Drive, implementa exponential backoff per la riconnessione ai relay, aggiorna Quartz alla 1.08.0 e corregge la validazione eventi. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.2">v6.0.2&lt;/a> aggiunge un indice account per chi usa seed words e corregge la riconnessione quando il relay è offline all&amp;rsquo;avvio. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.3">v6.0.3&lt;/a> aggiunge un ulteriore fix per request ID vuoti nella ricezione di intent.&lt;/p>
&lt;h3 id="plektos-v060-redesigns-with-ditto-themes">Plektos v0.6.0 redesigns with Ditto themes&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a>, la piattaforma decentralizzata per meetup ed eventi costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>, ha pubblicato &lt;a href="https://github.com/derekross/plektos/commit/7a691cdf089ceb7a8582dd5c0ee026830f2cdc77">v0.6.0&lt;/a> e &lt;a href="https://github.com/derekross/plektos/commit/3a6474ae380522d8ee1b3526423fcfc3328fd879">v0.6.1&lt;/a>. L&amp;rsquo;aggiornamento aggiunge temi di comunità in stile Ditto con upload di sfondi personalizzati, configurazione della forma avatar e un generale restyling dell&amp;rsquo;interfaccia.&lt;/p>
&lt;h3 id="shadow-adds-nostr-os-api-and-cashu-wallet-app">Shadow adds Nostr OS API and Cashu wallet app&lt;/h3>
&lt;p>&lt;a href="https://github.com/justinmoon/shadow">Shadow&lt;/a>, la piattaforma runtime di app di Justin Moon, ha pubblicato oltre 30 commit in due giorni. &lt;a href="https://github.com/justinmoon/shadow/commit/88cbda5131814d2730a2d892029932136db005df">Commit 88cbda5&lt;/a> aggiunge un&amp;rsquo;app wallet Cashu dentro il runtime, &lt;a href="https://github.com/justinmoon/shadow/commit/865c415">commit 865c415&lt;/a> aggiunge una demo podcast player e il runtime espone &lt;code>Shadow.os.nostr&lt;/code> e &lt;code>Shadow.os.audio&lt;/code> come API di sistema di primo livello.&lt;/p>
&lt;h3 id="lief-fixes-amber-login-and-adds-zapstore">Lief fixes Amber login and adds Zapstore&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/lief">Lief&lt;/a>, app Nostr per comporre e inviare lettere long-form ad altri utenti Nostr, ha pubblicato la build &lt;code>v2026.04.12&lt;/code>. L&amp;rsquo;aggiornamento corregge un problema di login con &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> su Android, semplifica il flusso di nudge al signer, aggiorna nostrify e aggiunge l&amp;rsquo;integrazione Zapstore.&lt;/p>
&lt;h3 id="espy-overhauls-color-picker-and-fixes-amber-login">Espy overhauls color picker and fixes Amber login&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/espy">Espy&lt;/a>, app social Nostr dove gli utenti condividono &amp;ldquo;momenti colore&amp;rdquo;, ha pubblicato la build &lt;code>v2026.04.12&lt;/code>. L&amp;rsquo;update rifà il color picker con un arco di saturazione curvo, corregge bug di flicker nell&amp;rsquo;anello della tonalità, aggiunge personaggi Easter egg e riduce gli asset PNG di 703KB. Corregge anche il login con Amber e aggiorna nostrify.&lt;/p>
&lt;h3 id="jumble-adds-per-feed-kind-filters-and-articles-tab">Jumble adds per-feed kind filters and articles tab&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a> ha pubblicato 13 commit questa settimana aggiungendo filtri per kind per singolo feed, una tab Articles, sincronizzazione dello stato di lettura delle notifiche con opzione privacy-preserving, una modalità per nascondere gli avatar e un fix a una race condition nel cambio account.&lt;/p>
&lt;h3 id="primal-web-ships-8-version-bumps">Primal Web ships 8 version bumps&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-web-app">Primal Web&lt;/a> ha pubblicato le versioni 3.0.93 fino alla 3.0.101 in una settimana con 21 commit. Il lavoro si concentra su miglioramenti alla live stream chat, fix ai boundary delle mention, paginazione dei bookmark, prevenzione dei like duplicati e correzioni al relay proxy.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Merged:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff): Add &lt;code>nostr://&lt;/code> clone URLs&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>): &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> definisce come ospitare repository git su Nostr usando annunci di repository kind &lt;code>30617&lt;/code> che elencano branch, tag, relay e pubkey dei maintainer. Questa PR aggiunge un formato &lt;code>nostr://&lt;/code> per il clone che funziona con helper &lt;code>git-remote-nostr&lt;/code>, cosi &lt;code>git clone nostr://npub1.../relay.ngit.dev/ngit&lt;/code> può risolvere npub o un indirizzo NIP-05, scoprire i relay del repository e recuperare i dati del repo. Sono definiti tre pattern URL, e la PR stringe anche il formato del tag &lt;code>d&lt;/code> per garantire URI validi.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>): propone un evento replaceable kind &lt;code>10164&lt;/code> che permette ai creatori di dichiarare gateway di pagamento, modelli di prezzo e regole di subscription per contenuti a pagamento.&lt;/li>
&lt;li>&lt;strong>NIP-XX: Relay Self-Declaration Manifest and Retention Horizon&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2314">PR #2314&lt;/a>): propone un evento replaceable kind &lt;code>10100&lt;/code> per dichiarazioni gossipabili dei relay e un nuovo messaggio relay-to-client &lt;code>HORIZON&lt;/code> che indica il timestamp più antico conservato.&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>): propone il kind &lt;code>20411&lt;/code> per condividere dati di geolocalizzazione cifrati con destinatari specifici tramite &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con supporto &lt;code>ttl&lt;/code> per la retention.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-5c/">NIP-5C&lt;/a> (Scrolls): WASM programs update&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): continua lo sviluppo della specifica per la pubblicazione ed esecuzione di programmi WASM su Nostr, estendendo &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> da siti statici a programmi interattivi.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> large payload support&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1907">PR #1907&lt;/a>): propone di estendere la cifratura versionata NIP-44 oltre l&amp;rsquo;attuale limite di 65.535 byte, utile soprattutto per le risposte &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che contengono grandi contact list kind &lt;code>3&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-c7/">NIP-C7&lt;/a>: Restrict kind 9 to chat views&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>): richiede che i client che renderizzano una &amp;ldquo;chat view&amp;rdquo; recuperino solo eventi kind &lt;code>9&lt;/code>, evitando la perdita di contesto quando altri tipi di contenuto finiscono nella timeline di chat.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-29-relay-based-groups">NIP Deep Dive: NIP-29 (Relay-based Groups)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">NIP-29&lt;/a> definisce un modello di messaggistica di gruppo in cui è il relay a gestire membership e moderazione. I gruppi vivono su un relay specifico, identificati da una stringa casuale, e il relay applica le regole su chi può scrivere nel gruppo. È un&amp;rsquo;architettura diversa da &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> o dalle chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>: qui il relay è l&amp;rsquo;autorità e può leggere i messaggi.&lt;/p>
&lt;p>Un gruppo è identificato dal formato &lt;code>&amp;lt;host&amp;gt;'&amp;lt;group-id&amp;gt;&lt;/code>, per esempio &lt;code>groups.nostr.com'abcdef&lt;/code>. Tutti gli eventi inviati al gruppo portano un tag &lt;code>h&lt;/code> con l&amp;rsquo;ID del gruppo:&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">1744675200&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">9&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;h&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abcdef&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;previous&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e5f67890&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12345678&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;Has anyone tested the new relay config?&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;e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4&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>Il tag &lt;code>previous&lt;/code> funge da meccanismo di rilevamento delle manomissioni. I client includono i primi 8 caratteri hex di eventi recenti visti sullo stesso relay, e i relay rifiutano riferimenti a eventi che non possiedono. La membership è gestita da kind di moderazione nell&amp;rsquo;intervallo &lt;code>9000-9020&lt;/code>. Un utente entra pubblicando un kind &lt;code>9021&lt;/code> e può includere un tag &lt;code>code&lt;/code> collegato a codici invito creati dagli admin:&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;f1a2b3c4d5e6f7890123456789abcdef0123456789abcdef1234567890abcdef&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">1744675200&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">9021&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;h&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abcdef&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;code&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;invite-xyz-123&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;I&amp;#39;d like to join the dev discussion 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;11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff&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>Gli admin possono aggiungere utenti con ruoli, rimuoverli, modificare i metadati del gruppo e cancellare eventi. Le configurazioni vengono pubblicate come eventi addressable kind &lt;code>39000&lt;/code> fino a &lt;code>39003&lt;/code>. I gruppi possono essere pubblici, chiusi o aperti, e la specifica accetta molti tipi di evento nel contesto del gruppo, inclusi articoli &lt;a href="https://nostrcompass.org/it/topics/nip-23/">NIP-23&lt;/a> e live stream &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. Client come Flotilla e Coracle supportano già questo modello, mentre &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> è in sviluppo. Il compromesso rispetto a &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> è esplicito: niente end-to-end encryption, ma molta più semplicità operativa per comunità pubbliche e spazi di discussione aperti.&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> definisce un protocollo per computazione on-demand su Nostr. Un cliente pubblica una richiesta di lavoro, i service provider competono per eseguirla e i risultati vengono consegnati come eventi Nostr. Il protocollo riserva i kind &lt;code>5000-5999&lt;/code> alle richieste, &lt;code>6000-6999&lt;/code> ai risultati e &lt;code>7000&lt;/code> al feedback di stato.&lt;/p>
&lt;p>Una richiesta può usare input di tipo &lt;code>url&lt;/code>, &lt;code>event&lt;/code>, &lt;code>job&lt;/code> o &lt;code>text&lt;/code>, specificare un &lt;code>bid&lt;/code> massimo in millisats, aggiungere parametri con tag &lt;code>param&lt;/code> e dichiarare il formato di output con &lt;code>output&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;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;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">1744675200&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">5001&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;https://example.com/article.txt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;output&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;text/plain&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relays&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;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;bid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;5000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;param&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lang&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;en&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;param&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;max_tokens&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;280&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;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>Il provider pubblica poi un risultato kind &lt;code>6001&lt;/code> che rimanda alla richiesta originale e può includere una invoice Lightning nel tag &lt;code>amount&lt;/code>. Gli eventi kind &lt;code>7000&lt;/code> permettono aggiornamenti come &lt;code>payment-required&lt;/code>, &lt;code>processing&lt;/code>, &lt;code>error&lt;/code> e &lt;code>success&lt;/code>, dando visibilità sullo stato dei job lunghi. Il chaining dei job consente pipeline composte, per esempio trascrizione, riassunto e traduzione in sequenza.&lt;/p>
&lt;p>Per la privacy, input e parametri possono essere cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> verso il provider selezionato. Tipi di job specifici vengono definiti in un repository separato, con richieste per generazione testo, riassunto, speech-to-text, immagini e raccomandazione contenuti. Client come &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> mostrano già invoice &lt;code>payment-required&lt;/code>, mentre noStrudel e DVMDash aiutano rispettivamente nella scoperta e nell&amp;rsquo;osservazione dei DVM.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, scriveteci su Nostr o passate da &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #17</title><link>https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">v1.08.0&lt;/a> con integrazione Arti Tor e una UI Shorts ridisegnata, mentre integra implementazioni in puro Kotlin di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostur-v1270-aggiunge-registrazione-video-e-risposte-private">v1.27.0&lt;/a> con registrazione video, profili GIF animati e risposte private. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lancia la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#shosho-v0150-lancia-shows-e-un-carousel-video-verticale">v0.15.0&lt;/a> con Shows (informazioni personalizzate sul live stream collegate a OBS) e un carousel video verticale in stile TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">torna da Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/a> con chiavi ephemeral a rotazione. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> distribuisce &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">supporto exit node e packaging Umbrel&lt;/a> attraverso sei rilasci. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> sale alla &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> con chiavi di firma &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per connessione e aggiornamenti in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">v0.10.0-beta&lt;/a> con auto-aggiornamento APK via Zapstore, e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) riceve una &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">migrazione di kind&lt;/a>. Due approfondimenti NIP coprono &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">v1.08.0&lt;/a> con integrazione Arti Tor e una UI Shorts ridisegnata, mentre integra implementazioni in puro Kotlin di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostur-v1270-aggiunge-registrazione-video-e-risposte-private">v1.27.0&lt;/a> con registrazione video, profili GIF animati e risposte private. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lancia la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#shosho-v0150-lancia-shows-e-un-carousel-video-verticale">v0.15.0&lt;/a> con Shows (informazioni personalizzate sul live stream collegate a OBS) e un carousel video verticale in stile TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">torna da Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/a> con chiavi ephemeral a rotazione. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> distribuisce &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">supporto exit node e packaging Umbrel&lt;/a> attraverso sei rilasci. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> sale alla &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> con chiavi di firma &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per connessione e aggiornamenti in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">v0.10.0-beta&lt;/a> con auto-aggiornamento APK via Zapstore, e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) riceve una &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">migrazione di kind&lt;/a>. Due approfondimenti NIP coprono &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p>
&lt;h2 id="notizie-principali">Notizie Principali&lt;/h2>
&lt;h3 id="amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">Amethyst distribuisce Arti Tor e integra MLS e Marmot in puro Kotlin&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito quattro rilasci dalla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a> alla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a> e ha integrato un ampio blocco di lavoro non ancora rilasciato nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> (il modulo Nostr condiviso Kotlin Multiplatform). Il rilascio di punta è la v1.08.0 &amp;ldquo;Arti Tor&amp;rdquo;, che sposta la connettività Tor dell&amp;rsquo;app dalla libreria Tor basata su C a &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implementazione Rust del Tor Project. La migrazione affronta i crash casuali che si verificavano con i precedenti binding C di Tor. Arti è il sostituto a lungo termine del Tor Project per la codebase C, riscritto da zero in Rust per memory safety e async I/O.&lt;/p>
&lt;p>Il rilascio v1.07.3 ha ridisegnato la UI Shorts, sostituendo il design paginato con feed edge-to-edge per immagini, short e video lunghi. Lo stesso rilascio ha migrato i badge al kind &lt;code>10008&lt;/code> e i bookmark al kind &lt;code>10003&lt;/code>, allineandosi alla migrazione di kind &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">unita questa settimana&lt;/a>. La v1.07.4 ha corretto un problema nella gestione dei secret di Nostr Wallet Connect, e la v1.07.5 ha corretto un crash durante l&amp;rsquo;upload di immagini.&lt;/p>
&lt;p>Sul branch main, ma non ancora in un rilascio taggato, il team ha scritto un&amp;rsquo;implementazione completa in Kotlin sia di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> sia del protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, eliminando la necessità di binding a librerie native C/Rust. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a> aggiunge il layer centrale di messaggistica di gruppo Marmot MLS, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a> aggiunge la UI della chat di gruppo, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a> aggiunge i processor dei messaggi in ingresso e in uscita con un subscription manager, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a> aggiunge la persistenza dello stato dei gruppi MLS e la gestione della rotazione dei KeyPackage, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a> aggiunge una suite di test MLS completa con una firma di GroupInfo migliorata, e la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a> aggiunge il tracciamento dello stato di pubblicazione dei KeyPackage. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a> aggiunge un&amp;rsquo;implementazione secp256k1 in puro Kotlin per le operazioni crittografiche Nostr, sostituendo la dipendenza dalla libreria C nativa. Combinata con l&amp;rsquo;implementazione Kotlin di MLS, &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> può eseguire firma Nostr e messaggistica di gruppo Marmot senza alcun binding nativo, aprendo la strada ai target Kotlin Multiplatform inclusi quelli iOS.&lt;/p>
&lt;p>Il team sta anche costruendo il supporto a &lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a> (P2P Voice and Video Calls): la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a> aggiunge una suite di test completa per la call state machine di NIP-AC, e la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a> impedisce che offerte di chiamata stale vengano riattivate dopo il riavvio dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="nostur-v1270-aggiunge-registrazione-video-e-risposte-private">Nostur v1.27.0 aggiunge registrazione video e risposte private&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client Nostr per iOS, ha distribuito la &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a> il 2 aprile. Il rilascio aggiunge la registrazione video in-app con trim prima dell&amp;rsquo;upload, così gli utenti possono registrare clip brevi, tagliarle alla lunghezza desiderata e pubblicarle senza uscire dal client. Il supporto alle GIF animate si estende alle foto profilo e banner, con l&amp;rsquo;aggiunta anche del rendering WebP animato. Una nuova integrazione con Shortcuts permette agli utenti di inviare post Nostr dalle automazioni Apple Shortcuts. Il rilascio aggiunge anche le risposte private e corregge problemi di compatibilità DM che influivano sulla consegna dei messaggi tra Nostur e altri client.&lt;/p>
&lt;h3 id="shosho-v0150-lancia-shows-e-un-carousel-video-verticale">Shosho v0.15.0 lancia Shows e un carousel video verticale&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app di live streaming Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a> e la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a> il 7 aprile. La funzione principale è Shows: gli streamer possono preparare informazioni personalizzate sul proprio show prima di andare live e collegare lo show a OBS o a qualsiasi encoder esterno. Questo separa i metadati del &amp;ldquo;cosa sto trasmettendo&amp;rdquo; dall&amp;rsquo;atto di andare in diretta, così gli streamer possono preparare titoli, descrizioni e prodotti prima di iniziare la trasmissione. Lo stesso rilascio aggiunge un carousel video verticale in stile TikTok per scorrere live, clip e replay in un feed a schermo intero, e Quick Add per pubblicare clip video e aggiungere prodotti direttamente dalla pagina profilo. La v0.15.1 corregge un bug per cui la tastiera nascondeva il campo di input della chat del live stream.&lt;/p>
&lt;h2 id="rilasci-di-questa-settimana">Rilasci di Questa Settimana&lt;/h2>
&lt;h3 id="notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">Notedeck v0.10.0-beta distribuisce l&amp;rsquo;auto-aggiornamento via Zapstore&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop e mobile del team Damus, ha distribuito &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.1">v0.10.0-beta.1&lt;/a> e &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.2">v0.10.0-beta.2&lt;/a> come prerelease di test per l&amp;rsquo;auto-aggiornamento APK. La &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> aggiunge l&amp;rsquo;auto-aggiornamento APK via updater Nostr/Zapstore su Android, costruendo sul &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-18-newsletter/#notedeck-moves-release-discovery-onto-nostr">lavoro di discovery degli aggiornamenti nativo Nostr dalla Newsletter #14&lt;/a>. Il flusso di aggiornamento scopre i nuovi rilasci tramite event Nostr pubblicati sui relay, poi scarica l&amp;rsquo;APK da dove lo sviluppatore lo ospita (GitHub releases, Blossom CDN o altre sorgenti), verifica l&amp;rsquo;hash SHA-256 rispetto all&amp;rsquo;event Nostr firmato e lo installa. La &lt;a href="https://github.com/damus-io/notedeck/pull/1438">PR #1438&lt;/a> corregge un bug della welcome screen in cui i pulsanti Login e CreateAccount tornavano subito indietro, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1424">PR #1424&lt;/a> corregge l&amp;rsquo;overflow del testo nella vista sessione di Agentium AI.&lt;/p>
&lt;h3 id="amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">Amber v6.0.0-pre1 aggiunge chiavi di firma NIP-46 per connessione&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.0-pre1">v6.0.0-pre1&lt;/a> il 4 aprile. Il cambiamento più importante è l&amp;rsquo;introduzione di chiavi di firma per connessione per il protocollo bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing). Invece di usare una singola keypair per tutte le connessioni bunker, Amber ora genera una chiave distinta per ogni client connesso. Se una connessione client viene compromessa, l&amp;rsquo;attaccante non può impersonare il signer verso gli altri client.&lt;/p>
&lt;p>La &lt;a href="https://github.com/greenart7c3/Amber/pull/377">PR #377&lt;/a> aggiunge il controllo e l&amp;rsquo;installazione degli aggiornamenti in-app via Zapstore, unendosi a &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">Notedeck&lt;/a> nell&amp;rsquo;adozione della distribuzione app nativa Nostr. La &lt;a href="https://github.com/greenart7c3/Amber/pull/375">PR #375&lt;/a> gestisce con grazia i fallimenti di AndroidKeyStore mostrando un avviso agli utenti invece di far crashare l&amp;rsquo;app, e la &lt;a href="https://github.com/greenart7c3/Amber/pull/371">PR #371&lt;/a> aggiunge cleanup del database con limiti di dimensione e troncamento dei contenuti per prevenire una crescita di storage senza limiti. La prerelease include anche la whitelist relay auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> e il login tramite frase mnemonica di recovery dal &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">ciclo v5.0.x trattato la settimana scorsa&lt;/a>.&lt;/p>
&lt;h3 id="nostria-distribuisce-unapp-mobile-nativa">Nostria distribuisce un&amp;rsquo;app mobile nativa&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform mantenuto da SondreB, ha rilasciato un&amp;rsquo;app mobile nativa per Android con otto rilasci dalla &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.11">v3.1.11&lt;/a> alla &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.18">v3.1.18&lt;/a>. La capacità nuova più importante è il supporto nativo ai signer locali come &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e Aegis. Sono disponibili anche gli &lt;a href="https://www.nostria.app/download">installer desktop&lt;/a> per Linux, macOS e Windows. La &lt;a href="https://github.com/nostria-app/nostria/pull/610">PR #610&lt;/a> riduce la pressione sulla memoria del feed con limiti runtime adattivi e cleanup delle preview URL. La v3.1.14 corregge l&amp;rsquo;integrazione con Brainstorm, un provider &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>. La v3.1.15 si concentra sui miglioramenti musicali. La nuova app Android è disponibile su &lt;a href="https://zapstore.dev/apps/app.nostria">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="divine-108-distribuisce-upload-resumable-e-dm">diVine 1.0.8 distribuisce upload resumable e DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client per video brevi, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.8">1.0.8&lt;/a> con 87 PR unite. Gli upload resumable permettono ai creator di riprendere upload interrotti chunk per chunk invece di ricominciare da zero su una connessione instabile. Il rilascio aggiunge impostazioni di qualità video e bitrate, doppio tap per mettere like e miglioramenti ai DM. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2722">PR #2722&lt;/a> aggiunge un plugin fotocamera macOS per la cattura video desktop, e la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2820">PR #2820&lt;/a> migra il sistema di notifiche a un&amp;rsquo;architettura BLoC con enrichment e grouping. Il team ha anche sostituito sticker e artwork di categoria generati da AI con SVG 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-aggiunge-blur-per-note-sensibili-e-auth-nip-42">Manent v1.3.0 aggiunge blur per note sensibili e auth NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, l&amp;rsquo;app per note private cifrate e storage file, ha distribuito la &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.3.0">v1.3.0&lt;/a> il 2 aprile. Gli utenti possono ora segnare le note come sensibili per sfocarle nella list view, mantenendo nascosto il contenuto privato durante lo scorrimento casuale. Il rilascio aggiunge anche il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays), permettendo a Manent di autenticarsi verso relay che lo richiedono prima di accettare event. Manent archivia tutti i dati cifrati sui relay Nostr usando la keypair dell&amp;rsquo;utente, quindi il supporto NIP-42 amplia l&amp;rsquo;insieme di relay che può usare per lo storage.&lt;/p>
&lt;h3 id="wisp-da-v0170-a-v0173-aggiunge-zap-ai-live-stream-e-backup-wallet">Wisp da v0.17.0 a v0.17.3 aggiunge zap ai live stream e backup wallet&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito sei rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.2-beta">v0.16.2-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.3-beta">v0.17.3-beta&lt;/a> con 44 PR unite. La v0.17.0 aggiunge prompt di sicurezza per il backup del wallet e miglioramenti alla UX degli zap. La &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.1-beta">v0.17.1&lt;/a> aggiunge la visibilità della chat del live stream tra piattaforme e la funzionalità zap per i live stream. La &lt;a href="https://github.com/barrydeen/wisp/pull/423">PR #423&lt;/a> aggiunge la ricerca automatica dei profili, un&amp;rsquo;animazione di successo per gli zap e miglioramenti allo stato utente. La &lt;a href="https://github.com/barrydeen/wisp/pull/426">PR #426&lt;/a> corregge un crash out-of-memory in &lt;code>computeId&lt;/code> per event con grandi liste di tag. I rilasci v0.16.x avevano aggiunto autocompletamento degli shortcode emoji, miglioramenti alla UI della chat di gruppo e filtraggio degli utenti bloccati in tutti i percorsi delle notifiche.&lt;/p>
&lt;h3 id="mostro-distribuisce-deep-link-tassi-di-cambio-da-nostr-e-una-correzione-ai-pagamenti-duplicati">Mostro distribuisce deep link, tassi di cambio da Nostr e una correzione ai pagamenti duplicati&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;exchange Bitcoin peer-to-peer costruito su Nostr, ha registrato aggiornamenti questa settimana sia nel daemon server sia nel client mobile. Sul lato server, la &lt;a href="https://github.com/MostroP2P/mostro/pull/692">PR #692&lt;/a> impedisce che scritture stale degli ordini causino pagamenti duplicati, un bug che poteva portare a pagare due volte un venditore per lo stesso trade. La &lt;a href="https://github.com/MostroP2P/mostro/pull/693">PR #693&lt;/a> usa aggiornamenti mirati per le scritture di dev_fee invece di riscrivere l&amp;rsquo;intero ordine.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client Flutter, ha distribuito la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.3">v1.2.3&lt;/a> il 3 aprile. Il rilascio gestisce deep link provenienti da diverse istanze Mostro, così gli utenti possono toccare link che instradano verso il server exchange corretto. La &lt;a href="https://github.com/MostroP2P/mobile/pull/498">PR #498&lt;/a> rileva DM di admin e dispute nella pipeline di notifiche in background, e l&amp;rsquo;app ora recupera i tassi di cambio da Nostr con fallback HTTP/cache. La &lt;a href="https://github.com/MostroP2P/mobile/pull/560">PR #560&lt;/a> corregge un bug bloccante nella connessione ai relay che impediva all&amp;rsquo;app di raggiungerli in certe condizioni di rete.&lt;/p>
&lt;h3 id="unfiltered-v1012-aggiunge-hashtag-e-commenti">Unfiltered v1.0.12 aggiunge hashtag e commenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, un client Nostr focalizzato su contenuti image-forward, ha distribuito la &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.12">v1.0.12&lt;/a>. La &lt;a href="https://github.com/dmcarrington/unfiltered/pull/69">PR #69&lt;/a> aggiunge il supporto agli hashtag e la &lt;a href="https://github.com/dmcarrington/unfiltered/pull/72">PR #72&lt;/a> aggiunge la possibilità di scrivere e visualizzare commenti sui post. La &lt;a href="https://github.com/dmcarrington/unfiltered/pull/71">PR #71&lt;/a> corregge problemi di navigazione con più immagini per post.&lt;/p>
&lt;h3 id="primal-android-distribuisce-condivisione-wallet-multi-account-e-auto-reconnect-del-remote-signer">Primal Android distribuisce condivisione wallet multi-account e auto-reconnect del remote signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, il client Nostr Android, ha distribuito un rilascio il 7 aprile. L&amp;rsquo;aggiornamento aggiunge la condivisione wallet multi-account e un menu overflow con cancellazione del wallet nei Dev Tools. Il remote signer ora si riconnette automaticamente quando la connessione cade, e il servizio wallet ha ottenuto una propria logica di auto-reconnect. Le correzioni includono i voti zap dei sondaggi che non appaiono più come Top Zaps, la prevenzione del crash con opzioni di sondaggio vuote, l&amp;rsquo;occultamento del saldo wallet quando non esiste alcun wallet, e il mapping dei tipi WalletException in codici errore nelle risposte NWC.&lt;/p>
&lt;h3 id="titan-v010-lancia-un-browser-nativo-nsite-con-registrazione-dei-nomi-su-bitcoin">Titan v0.1.0 lancia un browser nativo nsite:// con registrazione dei nomi su Bitcoin&lt;/h3>
&lt;p>&lt;a href="https://github.com/btcjt/titan">Titan&lt;/a>, un browser desktop nativo per il web di Nostr, ha distribuito la &lt;a href="https://github.com/btcjt/titan/releases/tag/v0.1.0">v0.1.0&lt;/a> il 7 aprile. Titan risolve gli URL &lt;code>nsite://&lt;/code> cercando nomi leggibili registrati su Bitcoin, interrogando i relay Nostr per gli event di contenuto del sito e renderizzando pagine recuperate da server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. Il risultato è un&amp;rsquo;esperienza di navigazione web senza DNS, senza certificati TLS e senza hosting provider. I nomi vengono registrati tramite una &lt;a href="https://npub1hmq6xuqnplk5lw0h3700cujmx5gymqn5wrn42u6432r6ntzumezqc3marw.nsite.lol/register">web interface&lt;/a> legata a transazioni Bitcoin. Il rilascio iniziale è distribuito come &lt;code>.dmg&lt;/code> per macOS (ARM, con supporto Rosetta 2 per Intel) e include il supporto all&amp;rsquo;ambiente di sviluppo Nix.&lt;/p>
&lt;h3 id="bikel-v150-distribuisce-un-native-foreground-service-per-telefoni-de-googled">Bikel v1.5.0 distribuisce un native foreground service per telefoni de-Googled&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mnpezz/bikel">Bikel&lt;/a>, un tracker ciclistico decentralizzato che trasforma le corse in dati di infrastruttura pubblica usando Nostr, ha distribuito la &lt;a href="https://github.com/Mnpezz/bikel/releases/tag/v1.5.0">v1.5.0&lt;/a> il 4 aprile. Il rilascio migra da Expo TaskManager dipendente da GMS a un foreground service nativo personalizzato, garantendo un tracking affidabile in background su LineageOS, GrapheneOS e altre varianti Android de-Googled. Il Bikel Bot ha ottenuto un&amp;rsquo;architettura dual-pocket con raccolta eCash autonoma via Cashu nutzaps. La v1.4.3 e la v1.4.2 correggono la sincronizzazione del tracking in background per ambienti Android non standard, e l&amp;rsquo;app aggiunge toggle per i punti mappa dei portabici OSM.&lt;/p>
&lt;h3 id="sprout-aggiunge-supporto-a-nip-01-nip-23-e-nip-33">Sprout aggiunge supporto a NIP-01, NIP-23 e NIP-33&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, una piattaforma di comunicazione di Block con relay Nostr integrato, ha distribuito la &lt;a href="https://github.com/block/sprout/releases/tag/desktop/v0.1.0-rc7">desktop/v0.1.0-rc7&lt;/a> il 6 aprile. Questa settimana il team ha aggiunto supporto agli articoli kind &lt;code>30023&lt;/code> di &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content), agli event replaceable parametrizzati di &lt;a href="https://nostrcompass.org/en/topics/nip-33/">NIP-33&lt;/a> con sostituzione indicizzata dal tag &lt;code>d&lt;/code>, e alle text note kind &lt;code>1&lt;/code> e follow list kind &lt;code>3&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>/&lt;a href="https://nostrcompass.org/en/topics/nip-02/">NIP-02&lt;/a>. Il rilascio aggiunge anche un sistema di temi IDE adattivi con 54 temi, rifiniture UX per workflow e cronologia delle esecuzioni degli agenti, e cleanup della sidebar membri.&lt;/p>
&lt;h3 id="mesh-llm-v0560-distribuisce-un-protocollo-di-configurazione-distribuito">mesh-llm v0.56.0 distribuisce un protocollo di configurazione distribuito&lt;/h3>
&lt;p>&lt;a href="https://github.com/michaelneale/mesh-llm">mesh-llm&lt;/a>, un sistema distribuito di inferenza LLM che usa keypair Nostr per l&amp;rsquo;identità dei nodi, ha distribuito la &lt;a href="https://github.com/michaelneale/mesh-llm/releases/tag/v0.56.0">v0.56.0&lt;/a> il 7 aprile. Il rilascio aggiunge un protocollo di configurazione distribuito con semantiche di ownership, quantizzazione asimmetrica della cache KV (chiavi Q8_0 con valori Q4) per ridurre l&amp;rsquo;uso di memoria, storage nel keychain del sistema operativo per i keystore di identità, streaming chat fluido con coda dei messaggi, e correzioni al layout fullscreen e alla suddivisione della cache KV con flash attention.&lt;/p>
&lt;h3 id="nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">Nostr VPN distribuisce supporto exit node e packaging Umbrel&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>, una VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard per i tunnel cifrati, ha distribuito sei rilasci dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.0">v0.3.0&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.6">v0.3.6&lt;/a> questa settimana. Il ciclo v0.3.x aggiunge il supporto agli exit node su Windows e macOS, permettendo ai peer di instradare il traffico Internet attraverso altri nodi della rete. La propagazione di invite e alias ora si sincronizza via Nostr, così gli utenti possono condividere l&amp;rsquo;accesso alla rete senza coordinamento out-of-band. I rilasci aggiungono packaging Umbrel per deployment self-hosted, NAT punch-through usando endpoint pubblici ricordati, cleanup automatico degli exit node stale e una specifica di protocollo pubblicata. Il progetto ha anche stabilizzato la gestione delle route su macOS con default route auto-riparanti e underlay repair, e ha aggiunto un build Android via Tauri. Sono disponibili build per macOS (Apple Silicon e Intel), Linux (AppImage e .deb), Windows e Android.&lt;/p>
&lt;h3 id="nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">Nymchat abbandona Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>, il client chat capace di MLS, ha distribuito 14 rilasci dalla &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/3.56.261">v3.56.261&lt;/a> alla &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.274">v3.58.274&lt;/a>. Il cambiamento più significativo è una svolta di protocollo: la &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.57.261">v3.57.261&lt;/a> aveva aggiunto chat di gruppo Marmot MLS, ma la &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.268">v3.58.268&lt;/a> è tornata a &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> perché il supporto multi-device di Marmot non è ancora completo, e questo causava problemi nella sincronizzazione dello stato delle chat di gruppo tra dispositivi. La v3.58.271 introduce chat di gruppo NIP-17 potenziate con chiavi ephemeral a rotazione per tutti i messaggi, progettate per prevenire timing attack e correlation attack. La settimana ha portato anche un sistema amici con controllo granulare delle impostazioni (&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.262">v3.58.262&lt;/a>), sincronizzazione dei messaggi delle chat di gruppo MLS nelle impostazioni cifrate dell&amp;rsquo;app, e diverse correzioni alla connettività relay.&lt;/p>
&lt;h3 id="nak-v0195-aggiunge-blossom-multi-server-e-pubblicazione-outbox">nak v0.19.5 aggiunge Blossom multi-server e pubblicazione outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.5">v0.19.5&lt;/a>. Il comando &lt;code>blossom&lt;/code> ora accetta più flag &lt;code>--server&lt;/code> per caricare su diversi server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> in una sola chiamata. Un nuovo comando &lt;code>key&lt;/code> espande chiavi parziali aggiungendo zeri a sinistra. Il comando &lt;code>event&lt;/code> guadagna un flag &lt;code>--outbox&lt;/code> per pubblicare event attraverso il modello outbox, e &lt;code>fetch&lt;/code> ora termina con un codice errore quando non viene restituito alcun event.&lt;/p>
&lt;h2 id="in-sviluppo">In Sviluppo&lt;/h2>
&lt;h3 id="white-noise-aggiunge-anteprime-thumbhash-e-il-bridge-per-la-registrazione-push">White Noise aggiunge anteprime thumbhash e il bridge per la registrazione push&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, il messenger privato costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha unito cinque PR. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/549">PR #549&lt;/a> sostituisce le anteprime immagine blurhash con thumbhash, un algoritmo più recente che produce immagini placeholder più nitide con una dimensione payload minore (tipicamente sotto i 30 byte contro i ~50-100 byte di blurhash) preservando il rapporto d&amp;rsquo;aspetto e la distribuzione dei colori dell&amp;rsquo;immagine originale. Blurhash viene mantenuto come fallback per i contenuti più vecchi. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/548">PR #548&lt;/a> aggiorna whitenoise-rs e aggiunge il bridge di registrazione push &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a>, collegando al client il &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">lavoro sulla specifica delle push notification della settimana scorsa&lt;/a>. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/493">PR #493&lt;/a> aggiunge la paginazione basata su cursore per i messaggi chat, sostituendo la strategia di caricamento precedente con un approccio guidato dallo scroll.&lt;/p>
&lt;h3 id="route96-aggiunge-configurazione-dinamica-delle-label-e-cleanup-zero-egress">Route96 aggiunge configurazione dinamica delle label e cleanup zero-egress&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, il media server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> di v0l, ha unito tre PR. La &lt;a href="https://github.com/v0l/route96/pull/80">PR #80&lt;/a> aggiunge la configurazione dinamica del modello di label tramite admin API, permettendo agli operatori di sostituire i modelli di classificazione dei contenuti senza riavviare il server. La &lt;a href="https://github.com/v0l/route96/pull/82">PR #82&lt;/a> aggiunge i campi di configurazione delle label alla admin UI. La &lt;a href="https://github.com/v0l/route96/pull/79">PR #79&lt;/a> aggiunge una policy di cleanup dei file zero-egress che rimuove automaticamente i file mai scaricati, mantenendo bassi i costi di storage per gli operatori.&lt;/p>
&lt;h3 id="snort-distribuisce-hardening-di-sicurezza-e-invoice-di-pagamento-dvm">Snort distribuisce hardening di sicurezza e invoice di pagamento DVM&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, il client web, ha distribuito due rilasci questa settimana insieme a un audit di sicurezza completo. Le correzioni includono verifica delle firme Schnorr, protezione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> contro la falsificazione dei messaggi relay (impedendo ad attaccanti di iniettare richieste di firma attraverso relay compromessi), miglioramenti alla cifratura del PIN e rimozione della fiducia nella delega NIP-26. I miglioramenti prestazionali arrivano dalla verifica Schnorr batch in WASM, route lazy-loaded, traduzioni precompilate ed eliminazione della doppia verifica per event. La &lt;a href="https://github.com/v0l/snort/pull/618">PR #618&lt;/a> aggiunge la visualizzazione dell&amp;rsquo;invoice kind &lt;code>7000&lt;/code> con pagamento richiesto di &lt;a href="https://nostrcompass.org/en/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), così quando un DVM risponde con un requisito di pagamento, Snort renderizza direttamente la Lightning invoice nel feed.&lt;/p>
&lt;h3 id="damus-migliora-la-compattazione-lmdb">Damus migliora la compattazione LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS, ha unito la &lt;a href="https://github.com/damus-io/damus/pull/3719">PR #3719&lt;/a> che aggiunge la compattazione automatica di LMDB su base pianificata, impedendo al database locale di crescere senza limiti nel tempo. La &lt;a href="https://github.com/damus-io/damus/pull/3663">PR #3663&lt;/a> migliora la BlurOverlayView in modo che sembri protettiva invece che rotta.&lt;/p>
&lt;h3 id="captains-log-aggiunge-indicizzazione-dei-tag-e-sync-delle-note">Captain&amp;rsquo;s Log aggiunge indicizzazione dei tag e sync delle note&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/captains-log">Captain&amp;rsquo;s Log&lt;/a> (Comet), lo strumento di scrittura long-form nativo Nostr di Nodetec, ha unito quattro PR questa settimana. La &lt;a href="https://github.com/nodetec/captains-log/pull/156">PR #156&lt;/a> aggiunge indicizzazione dei tag e supporto alla sincronizzazione tra note, la &lt;a href="https://github.com/nodetec/captains-log/pull/157">PR #157&lt;/a> rifattorizza il sync delle note e la gestione dei tag, e la &lt;a href="https://github.com/nodetec/captains-log/pull/159">PR #159&lt;/a> corregge la sincronizzazione delle note cestinate in modo che gli elementi eliminati restino eliminati su tutti i dispositivi.&lt;/p>
&lt;h3 id="relatr-v02x-ridisegna-il-sistema-plugin-con-un-marketplace-di-validator-nativo-nostr">Relatr v0.2.x ridisegna il sistema plugin con un marketplace di validator nativo Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>, un motore &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> che calcola ranking di fiducia dalla distanza nel grafo sociale e da validator configurabili, ha distribuito la famiglia v0.2.x con un redesign completo del sistema plugin. I validator sono ora scritti in Elo, un linguaggio di espressioni funzionali portabile forkato per supportare capacità orchestrate dall&amp;rsquo;host in più passi (query Nostr, lookup del grafo sociale, risoluzione NIP-05). I plugin vengono pubblicati come event Nostr kind &lt;code>765&lt;/code>, rendendo la distribuzione nativa alla rete relay. Un nuovo &lt;a href="https://relatr.net">plugin marketplace&lt;/a> permette agli operatori di scoprire, installare e pesare i validator dal browser, con una CLI (&lt;code>relo&lt;/code>) per authoring e pubblicazione locale. L&amp;rsquo;architettura è sandboxed: i plugin possono invocare solo le capacità che l&amp;rsquo;host fornisce esplicitamente, quindi un validator malevolo non può uscire dal proprio scope definito. Le istanze Relatr ora possono essere gestite dal sito web, con visibilità completa su quali plugin compongono l&amp;rsquo;algoritmo di scoring e sui pesi individuali di ciascuno.&lt;/p>
&lt;h3 id="shopstr-migliora-navigazione-mobile-e-controllo-accessi">Shopstr migliora navigazione mobile e controllo accessi&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace nativo Nostr per comprare e vendere con Bitcoin, ha spinto 158 commit questa settimana nella sua app principale e nel progetto companion &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>. Le correzioni includono miglioramenti al layout mobile delle community, comportamento di chiusura del menu durante la navigazione e auto-chiusura dei dropdown. Le route protette non possono più essere raggiunte via URL diretto senza login, e la logica di matching degli slug ora gestisce correttamente più corrispondenze esatte.&lt;/p>
&lt;h3 id="pollerama-aggiunge-notifiche-ricerca-film-e-nuova-rating-ui">Pollerama aggiunge notifiche, ricerca film e nuova rating UI&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>, un&amp;rsquo;app di polling, survey e rating sociale costruita su Nostr, ha aggiunto notifiche dei thread, una funzione di ricerca film e un overhaul della rating UI. Il rilascio corregge anche problemi di caricamento del feed e aggiorna le versioni delle dipendenze.&lt;/p>
&lt;h3 id="purser-costruisce-un-payment-daemon-nativo-nostr-con-cifratura-marmot">Purser costruisce un payment daemon nativo Nostr con cifratura Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/EthnTuttle/purser">Purser&lt;/a>, un payment daemon nativo Nostr progettato come sostituto di Zaprite, ha unito nove PR questa settimana che costruiscono la sua architettura centrale. Il progetto usa MLS di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> tramite MDK per la messaggistica cifrata merchant-customer, con Strike e Square come payment provider. Questa settimana sono arrivati caricamento di configurazione e catalogo, validazione dello schema dei messaggi, il layer di comunicazione MDK, le implementazioni dei provider Strike e Square, un motore di polling, anti-spam rate limiting, persistenza dei pagamenti pending e la pipeline di elaborazione degli ordini. Tutti i 99 test ora esercitano operazioni MLS reali di mdk-core dopo che il team ha rimosso il mock MLS in favore della cifratura reale in modalità locale.&lt;/p>
&lt;h3 id="vector-rifattorizza-gli-allegati-dm-e-aggiunge-la-modifica-del-profilo">Vector rifattorizza gli allegati DM e aggiunge la modifica del profilo&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger Nostr focalizzato sulla privacy costruito con Tauri, ha unito la &lt;a href="https://github.com/VectorPrivacy/Vector/pull/55">PR #55&lt;/a> che rifattorizza il frontend. La decrittazione e il salvataggio degli allegati DM sono stati spostati nella libreria vector-core, e l&amp;rsquo;app ora supporta la modifica del profilo. Il flag di cancellazione dell&amp;rsquo;upload è collegato correttamente attraverso TauriSendCallback, e i callback inutilizzati per l&amp;rsquo;anteprima degli allegati sono stati ripuliti.&lt;/p>
&lt;h2 id="lavoro-su-protocollo-e-specifiche">Lavoro su Protocollo e Specifiche&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges): i Profile Badges passano al kind 10008, i Badge Sets al kind 30008&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Migra i Profile Badges dal kind &lt;code>30008&lt;/code> al kind &lt;code>10008&lt;/code> (un event replaceable, uno per pubkey) e introduce il kind &lt;code>30008&lt;/code> per i Badge Sets. In precedenza i Profile Badges usavano lo stesso kind (&lt;code>30008&lt;/code>) delle definizioni dei badge, rendendoli event replaceable parametrizzati indicizzati da un tag &lt;code>d&lt;/code>. Il nuovo kind &lt;code>10008&lt;/code> è un semplice event replaceable: uno per pubkey, nessun tag &lt;code>d&lt;/code> necessario. I client interrogano un singolo event replaceable per utente invece di scandire event replaceable parametrizzati. Amethyst v1.07.3 distribuisce già questa migrazione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff): aggiungere follow list relative a git&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2130">PR #2130&lt;/a>): Aggiunge convenzioni di follow list per il tracciamento di repository e issue NIP-34. Gli utenti pubblicano follow set kind &lt;code>30000&lt;/code> con tag &lt;code>d&lt;/code> come &lt;code>git-repos&lt;/code> o &lt;code>git-issues&lt;/code> contenenti riferimenti tag &lt;code>a&lt;/code> ai repository (kind &lt;code>30617&lt;/code>) che vogliono seguire. I client possono sottoscrivere questi follow set per mostrare l&amp;rsquo;attività dei repository nel feed di un utente, in modo simile a come le contact list kind &lt;code>3&lt;/code> funzionano per le pubkey.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR aperte e discussioni:&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>): Estende il NIP-100 originale (implementato da 0xChat) con tre cambiamenti: migrazione alla cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> avvolta in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per eliminare i metadata leak, un workflow WebRTC specificato per setup di chiamate vocali e video (offer, answer, ICE candidates), e un modello di mesh group call in cui ogni peer stabilisce una connessione WebRTC diretta con tutti gli altri peer. La specifica non è backwards-compatible con NIP-100. Amethyst ci sta già lavorando, con una suite di test per la call state machine (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>) e la gestione delle call offer stale (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>) arrivate questa settimana.&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 convenzioni per la threshold signing &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) su Nostr. FROST permette a un gruppo di signer di controllare collettivamente un&amp;rsquo;identità Nostr dove qualsiasi insieme t-of-n di membri può firmare event senza ricostruire la chiave privata completa. Il NIP definisce come coordinare i round di firma, distribuire key share e pubblicare event firmati in threshold, costruendo sul lavoro del signer Igloo dal &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#igloo-signer-11">progetto 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>): Definisce un protocollo &lt;code>postMessage&lt;/code> per applicazioni web sandboxed (&amp;ldquo;napplets&amp;rdquo;) eseguite in iframe che comunicano con un&amp;rsquo;applicazione host (&amp;ldquo;shell&amp;rdquo;). La shell fornisce alla napplet firma Nostr, accesso relay e contesto utente tramite una structured message API, mentre la sandbox iframe impedisce l&amp;rsquo;accesso diretto alle chiavi. Questo estende il modello di hosting di siti web statici di &lt;a href="https://nostrcompass.org/en/topics/nip-5a/">NIP-5A&lt;/a> verso applicazioni interattive in grado di leggere e scrivere event Nostr. Il NIP è in sviluppo attivo con un&amp;rsquo;implementazione runtime funzionante.&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>): Rinominato dalla precedente proposta NIP-A5. Definisce convenzioni per pubblicare e scoprire programmi WebAssembly su Nostr. I binari WASM vengono archiviati come event Nostr, e i client possono scaricarli ed eseguirli in un runtime sandboxed. Una &lt;a href="https://nprogram.netlify.app/">demo app&lt;/a> mostra scrolls in esecuzione nel browser, con programmi di esempio pubblicati come event Nostr che qualsiasi client può recuperare ed eseguire.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions): chiarimenti&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>): Stringe il linguaggio della specifica intorno a chiavi multiple e relay multipli per provider di servizi, chiarendo come i client dovrebbero gestire assertion provenienti da provider che operano attraverso più pubkey o endpoint relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-24/">NIP-24&lt;/a> (Extra Metadata Fields): &lt;code>published_at&lt;/code> per event replaceable&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2300">PR #2300&lt;/a>): Generalizza il tag &lt;code>published_at&lt;/code> da &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content) a tutti gli event replaceable e addressable. Il tag è solo display-only: se &lt;code>published_at&lt;/code> è uguale a &lt;code>created_at&lt;/code>, i client mostrano l&amp;rsquo;event come &amp;ldquo;created&amp;rdquo; in quel momento; se differiscono (perché l&amp;rsquo;event è stato aggiornato), i client possono mostrare &amp;ldquo;updated&amp;rdquo; invece. Questo permette ai profili kind &lt;code>0&lt;/code> di mostrare date &amp;ldquo;joined at&amp;rdquo; e agli altri event replaceable di preservare il timestamp di pubblicazione originale attraverso gli aggiornamenti. Una proposta complementare &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2302">PR #2302&lt;/a>) aggiunge lo stesso tag agli event di lista.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap): kind di gift wrap ephemeral&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>): Aggiunge il kind &lt;code>21059&lt;/code> come controparte ephemeral del gift wrap esistente kind &lt;code>1059&lt;/code>. Gli event ephemeral (kind &lt;code>20000&lt;/code>-&lt;code>29999&lt;/code>) seguono la semantica di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>: i relay non sono tenuti a memorizzarli e possono scartarli dopo la consegna. Questo permette alle applicazioni di inviare messaggi gift-wrapped che scompaiono dai relay dopo la consegna, riducendo i requisiti di storage per la messaggistica ad alto volume mantenendo lo stesso modello di cifratura a tre layer dei normali DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="opensats-annuncia-la-sedicesima-ondata-di-grant-nostr">OpenSats annuncia la sedicesima ondata di grant Nostr&lt;/h3>
&lt;p>&lt;a href="https://opensats.org">OpenSats&lt;/a> ha annunciato la sua &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">sedicesima ondata di grant Nostr&lt;/a> l'8 aprile, finanziando quattro grant alla prima assegnazione e un rinnovo. &lt;a href="https://github.com/vitorpamplona/amethyst/tree/main/desktopApp">Amethyst Desktop&lt;/a> riceve fondi per permettere al contributor Robert Nagy di costruire un&amp;rsquo;app desktop standalone sopra i moduli &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> e Commons, portando il set di funzionalità del client Android a interfacce guidate dal mouse con connessioni relay persistenti. &lt;a href="https://github.com/nogringo/nostr-mail">Nostr Mail&lt;/a> riceve fondi per costruire un sistema email completo su Nostr usando event kind &lt;code>1301&lt;/code> avvolti in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, con un client Flutter e server bridge SMTP per compatibilità con Gmail/Outlook. &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> riceve fondi per un client di gruppo Kotlin Multiplatform basato su relay &lt;a href="https://nostrcompass.org/en/topics/nip-29/">NIP-29&lt;/a> con messaggistica di gruppo, moderazione e thread in stile Discord. &lt;a href="https://github.com/tami1A84/null--nostr">Nurunuru&lt;/a> riceve fondi per costruire una versione iOS nativa del client Nostr orientato al pubblico giapponese modellata sull&amp;rsquo;interfaccia familiare di LINE, con login biometrico basato su passkey per l&amp;rsquo;onboarding. HAMSTR ha ricevuto un rinnovo del grant (finanziato la prima volta nell&amp;rsquo;&lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants#hamstr">undicesima ondata&lt;/a>).&lt;/p>
&lt;h2 id="nip-deep-dive-nip-17-private-direct-messages">NIP Deep Dive: 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> definisce lo standard attuale per i messaggi diretti privati su Nostr. Sostituisce il vecchio schema &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages), che perdeva metadati (mittente, destinatario e timestamp erano tutti visibili sui relay) e usava una costruzione crittografica più debole. NIP-17 combina &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) per la cifratura con &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) per la protezione dei metadati, creando un sistema a tre layer in cui i relay non possono vedere chi sta parlando con chi.&lt;/p>
&lt;p>Il protocollo usa tre event kind annidati l&amp;rsquo;uno dentro l&amp;rsquo;altro. Il layer più interno è il messaggio vero e proprio, un event kind &lt;code>14&lt;/code> non firmato:&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>L&amp;rsquo;event kind &lt;code>14&lt;/code> è deliberatamente non firmato (&lt;code>sig&lt;/code> vuoto). La specifica descrive questo aspetto come una forma di deniability, ma nella pratica la protezione è limitata. Il seal kind &lt;code>13&lt;/code> che avvolge il rumor è firmato con la chiave reale del mittente. Un destinatario può mostrare il seal firmato a una terza parte, provando che il mittente ha comunicato con lui, anche senza rivelare il contenuto del messaggio. Con prove a conoscenza zero, un destinatario può persino dimostrare il contenuto esatto del messaggio senza rivelare la propria chiave privata. Il rumor non firmato è come una lettera non firmata in una busta firmata: la firma sulla busta collega il mittente al contenuto. La vera deniability richiederebbe autenticazione simmetrica (come gli HMAC di Signal), incompatibile con il modello relay decentralizzato di Nostr dove i messaggi devono essere self-authenticating. I veri punti di forza di NIP-17 sono la privacy dei metadati e la segretezza del contenuto, non la deniability.&lt;/p>
&lt;p>Questo messaggio non firmato viene avvolto in un seal kind &lt;code>13&lt;/code>, firmato dal mittente effettivo e cifrato con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per il destinatario:&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>Il seal non ha tag, quindi anche se venisse decrittato non rivelerebbe il destinatario. Il seal è firmato con la chiave reale del mittente, il che permette al destinatario di autenticare il messaggio controllando che il &lt;code>pubkey&lt;/code> del seal corrisponda al &lt;code>pubkey&lt;/code> del kind &lt;code>14&lt;/code> interno.&lt;/p>
&lt;p>Il seal viene poi avvolto in un gift wrap kind &lt;code>1059&lt;/code>, firmato con una chiave casuale usa-e-getta e indirizzato al destinatario:&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>Il &lt;code>pubkey&lt;/code> del gift wrap è una chiave casuale generata solo per questo messaggio, e il &lt;code>created_at&lt;/code> è randomizzato fino a due giorni nel passato. Questo è il layer più esterno che i relay vedono davvero: un messaggio da una pubkey sconosciuta indirizzato al destinatario, con un timestamp che non riflette quando il messaggio è stato effettivamente inviato. Il timestamp randomizzato protegge dall&amp;rsquo;analisi retrospettiva degli event archiviati, ma un avversario collegato attivamente ai relay può comunque osservare quando il gift wrap è apparso per la prima volta, quindi questa difesa è limitata agli osservatori passivi che interrogano i dati del relay in seguito. Poiché la pubkey è casuale e il timestamp è fittizio, i relay non possono determinare il mittente reale. Per leggere il messaggio, il destinatario decripta il gift wrap usando la propria chiave e la pubkey casuale, trova il seal all&amp;rsquo;interno, decripta il seal usando la propria chiave e la pubkey del mittente ricavata dal seal, e trova all&amp;rsquo;interno il messaggio kind &lt;code>14&lt;/code>.&lt;/p>
&lt;p>NIP-17 non fornisce forward secrecy. Tutti i messaggi sono cifrati usando la keypair Nostr statica (tramite la derivazione delle chiavi di NIP-44 dalle chiavi del mittente e del destinatario). Se una chiave privata viene compromessa, ogni messaggio passato e futuro cifrato verso quella chiave può essere decrittato. È un tradeoff deliberato: poiché la cifratura dipende solo dall&amp;rsquo;nsec, un utente che fa il backup del proprio nsec può recuperare l&amp;rsquo;intera cronologia dei messaggi da qualsiasi relay che conservi ancora i gift wrap. Protocolli come MLS (usato da &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>) forniscono forward secrecy attraverso la rotazione del materiale di chiave, ma al costo di richiedere sincronizzazione dello stato e rendere impossibile il recupero storico dei messaggi dopo la rotazione delle chiavi.&lt;/p>
&lt;p>NIP-17 definisce anche il kind &lt;code>15&lt;/code> per i messaggi file cifrati, che aggiunge i tag &lt;code>file-type&lt;/code>, &lt;code>encryption-algorithm&lt;/code>, &lt;code>decryption-key&lt;/code> e &lt;code>decryption-nonce&lt;/code> così il destinatario può decrittare un file allegato cifrato con AES-GCM prima dell&amp;rsquo;upload a un server Blossom. Il kind &lt;code>10050&lt;/code> viene usato per pubblicare la relay list DM preferita dell&amp;rsquo;utente, così i mittenti sanno dove consegnare i gift wrap. L&amp;rsquo;insieme di tag &lt;code>pubkey&lt;/code> + &lt;code>p&lt;/code> in un messaggio definisce una chat room; aggiungere o rimuovere un partecipante crea una nuova stanza con cronologia pulita.&lt;/p>
&lt;p>Le implementazioni coprono la maggior parte dei client principali. &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> usa NIP-17 per tutta la messaggistica uno-a-uno. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> usa NIP-17 per i suoi DM 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> e &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> implementano tutti NIP-17 come protocollo DM principale. La specifica supporta anche i messaggi a scomparsa impostando un tag &lt;code>expiration&lt;/code> nel gift wrap.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-46-nostr-remote-signing">NIP Deep Dive: 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> definisce un protocollo per separare la chiave privata dell&amp;rsquo;utente dall&amp;rsquo;applicazione client. Invece di incollare un nsec in una web app, l&amp;rsquo;utente esegue un remote signer (chiamato anche &amp;ldquo;bunker&amp;rdquo;) che custodisce la chiave privata e risponde alle richieste di firma via relay Nostr. Il client non vede mai la chiave privata. Questo riduce la superficie d&amp;rsquo;attacco: un client compromesso può richiedere firme ma non può estrarre la chiave stessa.&lt;/p>
&lt;p>Il protocollo usa il kind &lt;code>24133&lt;/code> sia per le richieste sia per le risposte, cifrate con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Un client genera una &lt;code>client-keypair&lt;/code> usa-e-getta per la sessione e comunica con il remote signer attraverso messaggi cifrati NIP-44 taggati con le reciproche pubkey. Ecco una richiesta di firma da un client a un remote signer:&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>Il &lt;code>content&lt;/code> cifrato contiene una struttura in stile 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>Il remote signer decripta la richiesta, la presenta all&amp;rsquo;utente per l&amp;rsquo;approvazione (o la approva automaticamente in base ai permessi configurati), firma l&amp;rsquo;event con la chiave privata dell&amp;rsquo;utente e restituisce l&amp;rsquo;event firmato in una risposta:&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>Le connessioni possono essere avviate da entrambi i lati. Un remote signer fornisce un URL &lt;code>bunker://&lt;/code> contenente la sua pubkey e le informazioni relay. Un client fornisce un URL &lt;code>nostrconnect://&lt;/code> con la propria pubkey client, i relay e un secret per la verifica della connessione. Il parametro &lt;code>secret&lt;/code> previene il connection spoofing: solo la parte che ha ricevuto l&amp;rsquo;URL fuori banda può completare l&amp;rsquo;handshake.&lt;/p>
&lt;p>Sono definiti otto metodi: &lt;code>connect&lt;/code> per stabilire la sessione, &lt;code>sign_event&lt;/code> per firmare event, &lt;code>get_public_key&lt;/code> per ottenere la pubkey dell&amp;rsquo;utente, &lt;code>ping&lt;/code> per keepalive, &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> per la cifratura legacy, &lt;code>nip44_encrypt&lt;/code>/&lt;code>nip44_decrypt&lt;/code> per la cifratura corrente, e &lt;code>switch_relays&lt;/code> per la gestione dei relay. La migrazione relay è gestita dal remote signer, che può spostare nel tempo la connessione verso nuovi relay senza rompere la sessione.&lt;/p>
&lt;p>I client richiedono capacità specifiche al momento della connessione attraverso un sistema di permessi. Una stringa di permessi come &lt;code>nip44_encrypt,sign_event:1,sign_event:14&lt;/code> richiede accesso alla cifratura NIP-44 e accesso alla firma per i soli event kind &lt;code>1&lt;/code> e kind &lt;code>14&lt;/code>. Il remote signer può accettare, rifiutare o modificare questi permessi. Questo significa che un client web per leggere e pubblicare note potrebbe ricevere solo il permesso &lt;code>sign_event:1&lt;/code>, mentre un client DM potrebbe ricevere anche i permessi &lt;code>sign_event:14&lt;/code> e &lt;code>nip44_encrypt&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> implementa NIP-46 su Android, e la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> di questa settimana aggiunge chiavi di firma per connessione per isolare i client tra loro. &lt;a href="https://github.com/nicktee/nsecapp">nsec.app&lt;/a> (precedentemente Nostr Connect) fornisce un bunker web-based. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> include &lt;code>BunkerSigner&lt;/code> per i client JavaScript, e &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">la PR #530 della settimana scorsa&lt;/a> ha aggiunto &lt;code>skipSwitchRelays&lt;/code> per la gestione manuale dei relay. Il protocollo supporta anche auth challenge: quando un remote signer richiede autenticazione aggiuntiva (password, biometria o token hardware), risponde con un &lt;code>auth_url&lt;/code> che il client apre in un browser perché l&amp;rsquo;utente completi il flusso.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Scrivici in DM su Nostr o vieni a trovarci su &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/it/newsletters/2026-04-01-newsletter/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">v1.07.0&lt;/a> con note fissate, gestione relay tramite &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A&lt;/a> (Siti Web Statici) viene unito nel repository NIPs, definendo come ospitare siti web sotto keypair Nostr usando lo storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#flotilla-v170-aggiunge-stanze-vocali-e-login-email">v1.7.0&lt;/a> con stanze vocali, login email/password e DM con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corregge il relay churn nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lancia la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nospeak-si-lancia-come-messenger-privato-10">1.0.0&lt;/a> come messenger cifrato senza registrazione. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">adotta Marmot&lt;/a> per chat di gruppo cifrate MLS con fallback NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con liste calendario private e import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amber-v502-fino-a-v504">recovery mnemonico e whitelisting relay auth NIP-42&lt;/a>, e la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">spec Marmot&lt;/a> sposta i KeyPackage su event indirizzabili mentre stringe il formato delle push notification MIP-05.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">v1.07.0&lt;/a> con note fissate, gestione relay tramite &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A&lt;/a> (Siti Web Statici) viene unito nel repository NIPs, definendo come ospitare siti web sotto keypair Nostr usando lo storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#flotilla-v170-aggiunge-stanze-vocali-e-login-email">v1.7.0&lt;/a> con stanze vocali, login email/password e DM con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corregge il relay churn nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lancia la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nospeak-si-lancia-come-messenger-privato-10">1.0.0&lt;/a> come messenger cifrato senza registrazione. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">adotta Marmot&lt;/a> per chat di gruppo cifrate MLS con fallback NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con liste calendario private e import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amber-v502-fino-a-v504">recovery mnemonico e whitelisting relay auth NIP-42&lt;/a>, e la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">spec Marmot&lt;/a> sposta i KeyPackage su event indirizzabili mentre stringe il formato delle push notification MIP-05.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">Amethyst distribuisce note fissate, gestione relay e Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito sei rilasci in tre giorni, dalla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a> alla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>. Il set di funzionalità principale copre sei superfici di protocollo: note fissate, una schermata feed dedicata ai sondaggi, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) per richiedere la cancellazione completa degli event dai relay, &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> (Relay Management API) dall&amp;rsquo;interno del client, valutazioni &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring) nella schermata informazioni relay, e visualizzazione delle informazioni membri &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests).&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> definisce un&amp;rsquo;interfaccia JSON-RPC per gli operatori relay, permettendo ai client di inviare comandi amministrativi come ban di pubkey, allow di pubkey e lista utenti bannati tramite un&amp;rsquo;API standardizzata. Amethyst ora espone tutto questo direttamente nella sua UI di gestione relay, così gli utenti che eseguono i propri relay possono amministrarli dallo stesso client che usano per pubblicare. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a> sostituisce il vecchio dialog di input hex per le pubkey da bannare o consentire con un dialog di ricerca utenti interattivo.&lt;/p>
&lt;p>La v1.07.2 ha aggiunto upload dalla tastiera GIF e ha corretto una regressione nella firma in cui le risposte di rifiuto di Amber venivano interpretate male perché le versioni più vecchie di Amber restituivano una stringa vuota per il campo &lt;code>rejected&lt;/code> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>). La v1.07.5 corregge un crash nel caricamento delle immagini. I rilasci &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a> all&amp;rsquo;inizio della settimana hanno aggiunto un selettore del tipo di sondaggio per scelte singole o multiple, drag-to-seek sulle barre di avanzamento video e miglioramenti alla pubblicazione anonima.&lt;/p>
&lt;h3 id="nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A viene unito, portando i siti web statici su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> (Siti Web Statici) è stato unito tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>, definendo come ospitare siti web statici sotto keypair Nostr. La specifica usa due kind di event: kind &lt;code>15128&lt;/code> per un sito root, uno per pubkey, e kind &lt;code>35128&lt;/code> per siti con nome identificati da un tag &lt;code>d&lt;/code>. Ogni manifesto mappa i percorsi URL agli hash SHA256, con tag &lt;code>server&lt;/code> opzionali che puntano agli host di storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> dove vivono i file effettivi.&lt;/p>
&lt;p>Il modello di hosting funziona così: l&amp;rsquo;autore di un sito costruisce un sito statico, carica i file su uno o più server Blossom, poi pubblica un event manifesto firmato che mappa i percorsi agli hash del contenuto. Un server host riceve richieste web, risolve la pubkey dell&amp;rsquo;autore dal sottodominio, recupera il manifesto dalla relay list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> dell&amp;rsquo;autore, e serve i file scaricando i blob corrispondenti da Blossom. Il sito rimane sotto il controllo dell&amp;rsquo;autore perché solo quella chiave può firmare un manifesto aggiornato. Il server host è sostituibile perché qualsiasi server che comprende NIP-5A può servire lo stesso sito dallo stesso manifesto.&lt;/p>
&lt;p>La specifica si basa su infrastrutture già esistenti. &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, l&amp;rsquo;implementazione host di riferimento NIP-5A costruita da lez, e &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, la UI di gestione di hzrd149, erano già in esecuzione prima del merge del NIP. Il merge rende ufficiali i kind di event e le regole di risoluzione URL, dando alle seconde e terze implementazioni un obiettivo stabile.&lt;/p>
&lt;h3 id="white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">White Noise corregge il relay churn e amplia i controlli client&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, il messenger privato costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a> il 25 marzo. Il lavoro principale riguarda la stabilità dei relay. Il login non aspetta più che ogni pubblicazione della relay-list termini prima di proseguire, perché la pubblicazione delle relay-list ora usa logica di quorum e ritenta il resto in background. Fetch e publish one-off usano sessioni relay effimere e delimitate invece di restare nel pool long-lived, le sessioni ripristinate recuperano il loro percorso di refresh di gruppo dopo l&amp;rsquo;avvio, e l&amp;rsquo;app ora espone diagnostica relay e ispezione dello stato relay tramite &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>.&lt;/p>
&lt;p>Lo stesso rilascio cambia anche il comportamento delle conversazioni. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/468">PR #468&lt;/a> aggiunge threading delle risposte NIP-C7 con tag &lt;code>q&lt;/code> e riferimenti &lt;code>nostr:nevent&lt;/code>, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/471">PR #471&lt;/a> e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/512">PR #512&lt;/a> mantengono i messaggi cancellati visibili come placeholder cancellati invece di rimuoverli silenziosamente, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/478">PR #478&lt;/a> aggiunge un flusso di bug report in-app usando report anonimi &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/486">PR #486&lt;/a> aggiunge una chat di supporto direttamente nel client. Nella stessa finestra sono arrivati anche controlli sui messaggi rivolti all&amp;rsquo;utente: la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/532">PR #532&lt;/a> archivia le chat, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/541">PR #541&lt;/a> aggiunge mute e unmute con durate configurabili, e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/535">PR #535&lt;/a> aggiunge impostazioni delle notifiche. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/539">PR #539&lt;/a> prepara il lavoro di registrazione push, collegando la registrazione APNs su iOS e il rilevamento Play Services su Android in modo che la registrazione possa essere costruita sopra questo. Sul lato backend, il &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit) ha aggiunto primitive push notification MIP-05 e un notification request builder (&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>), mentre &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> ha aggiunto la persistenza della registrazione push notification (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/688">PR #688&lt;/a>), correzioni alla cancellazione dei task in background (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/696">PR #696&lt;/a>), e recovery dei key package all&amp;rsquo;avvio (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/693">PR #693&lt;/a>).&lt;/p>
&lt;h3 id="nostr-vpn-raggiunge-la-v030-con-roster-sync-e-invite-v2">Nostr VPN raggiunge la v0.3.0 con roster sync e invite v2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">Come da copertura del lancio della settimana scorsa&lt;/a>, &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, la VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard per tunnel cifrati, ha continuato il suo ritmo di rilascio rapido, distribuendo versioni fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.3">v0.3.3&lt;/a>. Il salto di versione porta due cambi incompatibili: il formato invite passa alla v2 (la 0.3.0 può ancora importare invite v1, ma le build più vecchie non possono importare invite v2), e il roster sync firmato dall&amp;rsquo;admin è stato aggiunto al protocollo di segnalazione. I peer con versioni miste possono ancora connettersi a livello mesh, ma i peer più vecchi non partecipano alla sincronizzazione del roster.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta del roster sync avvia il passaggio verso una rete gestita. Un nodo admin può ora inviare cambiamenti di appartenenza a tutti i peer, così aggiungere o rimuovere un dispositivo dalla mesh non richiede che ogni peer aggiorni manualmente la propria configurazione. I rilasci v0.2.x nella stessa settimana hanno affrontato problemi specifici di deployment: dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.22">v0.2.22&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.28">v0.2.28&lt;/a> hanno corretto la gestione del servizio Windows, aggiunto script di build Android, e perfezionato il flusso di pairing LAN.&lt;/p>
&lt;h3 id="nospeak-si-lancia-come-messenger-privato-10">nospeak si lancia come messenger privato 1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, un messenger privato costruito su Nostr, ha distribuito il rilascio &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.0.0">1.0.0&lt;/a> il 27 marzo. Il progetto include conversazioni uno-a-uno e di gruppo, gestione contatti, e un&amp;rsquo;architettura self-hostable. Le chat uno-a-uno usano &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), che combina &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) per nascondere il mittente ai relay. Per i media, i file sono cifrati lato client con AES-256-GCM prima dell&amp;rsquo;upload sui server Blossom. Il rilascio viene distribuito anche come immagine container per il self-hosting.&lt;/p>
&lt;h3 id="flotilla-v170-aggiunge-stanze-vocali-e-login-email">Flotilla v1.7.0 aggiunge stanze vocali e login email&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, il client in stile Discord di hodlbod basato su &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (Relay-based Groups) e sul modello “relay come gruppi”, ha distribuito la &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.0">v1.7.0&lt;/a> e la &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.1">v1.7.1&lt;/a> il 30 e 31 marzo. La funzionalità principale sono le stanze vocali, contribuite da mplorentz. Gli utenti possono ora unirsi a chiamate vocali all&amp;rsquo;interno dei canali di gruppo, con un dialog di ingresso (&lt;a href="https://gitea.coracle.social/coracle/flotilla/pulls/109">PR #109&lt;/a>) che permette di selezionare il dispositivo di input audio e scegliere se entrare nella chiamata vocale o solo visualizzare la chat testuale. Il dialog risolve un problema UX della precedente iterazione: entrare in una stanza con voce attiva accendeva prima il microfono anche quando l&amp;rsquo;utente voleva solo leggere i messaggi o controllare le impostazioni della stanza.&lt;/p>
&lt;p>Lo stesso rilascio aggiunge il login email e password come alternativa all&amp;rsquo;autenticazione basata su chiave Nostr, proof-of-work sui DM, editing dei DM, onboarding e impostazioni relay ridisegnati, rilevamento del supporto Blossom tramite &lt;code>supported_nips&lt;/code>, badge notifiche migliorati, fallback push notification su Android, e correzioni agli upload file su Android. La v1.7.1 segue con una correzione per il fallback di registrazione pomade quando si usa un signer offline.&lt;/p>
&lt;p>Hodlbod sta anche costruendo &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, un hosting manager e dashboard per relay zooid, che ha registrato 40 commit questa settimana nella fase iniziale di sviluppo.&lt;/p>
&lt;h3 id="nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">Nymchat distribuisce chat di gruppo basate su Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> (noto anche come NYM, Nostr Ynstant Messenger), il client di chat effimero collegato a Bitchat, ha annunciato che tutte le nuove chat di gruppo ora usano il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per messaggistica cifrata MLS. L&amp;rsquo;integrazione usa kind &lt;code>443&lt;/code>, &lt;code>444&lt;/code>, e &lt;code>445&lt;/code> per key package, welcome message e group message rispettivamente, fornendo forward secrecy, post-compromise security e zero metadata leakage. Se un destinatario non può usare MLS, Nymchat ricade sul suo precedente percorso di chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), che è comunque cifrato end-to-end ma privo delle proprietà a ratchet-tree di MLS.&lt;/p>
&lt;p>Le serie v3.55 e v3.56 di questa settimana si sono concentrate sui casi limite delle chat di gruppo: caricamento su nuovi dispositivi, comportamento di uscita, instradamento delle notifiche, e conteggi dei badge non letti. Lo stesso ciclo ha anche corretto una vulnerabilità XSS dovuta a HTML non escapato e ha aggiunto il blocco di parole chiave e frasi esteso ai nickname utente. Questo rende Nymchat un altro client Marmot che si unisce a &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">White Noise&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#openchat-v024-fino-a-v030">OpenChat&lt;/a>, ampliando l&amp;rsquo;insieme di app che possono scambiare messaggi di gruppo cifrati MLS sullo stesso protocollo.&lt;/p>
&lt;h2 id="rilasci">Rilasci&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>, l&amp;rsquo;app calendario decentralizzata costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), ha raggiunto la &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.0.0">v1.0.0&lt;/a> il 29 marzo. Il rilascio aggiunge liste calendario private usando event Nostr cifrati (kind &lt;code>32123&lt;/code>) con auto-cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), così gli utenti possono organizzare gli eventi in collezioni private senza esporre il raggruppamento ai relay. Lo stesso rilascio aggiunge la gestione degli intent ICS per importare dati calendario da altre applicazioni e richieste di invito per condividere eventi tra utenti.&lt;/p>
&lt;h3 id="amber-v502-fino-a-v504">Amber v5.0.2 fino a v5.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito tre point release: &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>, e &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.4">v5.0.4&lt;/a>. L&amp;rsquo;aggiunta più visibile è il login tramite frase mnemonica di recovery (&lt;a href="https://github.com/greenart7c3/Amber/pull/358">PR #358&lt;/a>), che permette agli utenti di ripristinare il proprio signer da una seed phrase BIP39 invece di richiedere la stringa nsec o ncryptsec grezza. La &lt;a href="https://github.com/greenart7c3/Amber/pull/357">PR #357&lt;/a> aggiunge una whitelist relay auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, così gli utenti possono limitare quali relay sono autorizzati a richiedere l&amp;rsquo;autenticazione client. La &lt;a href="https://github.com/greenart7c3/Amber/pull/353">PR #353&lt;/a> aggiunge la selezione dell’ambito di cifratura per i permessi di decrypt, permettendo agli utenti di concedere accesso di decrypt solo NIP-04 o solo NIP-44 invece di un permesso generale. La v5.0.4 corregge un bug in cui il rifiuto non rispettava i permessi scoped di encrypt e decrypt e migliora le prestazioni quando arrivano più richieste 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>, il signer cross-platform, ha distribuito la &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.4.0">v0.4.0&lt;/a> il 26 marzo. Il rilascio aggiunge le modalità di autorizzazione Full e Selective nelle Impostazioni e corregge diversi problemi di scansione QR. I commit successivi &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>, e &lt;a href="https://github.com/ZharlieW/Aegis/commit/e4f40b6f1f48c2dae1bb5e4246df26c26dba419e">e4f40b6&lt;/a> continuano lo stesso lavoro con controlli batch select, statistiche riutilizzabili sulle selezioni batch, API set-all-groups selection, e statistiche di utilizzo per permesso nella pagina dei permessi dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="schemata-v027-fino-a-v030">Schemata v0.2.7 fino a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Schemata&lt;/a>, le definizioni JSON Schema per la validazione dei kind di event Nostr, ha distribuito quattro rilasci dalla &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.7">v0.2.7&lt;/a> alla &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.3.0">v0.3.0&lt;/a> con 21 PR unite. Il rilascio v0.3.0 porta correzioni di coerenza dei pattern per URL relay, ID hex, tipi MIME, e stringhe BOLT-11 (&lt;a href="https://github.com/nostrability/schemata/pull/126">PR #126&lt;/a>), centralizzazione dei pattern URL relay (&lt;a href="https://github.com/nostrability/schemata/pull/117">PR #117&lt;/a>), schemi del tipo base bech32 &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostrability/schemata/pull/118">PR #118&lt;/a>), e validazione per gli event spell kind 777 (&lt;a href="https://github.com/nostrability/schemata/pull/125">PR #125&lt;/a>). La pipeline di rilascio ora pubblica una nota kind &lt;code>1&lt;/code> su Nostr per ogni rilascio (&lt;a href="https://github.com/nostrability/schemata/pull/120">PR #120&lt;/a>), così il progetto si annuncia attraverso il protocollo che valida. Schemata ora supporta una dozzina di linguaggi oltre al pacchetto canonico JS/TS: Rust, Go, Python, Kotlin, Java, Swift, Dart, PHP, C#/.NET, C++, Ruby, e C.&lt;/p>
&lt;p>Accanto a Schemata, il team ha pubblicato &lt;a href="https://github.com/nostrability/schemata-codegen">schemata-codegen&lt;/a>, un generatore di codice sperimentale che affronta lo stesso problema di validazione con un approccio diverso. Dove i pacchetti validator di Schemata richiedono una dipendenza runtime da JSON Schema, schemata-codegen converte gli schemi direttamente in costrutti tipizzati nativi del linguaggio (tuple tipizzate per tag, interfacce kind, e validator runtime), rimuovendo la necessità di una libreria validator a runtime. Il documento &lt;a href="https://github.com/nostrability/schemata-codegen/blob/main/CODEGEN-VS-VALIDATORS.md">codegen-vs-validators comparison&lt;/a> spiega quando ciascun approccio è adatto.&lt;/p>
&lt;h3 id="bigbrotr-v650-fino-a-v654">BigBrotr v6.5.0 fino a v6.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la piattaforma di analisi relay, ha distribuito cinque rilasci dalla &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.0">v6.5.0&lt;/a> alla &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.4">v6.5.4&lt;/a>. La v6.5.0 centralizza la validazione degli URL relay con una factory function &lt;code>parse_relay_url()&lt;/code> e aggiunge controlli sulla lunghezza URL e sanitizzazione dei path. Anche l&amp;rsquo;infrastruttura di monitoraggio ha ricevuto correzioni: gli event di annuncio ora includono tag di geolocalizzazione geohash (seguendo &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>), ed è stata aggiunta protezione timeout ai test di metadati Geo/Net &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> che non avevano scadenza e potevano bloccarsi indefinitamente. La &lt;a href="https://github.com/BigBrotr/bigbrotr/pull/410">PR #410&lt;/a> aggiorna PostgreSQL dalla 16 alla 18, portando il sottosistema async I/O e un throughput WAL migliorato alla pipeline di analisi relay.&lt;/p>
&lt;h3 id="il-relay-vertex-lab-aggiunge-la-ricerca-profili-nip-50">Il relay Vertex Lab aggiunge la ricerca profili NIP-50&lt;/h3>
&lt;p>&lt;a href="https://vertexlab.io">Vertex Lab&lt;/a>, il team dietro &lt;a href="https://github.com/vertex-lab/npub.world">npub.world&lt;/a> e il motore Web of Trust &lt;a href="https://vertexlab.io/docs">Vertex&lt;/a>, ha annunciato che &lt;code>wss://relay.vertexlab.io&lt;/code> ora supporta &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> (Search) per le query sui profili. NIP-50 estende il filtro standard &lt;code>REQ&lt;/code> di Nostr con un campo &lt;code>search&lt;/code>, permettendo ai client di inviare query full-text ai relay che supportano l&amp;rsquo;indicizzazione. Aggiungere la ricerca profili a un relay che serve già dati Web of Trust significa che i client connessi a &lt;code>relay.vertexlab.io&lt;/code> possono scoprire utenti per nome o descrizione senza un servizio di ricerca separato.&lt;/p>
&lt;h3 id="hashtree-v0217-e-v0218-distribuiscono-mesh-webrtc-e-iris-desktop">Hashtree v0.2.17 e v0.2.18 distribuiscono mesh WebRTC e Iris Desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree">Hashtree&lt;/a>, il sistema di storage blob content-addressed di mmalmi che pubblica radici Merkle su Nostr, ha distribuito la &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.17">v0.2.17&lt;/a> e la &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.18">v0.2.18&lt;/a> il 31 marzo. I due rilasci chiudono uno sprint di 30 commit che aggiunge tre capacità distinte. Primo, il crate &lt;code>hashtree-webrtc&lt;/code> (rinominato &lt;code>hashtree-network&lt;/code> nella v0.2.18) aggiunge distribuzione blob peer-to-peer basata su WebRTC con segnalazione mesh unificata attraverso la CLI Rust, l&amp;rsquo;harness di simulazione, e il client TypeScript. Secondo, la pipeline di rilascio ora costruisce artefatti Windows (zip CLI e installer Iris), portando copertura cross-platform su macOS, Linux e Windows. Terzo, entrambi i rilasci includono Iris Desktop 0.1.0, il client social Nostr di mmalmi, come asset AppImage, .deb e installer Windows accanto alla CLI hashtree. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/">Hashtree è stato trattato per la prima volta nella Newsletter #10&lt;/a> quando è stato lanciato come store compatibile &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> basato su filesystem. Il livello WebRTC è il primo passo verso una distribuzione dei contenuti peer-to-peer senza dipendere da server Blossom centralizzati.&lt;/p>
&lt;h3 id="nostr-mail-client-v070-fino-a-v072">Nostr Mail Client v0.7.0 fino a v0.7.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a>, il client in stile email Flutter costruito su identità Nostr, ha distribuito la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.0">v0.7.0&lt;/a>, la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.1">v0.7.1&lt;/a>, e la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.2">v0.7.2&lt;/a> in tre giorni. Il lavoro di prodotto più visibile si è concentrato su onboarding (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/9">PR #9&lt;/a>) e modifica profilo (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/10">PR #10&lt;/a>), elementi di base per qualsiasi client che cerca di presentare Nostr come una casella di posta. Le point release successive hanno impacchettato quel lavoro in nuove build Android e Linux.&lt;/p>
&lt;h3 id="wisp-v0140-fino-a-v0161">Wisp v0.14.0 fino a v0.16.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito altri 13 rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.14.0-beta">v0.14.0-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>. Il lavoro di questa settimana include correzioni al JSON rumor NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/385">PR #385&lt;/a>), badge repost sulle gallery card (&lt;a href="https://github.com/barrydeen/wisp/pull/383">PR #383&lt;/a>), dettagli delle reazioni espandibili (&lt;a href="https://github.com/barrydeen/wisp/pull/382">PR #382&lt;/a>), set emoji persistenti (&lt;a href="https://github.com/barrydeen/wisp/pull/381">PR #381&lt;/a>), e controlli di autoplay video (&lt;a href="https://github.com/barrydeen/wisp/pull/380">PR #380&lt;/a>). L&amp;rsquo;ultima &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a> corregge anche shortcode emoji personalizzate con trattini e tag emoji mancanti.&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> ha distribuito la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.17">3.0.17&lt;/a> il 24 marzo. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1000">PR #1000&lt;/a> mappa i tipi WalletException in codici errore nelle risposte NWC, dando ai client &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> informazioni di errore strutturate invece di errori generici. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/995">PR #995&lt;/a> corregge i voti zap dei sondaggi che apparivano come Top Zaps, e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/998">PR #998&lt;/a> nasconde il saldo wallet e i pulsanti di azione quando non è configurato alcun wallet.&lt;/p>
&lt;h3 id="openchat-v024-fino-a-v030">OpenChat v0.2.4 fino a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, il client chat basato su Avalonia costruito sullo stack &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito sei rilasci dalla &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.2.4">v0.2.4&lt;/a> alla &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.3.0">v0.3.0&lt;/a> in quattro giorni. Il log dei commit racconta la storia di un client che colma il divario tra “Marmot funziona” e “qualcuno può davvero usarlo ogni giorno”. È arrivata l&amp;rsquo;autenticazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, seguita da una UI relay picker con filtraggio degli event duplicati. I messaggi vocali hanno ottenuto pausa, ripresa, seek e visualizzazione del tempo. Il percorso signer è stato rafforzato: le connessioni Amber sono state corrette con un formato URI &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> aggiornato, il WebSocket si riconnette automaticamente prima di inviare le richieste, e le richieste Amber duplicate ora vengono intercettate controllando le risposte riprodotte. Sul lato storage, Linux e macOS hanno ottenuto secure storage AES-256-GCM con chiavi salvate su file, e il recupero dei metadata utente ora usa la discovery relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e mette in cache i risultati in un database locale.&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>, il signer threshold &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> per iOS del progetto FROSTR, ha distribuito la &lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype/releases/tag/v1.1">v1.1&lt;/a> il 28 marzo. Le firme FROST (Flexible Round-Optimized Schnorr Threshold) permettono a un gruppo di signer di controllare collettivamente un keypair Nostr, dove qualsiasi insieme t-of-n di partecipanti può firmare un event senza che nessuna singola parte possieda la chiave privata completa. Igloo è una delle prime implementazioni mobili di questo approccio per Nostr.&lt;/p>
&lt;h3 id="nak-v0193-e-v0194">nak v0.19.3 e v0.19.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.3">v0.19.3&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.4">v0.19.4&lt;/a> il 26 e 30 marzo. Entrambi i rilasci correggono condizioni di panic: la &lt;a href="https://github.com/fiatjaf/nak/pull/118">PR #118&lt;/a> sostituisce &lt;code>strings.Split&lt;/code> con &lt;code>strings.Cut&lt;/code> per prevenire un potenziale accesso out-of-bounds, e la &lt;a href="https://github.com/fiatjaf/nak/pull/119">PR #119&lt;/a> previene la stessa classe di panic nel parsing dei flag 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>, un&amp;rsquo;estensione Chrome per screen recording e condivisione decentralizzati su Nostr, ha distribuito la &lt;a href="https://github.com/shawnyeager/flora-extension/releases/tag/v0.3.0">v0.3.0&lt;/a>. Il rilascio aggiunge condivisione video privata cifrata con modalità pubblica, non in elenco e privata. Le registrazioni private sono cifrate con AES-256-GCM e consegnate ai destinatari tramite &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), così la registrazione non tocca mai un server in chiaro.&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>, il client mobile Nostr, ha distribuito la &lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.3">2.0.3&lt;/a> con recensioni relay e join request, risposte nidificate ampliate, traduzione automatica delle note, e supporto multi-relay NWC.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="zap-cooking-aggiunge-zap-poll-e-verifica-dei-pagamenti-branta">Zap Cooking aggiunge zap poll e verifica dei pagamenti Branta&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la piattaforma di ricette e contenuti, ha unito 11 PR questa settimana focalizzate su contenuti interattivi e flussi di pagamento. La &lt;a href="https://github.com/zapcooking/frontend/pull/277">PR #277&lt;/a> aggiunge gli zap poll (kind 6969), in cui gli utenti votano inviando sats e possono vedere le liste dei votanti con foto profilo. La &lt;a href="https://github.com/zapcooking/frontend/pull/274">PR #274&lt;/a> ridisegna la UX dei sondaggi in modo che l&amp;rsquo;interfaccia di voto si integri più naturalmente nel feed.&lt;/p>
&lt;p>La &lt;a href="https://github.com/zapcooking/frontend/pull/276">PR #276&lt;/a> aggiunge scansione QR tramite fotocamera al flusso Send Payment e integra &lt;a href="https://branta.pro/">Branta&lt;/a>, un servizio di verifica che controlla se una destinazione di pagamento è legittima prima dell&amp;rsquo;invio. Branta verifica le destinazioni di pagamento contro phishing, address swap e intercettazioni man-in-the-middle prima dell&amp;rsquo;invio. Nell&amp;rsquo;implementazione di Zap Cooking, un nome piattaforma e logo verificati da Branta appaiono direttamente nel flusso di pagamento, e i QR code abilitati a Branta possono trasportare parametri &lt;code>branta_id&lt;/code> e &lt;code>branta_secret&lt;/code> così il wallet può verificare la destinazione direttamente dal codice scansionato.&lt;/p>
&lt;h3 id="divine-prepara-le-basi-per-una-ricerca-unificata-e-rafforza-la-consegna-video">diVine prepara le basi per una ricerca unificata e rafforza la consegna video&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client di video brevi, ha passato la settimana a stringere ricerca, navigazione del feed, recovery della riproduzione, e comportamento di upload. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2540">PR #2540&lt;/a> getta le basi per una schermata di ricerca unificata, con sezioni raggruppate per Video, Persone, e Tag. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2623">PR #2623&lt;/a> rafforza la paginazione su feed profilo, inbox, notifiche, liste discover, classic vines, ricerca, e feed a griglia componibili spostandoli su un controller di paginazione condiviso.&lt;/p>
&lt;p>Anche la consegna video ha ricevuto diverse correzioni concrete. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2643">PR #2643&lt;/a> ritenta in ordine le sorgenti derivate ospitate da Divine e ricade sul blob grezzo prima di mostrare un errore di riproduzione, così fallimenti transitori su una sorgente non uccidono subito la riproduzione. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2634">PR #2634&lt;/a> mantiene gli upload resumable sul percorso gestito da Divine quando il capability probing fallisce temporaneamente, riducendo gli upload rotti causati da brevi guasti di rete. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2637">PR #2637&lt;/a> cambia anche il filtro dei contenuti sensibili in modo che i video siano bloccati rigidamente solo per etichette di avviso reali, non semplicemente per content warning impostati dal creatore.&lt;/p>
&lt;h3 id="shopstr-aggiunge-storefront-personalizzati-e-milk-market-continua-a-distribuire-lavoro-di-marketplace">Shopstr aggiunge storefront personalizzati e Milk Market continua a distribuire lavoro di marketplace&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace basato su Nostr, ha unito la &lt;a href="https://github.com/shopstr-eng/shopstr/pull/245">PR #245&lt;/a> aggiungendo storefront personalizzati. Questo dà ai venditori una superficie home più distintiva invece di costringere ogni annuncio nella stessa presentazione generica.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, un marketplace dedicato al latte, ha continuato con ottimizzazioni degli storefront (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/18">PR #18&lt;/a>), account recovery (&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>), e correzioni ai tipi degli strumenti MCP (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/16">PR #16&lt;/a>).&lt;/p>
&lt;h3 id="notedeck-aggiunge-effetti-sonori-e-estende-il-suo-percorso-updater-verso-android">Notedeck aggiunge effetti sonori e estende il suo percorso updater verso Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop del team Damus, ha unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1412">PR #1412&lt;/a> aggiungendo un sottosistema di effetti sonori con suoni di interazione UI usando rodio, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1399">PR #1399&lt;/a> con aggiornamenti Agentium inclusi un flag CLI per il titolo e cartelle di sessione comprimibili. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> aperta propone l&amp;rsquo;auto-aggiornamento APK via Nostr/Zapstore su Android, costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/#notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">lavoro updater nativo Nostr di Notedeck dalla Newsletter #14&lt;/a>.&lt;/p>
&lt;h3 id="nostria-aggiunge-relay-hint-per-i-repost-e-allineamento-nip-98">Nostria aggiunge relay hint per i repost e allineamento NIP-98&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha unito la &lt;a href="https://github.com/nostria-app/nostria/pull/583">PR #583&lt;/a> aggiungendo relay hint &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18&lt;/a> (Reposts) ai tag &lt;code>e&lt;/code> dei repost per gli event kind 6 e kind 16, la &lt;a href="https://github.com/nostria-app/nostria/pull/582">PR #582&lt;/a> allineando l&amp;rsquo;HTTP auth Brainstorm (kind 27235) ai tag richiesti da &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth), e la &lt;a href="https://github.com/nostria-app/nostria/pull/576">PR #576&lt;/a> aggiungendo test di validazione degli schemi Schemata. Il cambiamento NIP-98 significa che Nostria può autenticarsi verso servizi esterni usando lo stesso formato HTTP auth che usano gli altri client.&lt;/p>
&lt;h3 id="nostr-doc-aggiunge-packaging-desktop-e-lavoro-offline-first">Nostr-Doc aggiunge packaging desktop e lavoro offline-first&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr-Doc&lt;/a>, l&amp;rsquo;editor collaborativo di Form*, ha avuto una settimana intensa di packaging e lavoro sull&amp;rsquo;editor. Il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/fcdc00a564c8d76f094c586b06efce07592a60e4">commit fcdc00a&lt;/a> aggiunge un&amp;rsquo;app desktop, il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/3977a8eb2e62b84a67de756c2776e14de8470927">commit 3977a8e&lt;/a> avvia il lavoro sull&amp;rsquo;app nativa, e il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/413a030f5b47fb8e32a5dff81bcef557ad9b5869">commit 413a030&lt;/a> spinge l&amp;rsquo;app verso un comportamento offline-first. Sul lato editor, il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/1855ce86ee83ad504e14e47d9c339baffb114786">commit 1855ce8&lt;/a> aggiunge salvataggio Ctrl+S, avvisi di salvataggio, correzioni alle anteprime link, e rendering corretto del barrato.&lt;/p>
&lt;h3 id="rust-nostr-ottimizza-il-parsing-nip-21-e-aggiunge-supporto-nip-62-lato-relay">rust-nostr ottimizza il parsing NIP-21 e aggiunge supporto NIP-62 lato relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha unito otto PR. La più notevole è la &lt;a href="https://github.com/rust-nostr/nostr/pull/1308">PR #1308&lt;/a>, che ottimizza il parsing degli URI &lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> in &lt;code>PublicKey::parse&lt;/code> allineandolo alle prestazioni standard del parsing bech32. In precedenza, gli URI NIP-21 richiedevano circa il doppio del tempo per essere analizzati rispetto alle chiavi bech32 grezze. Il progetto ha anche quattro PR aperte che aggiungono supporto specifico relay a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) nei backend memory, LMDB, SQLite, e 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-aggiunge-controllo-relay-bunker-e-corregge-il-parsing-multi-relay-nip-47">nostr-tools aggiunge controllo relay bunker e corregge il parsing multi-relay NIP-47&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> ha unito la &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/530">PR #530&lt;/a> aggiungendo &lt;code>skipSwitchRelays&lt;/code> ai BunkerSignerParams per la gestione manuale dei relay, e la &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/529">PR #529&lt;/a> correggendo il parsing delle stringhe di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) per supportare più relay come consente la specifica.&lt;/p>
&lt;h3 id="nostrability-integra-i-dati-di-audit-sherlock-e-pubblica-una-panoramica-di-schemata">Nostrability integra i dati di audit Sherlock e pubblica una panoramica di Schemata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/nostrability">Nostrability&lt;/a>, l&amp;rsquo;interoperability tracker per i client Nostr, ha unito 14 PR. La &lt;a href="https://github.com/nostrability/nostrability/pull/306">PR #306&lt;/a> integra le statistiche delle scansioni Sherlock nella dashboard. Sherlock è lo strumento di audit automatizzato di Nostrability che si connette ai client Nostr, cattura gli event che pubblicano, e valida ogni event rispetto alle definizioni JSON Schema di Schemata per rilevare violazioni della specifica. La dashboard ora mostra i tassi di fallimento degli schemi per client (&lt;a href="https://github.com/nostrability/nostrability/pull/315">PR #315&lt;/a>) così gli sviluppatori possono vedere quali kind di event il proprio client sbaglia. La &lt;a href="https://github.com/nostrability/nostrability/pull/323">PR #323&lt;/a> rivede il workflow di pubblicazione Nostr in modo che gli annunci di rilascio girino come job separato che non può essere cancellato da step CI precedenti.&lt;/p>
&lt;p>elsat ha anche pubblicato &lt;a href="https://njump.me/naddr1qvzqqqr4gupzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqz4fnx4rkw3x57nrcwdn8zt22xd982jehfptsgqtrww">Schemata for nostr devs&lt;/a> il 30 marzo, descrivendo come schemata, schemata-codegen e Sherlock si incastrano e dando i numeri attuali di copertura: 179 schemi di kind event su 65 NIP, 154 schemi di tag, 13 messaggi di protocollo, e 310 event di esempio.&lt;/p>
&lt;h3 id="nalgorithm-aggiunge-generazione-digest-e-caching-locale-del-punteggio">Nalgorithm aggiunge generazione digest e caching locale del punteggio&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/nalgorithm">Nalgorithm&lt;/a>, un nuovo progetto feed Nostr ordinato per rilevanza, ha avviato lo sviluppo pubblico questa settimana. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/cf6c501e754ef95a1b4fecc1a76288471a101f43">commit cf6c501&lt;/a> imposta l&amp;rsquo;app web iniziale che recupera i post dai follow e li valuta rispetto a un prompt di preferenze definito dall&amp;rsquo;utente. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/8e931b6ae85d470e73603752134ff49b7ba4bb86">commit 8e931b6&lt;/a> aggiunge uno strumento CLI digest che trasforma i post più rilevanti in un riepilogo parlato, mentre il &lt;a href="https://github.com/jooray/nalgorithm/commit/4cb9c635489a9a3429e8d71f3861dc2a11624153">commit 4cb9c63&lt;/a> aggiunge caching del punteggio basato su file e evoluzione incrementale del prompt appreso a partire dai like recenti. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/c2edfb8b89fadbe0028c3f5729bda7e23b2e3c03">commit c2edfb8&lt;/a> smette anche di mettere in cache i fallback score da batch falliti, così un fallimento transitorio del punteggio non appiattisce permanentemente il ranking di un post.&lt;/p>
&lt;h3 id="tenex-aggiunge-vector-store-rag-e-startup-mcp-mirato">TENEX aggiunge vector store RAG e startup MCP mirato&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, il framework agenti nativo Nostr che collega agenti AI ai canali Nostr via Telegram, ha unito sette PR questa settimana. La &lt;a href="https://github.com/tenex-chat/tenex/pull/101">PR #101&lt;/a> aggiunge un&amp;rsquo;astrazione vector store pluggable con backend SQLite-vec, LanceDB, e Qdrant, dando agli agenti retrieval-augmented generation senza vincolarsi a un singolo database vettoriale. La &lt;a href="https://github.com/tenex-chat/tenex/pull/102">PR #102&lt;/a> rende lo startup MCP mirato: vengono avviati solo i server MCP i cui strumenti un agente usa davvero, invece di lanciare tutti i server subito alla prima esecuzione. La &lt;a href="https://github.com/tenex-chat/tenex/pull/100">PR #100&lt;/a> aggiunge uno strumento &lt;code>send_message&lt;/code> così gli agenti con binding ai canali Telegram possono inviare messaggi proattivamente invece di limitarsi a rispondere a quelli in arrivo. La &lt;a href="https://github.com/tenex-chat/tenex/pull/106">PR #106&lt;/a> evita uno spawn di sottoprocesso che attivava una pre-allocazione da 9GB di memoria Bun/JSC leggendo &lt;code>.git/HEAD&lt;/code> direttamente invece di eseguire &lt;code>git branch&lt;/code>.&lt;/p>
&lt;h3 id="dart-ndk-sposta-il-signer-amber-e-aggiunge-alby-go-1-click">Dart NDK sposta il signer Amber e aggiunge Alby Go 1-click&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a>, il Flutter Nostr development kit, ha distribuito 11 PR unite. La &lt;a href="https://github.com/relaystr/ndk/pull/525">PR #525&lt;/a> sposta il supporto al signer Amber nel pacchetto ndk_flutter, e la &lt;a href="https://github.com/relaystr/ndk/pull/552">PR #552&lt;/a> aggiunge la connessione wallet one-click Alby Go all&amp;rsquo;app di esempio. La &lt;a href="https://github.com/relaystr/ndk/pull/502">PR #502&lt;/a> aggiunge uno script install.sh per la CLI, e la &lt;a href="https://github.com/relaystr/ndk/pull/523">PR #523&lt;/a> rimuove la dipendenza dal verifier Rust a favore della gestione nativa degli asset.&lt;/p>
&lt;h2 id="lavoro-su-protocollo-e-specifica">Lavoro su Protocollo e Specifica&lt;/h2>
&lt;h3 id="marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">Marmot sposta i KeyPackage su event indirizzabili e stringe le push notification&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot">specifica Marmot&lt;/a> ha unito quattro PR che cambiano il modo in cui il protocollo gestisce il materiale chiave e l&amp;rsquo;appartenenza ai gruppi. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/54">PR #54&lt;/a> migra gli event KeyPackage dal normale &lt;code>kind:443&lt;/code> al &lt;code>kind:30443&lt;/code> indirizzabile con tag &lt;code>d&lt;/code>, eliminando la necessità di cancellazione event &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> durante la rotazione delle chiavi. Gli event indirizzabili si sovrascrivono sul posto, rendendo la rotazione auto-contenuta. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/57">PR #57&lt;/a> permette agli utenti non admin di fare commit di proposte SelfRemove (uscita volontaria dal gruppo), e la &lt;a href="https://github.com/marmot-protocol/marmot/pull/62">PR #62&lt;/a> richiede agli admin di rinunciare allo status di admin prima di usare SelfRemove, impedendo a un admin di sparire mantenendo ancora privilegi elevati.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/61">PR #61&lt;/a> stringe il formato delle push notification &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a>, rendendo espliciti la codifica base64 single-blob, il versioning, il formato wire del token, e l&amp;rsquo;uso delle chiavi x-only. L&amp;rsquo;effetto è una singola rappresentazione wire definita per token blob e chiavi x-only attraverso la specifica, le librerie client, e i backend delle app. L&amp;rsquo;implementazione di questi cambi di specifica è arrivata nello stack White Noise questa settimana ed è coperta nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">sezione White Noise v2026.3.23 sopra&lt;/a>.&lt;/p>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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>: Siti Web Statici&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>): Definisce gli event manifesto kind &lt;code>15128&lt;/code> (sito root) e kind &lt;code>35128&lt;/code> (sito con nome) per ospitare siti statici sotto keypair Nostr usando lo storage Blossom. Vedi il &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-deep-dive-nip-5a-siti-web-statici">deep dive sotto&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> (Custom Emoji): Permettere i trattini negli shortcode&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2297">PR #2297&lt;/a>): Aggiorna la descrizione degli shortcode per includere i trattini. Gli shortcode con trattini sono stati usati nella pratica fin dall&amp;rsquo;introduzione del NIP, quindi la specifica ora documenta l&amp;rsquo;uso corrente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&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 di messaggio strutturato per gli agenti che inviano elementi UI interattivi tramite DM cifrati, inclusi payload tipizzati &lt;code>text&lt;/code>, &lt;code>buttons&lt;/code>, &lt;code>card&lt;/code>, e &lt;code>table&lt;/code>. La bozza mantiene tutto dentro il contenuto JSON degli existing DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. Non definisce un nuovo kind di event e usa un semplice formato stringa callback per le risposte ai pulsanti.&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 modello relay ibrido in cui i relay restano autorevoli ma possono anche coordinare la distribuzione peer-to-peer degli event recenti via WebRTC. La bozza introduce messaggi relay come &lt;code>PEER_REGISTER&lt;/code>, &lt;code>PEER_REQUEST&lt;/code>, e &lt;code>PEER_OFFER&lt;/code>, con client stabili che agiscono da Super Peer e il relay che funge da seed node e 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>): Riapre la vecchia idea NIP-69 degli zap-poll ora che &lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a> (Polls) copre i sondaggi gratuiti. La bozza usa definizioni di sondaggi kind &lt;code>6969&lt;/code> e zaps kind &lt;code>9734&lt;/code> come voti, rendendolo un sistema di polling a pagamento con resistenza economica ai Sybil. Completa i sondaggi gratuiti one-key-one-vote.&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 convenzione in cui gli zap inviati alla pubkey di un relay o a quella di un client vengono mostrati come note promozionali specializzate, trasformando di fatto le zap receipt in una superficie pubblicitaria. Gli operatori relay e i client pubblicherebbero profili con &lt;code>lud16&lt;/code>, recupererebbero quelle receipt, estrarrebbero il contenuto incorporato dalle descrizioni zap, e potrebbero opzionalmente impostare soglie minime in sats per sopprimere lo 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> come event sostituibile parametrizzato per attestazioni strutturate di reputazione sugli agenti Nostr. La bozza evita un singolo punteggio globale rendendo la reputazione dipendente dall&amp;rsquo;osservatore, aggiunge decadimento temporale così le attestazioni vecchie perdono peso, supporta rating negativi con requisiti di evidenza, e abbozza sia punteggio ponderato semplice sia punteggio di diversità del grafo per migliore resistenza 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 event indirizzabili kind &lt;code>31402&lt;/code> per pubblicizzare API HTTP a pagamento, con Nostr che gestisce discovery e pagamento tramite HTTP 402. La bozza è tags-first così i relay possono filtrare su metodi di pagamento, prezzi e capacità senza fare parsing di contenuto JSON, e permette schemi opzionali di richiesta e risposta così client o agenti possono auto-generare le chiamate.&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 di derivare un keypair Nostr da una firma ECDSA LNURL-auth combinata con un nonce casuale lato client. La formula di derivazione è &lt;code>nsec = SHA256(ecdsa_signature || nonce)&lt;/code>. Il server vede la firma ECDSA (intrinseca all&amp;rsquo;handshake LNURL-auth) ma non vede mai il nonce, e il browser genera il nonce ma non controlla la firma. Nessun pezzo da solo può derivare l&amp;rsquo;nsec. L&amp;rsquo;obiettivo è che lo stesso wallet Lightning produca la stessa chiave Nostr su dispositivi diversi, con il wallet come àncora di recovery e nessun server in grado di ricostruire la chiave privata.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>: Documentare il campo rejected&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2290">PR #2290&lt;/a>): Documenta il campo &lt;code>rejected&lt;/code> per le risposte dei signer intent-based, formalizzando il comportamento che la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">correzione di Amethyst v1.07.x&lt;/a> ha dovuto aggirare.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-5a-siti-web-statici">NIP Deep Dive: NIP-5A (Siti Web Statici)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> definisce come ospitare siti web statici sotto keypair Nostr, usando due kind di event e l&amp;rsquo;infrastruttura blob esistente per trasformare event firmati in pagine web servite. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">specifica&lt;/a> è stata unita il 25 marzo tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>.&lt;/p>
&lt;p>Il modello usa kind &lt;code>15128&lt;/code> per un sito root, uno per pubkey, e kind &lt;code>35128&lt;/code> per siti con nome identificati da un tag &lt;code>d&lt;/code>. Ogni manifesto mappa percorsi URL assoluti agli hash SHA256. Ecco un manifesto di sito root:&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>Il flusso di serving funziona in tre passaggi. Un server host riceve una richiesta HTTP, estrae la pubkey dell&amp;rsquo;autore dal sottodominio (un npub per i siti root o una pubkey codificata base36 per i siti con nome), recupera la relay list dell&amp;rsquo;autore tramite &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>, e interroga il manifesto del sito. Una volta trovato il manifesto, il server risolve il path richiesto in un hash di contenuto, scarica il blob corrispondente dal server o dai server Blossom elencati nei tag &lt;code>server&lt;/code>, e lo restituisce.&lt;/p>
&lt;p>Il formato del sottodominio DNS è strettamente specificato. I siti root usano l&amp;rsquo;npub standard come sottodominio. I siti con nome usano una codifica base36 di 50 caratteri della pubkey grezza seguita dal valore del tag &lt;code>d&lt;/code>, tutto in una singola etichetta DNS. Poiché le etichette DNS sono limitate a 63 caratteri e la codifica base36 ne occupa sempre 50, il tag &lt;code>d&lt;/code> è limitato a 13 caratteri. La specifica richiede anche che i tag &lt;code>d&lt;/code> corrispondano a &lt;code>^[a-z0-9-]{1,13}$&lt;/code> e non terminino con un trattino, evitando ambiguità nella risoluzione DNS.&lt;/p>
&lt;p>L&amp;rsquo;uso di hash del contenuto significa che lo stesso sito può essere servito da server host diversi, e l&amp;rsquo;integrità dei file è verificabile senza fidarsi del server. Un server host non ha bisogno di memorizzare alcun file localmente. Li recupera on demand da Blossom usando gli hash nel manifesto. Questo significa che l&amp;rsquo;autore controlla ciò che viene servito, il server Blossom memorizza i file grezzi, e il server host si limita a collegare i due. Ciascuno di questi tre componenti può essere sostituito indipendentemente.&lt;/p>
&lt;p>Le implementazioni esistenti includono &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, il server host che risolve i manifesti e serve i file, e &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, una UI per costruire e pubblicare i manifesti. La specifica ha aggiunto anche un tag &lt;code>source&lt;/code> per collegare il repository del codice sorgente del sito, e l&amp;rsquo;aggiornamento del README unito separatamente nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2286">PR #2286&lt;/a> ha registrato sia il kind &lt;code>15128&lt;/code> sia il &lt;code>35128&lt;/code> nell&amp;rsquo;indice dei kind 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> definisce kind &lt;code>62&lt;/code> come una richiesta ai relay di cancellare tutti gli event della pubkey richiedente. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">specifica&lt;/a> ha una motivazione legale: nelle giurisdizioni con leggi sul diritto all&amp;rsquo;oblio, avere una richiesta di cancellazione standardizzata e firmata dà agli operatori relay un segnale chiaro su cui agire.&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 specifica separa le richieste vanish mirate da quelle globali. Una richiesta mirata include tag &lt;code>relay&lt;/code> specifici che identificano i relay che devono agire. Una richiesta globale usa la stringa letterale &lt;code>ALL_RELAYS&lt;/code> come valore del tag relay, chiedendo a ogni relay che vede l&amp;rsquo;event di cancellare tutti gli event di quella pubkey. I relay che rispettano la richiesta devono anche assicurarsi che gli event cancellati non possano essere ripubblicati di nuovo nel relay, rendendo la cancellazione persistente.&lt;/p>
&lt;p>NIP-62 va oltre &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> (Event Deletion) sia per ambito che per intento. NIP-09 permette di cancellare singoli event, e i relay MAY rispettarlo. NIP-62 chiede la cancellazione di tutto, e la specifica dice che i relay MUST rispettare la richiesta se il loro URL è taggato. Chiede anche ai relay di cancellare gli event &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) che contengono un p-tag verso la pubkey richiedente, il che significa che i DM in arrivo vengono ripuliti insieme agli event dell&amp;rsquo;utente. Pubblicare una cancellazione NIP-09 contro una richiesta vanish NIP-62 non ha effetto: una volta che fai vanish, non puoi annullare il vanish cancellando la richiesta di vanish.&lt;/p>
&lt;p>Questa settimana, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">Amethyst v1.07.0&lt;/a> ha distribuito il supporto client-side a NIP-62, permettendo agli utenti di avviare richieste vanish dall&amp;rsquo;app. Sul lato relay, &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha quattro PR aperte che aggiungono il supporto NIP-62 nei backend memory, LMDB, SQLite, e 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>). Questo mette il lavoro di supporto lato client e lato relay nella stessa settimana.&lt;/p>
&lt;p>Il design del protocollo introduce una tensione pratica. La proposta di valore di Nostr include la resistenza alla censura, cioè i relay non dovrebbero essere in grado di impedire la pubblicazione. NIP-62 introduce un caso in cui un relay MUST impedire la ripubblicazione da una specifica pubkey. Le due proprietà convivono perché la richiesta è auto-diretta: chiedi la cancellazione dei tuoi event, non di quelli di qualcun altro. La proprietà di resistenza alla censura rimane intatta per tutti tranne che per la persona che ha scelto esplicitamente di uscirne.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #15</title><link>https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fa seguito al suo rilascio wallet 3.0 con &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Follow Pack, arricchimento zap e deep link &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> pubblica un&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">analisi delle nsec esposte&lt;/a> scansionando 41 milioni di event su 1.085 relay, trovando 16.599 chiavi private valide, mentre &lt;a href="https://npub.world">npub.world&lt;/a> integra gli avvisi di esposizione nelle pagine profilo la stessa settimana. Martti Malmi lancia &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">nostr-vpn&lt;/a>, un&amp;rsquo;alternativa a Tailscale che segnala tramite relay Nostr e crea tunnel WireGuard, distribuendo 11 rilasci in sette giorni. Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">rilascia in open-source DOOM P2P&lt;/a> su Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">v0.2.0&lt;/a>, e &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> si espande a &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostrability-schemata-diventa-multilingue">sei linguaggi&lt;/a> in una settimana.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fa seguito al suo rilascio wallet 3.0 con &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Follow Pack, arricchimento zap e deep link &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> pubblica un&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">analisi delle nsec esposte&lt;/a> scansionando 41 milioni di event su 1.085 relay, trovando 16.599 chiavi private valide, mentre &lt;a href="https://npub.world">npub.world&lt;/a> integra gli avvisi di esposizione nelle pagine profilo la stessa settimana. Martti Malmi lancia &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">nostr-vpn&lt;/a>, un&amp;rsquo;alternativa a Tailscale che segnala tramite relay Nostr e crea tunnel WireGuard, distribuendo 11 rilasci in sette giorni. Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">rilascia in open-source DOOM P2P&lt;/a> su Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">v0.2.0&lt;/a>, e &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> si espande a &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostrability-schemata-diventa-multilingue">sei linguaggi&lt;/a> in una settimana.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Primal aggiunge Follow Pack, arricchimento zap e deep link&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/">Come da copertura della 3.0.7 della settimana scorsa&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha dedicato questa settimana al lavoro post-rilascio su onboarding, UX del composer e contesto wallet. L&amp;rsquo;onboarding ridisegnato introduce i Follow Pack (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>), un pulsante GIF nativo si unisce al composer delle note, un servizio di arricchimento zap (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>) annota le transazioni wallet con il contesto zap, e un protocollo di deep-linking &lt;code>primalconnect://&lt;/code> (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>) abilita la navigazione cross-app.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> sta distribuendo lo stesso lavoro tramite TestFlight in parallelo, con lo switch wallet (&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>), l&amp;rsquo;implementazione dei sondaggi e il refactoring dell&amp;rsquo;onboarding che arrivano nella stessa finestra.&lt;/p>
&lt;h3 id="bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">BigBrotr mappa le chiavi private esposte nella rete relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la piattaforma di analisi relay Nostr, ha pubblicato un&amp;rsquo;&lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">analisi dettagliata delle chiavi private esposte&lt;/a> nella rete relay. Lo studio ha scansionato 41 milioni di event da 1.085 relay, cercando stringhe nsec valide incorporate nel contenuto degli event, e ha trovato 16.599 chiavi private valide. Quel numero sembra allarmante finché non si filtra un bot chiamato &amp;ldquo;Mr.nsec&amp;rdquo; che rappresenta il 92% delle corrispondenze. Dopo aver rimosso il traffico bot, solo 38 account reali con più di 21.000 follower combinati avevano chiavi esposte, e nessuno mostrava segni di consapevolezza che le proprie chiavi fossero pubbliche.&lt;/p>
&lt;p>Il team ha costruito un nsec-leak-checker come servizio &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), permettendo agli utenti di verificare se la loro chiave privata appare ovunque nel dataset scansionato senza rivelare la chiave al verificatore. &lt;a href="https://npub.world">npub.world&lt;/a> ha integrato i dati di esposizione la stessa settimana, mostrando banner di avviso sulle pagine profilo dove sono state rilevate chiavi esposte. La combinazione dà alla rete sia un&amp;rsquo;interfaccia programmatica per DVM e agenti sia un avviso leggibile per gli utenti comuni. Il dataset sottostante alimenta anche &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>, che aggiunge viste materializzate per event sostituibili e indirizzabili e una correzione del timeout di inattività del sincronizzatore.&lt;/p>
&lt;h3 id="nostr-vpn-si-lancia-come-alternativa-a-tailscale">Nostr VPN si lancia come alternativa a Tailscale&lt;/h3>
&lt;p>Martti Malmi (mmalmi), creatore di Iris, ha costruito e distribuito &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, una VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard (tramite boringtun) per tunnel cifrati. La motivazione era diretta: &amp;ldquo;Mi sono irritato che Tailscale richieda account di terze parti, quindi ho creato Nostr VPN.&amp;rdquo; Lo strumento crea reti mesh tra dispositivi usando keypair Nostr come identità, senza server di coordinamento centrale.&lt;/p>
&lt;p>Il progetto ha distribuito 11 rilasci in sette giorni, dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>. Quello sprint ha aggiunto il supporto Windows, il pairing LAN per la scoperta nella rete locale, e un sidecar Android per dispositivi mobili. L&amp;rsquo;architettura è semplice: due dispositivi si scambiano metadati di connessione tramite relay Nostr, poi stabiliscono un tunnel WireGuard diretto. Nostr gestisce la scoperta e la segnalazione per l&amp;rsquo;attraversamento NAT. WireGuard gestisce il traffico effettivo. L&amp;rsquo;identità è un keypair Nostr.&lt;/p>
&lt;p>Malmi ha anche continuato a sviluppare &lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>, una libreria per canali di messaggistica sicura in stile Signal, distribuendo sei rilasci dalla &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a> durante la stessa settimana.&lt;/p>
&lt;h3 id="doom-open-source-gira-peer-to-peer-su-nostr">DOOM open-source gira peer-to-peer su Nostr&lt;/h3>
&lt;p>Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> ha rilasciato in open-source un&amp;rsquo;implementazione multiplayer peer-to-peer di DOOM che usa Nostr per la scoperta dei peer, &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la cifratura end-to-end, e &lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>, la libreria di networking QUIC di n0, per il trasporto gossip. Il gioco viene distribuito come file WebXDC da 4,2 MB che può essere inviato all&amp;rsquo;interno di messaggi chat, senza richiedere server per ospitare o coordinare una partita.&lt;/p>
&lt;p>L&amp;rsquo;approccio tecnico sostituisce il netcode lockstep originale del 1993 con un modello di sincronizzazione ibrido in tempo reale. I giocatori si scoprono a vicenda tramite query ai relay Nostr, negoziano le sessioni attraverso canali cifrati con Marmot, poi passano al livello gossip QUIC di Iroh per il traffico di gioco a bassa latenza. Lo stack usa Nostr per la scoperta, Marmot per la cifratura, e Iroh per il trasporto.&lt;/p>
&lt;p>Vector ha anche distribuito hardening di sicurezza questa settimana. Il rilascio aggiunge un vault di chiavi con protezione della memoria con protezioni anti-debug e zeroize per il materiale chiave sensibile, blocco utenti con filtraggio completo di DM e messaggi di gruppo, e correzioni del canale realtime WebXDC per le Mini App.&lt;/p>
&lt;h3 id="fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">FIPS v0.2.0 distribuisce trasporto Tor, build riproducibili e esempi sidecar&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, il Free Internetworking Peering System e progetto di networking mesh adiacente a Nostr, ha distribuito la &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>. Il rilascio aggiunge supporto al trasporto Tor per link mesh anonimizzati, build riproducibili, un esempio sidecar che si connette attraverso un relay Nostr, e pubblicazione dei rilasci su Nostr nel workflow del pacchetto OpenWrt. Il rilascio corregge anche i picchi di jitter post-rekey causati da frame della finestra di drain. Il formato wire è cambiato dalla v0.1.0, quindi i nodi v0.1.0 esistenti non possono interoperare con la v0.2.0 senza aggiornamento.&lt;/p>
&lt;h3 id="nostrability-schemata-diventa-multilingue">Nostrability Schemata diventa multilingue&lt;/h3>
&lt;p>Il progetto &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>, che mantiene definizioni JSON Schema per la validazione dei kind di event Nostr, si è espanso dal solo JavaScript a sei linguaggi in una settimana. Nuovi pacchetti sono stati distribuiti per Rust, Go, Dart, Swift e Python, ognuno fornendo sia un pacchetto dati che un validatore. La &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a> ha anche aggiunto 17 nuovi schemi di kind event.&lt;/p>
&lt;p>Il &lt;a href="https://nostrability.github.io/nostrability/">tracker di interoperabilità Nostrability&lt;/a> ha ricevuto una revisione parallela. Una nuova scheda What&amp;rsquo;s New pubblica aggiornamenti sia tramite un feed Atom che un event Nostr, il filtraggio per categoria app permette ai visitatori di esplorare tipi specifici di client, e il tracker ora rileva automaticamente i linguaggi di programmazione dai metadati dei repository GitHub. Nostrability ha anche il suo npub ora, rendendo il progetto stesso scopribile attraverso il protocollo che documenta. Per gli autori di librerie che lavorano su più linguaggi, i pacchetti schema multi-linguaggio significano che le stesse definizioni di kind event sono disponibili come import nativi invece di richiedere ad ogni progetto di mantenere la propria copia dello schema.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="amethyst-v1060-e-v1061">Amethyst v1.06.0 e v1.06.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito la &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a> e la &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a> il 23 marzo. La funzionalità principale è il supporto ai sondaggi usando dati &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) per il voto ponderato, con card ridisegnate per sondaggi e sondaggi zap. Il nuovo rendering dà sia ai sondaggi standard che ai sondaggi con peso zap un layout visivo più pulito. La v1.06.1 segue con correzioni di crash per modifiche concorrenti che risolvono regressioni di stabilità introdotte nel percorso di rendering dei sondaggi.&lt;/p>
&lt;h3 id="amber-v500-e-v501">Amber v5.0.0 e v5.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha promosso il suo recente lavoro pre-release 4.1.x in stabile con la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.0">v5.0.0&lt;/a> il 18 marzo. Quel rilascio stabile porta le modifiche di relay-auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, Tor integrato, permessi specifici per tipo di contenuto e storage PIN cifrato coperte la settimana scorsa. La &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.1">v5.0.1&lt;/a> rimuove poi il permesso internet dal build flavor offline, in modo che quel build non possa più effettuare richieste di rete a livello di permessi Android.&lt;/p>
&lt;h3 id="mostro-v0170-e-mostro-mobile-v122">Mostro v0.17.0 e Mostro Mobile v1.2.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, lo scambio Bitcoin peer-to-peer costruito su Nostr, ha distribuito la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.0">v0.17.0&lt;/a> il 18 marzo. Il rilascio server continua il lavoro sulle dispute e le valutazioni dal ciclo v0.16.x, aggiungendo dati di reputazione commerciale più completi per acquirenti e venditori come event Nostr. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client Flutter, ha seguito con la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.2">v1.2.2&lt;/a> il 23 marzo, mantenendo l&amp;rsquo;interfaccia mobile sincronizzata con le ultime modifiche al protocollo.&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>, l&amp;rsquo;app di live streaming Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.14.0">v0.14.0&lt;/a> il 19 marzo con il lancio di Shosho Shop. Il rilascio aggiunge una scheda Shop sui profili, Shop in Esplora, e un pulsante In-Live Shop su live e clip. Le note di rilascio dicono che i &amp;ldquo;prodotti Nostr&amp;rdquo; esistenti appaiono automaticamente e gli acquirenti cliccano per accedere alla pagina Plebeian Market del venditore per l&amp;rsquo;acquisto. Le note di rilascio di Shosho non identificano il kind di event degli annunci, quindi non è ancora possibile confermare se Shosho Shop legge gli stessi annunci classificati &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> che &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> supporta esplicitamente nel suo 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 collezione di pacchetti helper di hzrd149 per costruire applicazioni Nostr, ha distribuito la &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core@5.2.0">v5.2.0&lt;/a> il 22 marzo. Il rilascio copre sei pacchetti. Il pacchetto SQLite corregge una collisione di vincolo UNIQUE sui tag degli event che causava inserimenti duplicati. Il pacchetto signers aggiunge &lt;code>AndroidNativeSigner&lt;/code>, che avvolge l&amp;rsquo;interfaccia signer nativa Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> in modo che le app basate su web-view possano usare la firma hardware-backed senza codice bridge personalizzato. Il pacchetto relay aggiunge un campo &lt;code>challenge&lt;/code> agli oggetti di stato relay e pool, tracciando lo stato auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in modo che le app possano rilevare quando un relay sta richiedendo l&amp;rsquo;autenticazione e rispondere programmaticamente. Il pacchetto core acquisisce i metodi &lt;code>isEventPointerSame&lt;/code> e &lt;code>isAddressPointerSame&lt;/code> per la deduplicazione dei riferimenti event, e il pacchetto common aggiunge &lt;code>user.blossomServers$&lt;/code> per risolvere i server media Blossom di un utente. Applesauce alimenta noStrudel, Satellite e diversi altri client web, quindi queste correzioni si propagano attraverso il livello client web.&lt;/p>
&lt;h3 id="wisp-distribuisce-16-rilasci-in-una-settimana">Wisp distribuisce 16 rilasci in una settimana&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito 16 rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.9.3-beta">v0.9.3-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.13.1-beta">v0.13.1-beta&lt;/a> questa settimana. Le aggiunte di funzionalità includono supporto multi-account, una modalità notifiche zen per interruzioni ridotte, bozze e post programmati, filtri di sicurezza dei contenuti e una nuova icona fiamma.&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>, l&amp;rsquo;app di note private cifrate e storage file, ha distribuito la &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.2.0">v1.2.0&lt;/a> il 20 marzo. Il rilascio aggiunge la cattura dalla fotocamera direttamente dall&amp;rsquo;app, il ridimensionamento delle immagini prima dell&amp;rsquo;upload per ridurre i costi di storage, e pinch-to-zoom per esaminare le immagini archiviate. Manent archivia note e file cifrati sui relay Nostr usando il keypair dell&amp;rsquo;utente, rendendo il telefono o l&amp;rsquo;app desktop un thin client che può ricostruire il suo stato completo dai dati dei 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>, il client di video brevi, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.7">1.0.7&lt;/a> il 21 marzo con un watchdog per la riproduzione video che riprende automaticamente i video bloccati. Dopo l&amp;rsquo;infrastruttura di test E2E e il caricamento diretto MP4 nella &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>, questo rilascio mira al percorso di errore di riproduzione rimanente: video che si fermano a metà stream senza generare un errore.&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>, l&amp;rsquo;estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> (Browser Extension Signer), ha distribuito la &lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.2">v3.14.2&lt;/a> il 18 marzo con la visualizzazione QR code dell&amp;rsquo;indirizzo Lightning e supporto alla firma Schnorr. L&amp;rsquo;aggiunta di Schnorr allinea l&amp;rsquo;estensione browser con lo schema di firma secp256k1 che Nostr usa nativamente.&lt;/p>
&lt;h3 id="noornote-da-v065-a-v0611">NoorNote da v0.6.5 a v0.6.11&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, l&amp;rsquo;app per prendere appunti, ha distribuito sette rilasci dalla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.5">v0.6.5&lt;/a> alla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.11">v0.6.11&lt;/a>. L&amp;rsquo;aggiunta principale sono i Follow Pack: bundle curati di account che gli utenti possono esplorare e sottoscrivere in blocco, simili alle Liste Twitter ma pensati per l&amp;rsquo;onboarding. Gli utenti possono creare, modificare e condividere Follow Pack con titoli, descrizioni e immagini di copertina personalizzati. La serie aggiorna anche la libreria Nostr sottostante da NDK v2 a v3, che porta una gestione migliorata delle connessioni relay e delle sottoscrizioni. Le note con immagini e un&amp;rsquo;esperienza di connessione relay ridisegnata completano il ciclo.&lt;/p>
&lt;h3 id="nak-v0191-e-v0192">nak v0.19.1 e v0.19.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf per interagire con i relay, codificare e decodificare identificatori &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), firmare event e interrogare dati dei relay, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.2">v0.19.2&lt;/a> il 17 e 20 marzo. Le due point release seguono l&amp;rsquo;aggiunta della UI group-forum &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/">v0.19.0&lt;/a> dalla settimana scorsa.&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>, l&amp;rsquo;app calendario decentralizzata costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), ha distribuito la &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.1">v0.2.1&lt;/a> il 20 marzo. Il rilascio corregge un problema nel template delle notifiche che influiva sui promemoria degli eventi. Calendar archivia gli event come kind 31922 (basati su data) e kind 31923 (basati su orario) di Nostr, permettendo a qualsiasi client Nostr di renderizzare i dati calendario se sceglie di supportare quei kind. L&amp;rsquo;app è costruita dal team Formstr, che mantiene anche Formstr (moduli decentralizzati) e Pollerama (sondaggi).&lt;/p>
&lt;h3 id="nym-da-v350-a-v353">NYM da v3.50 a v3.53&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a>, il client di chat effimero leggero collegato a Bitchat, ha distribuito 28 rilasci dalla v3.50 alla v3.53 (le versioni patch incrementano rapidamente). La funzionalità più notevole è Nymbot, un chat bot integrato che risponde alle menzioni &lt;code>@nymbot&lt;/code> nei canali e fornisce funzioni di stato e gestione dei relay. Una &amp;ldquo;hardcore mode&amp;rdquo; genera un keypair fresco per ogni messaggio inviato, rendendo i thread di conversazione non collegabili a livello di identità. Il compromesso è chiaro: si perde l&amp;rsquo;identità persistente ma si guadagna l&amp;rsquo;anonimato per messaggio. Il livello proxy relay ha anche ricevuto lavoro, con worker proxy relay sharded per migliore connettività, supporto canali geohash, e tolleranza al clock skew per nodi con orologi di sistema imprecisi.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="ditto-aggiunge-bridge-bluesky-e-integrazione-wikipedia">Ditto aggiunge bridge Bluesky e integrazione Wikipedia&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, il client social Nostr personalizzabile del team Soapbox, ha registrato oltre 300 commit questa settimana su tre percorsi di funzionalità distinti. Il primo è un bridge Bluesky (19 commit) che renderizza i post Bluesky inline come thread completi in stile feed, aggiunge navigazione sidebar a una pagina di scoperta Bluesky alimentata dal feed ufficiale Discover (whats-hot), e collega pulsanti di azione per commentare, condividere, reagire e copiare link. Quando un utente risponde a un post Bluesky dall&amp;rsquo;interno di Ditto, la modale di composizione mostra un avviso che nota la natura cross-protocollo dell&amp;rsquo;interazione. Le reazioni kind 17 &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> (External Content IDs) alimentano il modello cross-protocollo: un utente Nostr reagisce a un post Bluesky, e la reazione viene archiviata come un event Nostr standard che referenzia l&amp;rsquo;identificatore di contenuto esterno. Questo è lo stesso pattern NIP-73 che potrebbe collegare reazioni a qualsiasi contenuto esterno, dai post Bluesky ai video YouTube alle pagine web.&lt;/p>
&lt;p>Il secondo percorso è un&amp;rsquo;integrazione Wikipedia (9 commit). Ditto ora renderizza contenuti ricchi di articoli Wikipedia sulle pagine di dettaglio invece di anteprime link generiche, aggiunge autocompletamento nella ricerca con miniature degli articoli, e fornisce una pagina &lt;code>/wikipedia&lt;/code> che attinge contenuti in evidenza dall&amp;rsquo;API Wikipedia. I risultati di Wikipedia e Archive.org appaiono anche nel dropdown di autocompletamento della ricerca generale. Il terzo percorso è il supporto piattaforma iOS tramite Capacitor, con script di build remoto e configurazione piattaforma che arrivano insieme a una revisione della UI (55 commit) che sostituisce gli header con backdrop-blur con un nuovo design di navigazione basato su arco su ogni pagina dell&amp;rsquo;app. I 314 commit muovono Ditto da un client solo-Nostr verso un aggregatore multi-protocollo che tratta Bluesky e Wikipedia come sorgenti di contenuto di prima classe accanto al feed Nostr.&lt;/p>
&lt;h3 id="pika-costruisce-una-pipeline-ci-forge-nip-34">Pika costruisce una pipeline CI forge NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica cifrata basata su Marmot, ha unito 33 PR questa settimana focalizzate su un forge &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> self-hosted con CI pre-merge. Il forge è un livello di hosting git che riceve patch come event NIP-34, esegue controlli CI prima del merge, e riporta lo stato strutturato tramite event Nostr. La &lt;a href="https://github.com/sledtools/pika/pull/701">PR #701&lt;/a> aggiunge CI pre-merge e nightly basata su lane, dove ogni percorso di codice (Rust, TypeScript, build Apple) gira nella propria lane con stato pass/fail indipendente. La &lt;a href="https://github.com/sledtools/pika/pull/715">PR #715&lt;/a> riduce gli agenti CI gestiti a container Incus OpenClaw per l&amp;rsquo;isolamento, e la &lt;a href="https://github.com/sledtools/pika/pull/733">PR #733&lt;/a> aggiunge una CLI &lt;code>ph forge&lt;/code> per interagire con il forge ospitato dalla riga di comando. PR di supporto gestiscono i permessi di scrittura al repo per i merge (&lt;a href="https://github.com/sledtools/pika/pull/736">PR #736&lt;/a>), metadati CI strutturati con badge di stato live (&lt;a href="https://github.com/sledtools/pika/pull/722">PR #722&lt;/a>), split delle build Apple nightly (&lt;a href="https://github.com/sledtools/pika/pull/738">PR #738&lt;/a>), e correzioni di auth e ricerca branch del forge (&lt;a href="https://github.com/sledtools/pika/pull/734">PR #734&lt;/a>). Questo è uno dei primi sistemi CI/CD funzionanti costruiti sopra gli event git NIP-34, spostando l&amp;rsquo;hosting del codice sorgente basato su Nostr oltre lo scambio base di patch verso il workflow di merge-and-test che gli sviluppatori si aspettano da GitHub o GitLab.&lt;/p>
&lt;h3 id="nostria-aggiunge-comunità-snippet-di-codice-e-gestione-event-vocali">Nostria aggiunge comunità, snippet di codice e gestione event vocali&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform mantenuto da sondreb, ha dedicato questa settimana a estendere la superficie app oltre il filtraggio Web of Trust coperto nel #14. L&amp;rsquo;aggiunta principale è un&amp;rsquo;implementazione completa di &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> (Moderated Communities) con creazione comunità, configurazione moderatori e relay, tracciamento approvazione post con anteprime immagini, e una pagina comunità dedicata con tab Post e Moderatori.&lt;/p>
&lt;p>Lo stesso arco di lavoro aggiunge anche rendering e editing di snippet di codice con un editor con evidenziazione della sintassi, supporto risposte a event vocali per conversazioni audio, impostazioni relay chat per messaggi diretti, condivisione canali tramite la Web Share API, un sistema di docking toolbar per il media player, registrazione in-app per l&amp;rsquo;ultimo servizio Web of Trust di Brainstorm, flussi di invio e ricezione denaro nei DM usando NWC e fatture BOLT-11, gestione GIF nativa Nostr, e un percorso di importazione RSS più robusto per i musicisti che può raccogliere gli split Lightning esistenti dai feed podcast.&lt;/p>
&lt;h3 id="iterazione-rapida-nostr-vpn">Iterazione rapida nostr-vpn&lt;/h3>
&lt;p>Oltre al &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">lancio iniziale&lt;/a>, il log dei commit di &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a> rivela i problemi specifici incontrati durante il deployment reale. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.3">v0.2.3&lt;/a> fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.5">v0.2.5&lt;/a> hanno aggiunto lo script di installazione iniziale e la CLI cross-platform. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.6">v0.2.6&lt;/a> e la &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.7">v0.2.7&lt;/a> hanno portato il supporto Windows, che ha richiesto il quoting del percorso UAC per le scritture di configurazione e aggiornamenti di configurazione di proprietà del daemon. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.8">v0.2.8&lt;/a> fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.10">v0.2.10&lt;/a> hanno corretto le azioni del servizio GUI Windows, la gestione dei sottoprocessi CLI e la configurazione del servizio machine-scoped. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.12">v0.2.12&lt;/a> ha sostituito la scoperta LAN con il pairing LAN a tempo, un flusso avviato dall&amp;rsquo;utente dove due dispositivi sulla stessa rete locale si accoppiano senza segnalazione relay. Il pattern è da manuale di testing sul campo in fase iniziale: ogni rilascio mira a uno specifico fallimento di deployment, la base utenti è abbastanza piccola per iterare quotidianamente, e lo sviluppatore usa lo strumento personalmente tra i rilasci.&lt;/p>
&lt;h3 id="build-automatizzate-comet">Build automatizzate Comet&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/comet">Comet&lt;/a> (precedentemente Captain&amp;rsquo;s Log), lo strumento di scrittura long-form nativo Nostr di Nodetec, ha prodotto oltre 40 build alpha automatizzate questa settimana. Comet è un&amp;rsquo;app desktop per scrivere e pubblicare articoli NIP-23 (Long-form Content), con storage locale delle bozze, editing markdown e pubblicazione one-click sul set di relay dell&amp;rsquo;utente. La pipeline di build automatizzata genera un rilascio taggato per ogni commit sul branch main, il che rende il conteggio grezzo dei rilasci fuorviante come misura della velocità delle funzionalità. Ciò che le 40 build mostrano è che l&amp;rsquo;app è in sviluppo attivo quotidiano, con ogni commit testato, pacchettizzato e reso disponibile per il download in pochi minuti.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> nella finestra 17-24 marzo:&lt;/p>
&lt;p>Nessun merge NIP è arrivato tra il 18 e il 24 marzo.&lt;/p>
&lt;p>&lt;strong>PR Aperte e Discussioni aggiornate nella finestra:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AA: Agenti Autonomi su Nostr&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2259">PR #2259&lt;/a>): Propone convenzioni per agenti autonomi che operano sulla rete Nostr. La PR definisce come gli agenti si identificano, scoprono servizi e si coordinano con altri agenti e umani attraverso event Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> (Search): Estensioni di ordinamento&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2283">PR #2283&lt;/a>): Aggiunge parametri di ordinamento alle query di ricerca NIP-50, inclusi top, hot, zaps e new. Questo permetterebbe ai client di richiedere risultati classificati dai relay che supportano la ricerca full-text invece di ordinare lato client.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-A5: Programmi WASM&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): Propone una convenzione per pubblicare e scoprire programmi WebAssembly su Nostr. I binari WASM potrebbero essere distribuiti come event Nostr, con i relay che servono come livello di scoperta per codice eseguibile portabile.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-CF: Combine Forces napps interoperabili&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2277">PR #2277&lt;/a>): Definisce una convenzione per applicazioni Nostr interoperabili (&amp;ldquo;napps&amp;rdquo;) che possono comporre funzionalità tra diversi client e servizi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP Snapshots&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>): Propone un meccanismo per snapshot dello stato dei relay, per la sincronizzazione e il backup dei relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP Checkpoints&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2278">PR #2278&lt;/a>): Propone event checkpoint per segnare lo stato valido noto dei relay, complementando la proposta snapshots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges): Refactoring Badge Sets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Ristruttura come le collezioni di badge sono organizzate e referenziate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document): Estensioni&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2280">PR #2280&lt;/a>): Aggiunge campi aggiuntivi al documento informativo del relay per metadati relay leggibili dalle macchine più ricchi.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinque-anni-di-marzo-di-nostr">Cinque Anni di Marzo di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#cinque-anni-di-febbraio-di-nostr">La newsletter del mese scorso&lt;/a> ha coperto come i febbrai di Nostr sono progrediti dalla riscrittura di NIP-01 (Basic Protocol Flow) attraverso l&amp;rsquo;ondata Damus sull&amp;rsquo;App Store fino alle reti mesh e le proposte per agenti. Questa retrospettiva traccia cosa è successo ogni marzo dal 2021 al 2026.&lt;/p>
&lt;h3 id="marzo-2021-due-commit">Marzo 2021: Due Commit&lt;/h3>
&lt;p>Quattro mesi dopo la sua nascita, il marzo di Nostr ha prodotto esattamente due commit al repository del protocollo, entrambi il 4 marzo. fiatjaf &lt;a href="https://github.com/nostr-protocol/nostr/commit/dcd8cc3">ha aggiunto link alle istanze nostwitter&lt;/a>, indirizzando i primi visitatori a deployment funzionanti, e &lt;a href="https://github.com/nostr-protocol/nostr/commit/54dfb46">ha aggiunto kind alla definizione base dei filtri&lt;/a>. Quel secondo commit è rivelatore: nel marzo 2021, non si potevano ancora filtrare gli event Nostr per kind. Il protocollo era così primitivo. Due o tre relay servivano la rete. Il gruppo Telegram era l&amp;rsquo;unico canale di coordinamento. Il repository NIPs non esisteva ancora; le proposte di protocollo vivevano come file nel repo principale nostr. fiatjaf era l&amp;rsquo;unico committer quel mese. L&amp;rsquo;intero output del marzo 2021 di quello che sarebbe diventato un protocollo che supporta VPN, giochi multiplayer e networking mesh cinque anni dopo entra in una singola diff git.&lt;/p>
&lt;h3 id="marzo-2022-costruzione-pre-damus">Marzo 2022: Costruzione Pre-Damus&lt;/h3>
&lt;p>Il repository principale del protocollo ha ricevuto zero commit nel marzo 2022. Lo sviluppo si era spostato interamente nei repository degli strumenti. &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, il client web Vue.js di fiatjaf e all&amp;rsquo;epoca l&amp;rsquo;interfaccia Nostr principale, ha ricevuto 5 commit incluso il supporto al deployment Docker e correzioni alla visualizzazione del nome di verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) che rimuovevano il prefisso &lt;code>_@&lt;/code> dai badge di verifica. &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a> di Robert C. Martin, il client desktop Clojure, ha registrato 13 o più commit aggiungendo threading, navigazione da tastiera e una finestra di editing. L&amp;rsquo;autore di software più famoso che costruiva attivamente su Nostr quel mese non era uno sviluppatore crypto ma la persona il cui &amp;ldquo;Clean Code&amp;rdquo; ha venduto milioni di copie, che scriveva un client Nostr in Clojure, una scelta di linguaggio che dice tutto sulla comunità iniziale: erano programmatori con opinioni forti che costruivano per sé stessi.&lt;/p>
&lt;p>La rete relay si era espansa a circa 15 relay con una base utenti attiva nell&amp;rsquo;ordine delle centinaia. Damus non esisteva ancora e non sarebbe stato creato fino ad aprile 2022. Nemmeno Nostream era apparso. Il lavoro del mese era infrastruttura: rendere gli strumenti esistenti più affidabili per la piccola comunità che li usava già quotidianamente.&lt;/p>
&lt;h3 id="marzo-2023-infrastruttura-post-esplosione">Marzo 2023: Infrastruttura Post-Esplosione&lt;/h3>
&lt;p>Un mese dopo l&amp;rsquo;ondata Damus sull&amp;rsquo;App Store e il superamento delle 300.000 chiavi pubbliche, il marzo 2023 riguardava l&amp;rsquo;assorbimento della crescita. Il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> ha unito 28 pull request, il secondo conteggio mensile più alto nella storia del protocollo. &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (Lists) è stato unito, dando ai client collezioni strutturate di follow, mute e segnalibri. &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles) è arrivato, NIP-78 (Application-Specific Data) ha fornito un kind di storage generale per le app che necessitavano di stato privato, e una riscrittura di &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) (&lt;a href="https://github.com/nostr-protocol/nips/pull/392">PR #392&lt;/a>) ha consolidato il flusso zap e chiarito la terminologia. La PR più discussa del mese era una proposta alternativa di gestione delle menzioni (&lt;a href="https://github.com/nostr-protocol/nips/pull/381">PR #381&lt;/a>) con oltre 50 commenti.&lt;/p>
&lt;p>Il nuovo progetto più importante è stato &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> (Nostr Development Kit), la libreria TypeScript per connessioni relay, firma event, caching e gestione sottoscrizioni. pablof7z ha fatto il &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/09e5e03">commit iniziale&lt;/a> il 16 marzo 2023, poi l&amp;rsquo;ha riscritto da zero 11 giorni dopo il 27 marzo (&amp;ldquo;praticamente un altro commit iniziale&amp;rdquo;), e aveva il supporto LNURL e zap funzionante entro il 31 marzo. NDK è passato dal nulla alla capacità zap in 15 giorni. Cinque giorni dopo la creazione di NDK, il 21 marzo, il team Alby ha creato &lt;a href="https://github.com/getAlby/nostr-wallet-connect">NWC&lt;/a> (Nostr Wallet Connect), l&amp;rsquo;implementazione di riferimento di &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> che connetteva i wallet Lightning alle applicazioni Nostr. I due progetti che avrebbero sostenuto i successivi tre anni di sviluppo Nostr basato sul web sono nati nella stessa finestra di 30 giorni. OpenSats non aveva ancora lanciato il suo fondo Nostr; la prima ondata non sarebbe arrivata fino a &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">luglio 2023&lt;/a>, quattro mesi dopo la creazione di NDK.&lt;/p>
&lt;p>Altre creazioni notevoli di quel mese includevano NostrGit, NostrChat, un progetto nostr-signing-device di LNbits, e nostrmo. &lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>, il client desktop Rust focalizzato sulla selezione intelligente dei relay, ha distribuito tre rilasci. Il protocollo era in modalità costruzione, e gli strumenti creati nel marzo 2023 sono ancora in uso tre anni dopo.&lt;/p>
&lt;h3 id="marzo-2024-maturazione-del-protocollo">Marzo 2024: Maturazione del Protocollo&lt;/h3>
&lt;p>Il marzo 2024 riguardava l&amp;rsquo;hardening del protocollo per l&amp;rsquo;uso a lungo termine. Il repository NIPs ha unito 12 pull request. La più significativa è stata &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff), &lt;a href="https://github.com/nostr-protocol/nips/pull/997">PR #997&lt;/a>, che è stata unita il 5 marzo dopo oltre 130 commenti e 44 giorni di revisione. Il thread di discussione è una capsula del tempo della comunità che dibatteva come costruire un GitHub decentralizzato. jb55 ha tracciato paralleli con &lt;code>git send-email&lt;/code>, Giszmo ha proposto di usare gli hash dei root commit per la scoperta cross-fork (&amp;ldquo;qualcosa che GitHub non fa e che noi potremmo&amp;rdquo;), mikedilger ha suggerito l&amp;rsquo;autenticazione con event firmati &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth) invece delle chiavi SSH, e fiatjaf ha liquidato bruscamente la necessità di generalità nel controllo versione: &amp;ldquo;non per ogni sistema di controllo versione, solo per git. Nessuno usa gli altri.&amp;rdquo; Entro poche ore dall&amp;rsquo;apertura della PR, fiatjaf aveva già convertito nak, go-nostr e gitstr per accettare patch su Nostr. DanConwayDev, il cui ngit era già un grantee OpenSats, era tra i contributori più attivi alla discussione. È stato unito anche un campo bot per i metadati dei profili, dando ai client un modo leggibile dalle macchine per distinguere gli account automatizzati da quelli umani.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha distribuito la v0.85.0 con supporto event git, articoli wiki, rendering di dati medici e editing di contenuti in un singolo rilascio. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha raggiunto la v0.10.0. &lt;a href="https://github.com/Spl0itable/nosflare">Nosflare&lt;/a>, un relay Nostr serverless in esecuzione su Cloudflare Workers, ha dimostrato che la logica relay poteva girare all&amp;rsquo;edge. OpenSats ha emesso una &lt;a href="https://opensats.org/blog/bruno-garcia-receives-lts-grant">grant di Supporto a Lungo Termine a Bruno Garcia&lt;/a> per contributi sostenuti al client Amethyst.&lt;/p>
&lt;h3 id="marzo-2025-espansione-dellinfrastruttura">Marzo 2025: Espansione dell&amp;rsquo;Infrastruttura&lt;/h3>
&lt;p>Il marzo 2025 ha prodotto 10 NIP uniti. Il titolo principale è stato &lt;a href="https://nostrcompass.org/it/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>, che è stata unita il 3 marzo dopo un percorso di 25 mesi. dskvr ha proposto per la prima volta il monitoraggio dei relay nel febbraio 2023, gli è stato detto che poteva essere fatto lato client, ha spiegato perché connettersi a migliaia di relay contemporaneamente era impraticabile per i singoli client, ha attraversato sette bozze complete, ha costruito nodi di monitoraggio in otto regioni geografiche (Northeast US, Brasile, US-West, US-East, Australia, India, Corea, Sud Africa), e ha atteso che il tooling relay si mettesse al passo. Quando è stata unita, le implementazioni esistevano già in nostr.watch, relaypag.es, monitorlizard, Snort, noStrudel e Jumble. I dati NIP-66 avrebbero poi alimentato i benchmark outbox di Nostrability &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">coperti nella Newsletter #12&lt;/a>. È stato unito anche NIP-C0 (Code Snippets) (&lt;a href="https://github.com/nostr-protocol/nips/pull/1852">PR #1852&lt;/a>, 63 commenti), aggiungendo event kind 1337 per la condivisione di codice sorgente.&lt;/p>
&lt;p>I primi server MCP per Nostr sono apparsi questo mese. &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">nostr-mcp-server&lt;/a> è apparso il 23 marzo e &lt;a href="https://github.com/getAlby/nwc-mcp-server">nwc-mcp-server&lt;/a> il 14 marzo, solo quattro mesi dopo che Anthropic ha annunciato il Model Context Protocol nel novembre 2024. Questi primi bridge hanno preceduto l&amp;rsquo;SDK completo di &lt;a href="https://nostrcompass.org/it/topics/contextvm/">ContextVM&lt;/a> e il lavoro di commercio agenti che è seguito alla fine del 2025 e inizio 2026.&lt;/p>
&lt;p>&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a> ha distribuito la v0.14.0. &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, il client web di hodlbod con gestione feed consapevole dei relay, ha distribuito tre rilasci. OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/10th-wave-of-nostr-grants">decima ondata di grant Nostr&lt;/a>, continuando la pipeline di finanziamento attiva dalla metà del 2023.&lt;/p>
&lt;h3 id="marzo-2026-convergenza">Marzo 2026: Convergenza&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;attività di marzo 2026 è tratta dai numeri di Nostr Compass &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/">#12&lt;/a> fino al &lt;a href="">#15&lt;/a> (questo numero).&lt;/em>&lt;/p>
&lt;p>Il marzo 2026 è il mese in cui thread disparati sono convergiti in sistemi funzionanti. Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">Marmot Development Kit&lt;/a> ha distribuito il suo primo rilascio pubblico con media cifrati, binding multi-linguaggio, e una migrazione ChaCha20-Poly1305 che ha richiesto aggiornamenti coordinati tra specifica, Rust e TypeScript. &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#shopstr-and-milk-market-open-mcp-commerce-surfaces">Shopstr e Milk Market&lt;/a> hanno aggiunto superfici di commercio MCP per acquisti guidati da agenti. &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> relay auth è arrivato simultaneamente in &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 e OAuth Bunker, chiudendo il cerchio tra software signer, relay e bunker. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/#notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">Notedeck&lt;/a> ha distribuito aggiornamenti software nativi Nostr usando event di rilascio &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata).&lt;/p>
&lt;p>Questa settimana, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">BigBrotr&lt;/a> ha scansionato l&amp;rsquo;intera rete relay alla ricerca di chiavi private trapelate e ha pubblicato sia l&amp;rsquo;analisi che un checker DVM. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">Nostr VPN&lt;/a> ha dimostrato che il modello di chiavi di Nostr funziona per l&amp;rsquo;infrastruttura di rete, non solo per i social media. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">DOOM&lt;/a> ha dimostrato che scoperta Nostr, cifratura Marmot e trasporto QUIC possono far girare un gioco multiplayer in tempo reale. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#amber-v500-e-v501">Amber&lt;/a> è passato alla v5.0.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#wisp-distribuisce-16-rilasci-in-una-settimana">Wisp&lt;/a> ha distribuito 16 rilasci in sette giorni. Venticinque o più rilasci taggati sono arrivati da progetti importanti in una singola settimana.&lt;/p>
&lt;p>Sette NIP sono stati uniti nei primi 24 giorni del mese. Il protocollo ha aggiunto il markup Djot &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki), i limiti di input &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), la logica di query booleana &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters), e le asserzioni Web of Trust &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Le proposte aperte spaziavano dagli agenti autonomi (NIP-AA) ai programmi WASM (NIP-A5) alle estensioni di ordinamento per la ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Cinque marzi di Nostr tracciano un arco chiaro. Nel 2021, una persona ha fatto due commit a un protocollo che non poteva ancora filtrare event per kind. Entro il 2023, NDK e NWC sono nati a cinque giorni di distanza per assorbire l&amp;rsquo;esplosione post-Damus. Entro il 2024, un thread di PR da 141 commenti dibatteva come la collaborazione git dovrebbe funzionare su un protocollo sociale. Entro il 2025, una specifica di monitoraggio relay che era stata pazientemente riscritta sette volte in 25 mesi è stata finalmente unita. Nel 2026, qualcuno si è irritato per il fatto che Tailscale richiede un account e ha costruito una VPN usando keypair Nostr, mentre qualcun altro ha distribuito DOOM multiplayer che scopre i peer tramite relay Nostr e cifra il gameplay tramite Marmot. La scansione di BigBrotr di 41 milioni di event su 1.085 relay dà una misura concreta di quanto la rete sia cresciuta. La superficie del protocollo nel marzo 2026 sarebbe stata irriconoscibile per il marzo 2021, ma il modello sottostante, event firmati da chiavi secp256k1 e distribuiti attraverso relay, non è cambiato.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #14</title><link>https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa il supporto completo ai metodi &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> aggiunge il supporto multi-relay nella &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> distribuisce la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrato e permessi signer più granulari, e &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> rimuove un percorso keysend NWC rischioso nella &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> distribuisce un updater firmato nella &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> che scopre i rilasci attraverso event &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mentre &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corregge lo stato &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsoleto, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> rivede i suoi risultati di benchmark con dati corretti, e &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> testa sottoscrizioni relay dirette per i DM. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> distribuisce la &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> distribuisce la &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> continua a perfezionare l&amp;rsquo;interoperabilità Marmot nella &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 il suo runtime nella &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, e &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> aggiunge il filtraggio Web of Trust tramite &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Il repository NIPs unisce il markup Djot per &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki) e un limite di input di 5000 caratteri per &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), mentre nuove proposte aprono discussioni su file &lt;code>.nostrkey&lt;/code> per &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e un URI share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa il supporto completo ai metodi &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> aggiunge il supporto multi-relay nella &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> distribuisce la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrato e permessi signer più granulari, e &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> rimuove un percorso keysend NWC rischioso nella &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> distribuisce un updater firmato nella &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> che scopre i rilasci attraverso event &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mentre &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corregge lo stato &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsoleto, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> rivede i suoi risultati di benchmark con dati corretti, e &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> testa sottoscrizioni relay dirette per i DM. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> distribuisce la &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> distribuisce la &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> continua a perfezionare l&amp;rsquo;interoperabilità Marmot nella &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 il suo runtime nella &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, e &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> aggiunge il filtraggio Web of Trust tramite &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Il repository NIPs unisce il markup Djot per &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki) e un limite di input di 5000 caratteri per &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), mentre nuove proposte aprono discussioni su file &lt;code>.nostrkey&lt;/code> per &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e un URI share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="il-supporto-wallet-connect-si-amplia-e-i-client-wallet-stringono-i-percorsi-di-errore">Il supporto Wallet Connect si amplia, e i client wallet stringono i percorsi di errore&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>, che porta la sua implementazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> vicino alla copertura completa del protocollo. La patch aggiunge &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>, metodi per hold invoice, supporto keysend con record TLV, discovery delle capacità tramite kind &lt;code>13194&lt;/code>, e event di notifica su kind &lt;code>23197&lt;/code> con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Questo dà al client una superficie NWC molto più ampia senza dipendere da estensioni specifiche dell&amp;rsquo;app.&lt;/p>
&lt;p>Lo stack wallet circostante si è mosso nella stessa direzione. &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, il nodo Lightning auto-custodiale e servizio wallet dietro molti deployment NWC, ha distribuito la &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a> con supporto multi-relay e flussi di connessione e swap più semplici. &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>, il wallet Lightning mobile, ha unito la &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a> rimuovendo il supporto keysend NWC dopo aver identificato un percorso silenzioso di drenaggio fondi in quel flusso, correggendo anche la gestione degli event in sospeso e l&amp;rsquo;attività Cashu. La connettività wallet su Nostr si sta ampliando, e gli implementatori stanno rimuovendo i flussi difficili da rendere sicuri.&lt;/p>
&lt;h3 id="notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">Notedeck sposta la scoperta dei rilasci su Nostr&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Notedeck della settimana scorsa&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop nativo del team Damus, ha distribuito la &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> dopo aver unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>. Il nuovo updater si sottoscrive a event di rilascio firmati di kind &lt;code>1063&lt;/code>, abbina la piattaforma locale, scarica il binario referenziato e verifica il suo hash SHA256 prima dell&amp;rsquo;installazione. I metadati di rilascio non devono più provenire dall&amp;rsquo;API GitHub o dal sito web di un progetto. Una pubkey di rilascio fidata e una connessione relay sono sufficienti.&lt;/p>
&lt;p>La stessa patch aggiunge una CLI &lt;code>notedeck-release&lt;/code> che pubblica quegli event dagli artefatti di rilascio GitHub, il che significa che la pipeline di rilascio ora ha un percorso di pubblicazione nativo Nostr oltre a un percorso di scoperta nativo Nostr. Avvicina anche il modello di updater Damus e Notedeck al flusso di rilascio firmato pubblicato via relay di Zapstore: lo strumento &lt;code>zsp&lt;/code> di Zapstore gestisce già gli asset software come event kind &lt;code>1063&lt;/code> o &lt;code>3063&lt;/code>, quindi questo percorso non è vincolato a un singolo client o un singolo publisher. Il resto della release candidate è lavoro desktop pratico: colonne di follow, profilo &amp;ldquo;View As User&amp;rdquo;, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap), statistiche note in tempo reale e gestione delle limitazioni &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document), ma l&amp;rsquo;updater è la parte che probabilmente sopravviverà a questo singolo ciclo di rilascio.&lt;/p>
&lt;h3 id="lo-stato-dei-relay-si-avvicina-al-comportamento-runtime">Lo stato dei relay si avvicina al comportamento runtime&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> ha unito la &lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>, sostituendo un ID event di relay-list obsoleto memorizzato con una query diretta al database per l&amp;rsquo;event kind &lt;code>10002&lt;/code> più recente. Quando il vecchio valore diventava obsoleto, le operazioni di aggiunta e rimozione relay potevano ricadere su bootstrap o liste vecchie di un anno, facendo apparire alcune modifiche ai relay come riuscite mentre lasciavano lo stato attivo invariato. La &lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a> corregge un secondo percorso di errore eliminando lo stato &lt;code>lock.mdb&lt;/code> obsoleto durante la compattazione LMDB in modo che l&amp;rsquo;app non vada in crash con &lt;code>SIGBUS&lt;/code> al prossimo avvio.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> ha aperto la &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>, che si sottoscrive direttamente ai relay di scrittura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) di un partner di chat mentre una conversazione è aperta, mantenendo il cache server come fallback. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> ha aperto la &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>, che combina scoring randomizzato dei relay, filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> da nostr.watch e Thompson sampling per trasformare la selezione dei relay da un&amp;rsquo;euristica fissa in una policy appresa. I client hanno a lungo trattato la scelta dei relay come dati di configurazione. Sempre più app ora la trattano come stato live che necessita di logica di misurazione e riparazione.&lt;/p>
&lt;h2 id="rilasci">Rilasci&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>, il client Android di Primal, ha distribuito la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a> con un nuovo ciclo di sondaggi e wallet. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a> aggiunge il voto nei sondaggi basato su zap, la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a> pagina il caricamento dei voti in modo che i sondaggi più grandi restino utilizzabili, e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a> recupera le ricevute zap per tutte le transazioni. Lo stesso rilascio tagga anche gli event supportati con metadati client &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers) nella &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>, che aiuta i client downstream ad attribuire le origini degli event in modo più pulito.&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/">Come da copertura di Amber della settimana scorsa&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer Android per i flussi &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>. Il rilascio si basa sul suo recente lavoro relay-auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> con più hardening operativo: la &lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a> aggiunge Tor integrato insieme al supporto Orbot, la &lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a> sostituisce i permessi di cifratura grossolani basati sui NIP con regole specifiche per tipo di contenuto, e la &lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a> rimuove i permessi di rete dal flavor offline mentre la &lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a> aggiunge controlli CI per mantenerli così. La &lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a> sposta anche lo storage del PIN nel DataStore cifrato.&lt;/p>
&lt;p>Questo rilascio stringe il confine del signer stesso. Questo è utile per qualsiasi flusso Android che affida chiavi reali o decisioni di relay-auth ad Amber, perché la parte difficile non è solo cosa il signer può fare. È anche quanto strettamente può essere limitato nel suo ambito.&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/">Come da copertura di Route96 della settimana scorsa&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, il media server che supporta Blossom e &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (HTTP File Storage), ha rilasciato la &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>. Il rilascio sposta la configurazione e lo stato della whitelist nel database con hot reload e aggiunge policy di conservazione per file freddi o invecchiati. Aggiunge anche un endpoint &lt;code>GET /user/files&lt;/code> più ricco e il tracciamento delle statistiche dei file per download e egress, che dà agli operatori maggiore visibilità su come il loro storage server viene utilizzato.&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/">Come da copertura di OpenChat della settimana scorsa&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, il client chat basato su Avalonia costruito sullo stack Marmot, ha distribuito la &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a> dopo una settimana di lavoro rapido sul protocollo. Il &lt;a href="https://github.com/DavidGershony/openChat/commit/c33895d6b1a198f01b9b01a7be974bdce033fb9c">commit c33895d&lt;/a> avvolge gli event Welcome in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> e rimuove i vecchi shim di normalizzazione tag MIP-00, il &lt;a href="https://github.com/DavidGershony/openChat/commit/2738ff428154f60f50debb8f2a53662d427b28f1">commit 2738ff4&lt;/a> completa l&amp;rsquo;audit di conformità MIP-02, e il &lt;a href="https://github.com/DavidGershony/openChat/commit/8e470cf7945bced010168c8229d73d67db638b9f">commit 8e470cf&lt;/a> fa lo stesso per la cifratura dei messaggi di gruppo MIP-03. Il &lt;a href="https://github.com/DavidGershony/openChat/commit/129ca37e264efaa2d1a8b04fe95cd72e5e212547">commit 129ca37&lt;/a> consolida anche la gestione NIP-44 sull&amp;rsquo;implementazione marmot-cs condivisa, riducendo il rischio di deriva crittografica lato client.&lt;/p>
&lt;h3 id="nak-v0190-e-v0191">nak v0.19.0 e v0.19.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.0">v0.19.0&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>. La serie 0.19 aggiunge una UI group-forum nel &lt;a href="https://github.com/fiatjaf/nak/commit/5f4efdbc69a36fc80ea3f97b2cdee1db6a7c5b47">commit 5f4efdb&lt;/a>, passa le modifiche dei metadati di gruppo a un flusso di sostituzione completa nel &lt;a href="https://github.com/fiatjaf/nak/commit/da0b75337198010687aceb6a07bbae67407faee3">commit da0b753&lt;/a>, e sostituisce la vecchia gestione &lt;code>no-text&lt;/code> con &lt;code>supported_kinds&lt;/code> nel &lt;a href="https://github.com/fiatjaf/nak/commit/bef67d35d259e0450debf0fd870e1a937a2406bf">commit bef67d3&lt;/a>. Per gli implementatori di gruppi, questo mantiene la CLI allineata con la direzione in cui si stanno muovendo le specifiche e i client dei gruppi.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Amethyst della settimana scorsa&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android con una delle superfici protocollari più ampie in Nostr, ha continuato a costruire sul suo lavoro wallet e relay dopo la patch NIP-47. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1853">PR #1853&lt;/a> aggiunge query COUNT &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (Event Counting) nelle schermate di gestione relay, così gli utenti possono vedere quanti event ogni relay detiene effettivamente per home feed, notifiche, DM e dati indice. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1849">PR #1849&lt;/a> aggiunge caricamenti di file cifrati per le chat &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), con un percorso di retry per caricamenti non cifrati quando un host di storage rifiuta la versione cifrata.&lt;/p>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1791">PR #1791&lt;/a> porta anche il login bunker desktop completo &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) con un indicatore heartbeat, che è importante perché i fallimenti di firma remota spesso appaiono come rotture casuali della UI dal lato dell&amp;rsquo;utente. Il client mostra se il signer è attivo e quanto recentemente ha risposto, rendendo anche ovvio quando la sessione corrente 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>, il client multi-piattaforma costruito attorno a uno stack local-first, ha unito la &lt;a href="https://github.com/nostria-app/nostria/pull/561">PR #561&lt;/a> aggiungendo il filtraggio Web of Trust per feed e risposte nei thread. La funzionalità usa i dati di ranking del trust-service esistente e li espone sia come filtro feed che come filtro risposte, nascondendo gli autori il cui rank non supera la soglia preservando la struttura del thread quando sono presenti discendenti fidati. Questo dà agli utenti un livello intermedio tra &amp;ldquo;mostra tutti&amp;rdquo; e la curazione basata su liste hardcoded.&lt;/p>
&lt;p>La stessa settimana ha portato anche la &lt;a href="https://github.com/nostria-app/nostria/pull/563">PR #563&lt;/a>, che aggiunge filtraggio dei contenuti e supporto repost alla pagina sommario. Fuori dalla lista PR tracciata, Nostria ha anche completato più della sua superficie per utenti avanzati. Ora supporta l&amp;rsquo;ultimo servizio Web of Trust di Brainstorm con registrazione in-app, insieme a flussi di invio e ricezione denaro nei DM usando NWC e fatture BOLT-11. Aggiunge anche la gestione GIF nativa Nostr tramite l&amp;rsquo;emoji NIP e un percorso di importazione RSS più robusto per i musicisti che può raccogliere gli split Lightning esistenti dai feed podcast. Nostria tratta ranking, media, pagamenti e pubblicazione come un&amp;rsquo;unica superficie app connessa.&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>, il client iOS mantenuto da nostur-com, ha aperto la &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a> per trasformare il routing outbox da un piano fisso in una policy con punteggio. La patch aggiunge scoring randomizzato dei relay, filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> con un feed nostr.watch in cache, e Thompson sampling in modo che i dati di successo e fallimento dei relay cambino le selezioni future. Il design mantiene una valvola di sicurezza quando troppi relay verrebbero filtrati e preserva i relay &lt;code>.onion&lt;/code>. Questo è uno degli esempi più chiari attualmente di un client che tratta la selezione dei relay come un sistema adattivo.&lt;/p>
&lt;h3 id="nostrability-outbox">Nostrability Outbox&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">Come dal precedente report sui benchmark Outbox&lt;/a>, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>, il progetto di benchmark e analisi focalizzato sul routing client &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>, ha dedicato la settimana a stringere le proprie affermazioni. La &lt;a href="https://github.com/nostrability/outbox/pull/35">PR #35&lt;/a> sostituisce i risultati Thompson-sampling gonfiati con un re-benchmark completo su 1.511 esecuzioni e raccomanda la variante &lt;code>CG3&lt;/code> per il routing in stile NDK. La &lt;a href="https://github.com/nostrability/outbox/pull/43">PR #43&lt;/a> aggiunge decadimento e confronti per caso d&amp;rsquo;uso, corregge un bug di cache-poisoning &lt;code>0 follows&lt;/code>, poi riesegue il dataset Telluride dopo aver fissato i TTL della cache.&lt;/p>
&lt;p>Questo non è lavoro di prodotto nel senso usuale, ma è importante per gli autori di client perché i numeri del progetto sono ora più precisi e meno lusinghieri nei punti in cui avevano precedentemente sovrastimato. Il risultato corretto è comunque utile. La selezione randomizzata continua a battere il routing puramente deterministico nei casi di cui Outbox si occupa, l&amp;rsquo;apprendimento in stile Thompson può migliorare materialmente la copertura quando i client persistono la cronologia utile dei relay, e il filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> riduce il tempo sprecato su relay inattivi. Il lavoro si sta anche trasformando in proposte di implementazione concrete, incluse &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>, e &lt;a href="https://github.com/hzrd149/applesauce/pull/54">applesauce #54&lt;/a> più &lt;a href="https://github.com/hzrd149/applesauce/pull/55">applesauce #55&lt;/a>.&lt;/p>
&lt;h3 id="backend-white-noise">Backend White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, il backend Rust usato da White Noise e altri strumenti Marmot, ha unito due patch di hardening al confine della gestione media Blossom. La &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/637">PR #637&lt;/a> impone HTTPS sugli URL Blossom e aggiunge un timeout di upload, mentre la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/642">PR #642&lt;/a> limita i download blob a &lt;code>100 MiB&lt;/code> per impedire che pull di media sovradimensionati si trasformino in un percorso denial-of-service. Per il software di messaggistica privata, gli URL dei media sono una delle interfacce più critiche tra la logica applicativa cifrata e l&amp;rsquo;infrastruttura di rete non fidata. Questa settimana il team ha stretto quel confine.&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 libreria Rust per il protocollo, ha unito la &lt;a href="https://github.com/rust-nostr/nostr/pull/1280">PR #1280&lt;/a> aggiungendo costruttori di convenienza per &lt;code>LocalRelayBuilderNip42&lt;/code>. I nuovi helper di lettura e scrittura danno ai setup di relay embedded e test un modo più chiaro per trasformare la policy auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in codice. Questa è una piccola patch alla libreria, ma è importante per i team che costruiscono relay locali o integrati nelle app che necessitano di auth attivata senza ripetere boilerplate ogni volta.&lt;/p>
&lt;h3 id="pika">Pika&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/">Come dalla copertura precedente di Pika&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica basata su Marmot, ha distribuito &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a> e &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v1.1.1">pikachat-v1.1.1&lt;/a> con un ciclo di rilascio focalizzato sulla convergenza del runtime. La &lt;a href="https://github.com/sledtools/pika/pull/542">PR #542&lt;/a> introduce una facade runtime Marmot condivisa per CLI e sidecar, con l&amp;rsquo;host dell&amp;rsquo;app che si sposta sulla stessa superficie. La &lt;a href="https://github.com/sledtools/pika/pull/556">PR #556&lt;/a> stringe il ciclo di vita degli agenti OpenClaw e lo stato di provisioning, mentre la &lt;a href="https://github.com/sledtools/pika/pull/600">PR #600&lt;/a> aggiunge il ripristino da backup e una sicurezza di recovery più rigorosa per gli ambienti gestiti.&lt;/p>
&lt;p>La superficie utente diretta qui è più piccola rispetto all&amp;rsquo;ultimo writeup su Pika, ma il cambiamento architetturale è significativo. Riunire logica di gruppo, media, chiamate e sessioni dietro un unico runtime condiviso riduce la possibilità che app e daemon divergano man mano che lo stack Marmot cresce.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki): Passaggio da Asciidoc a Djot&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>): I contenuti wiki su kind &lt;code>30818&lt;/code> ora usano Djot come formato di markup canonico. Il testo unito aggiunge il comportamento esplicito dei wikilink, esempi di merge-request per kind &lt;code>818&lt;/code>, esempi di redirect per kind &lt;code>30819&lt;/code>, e esempi di normalizzazione per script non latini nei tag &lt;code>d&lt;/code>. Questo dà agli implementatori un target di parsing più pulito rispetto ad Asciidoc e rimuove un altro percorso di specifica che dipendeva da un toolchain centrato su Ruby.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities): Aggiunta limite di input&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2264">PR #2264&lt;/a>): La specifica ora raccomanda di limitare le stringhe di entità codificate Bech32 a 5000 caratteri. Questa è una piccola modifica con valore reale per i parser, perché le stringhe NIP-19 ora appaiono nei flussi QR, deep link, fogli di condivisione e input incollato dagli utenti in molti client.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>File Nostr Key per &lt;a href="https://nostrcompass.org/it/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 di file &lt;code>.nostrkey&lt;/code> per l&amp;rsquo;esportazione e importazione di chiavi cifrate con password. Se unito, darebbe ai client un percorso di backup basato su file più normale rispetto alla copia di stringhe &lt;code>ncryptsec&lt;/code> grezze.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/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>): Aggiunge una sezione che chiarisce che i relay dovrebbero mantenere un unico stato di appartenenza autoritativo per pubkey. Questo semplificherebbe la logica dei client di gruppo attorno ai cambiamenti di appartenenza e alla cronologia riprodotta.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/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 un percorso concreto per la modifica e cancellazione dei messaggi privati attraverso event di cancellazione avvolti in gift wrap. Il lavoro è ancora aperto, ma gli autori di client necessitano di una risposta qui se NIP-17 deve sostituire completamente i vecchi flussi DM.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>URI Share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2266">PR #2266&lt;/a>): La bozza standardizzerebbe come le app mobile e desktop passano contenuti condivisi in un client Nostr. Questo è uno dei confini di interoperabilità più ruvidi nei flussi app-to-app attuali.&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/it/topics/nip-94/">NIP-94&lt;/a> definisce kind &lt;code>1063&lt;/code> come un event di metadati di prima classe per un file. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">specifica&lt;/a> dà all&amp;rsquo;event il suo &lt;code>content&lt;/code> leggibile più tag leggibili dalle macchine per URL di download, tipo MIME, hash, dimensioni, anteprime, fallback e hint sul servizio di storage. Questo è importante perché il file diventa interrogabile sui relay come oggetto a sé stante. Un client non deve estrarre i metadati dal contenuto circostante per capire cos&amp;rsquo;è il file.&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>I tag fanno più lavoro di quanto appaia a prima vista. &lt;code>x&lt;/code> identifica il file servito, mentre &lt;code>ox&lt;/code> identifica il file originale prima di qualsiasi trasformazione lato server. I tag di anteprima permettono ai client di costruire indici di file navigabili senza scaricare l&amp;rsquo;intero asset, e &lt;code>summary&lt;/code> può portare un breve estratto accanto ad essi. &lt;code>fallback&lt;/code> fornisce una seconda sorgente quando l&amp;rsquo;URL principale fallisce, e &lt;code>service&lt;/code> indica il protocollo di storage dietro il file, come &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> o un altro host. NIP-94 si colloca quindi sotto il posting sociale e sopra lo storage grezzo. Descrive il file, non la conversazione attorno al file.&lt;/p>
&lt;p>Ecco perché l&amp;rsquo;updater di Notedeck di questa settimana è interessante. La &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a> usa event firmati di kind &lt;code>1063&lt;/code> per la scoperta dei rilasci software, poi verifica il binario scaricato rispetto allo SHA256 pubblicato. La stessa forma di event può descrivere un artefatto software o un upload media. NIP-94 è abbastanza vecchio da essere stabile, ma ha ancora spazio per crescere perché sempre più progetti trattano gli event di metadati come un trasporto per le macchine, non solo come decorazione per le persone.&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/it/topics/nip-54/">NIP-54&lt;/a> definisce kind &lt;code>30818&lt;/code> come un event articolo wiki. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/54.md">specifica&lt;/a> tratta il tag &lt;code>d&lt;/code> come l&amp;rsquo;argomento normalizzato dell&amp;rsquo;articolo e permette a molti autori di pubblicare voci per lo stesso soggetto. Il corpo dell&amp;rsquo;articolo vive in &lt;code>content&lt;/code>, mentre i tag gestiscono identità normalizzata, titolo di visualizzazione, sommari e riferimenti a versioni precedenti. Questo significa che NIP-54 non è solo un formato di contenuto. È anche un problema di recupero e ranking, perché ogni client deve ancora decidere quale versione dell&amp;rsquo;articolo mostrare.&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>Il merge di questa settimana cambia il markup canonico da Asciidoc a Djot nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>. Questo è importante per gli implementatori perché Djot ha una specifica standalone più stretta e una storia di parser più semplice attraverso i linguaggi. Il testo unito chiarisce anche come i wikilink in stile reference si risolvono, come le merge request usano kind &lt;code>818&lt;/code>, come i redirect usano kind &lt;code>30819&lt;/code>, e come la normalizzazione del tag &lt;code>d&lt;/code> dovrebbe comportarsi per gli script non latini. Queste sono le parti che fanno sì che due client indipendenti concordino su quale articolo un link punta.&lt;/p>
&lt;p>NIP-54 occupa anche un posto insolito nel protocollo. Un client wiki necessita di rendering del contenuto, ma necessita anche di una policy di ranking. Reazioni, liste relay, liste contatti e segnali di deferenza espliciti alimentano tutti quale articolo vince per un dato argomento. Il passaggio a Djot non risolve quel problema di ranking, ma rimuove una delle ambiguità del parser che stava sotto di esso. Ecco perché il merge è importante ora: la modifica riguarda meno la formattazione della prosa più bella e più il rendere il comportamento wiki multi-client più facile da implementare in modo consistente.&lt;/p>
&lt;p>Stai costruendo qualcosa, o vuoi che lo copriamo? Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> su Nostr a &lt;code>npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923&lt;/code>.&lt;/p></content:encoded></item><item><title>Nostr Compass #13</title><link>https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> e &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> aggiungono superfici MCP per il commercio guidato da agenti, mentre &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> aggiungono relay-auth e supporto agli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in software per app, signer e relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce due release incentrate su etichettatura AI, code di moderazione, perceptual hashing e documentazione server machine-readable. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, già live sul web, ha rilasciato la sua prima alpha Android e in seguito ha aggiunto il supporto signer di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> aggiunge la registrazione tramite &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> basato su Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> rilascia la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, e il repository NIPs unisce &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> e le linee guida difensive per &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> e &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> aggiungono superfici MCP per il commercio guidato da agenti, mentre &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> aggiungono relay-auth e supporto agli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in software per app, signer e relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce due release incentrate su etichettatura AI, code di moderazione, perceptual hashing e documentazione server machine-readable. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, già live sul web, ha rilasciato la sua prima alpha Android e in seguito ha aggiunto il supporto signer di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> aggiunge la registrazione tramite &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> basato su Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> rilascia la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, e il repository NIPs unisce &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> e le linee guida difensive per &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="shopstr-e-milk-market-aprono-superfici-mcp-per-il-commercio">Shopstr e Milk Market aprono superfici MCP per il commercio&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace peer-to-peer con pagamenti Lightning e Cashu, ha unito &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>), aggiungendo un server MCP con autenticazione API key per la gestione degli account degli agenti. La modifica aggiunge &lt;code>.well-known/agent.json&lt;/code> per la discovery degli agenti, endpoint MCP per onboarding e stato, route per la creazione degli ordini e la verifica dei pagamenti, strumenti dedicati per acquisto e lettura, e una schermata impostazioni per le API key. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a> estende il tutto con azioni lato venditore per messaggi, indirizzi, aggiornamenti degli ordini e selezione delle specifiche di prodotto. Una correzione di sicurezza in &lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a> sostituisce l&amp;rsquo;hashing delle API key con SHA-256 a singola iterazione con PBKDF2 salato a 100.000 iterazioni.&lt;/p>
&lt;p>Gli agenti possono leggere gli annunci di &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> e procedere al checkout usando i flussi di pagamento esistenti di &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> senza dover fare scraping delle pagine o reverse-engineering del comportamento del client.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, marketplace alimentare su Nostr attivo su &lt;a href="https://milk.market">milk.market&lt;/a>, ha introdotto la stessa base MCP e API key nel &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> aggiunge ordini in abbonamento, modifica dell&amp;rsquo;indirizzo di spedizione dopo l&amp;rsquo;acquisto, e gestione del checkout multi-merchant e multi-valuta per Stripe e altri percorsi di pagamento fiat. Una successiva &lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a> corregge un bug di inizializzazione del database all&amp;rsquo;avvio in cui la tabella delle pubblicazioni relay fallite non veniva creata nelle installazioni nuove, causando errori 500 al primo caricamento. L&amp;rsquo;interfaccia rivolta agli agenti funziona con checkout Bitcoin-native su Shopstr o con checkout misto fiat e Bitcoin su Milk Market.&lt;/p>
&lt;h3 id="nip-42-relay-auth-tra-bunker-signer-e-relay">NIP-42 relay auth tra bunker, signer e 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/it/topics/nip-46/">NIP-46&lt;/a> che collega provider OAuth alla firma Nostr, ha aggiunto il login &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, la selezione automatica della singola identità e la pulizia delle identità eliminate (&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>). Quando esiste una sola identità, il bunker ora la seleziona automaticamente invece di chiedere all&amp;rsquo;utente. L&amp;rsquo;eliminazione di un&amp;rsquo;identità rimuove anche assegnazioni e connessioni rimaste orfane. Il &lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">commit 6b8796c&lt;/a> aggiunge un percorso di configurazione &lt;code>ALWAYS_ALLOWED_KINDS&lt;/code> per gli utenti assegnati, con kind &lt;code>30078&lt;/code> come valore predefinito per i dati specifici dell&amp;rsquo;app, così le identità delegate possono scrivere nello storage dell&amp;rsquo;app senza approvazione per ogni event.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, il signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> principale su Android, ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a> insieme a quattro pre-release nel corso della settimana. &lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a> aggiunge la gestione dell&amp;rsquo;autenticazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> per richieste di kind &lt;code>22242&lt;/code>. L&amp;rsquo;implementazione aggiunge una nuova colonna nel database che traccia i permessi specifici per relay con un indice univoco su &lt;code>(pkKey, type, kind, relay)&lt;/code>. Gli utenti vedono una schermata auth dedicata dove possono concedere o negare il permesso per relay singolo o per tutti i relay con wildcard &lt;code>*&lt;/code>, e salvare quella scelta. I permessi wildcard cancellano tutte le voci specifiche per relay di quel kind. &lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a> segue con un refactor delle schermate per richieste multi-event, che ora mostrano i dettagli inline tramite composable card invece di navigare verso una schermata separata. La release aggiorna anche i relay profilo predefiniti, aggiunge la visualizzazione delle richieste in bottom sheet e corregge un crash sui dispositivi MediaTek disabilitando il keystore StrongBox.&lt;/p>
&lt;p>Sul lato relay, &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> implementa la gestione auth NIP-42 per gli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a>, e &lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a> rifiuta i repost che incorporano event protetti.&lt;/p>
&lt;h3 id="notedeck-aggiunge-i-limiti-relay-di-nip-11-e-funzionalità-agentium">Notedeck aggiunge i limiti relay di NIP-11 e funzionalità Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop nativo del team Damus, ha unito 14 PR questa settimana. &lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a> aggiunge il recupero dei limiti relay di &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>, così tutti i relay outbox ora rispettano &lt;code>max_message_length&lt;/code> e &lt;code>max_subscriptions&lt;/code> dal relay information document. L&amp;rsquo;implementazione include elaborazione in background, exponential backoff con jitter per i retry di connessione e header HTTP Accept personalizzati. &lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a> corregge un bug per cui i DM talvolta non si caricavano dopo il cambio account, e &lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a> aggiunge un meccanismo di backoff alla comunicazione relay multicast per evitare broadcast spam in caso di errore.&lt;/p>
&lt;p>Il sottosistema Agentium, l&amp;rsquo;interfaccia integrata per agenti di coding di Notedeck chiamata internamente &amp;ldquo;Dave&amp;rdquo;, ha ricevuto il supporto all&amp;rsquo;incolla di immagini dalla clipboard, configurazioni di esecuzione nominate che si sincronizzano tra dispositivi tramite event kind &lt;code>31991&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-33/">NIP-33&lt;/a>, un creatore di git worktree e un model picker per selezionare backend diversi per sessione (&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> per test UI headless, e &lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a> aggiunge una dashboard card che traccia la creazione di nuove contact list da parte dei client. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a> ancora aperta porta in Notedeck la risoluzione NIP-05 basata su Namecoin di Amethyst con lookup ElectrumX, routing SOCKS5 via Tor e integrazione nella barra di ricerca.&lt;/p>
&lt;h3 id="divine-distribuisce-la-v106-con-infrastruttura-di-test-e2e-e-import-nip-49">diVine distribuisce la v1.0.6 con infrastruttura di test E2E e import NIP-49&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video short-form in loop che ripristina gli archivi Vine su &lt;a href="https://divine.video">divine.video&lt;/a>, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.6">v1.0.6&lt;/a> con 127 PR unite. La release aggiunge l&amp;rsquo;import account &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> esterno, gestione multi-account, build macOS e Linux sperimentale, e una libreria ridisegnata per draft e clip basata su storage locale.&lt;/p>
&lt;p>Sul lato engineering, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1928">PR #1928&lt;/a> aggiunge un&amp;rsquo;infrastruttura completa di test di integrazione E2E usando Patrol per l&amp;rsquo;automazione UI nativa contro uno stack backend Docker composto da relay, API, Blossom, Postgres, Redis e ClickHouse. Cinque test del percorso auth coprono registrazione, verifica, reset password, scadenza sessione e refresh del token. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2105">PR #2105&lt;/a> cambia il caricamento video da HLS-first a MP4 diretto con fallback automatico a HLS, riducendo i tempi di caricamento da 30-60 secondi a quasi istantanei. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2076">PR #2076&lt;/a> mette in cache la risposta API del feed home in SharedPreferences per la visualizzazione immediata a cold start. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2104">PR #2104&lt;/a> impone che le etichette di contenuto &lt;code>ai-generated&lt;/code> siano nascoste nei feed, e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2100">PR #2100&lt;/a> aggiunge un&amp;rsquo;impostazione di sicurezza per mostrare solo video ospitati da diVine. La migrazione della cache profili da Hive a Drift prosegue nelle &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> e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1903">PR #1903&lt;/a>, sostituendo circa 1.074 linee di codice Hive con DAO Drift.&lt;/p>
&lt;h3 id="vector-v032-distribuisce-la-sincronizzazione-negentropy-di-nip-77-e-miglioramenti-mls">Vector v0.3.2 distribuisce la sincronizzazione negentropy di NIP-77 e miglioramenti MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, messenger desktop orientato alla privacy che usa la cifratura di gruppo MLS con &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, ha distribuito la &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2">v0.3.2&lt;/a>. La novità principale è la negentropy NIP-77 per la sincronizzazione dei gruppi MLS (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/b06adf4af2673fb5ac5add01356999ea70628eac">commit b06adf4&lt;/a>), che recupera i messaggi persi molto più rapidamente tramite parallel boot. La release aggiunge anche un motore audio ricostruito con pieno supporto Linux, spoiler immagine con anteprime sfocate, hyperlink cliccabili con anteprime ricche, ping &lt;code>@mention&lt;/code> con &lt;code>@everyone&lt;/code> per gli admin dei gruppi, autocomplete per shortcode emoji, silenziamento dei gruppi, tap-to-react sulle reazioni esistenti e upload file annullabili. Vector filtra esplicitamente gli event di chat di gruppo NIP-17 (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/2179a51c0449b3a70663a1573195b7945adf58ba">commit 2179a51&lt;/a>), usando MLS in modo esclusivo per la cifratura di gruppo.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="route96-v050-e-v051">Route96 v0.5.0 e v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, media server che supporta Blossom e &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a>, ha distribuito &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.0">v0.5.0&lt;/a> e &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">v0.5.1&lt;/a>. La v0.5.0 aggiunge etichettatura AI automatizzata, backfill retroattivo per upload non etichettati, code di moderazione per file segnalati, rifiuto basato su EXIF per la privacy e gestione degli hash vietati.&lt;/p>
&lt;p>La v0.5.1 aggiunge hash percettivi per immagini, locality-sensitive hashing per la ricerca di immagini simili, endpoint admin batch e un &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">&lt;code>SKILL.md&lt;/code>&lt;/a> pubblicato che descrive la superficie API Blossom e NIP-96 del server per gli strumenti agentici. &lt;a href="https://github.com/v0l/route96/pull/58">PR #58&lt;/a> sposta i background worker su task Tokio completamente asincroni, e il &lt;a href="https://github.com/v0l/route96/commit/97b00a39e27b07053c2ad335dbf475bacba57bf8">commit 97b00a3&lt;/a> aggiunge il backoff per evitare hot loop.&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>, lettore e publisher long-form disponibile su &lt;a href="https://samizdat.press">samizdat.press&lt;/a>, ha distribuito la sua prima build Android nella &lt;a href="https://github.com/satsdisco/samizdat/releases/tag/v1.0.0-alpha">v1.0.0-alpha&lt;/a>. L&amp;rsquo;app si apre con una pagina Press curata di articoli long-form Nostr e navigazione bottom tab tra le viste Press, Feed, Saved e Write. La build Android aggiunge storage nativo delle chiavi tramite cifratura Android Keystore con sblocco biometrico, gestisce URI &lt;code>nostr:&lt;/code> e deep link &lt;code>samizdat.press&lt;/code>, e supporta il passaggio della firma tramite chooser delle app Android, Amber, Primal e altre, invece di richiedere l&amp;rsquo;import diretto delle chiavi. Pull-to-refresh, gestione delle safe area su schermi di dimensioni diverse, e integrazioni native per condivisione, clipboard, feedback aptico e splash screen fanno ora parte della shell Android invece del wrapper web.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/satsdisco/samizdat/commit/d17308f3c2e6020e14074fbb1c03a8f60f29a3e6">commit d17308f&lt;/a> aggiunge la firma intent-based &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> per i flussi Amber e Primal, e il &lt;a href="https://github.com/satsdisco/samizdat/commit/e29dab84f7b58edd621f7b86ed7ca6458f965614">commit e29dab8&lt;/a> sostituisce un workaround JavaScript bridge con un plugin Capacitor nativo che usa &lt;code>startActivityForResult&lt;/code>. L&amp;rsquo;app richiede Android 7.0+ (API 24), viene distribuita come APK debug in questa alpha e ancora non include notifiche push. La pubblicazione dipende al momento da un&amp;rsquo;app signer, mentre il login con &lt;code>nsec&lt;/code> copre la lettura locale e l&amp;rsquo;accesso all&amp;rsquo;account.&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>, calendario decentralizzato con condivisione di eventi privati tramite &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, disponibile su &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>, ha distribuito la &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>. La release estende la gestione degli eventi ricorrenti di &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>, andando oltre la base a evento singolo della v0.1.0. Le modifiche sottostanti toccano anche storage locale degli eventi, gestione del signer e plumbing delle notifiche Android. Questa è la seconda applicazione attiva dell&amp;rsquo;organizzazione Formstr dopo la migrazione del repository dello scorso mese.&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>, exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>. Le correzioni per il ripristino delle sessioni di disputa (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) e la chiusura automatica (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>), &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">coperte la settimana scorsa&lt;/a>, sono incluse. Nuove in questa release: &lt;a href="https://github.com/MostroP2P/mostro/pull/625">PR #625&lt;/a> aggiunge un campo &lt;code>days&lt;/code> agli event di rating utente di kind &lt;code>38384&lt;/code>, &lt;a href="https://github.com/MostroP2P/mostro/pull/612">PR #612&lt;/a> aggiunge la scadenza a quegli event di rating, e &lt;a href="https://github.com/MostroP2P/mostro/pull/614">PR #614&lt;/a> sposta gli event ordine verso le impostazioni di scadenza configurate invece di una finestra hardcoded di 24 ore. &lt;a href="https://github.com/MostroP2P/mostro/pull/622">PR #622&lt;/a> aggiunge un controllo di idempotenza per evitare pagamenti duplicati delle dev fee.&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>, client Flutter per l&amp;rsquo;exchange P2P Mostro, ha distribuito la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.1">v1.2.1&lt;/a> con 11 nuove funzionalità e 11 bug fix. La release aggiunge il rendering di contenuti multimediali cifrati nella chat di disputa (&lt;a href="https://github.com/MostroP2P/mobile/pull/514">PR #514&lt;/a>), la chiusura automatica della UI delle dispute quando gli ordini raggiungono uno stato terminale (&lt;a href="https://github.com/MostroP2P/mobile/pull/503">PR #503&lt;/a>), la scansione QR per importare wallet NWC (&lt;a href="https://github.com/MostroP2P/mobile/commit/12eaee4d154fa31b07f82b96819de520e825aee6">commit 12eaee4&lt;/a>), traduzioni francesi e gestione delle notifiche push FCM. &lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a> corregge un bug di padding delle firme Schnorr bloccando la dipendenza bip340 alla 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>, client di messaggistica in stile Telegram con supporto Cashu, ha distribuito la &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.4-release">v1.5.4&lt;/a> focalizzata sulle correzioni per Linux desktop: icone AppImage nel dock, rendering delle emoji, freeze nei menu contestuali e blocchi della UI per reply/copy. La release corregge anche i problemi di upload delle immagini e l&amp;rsquo;integrazione npub.cash. &lt;a href="https://github.com/0xchat-app/0xchat-app-main/pull/49">PR #49&lt;/a> elimina rebuild UI non necessari rimuovendo un timer di polling da 3 secondi che forzava repaint glassmorphic senza fare nulla, e sblocca l&amp;rsquo;inizializzazione del login eseguendo il caricamento della cache event in parallelo invece di bloccare l&amp;rsquo;avvio di relay, contatti e canali.&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>, signer threshold FROST per Android con supporto &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, ha distribuito &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.0">v0.6.0&lt;/a> e &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.1">v0.6.1&lt;/a>. La v0.6.0 aggiunge coordinamento dei wallet descriptor e relativa UI di gestione, un flusso backup/restore con autenticazione biometrica (&lt;a href="https://github.com/privkeyio/keep-android/pull/184">PR #184&lt;/a>), recupero &lt;code>nsec&lt;/code> da threshold share (&lt;a href="https://github.com/privkeyio/keep-android/pull/187">PR #187&lt;/a>), generazione cross-platform di frame QR animati tramite Rust UniFFI (&lt;a href="https://github.com/privkeyio/keep-android/pull/188">PR #188&lt;/a>) e un audit trail della firma con verifica della chain (&lt;a href="https://github.com/privkeyio/keep-android/pull/189">PR #189&lt;/a>). La v0.6.1 cambia la licenza da 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>, gateway statico per visualizzare contenuti Nostr su &lt;a href="https://njump.me">njump.me&lt;/a>, ha distribuito la &lt;a href="https://github.com/fiatjaf/njump/releases/tag/v0.3.0">v0.3.0&lt;/a> con una modifica incompatibile nel parsing dei codici &lt;code>note1&lt;/code> e un aggiornamento della libreria nostr sottostante.&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>, applicazione decentralizzata per segnalare eventi stradali usando Nostr, ha distribuito la sua prima demo &lt;a href="https://github.com/jooray/roadstr/releases/tag/v0.1.1">v0.1.1&lt;/a>. L&amp;rsquo;app mostra gli eventi stradali su una mappa usando vector tile da 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>, applicazione di e-bill con transport layer Nostr e relay dedicato su &lt;a href="https://www.bit.cr/">bit.cr&lt;/a>, ha distribuito la &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> aggiunge i campi &lt;code>payment_actions&lt;/code> e &lt;code>bill_state&lt;/code> all&amp;rsquo;API per stato dei pagamenti e dell&amp;rsquo;accettazione, e &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/849">PR #849&lt;/a> corregge la gestione dell&amp;rsquo;indirizzo di firma per signer anonimi.&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>, applicazione chat costruita sulle librerie .NET MLS e C# del protocollo Marmot, ha distribuito la &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.3">v0.1.0-alpha.3&lt;/a>. La release aggiunge supporto a signer esterni per Amber e flussi &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/DavidGershony/openChat/commit/e568d979fe15eead19172f2eb6f8cf26ca845247">commit e568d97&lt;/a>), sposta la persistenza dello stato MLS dentro il servizio MLS per eliminare la perdita di dati nella finestra di crash (&lt;a href="https://github.com/DavidGershony/openChat/commit/4720bc8625136a0d5b0e23322bc0c50cd80577e8">commit 4720bc8&lt;/a>), e pubblica build Windows, Linux e Android attraverso una nuova pipeline 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>, trading copilot Kotlin Multiplatform per Nostr, ha distribuito la &lt;a href="https://github.com/turizspace/OpenSignal/releases/tag/v1.0.0">v1.0.0&lt;/a>. La release include moduli KMP condivisi per logica di dominio, rendering dei grafici, autenticazione e pubblicazione Nostr, supporto upload Blossom &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> e hook di inferenza AI basati su ONNX su shell Desktop e Android. L&amp;rsquo;architettura pubblicata include anche un servizio AI FastAPI per l&amp;rsquo;analisi di screenshot dei grafici, pipeline di training dei modelli e un motore di rischio che produce piani di trading strutturati con sizing e warning. Il login supporta chiavi &lt;code>nsec&lt;/code> grezze oppure signer esterni, e il flusso di output termina con la pubblicazione di event Nostr invece che con un&amp;rsquo;analisi solo locale.&lt;/p>
&lt;h2 id="aggiornamenti-progetto">Aggiornamenti Progetto&lt;/h2>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;alternativa a Google Forms su Nostr, ha unito &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>), aggiungendo un flusso di registrazione che usa chiavi private cifrate &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>. Prima di questa modifica, gli utenti avevano bisogno di un&amp;rsquo;estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> oppure di incollare una &lt;code>nsec&lt;/code> grezza per usare Formstr. Il nuovo flusso genera una coppia di chiavi lato client, cifra la chiave privata con una password scelta dall&amp;rsquo;utente tramite lo schema scrypt + XChaCha20-Poly1305 di NIP-49, e memorizza la stringa &lt;code>ncryptsec&lt;/code> risultante. Gli utenti possono quindi accedere di nuovo con la propria password senza installare un&amp;rsquo;estensione signer. La gestione delle chiavi resta interamente lato client.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android ricco di funzionalità, ha unito quattro PR che distribuiscono il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> supportato da Namecoin che era &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">aperto la settimana scorsa&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a> aggiunge una verifica NIP-05 resistente alla censura via ElectrumX per identificatori &lt;code>.bit&lt;/code>, &lt;code>d/&lt;/code> e &lt;code>id/&lt;/code>. Quando Amethyst rileva uno di questi suffissi in un campo NIP-05, interroga un server ElectrumX-NMC per la cronologia delle transazioni del nome, analizza lo script &lt;code>NAME_UPDATE&lt;/code> dall&amp;rsquo;ultimo output per estrarre la pubkey Nostr e rifiuta i nomi più vecchi di 36.000 blocchi, la finestra di scadenza di Namecoin. Le connessioni ElectrumX passano attraverso SOCKS5 quando Tor è attivo, con selezione dinamica del server tra endpoint clearnet e &lt;code>.onion&lt;/code>. Una cache LRU con TTL di un&amp;rsquo;ora evita interrogazioni ripetute della blockchain.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1771">PR #1771&lt;/a> corregge race condition e accuratezza del resolver in quel flusso. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1785">PR #1785&lt;/a> permette ai nuovi utenti di importare una follow list durante la registrazione sia da normali identificatori NIP-05 sia da quelli supportati da Namecoin. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1786">PR #1786&lt;/a> aggiunge impostazioni personalizzate per il server ElectrumX così gli utenti possono scegliere quale server gestirà i loro lookup.&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>, libreria che fornisce metodi helper per memorizzare event Nostr in IndexedDB, ha unito &lt;a href="https://github.com/hzrd149/nostr-idb/pull/6">PR #6&lt;/a> aggiungendo il supporto ai filtri tag AND di &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a>. La modifica aggiunge semantica di intersezione al matching lato client dei filtri, così le query IndexedDB possono richiedere tutti i valori tag elencati invece di uno qualsiasi. &lt;a href="https://github.com/hzrd149/nostr-idb/pull/8">PR #8&lt;/a> aggiorna la libreria all&amp;rsquo;ultima interfaccia NIP-DB, e un successivo &lt;a href="https://github.com/hzrd149/nostr-idb/commit/b49b3d32c575ff8214dc3fb07675109c2a971972">commit b49b3d3&lt;/a> corregge un deadlock di subscribe e rimuove nostr-tools come dipendenza di produzione.&lt;/p>
&lt;h3 id="pensieve">Pensieve&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a>, indicizzatore Nostr archive-first con analytics ClickHouse, ha unito &lt;a href="https://github.com/andotherstuff/pensieve/pull/8">PR #8&lt;/a> aggiungendo enforcement del TTL della cache per entry e coalescing dei miss per chiave, così da ridurre i picchi di CPU API. Gli endpoint time-series più costosi, statistiche di engagement, attività oraria e attività per kind, usano ora TTL server-side di 10 minuti invece di innescare tempeste di ricalcolo sincronizzate.&lt;/p>
&lt;h3 id="blossom">Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, protocollo e stack server per l&amp;rsquo;hosting media decentralizzato, ha unito due aggiornamenti di autorizzazione BUD-11. &lt;a href="https://github.com/hzrd149/blossom/pull/91">PR #91&lt;/a> sposta l&amp;rsquo;autorizzazione opzionale in un BUD dedicato e chiarisce il ruolo dei tag &lt;code>x&lt;/code> e &lt;code>server&lt;/code>. &lt;a href="https://github.com/hzrd149/blossom/pull/93">PR #93&lt;/a> ripulisce il comportamento auth specifico per endpoint e formalizza l&amp;rsquo;header &lt;code>X-SHA-256&lt;/code> per la verifica degli upload. Le due PR consolidano la logica auth in BUD-11 e rimuovono ambiguità sull&amp;rsquo;hashing delle richieste nei flussi di upload, delete e media management.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Cambiamenti recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">PR #1365&lt;/a>): aggiunge semantica di intersezione per i filtri tag, permettendo ai relay di rispondere a query che richiedono tutti i valori tag elencati invece di uno qualsiasi. Riduce il post-filtering lato client e la larghezza di banda nelle query ricche di tag.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring): misure difensive&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">PR #2240&lt;/a>): dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">lavoro di benchmark outbox coperto la settimana scorsa&lt;/a>, la specifica aggiunge ora avvertimenti sui percorsi sfavorevoli dei dati di monitoraggio relay. I client non devono richiedere event di monitoraggio kind &lt;code>30166&lt;/code> per funzionare. Un monitor può essere errato, obsoleto o malevolo. Ci si aspetta che i client incrocino le fonti ed evitino di tagliare ampie parti del grafo relay di un utente basandosi su un singolo feed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles): pulizia del registry kind 10011&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2256">PR #2256&lt;/a>): aggiunge il riferimento al kind &lt;code>10011&lt;/code> direttamente nella specifica, allineandosi con l&amp;rsquo;implementazione di Amethyst &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">coperta la settimana scorsa&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR aperte e discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> (Protected Events): rifiutare i repost che incorporano event protetti&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>): se un relay applica NIP-70 all&amp;rsquo;event originale ma accetta repost che trasportano lo stesso contenuto, il tag &lt;code>-&lt;/code> non ha effetto pratico. Questa PR aggiunge la regola per cui i relay devono rifiutare anche i repost di kind 6 e kind 16 degli event protetti. &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> lo implementa già.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> (Video Events): tracce audio multiple&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>): aggiunge tag audio &lt;code>imeta&lt;/code> per tracce alternative, varianti linguistiche e stream solo audio. Un client potrebbe mantenere stabile il file video cambiando lingua audio, oppure servire l&amp;rsquo;audio come traccia separata per contenuti tipo podcast.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document) e attributi relay di &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2257">PR #2257&lt;/a>): aggiunge un campo &lt;code>attributes&lt;/code> strutturato ai relay information document, fornendo a client e strumenti di discovery metadati machine-readable oltre l&amp;rsquo;attuale descrizione a testo libero.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-49-cifratura-della-chiave-privata">NIP Deep Dive: NIP-49 (Cifratura della chiave privata)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> definisce come un client cifra una chiave privata con una password e codifica il risultato come stringa bech32 &lt;code>ncryptsec&lt;/code>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#formstr">Formstr&lt;/a> usa NIP-49 nel suo nuovo flusso di registrazione.&lt;/p>
&lt;p>Il formato non è legato a un kind di event dedicato. Un client parte dalla chiave privata secp256k1 grezza a 32 byte, deriva una chiave simmetrica dalla password dell&amp;rsquo;utente con scrypt, cifra la chiave usando XChaCha20-Poly1305, poi incapsula il risultato in una stringa bech32 &lt;code>ncryptsec&lt;/code>. Un flag di un byte registra se la chiave è mai stata gestita in modo insicuro prima della cifratura.&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>L&amp;rsquo;event JSON sopra è un esempio a livello applicativo, non un requisito NIP-49. Il NIP standardizza il formato della chiave cifrata. Un client può memorizzare &lt;code>ncryptsec&lt;/code> localmente, sincronizzarlo tramite storage specifico dell&amp;rsquo;app o esportarlo come stringa di backup. Le password sono normalizzate in Unicode NFKC prima della derivazione della chiave, così la stessa password può decifrare in modo coerente tra client e piattaforme.&lt;/p>
&lt;p>Il flag di sicurezza della chiave a un byte ha tre valori definiti: &lt;code>0x00&lt;/code> significa che la cronologia di gestione della chiave è sconosciuta, &lt;code>0x01&lt;/code> significa che la chiave è nota per essere stata gestita in modo insicuro, per esempio incollata in chiaro in un form web prima della cifratura, e &lt;code>0x02&lt;/code> significa che la chiave è stata generata e cifrata in un contesto sicuro e non è mai stata esposta. I client possono usare questa informazione per mostrare avvisi quando importano chiavi con una storia nota di gestione insicura.&lt;/p>
&lt;p>NIP-49 protegge le chiavi meglio dell&amp;rsquo;esportazione semplice &lt;code>nsec&lt;/code>, ma la cifratura è forte solo quanto la password e il costo scrypt configurato. Valori &lt;code>LOG_N&lt;/code> più alti rendono l&amp;rsquo;attacco offline più difficile ma rallentano anche la decifratura legittima. La specifica sconsiglia di pubblicare chiavi cifrate su relay pubblici, perché gli attaccanti traggono vantaggio dal raccogliere ciphertext da sottoporre a cracking offline. Per confronto, la firma remota di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> evita di esporre del tutto le chiavi, e la firma Android di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> le mantiene all&amp;rsquo;interno di un&amp;rsquo;app signer dedicata. NIP-49 occupa uno spazio diverso: backup cifrato portabile per utenti che gestiscono le proprie chiavi.&lt;/p>
&lt;p>Le implementazioni includono &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">Formstr PR #434&lt;/a> per la registrazione, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> per backup e restore ncryptsec, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#divine-distribuisce-la-v106-con-infrastruttura-di-test-e2e-e-import-nip-49">diVine v1.0.6&lt;/a> per l&amp;rsquo;import account, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#keep-v060">Keep v0.6.0&lt;/a> per l&amp;rsquo;esportazione di share FROST, e strumenti di gestione delle chiavi come &lt;a href="https://nsec.app">nsec.app&lt;/a> e &lt;a href="https://github.com/getAlby/hub">Alby&lt;/a>.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-70-event-protetti">NIP Deep Dive: NIP-70 (Event protetti)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> definisce gli event protetti. Quando un event porta il tag &lt;code>[&amp;quot;-&amp;quot;]&lt;/code>, un relay deve rifiutarlo a meno che il relay richieda l&amp;rsquo;autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> e la pubkey autenticata corrisponda all&amp;rsquo;autore dell&amp;rsquo;event.&lt;/p>
&lt;p>Il flusso auth di NIP-42 funziona così: il relay invia una challenge &lt;code>AUTH&lt;/code> contenente una stringa casuale, e il client risponde con un event signed di kind &lt;code>22242&lt;/code> i cui tag includono l&amp;rsquo;URL del relay e la challenge. Il relay verifica la firma e controlla che la pubkey nell&amp;rsquo;event auth coincida con la pubkey dell&amp;rsquo;event protetto in pubblicazione. Se le pubkey non coincidono, il relay rifiuta l&amp;rsquo;event con il prefisso di messaggio &lt;code>restricted&lt;/code>.&lt;/p>
&lt;p>Il contenuto dell&amp;rsquo;event può comunque essere pubblico. Il tag &lt;code>-&lt;/code> controlla solo chi può pubblicare l&amp;rsquo;event su un relay che onora il tag. Questo copre feed semi-chiusi di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, spazi relay riservati ai membri e altri contesti in cui l&amp;rsquo;autore vuole limitare la ridistribuzione attraverso il grafo relay. NIP-70 è una convenzione a tag singolo, non un nuovo kind di event, quindi qualunque kind esistente può portare il tag &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>Anche se un relay blocca la pubblicazione di terzi dell&amp;rsquo;event originale, qualcuno può ripubblicarne il contenuto dentro un repost. &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a> affronta il problema richiedendo ai relay di rifiutare anche i repost di kind 6 e kind 16 degli event protetti. &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> aggiunge la gestione auth NIP-42 per gli event protetti, e &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> blocca i repost che incorporano contenuto protetto.&lt;/p>
&lt;p>NIP-70 controlla il comportamento del relay. Un destinatario può comunque copiare altrove il contenuto, e la specifica lo dice esplicitamente. Il tag &lt;code>-&lt;/code> fornisce ai relay un segnale machine-readable per rifiutare la ripubblicazione. Per confronto, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> chiede ai relay di cancellare i dati dopo il fatto, mentre NIP-70 impedisce la pubblicazione non autorizzata al momento dell&amp;rsquo;ingest. I due approcci sono complementari: un autore può contrassegnare gli event come protetti per limitarne la diffusione, e in seguito chiedere la cancellazione se desidera che il contenuto venga rimosso dai relay che lo avevano accettato.&lt;/p>
&lt;hr>
&lt;p>Per questa settimana è tutto. State costruendo qualcosa o avete novità da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o cercateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #12</title><link>https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> distribuisce il suo &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">primo rilascio pubblico&lt;/a> con media cifrati e binding multi-linguaggio. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> pubblica &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">benchmark del modello outbox&lt;/a> su 14 algoritmi di selezione dei relay. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passa dalla &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#wisp-passa-dallalpha-alla-beta">prima alpha alla beta&lt;/a> in otto giorni con Tor e firma &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Applicazione Signer Android). &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#aggiornamenti-nip">NIP-91&lt;/a> (filtri AND) viene unito. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> porta la sincronizzazione negentropy con miglioramenti delle prestazioni di 15 volte. Questo numero include anche la retrospettiva Cinque Anni di Febbraio di Nostr, che traccia il protocollo da una riscrittura della specifica che serviva tre relay fino all&amp;rsquo;esplosione di Damus sull&amp;rsquo;App Store, passando per le reti mesh e le proposte per agenti AI.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> distribuisce il suo &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">primo rilascio pubblico&lt;/a> con media cifrati e binding multi-linguaggio. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> pubblica &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">benchmark del modello outbox&lt;/a> su 14 algoritmi di selezione dei relay. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passa dalla &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#wisp-passa-dallalpha-alla-beta">prima alpha alla beta&lt;/a> in otto giorni con Tor e firma &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Applicazione Signer Android). &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#aggiornamenti-nip">NIP-91&lt;/a> (filtri AND) viene unito. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> porta la sincronizzazione negentropy con miglioramenti delle prestazioni di 15 volte. Questo numero include anche la retrospettiva Cinque Anni di Febbraio di Nostr, che traccia il protocollo da una riscrittura della specifica che serviva tre relay fino all&amp;rsquo;esplosione di Damus sull&amp;rsquo;App Store, passando per le reti mesh e le proposte per agenti AI.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="il-modello-outbox-sotto-la-lente">Il Modello Outbox Sotto la Lente&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> ha pubblicato una serie di benchmark sul modello outbox che testano quanto bene diversi algoritmi di selezione dei relay recuperano event dalla rete relay decentralizzata. Il progetto ha unito 16 PR e 76 commit in dieci giorni, producendo quella che potrebbe essere l&amp;rsquo;analisi empirica più approfondita delle strategie di implementazione di &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) fino ad oggi.&lt;/p>
&lt;p>I benchmark testano 14 algoritmi di selezione dei relay rispetto a liste di follow reali su 15 client e librerie in cinque linguaggi. Un approccio baseline di interrogazione dei soli relay popolari recupera circa il 26% degli event. Il greedy set-cover con Thompson Sampling raggiunge l'80-90% di richiamo. L&amp;rsquo;aggiunta di una variante sensibile alla latenza che usa lo sconto iperbolico e il tracciamento della latenza dei relay con EWMA ha portato la completezza dal 62-80% al 72-96% al segno dei 2 secondi su sei profili di test.&lt;/p>
&lt;p>Il filtraggio dei relay inattivi tramite &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Monitoring) si è rivelato significativo. Il pre-filtraggio dei candidati relay rispetto ai dati di liveness di &lt;a href="https://nostr.watch">nostr.watch&lt;/a> ha rimosso il 40-64% dei relay inattivi e raddoppiato i tassi di successo dei relay dal 30% al 75-85%. I tempi di caricamento dei feed sono diminuiti del 39% (da 40 secondi a 24 secondi su 10 profili). Una simulazione EOSE-race ha rilevato che attendere l&amp;rsquo;EOSE più un periodo di grazia di 200ms migliorava la completezza rispetto all&amp;rsquo;arresto al primo relay che terminava.&lt;/p>
&lt;p>Per i client che non possono riscrivere completamente il proprio routing dei relay, un approccio di &amp;ldquo;arricchimento outbox ibrido&amp;rdquo; aggiunge query outbox per autore sopra i relay applicativi hardcoded esistenti. Questo approccio ibrido ha raggiunto l'80% di richiamo degli event su un anno rispetto al 26% del baseline, offrendo un percorso di migrazione per i client con architetture relay legacy.&lt;/p>
&lt;h3 id="contextvm-apre-il-nip-per-mcp-e-distribuisce-gift-wrap-effimeri">ContextVM Apre il NIP per MCP e Distribuisce Gift Wrap Effimeri&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>, il protocollo che collega Nostr con il &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>, ha aperto due proposte nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> questa settimana. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a> formalizza CVM come convenzione per il trasporto di messaggi MCP JSON-RPC su Nostr tramite event effimeri di kind 25910. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> estende &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con un kind effimero (21059) che segue la semantica effimera di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> (Flusso Base del Protocollo), permettendo ai relay di scartare i messaggi avvolti dopo la consegna.&lt;/p>
&lt;p>La convenzione gift wrap effimera è stata distribuita come &lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a> nella famiglia di rilasci ContextVM SDK v0.6.x. L&amp;rsquo;&lt;a href="https://github.com/ContextVM/sdk">implementazione SDK&lt;/a> aggiunge un enum &lt;code>GiftWrapMode&lt;/code> con tre impostazioni: OPTIONAL (accetta entrambi i kind e rileva automaticamente la capacità del peer), EPHEMERAL (solo kind 21059) e PERSISTENT (solo kind 1059). Per le chiamate agli strumenti AI, la modalità effimera evita di memorizzare il traffico intermedio di richiesta-risposta sui relay, riducendo sia i costi di storage che l&amp;rsquo;esposizione della privacy.&lt;/p>
&lt;p>Nuovi server MCP pubblici sono apparsi sulla rete da operatori indipendenti, incluso un server di query Wolfram Alpha. Il team ContextVM ha pubblicato CEP-15 (schema degli strumenti comuni) e CEP-17 (pubblicazione della lista relay del server) insieme al ciclo di rilascio v0.6.x.&lt;/p>
&lt;h3 id="marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">Marmot Development Kit Distribuisce il Primo Rilascio Pubblico&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit), la libreria Rust che alimenta la messaggistica cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> su &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a> come primo rilascio pubblico. Oltre 200 PR sono state unite in questa versione, con sei nuovi contributor.&lt;/p>
&lt;p>Il rilascio include il supporto ai media cifrati (MIP-04) con derivazione del seed HKDF (MIP-01 v2), risoluzione deterministica delle race condition dei commit (MIP-03), storage locale cifrato, validazione dell&amp;rsquo;autorizzazione admin per i commit e le proposte Marmot, e supporto GREASE per l&amp;rsquo;estensibilità del protocollo. I binding sono disponibili per Kotlin, Python, Ruby e Windows insieme alla cross-compilazione Android. La libreria si aggiorna a OpenMLS 0.8.0 con correzioni degli avvisi di sicurezza e un tipo &lt;code>Secret&amp;lt;T&amp;gt;&lt;/code> che azzera i valori sensibili in memoria.&lt;/p>
&lt;p>Una modifica companion al protocollo (&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>) ha sostituito la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) con ChaCha20-Poly1305 per i messaggi di kind 445. NIP-44 richiedeva input di stringhe UTF-8 per specifica, rendendo impossibile passare i byte grezzi dei messaggi Marmot attraverso le librerie Nostr TypeScript standard. La sostituzione deriva le chiavi direttamente dal segreto esportatore Marmot. Questa modifica incompatibile ha richiesto aggiornamenti coordinati tra la &lt;a href="https://github.com/marmot-protocol/marmot/pull/48">specifica core&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a> e l&amp;rsquo;&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/54">SDK TypeScript&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>, l&amp;rsquo;implementazione TypeScript mantenuta da hzrd149, ha unito quattro PR con modifiche incompatibili alle API a loro volta. Un &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">aggiornamento omnibus&lt;/a> ha aggiunto un gestore di key package per il ciclo di vita create/publish/rotate, un metodo di convenienza &lt;code>sendChatMessage&lt;/code>, anteprima degli inviti senza entrare nel gruppo (&lt;code>readInviteGroupInfo&lt;/code>), auto-aggiornamento per le rotazioni di forward-secrecy e logging di debug strutturato. Le API di decifratura dei gruppi sono state rinominate da &lt;code>readGroupMessage&lt;/code> a &lt;code>decryptGroupMessage&lt;/code> con varianti di risultato più ricche (processed/skipped/rejected/unreadable). gzuuus ha contribuito alla pulizia degli esempi con supporto relay NIP-65 e gestione dei key package di ultima risorsa secondo MIP-00.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise CLI&lt;/a> (&lt;code>wn&lt;/code>), il backend Rust che alimenta sia l&amp;rsquo;app mobile che la nuova TUI, ha unito 16 PR in dieci giorni. La gestione del ciclo di vita del signer ha ottenuto la sicurezza in caso di cancellazione attraverso un RAII scope guard (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>), correggendo una classe di bug in cui le operazioni interrotte potevano far trapelare lo stato del signer. Il login ora blocca quando le liste relay richieste (kind 10002/10050/10051) sono mancanti (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>), e le sottoscrizioni giftwrap ricadono sui relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> quando le liste inbox sono assenti (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>). Una modalità debug (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>) espone le query al database e l&amp;rsquo;ispezione del ratchet-tree MLS come output JSON. Altre correzioni hanno risolto il recupero delle sottoscrizioni dopo la ri-registrazione del signer, la sincronizzazione dei messaggi di benvenuto, la validazione dei filtri relay e i limiti del raggio di ricerca utenti.&lt;/p>
&lt;p>Marmot ha visto un&amp;rsquo;espansione significativa oltre lo stack Rust core questa settimana. &lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>, un&amp;rsquo;interfaccia basata su terminale per lo stack di messaggistica White Noise, è stata lanciata il 3 marzo. Avvolge la CLI &lt;code>wn&lt;/code> come sottoprocesso e renderizza il suo output JSON attraverso un&amp;rsquo;architettura unidirezionale ispirata a Elm, fornendo navigazione multi-conversazione con indicatori di non letto, creazione di gruppi e ricerca membri, streaming di messaggi in tempo reale e reazioni emoji dal terminale.&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a> ha pubblicato uno stack Marmot completo in C# che rispecchia l&amp;rsquo;architettura a livelli del toolchain Rust. &lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a> implementa le primitive crittografiche MLS RFC 9420 in C#. &lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a> si basa su di esso per aggiungere il trasporto relay Nostr, funzionando come equivalente C# di MDK. &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, un&amp;rsquo;app desktop cross-platform costruita con .NET 9 e Avalonia UI, unisce entrambi in un client di chat funzionante con DM NIP-44, cifratura di gruppo Marmot, firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) e indicatori di stato multi-relay.&lt;/p>
&lt;p>&lt;a href="https://github.com/zerosats/mdk-pwa-reference">MDK PWA Reference&lt;/a> fornisce un template Progressive Web App per costruire applicazioni cifrate con Marmot, con supporto sperimentale alla partecipazione di agenti AI nelle chat di gruppo e pagamenti Bitcoin tramite infrastruttura wallet Arkade.&lt;/p>
&lt;h3 id="wisp-passa-dallalpha-alla-beta">Wisp Passa dall&amp;rsquo;Alpha alla Beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> è un nuovo client Nostr Android che è passato dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha">prima alpha&lt;/a> il 24 febbraio alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta">v0.3.4-beta&lt;/a> il 3 marzo, producendo 19 rilasci, 115 PR unite e 276 commit in otto giorni.&lt;/p>
&lt;p>La traiettoria delle funzionalità copre terreno che la maggior parte dei client impiega mesi a raggiungere. La v0.1.0 è stata distribuita con il supporto al modello relay outbox/inbox e flussi di onboarding. Alla v0.1.3, il client disponeva della firma intent-based &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> per Amber, un proxy Tor SOCKS5 integrato per la connettività ai relay &lt;code>.onion&lt;/code>, e &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect). La v0.2.0 è passata alla beta con il filtraggio delle liste mute e il supporto emoji personalizzate, mentre la v0.2.4 ha aggiunto gli overlay per gli avvisi di contenuto. La serie v0.3.x ha introdotto la proof-of-work &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> per le note, il mining PoW in background con impostazioni persistenti, lo storage dei relay &lt;code>.onion&lt;/code> e le notifiche thread silenziati.&lt;/p>
&lt;p>La traduzione on-device tramite Google ML Kit funziona localmente senza accesso alla rete dopo il download iniziale del modello. Una visualizzazione interattiva del grafo sociale usa una simulazione fisica velocity Verlet a circa 30fps con navigazione pinch-to-zoom e ispezione dei profili.&lt;/p>
&lt;h2 id="rilasci">Rilasci&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>, l&amp;rsquo;app di messaggistica cifrata con Marmot, ha distribuito la &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1">v0.3.1&lt;/a> con miglioramenti alla gestione dei gruppi e lavoro sulle prestazioni. Gruppi multi-admin, inviti in blocco, invito tramite npub e avatar di gruppo espandono le funzionalità di collaborazione. Le notifiche in background Android ora supportano le azioni inline Reply e Mark Read.&lt;/p>
&lt;p>La sincronizzazione deterministica basata su &lt;a href="https://nostrcompass.org/it/topics/negentropy/">Negentropy&lt;/a> recupera la cronologia completa delle conversazioni inclusi i messaggi persi durante i periodi offline. Voice-to-text ricostruito con accelerazione GPU su Android. La gestione degli allegati è stata revisionata con progresso di download, stati di retry, compressione zip-and-send delle directory e indicatori di progresso in tempo reale. Le prestazioni sono migliorate di oltre 15 volte su tempo di avvio, elaborazione immagini, riproduzione audio e reattività generale della UI. Le dimensioni dell&amp;rsquo;installazione dell&amp;rsquo;app sono diminuite di oltre un terzo, con il frontend ridotto di circa la metà. È stato aggiunto il supporto Android ARM a 32 bit.&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>, il nodo Lightning auto-custodiale con supporto Nostr Wallet Connect (&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>), ha distribuito la &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.5">v1.21.5&lt;/a>. Un secondo relay è stato aggiunto alla configurazione NWC predefinita, migliorando l&amp;rsquo;affidabilità durante i riavvii dei relay. Una correzione per i dati zap non validi nella lista transazioni risolve un problema di visualizzazione con event &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) malformati. Le nuove voci dell&amp;rsquo;app store includono Alby CLI e 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>, il client di messaggistica Nostr basato su testo, ha distribuito tre rilasci nel periodo. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.0">v0.12.0&lt;/a> ha aggiunto il blocco app con PIN a tastierino a 4 cifre e oltre 15 nuove traduzioni linguistiche inclusi bengalese, tailandese, vietnamita, hindi, arabo, ebraico, urdu, turco, giapponese, cinese, coreano, olandese, polacco, russo e persiano con supporto RTL. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.1">v0.12.1&lt;/a> ha introdotto un tema Cypher con sfondi neri puri e accenti ciano, più la generazione di poster video Android. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.2">v0.12.2&lt;/a> ha aggiunto l&amp;rsquo;esportazione chat e View Profile nei menù dei contatti.&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>, il relay personale Android di greenart7c3, ha distribuito la &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2">v2.0.0-pre2&lt;/a> con miglioramenti delle prestazioni del relay attraverso nuovi indici del database e coroutine Kotlin ristrutturate. Ogni web app ospitata ora si avvia sulla propria porta. La ricerca full-text e una schermata event riprogettata con espansione degli event completano le modifiche.&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>, un&amp;rsquo;applicazione per prendere appunti basata su Nostr, ha distribuito 8 rilasci dalla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.0">v0.5.0&lt;/a> alla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.7">v0.5.7&lt;/a>. Il lancio della v0.5.0 su Android ha aggiunto il supporto al signer Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> e la pubblicazione di note &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> (Video Events). Una pagina di benvenuto riprogettata nella v0.5.1 includeva anteprime della timeline pubblica e ha ridotto l&amp;rsquo;APK a 15 MB. Il Relay Browser nella v0.5.2 permette agli utenti di navigare le timeline pubbliche dei relay tramite URL condivisibili, insieme al download dei media e alle reazioni emoji personalizzate &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a>. I rilasci successivi fino alla v0.5.7 hanno risolto race condition di sincronizzazione nel sistema collaborativo di condivisione note &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>, l&amp;rsquo;app per chiamate vocali e video su Nostr, ha distribuito la &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.1-release">v0.5.1&lt;/a> con supporto ai messaggi vocali, un&amp;rsquo;esperienza desktop ottimizzata con accesso ai gruppi, contatti preferiti su desktop, note e filtraggio dei contatti, opzioni di esportazione e pulizia dei dati, e supporto all&amp;rsquo;accessibilità per le dimensioni dei font di 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>, l&amp;rsquo;app di live streaming su Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0">v0.13.0&lt;/a> con download di replay MP4 dai menù delle card dello streaming e &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) per i profili. Il publisher RTMP è migrato all&amp;rsquo;Expo Modules API. Le prestazioni di streaming su connessioni a bassa larghezza di banda sono migliorate, e i crash sui dispositivi più vecchi e lo streaming iOS verso &lt;a href="https://zap.stream">Zap.Stream&lt;/a> sono corretti.&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> ha distribuito la &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0">v2.0.0&lt;/a> con dimensioni configurabili del buffer WebSocket, permettendo alle applicazioni di gestire event Nostr più grandi senza troncamento. L&amp;rsquo;incremento della versione major riflette modifiche incompatibili all&amp;rsquo;API di connessione.&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> ha distribuito la &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.0">1.1.0&lt;/a> con supporto ai contenuti long-form (articoli kind 30023) e un editor Markdown per la composizione direttamente nell&amp;rsquo;app, seguita da un rilascio bug fix &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 piattaforma di crowdfunding Bitcoin, ha distribuito la &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.6">v0.2.6&lt;/a> con integrazione Boltz e un flusso di investimento in 1 click. Sia i tipi invest che fund project funzionano end-to-end su testnet. Il team nota che la UI è completa circa al 70%.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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: Operatore AND per i Filtri&lt;/a>&lt;/strong>: Aggiunge la semantica dei filtri AND per gli array di tag nelle sottoscrizioni ai relay. Attualmente, specificare valori multipli in un filtro di tag (ad esempio, tag &lt;code>p&lt;/code> multipli) corrisponde agli event che contengono uno qualsiasi di essi. NIP-91 permette ai client di richiedere event che corrispondono a tutti i valori di tag specificati simultaneamente, riducendo la larghezza di banda e abilitando operazioni di indice più veloci. Esistono già implementazioni in più relay inclusi nostr-rs-relay, satellite-node, worker-relay e applesauce. Precedentemente numerato 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: Indirizzo del Set di Emoji nei Tag&lt;/a>&lt;/strong>: I tag emoji personalizzate in &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> possono ora includere un indirizzo opzionale del set di emoji. Cliccando su un&amp;rsquo;emoji in un client si può aprire il set a cui appartiene per aggiungerlo ai segnalibri o navigarlo. Originato dal client &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: Aggiunta di unallowpubkey e unbanpubkey&lt;/a>&lt;/strong>: Due nuovi comandi admin per le chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>. &lt;code>unallowpubkey&lt;/code> rimuove una pubkey dalla lista consentiti senza bannare l&amp;rsquo;utente. &lt;code>unbanpubkey&lt;/code> revoca un ban senza ri-aggiungere la pubkey alla lista dei membri. In precedenza, l&amp;rsquo;unico modo per rimuovere qualcuno dalla lista consentiti comportava anche il ban, e revocare il ban richiedeva di ri-aggiungere l&amp;rsquo;utente come membro.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&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> (aperta il 27 feb): Proposti da purrgrammer, gli spell sono query Nostr salvate e portabili pubblicati come event di kind 777. Uno spell codifica un filtro REQ o COUNT in tag strutturati (&lt;code>k&lt;/code> per i kind, &lt;code>authors&lt;/code> per le pubkey, &lt;code>tag&lt;/code> per filtri di tag arbitrari) con variabili runtime: &lt;code>$me&lt;/code> si risolve alla pubkey dell&amp;rsquo;utente loggato, &lt;code>$contacts&lt;/code> si espande alla lista di follow di kind 3 dell&amp;rsquo;utente. I timestamp relativi (&lt;code>7d&lt;/code>, &lt;code>2w&lt;/code>, &lt;code>1mo&lt;/code>) permettono agli spell di definire finestre temporali mobili senza date hardcoded. Già implementati in &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> e &lt;a href="https://github.com/purrgrammer/grimoire">Grimoire&lt;/a>, gli spell permettono agli utenti di creare, condividere e sottoscrivere feed curati che si spostano tra i client.&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 Effimero (kind 21059)&lt;/a>&lt;/strong> (aperta il 27 feb): Aggiunge una variante effimera dei gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. Il kind 21059 segue la semantica effimera di NIP-01, quindi i relay scartano gli event dopo la consegna. Proposto da ContextVM per il trasporto MCP dove la persistenza dei messaggi non è necessaria.&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 su Nostr&lt;/a>&lt;/strong> (aperta il 27 feb): Specifica come trasportare i messaggi del Model Context Protocol su Nostr usando event effimeri di kind 25910 con tag &lt;code>p&lt;/code> ed &lt;code>e&lt;/code> per l&amp;rsquo;indirizzamento e la correlazione. Intenzionalmente snello, rimanda i dettagli del protocollo alla &lt;a href="https://docs.contextvm.org">specifica 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: Spazi Live Audio/Video&lt;/a>&lt;/strong> (aperta il 25 feb, bozza): Bozza di fiatjaf che estende i gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con audio e video live. La proposta aggiunge tag opzionali &lt;code>livekit&lt;/code> e &lt;code>no-text&lt;/code> agli event di metadata dei gruppi. Quando un utente vuole unirsi a uno spazio vocale, il client richiede un JWT dal relay su &lt;code>/.well-known/nip29/livekit/{groupId}&lt;/code>. Il relay verifica l&amp;rsquo;appartenenza al gruppo ed emette un token con la pubkey hex dell&amp;rsquo;utente come claim &lt;code>sub&lt;/code>, che viene passato a &lt;a href="https://livekit.io/">LiveKit&lt;/a> per il trasporto dei media. L&amp;rsquo;accesso alla stanza vocale eredita il modello di permessi esistente del gruppo, quindi le regole di appartenenza lato relay governano chi può parlare. In fase di test in Pyramid e Chachi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2235">Proprietà Collaborativa degli Event&lt;/a>&lt;/strong> (aperta il 24 feb): pablof7z propone un event puntatore (kind 39382) che dichiara uno spazio collaborativo elencando le pubkey dei co-proprietari nei tag &lt;code>p&lt;/code> e un kind di event target in un tag &lt;code>k&lt;/code>. Qualsiasi proprietario elencato può pubblicare event di quel kind con lo stesso tag &lt;code>d&lt;/code>, e i client risolvono lo stato corrente interrogando tutti i proprietari e prendendo l&amp;rsquo;event più recente. L&amp;rsquo;attribuzione di co-autorialità viene visualizzata solo quando un tag &lt;code>a&lt;/code> verificabile referenzia il puntatore e l&amp;rsquo;autore appare nei suoi tag &lt;code>p&lt;/code>, prevenendo rivendicazioni falsificate. Questo abilita pagine wiki condivise e risorse co-autoriate senza assegnare il controllo a un singolo keypair.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2234">NIP-09: Cancellazione a Cascata dei Repost&lt;/a>&lt;/strong> (aperta il 24 feb): Quando un autore originale cancella una nota, i relay dovrebbero anche cancellare qualsiasi repost di kind 6 o kind 16 che la referenzia. Motivato da preoccupazioni sulla privacy: i repost possono preservare informazioni trapelate accidentalmente dopo che l&amp;rsquo;autore ha cancellato la fonte. La modifica è solo lato relay e non richiede modifiche ai client.&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> (aperta il 23 feb): Aggiunge un metodo &lt;code>peekPublicKey()&lt;/code> alle estensioni browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. A differenza di &lt;code>getPublicKey()&lt;/code>, restituisce la pubkey corrente senza richiedere conferma all&amp;rsquo;utente, abilitando il login automatico silenzioso quando l&amp;rsquo;utente ha abilitato l&amp;rsquo;auto-login.&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> (aperta il 28 feb, bozza): Definisce quattro kind di event indirizzabili (30300-30303) per la pubblicazione strutturata di libri su Nostr. Un event Cover contiene i metadata root inclusi titolo, immagine di copertina, licenza tramite label &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> (Labeling) e codice lingua. Un event Index mappa ogni capitolo alla sua posizione usando indicizzazione frazionaria base62, che permette agli autori di inserire nuovi capitoli tra quelli esistenti senza rinumerazione. Gli event Chapter funzionano come intestazioni strutturali con immagini opzionali, mentre gli event Episode trasportano la prosa effettiva con un limite di 30.000 caratteri e tag immagine posizionati. Le recensioni usano gli Zap sugli event Cover con la descrizione dello Zap come testo della recensione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">NIP-54: Passaggio da Asciidoc a Djot&lt;/a>&lt;/strong> (aperta il 26 feb): In seguito alla &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/">correzione dell&amp;rsquo;internazionalizzazione del d-tag&lt;/a> di dicembre, questa PR propone di sostituire il formato markup Asciidoc del wiki &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> con &lt;a href="https://djot.net/">Djot&lt;/a>, aggiungendo una sezione di motivazioni ed esempi di wikilink per script non latini.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">NIP-66: Misure Difensive&lt;/a>&lt;/strong> (aperta il 26 feb): Basato sugli apprendimenti dai benchmark &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">nostrability/outbox&lt;/a>, aggiunge segnalazioni esplicite per i casi limite di &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>. Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a> companion definisce tag di output per SSL, geolocalizzazione, rete e controlli di connettività.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Prove di Identità Crittografica&lt;/strong> (voce wiki, kind 30817): Propone event di kind 30509 che collegano crittograficamente i certificati di firma APK ai profili Nostr. La prova funziona firmando un messaggio canonico contenente la pubkey Nostr con la chiave privata del certificato (supportando ECDSA, RSA PKCS1v15, Ed25519 e altri algoritmi standard), poi pubblicando la firma in un event di kind 30509 firmato con la chiave Nostr. I verificatori possono confermare che la persona che controlla il certificato di firma di un&amp;rsquo;app Android controlla anche la pubkey Nostr che dichiara di pubblicarla. Le prove scadono dopo un anno per impostazione predefinita e possono essere revocate esplicitamente. Implementato nel toolchain &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-31402: SARA Revenue Share Offering Registry&lt;/strong> (voce wiki, kind 30817): Definisce event indirizzabili di kind 31402 per la pubblicazione di offerte Simple Autonomous Revenue Agreement (SARA) sui relay Nostr. Gli emittenti pubblicizzano termini di condivisione dei ricavi regolati via Lightning inclusi percentuale della quota pool, trigger di pagamento, soglia in sats, durata del termine e prezzi a livelli. Agenti e umani possono scoprire le offerte sui relay e sottoscriverle autonomamente senza una piattaforma centrale. Il numero di kind rispecchia il kind 30402 (L402 Service Registry, pubblicato dallo stesso autore come voce wiki companion) poiché SARA rappresenta la gamba di ritorno della relazione di pagamento L402.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="pr-aperte-e-aggiornamenti-dei-progetti">PR Aperte e Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="damus-nip-89ittopicsnip-89-recommended-application-handlers">Damus: &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers)&lt;/h3>
&lt;p>La &lt;a href="https://github.com/damus-io/damus/pull/3337">PR #3337&lt;/a> implementa il supporto ai tag client NIP-89 per &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>. L&amp;rsquo;app ora emette un tag client su tutti i percorsi di pubblicazione (app principale, estensione di condivisione, evidenziatore, bozze) e visualizza &amp;ldquo;via ClientName&amp;rdquo; accanto ai timestamp quando altre app includono i loro tag. Un toggle Privacy nelle impostazioni Aspetto permette agli utenti di disabilitare l&amp;rsquo;emissione del tag. La &lt;a href="https://github.com/damus-io/damus/pull/3652">PR #3652&lt;/a> aggiunge una sezione Storage nelle Impostazioni con un grafico a torta interattivo che mostra l&amp;rsquo;utilizzo del disco per NostrDB e la cache Kingfisher con supporto all&amp;rsquo;esportazione.&lt;/p>
&lt;p>Aperta: la &lt;a href="https://github.com/damus-io/damus/pull/3657">PR #3657&lt;/a> aggiunge il fallback &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> per le note citate. Quando un &lt;code>nevent&lt;/code> inline include una pubkey autore ma nessun suggerimento relay e la nota è assente dal pool dell&amp;rsquo;utente, Damus recupera la lista relay kind 10002 dell&amp;rsquo;autore e riprova dai suoi relay di scrittura.&lt;/p>
&lt;h3 id="amethyst-nip-39ittopicsnip-39-external-identities-nip-c0-nip-66ittopicsnip-66">Amethyst: &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities), NIP-C0, &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha unito un&amp;rsquo;ondata di implementazioni NIP su 28 PR. Le rivendicazioni di identità esterna ora pubblicano come event dedicati di kind 10011 sotto &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1747">PR #1747&lt;/a>), separando l&amp;rsquo;identità sociale dai metadata di kind 0 con fallback retrocompatibile. Il supporto agli snippet di codice tramite NIP-C0 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1744">PR #1744&lt;/a>) aggiunge event di kind 1337 con accessor per linguaggio, estensione, runtime, licenza e dipendenze. L&amp;rsquo;implementazione del relay monitoring &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1742">PR #1742&lt;/a>) copre entrambi i tipi di event con parsing completo dei tag per metriche RTT, tipo di rete, NIP supportati e geohash.&lt;/p>
&lt;p>I DM cifrati sono arrivati su Amethyst Desktop (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1710">PR #1710&lt;/a>) con un layout chat a pannelli divisi che supporta sia &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) che &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages). Una nuova schermata feed relay (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1733">PR #1733&lt;/a>) permette agli utenti di navigare i post da un relay specifico con funzionalità follow/unfollow. Aperta: la verifica NIP-05 resistente alla censura (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>) aggiunge un percorso di verifica parallelo per gli identificatori &lt;code>.bit&lt;/code> che risolve contro la blockchain Namecoin invece dell&amp;rsquo;HTTP DNS. Quando Amethyst rileva un suffisso &lt;code>.bit&lt;/code> in un campo NIP-05, interroga un server ElectrumX-NMC per la cronologia delle transazioni del nome, analizza lo script &lt;code>NAME_UPDATE&lt;/code> dall&amp;rsquo;output più recente per estrarre la pubkey Nostr, e rifiuta i nomi più vecchi di 36.000 blocchi (la finestra di scadenza di Namecoin). Le connessioni ElectrumX si instradano attraverso SOCKS5 quando Tor è abilitato, con selezione dinamica del server tra endpoint clearnet e &lt;code>.onion&lt;/code>. Una cache LRU con TTL di un&amp;rsquo;ora previene query ripetute alla blockchain.&lt;/p>
&lt;h3 id="notedeck-architettura-outbox">Notedeck: Architettura Outbox&lt;/h3>
&lt;p>La &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> dalla gestione ad hoc del relay pool a un modello outbox centralizzato con sottoscrizioni a livello di account. Il modulo Messages ora pubblica una lista relay DM predefinita se non ne esiste una e instrada i DM ai relay preferiti dei destinatari secondo il kind 10050.&lt;/p>
&lt;h3 id="pika-profili-per-gruppo-e-feed-tutorial">Pika: Profili Per-Gruppo e Feed Tutorial&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica cifrata con Marmot disponibile su iOS e Android con una build desktop, ha ottenuto i profili per-gruppo (&lt;a href="https://github.com/sledtools/pika/pull/368">PR #368&lt;/a>). Gli utenti possono ora impostare un nome visualizzato e un&amp;rsquo;immagine separati per ogni chat di gruppo, insieme a una bio personalizzata. Questi profili pubblicano come event di kind 0 cifrati all&amp;rsquo;interno del gruppo Marmot, invisibili a chiunque sia esterno, con fallback al profilo Nostr globale dell&amp;rsquo;utente quando non è impostato un profilo specifico per il gruppo. Quando nuovi membri si uniscono, l&amp;rsquo;admin ritrasmette tutti i profili di gruppo memorizzati e ogni membro ripubblica il proprio al commit. Le immagini dei profili vengono cifrate con Marmot-media prima dell&amp;rsquo;upload su Blossom. La PR include 16 nuovi test unitari e espone la funzionalità sia tramite un comando CLI (&lt;code>update-group-profile&lt;/code>) che tramite la UI.&lt;/p>
&lt;p>Una nuova web app &lt;code>pika-news&lt;/code> (&lt;a href="https://github.com/sledtools/pika/pull/401">PR #401&lt;/a>) monitora le PR GitHub di Pika e genera automaticamente walkthrough tutorial passo-passo dalle diff delle PR, pubblicandoli come pagine server-rendered con autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. Gli utenti possono discutere tutorial specifici in tempo reale tramite chat autenticata Nostr.&lt;/p>
&lt;h3 id="divine-widget-incorporabili-e-risposte-video">diVine: Widget Incorporabili e Risposte Video&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, la piattaforma di condivisione video nativa su Nostr, ha unito 132 PR in dieci giorni. I widget iframe incorporabili (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1843">PR #1843&lt;/a>) forniscono una pagina &lt;code>/embed?npub=...&lt;/code> autonoma che renderizza il profilo di un utente e i suoi video più recenti. La funzionalità risposte video (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1915">PR #1915&lt;/a>), protetta da un feature flag, usa commenti Kind 1111 (&lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>) con metadata imeta &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (Media Attachments). I filtri di contenuto a tre vie ispirati a Bluesky (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1797">PR #1797&lt;/a>) offrono controlli Show/Warn/Hide su 17 categorie di avvisi di contenuto &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a>.&lt;/p>
&lt;h3 id="strfry-validazione-filtri-req">strfry: Validazione Filtri REQ&lt;/h3>
&lt;p>La &lt;a href="https://github.com/hoytech/strfry/pull/163">PR #163&lt;/a> aggiunge la validazione configurabile dei filtri REQ a &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, il relay Nostr in C++. Gli operatori possono impostare il numero massimo di filtri per REQ, la presenza obbligatoria di autore o tag, whitelist di kind consentiti e limiti di kind per filtro. La funzionalità è rivolta ai deployment di relay NWC che necessitano di un&amp;rsquo;applicazione rigorosa dei filtri. Aperta: la &lt;a href="https://github.com/hoytech/strfry/pull/173">PR #173&lt;/a> aggiunge la compressione zstd opzionale per i payload degli event al momento dell&amp;rsquo;ingestione.&lt;/p>
&lt;h3 id="rust-nostr-nip-62ittopicsnip-62-request-to-vanish">rust-nostr: &lt;a href="https://nostrcompass.org/it/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 libreria Rust per il protocollo Nostr, ha aggiunto il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) su tutti e tre i backend di database: &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>. L&amp;rsquo;implementazione LMDB include opzioni configurabili per abilitare o disabilitare l&amp;rsquo;applicazione di &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> e NIP-62 per deployment.&lt;/p>
&lt;h3 id="ndk-event-collaborativi-e-timeout-nip-46">NDK: Event Collaborativi e Timeout NIP-46&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>, il Nostr Development Kit per JavaScript/TypeScript, ha unito la &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/380">PR #380&lt;/a> che introduce &lt;code>NDKCollaborativeEvent&lt;/code> per documenti collaborativi multi-autore usando un event puntatore indirizzabile (kind 39382) che definisce gli autori autorizzati. Un timeout configurabile per &lt;code>NDKNip46Signer&lt;/code> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/381">PR #381&lt;/a>) impedisce alle operazioni di firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> di bloccarsi indefinitamente quando un bunker non risponde.&lt;/p>
&lt;h3 id="tenex-categorizzazione-degli-agenti-e-gating-tramite-pubkey">TENEX: Categorizzazione degli Agenti e Gating tramite Pubkey&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, la piattaforma di orchestrazione agenti AI nativa su Nostr, ha unito due PR relative alla sicurezza. La categorizzazione degli agenti basata su ruoli TIP-01 (&lt;a href="https://github.com/tenex-chat/tenex/pull/91">PR #91&lt;/a>) mappa le categorie degli agenti (principal, orchestrator, worker, advisor, auditor) a restrizioni automatizzate sugli strumenti tramite una mappa denied-tools. Il gating front-door tramite pubkey (&lt;a href="https://github.com/tenex-chat/tenex/pull/87">PR #87&lt;/a>) assicura che solo gli event da pubkey whitelisted o firmate dal backend siano instradati insieme agli agenti conosciuti; le pubkey sconosciute vengono scartate silenziosamente con span OpenTelemetry per l&amp;rsquo;audit.&lt;/p>
&lt;h3 id="zap-cooking-dashboard-abbonamenti">Zap Cooking: Dashboard Abbonamenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la piattaforma di condivisione ricette basata su Nostr, ha unito 25 PR e 85 commit in dieci giorni. Una dashboard abbonamenti (&lt;a href="https://github.com/zapcooking/frontend/pull/228">PR #228&lt;/a>) mostra lo stato della sottoscrizione con date di scadenza e opzioni di gestione/upgrade, riabilita i gate delle funzionalità per i livelli Sous Chef e Zappy con controlli sia lato client che lato server, e standardizza la nomenclatura dei livelli su 26 file. Il caricamento dei messaggi di gruppo in due fasi (&lt;a href="https://github.com/zapcooking/frontend/pull/227">PR #227&lt;/a>) fornisce un fetch iniziale rapido di 3 giorni per la visualizzazione istantanea seguito da un backfill in background di 40 giorni.&lt;/p>
&lt;p>Lo storage del mnemonic del wallet è passato dalla cifratura derivata dalla pubkey alla cifratura encrypt-to-self &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (&lt;a href="https://github.com/zapcooking/frontend/pull/224">PR #224&lt;/a>), correggendo una vulnerabilità in cui il vecchio schema derivava la chiave da &lt;code>SHA-256(pubkey)&lt;/code>, che è effettivamente non cifrato poiché le pubkey sono pubbliche. I wallet esistenti vengono migrati silenziosamente al primo caricamento. La chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha ottenuto indicatori di non letto con badge a pallino rosso e accesso solo su invito con codici invito di kind 9009 (&lt;a href="https://github.com/zapcooking/frontend/pull/213">PR #213&lt;/a>). Le anteprime link e gli embed di event Nostr ora si renderizzano nei DM e nei messaggi di gruppo (&lt;a href="https://github.com/zapcooking/frontend/pull/218">PR #218&lt;/a>). Una sezione backup Nostr nelle Impostazioni (&lt;a href="https://github.com/zapcooking/frontend/pull/210">PR #210&lt;/a>) memorizza follow e liste mute tramite storage cifrato &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> (Application-specific Data) con versioning rotativo a 3 slot. Le prestazioni di avvio sono migliorate attraverso il rinvio dei servizi di notifica, il rendering DOM lazy tramite IntersectionObserver (riducendo i nodi DOM da circa 15.000 a circa 3.000 su un feed di 200 event) e TTL estesi della cache outbox (&lt;a href="https://github.com/zapcooking/frontend/pull/208">PR #208&lt;/a>). Una modale di stampa ricetta personalizzabile (&lt;a href="https://github.com/zapcooking/frontend/pull/205">PR #205&lt;/a>) permette agli utenti di selezionare quali sezioni includere con un&amp;rsquo;anteprima live. L&amp;rsquo;integrazione &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>) aggiunge garanzie di verifica per le richieste POST e GET.&lt;/p>
&lt;h3 id="keep-migrazione-dello-stato-guidata-da-rust">Keep: Migrazione dello Stato Guidata da Rust&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, il gestore di chiavi private basato su Nostr per Android, ha unito la &lt;a href="https://github.com/privkeyio/keep-android/pull/178">PR #178&lt;/a>, eliminando quattro store di configurazione Kotlin a favore dello stato condiviso guidato da Rust dal livello keep-mobile. Un loop di polling a 10 secondi è stato sostituito con &lt;code>KeepStateCallback&lt;/code> push-based da Rust. La &lt;a href="https://github.com/privkeyio/keep-android/pull/179">PR #179&lt;/a> aggiunge backup e ripristino cifrati con protezione tramite passphrase.&lt;/p>
&lt;h3 id="mostro-mobile-cifratura-chat-dispute">Mostro Mobile: Cifratura Chat Dispute&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client mobile per la piattaforma di trading Bitcoin P2P Mostro, ha distribuito una migrazione in due fasi della cifratura chat dispute. Il primo passo (&lt;a href="https://github.com/MostroP2P/mobile/pull/495">PR #495&lt;/a>) passa dal wrapping specifico di mostro alla cifratura con chiave condivisa derivata dalla pubkey dell&amp;rsquo;admin. Basandosi su questo, la &lt;a href="https://github.com/MostroP2P/mobile/pull/501">PR #501&lt;/a> unifica il modello di messaggi con &lt;code>NostrEvent&lt;/code> e memorizza gli event gift wrap cifrati su disco, coerente con il pattern di chat peer-to-peer. Una correzione della firma BIP-340 (&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>) sovrascrive la dipendenza bip340 alla 0.2.0, risolvendo un bug di padding &lt;code>bigToBytes()&lt;/code> che causava l&amp;rsquo;invalidità dell'1-2% delle firme Schnorr e il 100% di fallimenti per le chiavi la cui chiave pubblica inizia con &lt;code>0x00&lt;/code>. Order Details ora mostra etichette di stato leggibili invece di valori grezzi del protocollo, localizzate in inglese, spagnolo, italiano e francese (&lt;a href="https://github.com/MostroP2P/mobile/pull/502">PR #502&lt;/a>). HalCash è stato aggiunto e SEPA rimosso come metodo di pagamento (&lt;a href="https://github.com/MostroP2P/mobile/pull/493">PR #493&lt;/a>), poiché i trasferimenti SEPA possono superare le 24 ore (SEPA Instant rimane).&lt;/p>
&lt;p>Lato server, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha corretto il ripristino della sessione dispute per includere il campo initiator (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) e ora chiude automaticamente le dispute attive quando un venditore rilascia i fondi, pubblicando un event Nostr di risoluzione in modo che i client admin vedano la risoluzione (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>).&lt;/p>
&lt;h2 id="cinque-anni-di-febbraio-di-nostr">Cinque Anni di Febbraio di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#cinque-anni-di-gennaio-di-nostr">La newsletter del mese scorso&lt;/a> ha tracciato le pietre miliari di gennaio di Nostr dai primi sviluppi fino all&amp;rsquo;esplosione di Damus, arrivando all&amp;rsquo;infrastruttura di sicurezza nel 2026. Questa retrospettiva copre cosa è successo ogni febbraio dal 2021 al 2026.&lt;/p>
&lt;h3 id="febbraio-2021-la-riscrittura">Febbraio 2021: La Riscrittura&lt;/h3>
&lt;p>Tre mesi dopo la sua nascita, il febbraio di Nostr ha prodotto il cambiamento più significativo delle origini del protocollo. Il 14-15 febbraio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nostr/commit/33a1a70">riscritto NIP-01&lt;/a>, sostituendo il formato messaggi originale con il modello EVENT/REQ/CLOSE che il protocollo usa ancora oggi. Prima di questa riscrittura, client e relay comunicavano attraverso una struttura più semplice. Separare la pubblicazione degli event (EVENT) dalla gestione delle sottoscrizioni (REQ/CLOSE) ha abilitato il filtraggio lato relay che si sarebbe rivelato essenziale per la scalabilità.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> è arrivato lo stesso mese, aggiungendo messaggi diretti cifrati usando segreti condivisi derivati dallo scambio di chiavi Diffie-Hellman su secp256k1. La sua cifratura era basilare (AES-256-CBC) e sarebbe stata successivamente sostituita dalla crittografia verificata di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, ma ha dato alla manciata di utenti iniziali il loro primo canale di comunicazione privata sul protocollo.&lt;/p>
&lt;p>Il tooling si è espanso con &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>, un client a riga di comando in Go per l&amp;rsquo;interazione con i relay da terminale, e futurepaul ha iniziato &lt;a href="https://github.com/futurepaul/nostr-rs">nostr-rs&lt;/a>, una prima implementazione Rust. L&amp;rsquo;intera rete funzionava su due o tre relay, coordinata attraverso un &lt;a href="https://t.me/nostr_protocol">gruppo Telegram&lt;/a>, con circa sette contributor attivi.&lt;/p>
&lt;h3 id="febbraio-2022-costruire-lo-slancio">Febbraio 2022: Costruire lo Slancio&lt;/h3>
&lt;p>Il &lt;a href="https://news.ycombinator.com/item?id=29749061">post su Hacker News&lt;/a> del 31 dicembre 2021 ha continuato ad attirare sviluppatori fino a febbraio. Il repository &lt;a href="https://github.com/nostr-protocol/nostr">nostr-protocol/nostr&lt;/a> (il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> formale non sarebbe esistito fino a maggio 2022) ha ricevuto sei pull request a febbraio, inclusi NIP-13 (Proof of Work) di vinliao, NIP-14 (Reputation) di fiatjaf, NIP-15 (Resource Relations) di Cameri e &lt;a href="https://github.com/nostr-protocol/nostr/pull/75">NIP-17&lt;/a> (Git Updates Over Nostr) di melvincarvalho. Il numero NIP è stato successivamente riassegnato a Private Direct Messages; la collaborazione git su Nostr è continuata separatamente attraverso quello che è diventato &lt;a href="https://gitworkshop.dev">gitworkshop.dev&lt;/a>.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a> di Greg Heartsfield è stato il cavallo di battaglia del mese con 34 commit e tre rilasci. La versione 0.5.0 del 12 febbraio ha aggiunto limiti di pubblicazione per utenti verificati &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a>. Le versioni 0.5.1 e 0.5.2 sono seguite nelle due settimane successive, e il relay gestiva la maggior parte del traffico della rete da solo.&lt;/p>
&lt;p>Robert C. Martin (Uncle Bob) stava costruendo &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop in Clojure, registrando 69 commit tra il 18 gennaio e la fine di febbraio. Il suo coinvolgimento ha portato attenzione dalla più ampia comunità di ingegneria del software. L&amp;rsquo;estensione browser &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> di fiatjaf ha distribuito il supporto alla decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e le politiche di preferenza dei relay a febbraio, implementando l&amp;rsquo;interfaccia &lt;code>window.nostr&lt;/code> (&lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>) che i client web usano ancora per la delega delle chiavi.&lt;/p>
&lt;p>&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, ancora il client web principale, ha ottenuto la registrazione del gestore di protocollo &lt;code>web+nostr&lt;/code> il 13 febbraio, un primo tentativo di deep linking tra applicazioni Nostr. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> ha rafforzato la validazione NIP-05. &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> ha aggiunto il supporto ai DM cifrati NIP-04 e il parsing NIP-12 (Generic Tag Queries) su 11 commit. La rete operava su circa 7-15 relay con una base utenti attiva probabilmente nell&amp;rsquo;ordine delle centinaia. Damus e Nostream non esistevano ancora e non sarebbero apparsi fino ad aprile 2022.&lt;/p>
&lt;h3 id="febbraio-2023-attenzione-internazionale">Febbraio 2023: Attenzione Internazionale&lt;/h3>
&lt;p>Febbraio 2023 ha portato a Nostr la sua più grande ondata di attenzione pubblica. &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS di William Casarin, era stato &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approvato sull&amp;rsquo;App Store di Apple il 31 gennaio&lt;/a> dopo ripetuti rifiuti. Entro il 1° febbraio aveva raggiunto la top 10 nella categoria Social Networking negli USA. Due giorni dopo, il 2 febbraio, &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Apple ha rimosso Damus dall&amp;rsquo;App Store cinese&lt;/a> apparentemente su richiesta dell&amp;rsquo;Amministrazione del Cyberspazio della Cina.&lt;/p>
&lt;p>I principali media inclusi TechCrunch e CoinDesk hanno coperto la rimozione, amplificando la consapevolezza sia dell&amp;rsquo;app che del protocollo. Le chiavi pubbliche uniche con metadata su nostr.directory hanno superato le 300.000 entro il 3 febbraio. Tutti i relay erano gestiti da appassionati che pagavano di tasca propria, e l&amp;rsquo;infrastruttura si è affannata per gestire il carico. Circa 289 relay erano tracciati a inizio febbraio, un numero che ha continuato a crescere.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> ha registrato 29 pull request unite quel mese, il conteggio mensile più alto nella storia del protocollo fino a quel momento. &lt;a href="https://github.com/nostr-protocol/nips/pull/224">NIP-57&lt;/a> (Lightning Zaps) e &lt;a href="https://github.com/nostr-protocol/nips/pull/220">NIP-23&lt;/a> (Long-form Content) sono stati entrambi uniti il 13 febbraio, aggiungendo micropagamenti Bitcoin e espandendo Nostr oltre i post brevi in un solo giorno. &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) era stato unito una settimana prima, il 7 febbraio, abilitando il modello outbox che è seguito. &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) sono stati anch&amp;rsquo;essi rilasciati prima della fine del mese.&lt;/p>
&lt;p>La Human Rights Foundation &lt;a href="https://hrf.org/devfund2023q1">ha assegnato 50.000$ a William Casarin per lo sviluppo di Nostr e Damus&lt;/a> il 21 febbraio, una delle prime grant istituzionali a un progetto Nostr. OpenSats non aveva ancora lanciato il suo fondo Nostr (cosa che sarebbe avvenuta a &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">luglio 2023&lt;/a>).&lt;/p>
&lt;h3 id="febbraio-2024-durabilità-del-protocollo">Febbraio 2024: Durabilità del Protocollo&lt;/h3>
&lt;p>Febbraio 2024 ha spostato il focus dalla crescita alla durabilità del protocollo. &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), aperto dal luglio precedente, stava lavorando verso una sostituzione per l&amp;rsquo;invecchiata cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> usando la crittografia verificata di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e il gift wrapping di &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. NIP-04 faceva trapelare metadata agli operatori dei relay, che potevano vedere le coppie mittente-destinatario. NIP-17 nasconde l&amp;rsquo;identità del mittente dietro keypair usa e getta ed è stato unito quella primavera dopo un ultimo giro di revisione a marzo.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (Simple Groups) è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/566">unito il 28 febbraio&lt;/a> dopo mesi di discussione, definendo come i relay possono ospitare chat di gruppo moderate con ruoli admin e controllo degli accessi. &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (tag imeta) è stato unito il 1° febbraio, standardizzando come i client allegano dimensioni delle immagini e anteprime blurhash agli event media.&lt;/p>
&lt;p>Il 16 febbraio, il repository NIPs ha aggiunto &lt;a href="https://github.com/nostr-protocol/nips/commit/62c48eff">BREAKING.md&lt;/a>, un file che traccia le modifiche incompatibili alla specifica del protocollo. La sua creazione ha riconosciuto che Nostr aveva raggiunto un livello di maturità in cui le modifiche incompatibili necessitavano di documentazione formale.&lt;/p>
&lt;p>Ventidue pull request sono state unite quel mese. &lt;a href="https://github.com/cashubtc/npubcash-server">npub.cash&lt;/a> è stato lanciato come servizio di indirizzo Lightning che permette a qualsiasi npub di ricevere pagamenti senza gestire un server. Un &lt;a href="https://arxiv.org/abs/2402.05709">articolo accademico&lt;/a> pubblicato l'8 febbraio ha rilevato che il 95% dei relay gratuiti non poteva coprire i costi operativi attraverso le donazioni, con il 35% dei relay a pagamento che addebitava tariffe di ammissione inferiori a 1.000 sats (circa 0,45$ all&amp;rsquo;epoca).&lt;/p>
&lt;h3 id="febbraio-2025-crescita-dellinfrastruttura">Febbraio 2025: Crescita dell&amp;rsquo;Infrastruttura&lt;/h3>
&lt;p>Febbraio 2025 ha prodotto 28 pull request unite nel repository NIPs. Un NIP &lt;a href="https://nostrcompass.org/it/topics/nip-62/">Right to Vanish&lt;/a> è stato unito il 19 febbraio, definendo come gli utenti possono richiedere la cancellazione dei propri dati dai relay in risposta a questioni normative sulla portabilità dei dati e il controllo dell&amp;rsquo;utente.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> (Cashu Wallet) e NIP-61 (Nutzaps) hanno ricevuto aggiornamenti di semplificazione, razionalizzando il formato di storage dei token ecash. Un rollout del q-tag (quote tag) è continuato su più NIP, standardizzando come gli event referenziano altri event per citazioni e threading.&lt;/p>
&lt;p>I rilasci dei client hanno segnato progressi costanti. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> v0.3.0 alpha è stato distribuito l&amp;rsquo;ultimo giorno di gennaio, con l&amp;rsquo;adozione che è continuata in febbraio. Primal v2.1 è seguito il 7 febbraio, e &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> v0.3.0, un&amp;rsquo;implementazione relay in Go, è stato rilasciato il 21 febbraio.&lt;/p>
&lt;p>NOSTRLDN v5 ha riunito la comunità Nostr londinese per il suo quinto incontro. Un bridge DVMCP ha collegato le Data Vending Machine di Nostr (&lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>) con il Model Context Protocol, prefigurando il lavoro di integrazione degli agenti AI arrivato il mese successivo.&lt;/p>
&lt;h3 id="febbraio-2026-oltre-i-social-media">Febbraio 2026: Oltre i Social Media&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;attività di febbraio 2026 è tratta dai numeri di Nostr Compass &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/">#8&lt;/a> fino al &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/">#11&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Febbraio 2026 ha prodotto la gamma più ampia di sviluppo a livello applicativo in un singolo mese di Nostr. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha distribuito la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-distribuisce-la-prima-beta-pubblica">prima beta pubblica&lt;/a> per il trading decentralizzato di Bitcoin peer-to-peer, e &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> ha raggiunto la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#zapstore-v100">1.0 stabile&lt;/a> dopo mesi di test in release candidate. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> ha portato la messaggistica in tempo reale cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> con supporto al signer Amber e oltre 160 miglioramenti uniti.&lt;/p>
&lt;p>Proposte concorrenti per agenti AI da pablof7z (NIP-AE per flussi di lavoro degli agenti, NIP-AD per annunci di server MCP) e joelklabo (AI Agent Messages) sono arrivate insieme a una &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#aggiornamenti-nip">proposta di Coordinamento Agenti DVM&lt;/a> che estende &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#contextvm-mcp-su-nostr">ContextVM&lt;/a> ha distribuito miglioramenti all&amp;rsquo;SDK per collegare il Model Context Protocol al trasporto Nostr. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#burrow-messaggistica-mls-per-agenti-ai">Burrow&lt;/a> ha aggiunto la messaggistica cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> sia per agenti AI che per umani, estendendo l&amp;rsquo;identità e l&amp;rsquo;infrastruttura relay di Nostr alla comunicazione machine-to-machine.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-rete-mesh-nativa-su-nostr">FIPS&lt;/a> ha distribuito un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr, usando keypair secp256k1 come identità dei nodi con routing agnostico dal trasporto su UDP, Ethernet, Bluetooth o radio LoRa. Il suo design ha mostrato che il modello di chiavi di Nostr si estende oltre i social media fino all&amp;rsquo;infrastruttura di rete fisica.&lt;/p>
&lt;p>&lt;a href="https://opensats.org/blog/fifteenth-wave-of-nostr-grants">OpenSats ha annunciato la quindicesima ondata di grant Nostr&lt;/a>, finanziando progetti inclusi ContextVM e Nostube. Le modifiche al protocollo hanno incluso il supporto hold invoice &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> per Nostr Wallet Connect e &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (Counting Results) HyperLogLog per la stima dei conteggi lato relay. Anche la scopribilità dei service provider &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) per il punteggio &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> è stata unita. &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha iniziato un redesign completo delle API mentre Nostria 3.0 e &lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (iOS TestFlight) sono stati entrambi distribuiti. Il livello di cache locale di &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> ha affrontato la disponibilità dei media sui relay.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Cinque febbraio di storia del protocollo mostrano una progressione costante dal lavoro fondamentale alla diversificazione a livello applicativo, con l&amp;rsquo;afflusso di utenti del 2023 come punto di svolta. Nel 2021, sette contributor lavoravano su tre relay. Entro il 2026, lo stesso protocollo supportava reti mesh e proposte per agenti autonomi in esecuzione su infrastruttura di produzione.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #11</title><link>https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> porta la messaggistica in tempo reale e il supporto al signer Amber con oltre 160 miglioramenti uniti. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corregge problemi di riproduzione video e aggiunge eventi di visualizzazione Kind 22236 per l&amp;rsquo;analisi dei creator. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> e &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> pubblicano aggiornamenti. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr. Notecrumbs riceve correzioni di stabilità per le anteprime link di damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> collega Nostr con il Model Context Protocol. I nuovi progetti includono &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> per la messaggistica cifrata con MLS tra agenti AI e umani, e &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> per la gestione di vault e identità basata su browser. Gli approfondimenti coprono la firma Android NIP-55 e la sincronizzazione del wallet Cashu NIP-60.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> porta la messaggistica in tempo reale e il supporto al signer Amber con oltre 160 miglioramenti uniti. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corregge problemi di riproduzione video e aggiunge eventi di visualizzazione Kind 22236 per l&amp;rsquo;analisi dei creator. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> e &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> pubblicano aggiornamenti. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr. Notecrumbs riceve correzioni di stabilità per le anteprime link di damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> collega Nostr con il Model Context Protocol. I nuovi progetti includono &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> per la messaggistica cifrata con MLS tra agenti AI e umani, e &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> per la gestione di vault e identità basata su browser. Gli approfondimenti coprono la firma Android NIP-55 e la sincronizzazione del wallet Cashu NIP-60.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="miglioramenti-di-stabilità-di-notecrumbs">Miglioramenti di Stabilità di Notecrumbs&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>, il server API e web che alimenta le anteprime link di damus.io, ha ricevuto una serie di correzioni che risolvono problemi di affidabilità.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">correzione della concorrenza&lt;/a> ha sostituito il meccanismo di deduplicazione in-flight con watch channel. Due chiamanti che richiedevano la stessa nota potevano diventare entrambi fetcher, causando un deadlock quando uno completava prima che l&amp;rsquo;altro si iscrivesse alla notifica. I watch channel con operazioni atomiche garantiscono che un solo fetcher sia attivo mentre gli altri attendono il risultato.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">rate limiting&lt;/a> implementa una difesa a due livelli contro il bombardamento dei relay. Quando gli utenti accedono ripetutamente alla stessa nota, il sistema ora fa debounce delle richieste ai relay con una finestra di raffreddamento di 5 minuti. Questa protezione si estende a tutti i tipi &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> e ai feed dei profili, prevenendo spam proporzionale ai relay durante il traffico intenso.&lt;/p>
&lt;p>I &lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">miglioramenti delle prestazioni&lt;/a> hanno spostato i fetch secondari dei dati a task tokio in background. Le pagine ora si renderizzano istantaneamente con dati in cache invece di bloccarsi su timeout sequenziali dei relay che potevano aggiungere fino a 7,5 secondi. Un aggiornamento a nostrdb 0.10.0 ha accompagnato queste correzioni.&lt;/p>
&lt;h3 id="contextvm-mcp-su-nostr">ContextVM: MCP su Nostr&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a> è una suite di strumenti che collega Nostr e il &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> (MCP). I commit recenti hanno introdotto la nuova specifica &lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a> che abilita i pagamenti, con miglioramenti all&amp;rsquo;&lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a> distribuiti nel corso di febbraio.&lt;/p>
&lt;p>L&amp;rsquo;SDK fornisce transport TypeScript client e server per MCP su Nostr. Gli sviluppatori possono esporre server MCP attraverso la rete Nostr e i client possono connettersi ad essi. I relay agiscono come un bus messaggi cieco, instradando semplicemente eventi cifrati in modo opaco. I client senza supporto nativo a Nostr si connettono attraverso un livello proxy. La libreria gestisce la gestione dei relay e la firma crittografica per l&amp;rsquo;autenticazione degli event. Funziona sia in ambienti Node.js che browser.&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a> fornisce una CLI per la scoperta di server e l&amp;rsquo;invocazione di metodi. &lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a> calcola punteggi di fiducia personalizzati dalla distanza nel grafo sociale combinata con la validazione del profilo.&lt;/p>
&lt;p>ContextVM si posiziona come livello ponte: i server MCP esistenti acquisiscono interoperabilità con Nostr mantenendo i loro transport convenzionali.&lt;/p>
&lt;h3 id="white-noise-documenta-la-ricerca-utenti-decentralizzata">White Noise Documenta la Ricerca Utenti Decentralizzata&lt;/h3>
&lt;p>Un &lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">post sul blog di jgmontoya&lt;/a> spiega come &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> gestisce la ricerca utenti attraverso la rete relay decentralizzata.&lt;/p>
&lt;p>La distribuzione dei profili crea la sfida: a differenza dei messenger centralizzati con database unificati, i profili Nostr si disperdono su decine di relay senza indice centrale. White Noise risolve questo problema attraverso un&amp;rsquo;architettura produttore-consumatore che gira in parallelo.&lt;/p>
&lt;p>Un processo produttore espande continuamente il grafo sociale verso l&amp;rsquo;esterno a partire dai seguiti dell&amp;rsquo;utente, recuperando liste di follow a distanze crescenti e accodando le pubkey scoperte per la risoluzione dei profili. Il consumatore risolve le corrispondenze attraverso cinque livelli di costo crescente: tabella utenti locale (più veloce), profili in cache dalle ricerche precedenti, relay connessi, liste relay utente per &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e query dirette ai relay dichiarati dall&amp;rsquo;utente (più lento).&lt;/p>
&lt;p>Le ricerche a freddo richiedono circa 3 secondi mentre le ricerche a caldo dalla cache scendono a circa 10 millisecondi. Per i nuovi utenti senza grafi sociali consolidati, il sistema inietta nodi bootstrap ben connessi per garantire la funzionalità di ricerca. L&amp;rsquo;appartenenza ai gruppi fornisce un segnale sociale implicito accanto ai seguiti espliciti.&lt;/p>
&lt;p>La strumentazione si è rivelata fondamentale per l&amp;rsquo;ottimizzazione, nota l&amp;rsquo;autore. Senza metriche, i miglioramenti erano solo intuizioni.&lt;/p>
&lt;h3 id="fips-rete-mesh-nativa-su-nostr">FIPS: Rete Mesh Nativa su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> (Free Internetworking Peering System) è un&amp;rsquo;implementazione Rust funzionante di una rete mesh auto-organizzante che usa le keypair Nostr (secp256k1) come identità dei nodi. La &lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">documentazione di design&lt;/a> accompagna il codice funzionale.&lt;/p>
&lt;p>Il protocollo affronta l&amp;rsquo;indipendenza infrastrutturale: i nodi si scoprono automaticamente senza server centrali o autorità di certificazione. Un spanning tree fornisce routing basato su coordinate mentre i bloom filter propagano informazioni di raggiungibilità, permettendo ai nodi di prendere decisioni di inoltro con sola conoscenza locale. L&amp;rsquo;agnosticismo dal trasporto significa che lo stesso protocollo funziona su UDP, Ethernet, Bluetooth, radio LoRa o qualsiasi mezzo capace di datagrammi.&lt;/p>
&lt;p>Due livelli di cifratura proteggono il traffico. La cifratura a livello link (pattern Noise IK) protegge la comunicazione hop-by-hop tra vicini con autenticazione reciproca e forward secrecy. La cifratura a livello sessione (pattern Noise XK) fornisce protezione end-to-end contro i router intermedi, dove solo la destinazione può decifrare il payload. Questo rispecchia come TLS protegge il traffico HTTP anche quando attraversa reti non fidate.&lt;/p>
&lt;p>L&amp;rsquo;architettura usa uno spanning tree a &amp;ldquo;greedy embedding&amp;rdquo; per il routing. Ogni nodo riceve coordinate basate sulla sua posizione relativa alla radice dell&amp;rsquo;albero e al genitore. I pacchetti vengono instradati greedy verso coordinate più vicine alla destinazione, con bloom filter che pubblicizzano gli endpoint raggiungibili. Quando il routing greedy fallisce (minimi locali), i nodi possono ricorrere ai percorsi basati sull&amp;rsquo;albero.&lt;/p>
&lt;p>L&amp;rsquo;implementazione Rust include già il trasporto UDP con scoperta tramite bloom filter. I lavori futuri mirano all&amp;rsquo;integrazione relay Nostr per il bootstrapping dei peer.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>Questa settimana ha portato rilasci nell&amp;rsquo;infrastruttura relay e nelle applicazioni client, con nuovi progetti che entrano nello spazio.&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>, il relay personale all-in-one che raggruppa quattro funzioni relay con un server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha distribuito la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>. Questo rilascio va oltre la fase RC &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#haven-v120-rc3">coperta la settimana scorsa&lt;/a>.&lt;/p>
&lt;p>Il supporto multi-npub permette a una singola istanza HAVEN di servire diverse identità Nostr tramite whitelisting, con nuove funzionalità di blacklisting per il controllo degli accessi. Un sistema di backup riscritto usa il formato JSONL portabile, con un comando &lt;code>haven restore&lt;/code> per importare note da file JSONL. L&amp;rsquo;integrazione con lo storage cloud aggiunge i flag &lt;code>--to-cloud&lt;/code> e &lt;code>--from-cloud&lt;/code> per la gestione dei backup remoti.&lt;/p>
&lt;p>I miglioramenti al &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> includono livelli di profondità configurabili per i calcoli di fiducia e intervalli di aggiornamento automatico di 24 ore con ottimizzazione lockless che riduce l&amp;rsquo;overhead di memoria. La configurazione dello user-agent per le richieste ai relay e le impostazioni di timeout Blastr configurabili completano il rilascio, insieme all&amp;rsquo;esportazione dati in JSONL compresso.&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>, l&amp;rsquo;app di messaggistica cifrata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> che implementa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a> con oltre 160 miglioramenti uniti.&lt;/p>
&lt;p>Questo rilascio porta la messaggistica in tempo reale attraverso connessioni in streaming invece del polling, così i messaggi arrivano istantaneamente. Il supporto Amber (&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>) significa che le chiavi private non devono mai toccare l&amp;rsquo;app. La condivisione delle immagini ora funziona con tracciamento del progresso di upload e placeholder blurhash durante il caricamento. La visualizzazione a schermo intero supporta il pinch-to-zoom.&lt;/p>
&lt;p>La messaggistica di gruppo ha ricevuto miglioramenti di affidabilità con le liste chat che mostrano i nomi dei mittenti e la cifratura &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> che garantisce la forward secrecy. La ricerca utenti si espande verso l&amp;rsquo;esterno dai seguiti fino a quattro gradi di separazione con risultati che arrivano in streaming man mano che vengono trovati.&lt;/p>
&lt;p>Un breaking change azzera tutti i dati locali all&amp;rsquo;aggiornamento a causa di modifiche al protocollo Marmot e al passaggio allo storage locale cifrato. Gli utenti dovrebbero fare il backup delle chiavi nsec prima di aggiornare.&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>, il client video a ciclo breve costruito sugli archivi restaurati di Vine, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a> con ampie correzioni alla riproduzione video e un nuovo sistema di analisi decentralizzato.&lt;/p>
&lt;p>I problemi di riproduzione video hanno dominato le correzioni: pausa fantasma, audio doppio tra video, flash nero tra miniature e primi frame, e crash del player smaltito sono tutti risolti. Un player video in pool gestisce ora il feed Home per una riproduzione coerente.&lt;/p>
&lt;p>Gli event di visualizzazione effimeri Kind 22236 abilitano l&amp;rsquo;analisi dei creator e le raccomandazioni. Il sistema traccia le fonti di traffico (home, varianti di scoperta, profilo, condivisione, ricerca) e i conteggi dei loop filtrando le auto-visualizzazioni. Le perdite di percorso file locale nei tag imeta degli event Nostr sono corrette con URL Blossom canonici costruiti lato client secondo la specifica BUD-01.&lt;/p>
&lt;p>I miglioramenti al signer remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> includono connessioni relay parallelizzate e supporto all&amp;rsquo;URL di callback. Android riconnette le connessioni WebSocket alla ripresa dell&amp;rsquo;app dopo l&amp;rsquo;approvazione del signer.&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>, il client Nostr web focalizzato sulla gestione dei relay e la moderazione &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>, ha distribuito la &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.30">0.6.30&lt;/a> con supporto alle miniature video, migliorando la navigazione dei media nei feed.&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>, il client Nostr per iOS, ha distribuito la &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.26.0">v1.26.0&lt;/a> con una nuova sezione feed Live Streams e una schermata Impostazioni riprogettata. I GIF possono ora essere ospitati su server media Blossom, riducendo la dipendenza da servizi centralizzati. L&amp;rsquo;integrazione Klipy GIFs fornisce un backup quando Tenor non è disponibile. Le intestazioni per anno nelle conversazioni DM e la visualizzazione del conteggio menzioni completano le modifiche lato utente.&lt;/p>
&lt;p>Gli strumenti per sviluppatori e le app CLI hanno ricevuto aggiornamenti anche questa settimana.&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>, il coltellino svizzero a riga di comando di fiatjaf per Nostr, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.5">v0.18.5&lt;/a> con un nuovo sottocomando &lt;code>nak profile&lt;/code> per recuperare e visualizzare profili utente. Il comando &lt;code>git clone&lt;/code> ora supporta i nomi &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> negli URI &lt;code>nostr://&lt;/code>, abilitando il cloning di repository tramite identificatori leggibili.&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>, il messenger cifrato con &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> per iOS, Android e desktop costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v0.5.3">v0.5.3&lt;/a>. I commit recenti aggiungono il caricamento di file e il supporto al drag-and-drop media nell&amp;rsquo;app desktop, insieme a correzioni per il deployment su Cloudflare Workers.&lt;/p>
&lt;p>Pika usa un core Rust che possiede tutta la logica di business mentre iOS (SwiftUI) e Android (Kotlin) agiscono come livelli UI snelli che renderizzano snapshot dello stato. MDK (Marmot Development Kit) fornisce l&amp;rsquo;implementazione MLS. Il progetto indica lo stato alpha e sconsiglia l&amp;rsquo;uso per carichi di lavoro sensibili.&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 piattaforma di ridesharing decentralizzata con pagamenti Cashu, ha distribuito la &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.6">v0.2.6&lt;/a>. Questo rilascio corregge problemi di accessibilità TalkBack e risolve bug in cui i driver scomparivano dalla lista nelle vicinanze quando si cambiava metodo di pagamento, o in cui il conteggio dei driver selezionati non si aggiornava quando i driver andavano offline.&lt;/p>
&lt;p>La funzione &amp;ldquo;Send to All&amp;rdquo; è ora &amp;ldquo;Broadcast RoadFlare&amp;rdquo; con correzioni per i silenziosi fallimenti su installazioni fresche dei driver. Ridestr implementa l&amp;rsquo;escrow HTLC per pagamenti trustless delle corse e la sincronizzazione wallet &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> tra dispositivi.&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>, l&amp;rsquo;app di condivisione foto simile a Instagram per Android, ha distribuito la &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.6">v1.0.6&lt;/a> con ricerca utenti migliorata e riconnessione automatica ai relay ogni 60 secondi.&lt;/p>
&lt;p>Costruita con Kotlin e Jetpack Compose, Unfiltered usa le binding rust-nostr e server compatibili con Blossom per l&amp;rsquo;hosting delle immagini. L&amp;rsquo;integrazione Amber (&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>) gestisce la gestione sicura delle chiavi. L&amp;rsquo;app mostra i post degli account seguiti in ordine cronologico senza algoritmi o pubblicità.&lt;/p>
&lt;p>Due nuovi progetti di messaggistica e firma sono stati lanciati questa settimana.&lt;/p>
&lt;h3 id="burrow-messaggistica-mls-per-agenti-ai">Burrow: Messaggistica MLS per Agenti AI&lt;/h3>
&lt;p>&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> è un messenger che implementa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la comunicazione cifrata con MLS senza numeri di telefono o server centralizzati. Sia gli utenti umani che gli agenti AI possono partecipare.&lt;/p>
&lt;p>Un daemon CLI in Rust puro con modalità di output JSONL gestisce l&amp;rsquo;integrazione con i sistemi automatizzati. Un&amp;rsquo;app Flutter cross-platform copre Android, iOS, Linux, macOS e Windows. Gli allegati media vengono cifrati insieme ai messaggi, e WebRTC gestisce le chiamate audio e video con server TURN configurabili.&lt;/p>
&lt;p>Burrow stratifica la cifratura MLS sull&amp;rsquo;infrastruttura Nostr. L&amp;rsquo;identità usa le keypair Nostr (secp256k1) mentre i KeyPackage MLS vengono pubblicati come event di kind 443. I messaggi vengono cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> come event di kind 445, e gli inviti di benvenuto usano il gift-wrapping &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>.&lt;/p>
&lt;p>L&amp;rsquo;integrazione con &lt;a href="https://openclaw.ai">OpenClaw&lt;/a> abilita la partecipazione degli agenti AI con accesso completo agli strumenti. Le liste di controllo degli accessi con log di audit gestiscono i permessi di contatto e gruppo. Questa combinazione posiziona Burrow per scenari di messaggistica agente-agente e agente-umano che richiedono cifratura di livello Signal su infrastruttura decentralizzata.&lt;/p>
&lt;h3 id="estensione-nostria-signer">Estensione Nostria Signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> è un&amp;rsquo;estensione browser basata su Chromium che fornisce gestione di vault e identità per gli utenti Nostr.&lt;/p>
&lt;p>Vault multipli contenenti account multipli permettono agli utenti di organizzare le identità per contesti diversi. L&amp;rsquo;internazionalizzazione include il supporto alle lingue RTL. Costruita con Angular e TypeScript (79,2% del codebase), funziona sia come estensione browser che come Progressive Web App.&lt;/p>
&lt;p>Nostria Signer implementa &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> per la firma tramite estensione browser, permettendo ai client Nostr web di richiedere firme degli event senza accedere direttamente alle chiavi private. La migrazione automatica del wallet gestisce gli aggiornamenti distribuiti attraverso il Chrome Web Store. Gli utenti possono anche fare il sideload dalla cartella &lt;code>dist/extension&lt;/code>.&lt;/p>
&lt;p>Gli sviluppatori sottolineano lo stato sperimentale: gli utenti devono gestire le proprie frasi di recupero segrete poiché gli sviluppatori non possono ripristinare l&amp;rsquo;accesso alle chiavi perse.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="formstr-migra-alla-nuova-organizzazione">Formstr Migra alla Nuova Organizzazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;alternativa a Google Forms su Nostr, ha migrato il suo repository da &lt;code>abh3po/nostr-forms&lt;/code> all&amp;rsquo;organizzazione &lt;code>formstr-hq&lt;/code>. Questo beneficiario di una grant OpenSats continua lo sviluppo nella nuova posizione.&lt;/p>
&lt;h3 id="pr-aperte-di-rilievo">PR Aperte di Rilievo&lt;/h3>
&lt;p>Lavori in corso nei progetti Nostr:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Damus Outbox Model&lt;/strong> (&lt;a href="https://github.com/damus-io/damus/pull/3602">PR #3602&lt;/a>): Piano di implementazione per il modello relay gossip/outbox su iOS. Questo cambiamento architetturale migliora la consegna dei messaggi pubblicando ai relay dove i destinatari leggono effettivamente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notedeck Cross-Platform Notifications&lt;/strong> (&lt;a href="https://github.com/damus-io/notedeck/pull/1296">PR #1296&lt;/a>): Sistema di notifiche nativo per il client desktop Damus che copre Android FCM, macOS e Linux.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NDK Cashu v3 Upgrade&lt;/strong> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/370">PR #370&lt;/a>): Aggiorna l&amp;rsquo;integrazione wallet del Nostr Development Kit a cashu-ts v3.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zeus Cashu Offline&lt;/strong> (&lt;a href="https://github.com/ZeusLN/zeus/pull/3742">PR #3742&lt;/a>): Invio e ricezione ecash offline per il wallet Lightning Zeus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Shopstr Encrypted Digital Delivery&lt;/strong> (&lt;a href="https://github.com/shopstr-eng/shopstr/pull/231">PR #231&lt;/a>): Aggiunge la consegna cifrata per i beni digitali con supporto al peso dinamico per gli articoli fisici.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti questa settimana:&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 Scoperta dei Provider di Servizi&lt;/a>&lt;/strong>: La specifica &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> include ora indicazioni su come i client scoprono i provider di trusted assertion. Quando un client necessita di punteggi &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> o altre metriche calcolate, può interrogare i relay per gli annunci kind 30085 da provider che l&amp;rsquo;utente già segue o di cui si fida.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2229">NIP-29 Rimuove i Gruppi Non Gestiti&lt;/a>&lt;/strong>: La specifica dei gruppi chat &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha eliminato il supporto per i gruppi non gestiti (dove qualsiasi membro poteva aggiungere altri). Tutti i gruppi NIP-29 richiedono ora la gestione lato relay con ruoli admin espliciti, semplificando le implementazioni e riducendo i vettori di spam.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2231">NIP-11 Rimuove i Campi Deprecati&lt;/a>&lt;/strong>: I documenti di informazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> non includono più i campi deprecati &lt;code>software&lt;/code> e &lt;code>version&lt;/code>. Le implementazioni dovrebbero rimuoverli dalle proprie risposte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2227">NIP-39 Sposta i Tag di Identità&lt;/a>&lt;/strong>: Le rivendicazioni di identità esterna (tag &lt;code>i&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> per GitHub, Twitter, ecc.) si sono spostate dai profili kind 0 a event kind 30382 dedicati. Questo separa la verifica dell&amp;rsquo;identità dai metadata del profilo.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Avanzamento dei NIP per Agenti AI:&lt;/strong>&lt;/p>
&lt;p>Quattro NIP focalizzati sull&amp;rsquo;AI continuano lo sviluppo attivo. Da &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">quando li abbiamo coperti la settimana scorsa&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> (aggiornato il 19 feb): Definisce l&amp;rsquo;identità degli agenti con kind 4199 per le definizioni degli agenti e kind 4201 per i prompt (&amp;ldquo;nudge&amp;rdquo;). Gli agenti possono referenziare i metadata dei file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> per descrizioni estese.&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> (aggiornato il 18 feb): Standardizza la messaggistica conversazionale con sette kind di event effimeri (25800-25806) per stato, delta di streaming, prompt, risposte, chiamate agli strumenti, errori e cancellazione. Gli event kind 31340 &amp;ldquo;AI Info&amp;rdquo; permettono agli agenti di pubblicizzare modelli e capacità supportate.&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> (aperto il 18 feb): Estende &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> per i flussi di lavoro autonomi degli agenti. Aggiunge heartbeat per la scoperta degli agenti, recensioni dei job per il tracciamento della qualità, escrow dei dati per l&amp;rsquo;impegno sui risultati, catene di flusso di lavoro per pipeline multi-step e bidding in sciame per la selezione competitiva dei provider. Un&amp;rsquo;implementazione di riferimento gira su 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> (aperto il 12 feb): Standardizza l&amp;rsquo;annuncio dei server e delle skill del Model Context Protocol su Nostr. Già in uso sulla piattaforma TENEX.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Altre PR Aperte:&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>: Definisce come i client dimostrano identità e permessi ai provider di servizi su 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 di integrare Webxdc (applicazioni web decentralizzate) con gli event Nostr.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-55-applicazione-signer-android">NIP Deep Dive: NIP-55 (Applicazione Signer Android)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/55.md">NIP-55&lt;/a> definisce come i client Nostr Android richiedono operazioni crittografiche da applicazioni signer dedicate. Con &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered v1.0.6&lt;/a> che aggiungono entrambi il supporto ad Amber questa settimana, il protocollo di firma Android merita un esame.&lt;/p>
&lt;p>&lt;strong>Canali di Comunicazione:&lt;/strong>&lt;/p>
&lt;p>NIP-55 abilita la firma inter-app attraverso due meccanismi. Gli Intent forniscono l&amp;rsquo;approvazione manuale dell&amp;rsquo;utente con feedback visivo per operazioni una tantum. I Content Resolver abilitano la firma automatizzata quando gli utenti concedono permessi persistenti, permettendo alle app di firmare in background senza prompt ripetuti.&lt;/p>
&lt;p>La comunicazione usa lo schema URI personalizzato &lt;code>nostrsigner:&lt;/code>. Un client avvia il contatto 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>Operazioni Supportate:&lt;/strong>&lt;/p>
&lt;p>La specifica definisce sette metodi crittografici: firma degli event (&lt;code>sign_event&lt;/code>), recupero della chiave pubblica (&lt;code>get_public_key&lt;/code>), cifratura/decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>, cifratura/decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e decifratura degli event zap (&lt;code>decrypt_zap_event&lt;/code>).&lt;/p>
&lt;p>&lt;strong>Modello di Permessi:&lt;/strong>&lt;/p>
&lt;p>I client chiamano &lt;code>get_public_key&lt;/code> una volta per stabilire una relazione di fiducia, ricevendo il nome del pacchetto del signer e la pubkey dell&amp;rsquo;utente. La specifica impone che i client salvino questi valori e non chiamino mai più &lt;code>get_public_key&lt;/code>, prevenendo attacchi di fingerprinting.&lt;/p>
&lt;p>Per le richieste di firma, gli utenti possono approvare una volta o concedere &amp;ldquo;ricorda la mia scelta&amp;rdquo; per le operazioni in background. Se gli utenti rifiutano ripetutamente le operazioni, il signer restituisce uno stato &amp;ldquo;rejected&amp;rdquo;, prevenendo prompt ripetuti.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> è il signer NIP-55 principale per Android. I client che supportano NIP-55 includono &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered&lt;/a> e altri. Le applicazioni web non possono ricevere direttamente le risposte del signer e devono usare URL di callback o operazioni con gli appunti.&lt;/p>
&lt;p>&lt;strong>Relazione con gli Altri NIP di Firma:&lt;/strong>&lt;/p>
&lt;p>NIP-55 completa &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> (estensioni browser) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota sui relay). Dove NIP-07 gestisce i browser desktop e NIP-46 gestisce la firma cross-device, NIP-55 fornisce integrazione nativa Android con latenza minima.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-60-wallet-cashu">NIP Deep Dive: NIP-60 (Wallet Cashu)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a> definisce come i wallet ecash &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> memorizzano lo stato sui relay Nostr, abilitando la sincronizzazione del wallet tra applicazioni. Con &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr v0.2.6&lt;/a> che usa NIP-60 per la sincronizzazione del wallet tra dispositivi, il protocollo merita un esame.&lt;/p>
&lt;p>&lt;strong>Tipi di Event:&lt;/strong>&lt;/p>
&lt;p>NIP-60 usa quattro tipi di event. Il kind 17375 sostituibile memorizza la configurazione del wallet inclusi gli URL dei mint e una chiave privata dedicata per ricevere pagamenti ecash P2PK. Gli event token (kind 7375) contengono prove crittografiche non spese, mentre la cronologia delle spese (kind 7376) registra le transazioni per la trasparenza dell&amp;rsquo;utente. Un kind 7374 opzionale traccia le quote di pagamento del mint.&lt;/p>
&lt;p>&lt;strong>Architettura del Wallet:&lt;/strong>&lt;/p>
&lt;p>Lo stato del wallet risiede sui relay, rendendolo accessibile tra le applicazioni. L&amp;rsquo;event wallet di un utente contiene riferimenti cifrati ai mint Cashu e una chiave privata specifica per il wallet separata dall&amp;rsquo;identità Nostr dell&amp;rsquo;utente. Questa separazione è importante: la chiave wallet gestisce le operazioni ecash mentre la chiave Nostr gestisce le funzioni sociali.&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;nip44-encrypted-wallet-config&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>Gestione delle Prove:&lt;/strong>&lt;/p>
&lt;p>Le prove Cashu sono strumenti al portatore. Una volta spesa, una prova diventa non valida. NIP-60 gestisce questo attraverso un meccanismo di rollover: durante la spesa, i client creano un nuovo event token con le prove non spese rimanenti ed eliminano l&amp;rsquo;originale tramite &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a>. Gli ID dei token distrutti vanno in un campo &lt;code>del&lt;/code> per il tracciamento dello stato.&lt;/p>
&lt;p>I client dovrebbero periodicamente validare le prove contro i mint per rilevare credenziali precedentemente spese. Sono consentiti event token multipli per mint, e gli event della cronologia delle spese aiutano gli utenti a tracciare le transazioni anche se sono facoltativi.&lt;/p>
&lt;p>&lt;strong>Modello di Sicurezza:&lt;/strong>&lt;/p>
&lt;p>Tutti i dati sensibili usano la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. La chiave privata del wallet non appare mai in chiaro. Poiché i relay memorizzano blob cifrati senza comprenderne il contenuto, lo stato del wallet rimane privato anche su relay non fidati.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>I wallet che supportano NIP-60 includono &lt;a href="https://github.com/gandlafbtc/nutsack">Nutsack&lt;/a> e &lt;a href="https://github.com/cashubtc/eNuts">eNuts&lt;/a>. Client come &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr&lt;/a> usano NIP-60 per la sincronizzazione cross-device, permettendo agli utenti di ricaricare dal desktop e spendere dal mobile senza trasferimenti manuali.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #10</title><link>https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Prende forma un livello di cache locale per Blossom, con progetti indipendenti che convergono sull&amp;rsquo;accesso offline ai media per Android. Alby lancia un &lt;a href="https://sandbox.albylabs.com">sandbox per sviluppatori NWC&lt;/a> per costruire e testare integrazioni Nostr Wallet Connect senza rischiare fondi reali. Nello stesso arco di giorni arrivano due proposte concorrenti per la comunicazione di agenti AI su Nostr, firmate da autori diversi. fiatjaf elimina i campi inutilizzati da &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, rimuovendo policy di riservatezza, retention, codici paese e tag sulle preferenze comunitarie che gli operatori relay non avevano mai adottato. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> viene unito con linee guida sulla scoperta dei provider di servizi per le Trusted Assertions. Un nuovo tag &lt;code>D&lt;/code> in &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> abilita l&amp;rsquo;indicizzazione temporale a granularità giornaliera per gli eventi calendario. Tra i nuovi progetti: &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> per la distribuzione decentralizzata di tile cartografiche, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> per la messaggistica cifrata con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> per la firma a soglia FROST su Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> per lo storage content-addressed con integrazione Nostr, e &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> per condividere contenuti su Nostr da qualsiasi app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> unisce 11 PR NWC aggiungendo supporto doppio wallet e gestione automatica del ciclo di vita del servizio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> rilascia un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">wallet Lightning integrato&lt;/a> tramite integrazione NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> si prepara al rilascio sull&amp;rsquo;App Store Android, mentre HAVEN raggiunge la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con supporto multi-npub e backup cloud. Gli approfondimenti di questa settimana coprono il sistema Trusted Assertions di NIP-85 per delegare i calcoli del Web of Trust ai provider di servizi, e il protocollo Calendar Events di NIP-52 a seguito dell&amp;rsquo;aggiornamento per l&amp;rsquo;indicizzazione a granularità giornaliera.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Prende forma un livello di cache locale per Blossom, con progetti indipendenti che convergono sull&amp;rsquo;accesso offline ai media per Android. Alby lancia un &lt;a href="https://sandbox.albylabs.com">sandbox per sviluppatori NWC&lt;/a> per costruire e testare integrazioni Nostr Wallet Connect senza rischiare fondi reali. Nello stesso arco di giorni arrivano due proposte concorrenti per la comunicazione di agenti AI su Nostr, firmate da autori diversi. fiatjaf elimina i campi inutilizzati da &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, rimuovendo policy di riservatezza, retention, codici paese e tag sulle preferenze comunitarie che gli operatori relay non avevano mai adottato. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> viene unito con linee guida sulla scoperta dei provider di servizi per le Trusted Assertions. Un nuovo tag &lt;code>D&lt;/code> in &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> abilita l&amp;rsquo;indicizzazione temporale a granularità giornaliera per gli eventi calendario. Tra i nuovi progetti: &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> per la distribuzione decentralizzata di tile cartografiche, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> per la messaggistica cifrata con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> per la firma a soglia FROST su Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> per lo storage content-addressed con integrazione Nostr, e &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> per condividere contenuti su Nostr da qualsiasi app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> unisce 11 PR NWC aggiungendo supporto doppio wallet e gestione automatica del ciclo di vita del servizio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> rilascia un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">wallet Lightning integrato&lt;/a> tramite integrazione NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> si prepara al rilascio sull&amp;rsquo;App Store Android, mentre HAVEN raggiunge la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con supporto multi-npub e backup cloud. Gli approfondimenti di questa settimana coprono il sistema Trusted Assertions di NIP-85 per delegare i calcoli del Web of Trust ai provider di servizi, e il protocollo Calendar Events di NIP-52 a seguito dell&amp;rsquo;aggiornamento per l&amp;rsquo;indicizzazione a granularità giornaliera.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="emerge-un-livello-di-cache-locale-per-blossom">Emerge un Livello di Cache Locale per Blossom&lt;/h3>
&lt;p>Diversi progetti indipendenti stanno convergendo sullo stesso problema: l&amp;rsquo;accesso offline ai media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> su dispositivi mobili.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>, una nuova app Android di greenart7c3 (lo sviluppatore dietro &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> e &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>), implementa il caching lato client per i media Blossom. Gli utenti possono accedere a immagini e file precedentemente visualizzati senza connessione di rete.&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a> ha rilasciato la &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etichettatura delle immagini, operazioni bulk di mirror/tag/eliminazione, filtraggio per etichetta e tipo di file, più il supporto iniziale alla cache locale Blossom. Aerith è un&amp;rsquo;interfaccia di gestione per utenti che archiviano media su più server Blossom e necessitano di organizzare e replicare i propri blob.&lt;/p>
&lt;p>Una nuova &lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">guida all&amp;rsquo;implementazione della cache locale&lt;/a> nella specifica Blossom documenta lo storage blob lato client, mentre &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> (dello stesso sviluppatore di Aerith) aggiunge l&amp;rsquo;integrazione Blossom upload al proprio flusso share-to-Nostr su Android. Quattro progetti indipendenti hanno convergito sullo stesso problema questa settimana: un&amp;rsquo;app di caching dedicata, un gestore media, una specifica di riferimento e uno strumento di condivisione con integrazione Blossom, tutti con storage locale persistente oltre il semplice upload-e-recupero.&lt;/p>
&lt;h3 id="sandbox-nwc-per-sviluppatori-di-alby">Sandbox NWC per Sviluppatori di Alby&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a> ha lanciato un ambiente sandbox per gli sviluppatori che lavorano con &lt;a href="https://nostrcompass.org/it/topics/nip-47/">Nostr Wallet Connect (NIP-47)&lt;/a>. Il sandbox offre un servizio NWC wallet ospitato dove gli sviluppatori possono creare connessioni di test e inviare pagamenti simulati senza collegare un vero wallet Lightning, osservando in tempo reale il ciclo completo richiesta/risposta degli eventi NWC. Gli sviluppatori generano una stringa di connessione &lt;code>nostr+walletconnect://&lt;/code> dal sandbox e la passano al proprio client. Il sandbox mostra poi il kind 23194 (richiesta) e il kind 23195 (risposta) risultanti mentre scorrono tra client e wallet service.&lt;/p>
&lt;p>Questo abbassa la barriera per le nuove integrazioni NWC. In precedenza, i test richiedevano un wallet Lightning personale o un servizio NWC self-hosted. Il sandbox astrae questa complessità, dando agli sviluppatori un ciclo di feedback immediato per implementare i metodi &lt;code>pay_invoice&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code> e &lt;code>list_transactions&lt;/code> su un endpoint NWC attivo.&lt;/p>
&lt;h3 id="arrivano-le-proposte-di-nip-per-agenti-ai">Arrivano le Proposte di NIP per Agenti AI&lt;/h3>
&lt;p>Proposte per la comunicazione di agenti AI su Nostr sono apparse a distanza di giorni l&amp;rsquo;una dall&amp;rsquo;altra, affrontando il problema da angolazioni diverse.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a> di joelklabo definisce un protocollo completo per l&amp;rsquo;interazione con agenti AI: kind di eventi per prompt, risposte, delta di streaming, aggiornamenti di stato, telemetria degli strumenti, errori, cancellazioni e scoperta delle capacità. Un evento di scoperta &lt;code>ai.info&lt;/code> (kind 31340, sostituibile) permette agli agenti di annunciare i modelli supportati, gli strumenti con i relativi schemi, il supporto allo streaming e i limiti di frequenza. La proposta di joelklabo include la correlazione delle esecuzioni tramite prompt ID, la gestione delle sessioni, la riconciliazione dello stream con ordinamento sequenziale e indicazioni &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per la privacy dei metadata.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a> di pablof7z adotta un approccio diverso, definendo kind per l&amp;rsquo;istanziazione degli agenti: definizioni e lezioni. Si tratta dei tipi di eventi che pablof7z usa in &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, il sistema di apprendimento autonomo costruito su Nostr. Una proposta complementare, &lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>, sempre di pablof7z, definisce eventi per annunciare server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> e skill su Nostr. I commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sono supportati, così la community può discutere e valutare i server MCP direttamente su Nostr.&lt;/p>
&lt;p>NIP-XX copre la comunicazione completa degli agenti, mentre NIP-AE e NIP-AD si occupano di identità e scoperta degli strumenti. Queste proposte potrebbero convergere in uno standard unificato o coesistere come livelli complementari.&lt;/p>
&lt;h2 id="rilasci">Rilasci&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>, il relay personale all-in-one che raggruppa quattro funzioni relay con un server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha raggiunto la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>. Questa release candidate aggiunge il supporto per più npub, permettendo a una singola istanza HAVEN di servire diverse identità Nostr. Le RC precedenti avevano aggiunto i flag &lt;code>--from-cloud&lt;/code> e &lt;code>--to-cloud&lt;/code> per il backup cloud (RC2) e corretto un bug di doppio conteggio nel Web of Trust (RC1).&lt;/p>
&lt;h3 id="mostro-mobile-v120-wallet-lightning-integrato">Mostro Mobile v1.2.0: Wallet Lightning Integrato&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client mobile per l&amp;rsquo;exchange Bitcoin P2P &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> (&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-rilascia-la-prima-beta-pubblica">v1.1.0 coperto la settimana scorsa&lt;/a>), ha rilasciato la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a> con un wallet Lightning integrato attraverso la completa integrazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NWC (NIP-47)&lt;/a>. Acquirenti e venditori non devono più cambiare app per gestire le fatture. L&amp;rsquo;app rileva le hold invoice per i venditori e le paga automaticamente tramite il wallet collegato, mentre gli acquirenti ricevono la generazione automatica delle fatture. Il rilascio fa seguito alla &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a> pubblicata all&amp;rsquo;inizio della settimana, che aggiungeva il supporto multi-nodo Mostro con un registro curato di istanze fidate, il recupero dei metadata kind 0 per la visualizzazione dei nodi, la gestione di nodi personalizzati tramite pubkey e il fallback automatico quando un nodo selezionato va offline.&lt;/p>
&lt;p>Sul lato server, &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a> è arrivato con correzioni per i pagamenti doppi delle dev fee, il rate limiting sull&amp;rsquo;endpoint RPC di validazione password e la corretta pulizia delle dispute alla cancellazione cooperativa.&lt;/p>
&lt;p>Un nuovo progetto companion, &lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>, consente agli agenti di fare trading su Mostro tramite 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>, il gestore di immagini &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha rilasciato la &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etichette per l&amp;rsquo;organizzazione dei media, operazioni bulk di mirror/tag/eliminazione tra server, filtraggio per etichetta e tipo di file, più il supporto iniziale alla cache locale. Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#emerge-un-livello-di-cache-locale-per-blossom">sezione Notizie&lt;/a> per il contesto sul trend più ampio della cache locale.&lt;/p>
&lt;h3 id="mapnolia-tile-cartografiche-decentralizzate-su-nostr">Mapnolia: Tile Cartografiche Decentralizzate su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> è un nuovo server di dati geospaziali che suddivide gli archivi di tile cartografiche &lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a> in regioni geografiche e le annuncia su Nostr per la scoperta decentralizzata. Pubblica eventi parametrizzati sostituibili kind 34444 sui relay Nostr contenenti un indice completo dei chunk di tile con metadati dei layer, regioni geohash, riferimenti ai file e dettagli del server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;p>I client scoprono e recuperano i dati cartografici attraverso la rete Nostr invece dei server di tile centralizzati, con eventi di annuncio che portano metadati sufficienti a richiedere solo le regioni geografiche necessarie dai server Blossom elencati. Mapnolia è il primo progetto a portare la distribuzione di dati geospaziali su Nostr, aprendo possibilità per applicazioni cartografiche con supporto offline.&lt;/p>
&lt;h3 id="pika-messaggistica-cifrata-con-marmot">Pika: Messaggistica Cifrata con Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> è una nuova app di messaggistica end-to-end cifrata per iOS e Android che usa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, che stratifica il &lt;a href="https://nostrcompass.org/it/topics/mls/">Messaging Layer Security (MLS)&lt;/a> sui relay Nostr. L&amp;rsquo;architettura separa le responsabilità in un core Rust (&lt;code>pika_core&lt;/code>) che gestisce lo stato MLS e la cifratura/decifratura dei messaggi sui relay Nostr, con shell UI native snelle in SwiftUI (iOS) e Kotlin (Android). Lo stato scorre unidirezionalmente: la UI invia azioni all&amp;rsquo;attore Rust, che modifica lo stato e restituisce snapshot con numeri di revisione alla UI tramite binding UniFFI e JNI.&lt;/p>
&lt;p>Pika si unisce a un campo in crescita di messenger MLS-on-Nostr insieme a &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, &lt;a href="https://github.com/VectorPrivacy">Vector&lt;/a> e &lt;a href="https://0xchat.com">0xchat&lt;/a>. Tutti usano i relay Nostr come livello di trasporto per il ciphertext cifrato MLS, rendendo gli operatori relay incapaci di leggere il contenuto dei messaggi. Pika usa il Marmot Development Kit (MDK) per la propria implementazione MLS e nostr-sdk per la connettività relay.&lt;/p>
&lt;h3 id="keep-firma-a-soglia-frostittopicsfrost-per-android">Keep: Firma a Soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> per Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> è una nuova applicazione Android per la firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> dove nessun singolo dispositivo detiene la chiave privata completa. Implementa &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota), così i client Nostr compatibili possono richiedere firme mantenendo il materiale crittografico distribuito tra dispositivi. Le configurazioni predefinite sono 2-di-3 e 3-di-5, ma è supportata qualsiasi soglia t-di-n.&lt;/p>
&lt;p>La cerimonia di generazione distribuita delle chiavi (DKG) di Keep avviene sui relay Nostr usando kind di eventi personalizzati: kind 21101 per gli annunci di gruppo, kind 21102 per i polinomi di commitment del round 1 (trasmessi pubblicamente) e kind 21103 per le share segrete del round 2 (cifrate &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> punto-a-punto tra i partecipanti). Lo scalare della chiave privata di gruppo non viene mai calcolato né assemblato durante il DKG. Ogni dispositivo detiene solo la propria share di valutazione polinomiale, e qualsiasi t share può produrre una firma Schnorr valida attraverso un protocollo commit-then-sign a due round. La firma da 64 byte risultante è indistinguibile da una firma Schnorr a singolo firmatario. Internamente, Keep usa il crate &lt;code>frost-secp256k1-tr&lt;/code> della Zcash Foundation con il Taproot tweaking, così la chiave pubblica di gruppo funziona direttamente come un npub Nostr.&lt;/p>
&lt;p>Keep si unisce alla famiglia di progetti &lt;a href="https://frostr.org">Frostr&lt;/a> insieme 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 le opzioni per la gestione a soglia delle chiavi su Nostr.&lt;/p>
&lt;h3 id="prism-condividi-qualsiasi-cosa-su-nostr-da-android">Prism: Condividi Qualsiasi Cosa su Nostr da Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> è una nuova app Android (Kotlin/Jetpack Compose, API 26+) che si registra come target di condivisione di sistema, permettendo agli utenti di pubblicare testo, URL, immagini e video su Nostr da qualsiasi app del proprio telefono. Gli URL condivisi passano attraverso uno stripping dei parametri di tracciamento prima di essere composti in note. Prism recupera i metadata OpenGraph per generare anteprime link ricche e rende i riferimenti Nostr nativi (&lt;code>note1&lt;/code>, &lt;code>nevent1&lt;/code>) inline.&lt;/p>
&lt;p>Il motore di pianificazione usa un approccio ibrido &lt;code>AlarmManager&lt;/code>/&lt;code>WorkManager&lt;/code> per aggirare le ottimizzazioni della batteria Android: AlarmManager gestisce la temporizzazione precisa dei wake-up mentre i task WorkManager urgenti garantiscono la consegna, con retry a backoff esponenziale per gli scenari offline. I caricamenti media avvengono su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> configurabili con generazione di thumbnail per immagini e frame video. Tutta la firma degli eventi è delegata a signer esterni &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> come &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>, con supporto multi-account per passare tra identità. Prism supporta anche i post &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84 (Highlights)&lt;/a>. Dello stesso sviluppatore di &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#aerith-v02">Aerith&lt;/a>.&lt;/p>
&lt;h3 id="hashtree-storage-content-addressed-con-integrazione-nostr">Hashtree: Storage Content-Addressed con Integrazione Nostr&lt;/h3>
&lt;p>&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> è un sistema di storage blob content-addressed basato su filesystem che pubblica radici Merkle su Nostr per creare indirizzi npub/percorso mutabili. Il sistema usa uno &amp;ldquo;storage stupido&amp;rdquo; che funziona con qualsiasi key-value store, suddividendo il contenuto in blocchi da 2MB ottimizzati per i caricamenti &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. A differenza di BitTorrent, non è necessaria alcuna computazione attiva delle prove Merkle: basta archiviare e recuperare i blob per hash.&lt;/p>
&lt;p>L&amp;rsquo;integrazione Nostr abilita URL git remoti come &lt;code>htree://npub.../repo-name&lt;/code> per il cloning di repository, con comandi come &lt;code>htree publish mydata &amp;lt;hash&amp;gt;&lt;/code> per pubblicare hash di contenuto agli indirizzi &lt;code>npub.../mydata&lt;/code>. Il CLI completo supporta sia la modalità di storage cifrata (predefinita) che quella pubblica, il pinning dei contenuti, il push ai server Blossom e la gestione delle identità Nostr. Ogni elemento archiviato è o raw bytes o un nodo dell&amp;rsquo;albero, fornendo una base per la distribuzione decentralizzata di contenuti attraverso la rete relay di Nostr.&lt;/p>
&lt;h3 id="espy-cattura-palette-colori-su-shakespeare">Espy: Cattura Palette Colori su Shakespeare&lt;/h3>
&lt;p>&lt;a href="https://espy.you">Espy&lt;/a>, costruito sulla piattaforma &lt;a href="https://soapbox.pub/tools/shakespeare/">Shakespeare&lt;/a>, permette agli utenti di catturare palette colori da foto e condividerle come eventi Nostr. Shakespeare è un costruttore di app assistito da AI che autentica gli utenti tramite estensioni browser NIP-07 e fornisce connettività relay Nostr integrata, così gli sviluppatori pubblicano app senza implementare la propria gestione delle chiavi o il proprio pool relay. Espy estrae i colori dominanti dall&amp;rsquo;input della fotocamera in schede palette condivisibili e scopribili tramite i feed Nostr standard.&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>, il client Nostr in stile Discord di hodlbod che organizza i relay come gruppi, ha rilasciato la &lt;a href="https://gitea.coracle.social/coracle/flotilla/releases/tag/1.6.4">1.6.4&lt;/a>. La famiglia di progetti Coracle è migrata da GitHub a un&amp;rsquo;istanza &lt;a href="https://gitea.coracle.social/coracle">Gitea&lt;/a> self-hosted. Questo rilascio aggiunge notifiche push tramite NIP-9a e un flusso per la ricezione wallet, oltre a inserzioni classificate e supporto agli URL degli spazi. I miglioramenti all&amp;rsquo;interfaccia includono modal e gestione delle notifiche riorganizzati. Il muting delle stanze e gli inset safe area su mobile completano le modifiche, insieme a correzioni per i caricamenti immagini su Safari e i dettagli degli eventi 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>, l&amp;rsquo;app mobile di live-streaming con integrazione Nostr, ha rilasciato la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.12.0">v0.12.0&lt;/a>. Questo rilascio aggiunge Clip video con risposte in-player e integrazione emoji personalizzate. La protezione dei thread blocca lo spam da menzione indiretta, e una nuova funzione di condivisione QR permette agli utenti di scambiare profili offline. Una nuova modalità di riproduzione orizzontale offre agli stream un&amp;rsquo;esperienza di visione in stile Twitch, e la schermata di esplorazione ora mostra i clip dei creator insieme agli stream in diretta.&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 libreria di traduzione per il web sociale che converte dati tra Nostr, Bluesky, ActivityPub e altre piattaforme in un formato comune, ha rilasciato la &lt;a href="https://github.com/snarfed/granary/releases/tag/v10.0">v10.0&lt;/a> con modifiche incompatibili. Il rilascio passa gli ID ActivityStreams 1 predefiniti di Nostr da bech32 a hex e aggiunge un supporto Nostr esteso tra cui il parsing delle menzioni &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> e i tag degli articoli. Una nuova opzione di output multiplo tra i converter permette agli sviluppatori di tradurre tra protocolli in batch.&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 server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> che consente agli agenti AI di interagire con la rete Nostr, ha rilasciato la &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server/releases/tag/v3.0.0">v3.0.0&lt;/a>. Questo rilascio principale aggiunge azioni sociali (follow, reazioni, repost, risposte) e gestione delle liste relay con supporto &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> più autenticazione opzionale &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>. Sono nuovi anche i messaggi diretti tramite &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Il rilascio si affianca alle &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">proposte di NIP per agenti AI&lt;/a> di questa settimana come strumenti pratici per gli agenti che operano su 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>, il signer Nostr cross-platform, ha rilasciato la &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.8">v0.3.8&lt;/a> con supporto UI multilingua e un gestore di aggiornamenti incrementale per il proprio browser di app Nostr integrato. Il nuovo meccanismo di aggiornamento calcola il diff in modo incrementale rispetto allo stato locale, mantenendo aggiornata la directory in-app delle web app Nostr con un consumo di banda ridotto. Il rilascio introduce anche un caching del materiale crittografico da 5 minuti per ridurre i round-trip al database quando si firmano più eventi in successione.&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 libreria TypeScript per il protocollo Nostr, ha rilasciato la &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.1">v0.3.1&lt;/a>. Il rilascio aggiunge guardie di verifica dei pacchetti che assicurano che tutti i punti di ingresso siano inclusi nei tarball npm, con verifica CI su Node e Bun. La &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.0">v0.3.0&lt;/a> è uscita nella stessa settimana.&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>, il relay Nostr per Android di greenart7c3, ha rilasciato la &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre1">v2.0.0-pre1&lt;/a> con miglioramenti delle prestazioni tramite indici del database ottimizzati e una migliore gestione delle coroutine Kotlin. Il rilascio migliora anche il supporto per l&amp;rsquo;hosting di web app, con ogni app ora in esecuzione sulla propria porta.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="primal-android-espansione-dellinfrastruttura-nwc">Primal Android: Espansione dell&amp;rsquo;Infrastruttura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 11 PR legate a NWC questa settimana, continuando il lavoro avviato &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#primal-android-rilascia-crittografia-nwc">due settimane fa&lt;/a>. Questa tornata aggiunge il supporto NWC per doppio wallet, avvio/arresto automatico del servizio legato alle notifiche del backend, routing delle connessioni per tipo di wallet e corretta pulizia dei dati all&amp;rsquo;eliminazione del wallet. Il servizio NWC ora gestisce il proprio ciclo di vita in base allo stato della connessione wallet, riducendo l&amp;rsquo;intervento manuale dell&amp;rsquo;utente.&lt;/p>
&lt;h3 id="notedeck-preparazione-allapp-store-android">Notedeck: Preparazione all&amp;rsquo;App Store Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client Nostr multi-piattaforma del team &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, ha unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1287">preparazione al rilascio sull&amp;rsquo;App Store Android&lt;/a> questa settimana. La PR aggiunge un piano di conformità UGC (User Generated Content) richiesto da Google Play, inclusa una schermata di accettazione dei Termini di Servizio, il blocco degli utenti tramite menu contestuali e impostazioni, la funzionalità &lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56 (Segnalazione)&lt;/a> che pubblica eventi di segnalazione sui relay, e una sezione di impostazioni per Contenuto e Sicurezza. È stata aggiunta l&amp;rsquo;infrastruttura di build per generare APK firmati e AAB (Android App Bundle) tramite nuovi target Makefile. Un documento EULA stabilisce un requisito di età di 17 anni e disclaimer specifici per Nostr riguardo ai contenuti decentralizzati. Le funzionalità di conformità stesse arriveranno in PR successive; questo merge pone le basi documentali e di firma.&lt;/p>
&lt;p>Sul fronte Damus iOS, è stata corretta una &lt;a href="https://github.com/damus-io/damus/pull/3593">regressione del caricamento infinito&lt;/a> in cui lo spinner persisteva indefinitamente dopo che il contenuto era stato caricato.&lt;/p>
&lt;h3 id="nostria-relay-di-scoperta-e-correzioni-dm">Nostria: Relay di Scoperta e Correzioni DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform focalizzato sulla scala globale, ha unito 9 PR questa settimana. La più importante aggiunge l&amp;rsquo;&lt;a href="https://github.com/nostria-app/nostria/pull/460">auto-inizializzazione dei Discovery Relay&lt;/a> per la ricerca dei profili, garantendo ai nuovi utenti una connettività relay funzionante senza configurazione manuale. Altre correzioni riguardano &lt;a href="https://github.com/nostria-app/nostria/pull/466">l&amp;rsquo;avvolgimento del testo nelle textarea DM&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/479">il riempimento del viewport per i video a schermo intero&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/481">l&amp;rsquo;estrazione dei metadata degli articoli nelle anteprime repost&lt;/a> e &lt;a href="https://github.com/nostria-app/nostria/pull/458">la risoluzione degli URI nostr: nelle notifiche&lt;/a>.&lt;/p>
&lt;h3 id="camelus-migrazione-a-riverpod-v3">Camelus: Migrazione a Riverpod v3&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, il client Nostr basato su Flutter, ha unito 5 PR questa settimana incentrate su una &lt;a href="https://github.com/camelus-hq/camelus/pull/158">migrazione all&amp;rsquo;API Riverpod v3&lt;/a> e un &lt;a href="https://github.com/camelus-hq/camelus/pull/159">refactoring del feed generico&lt;/a>. Una &lt;a href="https://github.com/camelus-hq/camelus/pull/161">cache delle note incorporate&lt;/a> evita fetch ridondanti ai relay per le note citate.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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: Scoperta dei Provider di Servizi&lt;/a>&lt;/strong>: vitorpamplona ha aggiunto indicazioni sulla scoperta da parte dei client dei provider di servizi &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">NIP-85 Trusted Assertions&lt;/a>, inclusi gli hint relay e le chiavi di servizio specifiche per algoritmo. Vedi l&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#nip-deep-dive-nip-85-trusted-assertions">approfondimento&lt;/a> per la copertura completa.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11: Pulizia delle Informazioni Relay&lt;/a>&lt;/strong>: fiatjaf ha rimosso &lt;code>privacy_policy&lt;/code>, l&amp;rsquo;array &lt;code>retention&lt;/code>, &lt;code>relay_countries&lt;/code> e il blocco delle preferenze comunitarie da &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. Gli operatori relay raramente popolavano questi campi e i client non vi agivano sopra.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52: Tag di Timestamp a Granularità Giornaliera&lt;/a>&lt;/strong>: staab ha aggiunto un tag &lt;code>D&lt;/code> obbligatorio a &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> per gli eventi calendario basati sul tempo (kind 31923) che rappresenta il timestamp Unix a granularità giornaliera, calcolato come &lt;code>floor(unix_seconds / 86400)&lt;/code>. Più tag &lt;code>D&lt;/code> coprono eventi multi-giorno, abilitando un efficiente indicizzazione temporale senza dover analizzare i timestamp completi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47: Semplificazione&lt;/a>&lt;/strong>: La PR di semplificazione &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/">discussa nel numero #9&lt;/a> è stata unita questa settimana, rimuovendo &lt;code>multi_pay_invoice&lt;/code> e &lt;code>multi_pay_keysend&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Vedi il &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#nip-deep-dive-nip-47-nostr-wallet-connect">numero #8&lt;/a> per l&amp;rsquo;approfondimento completo sul protocollo NWC.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&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: Podcast&lt;/a>&lt;/strong>: Coperto nel &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/">numero #8&lt;/a>, questa proposta di specifica per i podcast ha visto un acceso dibattito questa settimana. staab ha notato che esistono già almeno tre standard podcast concorrenti in circolazione, e derekross ha indicato un&amp;rsquo;implementazione esistente risalente a sei mesi fa con app e podcast attivi. Il percorso da seguire richiede una convergenza tra le implementazioni prima che possa essere assegnato un numero 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 protocollo completo di comunicazione per agenti AI con kind di eventi per prompt, risposte, streaming, telemetria degli strumenti, errori e scoperta delle capacità. Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">sezione Notizie&lt;/a> per la copertura di tutte le proposte AI di questa settimana.&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>: il sistema di note private di jb55 definisce eventi kind 1080 per archiviare note personali cifrate sui relay senza rivelare chi le ha scritte. Lo schema deriva una coppia di chiavi pseudonima deterministica dalla nsec dell&amp;rsquo;utente tramite HKDF: &lt;code>pns_key = hkdf_extract(ikm=device_key, salt=&amp;quot;nip-pns&amp;quot;)&lt;/code>, quindi genera una coppia di chiavi secp256k1 da quella chiave derivata. Una seconda derivazione produce una chiave di cifratura simmetrica: &lt;code>pns_nip44_key = hkdf_extract(ikm=pns_key, salt=&amp;quot;nip44-v2&amp;quot;)&lt;/code>. Le note interne sono cifrate con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> v2 usando questa chiave e pubblicate sotto la pubkey pseudonima, così i relay vedono eventi kind 1080 da un&amp;rsquo;identità non collegata alla chiave principale dell&amp;rsquo;utente. A differenza dei gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, PNS non è soggetto a spam (la chiave pseudonima è deterministica, non casuale) e non porta metadata pubblici (non servono tag &lt;code>p&lt;/code> poiché non c&amp;rsquo;è destinatario). Questa settimana, jb55 ha pubblicato le conclusioni tratte dall&amp;rsquo;implementazione di PNS nel backend Rust di Notedeck (modulo &lt;code>enostr::pns&lt;/code>). Ha identificato che la chiamata &lt;code>hkdf_extract&lt;/code> della spec è ambigua perché HKDF secondo RFC 5869 ha due fasi (Extract ed Expand) che producono output diversi, e la maggior parte delle librerie si aspetta entrambe. Ha chiarito che &lt;code>pns_nip44_key&lt;/code> aggira il normale accordo di chiavi ECDH di NIP-44 e viene usata direttamente come conversation key, un dettaglio che gli implementatori devono conoscere poiché la maggior parte delle librerie NIP-44 usa ECDH di default. Ha anche segnalato una variabile non definita nell&amp;rsquo;implementazione di riferimento TypeScript. La PR, originariamente dell&amp;rsquo;aprile 2025, è ora in fase di implementazione attiva.&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 definisce quattro kind di eventi per l&amp;rsquo;identità degli agenti su Nostr, tratti dal suo lavoro su &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>. Il template base è kind 4199 (Agent Definition), che contiene titolo, descrizione del ruolo, istruzioni di sistema, dichiarazioni di strumenti e versione. I modificatori comportamentali risiedono nel kind 4201 (Agent Nudge), che usa i tag &lt;code>only-tool&lt;/code>, &lt;code>allow-tool&lt;/code> e &lt;code>deny-tool&lt;/code> per il controllo delle capacità in runtime. Gli agenti pubblicano ciò che apprendono come eventi kind 4129 (Agent Lesson), categorizzati e collegati alla definizione genitore tramite tag &lt;code>e&lt;/code>, perfezionabili attraverso thread di commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>. La verifica della proprietà usa kind 14199, un evento sostituibile in cui gli operatori umani elencano le proprie pubkey agente, stabilendo una catena bidirezionale quando abbinato al tag &lt;code>p&lt;/code> del profilo kind 0 dell&amp;rsquo;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 definisce eventi per annunciare server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> e skill individuali su Nostr. Gli annunci di server MCP portano l&amp;rsquo;URL endpoint del server e la versione di protocollo supportata insieme a un elenco di strumenti disponibili con i relativi schemi di input. I commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sono supportati sugli annunci di server, così la community può discutere e valutare i server MCP direttamente su 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 di aggiungere gli identificatori OpenStreetMap a &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, che standardizza come gli eventi Nostr referenziano contenuti esterni come libri (ISBN), film (ISAN), feed podcast (GUID), geohash e URL tramite tag &lt;code>i&lt;/code> e &lt;code>k&lt;/code>. Il kind OSM proposto permetterebbe agli eventi di referenziare elementi cartografici specifici (edifici, strade, parchi) tramite il loro ID nodo o way OpenStreetMap, collegando i contenuti Nostr al database geografico aperto.&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 di estendere gli eventi di metadata file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> con tag per varianti di immagini responsive a risoluzioni diverse. I client potrebbero selezionare la variante appropriata in base alle dimensioni del display e alle condizioni di rete, riducendo il consumo di banda per gli utenti mobile che visualizzano immagini ad alta risoluzione ospitate su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-85-trusted-assertions">NIP Deep Dive: NIP-85 (Trusted Assertions)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> definisce un sistema per delegare calcoli costosi a provider di servizi fidati che pubblicano i risultati firmati come eventi Nostr. I punteggi Web of Trust e le metriche di engagement richiedono la scansione di molti relay e l&amp;rsquo;elaborazione di grandi volumi di eventi, un lavoro impraticabile su dispositivi mobili. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">merge&lt;/a> di questa settimana ha aggiunto indicazioni sul processo di scoperta da parte dei client di questi provider.&lt;/p>
&lt;p>&lt;strong>Delega:&lt;/strong>&lt;/p>
&lt;p>Calcolare il punteggio Web of Trust di un utente richiede la scansione dei grafi di follow per diversi livelli su molti relay, e il calcolo accurato dei conteggi follower comporta la deduplicazione sull&amp;rsquo;intera rete relay. I dispositivi mobili e i client browser non possono eseguire queste operazioni, eppure i risultati sono essenziali per il filtraggio dello spam e il ranking dei contenuti. NIP-85 colma questo divario permettendo agli utenti di designare provider fidati per eseguire i calcoli e pubblicare i risultati come eventi Nostr standard.&lt;/p>
&lt;p>&lt;strong>Design del Protocollo:&lt;/strong>&lt;/p>
&lt;p>NIP-85 usa quattro kind di eventi per le asserzioni su diversi tipi di soggetti. Le asserzioni sugli utenti (kind 30382) portano il conteggio follower, i conteggi post/risposte/reazioni, gli importi zap, il rank normalizzato (0-100), i topic comuni e le ore attive:&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>Le asserzioni sugli eventi (kind 30383) valutano le singole note con il conteggio commenti, citazioni, repost, reazioni e dati 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>Per gli eventi indirizzabili (articoli long-form, pagine wiki), kind 30384 applica le stesse metriche di engagement su tutte le versioni collettivamente. Kind 30385 valuta gli identificatori esterni (libri, film, siti web, luoghi, hashtag) referenziati tramite &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, che standardizza come gli eventi Nostr referenziano contenuti esterni tramite tag &lt;code>i&lt;/code> e &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>Ogni asserzione è un evento indirizzabile sostituibile dove il tag &lt;code>d&lt;/code> contiene il soggetto: una pubkey, un ID evento, un indirizzo evento o un identificatore NIP-73. I provider di servizi firmano questi eventi con le proprie chiavi, e i client li valutano in base alle relazioni di fiducia.&lt;/p>
&lt;p>&lt;strong>Scoperta dei Provider:&lt;/strong>&lt;/p>
&lt;p>Gli utenti dichiarano quali provider di asserzioni si fidano pubblicando eventi kind 10040. Ogni voce specifica il tipo di asserzione con la pubkey del provider e l&amp;rsquo;hint relay, più varianti di algoritmo opzionali:&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>Gli utenti possono cifrare l&amp;rsquo;elenco dei tag nel &lt;code>.content&lt;/code> usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per mantenere private le proprie preferenze di provider. I client costruiscono un elenco di provider controllando quali provider si fidano i propri account seguiti, creando un livello di reputazione decentralizzato per i provider di asserzioni stessi.&lt;/p>
&lt;p>&lt;strong>Modello di Sicurezza:&lt;/strong>&lt;/p>
&lt;p>I provider devono usare chiavi di servizio diverse per algoritmi distinti, e una chiave unica per utente quando gli algoritmi sono personalizzati, impedendo la correlazione incrociata delle query tra utenti. Ogni chiave di servizio ottiene un evento di metadata kind 0 che descrive il comportamento dell&amp;rsquo;algoritmo, dando agli utenti trasparenza su ciò in cui ripongono la propria fiducia. Gli eventi di asserzione dovrebbero essere aggiornati solo quando i dati sottostanti cambiano effettivamente, prevenendo traffico relay non necessario e permettendo ai client di memorizzare nella cache i risultati con fiducia.&lt;/p>
&lt;p>&lt;strong>Adozione Attuale:&lt;/strong>&lt;/p>
&lt;p>NIP-85 formalizza un pattern già emerso informalmente. Il server cache di Primal calcola le metriche di engagement e i punteggi Web of Trust. &lt;a href="https://gitlab.com/soapbox-pub/antiprimal">Antiprimal&lt;/a>, coperto nel &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#antiprimal-gateway-conforme-per-il-cache-di-primal">numero #9&lt;/a>, collega questi calcoli ai client Nostr standard usando i kind di eventi NIP-85. &lt;a href="https://nostr.band">Nostr.band&lt;/a> gestisce il relay &lt;code>wss://nip85.nostr.band&lt;/code> referenziato negli esempi della spec stessa, servendo eventi di asserzione per i dati del proprio indice di ricerca. Sul lato client, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> (scritto da vitorpamplona, anche autore di questo NIP) ha un supporto sperimentale alle Trusted Assertions nella propria libreria &lt;code>quartz&lt;/code>, che analizza gli eventi di asserzione e le dichiarazioni dei provider di servizi. &lt;a href="https://vertexlab.io">Vertex&lt;/a> calcola metriche Web of Trust simili ma ha &lt;a href="https://vertexlab.io/blog/dvms_vs_nip_85/">scelto un approccio diverso&lt;/a>, usando una API diretta invece degli eventi NIP-85, citando il problema della scoperta e l&amp;rsquo;overhead computazionale delle architetture basate su asserzioni. Con NIP-85, qualsiasi client può consumare asserzioni da qualsiasi provider attraverso un formato di evento standard, e i provider competono sull&amp;rsquo;accuratezza mentre gli utenti scelgono di chi fidarsi.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-52-calendar-events">NIP Deep Dive: NIP-52 (Calendar Events)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/52.md">NIP-52&lt;/a> definisce gli eventi calendario su Nostr, dando ai client un modo standard per rappresentare e scoprire occorrenze in momenti specifici o tra momenti. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">merge del tag D&lt;/a> di questa settimana ha aggiunto l&amp;rsquo;indicizzazione a granularità giornaliera, completando un elemento mancante nell&amp;rsquo;infrastruttura di query della spec.&lt;/p>
&lt;p>&lt;strong>Due Tipi di Evento:&lt;/strong>&lt;/p>
&lt;p>NIP-52 separa gli eventi calendario in due kind in base alla precisione temporale. Gli eventi basati sulla data (kind 31922) rappresentano occorrenze che durano un&amp;rsquo;intera giornata come festività o festival multi-giorno. Usano stringhe di data ISO 8601 nei tag &lt;code>start&lt;/code> e &lt;code>end&lt;/code> opzionale, senza considerazioni sul fuso orario:&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>Gli eventi basati sul tempo (kind 31923) rappresentano momenti specifici con timestamp Unix nei tag &lt;code>start&lt;/code> e &lt;code>end&lt;/code> opzionale, più identificatori di fuso orario IANA (&lt;code>start_tzid&lt;/code>, &lt;code>end_tzid&lt;/code>) per la visualizzazione. Entrambi i kind sono eventi parametrizzati sostituibili, così gli organizzatori aggiornano i dettagli pubblicando un nuovo evento con lo stesso tag &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Calendari e RSVP:&lt;/strong>&lt;/p>
&lt;p>Gli eventi kind 31924 definiscono i calendari come collezioni, referenziando gli eventi tramite tag &lt;code>a&lt;/code> che puntano agli eventi kind 31922 o 31923 tramite le loro coordinate di indirizzo:&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>Gli utenti possono mantenere più calendari (personale, lavoro, comunitario) e i client possono iscriversi ai calendari di pubkey specifiche. Gli eventi calendario possono includere un tag &lt;code>a&lt;/code> che referenzia un calendario per richiedere l&amp;rsquo;inclusione, abilitando la gestione collaborativa dei calendari dove più utenti contribuiscono eventi a calendari che non possiedono.&lt;/p>
&lt;p>Gli RSVP usano kind 31925, dove gli utenti pubblicano il proprio stato di partecipazione insieme a un indicatore opzionale libero/occupato:&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>I valori &lt;code>status&lt;/code> validi sono &amp;ldquo;accepted&amp;rdquo;, &amp;ldquo;declined&amp;rdquo;, &amp;ldquo;tentative&amp;rdquo;, e il tag opzionale &lt;code>fb&lt;/code> marca l&amp;rsquo;utente come libero o occupato per quel periodo. Gli eventi RSVP referenziano il tag &lt;code>a&lt;/code> dell&amp;rsquo;evento calendario e portano il tag &lt;code>p&lt;/code> dell&amp;rsquo;organizzatore, così il client dell&amp;rsquo;organizzatore può aggregare le risposte dai relay.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;Aggiunta del Tag D:&lt;/strong>&lt;/p>
&lt;p>Prima del merge di questa settimana, i client che interrogavano gli eventi in un intervallo di date dovevano recuperare tutti gli eventi da una pubkey o un calendario e filtrare lato client. Il nuovo tag &lt;code>D&lt;/code> obbligatorio sugli eventi basati sul tempo (kind 31923) contiene un timestamp Unix a granularità giornaliera calcolato come &lt;code>floor(unix_seconds / 86400)&lt;/code>. Gli eventi multi-giorno portano più tag &lt;code>D&lt;/code>, uno per giorno. I relay possono ora indicizzare gli eventi per giorno e rispondere a query filtrate in modo efficiente, trasformando quello che era un problema di filtraggio lato client in una ricerca nell&amp;rsquo;indice lato 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>Il valore &lt;code>D&lt;/code> &lt;code>20139&lt;/code> equivale a &lt;code>floor(1740067200 / 86400)&lt;/code>, collocando questo evento il 20 febbraio 2025. I client che interrogano &amp;ldquo;tutti gli eventi di questa settimana&amp;rdquo; inviano un filtro con il corrispondente intervallo &lt;code>D&lt;/code>, e i relay restituiscono solo gli eventi corrispondenti.&lt;/p>
&lt;p>&lt;strong>Scelte di Design:&lt;/strong>&lt;/p>
&lt;p>NIP-52 omette intenzionalmente gli eventi ricorrenti. La spec esclude completamente le regole di ricorrenza (RRULE da iCalendar), delegando quella complessità ai client. Un organizzatore pubblica eventi individuali per ogni occorrenza, mantenendo semplice il modello dati lato relay. I tag partecipante portano ruoli opzionali (&amp;ldquo;host&amp;rdquo;, &amp;ldquo;speaker&amp;rdquo;, &amp;ldquo;attendee&amp;rdquo;), e i tag di localizzazione possono includere tag geohash &lt;code>g&lt;/code> per query spaziali insieme agli indirizzi leggibili.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/zmeyer44/flockstr">Flockstr&lt;/a> è il principale client calendario costruito su NIP-52. &lt;a href="https://gitea.coracle.social/coracle/coracle">Coracle&lt;/a> visualizza gli eventi calendario nel proprio feed sociale. L&amp;rsquo;aggiunta del tag &lt;code>D&lt;/code> di questa settimana abilita l&amp;rsquo;indicizzazione temporale lato relay che entrambi i client possono usare per ridurre la banda quando si interrogano eventi in un intervallo di date specifico.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #9</title><link>https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Mostro rilascia la sua prima beta pubblica dopo tre anni di sviluppo, portando il trading P2P di Bitcoin su mobile via Nostr. OpenSats assegna la sedicesima ondata di grant Bitcoin, con Minibits Wallet che riceve un rinnovo per il suo wallet Cashu integrato con Nostr. &lt;strong>Zapstore raggiunge la release stabile 1.0&lt;/strong>, segnando la maturazione dell&amp;rsquo;app store Android decentralizzato. Coracle 0.6.29 aggiunge topics e commenti sugli highlight. Igloo Desktop v1.0.3 introduce un importante hardening di sicurezza per la firma a soglia Frostr. Amber v4.1.2-pre1 migra all&amp;rsquo;architettura Flow. Angor raggiunge v0.2.5 con una UI di finanziamento rinnovata e configurazione server di immagini NIP-96. NostrPress viene lanciato come strumento che converte profili Nostr in blog statici. Antiprimal rilascia un gateway conforme agli standard che collega il cache server proprietario di Primal ai NIP standard di Nostr. Primal Android unisce 18 PR espandendo l&amp;rsquo;infrastruttura NWC con supporto doppio wallet, audit logging e il metodo &lt;code>lookup_invoice&lt;/code>. diVine rilascia feed video API-first. L&amp;rsquo;SDK TypeScript di Marmot separa la sua app chat di riferimento in un repository autonomo e inizia la migrazione a ts-mls v2. Il repository NIPs unisce il conteggio approssimativo HyperLogLog per NIP-45 ed estrae i tag identità da kind 0. Un&amp;rsquo;ondata di proposte di vitorpamplona inizia a snellire sistematicamente i metadata kind 0. Nuove proposte di protocollo includono Nostr Relay Connect per il NAT traversal e Nostr Web Tokens per claim web firmati. Due approfondimenti chiudono il numero: il conteggio approssimativo HyperLogLog di NIP-45 per metriche eventi cross-relay, e il protocollo di file storage HTTP NIP-96, ora deprecato a favore di Blossom, mentre i progetti gestiscono la transizione tra i due standard media.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Mostro rilascia la sua prima beta pubblica dopo tre anni di sviluppo, portando il trading P2P di Bitcoin su mobile via Nostr. OpenSats assegna la sedicesima ondata di grant Bitcoin, con Minibits Wallet che riceve un rinnovo per il suo wallet Cashu integrato con Nostr. &lt;strong>Zapstore raggiunge la release stabile 1.0&lt;/strong>, segnando la maturazione dell&amp;rsquo;app store Android decentralizzato. Coracle 0.6.29 aggiunge topics e commenti sugli highlight. Igloo Desktop v1.0.3 introduce un importante hardening di sicurezza per la firma a soglia Frostr. Amber v4.1.2-pre1 migra all&amp;rsquo;architettura Flow. Angor raggiunge v0.2.5 con una UI di finanziamento rinnovata e configurazione server di immagini NIP-96. NostrPress viene lanciato come strumento che converte profili Nostr in blog statici. Antiprimal rilascia un gateway conforme agli standard che collega il cache server proprietario di Primal ai NIP standard di Nostr. Primal Android unisce 18 PR espandendo l&amp;rsquo;infrastruttura NWC con supporto doppio wallet, audit logging e il metodo &lt;code>lookup_invoice&lt;/code>. diVine rilascia feed video API-first. L&amp;rsquo;SDK TypeScript di Marmot separa la sua app chat di riferimento in un repository autonomo e inizia la migrazione a ts-mls v2. Il repository NIPs unisce il conteggio approssimativo HyperLogLog per NIP-45 ed estrae i tag identità da kind 0. Un&amp;rsquo;ondata di proposte di vitorpamplona inizia a snellire sistematicamente i metadata kind 0. Nuove proposte di protocollo includono Nostr Relay Connect per il NAT traversal e Nostr Web Tokens per claim web firmati. Due approfondimenti chiudono il numero: il conteggio approssimativo HyperLogLog di NIP-45 per metriche eventi cross-relay, e il protocollo di file storage HTTP NIP-96, ora deprecato a favore di Blossom, mentre i progetti gestiscono la transizione tra i due standard media.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="mostro-rilascia-la-prima-beta-pubblica">Mostro Rilascia la Prima Beta Pubblica&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la sua &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">app mobile v1.1.0&lt;/a>, la prima beta pubblica del progetto dopo tre anni di sviluppo. L&amp;rsquo;app permette di scambiare Bitcoin direttamente usando Nostr per la coordinazione degli ordini, con Lightning per il settlement e nessun intermediario custodial.&lt;/p>
&lt;p>Il rilascio introduce notifiche push con migliore affidabilità in background su Android, un sistema di logging opzionale che permette di catturare e condividere dati diagnostici quando si presentano problemi, aggiornamenti relay più fluidi con inizializzazione additiva, e raffinamenti UI di Fase 2 con supporto internazionalizzazione. L&amp;rsquo;app è disponibile su &lt;a href="https://zapstore.dev">Zapstore&lt;/a> e come &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">download diretto da GitHub&lt;/a>.&lt;/p>
&lt;p>Mostro si unisce a Shopstr e Plebeian Market come applicazione commerciale nativa Nostr, con la distinzione di concentrarsi sulla coordinazione dello scambio fiat-Bitcoin. Il &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> sottostante gestisce il matching degli ordini e la risoluzione delle dispute attraverso relay Nostr.&lt;/p>
&lt;h3 id="sedicesima-ondata-di-grant-bitcoin-di-opensats">Sedicesima Ondata di Grant Bitcoin di OpenSats&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a> ha annunciato grant a 17 progetti open-source. Il punto saliente per Nostr: &lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>, il wallet Android &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> con supporto eventi wallet &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> e integrazione nutzap, ha ricevuto un grant di rinnovo. Minibits usa eventi Nostr per memorizzare lo stato dei token ecash, rendendo i backup del wallet portabili tra dispositivi tramite sincronizzazione relay.&lt;/p>
&lt;h3 id="nostrpress-dal-profilo-nostr-al-blog-statico">NostrPress: Dal Profilo Nostr al Blog Statico&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>) è un nuovo strumento che converte un profilo Nostr in un blog completamente statico deployabile ovunque. Chi pubblica articoli su Nostr tramite qualsiasi client può generare con NostrPress un sito web autonomo da quegli eventi, completo di hosting media locale e feed RSS.&lt;/p>
&lt;p>Costruito con templating Nunjucks e JavaScript, NostrPress produce siti privi di lock-in di piattaforma. L&amp;rsquo;output generato è semplice HTML/CSS ospitabile su qualsiasi server di file statici, GitHub Pages, Netlify o un VPS personale. Lo strumento si unisce a &lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a> e &lt;a href="https://github.com/servus-social/servus">Servus&lt;/a> come opzione per trasformare contenuti Nostr in siti web tradizionali.&lt;/p>
&lt;h3 id="antiprimal-gateway-conforme-per-il-cache-di-primal">Antiprimal: Gateway Conforme per il Cache di 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 nuovo progetto di Alex Gleason e del team Soapbox, è un gateway WebSocket che collega il cache server proprietario di Primal ai messaggi standard del protocollo Nostr. Primal offre funzionalità come statistiche eventi, ricerca contenuti e calcoli Web of Trust tramite &lt;code>wss://cache.primal.net/v1&lt;/code>, ma accedervi richiede un formato messaggi proprietario con un campo &lt;code>cache&lt;/code> non standard che i client Nostr ordinari non possono usare. Antiprimal traduce le richieste NIP standard nel formato di Primal e converte le risposte indietro.&lt;/p>
&lt;p>Il gateway supporta query COUNT &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (reazioni, risposte, repost, conteggi zap, conteggi follower), ricerca &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>, informazioni relay &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> Trusted Assertions per i dati Web of Trust precalcolati di Primal. Un bot companion pubblica eventi NIP-85 kind 30382 (statistiche utente) e kind 30383 (engagement eventi) su relay configurabili. Il progetto è costruito con TypeScript su Bun e usa la libreria Nostrify. Creato il 6 febbraio, ha 53 commit nei suoi primi tre giorni di sviluppo ed è live su antiprimal.net.&lt;/p>
&lt;h3 id="ikaros-gateway-di-messaggistica-per-agenti-ai-su-signal-e-nostr">Ikaros: Gateway di Messaggistica per Agenti AI su Signal e Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>, un nuovo progetto del team Soapbox, è un gateway di messaggistica che permette ad agenti AI di comunicare attraverso DM crittografati sia su Signal che su Nostr. Il bridge usa l&amp;rsquo;&lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a> (ACP) per connettere qualsiasi assistente AI di coding compatibile ACP a reti di messaggistica reali. Tre pull request costituiscono la build iniziale del progetto.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">PR #1&lt;/a> implementa un adattatore completo per DM crittografati &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> con supporto invio/ricezione, buffering delle risposte con flush esplicito al completamento, formati chiave privata &lt;code>nsec&lt;/code> e hex, pubblicazione multi-relay con riconnessione automatica e un wizard di setup interattivo. L&amp;rsquo;adattatore usa nostr-tools v2.23.0 e aggiorna l&amp;rsquo;ACP SDK a v0.14.1.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">PR #2&lt;/a> corregge un drop silenzioso di messaggi causato da una race condition nell&amp;rsquo;aggiornamento della sessione: le notifiche in arrivo prima che la sessione fosse registrata nella mappa venivano perse, e il fix mette in buffer quelle notifiche per il replay al completamento della registrazione. La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">PR #3&lt;/a> aggiunge metadati di nome utente/UUID e gruppo Signal alle interazioni con l&amp;rsquo;agente, così l&amp;rsquo;agente AI sa con chi sta parlando e in quale gruppo. Il progetto apre un nuovo spazio di design: agenti AI raggiungibili via DM Nostr che possono anche essere contattati da Signal, o viceversa.&lt;/p>
&lt;h3 id="campagna-di-snellimento-kind-0">Campagna di Snellimento Kind 0&lt;/h3>
&lt;p>vitorpamplona ha aperto una serie di PR proponendo l&amp;rsquo;estrazione sistematica di dati dagli eventi kind 0 (metadata utente) in kind di eventi dedicati. La campagna affronta un problema crescente: col passare del tempo kind 0 ha accumulato campi che la maggior parte dei client non usa, gonfiando la dimensione di ogni fetch di profilo.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a> (unita) sposta i tag identità (tag &lt;code>i&lt;/code>) da kind 0 a un nuovo kind 10011, dato che l&amp;rsquo;adozione di questi tag è stata minima. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2213">PR #2213&lt;/a> propone di spostare la verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> a kind 10008, il che permetterebbe di avere più identificatori NIP-05 per utente e di filtrare eventi per indirizzo NIP-05. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2217">PR #2217&lt;/a> propone di estrarre i campi Lightning (lud06/lud16) in un nuovo kind, evitando che tutti i profili kind 0 portino campi relativi allo zap che interessano solo ai client con integrazione Lightning.&lt;/p>
&lt;p>Le proposte hanno riacceso la discussione sulla questione più ampia della struttura di kind 0, inclusa la &lt;a href="https://github.com/nostr-protocol/nips/pull/1770">PR #1770&lt;/a>, la proposta di lunga data per sostituire il JSON stringificato nel contenuto kind 0 con tag strutturati.&lt;/p>
&lt;h3 id="il-supporto-relay-nip-70-è-critico-per-la-sicurezza-della-messaggistica-crittografata">Il Supporto Relay NIP-70 è Critico per la Sicurezza della Messaggistica Crittografata&lt;/h3>
&lt;p>L&amp;rsquo;implementazione White Noise del protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> ha &lt;a href="https://blog.jgmontoya.com/2026/02/10/nip70-relay-status.html">identificato una lacuna critica&lt;/a> nel supporto relay per &lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a> (Protected Events) e &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (Authentication). I test hanno rivelato che i principali relay pubblici inclusi Damus, Primal e nos.lol rifiutano i protected event con errori &lt;code>blocked: event marked as protected&lt;/code> invece di avviare la challenge di autenticazione richiesta.&lt;/p>
&lt;p>Questa lacuna rompe la funzionalità di sicurezza chiave: NIP-70 abilita la cancellazione sicura dei KeyPackages MLS spesi, prevenendo attacchi &amp;ldquo;harvest now, decrypt later&amp;rdquo;. In assenza di supporto relay, i protocolli di messaggistica crittografata non possono proteggere dal futuro compromesso delle chiavi. White Noise ha disabilitato NIP-70 di default in risposta, mantenendo un flag opzionale per chi usa relay compatibili.&lt;/p>
&lt;p>&lt;strong>Invito all&amp;rsquo;azione per operatori relay:&lt;/strong> Implementate il flusso di autenticazione NIP-42 completo. Quando ricevete protected event, effettuate la challenge ai client per dimostrare la proprietà, poi accettate le scritture validate. Rifiutare protected event in assenza di autenticazione rompe le garanzie di sicurezza del protocollo da cui dipendono le applicazioni di messaggistica crittografata.&lt;/p>
&lt;h2 id="rilasci">Rilasci&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>), il client web di hodlbod, ha rilasciato &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.29">0.6.29&lt;/a>. Il rilascio aggiunge la visualizzazione di topics e commenti sugli highlight kind 9802. Un nuovo elemento di navigazione liste fornisce accesso rapido alle liste curate dall&amp;rsquo;utente dalla UI principale. Sotto il cofano, Coracle è stato aggiornato a una nuova versione di Welshman, la libreria Nostr condivisa che alimenta la gestione relay e la gestione eventi di Coracle. La lista relay di default è stata aggiornata, e il tracking errori Glitchtip è stato rimosso dal codebase.&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>, l&amp;rsquo;applicazione di firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> e gestione chiavi, ha rilasciato &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/releases/tag/v1.0.3">v1.0.3&lt;/a> con esteso hardening di sicurezza. Il rilascio introduce validazione IPC, isolamento Electron e controlli relay consapevoli di SSRF per la difesa contro server-side request forgery. Un nuovo flusso di onboarding e importazione share semplifica la distribuzione delle chiavi, la pianificazione relay ora include normalizzazione e merging prioritario, e l&amp;rsquo;architettura API Electron basata su preload migliora il confine di sicurezza tra renderer e processo principale. Un sistema keep-alive per il signer mantiene la stabilità delle sessioni di firma a soglia, e i miglioramenti UX di recovery riducono l&amp;rsquo;attrito del ripristino delle chiavi.&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>, il signer di eventi Android, ha rilasciato &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.2-pre1">v4.1.2-pre1&lt;/a> correggendo la visualizzazione mancante del punteggio di fiducia relay introdotta in v4.1.1, risolvendo problemi di parsing JSON per richieste encrypt/decrypt non-Nostr, e migrando il modello account da LiveData a Flow per una gestione dello stato più prevedibile. Il rilascio passa i segreti bunker a UUID completi e aggiorna a Gradle plugin 9.&lt;/p>
&lt;h3 id="mostro-mobile-v110-e-daemon-v0161">Mostro Mobile v1.1.0 e Daemon v0.16.1&lt;/h3>
&lt;p>Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-rilascia-la-prima-beta-pubblica">sezione Notizie sopra&lt;/a> per la copertura completa del rilascio mobile. Sul lato server, il &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> ha rilasciato &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.1">v0.16.1&lt;/a>, aggiungendo la pubblicazione automatica dei metadata NIP-01 kind 0 all&amp;rsquo;avvio (&lt;a href="https://github.com/MostroP2P/mostro/pull/575">PR #575&lt;/a>), così il daemon annuncia la propria identità alla rete quando va online. Il rilascio corregge anche la documentazione del calcolo delle dev fee (&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>), il protocollo di finanziamento P2P decentralizzato costruito su Bitcoin e Nostr, ha rilasciato &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.5">v0.2.5&lt;/a> con tre PR unite. La &lt;a href="https://github.com/block-core/angor/pull/649">PR #649&lt;/a> riprogetta la sezione gestione Fondi (V2), sostituendo il layout precedente con un&amp;rsquo;interfaccia nuova per il tracking di singoli UTXO e posizioni di investimento. La &lt;a href="https://github.com/block-core/angor/pull/651">PR #651&lt;/a> rinnova la InvoiceView con stili pulsanti aggiornati, dialog chiudibili, un nuovo comando &amp;ldquo;Copia Indirizzo&amp;rdquo;, supporto cancellazione per il monitoraggio indirizzi, e gestione migliorata del flusso investimenti. La &lt;a href="https://github.com/block-core/angor/pull/652">PR #652&lt;/a> aggiunge server immagini &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) configurabili nelle impostazioni, permettendo di scegliere quale endpoint di upload media gestisce le immagini e la documentazione dei progetti. La &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.4">v0.2.4&lt;/a> era stata rilasciata la settimana precedente.&lt;/p>
&lt;h3 id="ridestr-v022-e-v023">Ridestr v0.2.2 e v0.2.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la piattaforma di rideshare decentralizzata &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#ridestr-v020-roadflare-release">coperta la settimana scorsa&lt;/a>, ha continuato l&amp;rsquo;iterazione rapida con &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.2">v0.2.2&lt;/a> (Bridge Payment Hotfix) e &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.3">v0.2.3&lt;/a> dopo la v0.2.0 &amp;ldquo;RoadFlare Release&amp;rdquo;. L&amp;rsquo;hotfix v0.2.2 affronta un bug dove i pagamenti bridge &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> cross-mint cancellavano automaticamente le corse mentre il pagamento era ancora in elaborazione o sarebbe eventualmente riuscito, prevenendo la cancellazione prematura delle corse su settlement più lenti. Il rilascio corregge anche lo sfarfallio della UI e le hitbox touch rotte sul pulsante &amp;ldquo;la mia posizione&amp;rdquo;. La v0.2.3 include ulteriori bug fix. Entrambi i rilasci includono APK separati per Ridestr (app passeggero) e Drivestr (app autista).&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 libreria helper PHP per il protocollo Nostr, ha rilasciato &lt;a href="https://github.com/nostrver-se/nostr-php/releases/tag/1.9.4">1.9.4&lt;/a> aggiungendo una proprietà &lt;code>timeout&lt;/code> configurabile alla classe request (&lt;a href="https://github.com/nostrver-se/nostr-php/pull/106">PR #106&lt;/a>). La novità permette di impostare durate di timeout personalizzate per le connessioni relay e le richieste messaggi, prevenendo blocchi indefiniti quando un relay non risponde o è lento a rispondere.&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>), l&amp;rsquo;app store Android permissionless costruito su Nostr, &lt;strong>ha raggiunto la milestone della release stabile 1.0&lt;/strong> dopo mesi di release candidate.&lt;/p>
&lt;p>Il rilascio 1.0 include miglioramenti di stabilità critici: gestione dello stato del pulsante install che assicura che Delete appaia immediatamente dopo il completamento dell&amp;rsquo;installazione, messaggi di errore user-friendly con dettagli tecnici espandibili, e un pulsante &amp;ldquo;Segnala problema&amp;rdquo; che invia DM crittografati via Nostr usando chiavi effimere. Tra le novità anche un nuovo schermo aggiornamenti con polling e tracking batch, un migliore watchdog per i download bloccati, limiti di download concorrenti dinamici basati sulle prestazioni del dispositivo, sincronizzazione più frequente dei pacchetti installati e logica di confronto versioni migliorata. Il team ha corretto un problema critico con flutter_secure_storage e migliorato la gestione dei casi limite del package manager.&lt;/p>
&lt;p>La milestone rappresenta la maturazione della prima piattaforma dedicata di distribuzione app di Nostr, permettendo agli sviluppatori di pubblicare applicazioni Android direttamente verso i propri utenti, aggirando il gatekeeping degli app store centralizzati.&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>, lo strumento CLI Go del team &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> che sostituisce il tooling di pubblicazione precedente di Zapstore per la firma e l&amp;rsquo;upload di app Android su relay Nostr, ha rilasciato &lt;a href="https://github.com/zapstore/zsp/releases/tag/v0.3.1">v0.3.1&lt;/a>. ZSP gestisce l&amp;rsquo;acquisizione APK da GitHub, GitLab, Codeberg, F-Droid o file locali, poi analizza i metadata, firma eventi Nostr (tramite chiave privata, bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> o estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>), e carica i manufatti su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. Tra le novità: modalità offline completa per il linking del keystore anche in assenza di rete, header &lt;code>Content-Digest&lt;/code> sugli upload Blossom per la conformità al protocollo, rilevamento corretto degli APK arm64-v8a dai repository F-Droid, fix dei parametri query trailing di GitLab e supporto completo file &lt;code>.env&lt;/code> per la configurazione.&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>, il client Nostr per iOS, è passato alla versione 1.17 (&lt;a href="https://github.com/damus-io/damus/pull/3606">PR #3606&lt;/a>). Il rilascio corregge un problema RelayPool dove le connessioni si chiudevano dopo il rilascio del lease effimero (&lt;a href="https://github.com/damus-io/damus/pull/3605">PR #3605&lt;/a>), che poteva causare il drop inatteso delle sottoscrizioni. Risolve anche un bug dove la timeline dei preferiti non mostrava eventi nel passaggio tra tab (&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>, il Nostr army knife CLI, ha rilasciato &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con tre fix di stabilità: prevenzione di un panic quando i tag AUTH challenge sono nil o troppo corti, controllo degli errori del dateparser prima di usare il valore analizzato, e gestione degli URL mint Cashu che mancano del separatore &lt;code>://&lt;/code>.&lt;/p>
&lt;h3 id="mi-relay-locale-basato-su-browser">Mi: Relay Locale Basato su Browser&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>), la nuova MiniApp &lt;a href="https://shakespeare.wtf">Shakespeare&lt;/a>, è un relay locale basato su browser che archivia in IndexedDB gli eventi Nostr dell&amp;rsquo;utente. Mi recupera profili (kind 0), liste contatti (kind 3), liste relay (kind 10002) e eventi wallet dai relay connessi e li memorizza localmente, dando accesso offline ai propri dati. Costruito con React e 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>), piattaforma decentralizzata di attivismo e raccolta fondi del team Soapbox, ha rilasciato &lt;a href="https://gitlab.com/soapbox-pub/agora/-/releases/v1.0.2">v1.0.2&lt;/a> con un APK Android disponibile per installazione diretta. Si tratta della prima menzione di Agora su Compass; la piattaforma è stata lanciata il 17 gennaio con la dichiarazione di missione: &amp;ldquo;Unisciti al movimento globale per la libertà. Invia supporto agli attivisti sul campo a livello internazionale e partecipa alle azioni locali.&amp;rdquo;&lt;/p>
&lt;p>La piattaforma si centra su una mappa mondiale dove chi la usa naviga per paese, crea &amp;ldquo;azioni&amp;rdquo; geolocalizzate (proteste, campagne, organizzazione comunitaria) e le discute tramite commenti threaded. Tutti i contenuti si propagano tramite relay Nostr, quindi nessun server centrale può essere messo offline per silenziare la coordinazione. Agora supporta più lingue con parità di traduzione imposta da CI, integra server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> per gli upload, e include ricerca, navigazione hashtag con toggle globale/regionale, profili utente e sistemi di reazione. Il rilascio v1.0.2 è la build Android corrente, disponibile come download APK diretto.&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>, il client Nostr 3D sperimentale costruito con il motore di gioco Bevy, ha rilasciato &lt;a href="https://codeberg.org/xonos/xonos/releases/tag/v0.1.6">v0.1.6&lt;/a>. xonos renderizza eventi Nostr in un ambiente spaziale 3D con capacità text-to-speech, esplorando come i dati del protocollo sociale potrebbero funzionare al di fuori delle interfacce 2D convenzionali.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="primal-android-espande-linfrastruttura-nwc">Primal Android Espande l&amp;rsquo;Infrastruttura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 18 PR in settimana, continuando il lavoro NWC &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#primal-android-rilascia-crittografia-nwc">iniziato la settimana scorsa&lt;/a>. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/883">PR #883&lt;/a> aggiunge supporto per connessioni NWC attraverso entrambi i wallet (Spark ed esterno), e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/879">PR #879&lt;/a> implementa il metodo NWC &lt;code>lookup_invoice&lt;/code> per controllare lo stato dei pagamenti.&lt;/p>
&lt;p>La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/880">PR #880&lt;/a> aggiunge audit logging request-response NWC per il debugging delle interazioni wallet. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/877">PR #877&lt;/a> introduce il supporto multi-account a &lt;code>PrimalNwcService&lt;/code>, permettendo a chi ha più profili di mantenere connessioni wallet separate. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/882">PR #882&lt;/a> implementa la pulizia periodica dei budget hold scaduti, prevenendo che prenotazioni di pagamento stale blocchino le operazioni wallet.&lt;/p>
&lt;p>Il lavoro UI include ridisegno della schermata upgrade wallet (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/889">PR #889&lt;/a>), FAQ sull&amp;rsquo;upgrade wallet (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/885">PR #885&lt;/a>), impostazione indirizzo Lightning durante l&amp;rsquo;onboarding (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/888">PR #888&lt;/a>) e un fix per le transazioni zap che apparivano come pagamenti regolari per i tipi non-Lightning (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/887">PR #887&lt;/a>).&lt;/p>
&lt;h3 id="divine-rilascia-feed-video-api-first">diVine Rilascia Feed Video API-First&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video short-form, ha unito 19 PR in settimana, spostandosi verso l&amp;rsquo;architettura API-first. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1468">PR #1468&lt;/a> introduce feed video API-first, e la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1466">PR #1466&lt;/a> aggiunge endpoint API trending, recent e home. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1433">PR #1433&lt;/a> indicizza controller video specifici per un rendering efficiente dei feed.&lt;/p>
&lt;p>La gestione profili è migliorata con la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1440">PR #1440&lt;/a> che implementa un pattern cache-plus-fresh per la visualizzazione di altri profili, riducendo i tempi di caricamento garantendo al contempo la freschezza dei dati. Il team ha anche rilasciato fix per le notifiche (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1437">PR #1437&lt;/a>), refactoring del flusso commenti (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1431">PR #1431&lt;/a>) e tab swiping sulla schermata Notifiche (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1388">PR #1388&lt;/a>).&lt;/p>
&lt;h3 id="white-noise-unificazione-keyring-e-ricerca-utenti">White Noise: Unificazione Keyring e Ricerca Utenti&lt;/h3>
&lt;p>Il backend &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise&lt;/a> per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> ha unito 4 PR in settimana. Due PR hanno migliorato la gestione del keyring: la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/468">PR #468&lt;/a> rende l&amp;rsquo;identificatore del servizio keyring configurabile tramite &lt;code>WhitenoiseConfig&lt;/code>, e la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/475">PR #475&lt;/a> unifica l&amp;rsquo;implementazione su un singolo crate &lt;code>keyring-core&lt;/code> con store nativi per piattaforma, sostituendo codice frammentato specifico per piattaforma. Separatamente, la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/470">PR #470&lt;/a> aggiunge funzionalità di ricerca utenti.&lt;/p>
&lt;h3 id="marmot-ts-estrae-lapp-chat-di-riferimento">Marmot TS Estrae l&amp;rsquo;App Chat di Riferimento&lt;/h3>
&lt;p>L&amp;rsquo;SDK TypeScript di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) ha unito la &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/40">PR #40&lt;/a>, rimuovendo l&amp;rsquo;applicazione chat di riferimento integrata e separandola in un repository autonomo: &lt;a href="https://github.com/marmot-protocol/marmots-web-chat">marmots-web-chat&lt;/a>. Il nuovo repo, creato il 6 febbraio, è un&amp;rsquo;implementazione di riferimento dell&amp;rsquo;SDK TypeScript Marmot con la propria pipeline CI, vista chat a tab e sistema di build indipendente. La separazione permette all&amp;rsquo;SDK di concentrarsi sulle funzioni di libreria mentre l&amp;rsquo;app chat itera sulla UX in modo indipendente.&lt;/p>
&lt;p>Una PR aperta (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/41">#41&lt;/a>) migra marmot-ts a ts-mls v2.0.0, portando un&amp;rsquo;API ridisegnata con oggetti contesto unificati, nuove utility di gestione messaggi (creazione eventi, lettura, deserializzazione), helper per i metadata dei key package, e supporto eventi di cancellazione.&lt;/p>
&lt;h3 id="aggiornamenti-alby-hub">Aggiornamenti Alby Hub&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> ha unito 5 PR in settimana. La &lt;a href="https://github.com/getAlby/hub/pull/2049">PR #2049&lt;/a> aggiunge un Alby CLI all&amp;rsquo;interfaccia dell&amp;rsquo;app store. La &lt;a href="https://github.com/getAlby/hub/pull/2033">PR #2033&lt;/a> corregge la gestione di dati zap invalidi nella lista transazioni, e la &lt;a href="https://github.com/getAlby/hub/pull/2046">PR #2046&lt;/a> rimuove il metodo &lt;code>ListTransactions&lt;/code> non utilizzato dall&amp;rsquo;interfaccia LNClient.&lt;/p>
&lt;h3 id="notedeck-rilascia-dashboard-e-agentium">Notedeck Rilascia Dashboard e Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client Nostr cross-platform di Damus, ha unito 6 PR in settimana. La &lt;a href="https://github.com/damus-io/notedeck/pull/1247">PR #1247&lt;/a> aggiunge un&amp;rsquo;app dashboard iniziale. La &lt;a href="https://github.com/damus-io/notedeck/pull/1293">PR #1293&lt;/a> introduce Agentium, un ambiente di sviluppo multi-agente che trasforma l&amp;rsquo;assistente AI Dave in un sistema con due modalità AI e gestione agenti basata su scene. La &lt;a href="https://github.com/damus-io/notedeck/pull/1276">PR #1276&lt;/a> aggiunge un compositore messaggi multilinea con keybinding stile Signal, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1278">PR #1278&lt;/a> fornisce miglioramenti delle prestazioni media. PR aperte degne di nota includono &lt;a href="https://github.com/damus-io/notedeck/pull/1288">infrastruttura outbox&lt;/a> e &lt;a href="https://github.com/damus-io/notedeck/pull/1289">pianificazione Git App&lt;/a> &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>.&lt;/p>
&lt;h3 id="agora-rilascia-un-importante-rinnovo-della-ui">Agora Rilascia un Importante Rinnovo della UI&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> ha unito 7 PR in settimana insieme al rilascio v1.0.2. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/106">PR #106&lt;/a> è la più grande, chiudendo 11 task UI attraverso impostazioni, modifica profilo, interazioni mappa, risultati ricerca, filtraggio commenti e gestione server Blossom. Il merge ha disabilitato i pulsanti reazione per chi non è autenticato (che prima riceveva errori silenziosi cercando di reagire ai post sulla mappa), corretto il panning della mappa sulla linea di cambio data, e aggiunto testo corrispondente in grassetto nei risultati di ricerca.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/108">PR #108&lt;/a> aggiunge conteggi commenti sotto i post del feed e nelle pagine thread. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/107">PR #107&lt;/a> aggiunge retry automatico sui fallimenti di caricamento eventi con un pulsante di reload esplicito quando i tentativi si esauriscono. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/104">PR #104&lt;/a> cambia la navigazione hashtag per default allo scope globale, dato che il default precedente limitato per paese spesso restituiva zero risultati.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/109">PR #109&lt;/a> aggiunge un passaggio CI che verifica la parità di traduzione tra tutte le lingue, facendo fallire la build se a qualche chiave manca un valore. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/110">PR #110&lt;/a> taglia le note lunghe nei feed per preservare il ritmo di scroll, e la &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/111">PR #111&lt;/a> corregge un problema di zoom iOS mobile quando si commentano azioni causato da font di dimensioni ridotte.&lt;/p>
&lt;h3 id="clawstr-rilascia-cli-e-pulsanti-zap-lightning">Clawstr Rilascia CLI e Pulsanti Zap Lightning&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/clawstr">Clawstr&lt;/a>, la piattaforma ispirata a Reddit dove agenti AI creano e gestiscono community su Nostr, ha unito 3 PR in settimana. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/11">PR #11&lt;/a> sostituisce tutti i comandi manuali nak nelle definizioni skill dell&amp;rsquo;agente AI con il nuovo pacchetto &lt;code>@clawstr/cli&lt;/code> (&lt;code>npx -y @clawstr/cli@latest&lt;/code>), rimuovendo la costruzione manuale di eventi JSON a favore di comandi CLI e aggiungendo operazioni wallet (init, balance, zap, npc) e ricerca full-text &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/13">PR #13&lt;/a> aggiunge la pagina di documentazione &amp;ldquo;For Humans&amp;rdquo; e un componente &lt;code>ProfileZapDialog&lt;/code>. Il pulsante zap appare sulle pagine profilo quando l&amp;rsquo;utente ha un indirizzo Lightning configurato e funziona anche non autenticati, usando LNURL-pay direttamente con importi sats preimpostati e visualizzazione codice QR. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/12">PR #12&lt;/a> documenta il comando &lt;code>wallet sync&lt;/code>, spiegando come i pagamenti verso indirizzi Lightning vengono trattenuti da NPC fino a che i rispettivi agenti sincronizzano esplicitamente i wallet.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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: Risposta Relay HyperLogLog&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45 (Event Counting)&lt;/a> ora supporta il conteggio approssimativo HyperLogLog (HLL). I relay possono restituire valori registro HLL da 256 byte insieme alle risposte COUNT. I client uniscono questi registri da più relay per calcolare la cardinalità approssimativa evitando di scaricare set completi di eventi. Il caso d&amp;rsquo;uso principale: conteggi follower e reazioni indipendenti da un singolo relay come fonte autoritativa. Anche solo due eventi reazione consumano più banda del payload HLL da 256 byte. I client possono applicare le correzioni HyperLogLog++ per migliorare l&amp;rsquo;accuratezza su cardinalità ridotte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">NIP-39: Tag Identità Spostati da Kind 0&lt;/a>&lt;/strong> - I tag di claim identità &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (tag &lt;code>i&lt;/code>) sono stati estratti dagli eventi metadata kind 0 a un nuovo kind dedicato 10011. La motivazione: quasi nessun client supporta questi tag, quindi aggiungono dimensione a ogni fetch kind 0 senza valore reale. Si tratta della prima di un ciclo di PR di estrazione kind 0 di vitorpamplona (vedi &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#campagna-di-snellimento-kind-0">sezione Notizie&lt;/a>).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&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 protocollo per accedere ai relay Nostr attraverso tunneling crittografato tramite un relay rendezvous pubblico. Il meccanismo abilita l&amp;rsquo;accesso a relay dietro NAT o firewall, inclusi relay personali in esecuzione su home server o dispositivi mobili. Il tunneling usa eventi kind 24891/24892 con crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> attraverso un relay rendezvous che non può decrittare il traffico. Applicazione pratica: qualsiasi client Nostr può esporre lo storage locale (IndexedDB, SQLite) come endpoint relay per la sincronizzazione cross-device. La semantica standard NIP-01 (REQ, EVENT, CLOSE, COUNT) passa attraverso il tunnel in modo trasparente. Implementazioni di riferimento esistono in Go (ORLY Relay) e 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, un formato evento Nostr per trasmettere claim firmati tra parti web, ispirato ai JSON Web Tokens (JWT). NWT può rappresentare sia &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (HTTP Auth) che &lt;a href="https://nostrcompass.org/it/topics/blossom/">eventi di autorizzazione Blossom&lt;/a>, dando ai client flessibilità su come e quanto a lungo i token rimangono validi. Sono disponibili la libreria Go di riferimento, la &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens">spiegazione video&lt;/a> e il &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens?tab=readme-ov-file#comparisons">confronto dettagliato&lt;/a> con NIP-98 e Blossom Auth.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">Semplificazione NIP-47&lt;/a>&lt;/strong> - rolznz propone di rimuovere i metodi &lt;code>multi_&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>, complessi da implementare e privi di adozione. La PR riduce anche la duplicazione nella gestione crittografia e retrocompatibilità, ripulendo la spec dopo &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#aggiornamenti-nip">l&amp;rsquo;aggiunta hold invoice della settimana scorsa&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: Spostamento in un Kind Evento Proprio&lt;/a>&lt;/strong> - vitorpamplona propone di spostare la verifica NIP-05 da kind 0 a un nuovo kind 10008, abilitando più identificatori NIP-05 per utente e il filtraggio per indirizzo NIP-05. Parte della campagna di snellimento 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: Indirizzi Lightning da Kind 0&lt;/a>&lt;/strong> - vitorpamplona propone di estrarre lud06/lud16 (indirizzi Lightning) da kind 0 a un kind evento dedicato per &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, continuando lo sforzo di snellimento kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2165">Iperpersonalizzazione Profilo&lt;/a>&lt;/strong> - fiatjaf propone capacità estese di personalizzazione profilo oltre a quanto kind 0 supporta attualmente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-45-event-counting-e-hyperloglog">NIP Deep Dive: NIP-45 (Event Counting) e HyperLogLog&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">spec&lt;/a>) definisce come i client possono chiedere ai relay di contare eventi corrispondenti a un filtro evitando di trasferire gli eventi stessi. Il merge del &lt;a href="https://github.com/nostr-protocol/nips/pull/1561">supporto HyperLogLog&lt;/a> aggiunge una struttura dati probabilistica che risolve un problema fondamentale: come contare cose attraverso più relay indipendenti.&lt;/p>
&lt;p>&lt;strong>Il Problema:&lt;/strong>&lt;/p>
&lt;p>Contare eventi su un singolo relay è semplice: invia una richiesta COUNT, ottieni un numero indietro. Contare attraverso la rete è più difficile. Se il relay A riporta 50 reazioni e il relay B ne riporta 40, il totale non è 90 perché molti eventi esistono su entrambi i relay. Non è possibile calcolare il conteggio reale in assenza del download completo per deduplicare.&lt;/p>
&lt;p>&lt;strong>HyperLogLog:&lt;/strong>&lt;/p>
&lt;p>HyperLogLog (HLL) è un algoritmo probabilistico che stima il numero di elementi distinti in un insieme usando un quantitativo fisso di memoria. L&amp;rsquo;implementazione NIP-45 usa 256 registri di un byte ciascuno, consumando esattamente 256 byte indipendentemente dal numero di eventi contati. L&amp;rsquo;algoritmo funziona esaminando la rappresentazione binaria di ciascun ID evento e tracciando la posizione degli zeri iniziali. ID evento che iniziano con molti zeri sono statisticamente rari, e la loro occorrenza indica un insieme grande.&lt;/p>
&lt;p>&lt;strong>Come Funziona in NIP-45:&lt;/strong>&lt;/p>
&lt;p>Un relay che risponde a una richiesta COUNT può includere un campo &lt;code>hll&lt;/code> contenente valori registro codificati in 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>Il client raccoglie i valori HLL da più relay e li unisce prendendo il valore massimo a ciascuna posizione registro. L&amp;rsquo;HLL unito rappresenta l&amp;rsquo;unione di tutti gli insiemi di eventi attraverso i relay, gestendo automaticamente la deduplicazione. La stima finale di cardinalità viene calcolata dai registri uniti.&lt;/p>
&lt;p>&lt;strong>Accuratezza:&lt;/strong>&lt;/p>
&lt;p>Con 256 registri, l&amp;rsquo;errore standard è di circa il 5,2%. Per un conteggio reale di 1.000, la stima cadrà tipicamente tra 948 e 1.052. Per conteggi più grandi, l&amp;rsquo;errore relativo rimane costante: un conteggio reale di 100.000 verrà stimato in circa 94.800-105.200. Le correzioni HyperLogLog++ migliorano l&amp;rsquo;accuratezza per cardinalità ridotte (sotto ~200), dove l&amp;rsquo;algoritmo base tende a sovrastimare.&lt;/p>
&lt;p>&lt;strong>Perché è Importante:&lt;/strong>&lt;/p>
&lt;p>Le metriche social (conteggi follower, conteggi reazioni, conteggi repost) sono tra le funzionalità core dei client social media. In assenza di HLL, i client devono interrogare un singolo relay &amp;ldquo;fidato&amp;rdquo; (centralizzando il conteggio) o scaricare tutti gli eventi da tutti i relay (sprecando banda). HLL permette ai client di ottenere un buon conteggio approssimativo da più relay con un overhead totale di 256 byte per relay, indipendentemente dal conteggio effettivo. Anche solo due eventi reazione consumano più banda di un payload HLL completo.&lt;/p>
&lt;p>La spec fissa il numero di registri a 256 per l&amp;rsquo;interoperabilità. Tutti i relay producono valori HLL che i client possono unire, indipendentemente da quale implementazione relay usano. I client possono implementare il supporto HLL una volta e beneficiare di ogni relay che lo supporta.&lt;/p>
&lt;p>&lt;strong>Stato Attuale:&lt;/strong>&lt;/p>
&lt;p>La PR è stata aperta da fiatjaf ed era in discussione da diversi mesi prima del merge avvenuto in settimana. Le implementazioni relay dovranno aggiungere il calcolo HLL ai loro handler COUNT. Le implementazioni client dovranno aggiungere il merging HLL alla propria logica di aggregazione conteggi.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-96-http-file-storage-e-la-transizione-a-blossom">NIP Deep Dive: NIP-96 (HTTP File Storage) e la Transizione a Blossom&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) definiva come i client Nostr caricavano, scaricavano e gestivano file su server media HTTP. Ora contrassegnato come &amp;ldquo;non raccomandato&amp;rdquo; a favore di &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> (hosting media basato su BUD), NIP-96 resta rilevante in settimana perché Angor v0.2.5 &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#angor-v025">ha aggiunto la configurazione server NIP-96&lt;/a> e ZSP v0.3.1 &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#zsp-v031">carica su server Blossom&lt;/a>, illustrando la transizione di protocollo in corso.&lt;/p>
&lt;p>&lt;strong>Come Funziona NIP-96:&lt;/strong>&lt;/p>
&lt;p>Un client scopre le capacità di un file server recuperando &lt;code>/.well-known/nostr/nip96.json&lt;/code>, che restituisce l&amp;rsquo;URL API, i tipi di contenuto supportati, i limiti di dimensione e le trasformazioni media disponibili:&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>Per caricare, il client invia un POST &lt;code>multipart/form-data&lt;/code> all&amp;rsquo;URL API con un header di autorizzazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (un evento Nostr firmato che prova l&amp;rsquo;identità di chi carica). Il server restituisce una struttura metadata file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> contenente l&amp;rsquo;URL del file, i hash SHA-256 originali e trasformati, il tipo MIME e le dimensioni:&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>I download usano richieste GET a &lt;code>&amp;lt;api_url&amp;gt;/&amp;lt;sha256-hash&amp;gt;&lt;/code>, con parametri query opzionali per trasformazioni server-side come il ridimensionamento immagini (&lt;code>?w=320&lt;/code>). La cancellazione usa DELETE con auth NIP-98, e solo chi ha caricato il file originale può cancellare i propri file. Un endpoint di elenco file restituisce risultati paginati dei caricamenti di un utente.&lt;/p>
&lt;p>Chi pubblica eventi kind 10096 dichiara i propri server di upload preferiti, permettendo ai client di selezionare automaticamente il server giusto in assenza di configurazione manuale.&lt;/p>
&lt;p>&lt;strong>Perché È Stato Deprecato:&lt;/strong>&lt;/p>
&lt;p>NIP-96 legava gli URL dei file a server specifici. Se &lt;code>files.example.com&lt;/code> andava giù, ogni nota Nostr che referenziava quegli URL perdeva i suoi media. Il server era l&amp;rsquo;indirizzo, e l&amp;rsquo;indirizzo era fragile.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> (Blobs Stored Simply on Mediaservers) inverte il modello rendendo l&amp;rsquo;hash SHA-256 del contenuto del file l&amp;rsquo;identificatore canonico. Un URL Blossom ha la forma &lt;code>https://blossom.example/&amp;lt;sha256&amp;gt;.png&lt;/code>, ma qualsiasi server Blossom che ospita lo stesso file lo serve allo stesso percorso hash. Se un server scompare, i client interrogano un altro server per lo stesso hash. L&amp;rsquo;indirizzamento basato sul contenuto rende i dati portabili tra server di default.&lt;/p>
&lt;p>Blossom semplifica anche l&amp;rsquo;API. NIP-96 usava upload multipart form con risposte JSON, policy di trasformazione e un endpoint di discovery. Blossom usa semplice PUT per gli upload, GET per i download, ed eventi Nostr firmati (non header HTTP) per l&amp;rsquo;autorizzazione. La specifica Blossom è divisa in documenti modulari: BUD-01 copre il protocollo server, l&amp;rsquo;autorizzazione e il recupero, BUD-02 copre l&amp;rsquo;upload blob, BUD-03 copre i server utente, e BUD-04 copre il mirroring tra server.&lt;/p>
&lt;p>La deprecazione è avvenuta a settembre 2025 tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/2047">PR #2047&lt;/a>, che ha contrassegnato NIP-96 come &amp;ldquo;non raccomandato&amp;rdquo; nell&amp;rsquo;indice NIPs.&lt;/p>
&lt;p>&lt;strong>La Transizione in Pratica:&lt;/strong>&lt;/p>
&lt;p>Server come nostr.build e void.cat supportavano NIP-96 e hanno aggiunto o migrato a endpoint Blossom. I client sono a vari stadi: il rilascio v0.2.5 di Angor in settimana ha aggiunto la configurazione server NIP-96 per le immagini dei progetti, mentre il rilascio v0.3.1 di ZSP carica artefatti esclusivamente su server Blossom con header &lt;code>Content-Digest&lt;/code> per la conformità al protocollo. Amethyst e Primal supportano gli upload Blossom. La coesistenza probabilmente continuerà fino a quando le rimanenti implementazioni NIP-96 completeranno la propria migrazione.&lt;/p>
&lt;p>&lt;strong>Cosa Viene Preservato:&lt;/strong>&lt;/p>
&lt;p>I preference event kind 10096 rimangono utili per la selezione server Blossom. I metadata file NIP-94 (eventi kind 1063) descrivono ancora le proprietà dei file indipendentemente da quale protocollo di upload li ha creati. L&amp;rsquo;hashing SHA-256 che NIP-96 usava per gli URL di download è diventato la base dell&amp;rsquo;indirizzamento basato sul contenuto di Blossom. Il design di NIP-96 ha informato ciò che Blossom ha semplificato: la lezione è stata che l&amp;rsquo;hosting media su rete decentralizzata richiede storage indirizzato per contenuto per corrispondere alla resistenza alla censura del livello relay.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #8</title><link>https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> rust-nostr rilascia una importante riprogettazione dell&amp;rsquo;API con 21 PR che rivedono l&amp;rsquo;architettura dell&amp;rsquo;SDK. Nostria 3.0 viene lanciato con navigazione a doppio pannello, gestione liste e una completa revisione dell&amp;rsquo;UI. Vector aggiunge accelerazione SIMD raggiungendo speedup di 65x-184x e rilascia supporto per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la messaggistica di gruppo crittografata. Frostr porta la firma a soglia su iOS tramite TestFlight. Damus implementa i suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19 (Entità Codificate Bech32)&lt;/a> per la scoperta di contenuti cross-relay. Primal Android aggiunge crittografia NWC e esportazione transazioni wallet. nostr-tools e NDK ricevono miglioramenti di affidabilità. NIP-82 (Applicazioni Software) si espande per coprire il 98% delle piattaforme dispositivo. Il repository NIPs unisce il supporto hold invoice per &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuove proposte di protocollo includono NIP-74 per il podcasting, NIP-DB per database eventi nel browser e una suite TRUSTed Filters per la curation decentralizzata dei contenuti. Nuovi progetti includono Instagram to Nostr v2 per la migrazione dei contenuti, Pod21 che lancia un marketplace decentralizzato di stampa 3D, Clawstr che introduce community gestite da agenti AI, e Shosho e NosCall che espandono le capacità di live streaming e videochiamate.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> rust-nostr rilascia una importante riprogettazione dell&amp;rsquo;API con 21 PR che rivedono l&amp;rsquo;architettura dell&amp;rsquo;SDK. Nostria 3.0 viene lanciato con navigazione a doppio pannello, gestione liste e una completa revisione dell&amp;rsquo;UI. Vector aggiunge accelerazione SIMD raggiungendo speedup di 65x-184x e rilascia supporto per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la messaggistica di gruppo crittografata. Frostr porta la firma a soglia su iOS tramite TestFlight. Damus implementa i suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19 (Entità Codificate Bech32)&lt;/a> per la scoperta di contenuti cross-relay. Primal Android aggiunge crittografia NWC e esportazione transazioni wallet. nostr-tools e NDK ricevono miglioramenti di affidabilità. NIP-82 (Applicazioni Software) si espande per coprire il 98% delle piattaforme dispositivo. Il repository NIPs unisce il supporto hold invoice per &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuove proposte di protocollo includono NIP-74 per il podcasting, NIP-DB per database eventi nel browser e una suite TRUSTed Filters per la curation decentralizzata dei contenuti. Nuovi progetti includono Instagram to Nostr v2 per la migrazione dei contenuti, Pod21 che lancia un marketplace decentralizzato di stampa 3D, Clawstr che introduce community gestite da agenti AI, e Shosho e NosCall che espandono le capacità di live streaming e videochiamate.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="rust-nostr-rilascia-una-importante-riprogettazione-dellapi">rust-nostr Rilascia una Importante Riprogettazione dell&amp;rsquo;API&lt;/h3>
&lt;p>L&amp;rsquo;SDK &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha subito una significativa revisione dell&amp;rsquo;architettura questa settimana con 21 PR unite che introducono breaking changes attraverso la libreria. La riprogettazione riguarda le API core su cui la maggior parte degli sviluppatori Rust fa affidamento.&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a> riprogetta le API di notifica, mentre &lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a> sostituisce &lt;code>RelayNotification::Shutdown&lt;/code> con &lt;code>RelayStatus::Shutdown&lt;/code> per una gestione dello stato più pulita. Le API del signer ora si allineano con altri pattern dell&amp;rsquo;SDK tramite &lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>. I metodi Client e Relay hanno ricevuto una pulizia in &lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>, e le opzioni client ora usano un builder pattern (&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>).&lt;/p>
&lt;p>Le API di invio messaggi sono state riprogettate in &lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>, l&amp;rsquo;unsubscription REQ in &lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>, e la rimozione relay in &lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>. Una &lt;a href="https://github.com/rust-nostr/nostr/pull/1246">PR aperta #1246&lt;/a> aggiunge supporto per le API bloccanti per completare la riprogettazione.&lt;/p>
&lt;p>Le modifiche portano consistenza all&amp;rsquo;SDK ma richiederanno sforzo di migrazione dai progetti esistenti. Gli sviluppatori che costruiscono su rust-nostr dovrebbero rivedere attentamente il changelog prima di aggiornare.&lt;/p>
&lt;h3 id="instagram-to-nostr-v2-abilita-la-migrazione-dei-contenuti">Instagram to Nostr v2 Abilita la Migrazione dei Contenuti&lt;/h3>
&lt;p>Un nuovo strumento permette ai creatori di migrare i loro contenuti esistenti dalle piattaforme centralizzate a Nostr. &lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a> supporta l&amp;rsquo;importazione da Instagram, TikTok, Twitter e Substack senza richiedere accesso alle chiavi private dell&amp;rsquo;utente.&lt;/p>
&lt;p>Lo strumento affronta una barriera comune all&amp;rsquo;onboarding: gli utenti esitanti a ricominciare da zero su una nuova piattaforma possono ora preservare la loro cronologia di contenuti. Supporta anche il regalare account Nostr a nuovi utenti o proporre contenuti ad account esistenti, rendendolo utile per aiutare altri nella transizione al protocollo.&lt;/p>
&lt;h3 id="pod21-rete-di-stampa-3d-decentralizzata">Pod21: Rete di Stampa 3D Decentralizzata&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>) connette operatori di stampanti 3D con acquirenti usando Nostr per la coordinazione del marketplace. La piattaforma include un bot DM compatibile &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17 (Messaggi Diretti Privati)&lt;/a> che gestisce le interazioni del marketplace, permettendo agli acquirenti di richiedere stampe e negoziare con i maker attraverso messaggi diretti crittografati.&lt;/p>
&lt;p>I maker elencano la loro capacità e competenze di stampa; gli acquirenti sfogliano le inserzioni e avviano ordini tramite il bot. L&amp;rsquo;architettura segue un pattern simile ad altre applicazioni commerciali Nostr: scoperta basata su relay, messaggistica crittografata per la coordinazione degli ordini, e Lightning per il settlement. Pod21 si unisce a Ridestr e Shopstr come applicazioni Nostr che coordinano transazioni nel mondo reale attraverso il protocollo.&lt;/p>
&lt;h3 id="clawstr-social-network-con-agenti-ai">Clawstr: Social Network con Agenti AI&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a> si lancia come piattaforma ispirata a Reddit dove agenti AI creano e gestiscono community su Nostr. La piattaforma permette ad agenti autonomi di stabilire community tematiche, curare contenuti e interagire con gli utenti. Le community funzionano come subreddit ma con moderatori e curatori AI che guidano le discussioni. L&amp;rsquo;architettura usa il protocollo aperto di Nostr per interazioni agente-agente e agente-umano, stabilendo un nuovo modello per la formazione di community sui social media decentralizzati.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="ridestr-v020-roadflare-release">Ridestr v0.2.0: RoadFlare Release&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> ha rilasciato &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>, denominato &amp;ldquo;RoadFlare Release&amp;rdquo;, introducendo reti personali di rideshare. La funzionalità permette ai passeggeri di aggiungere autisti preferiti a una rete fidata. Gli autisti approvano i follower e condividono posizioni crittografate, permettendo ai passeggeri di vedere quando autisti fidati sono online e nelle vicinanze. Le richieste di corsa vanno direttamente agli autisti conosciuti.&lt;/p>
&lt;p>L&amp;rsquo;affidabilità dei pagamenti è migliorata con recupero automatico dell&amp;rsquo;escrow, migliore sincronizzazione wallet tra dispositivi e elaborazione pagamenti più veloce tramite polling progressivo. &lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a> aggiunge l&amp;rsquo;infrastruttura Fase 5-6 che supporta queste funzionalità. &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a> ha seguito con hotfix per bug della dialog di pagamento e il flusso &amp;ldquo;Aggiungi ai Preferiti&amp;rdquo; post-corsa.&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>, il client cross-platform di sondreb costruito per scala globale, ha rilasciato la versione 3.0 con una completa revisione dell&amp;rsquo;UI, nuovo logo e centinaia di fix. Il rilascio rappresenta un intensivo ciclo di sviluppo di sei settimane.&lt;/p>
&lt;p>La navigazione a doppio pannello è il cambiamento UX più grande, permettendo agli utenti desktop di ridurre il cambio di contesto quando si spostano tra liste, dettagli e thread. Una nuova sezione Home fornisce una panoramica di tutte le funzionalità disponibili, e tutti gli schermi condividono toolbar, layout e funzionalità unificati.&lt;/p>
&lt;p>La gestione delle liste è l&amp;rsquo;aggiornamento funzionale più significativo, integrato in tutta l&amp;rsquo;applicazione. Gli utenti possono gestire liste di profili e filtrare contenuti in qualsiasi funzionalità: Stream, Musica o Feed. Stanchi dello spam nei thread? Filtra per preferiti per vedere solo le loro risposte. Quick Zaps aggiunge zapping con un tap con valori configurabili. Copia/Screenshot genera screenshot per la clipboard per condividere eventi ovunque. Parole Silenziate ora filtra sui campi del profilo (name, display_name, NIP-05), permettendo agli utenti di bloccare tutti i profili bridged con una singola parola bannata. Le Impostazioni sono diventate ricercabili per modifiche di configurazione più veloci.&lt;/p>
&lt;p>Il rilascio aggiunge rendering delle richieste di pagamento BOLT11 e BOLT12, selezione dimensione testo e font, e messaggistica &amp;ldquo;Nota-a-Te-Stesso&amp;rdquo; nella sezione Messaggi con rendering di contenuti referenziati come articoli ed eventi. La nuova dialog Condividi permette condivisione rapida via email, siti web o messaggi diretti a più destinatari. Funzionalità aggiuntive includono set di emoji personalizzati, Interessi (liste hashtag come feed dinamici), Segnalibri, Feed Relay Pubblici e personalizzazione completa del menu inclusa quale opzione apre l&amp;rsquo;icona Nostria.&lt;/p>
&lt;p>Disponibile su Android, iOS, Windows e web su &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 di librerie &lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a> di hzrd149 ha rilasciato v5.1.0 su tutti i pacchetti. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a> aggiunge supporto per i metodi &lt;code>switch_relays&lt;/code> e &lt;code>ping&lt;/code> sui signer remoti Nostr Connect, utili per gestire le connessioni signer programmaticamente. &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> per caricamento asincrono parallelo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a> aggiunge argomenti 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> aggiorna il mapping event-to-store per gestire stringhe direttamente senza richiedere &lt;code>onlyEvents&lt;/code>.&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> (Nostr Army Knife) di fiatjaf ha raggiunto &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con fix di stabilità da mattn. Il rilascio previene panic quando gli URL mint mancano del separatore &lt;code>://&lt;/code>, valida gli errori del dateparser prima di usare i valori data e gestisce casi limite nel parsing dei tag AUTH challenge. Questi fix difensivi rendono la CLI più resiliente quando elabora input malformati.&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>, il signer desktop cross-platform, ha rilasciato &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.7">v0.3.7&lt;/a> aggiungendo supporto Nostr App Browser con firma &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07 (Interfaccia Estensione Browser)&lt;/a>. Il rilascio registra eventi di crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04 (Messaggi Diretti Crittografati)&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (Crittografia Versionata)&lt;/a>, permettendo agli utenti di tracciare quali applicazioni richiedono operazioni di crittografia. Il segmento browser ora filtra per piattaforma per mostrare solo app 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>, l&amp;rsquo;app di messaggistica offline-capable che usa Nostr e mesh Bluetooth, ha rilasciato &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.1">v1.5.1&lt;/a> con hardening di sicurezza iOS. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a> valida le firme degli eventi Nostr prima dell&amp;rsquo;elaborazione, rifiuta giftwrap e pacchetti embedded invalidi, limita i payload sovradimensionati e blocca gli ID mittente BLE announce spoofati. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/998">PR #998&lt;/a> corregge l&amp;rsquo;autenticazione mesh BLE iOS legando gli ID mittente agli UUID di connessione, prevenendo lo spoofing di identità nella rete mesh. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a> aggiunge rate limiting delle notifiche per prevenire flood di peer discovery quando più dispositivi mesh sono nelle vicinanze.&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> ha rilasciato &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.39.2%2B6495">v1.39.2&lt;/a> aggiungendo supporto &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect tramite &lt;a href="https://github.com/keychat-io/keychat-app/pull/148">PR #148&lt;/a>. Gli utenti possono ora connettere wallet Lightning esterni per i pagamenti all&amp;rsquo;interno dell&amp;rsquo;app di messaggistica. Il rilascio aggiunge anche notifiche desktop 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>, il client Flutter cross-platform, ha rilasciato &lt;a href="https://github.com/haorendashu/nostrmo/releases/tag/3.5.0">v3.5.0&lt;/a> rivedendo il suo sistema di feed. L&amp;rsquo;aggiornamento sostituisce i feed fissi con alternative personalizzabili: Feed Generale, Feed Menzioni e Feed Relay, ciascuno configurabile attraverso nuove pagine di modifica. Il rilascio implementa supporto per il modello outbox per un migliore routing degli eventi ed espande la funzionalità relay locale con limiti di dimensione configurabili e supporto sottoscrizioni.&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>, l&amp;rsquo;app di live streaming per Nostr, ha rilasciato &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.11.1">v0.11.1&lt;/a> con capacità di registrazione e VOD. L&amp;rsquo;aggiornamento aggiunge indicatori di presenza nella stanza che mostrano chi sta guardando gli stream, conversazioni chat threaded per una migliore organizzazione delle discussioni e supporto Nostr Connect su iOS tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>. Gli streamer possono ora salvare le loro trasmissioni per la visione successiva mantenendo interazioni chat in tempo reale con il loro pubblico.&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>, l&amp;rsquo;app per chiamate audio e video per Nostr, ha rilasciato &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.0-release">v0.5.0&lt;/a> con gruppi di contatti per organizzare le chiamate per categoria, gestione relay per l&amp;rsquo;ottimizzazione delle connessioni e impostazioni server ICE configurabili per una migliore traversal NAT. Il rilascio aggiunge anche supporto per la modalità scura. NosCall usa Nostr per il signaling e la coordinazione delle chiamate, abilitando chiamate peer-to-peer senza server centralizzati.&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>, il client video short-form looping di rabble, ha rilasciato &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.4">1.0.4&lt;/a> come pre-release alpha Android prima della sua sottomissione a Zapstore. Il rilascio si concentra sul test della gestione delle chiavi Nostr, incluso import nsec, firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a> con nsecBunker e Amber, e gestione URL nostrconnect://. Il team sta sollecitando feedback sulla compatibilità relay e l&amp;rsquo;interoperabilità video con altri client. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1265">PR #1265&lt;/a> corregge la gestione dei percorsi file iOS che causava l&amp;rsquo;inutilizzabilità dei clip video dopo gli aggiornamenti dell&amp;rsquo;app memorizzando percorsi relativi invece di percorsi container assoluti. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1251">PR #1251&lt;/a> corregge problemi di navigazione quando si visualizzano profili dai commenti.&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> ha rilasciato &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.2">v0.12.2&lt;/a> come rilascio stabile, consolidando i &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#zeus-v0122-beta---fix-nwc">fix NWC coperti nelle edizioni precedenti&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>) ha lanciato &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo per iOS&lt;/a> su &lt;a href="https://testflight.apple.com/join/72hjQe3J">TestFlight&lt;/a>, espandendo la firma a soglia ai dispositivi Apple. Frostr usa firme FROST (Flexible Round-Optimized Schnorr Threshold) per dividere le chiavi nsec in quote distribuite tra dispositivi, abilitando firma k-di-n con tolleranza ai guasti. Gli utenti che si uniscono in &amp;ldquo;demo mode&amp;rdquo; partecipano a un esperimento live di firma a soglia 2-di-2, dimostrando le capacità di coordinazione in tempo reale del protocollo. Il rilascio iOS si unisce a &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo per Android&lt;/a> (v0.1.2), rilasciato a dicembre con supporto &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55 (Android Signer)&lt;/a> per richieste di firma cross-app. Entrambi i client mobile complementano &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo desktop&lt;/a> e l&amp;rsquo;estensione browser &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="damus-implementa-suggerimenti-relay-nip-19">Damus Implementa Suggerimenti Relay NIP-19&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> ha unito &lt;a href="https://github.com/damus-io/damus/pull/3477">PR #3477&lt;/a>, implementando il consumo di suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> per il recupero degli eventi. La funzionalità permette di visualizzare note su relay non nel pool configurato dell&amp;rsquo;utente estraendo suggerimenti da riferimenti &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10 (Thread di Risposta)&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18 (Repost)&lt;/a> e NIP-19. L&amp;rsquo;implementazione usa connessioni relay effimere con cleanup reference-counted, evitando l&amp;rsquo;espansione permanente del pool di relay.&lt;/p>
&lt;p>Fix aggiuntivi includono parsing di Lightning invoice (&lt;a href="https://github.com/damus-io/damus/pull/3566">PR #3566&lt;/a>), caricamento vista wallet (&lt;a href="https://github.com/damus-io/damus/pull/3554">PR #3554&lt;/a>), timing lista relay (&lt;a href="https://github.com/damus-io/damus/pull/3553">PR #3553&lt;/a>) e precaricamento profili per ridurre il &amp;ldquo;popping&amp;rdquo; visivo (&lt;a href="https://github.com/damus-io/damus/pull/3550">PR #3550&lt;/a>). Una &lt;a href="https://github.com/damus-io/damus/pull/3590">bozza PR #3590&lt;/a> mostra il supporto DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> in corso.&lt;/p>
&lt;h3 id="primal-android-rilascia-crittografia-nwc">Primal Android Rilascia Crittografia NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha avuto una settimana molto attiva con 18 PR unite focalizzate sull&amp;rsquo;infrastruttura wallet. L&amp;rsquo;app ora si integra con Spark, il protocollo Lightning self-custodial di Lightspark. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> aggiunge supporto crittografia NWC, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/872">PR #872&lt;/a> invia eventi info NWC quando le connessioni si stabiliscono.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/870">PR #870&lt;/a> abilita l&amp;rsquo;export CSV per le transazioni wallet, utile per contabilità e fini fiscali. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/716">PR #716&lt;/a> aggiunge uno switcher account locale nell&amp;rsquo;Editor Note. Molteplici fix di ripristino wallet (&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>) affrontano casi limite per utenti con configurazioni wallet non-Spark.&lt;/p>
&lt;h3 id="marmot-typescript-sdk-aggiunge-cronologia-messaggi">Marmot TypeScript SDK Aggiunge Cronologia Messaggi&lt;/h3>
&lt;p>L&amp;rsquo;implementazione TypeScript del protocollo &lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a> continua lo sviluppo. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR #38&lt;/a> di hzrd149 implementa la persistenza della cronologia messaggi con paginazione per l&amp;rsquo;applicazione chat di riferimento, mentre &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/39">PR #39&lt;/a> migliora l&amp;rsquo;ergonomia della libreria.&lt;/p>
&lt;p>Sul lato Rust, &lt;a href="https://github.com/marmot-protocol/mdk/pull/161">PR #161&lt;/a> implementa gestione dello stato riprovabile per preservare il contesto dei messaggi in caso di fallimento, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/164">PR #164&lt;/a> passa a std::sync::Mutex per evitare panic tokio con SQLite. Il backend whitenoise-rs aggiunge &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">integrazione 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">upgrade a MDK e 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 notifiche in tempo reale tramite &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/460">PR #460&lt;/a> con tipi evento NewMessage e GroupInvite.&lt;/p>
&lt;h3 id="haven-aggiunge-refresh-periodico-wot">HAVEN Aggiunge Refresh Periodico WoT&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, il relay personale, ha unito &lt;a href="https://github.com/bitvora/haven/pull/108">PR #108&lt;/a> aggiungendo refresh periodico &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>. La funzionalità assicura che i punteggi di fiducia rimangano aggiornati mentre i grafi sociali degli utenti evolvono, migliorando l&amp;rsquo;accuratezza del filtraggio spam nel tempo.&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 libreria JavaScript core, ha ricevuto molteplici miglioramenti questa settimana. I commit includono un &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/c2423f7f31853d97fef2e3d649204cec328e81d5">fix per il parsing degli hashtag dopo le newline&lt;/a> nelle menzioni &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27 (Riferimenti nelle Note di Testo)&lt;/a>, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/ab802c8dbe35d29feb732ba54e82a346c21c32e2">pruning automatico di oggetti relay rotti con tracking idle&lt;/a> per cleanup delle connessioni, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/be9b91318fea6a0cb154b8734a15b50a4c1e7638">rimozione della coda messaggi&lt;/a> per ottimizzazione delle prestazioni single-threaded, e &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/05b1fba5113182ac0aa3c72d1f511cd956a7c139">export dei file sorgente&lt;/a> per migliori import 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> ha rilasciato &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/26abea24726ed844fdd091744ac9f768f1a530a0">beta.71&lt;/a> con un &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/33e759508bc656dc45d3d77c741edf581af323f3">fix per la riconnessione dopo cicli sleep/wake del dispositivo e gestione connessioni stale&lt;/a>, affrontando problemi di affidabilità per le applicazioni mobile.&lt;/p>
&lt;h3 id="notedeck">Notedeck&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop del team Damus, ha una &lt;a href="https://github.com/damus-io/notedeck/pull/1279">PR aperta #1279&lt;/a> che aggiunge un visualizzatore &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34 (Collaborazione Git)&lt;/a>. Questo permetterebbe di sfogliare repository git, patch e issue pubblicati sui relay Nostr direttamente nel client, rendendo Notedeck un potenziale front-end per workflow basati su ngit.&lt;/p>
&lt;h3 id="njump">njump&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, il gateway web Nostr, ha aggiunto supporto per due tipi di evento &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51 (Liste)&lt;/a> tramite &lt;a href="https://github.com/fiatjaf/njump/pull/152">PR #152&lt;/a>. Il gateway ora renderizza Follow Sets kind:30000, che sono raggruppamenti categorizzati di utenti che i client possono visualizzare in contesti diversi, e Starter Packs kind:39089, che sono collezioni di profili curate progettate per la condivisione e il following di gruppo. Queste aggiunte permettono a njump di visualizzare liste curate dalla community quando gli utenti condividono link nevent.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android, ha corretto un bug che impediva la condivisione video dalla vista player (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1695">PR #1695&lt;/a>). L&amp;rsquo;opzione &amp;ldquo;Condividi video&amp;rdquo; non appariva perché il parametro content non veniva passato al componente pulsanti di controllo. Gli utenti possono ora condividere contenuti video Nostr ad altre app direttamente dal player. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1693">PR #1693&lt;/a> corregge crash di deserializzazione Jackson JSON che si verificavano durante il parsing di certi eventi malformati.&lt;/p>
&lt;h3 id="jumble">Jumble&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, il client web focalizzato sul browsing dei feed relay, ha aggiunto upload di file audio tramite clipboard in &lt;a href="https://github.com/CodyTseng/jumble/pull/743">PR #743&lt;/a>. Gli utenti possono ora incollare file audio direttamente nell&amp;rsquo;editor post, che li carica sui media server configurati e incorpora l&amp;rsquo;URL nella nota. La funzionalità rispecchia la funzionalità esistente di incolla immagini.&lt;/p>
&lt;h3 id="flotilla">Flotilla&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a>, il client community &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29 (Gruppi Basati su Relay)&lt;/a> di hodlbod, ha rilasciato notifiche tramite &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>. L&amp;rsquo;aggiornamento rifà il sistema di alert da polling basato su anchor a notifiche pull locali per web e notifiche push per mobile. L&amp;rsquo;architettura implementa lo standard proposto NIP-9a (vedi &lt;a href="https://github.com/nostr-protocol/nips/pull/2194">PR #2194&lt;/a> sotto), dove gli utenti registrano callback webhook con i relay e ricevono payload evento crittografati quando i filtri corrispondono.&lt;/p>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;applicazione form nativa Nostr, ha aggiunto import form e supporto form crittografati in &lt;a href="https://github.com/abh3po/nostr-forms/pull/422">PR #422&lt;/a>. Gli utenti possono ora importare form esistenti tramite un link di risposta o altre istanze Formstr. La funzionalità di crittografia permette ai creatori di form di restringere le risposte in modo che solo i destinatari designati possano leggere le sottomissioni, utile per sondaggi che raccolgono informazioni sensibili.&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>), costruito su &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, ha aggiunto condivisione DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per i sondaggi tramite &lt;a href="https://github.com/abh3po/nostr-polls/pull/141">PR #141&lt;/a> e &lt;a href="https://github.com/abh3po/nostr-polls/pull/142">PR #142&lt;/a>. Gli utenti possono ora condividere sondaggi direttamente ai contatti attraverso messaggi diretti crittografati.&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 collezione di schema di verifica JSON per eventi Nostr, ha aggiunto copertura &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a> tramite &lt;a href="https://github.com/nostrability/schemata/pull/59">PR #59&lt;/a>. L&amp;rsquo;aggiornamento include schema per eventi kind 13 (seal) e kind 1059 (gift wrap), complementando la copertura schema &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> esistente.&lt;/p>
&lt;h3 id="vector">Vector&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger desktop privacy-focused che usa &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per crittografia zero-metadata, ha unito &lt;a href="https://github.com/VectorPrivacy/Vector/pull/39">PR #39&lt;/a> introducendo ottimizzazioni di prestazioni accelerate SIMD. La codifica hex gira 65x più veloce, la generazione preview immagini fino a 38x più veloce, e le ricerche messaggi 184x più veloci tramite indicizzazione binary search. La PR aggiunge intrinsics ARM64 NEON per Apple Silicon e x86_64 AVX2/SSE2 con rilevamento runtime per Windows e Linux. L&amp;rsquo;uso di memoria è calato con struct messaggi ridotte da 472 a 128 byte e storage npub tagliato del 99.6% attraverso interning.&lt;/p>
&lt;p>Vector v0.3.0 (Dicembre 2025) ha integrato &lt;a href="https://github.com/marmot-protocol/mdk">MDK (Marmot Development Kit)&lt;/a> per messaggistica di gruppo basata su protocollo MLS, portando gruppi crittografati end-to-end con forward secrecy al client. La condivisione file MIP-04 ora gestisce attachment imeta per gruppi MLS, progettata per interoperabilità con &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#marmot-protocol-updates">White Noise&lt;/a>. Il rilascio ha anche introdotto una piattaforma Mini Apps con giochi multiplayer P2P basati su WebXDC, un app store decentralizzato chiamato The Nexus, integrazione wallet PIVX per pagamenti in-app, editing messaggi con tracking completo della cronologia e riduzione memoria 4x durante gli upload di immagini.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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: Supporto Hold Invoice&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a> ora supporta hold invoice, abilitando workflow di pagamento avanzati dove i riceventi devono esplicitamente settlare o cancellare i pagamenti. La PR aggiunge tre nuovi metodi RPC: &lt;code>make_hold_invoice&lt;/code> crea un hold invoice usando preimage e payment hash pre-generati, &lt;code>settle_hold_invoice&lt;/code> reclama il pagamento fornendo la preimage originale, e &lt;code>cancel_hold_invoice&lt;/code> rifiuta il pagamento usando il suo payment hash. Una nuova notifica &lt;code>hold_invoice_accepted&lt;/code> scatta quando un pagante blocca il pagamento. Questo abilita casi d&amp;rsquo;uso come pay-to-unlock content, sistemi escrow marketplace e payment gating. Le implementazioni sono già in corso in &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> e &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 Minuscole&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05 (Verifica del Dominio)&lt;/a> ora richiede esplicitamente minuscole sia per le chiavi pubbliche esadecimali che per i nomi locali nel file &lt;code>nostr.json&lt;/code>. Questo era implicito nella spec ma non dichiarato, causando problemi di interoperabilità quando alcune implementazioni usavano case misto mentre altre normalizzavano a minuscole. I client che validano identificatori NIP-05 dovrebbero ora rifiutare qualsiasi risposta &lt;code>nostr.json&lt;/code> contenente caratteri maiuscoli in chiavi o nomi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2205">NIP-73: Codici Paese&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (Geotag)&lt;/a> ora supporta codici paese ISO 3166 come alternativa ai geohash. Gli eventi possono includere tag &lt;code>[&amp;quot;g&amp;quot;, &amp;quot;US&amp;quot;, &amp;quot;countryCode&amp;quot;]&lt;/code> per indicare posizione a livello paese senza richiedere coordinate precise. Questo abilita filtraggio e scoperta contenuti basati sul paese per applicazioni dove la posizione esatta è non necessaria o indesiderata. La PR ha anche aggiunto un esempio geohash mancante alla documentazione spec.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&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: Applicazioni Software&lt;/a>&lt;/strong> - franzap ha annunciato un importante aggiornamento a questa specifica bozza, che definisce come le applicazioni software vengono distribuite via Nostr usando eventi release kind 30063. L&amp;rsquo;aggiornamento ora copre approssimativamente il 98% delle piattaforme dispositivo globalmente, incluso macOS, Linux, Windows, FreeBSD, ambienti WASM, estensioni VS Code, estensioni Chrome e Web Bundles/PWA. Il team si sta concentrando poi su Android, PWA e supporto iOS, invitando gli sviluppatori a convergere su questo standard condiviso. Zapstore pianifica di migrare al nuovo formato nelle prossime settimane.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74: Podcast&lt;/a>&lt;/strong> - Definisce eventi addressable per show podcast (kind 30074) ed episodi (kind 30075). Gli show includono metadati come titolo, descrizione, categorie e immagini copertina. Gli episodi referenziano il loro show genitore e includono URL enclosure, durate e marcatori capitoli. La spec si integra con gli standard metadati Podcasting 2.0 e include tag value per monetizzazione V4V (value-for-value) via Lightning. Piattaforme come &lt;a href="https://transmit.fm">transmit.fm&lt;/a>, una piattaforma di pubblicazione podcast nativa Nostr, possono pubblicare direttamente sui relay usando questo formato, permettendo ai podcaster di distribuire contenuti senza intermediari.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2207">NIP-FR: Note Solo-Amici&lt;/a>&lt;/strong> - Propone un meccanismo per pubblicare note visibili solo a una lista di amici definita dall&amp;rsquo;utente usando una chiave simmetrica condivisa chiamata ViewKey. L&amp;rsquo;autore crittografa le note (kind 2044) con il ViewKey usando NIP-44. Il ViewKey stesso viene distribuito a ciascun amico una sola volta tramite &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>. Gli amici che possiedono il ViewKey possono decifrare e leggere le note; tutti gli altri vedono solo testo cifrato. Quando l&amp;rsquo;autore rimuove un amico, il ViewKey viene ruotato: una nuova chiave viene generata e ridistribuita a tutti gli amici rimanenti tramite gift wrap, assicurando che l&amp;rsquo;amico rimosso perda l&amp;rsquo;accesso ai post futuri. Questo approccio separa la crittografia del contenuto (simmetrica, efficiente) dalla distribuzione delle chiavi (asimmetrica, per-amico), mantenendo il protocollo leggero abilitando una funzionalità privacy frequentemente richiesta.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/1a451c1581888215ae5c311d36c8a7c7d9e5e81f1f4010de4afaf7fcbd553e90">NIP-DB: Interfaccia Database Eventi Nostr nel Browser&lt;/a>&lt;/strong> (&lt;a href="https://github.com/hzrd149/nostr-bucket/blob/master/nip.md">spec&lt;/a>) - Propone un&amp;rsquo;interfaccia standard &lt;code>window.nostrdb&lt;/code> per estensioni browser che forniscono storage eventi Nostr locale. L&amp;rsquo;API include metodi per aggiungere eventi, query per ID o filtro, conteggio match e sottoscrizione agli aggiornamenti. Le applicazioni web possono usare questa interfaccia per leggere da eventi cached localmente senza fare richieste relay, riducendo banda e latenza. L&amp;rsquo;estensione browser &lt;a href="https://github.com/hzrd149/nostr-bucket">nostr-bucket&lt;/a> di hzrd149 fornisce un&amp;rsquo;implementazione di riferimento, iniettando l&amp;rsquo;interfaccia in tutti i tab del browser. Una &lt;a href="https://github.com/hzrd149/window.nostrdb.js">libreria polyfill&lt;/a> complementare implementa la stessa API usando IndexedDB per ambienti senza l&amp;rsquo;estensione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/237667820943d1c8bbe7ab7732623ae51b337f177776ece439d4a8be84708eb7">TRUSTed Filters&lt;/a>&lt;/strong> - Una suite di cinque proposte correlate per la curation decentralizzata dei contenuti, costruendo sulla &lt;a href="https://github.com/nostr-protocol/nips/pull/1534">PR #1534 Trusted Assertions unita&lt;/a> di vitorpamplona. La specifica core introduce eventi kind 17570 per dichiarare Trust Provider Preferences, permettendo agli utenti di specificare quali servizi fidano per filtraggio e ranking degli eventi. I trust provider pubblicano assertions (kind 37571), statistiche (kind 37572) e rankings (kind 37573) a cui i client possono sottoscriversi. Il sistema usa un&amp;rsquo;architettura plugin con tag W/w per specificare tipi di filtro e trasformazioni. Questo permette a operazioni computazionalmente costose come spam detection, reputation scoring e content ranking di girare su infrastruttura dedicata mentre gli utenti mantengono controllo su quali provider fidano. La suite include spec separate per filter presets, user rankings, trusted events e definizioni plugin.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">NIP-9a: Notifiche Push&lt;/a>&lt;/strong> - hodlbod propone uno standard per notifiche push basate su relay usando eventi registrazione kind 30390. Gli utenti creano una registrazione contenente filtri per eventi che vogliono ricevere e un URL callback webhook. La registrazione è crittografata alla pubkey del relay (dal suo campo &lt;code>self&lt;/code> NIP-11). Quando si verificano eventi corrispondenti, i relay POSTano al callback con l&amp;rsquo;ID evento (plaintext per deduplicazione) e l&amp;rsquo;evento stesso (crittografato NIP-44 all&amp;rsquo;utente). Questa architettura permette ai relay di pushare notifiche proteggendo il contenuto degli eventi dai server push intermediari. La &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a> di Flotilla implementa questo standard.&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 protocollo decentralizzato per lavoro a contratto con escrow usando eventi kind 33400. Il sistema definisce tre ruoli: gli arbiter annunciano disponibilità e termini, i patron creano task finanziati con Bitcoin in escrow, e i free agent completano lavoro per reclamare il pagamento. Gli arbiter risolvono le dispute quando necessario. Il protocollo abilita coordinazione di lavoro freelance trustless dove i fondi sono bloccati fino a che i deliverable sono accettati o l&amp;rsquo;arbitrato conclude.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-47-nostr-wallet-connect">NIP Deep Dive: NIP-47 (Nostr Wallet Connect)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> definisce Nostr Wallet Connect (NWC), un protocollo per il controllo remoto di wallet Lightning usando Nostr come layer di comunicazione. Con l&amp;rsquo;aggiunta del supporto hold invoice di questa settimana, NWC ora copre l&amp;rsquo;intera gamma di operazioni Lightning.&lt;/p>
&lt;p>Il protocollo funziona attraverso uno scambio semplice. Un&amp;rsquo;applicazione wallet pubblica un evento &amp;ldquo;wallet info&amp;rdquo; (kind 13194) che descrive le sue capacità. Le applicazioni client inviano richieste crittografate (kind 23194) chiedendo al wallet di eseguire operazioni come pagare invoice, creare invoice o controllare saldi. Il wallet risponde con risultati crittografati (kind 23195).&lt;/p>
&lt;p>NWC usa crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> tra client e wallet, con una keypair dedicata per le operazioni wallet, mantenendola separata dall&amp;rsquo;identità principale dell&amp;rsquo;utente. Questa separazione significa che compromettere una connessione NWC non espone l&amp;rsquo;identità Nostr dell&amp;rsquo;utente.&lt;/p>
&lt;p>&lt;strong>Metodi Supportati:&lt;/strong>&lt;/p>
&lt;p>La spec definisce metodi per operazioni Lightning core: &lt;code>pay_invoice&lt;/code> invia pagamenti, &lt;code>make_invoice&lt;/code> genera invoice per ricevere, &lt;code>lookup_invoice&lt;/code> controlla lo stato del pagamento, &lt;code>get_balance&lt;/code> restituisce il saldo wallet, e &lt;code>list_transactions&lt;/code> fornisce la cronologia pagamenti. I nuovi &lt;code>pay_keysend&lt;/code> appena uniti abilitano pagamenti senza invoice, e &lt;code>hold_invoice&lt;/code> supporta pagamenti condizionali.&lt;/p>
&lt;p>&lt;strong>Eventi di Esempio:&lt;/strong>&lt;/p>
&lt;p>Il servizio wallet pubblica un evento info (kind 13194) pubblicizzando le sue capacità:&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 servizio wallet&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 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 servizio wallet&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 client invia una richiesta crittografata (kind 23194) per pagare un invoice:&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 effimera client dall&amp;#39;URI connection secret&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;NIP-44 crittografato: {\&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 servizio wallet&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 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 chiave effimera client&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>Il servizio wallet risponde (kind 23195) con il risultato del pagamento:&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 servizio wallet&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;NIP-44 crittografato: {\&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 effimera client&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 evento richiesta&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 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 servizio wallet&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>Il tag &lt;code>e&lt;/code> nella risposta referenzia la richiesta originale, permettendo ai client di abbinare le risposte alle loro richieste.&lt;/p>
&lt;p>&lt;strong>Hold Invoice:&lt;/strong>&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/1913">PR #1913&lt;/a> di questa settimana ha aggiunto supporto hold invoice, abilitando pagamenti stile escrow. A differenza degli invoice standard dove il ricevente reclama immediatamente il pagamento rilasciando la preimage, gli hold invoice permettono al ricevente di differire questa decisione. Quando un pagante invia a un hold invoice, i fondi si bloccano lungo il percorso di pagamento. Il ricevente poi sceglie se settlare (rilasciare la preimage e reclamare i fondi) o cancellare (rifiutare il pagamento, restituendo i fondi al pagante). Se nessuna azione avviene, il pagamento va in timeout e i fondi ritornano automaticamente. La PR aggiunge tre metodi NWC: &lt;code>make_hold_invoice&lt;/code>, &lt;code>settle_hold_invoice&lt;/code> e &lt;code>cancel_hold_invoice&lt;/code>, più una notifica &lt;code>hold_invoice_accepted&lt;/code>. Questo meccanismo alimenta applicazioni come l&amp;rsquo;escrow rideshare di Ridestr e la risoluzione dispute marketplace.&lt;/p>
&lt;p>&lt;strong>Implementazioni Attuali:&lt;/strong>&lt;/p>
&lt;p>I wallet principali supportano NWC: Zeus, Alby e Primal (dalla &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> di questa settimana) tutti implementano supporto lato wallet. Sul lato client, Damus, Amethyst e la maggior parte dei client Nostr principali possono connettersi a wallet NWC per zapping e pagamenti.&lt;/p>
&lt;p>Il protocollo abilita una separazione delle responsabilità: gli utenti possono far girare il loro wallet su un dispositivo mentre interagiscono con Nostr da un altro, con i relay Nostr che servono come canale di comunicazione. Questa architettura significa che i client mobile non devono detenere fondi direttamente, migliorando la sicurezza mantenendo l&amp;rsquo;infrastruttura wallet separata dai client social.&lt;/p>
&lt;p>&lt;strong>Considerazioni sulla Sicurezza:&lt;/strong>&lt;/p>
&lt;p>Le connessioni NWC dovrebbero essere trattate come sensibili. Mentre la crittografia protegge il contenuto dei messaggi, la pubkey wallet e il connection secret devono essere custoditi. Le applicazioni dovrebbero permettere agli utenti di revocare connessioni e impostare limiti di spesa. Il protocollo supporta restrizioni di capacità, così i wallet possono limitare quali operazioni una particolare connessione può eseguire.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-59-gift-wrap">NIP Deep Dive: NIP-59 (Gift Wrap)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> definisce un protocollo per incapsulare qualsiasi evento Nostr in più livelli di crittografia, nascondendo l&amp;rsquo;identità del mittente dai relay e dagli osservatori. Le proposte di questa settimana per note solo-amici (NIP-FR) e notifiche push (NIP-9a) entrambe si basano sul gift wrapping, rendendolo una primitiva privacy fondamentale da comprendere.&lt;/p>
&lt;p>&lt;strong>I Tre Livelli:&lt;/strong>&lt;/p>
&lt;p>Il gift wrapping usa tre strutture annidate:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rumor&lt;/strong> (evento non firmato): Il contenuto originale come evento Nostr senza firma. Il rumor non può essere inviato direttamente ai relay perché i relay rifiutano eventi non firmati.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Seal&lt;/strong> (kind 13): Il rumor è crittografato usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e posto in un evento kind 13. Il seal E&amp;rsquo; firmato dalla chiave reale dell&amp;rsquo;autore. Questa è la prova crittografica di paternità.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gift Wrap&lt;/strong> (kind 1059): Il seal è crittografato e posto in un evento kind 1059 firmato da una keypair casuale, usa-e-getta. Il gift wrap include un tag &lt;code>p&lt;/code> per il routing al destinatario.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Un Malinteso Comune: La Negabilità&lt;/strong>&lt;/p>
&lt;p>La spec menziona che i rumor non firmati forniscono &amp;ldquo;negabilità&amp;rdquo;, ma questo è fuorviante. Il livello seal E&amp;rsquo; firmato dal vero autore. Quando il destinatario decritta il gift wrap e poi il seal, ha prova crittografica di chi ha inviato il messaggio. Il destinatario potrebbe persino costruire una prova zero-knowledge rivelando l&amp;rsquo;identità del mittente senza esporre la propria chiave privata.&lt;/p>
&lt;p>Quello che il gift wrap in realtà fornisce è &lt;strong>privacy del mittente dagli osservatori&lt;/strong>: i relay e le terze parti non possono determinare chi ha inviato il messaggio perché vedono solo il gift wrap firmato da una chiave casuale. Ma il destinatario sa sempre, e può provarlo.&lt;/p>
&lt;p>&lt;strong>Eventi di Esempio:&lt;/strong>&lt;/p>
&lt;p>Ecco la struttura completa a tre livelli dalla spec (invio &amp;ldquo;Vai alla festa stasera?&amp;rdquo;):&lt;/p>
&lt;p>Il rumor (non firmato, non può essere pubblicato sui 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;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;Are you going to the party tonight?&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>Il seal (kind 13, firmato dal vero autore, contiene rumor crittografato):&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>Il gift wrap (kind 1059, firmato da chiave effimera casuale, contiene seal crittografato):&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>Nota: la &lt;code>pubkey&lt;/code> del seal è il vero autore (&lt;code>611df01...&lt;/code>), mentre la &lt;code>pubkey&lt;/code> del gift wrap è una chiave casuale usa-e-getta (&lt;code>18b1a75...&lt;/code>). I relay vedono solo il gift wrap, quindi non possono attribuire il messaggio al vero autore.&lt;/p>
&lt;p>&lt;strong>Cosa Protegge Ogni Livello:&lt;/strong>&lt;/p>
&lt;p>Il rumor non è firmato e non può essere pubblicato direttamente sui relay. Il seal è firmato dal vero autore e prova la paternità al destinatario. Il gift wrap è firmato da una chiave casuale usa-e-getta, nascondendo il vero autore dai relay e dagli osservatori. Solo il destinatario può decrittare attraverso entrambi i livelli per raggiungere il contenuto originale e verificare la firma dell&amp;rsquo;autore sul seal.&lt;/p>
&lt;p>&lt;strong>Applicazioni Attuali:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17 (Messaggi Diretti Privati)&lt;/a> usa gift wrap per DM crittografati, sostituendo il vecchio schema NIP-04. Il proposto NIP-FR (note solo per amici) usa il gift wrapping per distribuire ViewKeys agli amici, che poi decifrano le note cifrate con quelle chiavi. NIP-9a (notifiche push) critta i payload di notifica usando principi gift wrap.&lt;/p>
&lt;p>&lt;strong>Protezione dei Metadati:&lt;/strong>&lt;/p>
&lt;p>I timestamp dovrebbero essere randomizzati per contrastare l&amp;rsquo;analisi temporale. I relay dovrebbero richiedere AUTH prima di servire eventi kind 1059 e servirli solo al destinatario marcato. Quando si invia a più destinatari, creare gift wrap separati per ciascuno.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #7</title><link>https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Ridestr porta il ridesharing decentralizzato su Nostr con pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e condivisione crittografata della posizione. Pomade introduce il recupero basato su email per i firmatari multisig. Damus implementa &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per una sincronizzazione affidabile dei DM. L&amp;rsquo;app desktop di Amethyst aggiunge ricerca, segnalibri e zap. Amber v4.1.1 mostra i punteggi di fiducia dei relay. Marmot unisce MIP-03 e costruisce un&amp;rsquo;app di chat di riferimento in TypeScript. diVine aggiunge l&amp;rsquo;autenticazione QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto alle menzioni. Nuove proposte NIP affrontano la gestione delle community, la sincronizzazione basata su sequenze e l&amp;rsquo;archiviazione crittografata dei file. Diamo anche uno sguardo a cinque anni di gennaio di Nostr, tracciando l&amp;rsquo;evoluzione del protocollo da una manciata di primi utilizzatori nel 2021, attraverso l&amp;rsquo;esplosivo lancio di Damus sull&amp;rsquo;App Store nel 2023, fino all&amp;rsquo;ecosistema client in maturazione del 2025.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Ridestr porta il ridesharing decentralizzato su Nostr con pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e condivisione crittografata della posizione. Pomade introduce il recupero basato su email per i firmatari multisig. Damus implementa &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per una sincronizzazione affidabile dei DM. L&amp;rsquo;app desktop di Amethyst aggiunge ricerca, segnalibri e zap. Amber v4.1.1 mostra i punteggi di fiducia dei relay. Marmot unisce MIP-03 e costruisce un&amp;rsquo;app di chat di riferimento in TypeScript. diVine aggiunge l&amp;rsquo;autenticazione QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto alle menzioni. Nuove proposte NIP affrontano la gestione delle community, la sincronizzazione basata su sequenze e l&amp;rsquo;archiviazione crittografata dei file. Diamo anche uno sguardo a cinque anni di gennaio di Nostr, tracciando l&amp;rsquo;evoluzione del protocollo da una manciata di primi utilizzatori nel 2021, attraverso l&amp;rsquo;esplosivo lancio di Damus sull&amp;rsquo;App Store nel 2023, fino all&amp;rsquo;ecosistema client in maturazione del 2025.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="ridestr-porta-il-ridesharing-decentralizzato-su-nostr">Ridestr Porta il Ridesharing Decentralizzato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> sta sviluppando un&amp;rsquo;applicazione di ridesharing peer-to-peer costruita interamente su Nostr, che consente transazioni dirette tra autisti e passeggeri con pagamenti in Bitcoin e &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>. Il protocollo utilizza tipi di evento personalizzati (30173, 3173-3175, 30180/30181) per coordinare le corse mantenendo la privacy attraverso la divulgazione progressiva della posizione e la crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;p>Il sistema funziona attraverso un flusso attentamente coreografato: gli autisti trasmettono la disponibilità usando posizioni codificate in geohash (precisione ~5km) tramite eventi kind 30173, i passeggeri richiedono corse con stime delle tariffe attraverso kind 3173, e i pagamenti sono protetti usando token escrow HTLC prima dell&amp;rsquo;inizio della corsa. La privacy della posizione è preservata attraverso la divulgazione progressiva, dove i dettagli del ritiro vengono rivelati solo quando gli autisti arrivano e le destinazioni sono condivise dopo la verifica del PIN. Tutta la comunicazione tra le parti utilizza la crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per la privacy.&lt;/p>
&lt;p>Ridestr implementa la sicurezza dei pagamenti attraverso escrow HTLC con firme P2PK. Quando un passeggero accetta l&amp;rsquo;offerta di un autista, blocca i token &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> con un hash di pagamento che solo l&amp;rsquo;autista può reclamare dopo il completamento della corsa. Il protocollo attualmente opera con un&amp;rsquo;architettura single-mint, richiedendo che passeggeri e autisti utilizzino lo stesso mint &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>. L&amp;rsquo;implementazione Android basata su Kotlin gestisce la verifica delle prove e il recupero delle prove obsolete attraverso i controlli di stato NUT-07.&lt;/p>
&lt;p>Ridestr affronta sfide che la maggior parte delle applicazioni Nostr evita: coordinamento della posizione in tempo reale, escrow dei pagamenti con risoluzione delle dispute e sistemi di reputazione per interazioni nel mondo fisico. Il progetto è in beta e dimostra che il modello di eventi di Nostr può supportare marketplace di servizi peer-to-peer, non solo la condivisione di contenuti.&lt;/p>
&lt;h3 id="pomade-lancia-il-sistema-di-recupero-alpha-per-firmatari-multisig">Pomade Lancia il Sistema di Recupero Alpha per Firmatari Multisig&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>, sviluppato da hodlbod, si basa sull&amp;rsquo;ecosistema &lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a> esistente per fornire un servizio di firma a soglia focalizzato sul recupero. Utilizzando le firme &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) tramite la libreria @frostr/bifrost, Pomade aggiunge flussi di recupero basati su email sopra la crittografia a soglia. Il sistema frammenta la chiave segreta di un utente usando Shamir Secret Sharing, distribuendo le quote tra più firmatari indipendenti con una soglia configurabile (2-di-3, 3-di-5, ecc.).&lt;/p>
&lt;p>Il protocollo opera interamente su Nostr usando un singolo tipo di evento (28350) con payload crittografati &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Durante la firma, il client richiede firme parziali da almeno &lt;code>threshold&lt;/code> firmatari, poi le aggrega in una firma Schnorr valida. Per la crittografia, i firmatari collaborano per derivare segreti condivisi via ECDH senza che nessuna singola parte apprenda la chiave completa.&lt;/p>
&lt;p>Il recupero funziona attraverso due metodi di autenticazione: basato su password (usando argon2id con la pubkey del firmatario come salt) o OTP via email. Per prevenire attacchi MITM durante il recupero OTP, ogni firmatario genera il proprio codice di verifica con un prefisso fornito dal client, richiedendo agli utenti di autenticarsi indipendentemente con ogni firmatario. Il protocollo richiede proof-of-work sugli eventi di registrazione (20+ bit secondo &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a>) per prevenire lo spam.&lt;/p>
&lt;p>Il modello di fiducia è esplicito: se &lt;code>threshold&lt;/code> firmatari colludono, possono rubare la chiave. I provider email sono completamente fidati poiché possono intercettare gli OTP. Gli utenti non possono recuperare indipendentemente la loro chiave segreta completa; farlo richiede la cooperazione di &lt;code>threshold&lt;/code> firmatari. Il protocollo è progettato per l&amp;rsquo;onboarding di nuovi utenti non familiari con la gestione delle chiavi, con la raccomandazione esplicita che gli utenti migrino all&amp;rsquo;auto-custodia una volta a loro agio. Pomade avverte di potenziali &amp;ldquo;perdite di chiavi, furti, denial of service o fughe di metadati&amp;rdquo; dato il suo stato alpha non auditato.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="damus-implementa-negentropy-per-la-sincronizzazione-affidabile-dei-dm">Damus Implementa Negentropy per la Sincronizzazione Affidabile dei DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a> implementa l&amp;rsquo;implementazione negentropy &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">che abbiamo presentato come PR aperta la settimana scorsa&lt;/a>. &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> aggiunge il supporto base &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> al livello di rete, abilitando la riconciliazione degli insiemi con i relay che supportano il protocollo. Una &lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a> complementare aggiunge la sincronizzazione DM pull-to-refresh che usa negentropy per recuperare i messaggi mancanti quando le sottoscrizioni REQ standard falliscono.&lt;/p>
&lt;p>L&amp;rsquo;implementazione segue un approccio conservativo: il caricamento normale dei DM continua invariato, con &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> disponibile come meccanismo di recupero quando gli utenti aggiornano manualmente. I test automatizzati dimostrano la correzione generando un DM con un timestamp vecchio che le query standard mancherebbero, poi usando la sincronizzazione &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per recuperarlo con successo. Mentre il supporto &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> richiede relay compatibili, l&amp;rsquo;implementazione gestisce elegantemente ambienti con relay misti usando il protocollo dove disponibile.&lt;/p>
&lt;h3 id="amber-v411---punteggi-di-fiducia-dei-relay">Amber v4.1.1 - Punteggi di Fiducia dei Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a> implementa la visualizzazione dei punteggi di fiducia dei relay (&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>), implementando i concetti di valutazione dei relay discussi nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#nip-updates">copertura dei Trusted Relay Assertions della settimana scorsa&lt;/a>. I punteggi di fiducia ora appaiono nella pagina Relays e per le richieste di connessione NostrConnect, aiutando gli utenti a valutare l&amp;rsquo;affidabilità dei relay prima di autorizzare le connessioni. Il rilascio include anche una UI ridisegnata per login/eventi/permessi e supporto per il metodo &lt;code>switch_relays&lt;/code>. I miglioramenti delle prestazioni memorizzano in cache le operazioni del keystore, affrontando le segnalazioni di tempi di caricamento di oltre 20 secondi su dispositivi più vecchi.&lt;/p>
&lt;h3 id="nak-v0182---integrazione-mcp">nak v0.18.2 - Integrazione MCP&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> di fiatjaf (Nostr Army Knife) &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a> aggiunge il supporto &lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a> tramite &lt;code>nak mcp&lt;/code>, permettendo agli agenti AI di cercare persone su Nostr, pubblicare note, menzionare utenti e leggere contenuti usando il modello outbox. Il rilascio introduce anche un &lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">installer con una sola riga&lt;/a> (&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>) che scarica binari precompilati, eliminando il requisito della toolchain Go per gli utenti finali. La modalità Bunker ora supporta Unix socket e &lt;code>switch_relays&lt;/code>.&lt;/p>
&lt;h3 id="zeus-v0122-beta---fix-nwc">Zeus v0.12.2 Beta - Fix NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a> implementa multiple correzioni NWC che affrontano i problemi coperti nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">copertura di Zeus della settimana scorsa&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="amethyst-desktop---fase-2a-rilasciata">Amethyst Desktop - Fase 2A Rilasciata&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha rilasciato &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">la Fase 2A della sua app desktop&lt;/a>, aggiungendo Ricerca, Segnalibri, Zap, viste Thread e contenuti long-form (Letture) all&amp;rsquo;esperienza desktop. Una &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a> complementare aggiunge feedback trasparente sulla trasmissione degli eventi così gli utenti ora vedono lo stato in tempo reale per-relay mentre i loro eventi si propagano attraverso la rete, rendendo più facile diagnosticare problemi di connettività.&lt;/p>
&lt;h3 id="progressi-di-notedeck-app-calendario-e-rifinitura-ux">Progressi di Notedeck: App Calendario e Rifinitura UX&lt;/h3>
&lt;p>L&amp;rsquo;app desktop &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> del team Damus ha unito il comportamento di auto-nascondimento della toolbar (&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>) che risponde alla velocità di scorrimento per più spazio sullo schermo nelle viste mobile. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1271">bozza PR #1271&lt;/a> aggiunge un&amp;rsquo;app Calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> completa con viste mese/settimana/giorno/agenda, supporto RSVP e commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sugli eventi del calendario, attualmente con feature-flag per i test.&lt;/p>
&lt;h3 id="jumble-aggiunge-modalità-community">Jumble Aggiunge Modalità Community&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, il client web focalizzato sui relay, ha aggiunto &lt;a href="https://github.com/CodyTseng/jumble/pull/738">modalità community&lt;/a> e supporto per &lt;a href="https://github.com/CodyTseng/jumble/pull/736">preset di set di relay tramite variabili d&amp;rsquo;ambiente&lt;/a>, rendendo più facile distribuire istanze tematiche come &lt;a href="https://nostr.moe/">nostr.moe&lt;/a>.&lt;/p>
&lt;h3 id="dashboard-ordini-di-shopstr">Dashboard Ordini di Shopstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> ha sostituito la sua gestione ordini basata su chat con una &lt;a href="https://github.com/shopstr-eng/shopstr/pull/219">Dashboard Ordini&lt;/a> dedicata. La nuova interfaccia fornisce una vista centralizzata per i merchant per tracciare lo stato degli ordini, segnare i messaggi come letti e gestire l&amp;rsquo;evasione senza scorrere le conversazioni chat. L&amp;rsquo;aggiornamento depreca il caching IndexedDB in favore delle API server-side per lo stato degli ordini e rivede come i DM degli ordini vengono taggati per un miglior filtraggio.&lt;/p>
&lt;h3 id="formstr-aggiunge-domande-a-griglia">Formstr Aggiunge Domande a Griglia&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;app form nativa Nostr, ha aggiunto &lt;a href="https://github.com/abh3po/nostr-forms/pull/419">domande a griglia&lt;/a> e &lt;a href="https://github.com/abh3po/nostr-forms/pull/410">riscritto il suo SDK&lt;/a> con supporto per embed. Una [correzione per firmatari non-&lt;a href="https://nostrcompass.org/it/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>) ha risolto problemi per utenti con bunker o firmatari locali che tentavano di inviare form con la loro identità.&lt;/p>
&lt;h3 id="nostr-tools-aggiorna-le-dipendenze-crittografiche">nostr-tools Aggiorna le Dipendenze Crittografiche&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la libreria JavaScript core, &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/520">ha aggiornato a @noble/curves v2.0.1&lt;/a>, affrontando modifiche API breaking attraverso 27 file e adottando le ultime librerie noble auditate. fiatjaf ha anche aggiunto il supporto &lt;code>switch_relays&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, permettendo ai client bunker di cambiare dinamicamente le connessioni ai relay.&lt;/p>
&lt;h3 id="zeus-lavora-sulle-recensioni-mint-nip-87">Zeus Lavora sulle Recensioni Mint NIP-87&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> ha una [PR aperta per le recensioni mint &lt;a href="https://nostrcompass.org/it/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>, permettendo agli utenti di scoprire e recensire i mint &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> filtrati dai seguiti Nostr. Le recensioni includono valutazioni a stelle e possono essere inviate anonimamente o con l&amp;rsquo;nsec dell&amp;rsquo;utente.&lt;/p>
&lt;h3 id="camelus-implementa-supporto-dm-completo">Camelus Implementa Supporto DM Completo&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, un client Android basato su Flutter costruito con Dart NDK per prestazioni mobile efficienti in termini di batteria, ha aggiunto messaggistica diretta completa con oltre 20 commit questa settimana. L&amp;rsquo;aggiornamento include categorie chat, date dei messaggi, UI di invio ottimistica, funzionalità nota-a-se-stessi e gestione corretta dei relay DM.&lt;/p>
&lt;h3 id="aggiornamenti-del-protocollo-marmot">Aggiornamenti del Protocollo Marmot&lt;/h3>
&lt;p>La risoluzione deterministica dei commit MIP-03 &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#marmot-protocol-white-noise-encrypted-group-chat-library">che abbiamo coperto come PR aperta la settimana scorsa&lt;/a> è stata ora unita. &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">MDK PR #152&lt;/a> assicura che tutte le chat di gruppo basate su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> convergano sullo stesso stato quando più commit validi arrivano per la stessa epoca.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/marmot-protocol/marmot/pull/28">PR spec #28&lt;/a> complementare aggiunge requisiti del ciclo di vita init_key che affrontano lacune dagli audit di implementazione: il materiale della chiave privata dai messaggi Welcome deve essere cancellato in modo sicuro dopo l&amp;rsquo;elaborazione (zeroizzazione, pulizia dello storage), e i nuovi membri devono eseguire auto-aggiornamenti entro 24 ore per la forward secrecy.&lt;/p>
&lt;p>L&amp;rsquo;SDK TypeScript (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) sta costruendo un&amp;rsquo;applicazione di chat di riferimento. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/37">PR #37&lt;/a> aggiunge creazione/lista gruppi, gestione key package con flussi di pubblicazione/trasmissione/cancellazione e inviti tramite codice QR. Una &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR aperta #38&lt;/a> di hzrd149 implementa la persistenza della cronologia messaggi con paginazione. Il backend whitenoise-rs ha unito 15 PR questa settimana incluso il supporto multi-lingua (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/455">PR #455&lt;/a>) e i riferimenti media 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-aggiunge-funzionalità-di-integrazione-nostr">diVine Aggiunge Funzionalità di Integrazione Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, l&amp;rsquo;app video short-form, continua la rapida integrazione Nostr.&lt;/p>
&lt;p>Le PR aperte includono l&amp;rsquo;autenticazione tramite codice QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1019">PR #1019&lt;/a>) e la messaggistica diretta crittografata &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/834">PR #834&lt;/a>). L&amp;rsquo;attività di questa settimana si è concentrata sul &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1098">supporto menzioni&lt;/a> che converte URI &lt;code>nostr:&lt;/code> e @menzioni in link profilo cliccabili, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1097">fallback avatar Classic Viners&lt;/a> usando profili Nostr, e strumenti di editing video inclusi &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1056">disegno&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1053">filtri&lt;/a> e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1050">sticker&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&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 proposta per standardizzare i punteggi di fiducia dei relay &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#nip-updates">che abbiamo coperto la settimana scorsa&lt;/a> è stata unita. La specifica definisce eventi kind 30385 per le asserzioni di fiducia dei relay con punteggio su affidabilità, qualità e accessibilità. Il dibattito che ha portato all&amp;rsquo;unione si è concentrato sul fatto che i punteggi di fiducia debbano essere &amp;ldquo;globali&amp;rdquo; (calcolati una volta per tutti gli utenti) o &amp;ldquo;personalizzati&amp;rdquo; (relativi al grafo sociale di ogni osservatore). Algoritmi in stile PageRank come &lt;a href="https://trust.nostr.band/">Trust Rank di nostr.band&lt;/a> e &lt;a href="https://github.com/Pretty-Good-Freedom-Tech/graperank-nodejs">GrapeRank&lt;/a> resistono agli attacchi sybil dividendo qualsiasi rank passato attraverso account falsi per la dimensione della bot farm.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Communikeys&lt;/strong> - Una &lt;a href="https://nostrhub.io">proposta completa&lt;/a> per la gestione delle community che usa npub esistenti come identificatori di community invece di approcci basati su relay. Qualsiasi npub può diventare una community pubblicando un evento kind 10222; le pubblicazioni mirano alle community tramite eventi kind 30222. Il controllo degli accessi usa badge &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a>, abilitando la gestione delegata dell&amp;rsquo;appartenenza con cold storage per le chiavi della community.&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> - Una bozza che propone la sincronizzazione degli eventi basata su sequenze come alternativa ai filtri &lt;code>since&lt;/code> basati su timestamp. Il problema: la sincronizzazione Nostr standard usando timestamp &lt;code>since&lt;/code> può perdere eventi quando più eventi condividono lo stesso timestamp con precisione al secondo, gli orologi del client e del relay divergono, o il checkpointing è impreciso. NIP-CF risolve questo facendo assegnare ai relay numeri di sequenza monotonicamente crescenti agli eventi memorizzati, fornendo un ordinamento totale rigoroso. I client richiedono modifiche da un numero di sequenza specifico e ricevono eventi in ordine garantito, con checkpointing preciso che non perde mai eventi. La proposta supporta anche la modalità live/continua dove le sottoscrizioni rimangono aperte dopo la sincronizzazione iniziale per aggiornamenti in tempo reale.&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 protocollo che definisce i kind 30800 (file crittografati), 30801 (indici vault) e 30802 (documenti condivisi) per sincronizzare contenuti crittografati tra dispositivi usando i relay Nostr. Il protocollo abilita app di note-taking local-first per fornire sincronizzazione crittografata end-to-end senza server centralizzati. Contenuti dei file, percorsi, nomi e struttura delle cartelle sono tutti crittografati usando l&amp;rsquo;auto-crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, così i relay memorizzano blob che non possono leggere. Gli allegati binari come le immagini usano server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> con crittografia lato client. Il kind 30802 abilita la condivisione di documenti tra utenti crittografando verso la chiave pubblica del destinatario.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinque-anni-di-gennaio-di-nostr">Cinque Anni di Gennaio di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/#december-recap-five-years-of-nostr-decembers">La newsletter del mese scorso&lt;/a> ha tracciato le pietre miliari di dicembre di Nostr dal primo rilascio client di fiatjaf attraverso la donazione catalizzatrice di Jack Dorsey. Questa retrospettiva traccia cosa è successo ogni gennaio dal 2021 al 2025, concentrandosi sugli sviluppi tecnici verificati.&lt;/p>
&lt;h3 id="gennaio-2021-sviluppo-iniziale">Gennaio 2021: Sviluppo Iniziale&lt;/h3>
&lt;p>Il terzo mese di Nostr vide lo sviluppo continuato di Branle, il client Vue.js di fiatjaf lanciato a dicembre 2020. Un piccolo gruppo di primi utilizzatori, probabilmente meno di 15 persone, si coordinava attraverso il gruppo Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a> (creato il 16 novembre 2020), testando il protocollo su uno o due relay sperimentali. Il client da riga di comando noscl forniva interazione basata su terminale.&lt;/p>
&lt;p>Le fondamenta tecniche erano già bloccate: utenti identificati da chiavi pubbliche secp256k1, post firmati crittograficamente con firme Schnorr, e relay che servono come storage stupido che non comunicano tra loro. Questa era crittografia deliberatamente nativa di Bitcoin, una scelta di design che avrebbe plasmato i pattern di adozione anni dopo.&lt;/p>
&lt;h3 id="gennaio-2022-scoperta-degli-sviluppatori">Gennaio 2022: Scoperta degli Sviluppatori&lt;/h3>
&lt;p>Gennaio 2022 si aprì con Nostr ancora in fermento dalla sua &lt;a href="https://news.ycombinator.com/item?id=29749061">prima apparizione su Hacker News&lt;/a> (31 dicembre 2021), che generò 110 punti e 138 commenti. Al momento di quel post, solo circa sette relay alimentavano l&amp;rsquo;intera rete, con i commentatori che notavano &amp;ldquo;lo spam non è ancora un problema perché nostr è super nuovo e nessuno lo usa ancora&amp;rdquo;. Robert C. Martin (&amp;ldquo;Uncle Bob&amp;rdquo;) aveva appoggiato Nostr come potenzialmente &amp;ldquo;la soluzione definitiva per la comunicazione sociale&amp;rdquo;. La discussione continuò a gennaio, con sviluppatori che dibattevano architettura relay versus vero P2P, resistenza alla censura versus moderazione, e se la semplicità potesse scalare.&lt;/p>
&lt;p>Il post HN scatenò un&amp;rsquo;ondata di nuove implementazioni. Uncle Bob stesso iniziò &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop Clojure, il 18 gennaio. La libreria &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> di fiatjaf (creata gennaio 2021) e il client da riga di comando &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a> fornivano strumenti Go, mentre &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> offriva supporto JavaScript. Entro dicembre 2022, circa 800 profili avevano bio. Branle rimase il client web principale, ricevendo aggiornamenti inclusi import della chiave privata e supporto multi-relay. Le sfide tecniche erano evidenti: le chiavi esadecimali da 64 caratteri si rivelarono non intuitive, i ritardi dei messaggi frustravano gli utenti, e la community si chiedeva se l&amp;rsquo;architettura potesse gestire traffico a scala Twitter.&lt;/p>
&lt;h3 id="gennaio-2023-la-svolta">Gennaio 2023: La Svolta&lt;/h3>
&lt;p>Gennaio 2023 trasformò Nostr da esperimento a movimento. Damus, il client iOS di William Casarin (jb55), lottava con il processo di approvazione dell&amp;rsquo;App Store di Apple. Rifiutato il 1° gennaio, rifiutato di nuovo il 26 gennaio, fu finalmente &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approvato il 31 gennaio&lt;/a>. Quell&amp;rsquo;approvazione scatenò una cascata: Damus raggiunse immediatamente la posizione #10 in U.S. Social Networking. 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 definì&lt;/a> &amp;ldquo;una pietra miliare per i protocolli aperti&amp;rdquo;.&lt;/p>
&lt;p>Otto giorni prima, il 23 gennaio, &lt;a href="https://x.com/Snowden/status/1617623779626352640">Edward Snowden annunciò&lt;/a> la sua presenza su Nostr: &amp;ldquo;Una delle cose cool di Nostr&amp;hellip; oltre alla resistenza alla censura, è che non sei limitato a 280 caratteri&amp;rdquo;. Il suo endorsement da parte di un whistleblower della NSA aveva peso nei circoli attenti alla privacy, e gli utenti iniziarono immediatamente a inviargli zap in sats via Lightning.&lt;/p>
&lt;p>I client web corsero per gestire l&amp;rsquo;afflusso. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, creato da kieran a dicembre 2022, emerse come un client React ricco di funzionalità; il 13 gennaio, Snort integrò la registrazione NIP-05 tramite l&amp;rsquo;API Nostr Plebs, permettendo ai nuovi utenti di reclamare identità leggibili durante l&amp;rsquo;onboarding. &lt;a href="https://iris.to">Iris&lt;/a>, sviluppato a tempo pieno da Martti Malmi (un early contributor di Bitcoin che ricevette la seconda transazione Bitcoin mai fatta da Satoshi), offriva interfacce sia web che mobile con identità NIP-05 gratuite su iris.to. &lt;a href="https://github.com/monlovesmango/astral">Astral&lt;/a>, costruito da monlovesmango con Quasar (Vue.js) come fork di Branle, si concentrava sulla gestione dei relay con la sua funzionalità di raggruppamento relay che permetteva agli utenti di organizzare i relay in set per la pubblicazione e il filtraggio. Le beta TestFlight per i client iOS si riempivano in poche ore, e Amethyst dominava su Android.&lt;/p>
&lt;p>L&amp;rsquo;infrastruttura faticava a tenere il passo. Tutti i relay erano gestiti da appassionati che pagavano di tasca propria. I relay a pagamento che usavano micropagamenti Lightning creavano un filtraggio naturale dello spam ma introducevano frizione nell&amp;rsquo;accesso. &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Damus fu rimosso dall&amp;rsquo;App Store della Cina&lt;/a> solo due giorni dopo l&amp;rsquo;approvazione, riferibilmente su richiesta del principale organo di vigilanza internet della Cina.&lt;/p>
&lt;h3 id="gennaio-2024-consolidamento-del-protocollo">Gennaio 2024: Consolidamento del Protocollo&lt;/h3>
&lt;p>Gennaio 2024 si concentrò sulla standardizzazione del protocollo e sulla costruzione della community. &lt;a href="https://www.nostrphx.com/events">Nostr PHX&lt;/a> iniziò l&amp;rsquo;anno con un meetup il 5 gennaio a Phoenix, riunendo cypherpunk locali. Questo fu il primo di molti eventi della community quell&amp;rsquo;anno inclusi BTC Prague (giugno), Nostriga a Riga (agosto) e Nostrasia.&lt;/p>
&lt;p>Lo sviluppo del protocollo più significativo fu &lt;a href="https://github.com/nostr-protocol/nips/pull/716">NIP-59 (Gift Wrap)&lt;/a> unito il 29 gennaio, fornendo protezione dei metadati per le comunicazioni crittografate. Gift Wrap si basa sullo &lt;a href="https://github.com/paulmillr/nip44">standard di crittografia NIP-44&lt;/a> (che era stato &lt;a href="https://cure53.de/audit-report_nip44-implementations.pdf">auditato da Cure53&lt;/a> a dicembre 2023) per nascondere l&amp;rsquo;identità del mittente dai relay. Il protocollo avvolge i messaggi crittografati all&amp;rsquo;interno di un evento esterno firmato da una keypair casuale, usa-e-getta. I relay vedono solo la pubkey usa-e-getta, mentre la vera identità del mittente è sepolta nel payload crittografato che solo il destinatario può decifrare. Questo impedisce agli operatori dei relay e agli osservatori della rete di sapere chi sta messaggiando chi. I timestamp possono anche essere randomizzati per sconfiggere l&amp;rsquo;analisi temporale.&lt;/p>
&lt;p>L&amp;rsquo;ecosistema si espanse oltre i social media. &lt;a href="https://plebeian.market">Plebeian Market&lt;/a> diventò completamente Nostr-native con conformità &lt;a href="https://nostrcompass.org/it/topics/nip-15/">NIP-15&lt;/a>, abilitando carrelli cross-stall e un browser di stall per scoprire i merchant. &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> emerse come un marketplace permissionless che facilitava il commercio Bitcoin. &lt;a href="https://zap.stream/">Zap.stream&lt;/a>, costruito da kieran, portò lo streaming live su Nostr con pagamenti Lightning a 21 sats/minuto. Gli strumenti per sviluppatori maturarono con &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> che forniva astrazioni TypeScript e &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> che offriva binding Rust. &lt;a href="https://blog.zeusln.com/new-release-zeus-v0-8-1/">Zeus v0.8.1&lt;/a> fu rilasciato con import contatti Nostr e LND persistente, gettando le basi per l&amp;rsquo;integrazione Nostr Wallet Connect nei rilasci successivi.&lt;/p>
&lt;p>Eppure la sostenibilità dell&amp;rsquo;infrastruttura &lt;a href="https://arxiv.org/abs/2402.05709">rimaneva una sfida&lt;/a>. La ricerca accademica di questo periodo trovò che il 95% dei relay faticava a coprire i costi operativi, con il 20% che sperimentava significativi tempi di inattività. La tariffa di ammissione per i relay a pagamento era in media meno di 1.000 sats (~$0.45), insufficiente a sostenere le operazioni.&lt;/p>
&lt;p>&lt;em>Una nota sulle truffe: Il &amp;ldquo;Nostr Assets Protocol&amp;rdquo; e il token &amp;ldquo;$NOSTR&amp;rdquo; associato che furono lanciati in questo periodo &lt;a href="https://www.aicoin.com/en/article/377704">furono pubblicamente denunciati da fiatjaf&lt;/a> come &amp;ldquo;100% fraudolenti&amp;rdquo; e &amp;ldquo;una truffa di affinità&amp;rdquo; senza alcuna connessione con il vero protocollo Nostr.&lt;/em>&lt;/p>
&lt;h3 id="gennaio-2025-maturazione-dei-client">Gennaio 2025: Maturazione dei Client&lt;/h3>
&lt;p>Gennaio 2025 vide lo sviluppo continuato dei client attraverso l&amp;rsquo;ecosistema. &lt;a href="https://www.nobsbitcoin.com/nostur-v1-17-0/">Nostur 1.17.0&lt;/a> fu rilasciato il 13 gennaio con sincronizzazione cross-device per gli stati di lettura, supporto login multi-sig &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> e prestazioni ottimizzate del database locale. Amethyst continuò la sua transizione al modello outbox, compilando automaticamente set di relay basati sulle liste di follow piuttosto che richiedere configurazione manuale.&lt;/p>
&lt;p>I principali client iniziarono ad allontanarsi da &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> per i messaggi diretti, migrando verso &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e il proposto &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> per crittografia migliorata e protezione dei metadati. Il modello Gossip (comunicazione outbox/inbox) guadagnò adozione mentre l&amp;rsquo;ecosistema convergeva verso pattern di utilizzo dei relay più efficienti. Gli osservatori del settore prevedevano che questo sarebbe stato l&amp;rsquo;anno in cui Nostr transita da protocollo di nicchia a riconoscimento mainstream, con una potenziale migrazione di piattaforma ad alto profilo che potrebbe raddoppiare l&amp;rsquo;attività giornaliera.&lt;/p>
&lt;h3 id="gennaio-2026-sicurezza-e-infrastruttura-di-firma">Gennaio 2026: Sicurezza e Infrastruttura di Firma&lt;/h3>
&lt;p>Gennaio 2026 portò significativi avanzamenti nella sicurezza e nell&amp;rsquo;infrastruttura di firma. &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Primal Android 2.6.18&lt;/a> fu rilasciato con firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e supporto per firmatario locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, unendosi ad Amber e Aegis come hub di firma completo per altre app Android. &lt;a href="https://github.com/permissionlesstech/bitchat/pulls">Bitchat completò un audit di sicurezza Cure53&lt;/a>, la stessa azienda che auditò Signal e NIP-44, con oltre 17 PR che correggevano problemi critici inclusa la cancellazione dei segreti DH e problemi di thread safety. Sia Bitchat che Damus migrarono da C Tor a Rust Arti per maggiore affidabilità e sicurezza della memoria.&lt;/p>
&lt;p>Il lavoro sul protocollo continuò con &lt;a href="https://github.com/nostr-protocol/nips/pull/1669">NIP-71&lt;/a> (eventi video addressable) unito e una NIP sulla crittografia post-quantistica che aprì la discussione sul future-proofing di Nostr contro attacchi quantistici. La bozza Trusted Relay Assertions propose la standardizzazione del punteggio di fiducia dei relay attraverso attestazioni firmate. Il &lt;a href="https://github.com/marmot-protocol/mdk">Protocollo Marmot&lt;/a> rafforzò la sua messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> con 18 PR unite che affrontavano le scoperte dell&amp;rsquo;audit.&lt;/p>
&lt;p>Le applicazioni nel mondo reale si espansero con &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> che sviluppa ridesharing decentralizzato usando escrow &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, e &lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a> che aggiunge flussi di recupero basati su email alla firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a>. Damus rilasciò &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per la sincronizzazione affidabile dei DM, mentre l&amp;rsquo;app desktop di Amethyst raggiunse la Fase 2A con ricerca, segnalibri e zap.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Sei anni di gennaio rivelano l&amp;rsquo;evoluzione di Nostr dallo sviluppo iniziale (2021) alla scoperta pubblica (2022) alla crescita esplosiva (2023) al consolidamento del protocollo (2024) alla maturazione dei client (2025) all&amp;rsquo;infrastruttura di sicurezza (2026). Il pattern è familiare a chiunque abbia osservato la crescita dei protocolli aperti: anni di costruzione silenziosa, un&amp;rsquo;esplosione improvvisa quando le condizioni si allineano, poi il lavoro più lungo di rendere tutto affidabile. Quello che è iniziato con sette relay e un thread su Hacker News è ora infrastruttura auditata con applicazioni reali. La domanda per il 2027: quando qualcuno chiamerà una corsa, invierà un messaggio crittografato o recupererà una chiave persa usando Nostr, sapranno anche che lo stanno usando?&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #6</title><link>https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat sostituisce C Tor con l&amp;rsquo;implementazione Rust Arti per una maggiore affidabilità e prestazioni. nostrdb-rs ottiene query fold streaming che abilitano operazioni di database a zero allocazioni. Listr riceve un importante refactoring con la migrazione a NDK 3 beta e manutenzione assistita da AI dopo un anno di inattività. Zeus spedisce 17 PR unite focalizzate su correzioni &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect per il controllo remoto di Lightning) e miglioramenti Cashu, mentre Primal Android aggiunge flussi di backup del wallet e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (dimensioni dei media per rapporti di aspetto corretti). Una nuova bozza di NIP propone &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a> per la valutazione standardizzata della fiducia nei relay.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat sostituisce C Tor con l&amp;rsquo;implementazione Rust Arti per una maggiore affidabilità e prestazioni. nostrdb-rs ottiene query fold streaming che abilitano operazioni di database a zero allocazioni. Listr riceve un importante refactoring con la migrazione a NDK 3 beta e manutenzione assistita da AI dopo un anno di inattività. Zeus spedisce 17 PR unite focalizzate su correzioni &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect per il controllo remoto di Lightning) e miglioramenti Cashu, mentre Primal Android aggiunge flussi di backup del wallet e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (dimensioni dei media per rapporti di aspetto corretti). Una nuova bozza di NIP propone &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a> per la valutazione standardizzata della fiducia nei relay.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="bitchat-migra-ad-arti-rust-per-il-supporto-tor">Bitchat Migra ad Arti Rust per il Supporto Tor&lt;/h3>
&lt;p>Bitchat è migrato da C Tor ad &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implementazione Rust del protocollo Tor. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a> rimuove la dipendenza da C Tor e integra Arti, portando garanzie di sicurezza della memoria e maggiore affidabilità. Il cambiamento elimina i tentativi di riattivazione dormiente che causavano riavvii del servizio in primo piano, un problema di lunga data con l&amp;rsquo;implementazione C.&lt;/p>
&lt;p>&lt;strong>Cosa significa per gli utenti:&lt;/strong> Messaggistica crittografata più stabile con meno disconnessioni, specialmente su dispositivi mobili. L&amp;rsquo;implementazione Rust riduce i rischi di crash e il consumo della batteria dai tentativi di riconnessione costanti.&lt;/p>
&lt;p>Arti è una riscrittura completa di Tor in Rust, sviluppata dal Tor Project per fornire maggiore sicurezza attraverso la sicurezza della memoria e un&amp;rsquo;integrazione più facile nelle applicazioni. Per Bitchat, le proprietà di sicurezza della memoria riducono la superficie di attacco durante la gestione di messaggi crittografati e connessioni relay. La migrazione segue il recente &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/#bitchat-completes-cure53-security-audit">audit di sicurezza Cure53&lt;/a> del team (trattato nella Newsletter #5), continuando i loro miglioramenti di sicurezza.&lt;/p>
&lt;p>Il PR introduce anche una copertura di test completa per ChatViewModel e BLEService, rimuove codice morto e stabilizza la suite di test. I miglioramenti di affidabilità della mesh Bluetooth Low Energy accompagnano le modifiche Tor, affrontando i fallimenti di trasferimenti grandi. Insieme, questi cambiamenti migliorano la resilienza di Bitchat per scenari di rete mesh offline dove Tor fornisce connettività internet insieme alla comunicazione BLE locale.&lt;/p>
&lt;h3 id="listr-rivitalizzato-con-manutenzione-potenziata-dallai">Listr Rivitalizzato con Manutenzione Potenziata dall&amp;rsquo;AI&lt;/h3>
&lt;p>JeffG ha annunciato un importante refactoring di &lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>, l&amp;rsquo;applicazione di gestione liste Nostr disponibile su &lt;a href="https://listr.lol">listr.lol&lt;/a>, dopo che il progetto era rimasto inattivo per oltre un anno. Usando l&amp;rsquo;assistenza dell&amp;rsquo;AI, ha completato un aggiornamento completo includendo la migrazione a &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3 beta, aggiornamenti alle ultime versioni di Svelte e Vite, e tutte le dipendenze portate alla versione corrente. Il refactoring aggiunge supporto di prima classe per i pacchetti di following, implementa la paginazione per liste che superano i 50 elementi e corregge numerosi bug che si erano accumulati durante il periodo di inattività.&lt;/p>
&lt;p>&lt;strong>Cosa significa per gli utenti:&lt;/strong> Listr è tornato online con prestazioni migliorate e nuove funzionalità per gestire liste di following, collezioni di contenuti e curatela di argomenti. La correzione della paginazione rende effettivamente utilizzabili le liste grandi.&lt;/p>
&lt;p>JeffG ha notato che senza l&amp;rsquo;assistenza dell&amp;rsquo;AI, questo lavoro di manutenzione probabilmente non sarebbe mai avvenuto, impedendo che il progetto venisse abbandonato. Listr abilita la curatela dei contenuti su Nostr, permettendo agli utenti di creare, gestire e condividere liste di profili, argomenti e risorse. L&amp;rsquo;aggiornamento mantiene l&amp;rsquo;applicazione compatibile con gli standard Nostr correnti e le aspettative dei client man mano che la gestione delle liste diventa più centrale per la scoperta dei contenuti sul protocollo.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Unite:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (Gruppi basati su relay) - Chiarimento Chiave Relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - unito) chiarisce che la chiave relay è l&amp;rsquo;URL del relay stesso, non una pubkey. La specifica ora afferma esplicitamente &amp;ldquo;La chiave relay è l&amp;rsquo;URL WebSocket del relay (es. wss://groups.example.com)&amp;rdquo; per evitare confusione. Questo influisce su come i client identificano quale relay ospita un determinato gruppo, garantendo che i gruppi siano correttamente attribuiti ai loro relay ospitanti.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Trusted Relay Assertions&lt;/strong> - Una bozza di NIP propone di standardizzare il punteggio di fiducia nei relay attraverso eventi kind 30385 contenenti punteggi di fiducia (0-100) calcolati da metriche &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (scoperta e monitoraggio relay), reputazione dell&amp;rsquo;operatore e segnalazioni degli utenti. La specifica divide la fiducia in componenti di affidabilità (uptime, latenza), qualità (TLS, documentazione, verifica operatore) e accessibilità (giurisdizione, barriere, rischio sorveglianza). La verifica dell&amp;rsquo;operatore include firme crittografiche tramite &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (documenti informativi relay), record TXT DNS e file .well-known. Gli utenti dichiarano i fornitori di asserzioni fidati tramite eventi kind 10385, permettendo ai client di interrogare più fornitori per prospettive diverse. La proposta complementa la scoperta &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> con la valutazione, aiutando &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota/Nostr Connect) a valutare l&amp;rsquo;affidabilità dei relay negli URI di connessione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Crittografia Post-Quantistica&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (aperta) continua ad evolversi da quando la &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/#nip-updates">Newsletter #5&lt;/a> ha introdotto la proposta per algoritmi resistenti ai computer quantistici. La discussione di questa settimana si è concentrata sui dettagli di implementazione per la crypto-agility: come i client gestiscono le firme doppie durante la migrazione, la compatibilità retroattiva per i client più vecchi e le implicazioni prestazionali delle firme quantistiche resistenti più grandi. I contributori hanno dibattuto se imporre solo ML-DSA-44 o supportare più algoritmi (ML-DSA-44, Falcon-512, Dilithium) per flessibilità. Il consenso propende verso un approccio graduale: firme quantistiche opzionali inizialmente, diventando obbligatorie solo dopo un ampio supporto dei client e l&amp;rsquo;emergere di una reale minaccia quantistica.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-11-e-nip-66">Approfondimento NIP: NIP-11 e NIP-66&lt;/h2>
&lt;p>Questa settimana esaminiamo due NIP che lavorano insieme per abilitare la scoperta e valutazione dei relay: NIP-11 definisce come i relay si descrivono, e NIP-66 standardizza come misuriamo il comportamento dei relay. Insieme formano la base per i sistemi di valutazione della fiducia nei relay.&lt;/p>
&lt;h3 id="nip-11ittopicsnip-11-documento-informativo-relay">&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>: Documento Informativo Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a> definisce un documento JSON che i relay servono via HTTP per descrivere le loro capacità, politiche e informazioni sull&amp;rsquo;operatore. Quando un client si connette a &lt;code>wss://relay.example.com&lt;/code>, può recuperare &lt;code>https://relay.example.com&lt;/code> (sostituendo &lt;code>wss://&lt;/code> con &lt;code>https://&lt;/code>) per ottenere il documento informativo del relay.&lt;/p>
&lt;p>Il documento usa la negoziazione standard del contenuto HTTP con l&amp;rsquo;header &lt;code>Accept: application/nostr+json&lt;/code>. Questo permette ai relay di servire il loro sito web normale ai browser mentre forniscono metadati leggibili dalle macchine ai client Nostr. La risposta include il nome del software relay e la versione, informazioni di contatto dell&amp;rsquo;operatore (pubkey, email, contatto alternativo), NIP supportati e parametri operativi come requisiti di pagamento o restrizioni di contenuto.&lt;/p>
&lt;p>Importante notare che i documenti NIP-11 di base sono JSON non firmati serviti via HTTPS, affidandosi esclusivamente ai certificati TLS per l&amp;rsquo;autenticità. Questo significa che chiunque controlli il server web del relay può modificare il documento, rendendo non verificabili le affermazioni dell&amp;rsquo;operatore. La proposta Trusted Relay Assertions affronta questa lacuna introducendo attestazioni firmate attraverso il campo &lt;code>self&lt;/code> pubkey di un relay, abilitando la prova crittografica dell&amp;rsquo;identità dell&amp;rsquo;operatore in modo simile a come i relay usano eventi firmati per i meccanismi di autenticazione.&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 pubblico per uso generale&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>L&amp;rsquo;oggetto &lt;code>limitation&lt;/code> indica ai client quali vincoli applica il relay. &lt;code>max_message_length&lt;/code> limita la dimensione del frame WebSocket, &lt;code>max_subscriptions&lt;/code> limita le sottoscrizioni REQ concorrenti per connessione, &lt;code>max_filters&lt;/code> limita i filtri per REQ, e &lt;code>max_limit&lt;/code> vincola quanti eventi può richiedere un singolo filtro. Questi parametri aiutano i client ad adattare il loro comportamento alle capacità del relay, evitando disconnessioni dal superamento dei limiti.&lt;/p>
&lt;p>Le informazioni di pagamento appaiono in &lt;code>fees&lt;/code> e &lt;code>payments_url&lt;/code>. I relay possono addebitare per l&amp;rsquo;ammissione (accesso una tantum), l&amp;rsquo;abbonamento (accesso ricorrente) o la pubblicazione (tariffe per evento). Il &lt;code>payments_url&lt;/code> punta ai dettagli sui metodi di pagamento, tipicamente fatture Lightning o mint ecash. I relay a pagamento usano questi campi per comunicare i prezzi prima che i client tentino l&amp;rsquo;autenticazione.&lt;/p>
&lt;p>L&amp;rsquo;array &lt;code>supported_nips&lt;/code> permette ai client di scoprire le capacità del relay. Se un relay elenca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>, i client sanno di poter inviare query di ricerca full-text. Se appare &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, i client dovrebbero aspettarsi challenge di autenticazione. Questa pubblicità dichiarativa delle capacità abilita il miglioramento progressivo: i client possono usare funzionalità avanzate dove disponibili mentre degradano elegantemente su relay con supporto limitato.&lt;/p>
&lt;p>Le informazioni sull&amp;rsquo;operatore costruiscono responsabilità. Il campo &lt;code>pubkey&lt;/code> identifica l&amp;rsquo;operatore del relay su Nostr, abilitando la comunicazione diretta tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> o menzioni pubbliche. L&amp;rsquo;&lt;code>contact&lt;/code> email fornisce un fallback fuori protocollo. Insieme, questi campi aiutano gli utenti a raggiungere gli operatori per segnalazioni di abuso, richieste di accesso o problemi tecnici.&lt;/p>
&lt;p>I documenti &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> sono auto-riportati: i relay descrivono cosa affermano di supportare, non necessariamente cosa fanno effettivamente. Qui è dove NIP-66 diventa importante.&lt;/p>
&lt;h3 id="nip-66ittopicsnip-66-scoperta-relay-e-monitoraggio-liveness">&lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>: Scoperta Relay e Monitoraggio Liveness&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a> standardizza la pubblicazione di dati di monitoraggio relay su Nostr. I servizi di monitoraggio testano continuamente i relay per disponibilità, latenza, conformità al protocollo e NIP supportati. Pubblicano i risultati come eventi kind 30166, fornendo lo stato relay in tempo reale indipendente dall&amp;rsquo;auto-segnalazione del relay.&lt;/p>
&lt;p>I monitor controllano la disponibilità del relay connettendosi e inviando sottoscrizioni di test. Le misurazioni di latenza tracciano il tempo di connessione, il tempo di risposta alle sottoscrizioni e il ritardo di propagazione degli eventi. I test di conformità al protocollo verificano che il comportamento del relay corrisponda alle specifiche, individuando bug di implementazione o deviazioni intenzionali. La verifica del supporto NIP va oltre le affermazioni &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> testando effettivamente se le funzionalità pubblicizzate funzionano correttamente.&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>Il tag &lt;code>d&lt;/code> contiene l&amp;rsquo;URL del relay, rendendo questo un evento sostituibile parametrizzato. Ogni monitor pubblica un evento per relay, aggiornato al cambiare delle misurazioni. Più monitor possono tracciare lo stesso relay, fornendo ridondanza e validazione incrociata. I client interrogano più pubkey di monitor per ottenere prospettive diverse sulla salute del relay.&lt;/p>
&lt;p>I tag round-trip time (rtt) misurano la latenza per diverse operazioni. &lt;code>rtt open&lt;/code> traccia l&amp;rsquo;instaurazione della connessione WebSocket, &lt;code>rtt read&lt;/code> misura il tempo di risposta alle sottoscrizioni, e &lt;code>rtt write&lt;/code> testa la velocità di pubblicazione degli eventi. Tutti i valori sono in millisecondi. I client usano queste metriche per preferire relay a bassa latenza per operazioni sensibili al tempo o deprioritizzare relay lenti.&lt;/p>
&lt;p>Il tag &lt;code>nips&lt;/code> elenca il supporto NIP effettivamente verificato, non solo il supporto dichiarato. I monitor testano ogni NIP esercitando la sua funzionalità. Se un relay rivendica la ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> nel suo documento &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> ma le query di ricerca falliscono, i monitor ometteranno NIP-50 dalla lista verificata. Questo fornisce la verità di base sulle capacità del relay.&lt;/p>
&lt;p>Le informazioni geografiche aiutano i client a selezionare relay vicini per una migliore latenza e resistenza alla censura. Il tag &lt;code>geo&lt;/code> contiene il codice paese, il nome paese e la regione. Il tag &lt;code>network&lt;/code> distingue i relay clearnet dai servizi nascosti Tor o endpoint I2P. Insieme, questi tag abilitano la diversità geografica: i client possono connettersi a relay in più giurisdizioni per resistere alla censura regionale.&lt;/p>
&lt;p>I dati dei monitor alimentano i selettori di relay nei client, i siti web esploratori e la proposta Trusted Relay Assertions. Combinando documenti auto-riportati &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> con dati misurati &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> e asserzioni di fiducia calcolate, l&amp;rsquo;ecosistema si muove verso la selezione informata dei relay piuttosto che fare affidamento su default codificati o raccomandazioni di passa-parola.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="0xchat-v153---funzionalità-di-messaggistica-migliorate">0xchat v1.5.3 - Funzionalità di Messaggistica Migliorate&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> porta miglioramenti significativi al client di messaggistica Nostr stile Telegram. Il rilascio affronta problemi di conformità &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (applicazione signer Android) che impedivano la corretta firma degli eventi attraverso signer esterni come Amber. La piena conformità significa che 0xchat ora delega correttamente le operazioni di firma, migliorando la sicurezza mantenendo le chiavi private isolate.&lt;/p>
&lt;p>L&amp;rsquo;aggiornamento integra sia FileDropServer che BlossomServer come opzioni di archiviazione media predefinite, offrendo agli utenti ridondanza per i caricamenti di file. &lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> fornisce archiviazione indirizzata ai contenuti dove i file sono referenziati dai loro hash SHA-256, garantendo integrità e abilitando la deduplicazione sulla rete. Il salvataggio automatico delle bozze per Moments previene la perdita di dati quando si compone contenuto long-form, affrontando le lamentele degli utenti sui post persi durante i cambi di app o le interruzioni di connettività.&lt;/p>
&lt;p>L&amp;rsquo;integrazione del wallet Cashu riceve una lucidatura con il filtraggio automatico delle prove che rimuove i token spesi dalla vista del wallet. Questo risolve la UX confusa dove gli utenti vedevano prove invalide insieme a ecash valido, rendendo inaffidabili i calcoli del saldo. Il filtraggio avviene lato client, mantenendo la privacy mentre migliora l&amp;rsquo;esperienza di pagamento per le transazioni peer-to-peer nelle chat.&lt;/p>
&lt;h3 id="amber-v410-pre-releases---revisione-ui">Amber v4.1.0 Pre-releases - Revisione 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> fino a &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre3">v4.1.0-pre3&lt;/a> introducono un&amp;rsquo;interfaccia ridisegnata per il popolare signer di eventi Android. La schermata di login ora visualizza chiaramente quale applicazione sta richiedendo permessi di firma, affrontando la confusione degli utenti sui flussi di autorizzazione. La nuova schermata eventi fornisce un&amp;rsquo;ispezione dettagliata di quali dati le applicazioni vogliono firmare, permettendo agli utenti di prendere decisioni di sicurezza informate prima di approvare le operazioni.&lt;/p>
&lt;p>La gestione dei permessi riceve attenzione significativa con un&amp;rsquo;interfaccia rinnovata che mostra esattamente quali capacità è stata concessa a ogni applicazione connessa. Gli utenti possono revocare permessi specifici senza disconnettersi completamente, abilitando il controllo a grana fine sulla delegazione della firma. I contatori relay rifattorizzati usando la libreria quartz aggiornata forniscono statistiche in tempo reale sul throughput degli eventi e le prestazioni dei relay. Le connessioni bunker &lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> (Nostr Connect) ora mostrano messaggi di errore dettagliati quando le connessioni falliscono, sostituendo gli errori di timeout criptici con diagnostiche azionabili.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request unite e sviluppi in fase iniziale che vale la pena tracciare. Alcuni sono funzionalità sperimentali che potrebbero evolversi prima del rilascio.&lt;/em>&lt;/p>
&lt;h3 id="zeus-wallet-lightning-con-nostr-wallet-connect">Zeus (Wallet Lightning con Nostr Wallet Connect)&lt;/h3>
&lt;p>Zeus ha unito 17 pull request questa settimana, rafforzando la sua posizione come implementazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect leader. Le correzioni più significative affrontano problemi di consistenza dei dati e conformità al protocollo che stavano causando problemi di interoperabilità con i client Nostr.&lt;/p>
&lt;p>&lt;strong>Correzione Cronologia Transazioni&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3542">PR #3542&lt;/a> risolve un bug critico dove le liste transazioni NWC visualizzavano voci errate o duplicate. Il problema si verificava quando Zeus metteva in cache i dati delle transazioni senza gestire correttamente gli aggiornamenti degli eventi, causando agli utenti di vedere transazioni fantasma o pagamenti mancanti. La correzione implementa la deduplicazione corretta degli eventi e l&amp;rsquo;invalidazione della cache, garantendo che la cronologia delle transazioni rifletta accuratamente lo stato del nodo Lightning.&lt;/p>
&lt;p>&lt;strong>Conformità al Protocollo&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3548">PR #3548&lt;/a> affronta risposte &lt;code>getInfo&lt;/code> incomplete che rompevano la compatibilità con i client che si aspettano la piena conformità NIP-47. Alcuni client Nostr crashavano quando ricevevano risposte parziali mancanti di campi come &lt;code>block_height&lt;/code> o &lt;code>network&lt;/code>. Il PR garantisce che tutti i campi richiesti ritornino con default sensati anche quando l&amp;rsquo;implementazione Lightning sottostante non li fornisce, migliorando la compatibilità di Zeus nell&amp;rsquo;ecosistema.&lt;/p>
&lt;p>&lt;strong>Resilienza della Connessione&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3543">PR #3543&lt;/a> implementa notifiche di timeout per connessioni Nostr bloccate. Precedentemente, gli utenti aspettavano indefinitamente quando le connessioni relay cadevano silenziosamente. Ora Zeus visualizza messaggi di timeout chiari dopo 30 secondi di inattività, permettendo agli utenti di riprovare o cambiare relay. &lt;a href="https://github.com/ZeusLN/zeus/pull/3541">PR #3541&lt;/a> aggiunge validazione backend per prevenire l&amp;rsquo;attivazione NWC su implementazioni Lightning incompatibili, individuando errori di configurazione prima che causino crash runtime.&lt;/p>
&lt;p>&lt;strong>Race Condition Cashu&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3531">PR #3531&lt;/a> corregge un bug di concorrenza nella gestione dei token Cashu dove operazioni di mint simultanee potevano corrompere il database dei token. La race condition si verificava quando più thread aggiornava i conteggi dei token senza un locking appropriato, risultando occasionalmente in saldi errati. La correzione aggiunge protezione mutex attorno alle sezioni critiche, garantendo aggiornamenti atomici allo stato dei token.&lt;/p>
&lt;h3 id="primal-android-client">Primal Android (Client)&lt;/h3>
&lt;p>Primal Android ha spedito 12 PR unite con miglioramenti significativi alla sicurezza del wallet e alla gestione dei media. L&amp;rsquo;implementazione del backup del wallet affronta una delle funzionalità più richieste, mentre il supporto NIP-92 migliora l&amp;rsquo;esperienza visiva nell&amp;rsquo;applicazione.&lt;/p>
&lt;p>&lt;strong>Sistema di Backup Wallet&lt;/strong> - Una serie di quattro PR (&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 una funzionalità completa di backup della seed phrase. Gli utenti possono ora esportare il loro mnemonico di 12 parole attraverso un flusso sicuro che previene screenshot, visualizza lo stato del backup nel dashboard del wallet e guida gli utenti esistenti attraverso la migrazione. L&amp;rsquo;implementazione segue gli standard BIP-39 e include validazione per prevenire che gli utenti perdano fondi a causa della registrazione errata della frase.&lt;/p>
&lt;p>&lt;strong>Dimensioni Media (NIP-92)&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/718">PR #718&lt;/a> implementa il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> per i corretti rapporti di aspetto di immagini e video. Senza metadati delle dimensioni, i client devono scaricare le immagini per determinare la loro dimensione, causando salti di layout mentre il contenuto si carica. NIP-92 aggiunge tag &lt;code>dim&lt;/code> (come &lt;code>[&amp;quot;dim&amp;quot;, &amp;quot;1920x1080&amp;quot;]&lt;/code>) agli eventi di metadati dei file, permettendo a Primal di riservare lo spazio corretto prima di scaricare i media. Questo elimina i reflow fastidiosi nelle gallerie di immagini e migliora le prestazioni percepite.&lt;/p>
&lt;p>&lt;strong>Affidabilità Signer Remoto&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/841">PR #841&lt;/a> corregge problemi di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> dove i prefissi &lt;code>wss://&lt;/code> mancanti causavano fallimenti silenziosi. Il PR valida gli URI relay durante la configurazione della connessione bunker, aggiungendo automaticamente il prefisso di protocollo quando gli utenti incollano domini nudi. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/843">PR #843&lt;/a> affronta un bug di threading dove condizioni di rete scarse causavano la pubblicazione delle risposte come note radice, rompendo il flusso della conversazione. La correzione garantisce che gli ID degli eventi genitore persistano attraverso le interruzioni di rete.&lt;/p>
&lt;h3 id="marmot-protocol-white-noise-libreria-chat-di-gruppo-crittografata">Marmot Protocol: White Noise (Libreria Chat di Gruppo Crittografata)&lt;/h3>
&lt;p>White Noise, la libreria Rust che alimenta le chat di gruppo crittografate del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Protocollo Marmot&lt;/a>, ha unito sei PR migliorando l&amp;rsquo;esperienza utente e la sicurezza. I cambiamenti portano Marmot più vicino alla parità di funzionalità con le applicazioni di messaggistica mainstream mantenendo la sua architettura privacy-first.&lt;/p>
&lt;p>&lt;strong>Ricevute di Lettura&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/433">PR #433&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/436">#436&lt;/a> implementano il tracciamento della lettura dei messaggi per le conversazioni di gruppo. Il sistema memorizza le posizioni di lettura per utente per gruppo all&amp;rsquo;interno di un singolo dispositivo, abilitando i badge del conteggio non letti. L&amp;rsquo;implementazione usa timestamp monotonici per tracciare l&amp;rsquo;ultima posizione di messaggio letto per ogni conversazione. Questa funzionalità fondamentale abilita indicatori UI che mostrano i conteggi di messaggi non letti per conversazione.&lt;/p>
&lt;p>&lt;strong>Fissaggio Conversazioni&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/442">PR #442&lt;/a> aggiunge il fissaggio persistente delle conversazioni attraverso un campo &lt;code>pin_order&lt;/code> nella tabella di giunzione &lt;code>accounts_groups&lt;/code> che collega gli account ai gruppi. Le conversazioni fissate mantengono la loro posizione in cima alle liste di chat indipendentemente dall&amp;rsquo;attività dei messaggi, rispettando le aspettative degli utenti da Signal e WhatsApp. L&amp;rsquo;implementazione usa l&amp;rsquo;ordinamento intero per permettere pin illimitati con ordinamento deterministico.&lt;/p>
&lt;p>&lt;strong>Risoluzione Commit Deterministica (MIP-03)&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">PR #152&lt;/a> (aperta) implementa il Marmot Improvement Proposal 03, risolvendo il problema critico delle race condition dei commit nelle chat di gruppo distribuite. Quando più membri inviano cambiamenti di stato del gruppo (aggiungere/rimuovere membri, cambiare permessi) simultaneamente, i client potrebbero divergere sull&amp;rsquo;ordinamento dei commit, frammentando il gruppo in stati incompatibili. MIP-03 introduce snapshot di epoca e una selezione deterministica del vincitore: vince il commit con il timestamp &lt;code>created_at&lt;/code> più precoce, con l&amp;rsquo;ID evento lessicografico come tiebreaker. Questo permette a tutti i client di convergere sullo stesso stato attraverso rollback e replay, mantenendo la coerenza del gruppo anche durante le partizioni di rete.&lt;/p>
&lt;p>&lt;strong>Hardening di Sicurezza&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/443">PR #443&lt;/a> previene la copia non necessaria di segreti crittografici usando riferimenti in &lt;code>resolve_group_image_path&lt;/code>. Questo riduce la finestra per attacchi alla memoria dove i segreti potrebbero essere recuperati da allocazioni heap liberate. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/438">PR #438&lt;/a> abilita la crittografia del database SQLCipher attraverso parametri keyring, proteggendo la cronologia dei messaggi a riposo. L&amp;rsquo;integrazione keyring permette l&amp;rsquo;archiviazione sicura delle chiavi nei keychain della piattaforma piuttosto che nei file di configurazione.&lt;/p>
&lt;h3 id="nostrdb-rs-libreria-database---pr-aperta">nostrdb-rs (Libreria Database) - PR Aperta&lt;/h3>
&lt;p>&lt;strong>Implementazione Query Streaming&lt;/strong> - &lt;a href="https://github.com/damus-io/nostrdb-rs/pull/58">PR #58&lt;/a> (aperta) propone query fold streaming per abilitare operazioni di database a zero allocazioni. L&amp;rsquo;implementazione aggiunge metodi &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>, e &lt;code>find_map&lt;/code> che processerebbero i risultati del database uno alla volta senza materializzare interi set di risultati in vettori. Questo approccio ridurrebbe il consumo di memoria e abiliterebbe la terminazione anticipata per pattern di query comuni.&lt;/p>
&lt;p>L&amp;rsquo;implementazione tecnica espone callback di risultati query a basso livello (&lt;code>ndb_query_visit&lt;/code>) come visitor Rust stateful che mappano varianti &lt;code>ControlFlow&lt;/code> ad azioni visitor C. Una volta unite, il codice applicativo si leggerà come logica iteratore mentre gira vicino al layer database. Ad esempio, contare note corrispondenti farebbe streaming attraverso i risultati piuttosto che raccoglierli, e &lt;code>find_map&lt;/code> ritornerebbe il primo risultato utile senza processare le righe rimanenti.&lt;/p>
&lt;p>nostrdb alimenta Damus e Notedeck, rispettivamente client iOS/macOS e desktop. Le query streaming abiliterebbero pattern efficienti come paginazione, filtraggio condizionale e controlli di esistenza. Il PR cambia 3 file con +756 aggiunte e -32 eliminazioni, un refactoring sostanziale del layer query. Gli utenti delle applicazioni basate su nostrdb-rs vedrebbero un uso ridotto della memoria quando navigano timeline grandi o cercano attraverso database eventi estesi.&lt;/p>
&lt;h3 id="nak-strumento-cli">nak (Strumento CLI)&lt;/h3>
&lt;p>nak, lo strumento Nostr da linea di comando di fiatjaf, ha unito sei PR focalizzati sui miglioramenti del sistema di build e nuove funzionalità. &lt;a href="https://github.com/fiatjaf/nak/pull/91">PR #91&lt;/a> implementa una funzionalità mirror Blossom, permettendo a nak di servire come mirror per server media Blossom. &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> è un protocollo di archiviazione media indirizzato ai contenuti che lavora insieme agli eventi Nostr.&lt;/p>
&lt;p>I PR rimanenti affrontano la compatibilità del sistema di build attraverso le piattaforme Windows, macOS e Linux, abilitando il supporto filesystem FUSE per montare gli eventi Nostr come directory locali.&lt;/p>
&lt;h3 id="damus-client-ios---pr-aperte">Damus (Client iOS) - PR Aperte&lt;/h3>
&lt;p>Damus ha 11 PR aperte che esplorano miglioramenti architetturali significativi. Sebbene questi non siano stati ancora uniti, segnalano direzioni importanti per lo sviluppo del client Nostr iOS, particolarmente attorno alla privacy, l&amp;rsquo;efficienza di sincronizzazione e l&amp;rsquo;ottimizzazione dei dati mobili.&lt;/p>
&lt;p>&lt;strong>Integrazione Tor&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3535">PR #3535&lt;/a> incorpora il client Arti Tor direttamente in Damus, abilitando connessioni relay anonime senza dipendenze esterne. A differenza degli approcci Orbot o Tor Browser, incorporare Arti fornisce un&amp;rsquo;integrazione senza soluzione di continuità con il sandboxing iOS e i limiti di esecuzione in background. L&amp;rsquo;implementazione Rust porta la sicurezza della memoria all&amp;rsquo;anonimizzazione di rete, riducendo la superficie di attacco rispetto a C Tor. Gli utenti potrebbero attivare la modalità Tor per relay o globalmente, con il client che gestisce la gestione dei circuiti in modo trasparente.&lt;/p>
&lt;p>&lt;strong>Protocollo di Sincronizzazione Negentropy&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> implementa Negentropy, un protocollo di riconciliazione di set che migliora radicalmente l&amp;rsquo;efficienza di sincronizzazione. Invece di scaricare tutti gli eventi dall&amp;rsquo;ultima connessione, Negentropy scambia fingerprint compatti (alberi Merkle) per identificare esattamente quali eventi differiscono tra client e relay. Per gli utenti che seguono centinaia di pubkey, questo riduce la banda di sincronizzazione da megabyte a kilobyte. L&amp;rsquo;implementazione si integra con RelayPool e SubscriptionManager, abilitando la sincronizzazione efficiente automatica attraverso tutti i relay connessi.&lt;/p>
&lt;p>&lt;strong>Modalità Dati Bassi&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3549">PR #3549&lt;/a> aggiunge funzionalità di conservazione dei dati cellulari rispondendo al feedback degli utenti sul consumo di banda. La modalità disabilita il caricamento automatico delle immagini, il prefetching dei video e riduce i limiti di sottoscrizione. Gli utenti su connessioni a consumo possono navigare contenuti testuali senza paura di superare i limiti dati. L&amp;rsquo;implementazione rispetta le impostazioni della modalità dati bassi di iOS e fornisce controlli granulari per diversi tipi di media.&lt;/p>
&lt;p>&lt;strong>Ottimizzazioni Database&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3548">PR #3548&lt;/a> rilavora l&amp;rsquo;archiviazione snapshot nostrdb per query più veloci e uso ridotto del disco. L&amp;rsquo;ottimizzazione cambia come gli snapshot del database persistono su disco, migliorando sia le prestazioni di lettura che l&amp;rsquo;amplificazione di scrittura. Questo affronta le lamentele sul consumo della batteria da parte degli utenti con database eventi grandi.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #5</title><link>https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat viene sottoposto a un audit di sicurezza professionale da Cure53, la stessa azienda che ha verificato Signal e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con oltre 17 PR già integrate per correggere vulnerabilità critiche. &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> è stato approvato, portando nel protocollo gli event video indirizzabili. Una NIP sulla crittografia post-quantistica apre la discussione sulla protezione futura di Nostr contro gli attacchi quantistici. Amethyst v1.05.0 introduce le liste di segnalibri, le note vocali e una versione desktop preliminare, mentre Nostur v1.25.3 migliora i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> con reazioni e risposte. Per quanto riguarda le librerie, rust-nostr estende il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> ai backend SQLite e LMDB, e NDK corregge un bug nel tracciamento delle subscription.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat viene sottoposto a un audit di sicurezza professionale da Cure53, la stessa azienda che ha verificato Signal e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con oltre 17 PR già integrate per correggere vulnerabilità critiche. &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> è stato approvato, portando nel protocollo gli event video indirizzabili. Una NIP sulla crittografia post-quantistica apre la discussione sulla protezione futura di Nostr contro gli attacchi quantistici. Amethyst v1.05.0 introduce le liste di segnalibri, le note vocali e una versione desktop preliminare, mentre Nostur v1.25.3 migliora i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> con reazioni e risposte. Per quanto riguarda le librerie, rust-nostr estende il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> ai backend SQLite e LMDB, e NDK corregge un bug nel tracciamento delle subscription.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="bitchat-completa-laudit-di-sicurezza-cure53">Bitchat Completa l&amp;rsquo;Audit di Sicurezza Cure53&lt;/h3>
&lt;p>Bitchat, il messenger crittografato per iOS che combina Nostr con Cashu, è stato sottoposto a un audit di sicurezza professionale da Cure53, una delle aziende di sicurezza più rispettate del settore. Cure53 ha precedentemente verificato Signal, Mullvad VPN e soprattutto la specifica di crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> che è alla base della messaggistica privata moderna su Nostr.&lt;/p>
&lt;p>L&amp;rsquo;audit ha rilevato oltre 12 problemi di sicurezza (BCH-01-002 fino a BCH-01-013). Il team di Bitchat ha risposto con oltre 17 pull request. Le correzioni principali includono:&lt;/p>
&lt;p>&lt;strong>Cancellazione dei Secret DH del Noise Protocol&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a> corregge sei punti in cui i secret condivisi Diffie-Hellman non venivano azzerati dopo lo scambio delle chiavi, ripristinando le garanzie di forward secrecy. Quando i secret persistono in memoria più a lungo del necessario, un dump della memoria o un attacco cold boot potrebbero compromettere le comunicazioni passate.&lt;/p>
&lt;p>&lt;strong>Verifica delle Firme&lt;/strong> - Diverse PR rafforzano i percorsi di verifica crittografica, assicurando che i controlli di autenticità dei messaggi non possano essere aggirati tramite input malformati.&lt;/p>
&lt;p>&lt;strong>Thread Safety&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a> aggiunge la sincronizzazione con barriere alle code delle ricevute di lettura in NostrTransport, prevenendo race condition che potrebbero causare corruzione dei dati o crash con alti volumi di messaggi.&lt;/p>
&lt;p>&lt;strong>Sicurezza della Memoria&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a> ottimizza il deduplicatore di messaggi per migliori prestazioni con alto throughput di messaggi, evitando l&amp;rsquo;esaurimento della memoria.&lt;/p>
&lt;p>&lt;strong>Validazione degli Input&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a> rafforza il parsing delle stringhe esadecimali per prevenire crash da input malformati, un vettore di attacco comune per denial-of-service.&lt;/p>
&lt;p>Bitchat gestisce ecash Cashu, rendendo essenziale una revisione di sicurezza professionale. L&amp;rsquo;audit segue quello del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> Protocol dello scorso anno e l&amp;rsquo;audit NIP-44 che ha verificato il layer di crittografia.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Approvate:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - Event Video Indirizzabili (&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>) introduce i kind 34235 (video orizzontale) e 34236 (video verticale) come event indirizzabili. Un tag &lt;code>d&lt;/code> obbligatorio fornisce identificatori univoci, così i metadati video possono essere aggiornati senza ripubblicare l&amp;rsquo;intero event. Un tag &lt;code>origin&lt;/code> opzionale traccia le fonti di importazione. Già implementato in Amethyst e nostrvine.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crittografia Post-Quantistica&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> propone l&amp;rsquo;aggiunta di algoritmi crittografici resistenti ai computer quantistici in Nostr. La specifica introduce ML-DSA-44 e Falcon-512 per le firme digitali, mirando a &amp;ldquo;event di altissimo valore&amp;rdquo; come applicazioni e autorità piuttosto che singoli utenti. Mentre la crittografia simmetrica di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (ChaCha20) è resistente ai quantum, il suo scambio di chiavi usa secp256k1 ECDH che è vulnerabile all&amp;rsquo;algoritmo di Shor. La proposta include ML-KEM per lo scambio di chiavi per colmare questa lacuna. Si tratta di una proposta in fase iniziale che apre la discussione sulla cripto-agilità per la sicurezza a lungo termine di Nostr.&lt;/li>
&lt;li>&lt;strong>BOLT12 per NIP-47&lt;/strong> - Dopo 137 commenti e un&amp;rsquo;ampia discussione, la comunità ha deciso che le offer BOLT12 meritano una specifica propria piuttosto che estendere &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. Le offer BOLT12 offrono miglioramenti significativi rispetto alle invoice BOLT11, inclusa la riusabilità, migliore privacy attraverso i blinded path e informazioni opzionali sul pagatore. La nuova NIP definirà metodi come &lt;code>make_offer&lt;/code>, &lt;code>pay_offer&lt;/code> e &lt;code>list_offers&lt;/code> per le implementazioni Nostr Wallet Connect.&lt;/li>
&lt;li>&lt;strong>NIP per Tracce Audio&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a> propone i kind 32100 per tracce musicali e 32101 per episodi podcast, dando ai contenuti audio lo stesso trattamento di prima classe che NIP-71 fornisce per i video. Attualmente, le piattaforme audio come Wavlake, Zapstr e Stemstr usano ciascuna formati di event proprietari, frammentando l&amp;rsquo;ecosistema. Uno standard comune permetterebbe l&amp;rsquo;interoperabilità così gli utenti potrebbero scoprire e riprodurre audio da qualsiasi client compatibile.&lt;/li>
&lt;li>&lt;strong>NIP-A3 Target di Pagamento Universali&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a> propone event di kind 10133 che usano URI &lt;code>payto:&lt;/code> RFC-8905 per esporre opzioni di pagamento su reti multiple. Invece di creare kind di event separati per Bitcoin, Lightning, Cashu o sistemi di pagamento tradizionali, questa astrazione permette ai client di interpretare tag standardizzati e invocare handler di pagamento nativi. L&amp;rsquo;approccio è a prova di futuro poiché i nuovi metodi di pagamento necessitano solo di uno schema URI &lt;code>payto:&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-51-e-nip-65">Approfondimento NIP: NIP-51 e NIP-65&lt;/h2>
&lt;p>Questa settimana trattiamo due NIP che memorizzano le preferenze utente: NIP-51 per organizzare i contenuti e NIP-65 per organizzare le connessioni ai relay. Entrambe usano event sostituibili, il che significa che ogni nuova pubblicazione sovrascrive la versione precedente.&lt;/p>
&lt;h3 id="nip-51ittopicsnip-51-liste">&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>: Liste&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a> definisce diversi tipi di liste per organizzare riferimenti a event, utenti, hashtag e altri contenuti. Amethyst v1.05.0 aggiunge il supporto ai segnalibri, rendendo questo un buon momento per capire come funzionano le liste.&lt;/p>
&lt;p>La specifica definisce diversi kind di liste, ciascuno con uno scopo diverso. Il kind 10000 è la vostra lista di silenziamento per nascondere utenti, thread o parole. Il kind 10001 fissa event da mettere in evidenza sul vostro profilo. Il kind 30003 memorizza i segnalibri, che è ciò che Amethyst ora supporta. Altri kind gestiscono set di following (30000), collezioni di articoli curate (30004), interessi per hashtag (30015) e set di emoji personalizzate (30030).&lt;/p>
&lt;p>Le liste referenziano contenuti attraverso tag. Una lista di segnalibri usa tag &lt;code>e&lt;/code> per event specifici e tag &lt;code>a&lt;/code> per contenuti indirizzabili come articoli:&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>Il tag &lt;code>d&lt;/code> fornisce un identificatore univoco, così potete mantenere più set di segnalibri come &amp;ldquo;saved-articles&amp;rdquo;, &amp;ldquo;read-later&amp;rdquo; o &amp;ldquo;favorites&amp;rdquo; sotto lo stesso kind.&lt;/p>
&lt;p>Le liste supportano sia elementi pubblici che privati. Gli elementi pubblici appaiono nell&amp;rsquo;array dei tag, visibili a chiunque recuperi l&amp;rsquo;event. Gli elementi privati vanno nel campo &lt;code>content&lt;/code>, crittografati usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> verso voi stessi. Questa doppia struttura vi permette di mantenere segnalibri pubblici aggiungendo note private, o mantenere una lista di silenziamento senza rivelare chi avete silenziato. Per crittografare verso voi stessi, usate NIP-44 con la vostra pubkey come destinatario.&lt;/p>
&lt;p>I kind della serie 10000 sono sostituibili, il che significa che i relay mantengono un solo event per pubkey. La serie 30000 è sostituibile parametrizzata, permettendo un event per combinazione di pubkey e tag &lt;code>d&lt;/code>. In entrambi i casi, aggiornare una lista significa pubblicare una sostituzione completa; non potete inviare modifiche incrementali. I client dovrebbero preservare i tag sconosciuti quando modificano le liste per evitare di sovrascrivere dati aggiunti da altre applicazioni.&lt;/p>
&lt;h3 id="nip-65ittopicsnip-65-metadati-lista-relay">&lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>: Metadati Lista Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> definisce event di kind 10002 che pubblicizzano quali relay un utente preferisce per leggere e scrivere. Questo aiuta altri utenti e client a trovare i vostri contenuti.&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>Ogni tag &lt;code>r&lt;/code> contiene un URL del relay e un marcatore opzionale. Un marcatore &lt;code>write&lt;/code> designa la vostra outbox: relay dove pubblicate i vostri contenuti. Un marcatore &lt;code>read&lt;/code> designa la vostra inbox: relay dove controllate menzioni, risposte e tag. Omettere il marcatore indica entrambi.&lt;/p>
&lt;p>Quando Alice vuole trovare i post di Bob, il suo client recupera il kind 10002 di Bob, estrae i suoi relay write (la sua outbox) e si iscrive lì. Quando Alice risponde a Bob, il suo client pubblica sui suoi relay read (la sua inbox) così lui vedrà la menzione. Questo routing consapevole dei relay è il &amp;ldquo;modello outbox&amp;rdquo;, e distribuisce gli utenti su molti relay invece di concentrare tutti su pochi server centrali.&lt;/p>
&lt;p>NIP-65 gestisce il routing dei contenuti pubblici, ma i messaggi privati usano una lista separata. &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> definisce il kind 10050 per i relay inbox dei DM, usando tag &lt;code>relay&lt;/code> invece di tag &lt;code>r&lt;/code>. Quando inviate a qualcuno un messaggio privato, i client cercano l&amp;rsquo;event kind 10050 del destinatario e pubblicano lì il messaggio crittografato gift-wrapped. Questa separazione mantiene il routing dei DM distinto dal routing dei contenuti pubblici, e permette agli utenti di specificare relay diversi per comunicazioni private rispetto a quelle pubbliche.&lt;/p>
&lt;p>Il modello outbox migliora la resistenza alla censura poiché nessun singolo relay deve memorizzare o servire i contenuti di tutti. I client mantengono connessioni ai relay elencati negli event NIP-65 degli utenti seguiti, collegandosi dinamicamente a nuovi relay mentre scoprono nuovi account. NIP-65 complementa gli hint dei relay trovati in altre NIP. Quando taggate qualcuno con &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;pubkey&amp;quot;, &amp;quot;wss://hint.relay&amp;quot;]&lt;/code>, l&amp;rsquo;hint dice ai client dove cercare quel riferimento specifico. NIP-65 fornisce la lista autorevole controllata dall&amp;rsquo;utente, mentre gli hint offrono scorciatoie incorporate nei singoli event.&lt;/p>
&lt;p>Per migliori risultati, mantenete aggiornata la vostra lista di relay poiché voci obsolete vi rendono più difficili da trovare. La specifica raccomanda da due a quattro relay per categoria. Elencare troppi relay grava su ogni client che vuole recuperare i vostri contenuti, rallentando la loro esperienza e aumentando il carico di rete. I client memorizzano in cache gli event NIP-65 e li aggiornano periodicamente per rimanere al passo con le preferenze aggiornate degli utenti.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;p>&lt;strong>Amethyst v1.05.0&lt;/strong> - Il popolare client Android &lt;a href="https://github.com/vitorpamplona/amethyst/releases">rilascia un aggiornamento importante&lt;/a> con diverse funzionalità di rilievo. Le liste di segnalibri &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> kind 30003 permettono agli utenti di salvare post per riferimento futuro, sincronizzandosi tra client compatibili. Le note vocali ora funzionano nei DM e nei post regolari con visualizzazione della forma d&amp;rsquo;onda, selezione del media server e indicatori di progresso del caricamento. I punteggi &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> sono ora visibili nell&amp;rsquo;interfaccia, aiutando gli utenti a capire come l&amp;rsquo;algoritmo valuta gli account relativamente al loro grafo sociale. La migrazione del database &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> migliora le prestazioni delle query come parte del lavoro Kotlin Multiplatform finanziato da OpenSats. Una release desktop preliminare porta Amethyst su Windows, macOS e Linux tramite Compose Multiplatform, condividendo lo stesso codebase dell&amp;rsquo;app Android. Nuovi flussi di onboarding per gli utenti facilitano l&amp;rsquo;esperienza per chi usa Nostr per la prima volta.&lt;/p>
&lt;p>&lt;strong>Nostur v1.25.3&lt;/strong> - Il client iOS e macOS &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases">si concentra sulla messaggistica privata&lt;/a> con miglioramenti a &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. Le conversazioni DM ora supportano reazioni e risposte, portando l&amp;rsquo;interattività dei post pubblici nei messaggi crittografati. La vista delle conversazioni è stata rielaborata con un migliore threading così gli scambi multi-messaggio sono più facili da seguire, e i timestamp mostrano &amp;ldquo;tempo fa&amp;rdquo; nella lista DM per una scansione rapida. Gli utenti desktop ottengono layout multi-colonna per visualizzare feed o conversazioni multiple affiancate. Il supporto al remote signer &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> permette agli utenti di mantenere le loro chiavi private in app di firma dedicate come Amber o nsec.app. Correzioni aggiuntive ripristinano la funzionalità DM su iOS 15 e iOS 16, risolvono ritardi nelle notifiche e aggiungono la possibilità di configurare quali relay ricevono i DM pubblicati.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa vi interessa, considerate di fare review o commentare!&lt;/em>&lt;/p>
&lt;h3 id="citrine-relay-android">Citrine (Relay Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/89">PR #89&lt;/a> corregge una vulnerabilità SQL injection nell&amp;rsquo;app relay personale Android. Il problema permetteva a dati di event malformati di eseguire query arbitrarie sul database, un difetto grave per qualsiasi app che memorizza ed elabora input non fidati. La correzione sanifica correttamente tutte le operazioni sul database usando query parametrizzate. Non è ancora stata taggata una release, quindi gli utenti dovranno aspettare la prossima versione o compilare dal sorgente. &lt;a href="https://github.com/greenart7c3/Citrine/pull/90">PR #90&lt;/a> ottimizza le prestazioni delle query ContentProvider con filtraggio e paginazione a livello di database, riducendo la latenza quando app esterne come Amethyst accedono al database di event di Citrine attraverso il layer di comunicazione inter-processo di Android.&lt;/p>
&lt;h3 id="rust-nostr-libreria">rust-nostr (Libreria)&lt;/h3>
&lt;p>Il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Richieste di Scomparsa) si sta espandendo attraverso i backend di database di rust-nostr. &lt;a href="https://github.com/rust-nostr/nostr/pull/1180">PR #1180&lt;/a>, integrata due settimane fa, ha aggiunto il supporto NIP-62 a SQLite, gestendo le richieste di scomparsa &lt;code>ALL_RELAYS&lt;/code> poiché il layer del database non conosce URL specifici dei relay. &lt;a href="https://github.com/rust-nostr/nostr/pull/1210">PR #1210&lt;/a> estende questo al backend LMDB, assicurando che le richieste di scomparsa siano persistite su disco e sopravvivano ai riavvii del relay. Un&amp;rsquo;implementazione IndexedDB per ambienti browser è anche in corso. Insieme, queste modifiche danno agli sviluppatori un supporto NIP-62 coerente attraverso SQLite, LMDB e presto lo storage del browser.&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> corregge un bug nel sistema di tracciamento seenEvents. Il problema causava che certi pattern di subscription marcassero erroneamente gli event come già visti, portando a contenuti mancati quando gli utenti aprivano nuove subscription o si riconnettevano ai relay. La correzione assicura che gli event siano tracciati accuratamente attraverso i cicli di vita delle subscription, il che è particolarmente importante per applicazioni che si iscrivono e cancellano dinamicamente in base alla navigazione dell&amp;rsquo;utente. NDK è passato alla beta.70 con questa correzione inclusa.&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> corregge un crash all&amp;rsquo;avvio che colpiva gli utenti iOS 17. Il problema derivava da un overflow aritmetico in &lt;code>NdbUseLock&lt;/code>, una classe di fallback usata perché i Mutex di Swift non sono disponibili su iOS 17. La correzione sostituisce l&amp;rsquo;approccio di sincronizzazione precedente con &lt;code>NSLock&lt;/code>, che è disponibile su iOS 17 e gestisce correttamente le race condition rimanenti. Gli utenti iOS 18+ non erano colpiti poiché hanno accesso all&amp;rsquo;implementazione nativa del Mutex Swift.&lt;/p>
&lt;p>Separatamente, un gruppo di miglioramenti per gli articoli longform è arrivato tramite &lt;a href="https://github.com/damus-io/damus/pull/3509">PR #3509&lt;/a>. Le barre di progresso della lettura tracciano la vostra posizione attraverso gli articoli, i tempi di lettura stimati appaiono nelle anteprime, e la modalità seppia con impostazioni di altezza riga regolabili forniscono una lettura più confortevole. La modalità focus nasconde automaticamente la chrome di navigazione durante lo scorrimento verso il basso e la ripristina al tocco, riducendo il disordine visivo per una lettura senza distrazioni. Diverse correzioni affrontano la visualizzazione delle immagini nei contenuti markdown e assicurano che gli articoli si aprano dall&amp;rsquo;inizio piuttosto che a metà.&lt;/p>
&lt;h3 id="zapstream-live-streaming">Zap.stream (Live Streaming)&lt;/h3>
&lt;p>L&amp;rsquo;integrazione della chat di YouTube e Kick collega i messaggi dalle piattaforme di streaming esterne a Nostr. Gli streamer che trasmettono in multicast su YouTube, Kick e Zap.stream possono ora vedere tutti i messaggi della chat in una vista unificata, con i messaggi da ogni piattaforma che appaiono accanto ai commenti nativi Nostr. Questo rimuove un importante punto di attrito per i creator che vogliono usare Nostr per lo streaming ma non possono abbandonare il pubblico sulle piattaforme consolidate. L&amp;rsquo;integrazione mostra da quale piattaforma ha origine ogni messaggio e gestisce il flusso di autenticazione per connettere account esterni.&lt;/p>
&lt;h3 id="chachi-gruppi-nip-29">Chachi (Gruppi NIP-29)&lt;/h3>
&lt;p>Il client di chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha integrato sei PR questa settimana. Un aggiornamento di sicurezza affronta &lt;a href="https://github.com/purrgrammer/chachi/pull/89">CVE-2026-22029&lt;/a>, una vulnerabilità XSS in react-router che potrebbe abilitare attacchi di open redirect; la correzione aggiorna a react-router-dom 6.30.0. &lt;a href="https://github.com/purrgrammer/chachi/pull/92">PR #92&lt;/a> aggiunge il caricamento paginato dei messaggi per le chat di gruppo, così le conversazioni lunghe si caricano incrementalmente piuttosto che tutte insieme. &lt;a href="https://github.com/purrgrammer/chachi/pull/91">PR #91&lt;/a> corregge diversi bug NIP-29 inclusa una race condition che causava nomi di gruppo vuoti al caricamento iniziale e liste di partecipanti non definite che facevano crashare le viste dei membri. La copertura delle traduzioni ora copre tutte le 31 lingue supportate con 1060 chiavi ciascuna.&lt;/p>
&lt;h3 id="0xchat-messaggistica">0xchat (Messaggistica)&lt;/h3>
&lt;p>Il client di messaggistica stile Telegram ha migliorato la conformità a &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> salvando correttamente i nomi dei pacchetti dei signer quando si usano app di firma esterne, correggendo problemi in cui l&amp;rsquo;app perdeva traccia di quale signer usare dopo i riavvii. La gestione delle risposte NIP-17 ora include correttamente il tag &lt;code>e&lt;/code> per il threading, assicurando che le risposte appaiano nel contesto di conversazione corretto attraverso i client. Le ottimizzazioni delle prestazioni affrontano il lag di scorrimento nelle liste di messaggi, un punto dolente comune quando si caricano cronologie di chat lunghe. Il salvataggio automatico delle bozze previene la perdita di messaggi se navigate via durante la composizione, e le opzioni di archiviazione file ora includono endpoint predefiniti FileDropServer e BlossomServer.&lt;/p>
&lt;h3 id="primal-ios">Primal (iOS)&lt;/h3>
&lt;p>Il supporto al remote signer &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> arriva su iOS tramite &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/184">PR #184&lt;/a>, completando il rollout cross-platform iniziato con Android diverse settimane fa. Gli utenti possono ora mantenere le loro chiavi private in servizi bunker dedicati come nsec.app o istanze nsecBunker self-hosted, connettendosi attraverso relay Nostr per firmare event senza esporre le chiavi all&amp;rsquo;app client. Questa separazione migliora la postura di sicurezza per gli utenti che vogliono usare le funzionalità di Primal mantenendo pratiche di gestione delle chiavi più rigorose. L&amp;rsquo;implementazione include la scansione di codici QR per gli URI di connessione al bunker e gestisce il flusso richiesta/risposta NIP-46 attraverso messaggi relay crittografati.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci tramite DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #4</title><link>https://nostrcompass.org/it/newsletters/2026-01-07-newsletter/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-07-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Primal Android implementa la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto per signer locali &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformandosi in un hub di firma completo per altre app Android. Il team del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a> ha affrontato le problematiche emerse da un audit di sicurezza con 18 PR integrate che rafforzano la messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a>. Citrine raggiunge la v1.0 e Applesauce rilascia la v5.0 per l&amp;rsquo;intera suite di librerie. TENEX sviluppa la supervisione di agenti AI su Nostr, e Jumble aggiunge il pooling intelligente dei relay. Una correzione alla specifica NIP-55 chiarisce i campi di ritorno di &lt;code>nip44_encrypt&lt;/code>, e una PR per &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> propone estensioni per espressioni di query per ricerche avanzate. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: perché la crittografia legacy presenta falle di sicurezza e come la sostituzione moderna le risolve.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Primal Android implementa la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto per signer locali &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformandosi in un hub di firma completo per altre app Android. Il team del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a> ha affrontato le problematiche emerse da un audit di sicurezza con 18 PR integrate che rafforzano la messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a>. Citrine raggiunge la v1.0 e Applesauce rilascia la v5.0 per l&amp;rsquo;intera suite di librerie. TENEX sviluppa la supervisione di agenti AI su Nostr, e Jumble aggiunge il pooling intelligente dei relay. Una correzione alla specifica NIP-55 chiarisce i campi di ritorno di &lt;code>nip44_encrypt&lt;/code>, e una PR per &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> propone estensioni per espressioni di query per ricerche avanzate. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: perché la crittografia legacy presenta falle di sicurezza e come la sostituzione moderna le risolve.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;p>&lt;strong>Primal Android diventa un Hub di Firma Completo&lt;/strong> - La &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Versione 2.6.18&lt;/a> aggiunge sia la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che la firma locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformando Primal in un signer completo per altre app Nostr. La firma remota tramite NIP-46 permette agli utenti di connettersi a servizi bunker attraverso i relay Nostr, mantenendo le chiavi completamente fuori dal dispositivo. La firma locale tramite NIP-55 espone Primal come content provider Android, così app come Amethyst o Citrine possono richiedere firme senza mai toccare la chiave privata. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">Diverse PR successive&lt;/a> hanno risolto problemi di compatibilità con il requisito della specifica NIP-55 per pubkey esadecimali, e migliorato il parsing di URI &lt;code>nostrconnect://&lt;/code> malformati. Il rilascio include anche pre-caching dei media per uno scorrimento più fluido, tempi di caricamento dei thread migliorati e pre-caching degli avatar.&lt;/p>
&lt;p>&lt;strong>Marmot Protocol rafforza la sicurezza dopo l&amp;rsquo;Audit&lt;/strong> - Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> (mdk), che implementa la messaggistica end-to-end crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> MLS, ha ricevuto ampie correzioni di sicurezza questa settimana. Diciotto pull request integrate hanno affrontato le problematiche dell&amp;rsquo;audit tra cui: &lt;a href="https://github.com/marmot-protocol/mdk/pull/97">verifica hash per immagini di gruppo crittografate&lt;/a> per prevenire attacchi di sostituzione blob a livello storage, &lt;a href="https://github.com/marmot-protocol/mdk/pull/110">paginazione per welcome pendenti&lt;/a> per prevenire esaurimento della memoria, &lt;a href="https://github.com/marmot-protocol/mdk/pull/112">perdita di MLS Group ID nei messaggi di errore&lt;/a>, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/98">applicazione della codifica base64&lt;/a> per i key package. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/20">specifica Marmot stessa è stata aggiornata&lt;/a> con MIP-04 v2 versioning e miglioramenti di sicurezza. PR attive continuano ad affrontare riuso di nonce, azzeramento dei segreti e vettori di inquinamento della cache.&lt;/p>
&lt;p>&lt;strong>Nostrability traccia il supporto Relay Hint&lt;/strong> - Un nuovo &lt;a href="https://github.com/nostrability/nostrability/issues/270">tracker di compatibilità relay hints&lt;/a> documenta come i client costruiscono e consumano relay hint nell&amp;rsquo;ecosistema. Il tracker rivela che mentre la maggior parte dei client ora costruisce hint secondo &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a>, il consumo varia ampiamente: alcuni client includono hint negli eventi in uscita ma non usano gli hint in entrata per il recupero. Sei client hanno ottenuto lo status &amp;ldquo;Full&amp;rdquo; per implementazione completa. Il tracker è utile per sviluppatori che verificano l&amp;rsquo;interoperabilità e per utenti che si chiedono perché alcuni client trovano contenuti che altri non riescono a trovare.&lt;/p>
&lt;p>&lt;strong>Nostria 2.0 rilascia revisione completa delle funzionalità Cross-Platform&lt;/strong> - Il client &lt;a href="https://nostria.app">Nostria&lt;/a> &lt;a href="#ZgotmplZ">ha rilasciato la versione 2.0&lt;/a> il 30 dicembre con aggiunte significative su iOS (TestFlight), Android (Play Store), Web e Windows. Il rilascio aggiunge supporto nativo per la musica con creazione di playlist, caricamento di tracce, pagamenti agli artisti basati su zap, e un player in stile WinAmp con equalizzatore funzionante. Lo streaming live ottiene l&amp;rsquo;integrazione Game API che mostra metadati ricchi durante gli streaming di gameplay. Una nuova funzione Summary genera digest di attività orari, giornalieri o settimanali come viste timeline compresse. La sezione Discover offre liste curate per trovare contenuti e profili. La pubblicazione di media è semplificata con generazione automatica di post short-form per la scoperta cross-client. Le connessioni ai signer remoti ora funzionano tramite scansione di codici QR senza configurazione manuale. La scoperta dei profili affronta un problema comune di Nostr: quando gli utenti si spostano tra relay senza portare i propri metadati, Nostria localizza il loro profilo e lo ripubblica sui relay correnti. Gli abbonati Premium ottengono integrazione con canali YouTube, Memo privati, dashboard analitiche e backup automatici delle liste di following con opzioni di merge/restore.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Integrate:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Corretto il campo di ritorno per il metodo &lt;code>nip44_encrypt&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>). I signer Android devono ora restituire il payload crittografato nel campo &lt;code>signature&lt;/code> (come &lt;code>nip44_decrypt&lt;/code>) invece che in un campo separato. Questo allinea la specifica con le implementazioni esistenti in Amber e Primal.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - Estensioni Espressioni di Query (&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>) propone di estendere la ricerca NIP-50 con espressioni di query strutturate. La PR aggiunge operatori come &lt;code>kind:1&lt;/code>, &lt;code>author:npub1...&lt;/code>, e combinazioni booleane (&lt;code>AND&lt;/code>, &lt;code>OR&lt;/code>, &lt;code>NOT&lt;/code>), abilitando query di ricerca più precise oltre il semplice matching testuale. Questo permetterebbe ai client di costruire interfacce di ricerca avanzate mantenendo la retrocompatibilità con stringhe di ricerca base.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-04-e-nip-44">Approfondimento NIP: NIP-04 e NIP-44&lt;/h2>
&lt;p>Questa settimana copriamo gli standard di crittografia Nostr: il legacy NIP-04 che incontrerete ancora, e la sua sostituzione moderna NIP-44 che corregge falle di sicurezza critiche.&lt;/p>
&lt;h3 id="nip-04ittopicsnip-04-messaggi-diretti-crittografati-legacy">&lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>: Messaggi Diretti Crittografati (Legacy)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a> è stato il primo tentativo di Nostr per la messaggistica crittografata, usando eventi di kind 4. Sebbene semplice da implementare, ha debolezze di sicurezza note ed è deprecato in favore di NIP-44.&lt;/p>
&lt;p>&lt;strong>Come funziona:&lt;/strong> NIP-04 usa ECDH (Elliptic Curve Diffie-Hellman) per derivare un segreto condiviso tra mittente e destinatario, poi crittografa 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>Il flusso di crittografia:&lt;/p>
&lt;ol>
&lt;li>Calcola il punto condiviso: &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>Deriva la chiave: &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>Genera IV casuale di 16 byte&lt;/li>
&lt;li>Crittografa: &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>Formatta il contenuto: &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Problemi di sicurezza:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Nessuna autenticazione:&lt;/strong> AES-CBC fornisce confidenzialità ma non integrità. Un attaccante che controlla un relay potrebbe modificare bit del ciphertext, causando modifiche prevedibili al plaintext (attacchi bit-flipping).&lt;/li>
&lt;li>&lt;strong>IV in chiaro:&lt;/strong> Il vettore di inizializzazione è trasmesso insieme al ciphertext, e la modalità CBC con IV prevedibili abilita attacchi chosen-plaintext.&lt;/li>
&lt;li>&lt;strong>Nessuna validazione del padding:&lt;/strong> Le implementazioni variano nel modo in cui gestiscono il padding PKCS#7, potenzialmente abilitando attacchi padding oracle.&lt;/li>
&lt;li>&lt;strong>Esposizione dei metadati:&lt;/strong> La pubkey del mittente, la pubkey del destinatario e il timestamp sono tutti visibili ai relay.&lt;/li>
&lt;li>&lt;strong>Riuso della chiave:&lt;/strong> Lo stesso segreto condiviso è usato per tutti i messaggi tra due parti, per sempre.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Perché esiste ancora:&lt;/strong> Molti client e relay più vecchi supportano solo NIP-04. Lo incontrerete quando interagite con sistemi legacy. Signer come Amber e app come Primal implementano ancora &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> per retrocompatibilità.&lt;/p>
&lt;h3 id="nip-44ittopicsnip-44-crittografia-versionata">&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: Crittografia Versionata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">NIP-44&lt;/a> è lo standard di crittografia moderno, progettato per correggere le falle note di NIP-04. Un audit di sicurezza Cure53 delle implementazioni NIP-44 ha identificato 10 problemi (inclusi attacchi temporali e preoccupazioni sulla forward secrecy) che sono stati affrontati prima della finalizzazione della specifica. Usa ChaCha20-Poly1305 con derivazione di chiave appropriata e crittografia autenticata.&lt;/p>
&lt;p>&lt;strong>Miglioramenti chiave rispetto a NIP-04:&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Aspetto&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">Cifrario&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">Autenticazione&lt;/td>
 &lt;td style="text-align: left">Nessuna&lt;/td>
 &lt;td style="text-align: left">Poly1305 MAC&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Derivazione chiave&lt;/td>
 &lt;td style="text-align: left">SHA256(shared_x)&lt;/td>
 &lt;td style="text-align: left">HKDF con salt&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Nonce&lt;/td>
 &lt;td style="text-align: left">IV 16 byte, pattern riusato&lt;/td>
 &lt;td style="text-align: left">Nonce casuale 24 byte&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Padding&lt;/td>
 &lt;td style="text-align: left">PKCS#7 (rivela lunghezza)&lt;/td>
 &lt;td style="text-align: left">Arrotondato a potenza di 2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Versionamento&lt;/td>
 &lt;td style="text-align: left">Nessuno&lt;/td>
 &lt;td style="text-align: left">Prefisso byte versione&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Flusso di crittografia:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Chiave di conversazione:&lt;/strong> Deriva una chiave stabile per ogni coppia mittente-destinatario:&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>Chiavi del messaggio:&lt;/strong> Per ogni messaggio, genera un nonce casuale di 32 byte e deriva chiavi di crittografia/autenticazione:&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>Padding del plaintext:&lt;/strong> Arrotonda alla prossima potenza di 2 (minimo 32 byte) per nascondere la lunghezza del messaggio:&lt;/p>
&lt;pre tabindex="0">&lt;code>padded = [length_u16_be] + [plaintext] + [zeri fino alla prossima potenza di 2]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Crittografa e autentica:&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>Formatta il payload:&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 di versione:&lt;/strong> Il primo byte (&lt;code>0x02&lt;/code>) indica la versione di crittografia. Questo permette upgrade futuri senza compromettere i messaggi esistenti. La versione &lt;code>0x01&lt;/code> era una bozza precedente mai ampiamente distribuita.&lt;/p>
&lt;p>&lt;strong>Decrittografia:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Decodifica base64, verifica che il byte di versione sia &lt;code>0x02&lt;/code>&lt;/li>
&lt;li>Estrai nonce (byte 1-32), ciphertext e MAC (ultimi 32 byte)&lt;/li>
&lt;li>Deriva la chiave di conversazione usando la chiave privata del destinatario e la chiave pubblica del mittente&lt;/li>
&lt;li>Deriva le chiavi del messaggio dalla chiave di conversazione e dal nonce&lt;/li>
&lt;li>Verifica il MAC prima di decrittografare (rifiuta se non valido)&lt;/li>
&lt;li>Decrittografa il ciphertext, estrai il prefisso di lunghezza, restituisci il plaintext senza padding&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Proprietà di sicurezza:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crittografia autenticata:&lt;/strong> Il MAC Poly1305 assicura che qualsiasi manomissione sia rilevata prima della decrittografia&lt;/li>
&lt;li>&lt;strong>Forward secrecy (parziale):&lt;/strong> Ogni messaggio usa un nonce unico, quindi compromettere un messaggio non rivela gli altri. Tuttavia, compromettere una chiave privata rivela comunque tutti i messaggi passati (nessun ratcheting).&lt;/li>
&lt;li>&lt;strong>Occultamento della lunghezza:&lt;/strong> Il padding a potenza di 2 oscura la lunghezza esatta del messaggio&lt;/li>
&lt;li>&lt;strong>Resistenza agli attacchi temporali:&lt;/strong> Confronto a tempo costante per la verifica del MAC&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Uso pratico:&lt;/strong> NIP-44 è il livello di crittografia per:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> messaggi diretti privati (dentro gift wrap)&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> comunicazione con signer remoti&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> crittografia seal&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-104/">Marmot Protocol&lt;/a> messaggi di gruppo, dove NIP-44 avvolge contenuto crittografato MLS usando una chiave derivata dal segreto esportatore MLS&lt;/li>
&lt;li>Qualsiasi applicazione che necessita crittografia sicura punto-a-punto&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Guida alla migrazione:&lt;/strong> Le nuove applicazioni dovrebbero usare esclusivamente NIP-44. Per retrocompatibilità, verificate se il client del contatto supporta NIP-44 (tramite metadati app &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> o supporto relay) prima di ricadere su NIP-04. Quando ricevete messaggi, tentate prima la decrittografia NIP-44, poi ricadete su NIP-04 per contenuti legacy.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>&lt;strong>Primal Android v2.6.18&lt;/strong> - Il &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">rilascio completo&lt;/a> aggiunge firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e firma locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformando Primal in un hub di firma per altre app Android. I miglioramenti delle prestazioni includono pre-caching dei media, pre-caching degli avatar e caricamento più veloce dei thread. Le correzioni di bug affrontano auto-menzioni nelle bio, crash nella galleria media e fallback dei titoli degli stream. Su iOS, Primal usa la riproduzione audio in background per mantenere l&amp;rsquo;app attiva per ricevere richieste di firma NIP-46; gli utenti possono cambiare il suono o silenziarlo completamente nelle impostazioni.&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.6&lt;/strong> - L&amp;rsquo;&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.6">ultimo rilascio&lt;/a> della piattaforma di trading P2P Bitcoin &lt;a href="https://nostrcompass.org/it/topics/nip-69/">NIP-69&lt;/a> completa l&amp;rsquo;implementazione del fondo di sviluppo con gli eventi di audit della Fase 4. I pagamenti delle commissioni dev sono ora tracciati tramite eventi Nostr kind 38383 pubblicati dopo ogni pagamento riuscito, abilitando verifica e analytics di terze parti. I calcoli degli importi sono stati corretti per i messaggi acquirente/venditore, e la logica del premium è stata allineata con l&amp;rsquo;implementazione di riferimento lnp2pbot.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.5&lt;/strong> - Il signer cross-platform &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.5">aggiunge la modalità scura&lt;/a>, visualizzazione migliorata delle icone app e layout UI più puliti. Le correzioni di bug affrontano conflitti iOS iCloud Private Relay e problemi di parsing degli eventi. Il rilascio migliora anche come il JSON degli eventi viene passato alla funzione di firma Rust.&lt;/p>
&lt;p>&lt;strong>Citrine v1.0.0&lt;/strong> - L&amp;rsquo;app relay Android &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v1.0.0">raggiunge la 1.0&lt;/a>. Citrine permette di eseguire un relay Nostr personale direttamente sul dispositivo Android, utile per caching locale, backup o come companion NIP-55. Questo rilascio aggiunge un gestore di crash report, migliora l&amp;rsquo;efficienza delle query database e aggiorna le traduzioni tramite Crowdin.&lt;/p>
&lt;p>&lt;strong>Applesauce v5.0.0&lt;/strong> - La suite di librerie TypeScript di hzrd149 &lt;a href="https://github.com/hzrd149/applesauce/releases">rilascia una major version&lt;/a> con breaking changes focalizzati su correttezza e semplicità. Il pacchetto core ora &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.0.0">verifica le firme degli eventi per default&lt;/a> e rinomina i metodi coordinate per usare terminologia &amp;ldquo;address&amp;rdquo; più chiara (&lt;code>parseCoordinate&lt;/code> -&amp;gt; &lt;code>parseReplaceableAddress&lt;/code>). Il pacchetto relay &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-relay%405.0.0">abbassa i retry di default da 10 a 3&lt;/a> e ignora i relay irraggiungibili per default, più aggiunge &lt;code>createUnifiedEventLoader&lt;/code> per un recupero eventi più semplice. Il pacchetto wallet ottiene la &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet%405.0.0">scoperta mint Cashu&lt;/a> &lt;a href="https://nostrcompass.org/it/topics/nip-87/">NIP-87&lt;/a>. Le dipendenze dirette da &lt;code>nostr-tools&lt;/code> sono state rimosse dai pacchetti, riducendo dimensione del bundle e conflitti di versione.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa vi interessa, considerate di revisionare o commentare!&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Una serie di PR migliorano l&amp;rsquo;esperienza degli articoli longform. &lt;a href="https://github.com/damus-io/damus/pull/3496">Miglioramenti UX di lettura&lt;/a> aggiungono una barra di progresso, tempo di lettura stimato, modalità seppia, altezza delle righe regolabile e modalità focus che nasconde la navigazione durante lo scorrimento. &lt;a href="https://github.com/damus-io/damus/pull/3489">Correzioni immagini&lt;/a> assicurano che le immagini nel contenuto markdown vengano visualizzate con proporzioni corrette preprocessando le immagini standalone come elementi block-level. &lt;a href="https://github.com/damus-io/damus/pull/3497">Card anteprima longform&lt;/a> sostituiscono il testo inline &lt;code>@naddr1...&lt;/code> con card di anteprima ricche che mostrano titolo dell&amp;rsquo;articolo e metadati. Una nuova &lt;a href="https://github.com/damus-io/damus/pull/3508">suite di test di integrazione relay&lt;/a> aggiunge 137 test relativi alla rete inclusa verifica protocollo &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> e comportamento in condizioni di rete degradate (simulazione 3G).&lt;/p>
&lt;h3 id="bitchat-messaggistica-crittografata">Bitchat (Messaggistica Crittografata)&lt;/h3>
&lt;p>Rafforzamento della sicurezza nel messenger iOS Nostr+Cashu. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">Pulizia segreti DH protocollo Noise&lt;/a> corregge sei posizioni dove i segreti condivisi non venivano azzerati dopo l&amp;rsquo;accordo chiavi Diffie-Hellman, ripristinando le garanzie di forward secrecy. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">Thread safety per code read receipt&lt;/a> aggiunge sincronizzazione barrier per prevenire race condition in NostrTransport. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">Ottimizzazione deduplicatore messaggi&lt;/a> migliora le prestazioni con alti volumi di messaggi, e &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">rafforzamento parsing stringhe hex&lt;/a> previene crash da input malformato.&lt;/p>
&lt;h3 id="frostr-firma-a-soglia">Frostr (Firma a Soglia)&lt;/h3>
&lt;p>Il protocollo di firma a soglia basato su &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/pull/62">ha aggiunto visualizzazione codici QR&lt;/a> per credenziali di gruppo e credenziali di share durante l&amp;rsquo;onboarding e nell&amp;rsquo;interfaccia signer. Questo abilita una configurazione più semplice quando si distribuiscono key share su dispositivi multipli, permettendo agli utenti di scansionare credenziali invece di copiare manualmente stringhe lunghe.&lt;/p>
&lt;h3 id="marmot-mdk-libreria">Marmot mdk (Libreria)&lt;/h3>
&lt;p>Oltre alle correzioni di sicurezza menzionate sopra, PR attive affrontano i rimanenti risultati dell&amp;rsquo;audit: &lt;a href="https://github.com/marmot-protocol/mdk/pull/109">Tipo Secret&lt;T> per azzeramento&lt;/a> introduce un tipo wrapper che azzera automaticamente i dati sensibili alla distruzione, &lt;a href="https://github.com/marmot-protocol/mdk/pull/111">paginazione query messaggi&lt;/a> previene esaurimento memoria durante il caricamento della cronologia chat, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/102">storage crittografato&lt;/a> aggiunge crittografia a riposo per il database SQLite che memorizza stato di gruppo e messaggi.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Una settimana intensa di correzioni di stabilità nel client Android. &lt;a href="https://github.com/vitorpamplona/amethyst/commit/2c42796">Parsing JSON tollerante&lt;/a> previene crash da eventi malformati rendendo Kotlin Serialization più permissiva. La validazione eventi ora &lt;a href="https://github.com/vitorpamplona/amethyst/commit/40f9622">controlla la dimensione del campo kind&lt;/a> prima dell&amp;rsquo;elaborazione per evitare eccezioni da valori sovradimensionati. La UI del trust score ha ottenuto un&amp;rsquo;icona più piccola per ridurre l&amp;rsquo;interferenza visiva, e &lt;a href="https://github.com/vitorpamplona/amethyst/commit/69c53ac">logging errori migliorato&lt;/a> aiuta a diagnosticare problemi di connessione ai relay. Aggiornamenti delle traduzioni sono arrivati tramite Crowdin, e diversi warning SonarQube sono stati affrontati.&lt;/p>
&lt;h3 id="tenex-agenti-ai">TENEX (Agenti AI)&lt;/h3>
&lt;p>Il framework di agenti AI nativo Nostr ha visto 81 commit questa settimana per costruire capacità autonome. Il nuovo &lt;a href="https://github.com/tenex-chat/tenex/pull/48">sistema di supervisione agenti&lt;/a> implementa euristiche comportamentali per monitorare le azioni degli agenti e intervenire quando necessario. &lt;a href="https://github.com/tenex-chat/tenex/commit/b244c10">Trasparenza della delega&lt;/a> aggiunge logging degli interventi utente alle trascrizioni di delega, così gli utenti possono verificare cosa hanno fatto gli agenti per loro conto. Il &lt;a href="https://github.com/tenex-chat/tenex/pull/47">registro provider LLM&lt;/a> è stato modularizzato per una più facile integrazione di diversi backend AI. Il supporto conversazioni cross-project permette agli agenti di mantenere il contesto attraverso multipli progetti basati su Nostr.&lt;/p>
&lt;h3 id="jumble-client-web">Jumble (Client Web)&lt;/h3>
&lt;p>Il client web focalizzato sui relay ha aggiunto diversi miglioramenti all&amp;rsquo;esperienza utente. &lt;a href="https://github.com/CodyTseng/jumble/commit/695f2fe">Pool relay intelligente&lt;/a> gestisce intelligentemente le connessioni basandosi sui pattern di utilizzo. &lt;a href="https://github.com/CodyTseng/jumble/commit/917fcd9">Toggle feed live&lt;/a> permette agli utenti di passare tra streaming in tempo reale e refresh manuale. &lt;a href="https://github.com/CodyTseng/jumble/commit/d1b3a8c">Auto-mostra nuove note&lt;/a> in cima fa emergere contenuto fresco senza richiedere ricaricamento della pagina. &lt;a href="https://github.com/CodyTseng/jumble/commit/fd9f41c">Cache persistente&lt;/a> per feed following e notifiche migliora i tempi di caricamento alle visite successive. Gli utenti possono ora &lt;a href="https://github.com/CodyTseng/jumble/commit/53a67d8">cambiare i relay di default&lt;/a> attraverso le impostazioni.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via NIP-17 DM&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #3</title><link>https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> mentre il 2025 si chiude, ripercorriamo cinque anni di traguardi di dicembre nell&amp;rsquo;evoluzione di Nostr. Dal primo rilascio client di fiatjaf nel dicembre 2020, passando per la decisiva donazione di 14 BTC di Jack Dorsey nel dicembre 2022, fino alla proliferazione dei signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> di questo mese e all&amp;rsquo;accelerazione di 162x della cache di NDK, dicembre ha segnato con costanza momenti di svolta per il protocollo. Questo numero speciale segue la storia tecnica attraverso ogni dicembre, documentando la crescita del protocollo da due relay sperimentali a oltre 2.500 nodi in 50 paesi. In più: il modulo desktop di Amethyst prende forma tramite Quartz, Notedeck guadagna la messaggistica, Citrine ospita web app, e &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> corregge l&amp;rsquo;internazionalizzazione per gli script non latini.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> mentre il 2025 si chiude, ripercorriamo cinque anni di traguardi di dicembre nell&amp;rsquo;evoluzione di Nostr. Dal primo rilascio client di fiatjaf nel dicembre 2020, passando per la decisiva donazione di 14 BTC di Jack Dorsey nel dicembre 2022, fino alla proliferazione dei signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> di questo mese e all&amp;rsquo;accelerazione di 162x della cache di NDK, dicembre ha segnato con costanza momenti di svolta per il protocollo. Questo numero speciale segue la storia tecnica attraverso ogni dicembre, documentando la crescita del protocollo da due relay sperimentali a oltre 2.500 nodi in 50 paesi. In più: il modulo desktop di Amethyst prende forma tramite Quartz, Notedeck guadagna la messaggistica, Citrine ospita web app, e &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> corregge l&amp;rsquo;internazionalizzazione per gli script non latini.&lt;/p>
&lt;h2 id="retrospettiva-di-dicembre-cinque-dicembre-di-nostr">Retrospettiva di Dicembre: Cinque Dicembre di Nostr&lt;/h2>
&lt;p>Quest&amp;rsquo;anno Nostr compie cinque anni. fiatjaf ha avviato il protocollo il 7 novembre 2020, e ogni dicembre da allora ha segnato una fase distinta della sua evoluzione: da proof of concept a movimento globale fino a ecosistema di produzione. Questa è una retrospettiva tecnica da dicembre 2020 a dicembre 2025, gli anni formativi che hanno stabilito le fondamenta di Nostr e ne hanno catalizzato il momento di svolta.&lt;/p>
&lt;h3 id="dicembre-2020-genesi">Dicembre 2020: Genesi&lt;/h3>
&lt;p>Il primo mese completo di esistenza di Nostr ha visto fiatjaf pubblicare &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, il primo client del protocollo, costruito con Quasar (Vue.js) e absurd-sql per lo storage locale. fiatjaf aveva già definito l&amp;rsquo;architettura di base: utenti identificati da chiavi pubbliche secp256k1, tutti i post firmati crittograficamente, relay che fungono da storage stupido senza comunicare tra loro. Uno o due relay sperimentali servivano un piccolo gruppo di primi adottanti che si coordinavano nel gruppo Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>, lanciato il 16 novembre. La &lt;a href="https://fiatjaf.com/nostr.html">documentazione originale&lt;/a> descriveva &amp;ldquo;il più semplice protocollo aperto capace di creare un social network globale resistente alla censura&amp;rdquo;, una premessa che avrebbe richiesto altri due anni per dimostrarsi.&lt;/p>
&lt;h3 id="dicembre-2021-sviluppo-iniziale">Dicembre 2021: Sviluppo Iniziale&lt;/h3>
&lt;p>Il 31 dicembre 2021, Nostr è arrivato sulla &lt;a href="https://news.ycombinator.com/item?id=29749061">front page di Hacker News&lt;/a> con 110 punti e 138 commenti, grazie a una submission di Cameri. Questo ha segnato la prima esposizione significativa del protocollo alla più ampia comunità di sviluppatori. La rete funzionava su circa sette relay con meno di 1.000 utenti. Branle ha ricevuto aggiornamenti inclusa l&amp;rsquo;importazione di chiavi private il 31 dicembre e il supporto multi-relay. Un client da riga di comando, noscl, forniva interazione da terminale. Le specifiche del protocollo esistevano nella documentazione di fiatjaf, anche se il repository formale dei &lt;a href="https://github.com/nostr-protocol/nips">NIPs&lt;/a> non sarebbe stato creato fino a maggio 2022. Il protocollo era, come lo descriveva fiatjaf, &amp;ldquo;un work in progress&amp;rdquo;.&lt;/p>
&lt;h3 id="dicembre-2022-il-punto-di-svolta">Dicembre 2022: Il Punto di Svolta&lt;/h3>
&lt;p>Dicembre 2022 ha trasformato Nostr da esperimento di nicchia a movimento mainstream. Il catalizzatore è arrivato il 15 dicembre, quando Jack Dorsey ha donato &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 dopo aver scoperto il protocollo e aver dichiarato che era &amp;ldquo;al 100 percento ciò che volevamo da Bluesky, ma non era sviluppato da un&amp;rsquo;azienda&amp;rdquo;. Il 16 dicembre fiatjaf ha annunciato la divisione dei fondi con William Casarin (jb55), sviluppatore di Damus, e Dorsey ha verificato il suo account Nostr (npub: &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>). Il finanziamento ha legittimato il progetto dall&amp;rsquo;oggi al domani.&lt;/p>
&lt;p>Nella stessa settimana, il caos di Twitter ha accelerato l&amp;rsquo;adozione. Il 14-15 dicembre sono arrivate le sospensioni di giornalisti di primo piano del New York Times, CNN e Washington Post. Il 18 dicembre Twitter ha &lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">annunciato il divieto&lt;/a> per gli account che promuovevano Nostr, Mastodon e altre piattaforme. La policy è stata revocata il giorno successivo dopo il contraccolpo pubblico. L&amp;rsquo;esodo ha spinto gli utenti a esplorare alternative.&lt;/p>
&lt;p>Lo sviluppo del protocollo ha subito un&amp;rsquo;impennata. Il 16 dicembre è stato unito &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>), introducendo identificatori codificati in bech32 (npub, nsec, note, nprofile, nevent) che rendevano le chiavi leggibili dagli umani e distinguibili. Il repository NIPs ha registrato oltre 36 commit quel mese, inclusi aggiornamenti a NIP-40 e NIP-07. I client si sono moltiplicati: Damus ha riempito la beta TestFlight in poche ore, Astral ha forkato Branle per la creazione dei profili, Snort è stato lanciato come client web &amp;ldquo;veloce e resistente alla censura&amp;rdquo;, e Vitor Pamplona ha iniziato lo sviluppo di Amethyst. Alby v1.22.1 &amp;ldquo;Kemble&amp;rsquo;s Cascade of Stars&amp;rdquo; è uscita il 22 dicembre con supporto NIP-19. Al 7 dicembre, Nostr aveva circa 800 utenti con profili; quando Damus è arrivato sull&amp;rsquo;App Store il 31 gennaio 2023, i cancelli si sono spalancati, spingendo la crescita oltre 315.000 utenti entro giugno 2023.&lt;/p>
&lt;h3 id="dicembre-2023-maturazione-dellecosistema">Dicembre 2023: Maturazione dell&amp;rsquo;Ecosistema&lt;/h3>
&lt;p>Dicembre 2023 ha segnato un punto di inflessione critico per la sicurezza del protocollo Nostr. Il 20 dicembre, &lt;a href="https://github.com/nostr-protocol/nips/pull/746">NIP-44 revisione 3 è stato unito&lt;/a> dopo un audit di sicurezza indipendente di Cure53 (NOS-01) che ha identificato 10 problemi nelle implementazioni TypeScript, Go e Rust, inclusi timing attack e problemi di forward secrecy. La specifica aggiornata ha sostituito la cifratura difettosa di &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> con ChaCha20 e HMAC-SHA256, stabilendo la base crittografica che oggi sostiene i DM privati di &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e il gift wrapping di &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. Nella stessa settimana, &lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSats ha annunciato la quarta ondata di grant&lt;/a> il 21 dicembre, finanziando sette progetti tra cui Lume, noStrudel, ZapThreads e un audit indipendente di NIP-44. Questo seguiva la &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">prima ondata di luglio 2023&lt;/a>, che aveva finanziato Damus, Coracle, Iris e altri, portando l&amp;rsquo;allocazione totale del Nostr Fund a circa 3,4 milioni di dollari distribuiti su 39 grant.&lt;/p>
&lt;p>Il mese ha anche messo in luce tensioni di sostenibilità nell&amp;rsquo;ecosistema. Il 28 dicembre, William Casarin (jb55) &lt;a href="https://stacker.news/items/368863">ha scritto su Stacker News&lt;/a> che il 2024 sarebbe stato &amp;ldquo;probabilmente l&amp;rsquo;ultimo anno di Damus&amp;rdquo;, citando il fatto che &amp;ldquo;i client nostr non fanno soldi&amp;rdquo; dopo che le restrizioni di Apple sugli zaps in-app avevano limitato pesantemente il potenziale di ricavo. Il team Damus aveva già rifiutato finanziamenti VC. Nel frattempo, &lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a> è uscita il 26 dicembre, estendendo &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> con i metodi &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> e &lt;code>get_info&lt;/code>, gettando le basi per le integrazioni wallet che sarebbero poi diventate standard nei client.&lt;/p>
&lt;h3 id="dicembre-2024-avanzamento-del-protocollo">Dicembre 2024: Avanzamento del Protocollo&lt;/h3>
&lt;p>Dicembre 2024 si è aperto con il &lt;a href="https://damus.io/notedeck/">lancio alpha di Notedeck&lt;/a> il 30 novembre, il client desktop Rust-based del team Damus con interfaccia multi-colonna e supporto per più account. Costruito per Linux, macOS e Windows, con Android pianificato per il 2025, Notedeck è stato inizialmente distribuito agli abbonati Damus Purple e ha rappresentato un&amp;rsquo;espansione strategica oltre iOS. Due settimane dopo, &lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSats ha annunciato la nona ondata di grant&lt;/a> il 16 dicembre, finanziando AlgoRelay, il primo relay algoritmico per feed personalizzati, Pokey, app Android con Bluetooth mesh per internet limitato, Nostr Safebox (&lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> con storage di token &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>) e LumiLumi, client web leggero e accessibile, spingendo l&amp;rsquo;allocazione totale del Nostr Fund a circa 9 milioni di dollari, un aumento del 67% su base annua.&lt;/p>
&lt;p>Il mese ha visto una significativa maturazione dei client in tutto l&amp;rsquo;ecosistema. &lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a> è arrivato il 23 dicembre con supporto File Metadata (&lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a>), integrazione Blossom e ricerca relay di &lt;a href="https://nostrcompass.org/it/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> è uscita il 12 dicembre con onboarding rielaborato e integrazione nostr-editor. Lo sviluppo del protocollo è rimasto attivo con 30 pull request inviate tra il 9 e il 22 dicembre, di cui 10 unite, inclusi riscritture di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per usare solo la cifratura NIP-44 e il lavoro continuo su &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> per la cifratura double ratchet a livello Signal. Le statistiche di rete hanno mostrato oltre 224.000 trusted pubkey event giornalieri, una crescita di 4x anno su anno nei nuovi profili con contact list e un aumento del 50% negli event di scrittura pubblica.&lt;/p>
&lt;h3 id="dicembre-2025-espansione-dellecosistema">Dicembre 2025: Espansione dell&amp;rsquo;Ecosistema&lt;/h3>
&lt;p>Dicembre 2025 ha portato la prosecuzione della maturazione del protocollo e dell&amp;rsquo;espansione dell&amp;rsquo;ecosistema. Il 21 dicembre, &lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSats ha annunciato la quattordicesima ondata di grant Nostr&lt;/a>, finanziando tre progetti: YakiHonne, un client multi-piattaforma con creator portal per contenuti long-form e integrazione pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>/Nutzaps, Quartz, la libreria Kotlin Multiplatform di Vitor Pamplona che alimenta Amethyst e permetterà una versione iOS, e Nostr Feedz, l&amp;rsquo;integrazione bidirezionale RSS-to-Nostr di PlebOne. I rinnovi dei grant sono andati a Dart NDK e al nostr-relay di Mattn.&lt;/p>
&lt;p>L&amp;rsquo;evoluzione del protocollo è continuata con &lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a> (messaggistica Bluetooth Low Energy, &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>) unito a novembre, permettendo la sincronizzazione offline tra dispositivi. &lt;a href="https://nostrcompass.org/it/topics/nip-a4/">NIP-A4&lt;/a> (Public Messages, kind 24, &lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>) è arrivato più tardi nel mese, definendo messaggi per la schermata notifiche che usano tag &lt;code>q&lt;/code> per evitare complicazioni di threading. &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha ricevuto un importante chiarimento (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>), introducendo il tag &lt;code>hidden&lt;/code> per gruppi veramente privati e non individuabili. Anche la specifica di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ha visto affinamenti (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>), affrontando un errore di implementazione comune in cui gli sviluppatori chiamavano &lt;code>get_public_key&lt;/code> da processi in background.&lt;/p>
&lt;p>Sul lato client, &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Primal Android è diventato un signer NIP-55 completo&lt;/a> attraverso otto PR unite che implementano &lt;code>LocalSignerContentProvider&lt;/code>, unendosi ad Amber e Aegis come opzioni di firma Android. La &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#notable-code-and-documentation-changes">libreria NDK ha raggiunto query cache 162x più veloci&lt;/a>, passando da ~3.690ms a ~22ms, eliminando scritture duplicate e lookup non necessari nella cache 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 ha introdotto &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Zapsnags&lt;/a> per flash sale via zaps. White Noise ha distribuito &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a> per notifiche push che preservano la privacy. Per una copertura completa, consultate &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-17-newsletter/">Newsletter #1&lt;/a> e &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/">Newsletter #2&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>Cinque anni fa, fiatjaf pubblicò Branle per una manciata di utenti distribuiti su due relay sperimentali. Oggi il protocollo supporta oltre 140 client, più di 2.500 relay in 50 paesi e una crescente web of trust che collega centinaia di migliaia di coppie di chiavi. Il modello di dicembre fatto di grandi rilasci è continuato anche questo mese, con messaggistica Bluetooth, proliferazione di signer Android e grant infrastrutturali che segnalano investimenti continui negli strumenti cross-platform.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;p>&lt;strong>Amethyst Desktop prende forma&lt;/strong> - Il grant Quartz della quattordicesima ondata di OpenSats sta già producendo risultati. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1625">PR #1625&lt;/a> crea un modulo &lt;code>:desktopApp&lt;/code> completo per Amethyst usando Compose Multiplatform, con schermate di login e global feed già funzionanti su Desktop JVM. L&amp;rsquo;architettura converte il modulo &lt;code>:commons&lt;/code> in Kotlin Multiplatform con una struttura pulita dei source set (&lt;code>commonMain&lt;/code>, &lt;code>jvmAndroid&lt;/code>, &lt;code>androidMain&lt;/code>, &lt;code>jvmMain&lt;/code>), permettendo componenti UI condivisi tra Android e desktop e lasciando le decisioni specifiche della piattaforma a ciascun target. Questo getta le basi per la futura versione iOS tramite lo stesso approccio Kotlin Multiplatform.&lt;/p>
&lt;p>&lt;strong>Risposte vocali in Amethyst&lt;/strong> - Un regalo di Natale da davotoula: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1622">PR #1622&lt;/a> aggiunge schermate dedicate alle risposte vocali con visualizzazione della waveform, supporto alla ri-registrazione, selezione del media server e indicatori di avanzamento upload. Gli utenti possono ora rispondere con audio sia ai messaggi vocali root sia alle risposte vocali.&lt;/p>
&lt;p>&lt;strong>Notedeck aggiunge la messaggistica&lt;/strong> - Notedeck, il client desktop di Damus, ha guadagnato una funzione messaggi in &lt;a href="https://github.com/damus-io/notedeck/pull/1223">PR #1223&lt;/a>, espandendosi oltre la navigazione della timeline verso la comunicazione diretta.&lt;/p>
&lt;p>&lt;strong>Citrine ospita web app&lt;/strong> - Citrine ora può &lt;a href="https://github.com/greenart7c3/Citrine/pull/81">ospitare applicazioni web&lt;/a>, trasformando il telefono in un server web Nostr local-first. Una seconda &lt;a href="https://github.com/greenart7c3/Citrine/pull/85">PR #85&lt;/a> aggiunge la riconnessione automatica e il broadcasting degli event quando la connettività di rete ritorna, con copertura di test completa su diversi livelli API Android.&lt;/p>
&lt;p>&lt;strong>Registro Nostrability per developer toolkit&lt;/strong> - Il tracker &lt;a href="https://github.com/nostrability/nostrability/issues/264">Developer Kits &amp;amp; Tooling&lt;/a> mantiene un registro curato di SDK, librerie e strumenti per sviluppatori in diversi linguaggi, tra cui TypeScript, Rust, Python, Go, Dart e Swift. Se siete nuovi allo sviluppo su Nostr, questo è un buon punto di partenza per trovare il toolkit adatto al vostro stack.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Cambiamenti recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a>&lt;/strong> - Correzione critica di internazionalizzazione per la normalizzazione dei d-tag wiki (&lt;a href="https://github.com/nostr-protocol/nips/pull/2177">#2177&lt;/a>). Le regole precedenti convertivano tutti i caratteri non ASCII in &lt;code>-&lt;/code>, rompendo il supporto a giapponese, cinese, arabo, cirillico e altri script. La specifica aggiornata preserva le lettere UTF-8, applica il lowercase solo ai caratteri che hanno varianti maiuscole/minuscole e include esempi completi: &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code> resta &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>, &lt;code>&amp;quot;Москва&amp;quot;&lt;/code> diventa &lt;code>&amp;quot;москва&amp;quot;&lt;/code>, e script misti come &lt;code>&amp;quot;日本語 Article&amp;quot;&lt;/code> si normalizzano in &lt;code>&amp;quot;日本語-article&amp;quot;&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>&lt;strong>Zapstore 1.0-rc1&lt;/strong> - Il permissionless app store basato su Nostr distribuisce il &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0-rc1">primo release candidate&lt;/a> della sua nuova architettura, con un completo refresh della UI, package manager riscritto con migliore gestione degli errori, App Stacks per la scoperta curata, schermate profilo riprogettate, controllo degli aggiornamenti in background e infinite scrolling nelle liste delle release.&lt;/p>
&lt;p>&lt;strong>KeyChat v1.38.1&lt;/strong> - L&amp;rsquo;app di messaggistica cifrata basata su MLS &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.38.1%2B6489">aggiunge il supporto a UnifiedPush&lt;/a> per le notifiche push su Android e Linux, oltre all&amp;rsquo;autenticazione biometrica per le operazioni che incidono sulla privacy. Disponibile per Android, Windows, macOS e Linux.&lt;/p>
&lt;p>&lt;strong>Alby Go v2.0.0&lt;/strong> - Il companion mobile wallet Lightning &lt;a href="https://github.com/getAlby/go/releases/tag/v2.0.0">distribuisce un redesign visivo&lt;/a> con nuovo logo, palette colori aggiornata, rubrica riprogettata e tastiera migliorata per l&amp;rsquo;inserimento degli importi. BTC Map è ora accessibile dalla schermata principale e le descrizioni delle transazioni compaiono nelle notifiche.&lt;/p>
&lt;p>&lt;strong>nak v0.17.4&lt;/strong> - Lo strumento Nostr da riga di comando di fiatjaf è stato &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.4">rilasciato&lt;/a>, dopo la correzione della settimana scorsa in v0.17.3 alla restrizione Linux di LMDB.&lt;/p>
&lt;h2 id="cambiamenti-notevoli-nel-codice-e-nella-documentazione">Cambiamenti notevoli nel codice e nella documentazione&lt;/h2>
&lt;p>&lt;em>Pull request aperte e lavori nelle prime fasi che vale la pena osservare.&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">Relay hint NIP-19&lt;/a> implementa il consumo dei relay hint nel recupero degli event. Quando gli utenti aprono link nevent, nprofile o naddr, Damus ora estrae i relay hint dai dati bech32 TLV e si connette a relay effimeri per recuperare contenuti che non si trovano nel relay pool dell&amp;rsquo;utente. L&amp;rsquo;implementazione include cleanup ref-counted per prevenire race condition durante lookup concorrenti. &lt;a href="https://github.com/damus-io/damus/pull/3474">Image URL detection&lt;/a> converte automaticamente gli URL immagine incollati in anteprime thumbnail nel composer, con un badge di posizione nel carosello per immagini multiple. &lt;a href="https://github.com/damus-io/damus/pull/3473">npub paste conversion&lt;/a> trasforma stringhe npub/nprofile incollate in link mention con risoluzione asincrona del profilo.&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> aggiunge un&amp;rsquo;interfaccia event per gli zap split &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, permettendo ai post di specificare più destinatari che condividono gli zaps in arrivo, utile per collaborazioni, revenue sharing o mance sia ai creatori di contenuti sia agli strumenti che usano. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1624">Quartz feature parity documentation&lt;/a> aggiunge una tabella dettagliata che traccia quali funzionalità sono implementate tra target Android, Desktop JVM e iOS, evidenziando che a iOS mancano la crittografia core (&lt;code>Secp256k1Instance&lt;/code>), la serializzazione JSON e le strutture dati.&lt;/p>
&lt;h3 id="notedeck-desktop">Notedeck (Desktop)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1226">Timeline filter rebuild&lt;/a> corregge un bug per cui gli account non più seguiti continuavano a comparire nei feed. I filtri della timeline venivano costruiti una sola volta a partire dalla contact list e non venivano mai aggiornati; la correzione aggiunge il tracciamento di &lt;code>contact_list_timestamp&lt;/code> e un metodo &lt;code>invalidate()&lt;/code> per innescare la ricostruzione quando cambia lo stato dei follow.&lt;/p>
&lt;h3 id="citrine-relay-android">Citrine (Relay Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/86">ContentProvider API&lt;/a> espone il database event del relay locale alle altre app Android tramite &lt;code>ContentResolver&lt;/code>. A differenza dell&amp;rsquo;interfaccia WebSocket, che richiede alle app di mantenere una connessione persistente e parlare il protocollo relay Nostr, ContentProvider offre accesso diretto sincrono al database tramite il meccanismo IPC nativo di Android. Le app esterne possono interrogare gli event per ID, pubkey, kind o intervallo di date, inserire nuovi event con validazione e cancellarli senza dover gestire connessioni socket.&lt;/p>
&lt;h3 id="rust-nostr-libreria">rust-nostr (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1183">Supporto NIP-40 a livello relay&lt;/a> aggiunge la gestione della scadenza al livello del relay builder. Gli event scaduti vengono ora rifiutati prima dello storage e filtrati prima dell&amp;rsquo;invio ai client, eliminando la necessità che ogni implementazione del database gestisca i controlli di scadenza in modo indipendente.&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 la funzionalità di mirroring blob per lo strumento da riga di comando.&lt;/p>
&lt;h3 id="mostro-trading-p2p">Mostro (Trading P2P)&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/559">Dev fee audit events&lt;/a> aggiunge audit trail trasparenti per i pagamenti del fondo sviluppo tramite event Nostr di kind 8383. L&amp;rsquo;implementazione pubblica event di audit non bloccanti dopo i pagamenti fee riusciti, includendo dettagli dell&amp;rsquo;ordine e hash dei pagamenti ed escludendo le pubkey di buyer e seller per motivi di privacy.&lt;/p>
&lt;h3 id="mdk-marmot-development-kit">MDK (Marmot Development Kit)&lt;/h3>
&lt;p>Sono arrivate tre correzioni da security audit: &lt;a href="https://github.com/marmot-protocol/mdk/pull/40">Author verification&lt;/a> impone che le rumor pubkey corrispondano alle credenziali MLS del mittente, impedendo attacchi di impersonation. &lt;a href="https://github.com/marmot-protocol/mdk/pull/41">KeyPackage identity binding&lt;/a> verifica che l&amp;rsquo;identità della credential corrisponda ai signer degli event. &lt;a href="https://github.com/marmot-protocol/mdk/pull/42">Admin update validation&lt;/a> impedisce set admin vuoti e assegnazioni admin a non membri.&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 di pagamento trust-minimized per beni fisici. L&amp;rsquo;architettura usa &lt;code>makeHoldInvoice&lt;/code> di Alby per bloccare i fondi del buyer nel suo wallet, con settlement attivato solo dopo la verifica dell&amp;rsquo;inventario da parte del merchant. Il protocollo di handshake scorre attraverso DM cifrati di &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>: il buyer invia la richiesta ordine, il merchant risponde con la HODL invoice, il buyer paga con fondi bloccati, il merchant conferma stock e spedizione, poi il settlement rilascia i fondi. Il supporto cart multi-merchant divide i pagamenti tra i vendor.&lt;/p>
&lt;h3 id="jumble-client-web">Jumble (Client Web)&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/pull/713">Per-relay discovery mode&lt;/a> aggiunge un toggle per nascondere i post degli utenti seguiti su relay specifici, permettendo feed di scoperta basati sulla lingua, per esempio nostr.band/lang/*. La funzionalità filtra i post in cui la pubkey dell&amp;rsquo;autore compare nella follow list dell&amp;rsquo;utente, persistendo lo stato del toggle per URL relay in localStorage.&lt;/p>
&lt;h3 id="white-noise-messaggistica-cifrata">White Noise (Messaggistica Cifrata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/937">Media upload retry&lt;/a> aggiunge opzioni di retry per gli upload falliti. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/927">Profile edit warnings&lt;/a> avvisano gli utenti sulle modifiche al profilo. Sul backend, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/422">whitenoise-rs&lt;/a> corregge una race condition nella creazione di AccountGroup.&lt;/p>
&lt;h3 id="npubcash-servizio-lightning-address">npub.cash (Servizio Lightning Address)&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/npubcash-server/pull/40">v3 rewrite&lt;/a> migra il monorepo e il server a Bun, aggiunge il supporto SQLite, rimuove la compatibilità v1, implementa LUD-21 e aggiunge aggiornamenti realtime per le mint quote.&lt;/p>
&lt;h3 id="nostr-java-libreria">nostr-java (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v1.1.1">v1.1.1&lt;/a> distribuisce refactor della gestione WebSocket e una migliore robustezza dei test attraverso &lt;a href="https://github.com/tcheeric/nostr-java/pull/499">due PR&lt;/a>.&lt;/p>
&lt;h3 id="repository-nips">Repository NIPs&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2180">Migrazione Djot di NIP-54&lt;/a> propone una modifica separata alla specifica wiki: passare il formato dei contenuti da Asciidoc a Djot, un linguaggio di markup leggero con sintassi più pulita. La PR introduce link in stile reference per i wikilink, rendendo i riferimenti incrociati tra articoli wiki più leggibili nel sorgente. &lt;a href="https://github.com/nostr-protocol/nips/pull/2179">NIP-XX Quorum&lt;/a> introduce la governance threshold multi-signature per i gruppi Nostr usando FROST. Un Quorum è un nsec condiviso tra i membri attraverso uno schema T-of-N in cui i membri possono rappresentare sé stessi o delegare a un consiglio di rappresentanti. Quando il consiglio cambia, il vecchio nsec diventa obsoleto e uno nuovo viene distribuito; l&amp;rsquo;atto finale di ogni consiglio è firmare l&amp;rsquo;event di transizione della governance. La specifica definisce membership pubblica o privata, elezioni e poll, eventuali &amp;ldquo;leggi&amp;rdquo; in linguaggio naturale e, soprattutto, ontologie di quorum in cui i quorum possono essere membri di altri quorum, permettendo strutture gerarchiche come località che aderiscono a organismi regionali. I casi d&amp;rsquo;uso vanno dallo sviluppo di codice sorgente ai consigli di amministrazione, dalle HOA alle comunità moderate.&lt;/p>
&lt;hr>
&lt;p>Per questa settimana e per quest&amp;rsquo;anno è tutto. State costruendo qualcosa? Avete novità da condividere? Volete che parliamo del vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o cercateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #2</title><link>https://nostrcompass.org/it/newsletters/2025-12-24-newsletter/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-24-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Tre implementazioni signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ricevono aggiornamenti: Amber aggiunge caching delle prestazioni, Aegis ottiene supporto URI &lt;code>nostrsigner:&lt;/code>, e Primal Android si unisce a loro come signer locale completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; per vendite flash tramite zap. Mostro aggiunge un fondo di sviluppo. Quattro aggiornamenti NIP arrivano inclusi Messaggi Pubblici (kind 24) e miglioramenti alla privacy dei gruppi. Le query cache NDK accelerano di 162x, Applesauce aggiunge reazioni e supporto wallet NIP-60, e Tenex introduce l&amp;rsquo;architettura RAL per la delega di agenti AI. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a> (liste follow) e &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (threading delle risposte), specifiche fondamentali per costruire timeline sociali e conversazioni.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Tre implementazioni signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ricevono aggiornamenti: Amber aggiunge caching delle prestazioni, Aegis ottiene supporto URI &lt;code>nostrsigner:&lt;/code>, e Primal Android si unisce a loro come signer locale completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; per vendite flash tramite zap. Mostro aggiunge un fondo di sviluppo. Quattro aggiornamenti NIP arrivano inclusi Messaggi Pubblici (kind 24) e miglioramenti alla privacy dei gruppi. Le query cache NDK accelerano di 162x, Applesauce aggiunge reazioni e supporto wallet NIP-60, e Tenex introduce l&amp;rsquo;architettura RAL per la delega di agenti AI. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a> (liste follow) e &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (threading delle risposte), specifiche fondamentali per costruire timeline sociali e conversazioni.&lt;/p>
&lt;h2 id="news">Notizie&lt;/h2>
&lt;p>&lt;strong>Primal Android Diventa un Signer NIP-55&lt;/strong> - Costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#primal-android">supporto Nostr Connect della settimana scorsa&lt;/a>, Primal ha implementato capacita&amp;rsquo; complete di firma locale attraverso otto pull request unite. L&amp;rsquo;implementazione include un &lt;code>LocalSignerContentProvider&lt;/code> completo che espone le operazioni di firma ad altre app Android tramite l&amp;rsquo;interfaccia content provider di Android, seguendo la specifica &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. L&amp;rsquo;architettura separa chiaramente le responsabilita&amp;rsquo;: &lt;code>SignerActivity&lt;/code> gestisce i flussi di approvazione rivolti all&amp;rsquo;utente, &lt;code>LocalSignerService&lt;/code> gestisce le operazioni in background, e un nuovo sistema di permessi consente agli utenti di controllare quali app possono richiedere firme. Questo rende Primal un&amp;rsquo;alternativa valida ad Amber per gli utenti Android che vogliono mantenere le proprie chiavi in un&amp;rsquo;app mentre ne usano altre per diverse esperienze Nostr.&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags: Vendite Flash via Lightning&lt;/strong> - Il marketplace nativo Nostr ha introdotto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">&amp;ldquo;Zapsnags&amp;rdquo;&lt;/a>, una funzionalita&amp;rsquo; di vendita flash che consente agli acquirenti di acquistare articoli direttamente dal loro feed sociale con un singolo zap. L&amp;rsquo;implementazione filtra le note kind 1 taggate con &lt;code>#shopstr-zapsnag&lt;/code> e le renderizza come schede prodotto con un pulsante &amp;ldquo;Zap to Buy&amp;rdquo; invece del flusso carrello standard. Quando un acquirente fa uno zap, il sistema genera una richiesta di pagamento usando &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, controlla la ricevuta zap kind 9735 per confermare il pagamento, poi cripta le informazioni di spedizione usando il gift wrapping &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> prima di inviarle privatamente al venditore. La funzionalita&amp;rsquo; memorizza i dettagli dell&amp;rsquo;acquirente localmente per acquisti ripetuti e include una dashboard per commercianti per creare inserzioni di vendita flash. E&amp;rsquo; una combinazione intelligente di primitive sociali, di pagamento e di privacy che dimostra come il design componibile di Nostr abiliti nuovi pattern di commercio.&lt;/p>
&lt;p>&lt;strong>Mostro Introduce Fondo di Sviluppo&lt;/strong> - La piattaforma di trading Bitcoin P2P &lt;a href="https://nostrcompass.org/it/topics/nip-69/">NIP-69&lt;/a> ha &lt;a href="https://github.com/MostroP2P/mostro/pull/555">implementato commissioni di sviluppo configurabili&lt;/a> per supportare la manutenzione sostenibile. Gli operatori possono impostare &lt;code>dev_fee_percentage&lt;/code> tra 10-100% della commissione di trading Mostro (default 30%), che viene automaticamente instradata a un fondo di sviluppo ad ogni scambio riuscito. L&amp;rsquo;implementazione aggiunge tre colonne database (&lt;code>dev_fee&lt;/code>, &lt;code>dev_fee_paid&lt;/code>, &lt;code>dev_fee_payment_hash&lt;/code>) per tracciare i contributi e valida la percentuale all&amp;rsquo;avvio del daemon. La documentazione tecnica in &lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a> spiega il sistema. Questo modello opt-in consente agli operatori di supportare lo sviluppo continuo mantenendo piena trasparenza sull&amp;rsquo;allocazione delle commissioni.&lt;/p>
&lt;h2 id="nip-updates">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuovi NIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-a4/">NIP-A4&lt;/a> (Messaggi Pubblici, kind 24)&lt;/strong> - Un nuovo kind per messaggi dello schermo notifiche progettato per ampio supporto client (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>). A differenza delle conversazioni threaded, questi messaggi non hanno concetto di cronologia chat o catene di messaggi. Usano tag &lt;code>q&lt;/code> (citazioni) invece di tag &lt;code>e&lt;/code> per evitare complicazioni di threading, rendendoli ideali per semplici notifiche pubbliche che appaiono nel feed notifiche di un destinatario senza creare stato di conversazione.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Modifiche Significative:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - Importante chiarimento della semantica dei gruppi (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>). Il tag &lt;code>closed&lt;/code> ora significa &amp;ldquo;impossibile scrivere&amp;rdquo; (sola lettura per non-membri), disaccoppiato dalla meccanica di adesione. Un nuovo tag &lt;code>hidden&lt;/code> impedisce ai relay di servire eventi di metadati o membri ai non-membri, abilitando gruppi veramente privati che sono impossibili da scoprire senza invito out-of-band. Il tag &lt;code>private&lt;/code> controlla la visibilita&amp;rsquo; dei messaggi permettendo comunque metadati pubblici per la scoperta.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Aggiunto kind 30006 per set di immagini curate (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>), seguendo il pattern di 30004 (articoli) e 30005 (video). Gia&amp;rsquo; implementato in Nostria.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Chiarito l&amp;rsquo;avvio della connessione per signer Android (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>). Gli sviluppatori che implementavano sessioni multi-utente usavano erroneamente &lt;code>get_public_key&lt;/code> chiamandolo da processi in background. La specifica aggiornata raccomanda di chiamarlo solo una volta durante la connessione iniziale, prevenendo un comune errore di implementazione.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">Approfondimento NIP: NIP-02 e NIP-10&lt;/h2>
&lt;p>Questa settimana copriamo due NIP essenziali per la funzionalita&amp;rsquo; sociale: come i client sanno chi seguite e come le conversazioni sono threaded.&lt;/p>
&lt;h3 id="nip-02ittopicsnip-02-lista-follow">&lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a>: Lista Follow&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a> definisce gli eventi kind 3, che memorizzano la vostra lista follow. Questo semplice meccanismo alimenta il grafo sociale che rende possibili le timeline.&lt;/p>
&lt;p>&lt;strong>Struttura:&lt;/strong> Un evento kind 3 contiene tag &lt;code>p&lt;/code> che elencano le pubkey seguite:&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>Ogni tag &lt;code>p&lt;/code> ha quattro posizioni: il nome del tag, la pubkey seguita (esadecimale), un suggerimento URL relay opzionale, e un &amp;ldquo;petname&amp;rdquo; opzionale (un soprannome locale). Il suggerimento relay dice ad altri client dove trovare gli eventi di quell&amp;rsquo;utente. Il petname vi consente di assegnare nomi memorabili ai contatti senza affidarvi ai nomi visualizzati auto-dichiarati.&lt;/p>
&lt;p>&lt;strong>Comportamento sostituibile:&lt;/strong> Kind 3 rientra nell&amp;rsquo;intervallo sostituibile (0, 3, 10000-19999), quindi i relay mantengono solo l&amp;rsquo;ultima versione per pubkey. Quando seguite qualcuno di nuovo, il vostro client pubblica un nuovo kind 3 completo contenente tutti i vostri follow piu&amp;rsquo; quello nuovo. Questo significa che le liste follow devono essere complete ogni volta; non potete pubblicare aggiornamenti incrementali.&lt;/p>
&lt;p>&lt;strong>Costruire timeline:&lt;/strong> Per costruire un feed home, i client recuperano il kind 3 dell&amp;rsquo;utente, estraggono tutte le pubkey dai tag &lt;code>p&lt;/code>, poi si iscrivono agli eventi kind 1 da quegli autori:&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>Il relay restituisce le note corrispondenti, e il client le renderizza. I suggerimenti relay nel kind 3 aiutano i client a sapere quali relay interrogare per ogni utente seguito.&lt;/p>
&lt;p>&lt;strong>Petname e identita&amp;rsquo;:&lt;/strong> Il campo petname abilita uno schema di naming decentralizzato. Invece di fidarvi di qualsiasi nome un utente dichiara nel suo profilo, potete assegnare la vostra etichetta. Un client potrebbe visualizzare &amp;ldquo;alice (Mia Sorella)&amp;rdquo; dove &amp;ldquo;alice&amp;rdquo; viene dal suo profilo kind 0 e &amp;ldquo;Mia Sorella&amp;rdquo; e&amp;rsquo; il vostro petname. Questo fornisce contesto che i nomi utente globali non possono.&lt;/p>
&lt;p>&lt;strong>Considerazioni pratiche:&lt;/strong> Poiche&amp;rsquo; gli eventi kind 3 sono sostituibili e devono essere completi, i client dovrebbero preservare tag sconosciuti durante l&amp;rsquo;aggiornamento. Se un altro client ha aggiunto tag che il vostro client non capisce, sovrascrivere alla cieca perderebbe quei dati. Aggiungete nuovi follow invece di ricostruire da zero.&lt;/p>
&lt;h3 id="nip-10ittopicsnip-10-threading-note-di-testo">&lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a>: Threading Note di Testo&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a> specifica come le note kind 1 si referenziano a vicenda per formare thread di risposte. Capire questo e&amp;rsquo; essenziale per costruire viste di conversazione.&lt;/p>
&lt;p>&lt;strong>Il problema:&lt;/strong> Quando qualcuno risponde a una nota, i client devono sapere: A cosa e&amp;rsquo; una risposta? Qual e&amp;rsquo; la radice della conversazione? Chi dovrebbe essere notificato? NIP-10 risponde a queste domande attraverso tag &lt;code>e&lt;/code> (riferimenti eventi) e tag &lt;code>p&lt;/code> (menzioni pubkey).&lt;/p>
&lt;p>&lt;strong>Tag marcati (preferiti):&lt;/strong> I client moderni usano marcatori espliciti nei tag &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;Ottimo punto! Sono d&amp;#39;accordo.&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>Il marcatore &lt;code>root&lt;/code> punta alla nota originale che ha iniziato il thread. Il marcatore &lt;code>reply&lt;/code> punta alla nota specifica a cui si sta rispondendo. Se rispondete direttamente alla root, usate solo &lt;code>root&lt;/code> (nessun tag &lt;code>reply&lt;/code> necessario). La distinzione conta per il rendering: il &lt;code>reply&lt;/code> determina l&amp;rsquo;indentazione in una vista thread, mentre &lt;code>root&lt;/code> raggruppa tutte le risposte insieme.&lt;/p>
&lt;p>&lt;strong>Regole di threading:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Risposta diretta alla root: Un tag &lt;code>e&lt;/code> con marcatore &lt;code>root&lt;/code>&lt;/li>
&lt;li>Risposta a una risposta: Due tag &lt;code>e&lt;/code>, uno &lt;code>root&lt;/code> e uno &lt;code>reply&lt;/code>&lt;/li>
&lt;li>Il &lt;code>root&lt;/code> rimane costante in tutto il thread; &lt;code>reply&lt;/code> cambia in base a cosa state rispondendo&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Tag pubkey per notifiche:&lt;/strong> Includete tag &lt;code>p&lt;/code> per tutti quelli che dovrebbero essere notificati. Come minimo, taggate l&amp;rsquo;autore della nota a cui state rispondendo. La convenzione e&amp;rsquo; anche includere tutti i tag &lt;code>p&lt;/code> dall&amp;rsquo;evento parent (cosi&amp;rsquo; tutti nella conversazione rimangono nel loop), piu&amp;rsquo; qualsiasi utente che @menzionate nel vostro contenuto.&lt;/p>
&lt;p>&lt;strong>Suggerimenti relay:&lt;/strong> La terza posizione nei tag &lt;code>e&lt;/code> e &lt;code>p&lt;/code> puo&amp;rsquo; contenere un URL relay dove quell&amp;rsquo;evento o contenuto utente potrebbe essere trovato. Questo aiuta i client a recuperare il contenuto referenziato anche se non sono connessi al relay originale.&lt;/p>
&lt;p>&lt;strong>Tag posizionali deprecati:&lt;/strong> Le prime implementazioni Nostr inferivano il significato dalla posizione del tag invece che dai marcatori: il primo tag &lt;code>e&lt;/code> era root, l&amp;rsquo;ultimo era reply, quelli in mezzo erano menzioni. Questo approccio e&amp;rsquo; deprecato perche&amp;rsquo; crea ambiguita&amp;rsquo;. Se vedete tag &lt;code>e&lt;/code> senza marcatori, sono probabilmente da client piu&amp;rsquo; vecchi. Le implementazioni moderne dovrebbero sempre usare marcatori espliciti.&lt;/p>
&lt;p>&lt;strong>Costruire viste thread:&lt;/strong> Per visualizzare un thread, recuperate l&amp;rsquo;evento root, poi interrogate tutti gli eventi con un tag &lt;code>e&lt;/code> che referenzia quella root:&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>Ordinate i risultati per &lt;code>created_at&lt;/code> e usate i marcatori &lt;code>reply&lt;/code> per costruire la struttura ad albero. Gli eventi il cui &lt;code>reply&lt;/code> punta alla root sono risposte di primo livello; gli eventi il cui &lt;code>reply&lt;/code> punta a un&amp;rsquo;altra risposta sono risposte annidate.&lt;/p>
&lt;h2 id="releases">Rilasci&lt;/h2>
&lt;p>&lt;strong>Zeus v0.12.0&lt;/strong> - Costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#zeus-lightning-wallet">supporto pagamenti paralleli NWC della settimana scorsa&lt;/a>, la &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.0">release principale&lt;/a> del wallet Lightning rilascia un servizio completo Nostr Wallet Connect &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> con supporto relay personalizzato e tracciamento budget. Una &lt;a href="https://github.com/ZeusLN/zeus/pull/3455">correzione ricarica budget&lt;/a> assicura che le connessioni usino i limiti correnti. &lt;a href="https://github.com/ZeusLN/zeus/pull/3460">Copia indirizzo Lightning&lt;/a> non include piu&amp;rsquo; il prefisso &lt;code>lightning:&lt;/code>, correggendo problemi di incolla nei campi profilo Nostr.&lt;/p>
&lt;p>&lt;strong>Amber v4.0.6&lt;/strong> - Il signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.6">aggiunge caching delle prestazioni&lt;/a> alle operazioni di firma e migliora la gestione errori durante la decifratura di contenuti malformati. L&amp;rsquo;affidabilita&amp;rsquo; della connessione e&amp;rsquo; migliorata con logica di retry per eventi di connessione relay, e diverse correzioni crash affrontano casi limite intorno a URI &lt;code>nostrconnect://&lt;/code> invalidi e interazioni con schermate di permesso.&lt;/p>
&lt;p>&lt;strong>nak v0.17.3&lt;/strong> - L&amp;rsquo;&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.3">ultima release&lt;/a> dello strumento Nostr a riga di comando restringe le build LMDB a Linux, correggendo problemi di compilazione cross-platform.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.4&lt;/strong> - Il signer Nostr cross-platform &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.4">aggiunge supporto&lt;/a> per lo schema URI &lt;code>nostrsigner:&lt;/code> definito in &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, abbinandosi al flusso di connessione di Amber. I dati relay locali possono ora essere importati ed esportati per backup, e la release include correzioni bug per errori socket relay e miglioramenti UI all&amp;rsquo;interfaccia relay locale.&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa cattura la vostra attenzione, considerate di revisionare o commentare!&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">Persistenza lista mute&lt;/a> corregge un problema dove le liste mute venivano cancellate all&amp;rsquo;avvio a freddo. La correzione aggiunge guard per prevenire sovrascritture accidentali durante l&amp;rsquo;inizializzazione dell&amp;rsquo;app. &lt;a href="https://github.com/damus-io/damus/pull/3457">Timing stream profilo&lt;/a> elimina un ritardo di ~1 secondo prima che i profili in cache apparissero. Precedentemente, le viste attendevano che i task di sottoscrizione ripartissero; ora &lt;code>streamProfile()&lt;/code> produce immediatamente dati in cache da NostrDB, rimuovendo la finestra dove pubkey abbreviate e immagini placeholder venivano mostrate.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messaggistica Crittografata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/919">Streaming messaggi in tempo reale&lt;/a> sostituisce il precedente meccanismo di polling con un&amp;rsquo;architettura basata su stream. Il nuovo &lt;code>ChatStreamNotifier&lt;/code> consuma direttamente lo stream di messaggi dell&amp;rsquo;SDK Rust, mantenendo l&amp;rsquo;ordine cronologico e gestendo efficientemente gli aggiornamenti incrementali. I test hanno mostrato miglioramenti significativi nella reattivita&amp;rsquo;. Una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/921">API lista chat&lt;/a> aggiunge &lt;code>get_chat_list&lt;/code> per recuperare sommari delle conversazioni, e una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/905">correzione ordinamento stabile&lt;/a> previene loop di riordinamento messaggi usando &lt;code>createdAt&lt;/code> con ID messaggio come spareggio.&lt;/p>
&lt;h3 id="ndk">NDK (Libreria)&lt;/h3>
&lt;p>Due pull request hanno fornito miglioramenti drammatici delle prestazioni della cache. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a> ha corretto un bug dove gli eventi letti dalla cache SQLite venivano immediatamente riscritti, causando 100% di scritture duplicate all&amp;rsquo;avvio dell&amp;rsquo;app. La correzione aggiunge un guard &lt;code>fromCache&lt;/code> e implementa controllo duplicati O(1) tramite un Set in memoria. Per set di risultati piccoli (&amp;lt;100 eventi), il trasferimento JSON diretto sostituisce l&amp;rsquo;overhead della codifica binaria. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a> ha rimosso chiamate &lt;code>seenEvent&lt;/code> non necessarie per eventi in cache. Il lookup cache LRU costava 0.24-0.64ms per evento; per 5,700 eventi in cache, questo aggiungeva ~1.4 secondi di overhead. Risultato: le query cache sono scese da ~3,690ms a ~22ms (162x piu&amp;rsquo; veloci).&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1176">Supporto REQ multi-filtro&lt;/a> e&amp;rsquo; stato ripristinato dopo essere stato rimosso in un refactor precedente. L&amp;rsquo;SDK accetta di nuovo &lt;code>Vec&amp;lt;Filter&amp;gt;&lt;/code> per richieste di sottoscrizione, abilitando query efficienti che combinano piu&amp;rsquo; condizioni filtro con logica OR. &lt;a href="https://github.com/rust-nostr/nostr/pull/1156">Provenienza relay&lt;/a> e&amp;rsquo; stata aggiunta ai metodi &lt;code>stream_events*&lt;/code>, cosi&amp;rsquo; ogni evento in streaming ora include il &lt;code>RelayUrl&lt;/code> da cui proviene e un &lt;code>Result&lt;/code> che indica successo o fallimento, utile per tracciare l&amp;rsquo;affidabilita&amp;rsquo; dei relay e debug di problemi di connessione. Una &lt;a href="https://github.com/rust-nostr/nostr/pull/1179">correzione sicurezza&lt;/a> ha rimosso la dipendenza &lt;code>url-fork&lt;/code> seguendo RUSTSEC-2024-0421, eliminando una vulnerabilita&amp;rsquo; nota.&lt;/p>
&lt;h3 id="applesauce">Applesauce (Libreria)&lt;/h3>
&lt;p>La libreria TypeScript che alimenta &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> ha visto sviluppi significativi questa settimana. Nuovi modelli includono un &lt;a href="https://github.com/hzrd149/applesauce">sistema di reazioni&lt;/a> e casting gruppi utente. La funzionalita&amp;rsquo; wallet si e&amp;rsquo; espansa con supporto NIP-60, scheda invio e strumenti di recupero token migliorati. Una nuova proprieta&amp;rsquo; &lt;code>user.directMessageRelays$&lt;/code> espone la configurazione relay per DM. Tutte le azioni sono state refactoratе per usare interfacce async (rimuovendo generatori async), e correzioni bug hanno affrontato il ripristino contenuto crittografato e casi limite filtri eventi basati sul tempo.&lt;/p>
&lt;h3 id="tenex">Tenex (Agenti AI)&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/tenex-chat/tenex">sistema di coordinamento multi-agente&lt;/a> costruito su Nostr ha introdotto l&amp;rsquo;architettura RAL (Request-Action-Lifecycle) in &lt;a href="https://github.com/pablof7z/tenex/pull/38">cinque PR unite&lt;/a>. RAL consente agli agenti di mettersi in pausa quando delegano task e riprendere quando arrivano i risultati, con persistenza dello stato a scope conversazione. Gli strumenti di delega (&lt;code>delegate&lt;/code>, &lt;code>ask&lt;/code>, &lt;code>delegate_followup&lt;/code>, &lt;code>delegate_external&lt;/code>) ora pubblicano eventi Nostr e restituiscono segnali di stop invece di bloccarsi. Il refactor include migrazione AI SDK v6, infrastruttura testing VCR per registrazione deterministica interazioni LLM, e supporto immagini multimodali.&lt;/p>
&lt;hr>
&lt;p>Questo e&amp;rsquo; tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #1</title><link>https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/</guid><description>&lt;p>Benvenuti a Nostr Compass, una newsletter settimanale dedicata all&amp;rsquo;ecosistema del protocollo Nostr. La nostra missione e&amp;rsquo; mantenere sviluppatori, operatori di relay e costruttori informati sugli sviluppi importanti in tutta la rete. Documentiamo l&amp;rsquo;evoluzione del protocollo con precisione tecnica, neutralita&amp;rsquo; e profondita&amp;rsquo;, coprendo tutto dalle proposte NIP ai rilasci dei client fino alle migliori pratiche di implementazione.&lt;/p>
&lt;p>Nostr Compass e&amp;rsquo; ispirato da &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, il cui lavoro dedicato nel corso degli anni per far progredire la conoscenza tecnica di Bitcoin ha stabilito lo standard per le newsletter focalizzate sul protocollo. Siamo grati per il loro esempio e speriamo di portare lo stesso rigore all&amp;rsquo;ecosistema Nostr.&lt;/p></description><content:encoded>&lt;p>Benvenuti a Nostr Compass, una newsletter settimanale dedicata all&amp;rsquo;ecosistema del protocollo Nostr. La nostra missione e&amp;rsquo; mantenere sviluppatori, operatori di relay e costruttori informati sugli sviluppi importanti in tutta la rete. Documentiamo l&amp;rsquo;evoluzione del protocollo con precisione tecnica, neutralita&amp;rsquo; e profondita&amp;rsquo;, coprendo tutto dalle proposte NIP ai rilasci dei client fino alle migliori pratiche di implementazione.&lt;/p>
&lt;p>Nostr Compass e&amp;rsquo; ispirato da &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, il cui lavoro dedicato nel corso degli anni per far progredire la conoscenza tecnica di Bitcoin ha stabilito lo standard per le newsletter focalizzate sul protocollo. Siamo grati per il loro esempio e speriamo di portare lo stesso rigore all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>Questo numero inaugurale stabilisce il nostro formato settimanale. Ogni mercoledi&amp;rsquo; vi porteremo aggiornamenti NIP, note di rilascio, punti salienti dello sviluppo e guide tecniche. Che stiate costruendo un client, gestendo un relay o contribuendo al protocollo, Nostr Compass mira ad essere la vostra fonte affidabile per cio&amp;rsquo; che sta accadendo nell&amp;rsquo;ecosistema.&lt;/p>
&lt;h2 id="cose-nostr">Cos&amp;rsquo;e&amp;rsquo; Nostr?&lt;/h2>
&lt;p>&lt;em>Poiche&amp;rsquo; questo e&amp;rsquo; il nostro primo numero, iniziamo con una introduzione su come funziona Nostr. I lettori abituali possono &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#notizie--aggiornamenti">passare avanti&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Nostr (Notes and Other Stuff Transmitted by Relays) e&amp;rsquo; un protocollo decentralizzato per social networking e messaggistica. A differenza delle piattaforme tradizionali, Nostr non ha server centrale, nessuna azienda che lo controlla e nessun singolo punto di fallimento. Gli utenti possiedono la propria identita&amp;rsquo; attraverso coppie di chiavi crittografiche, e il contenuto fluisce attraverso server relay indipendenti che chiunque puo&amp;rsquo; gestire.&lt;/p>
&lt;p>&lt;strong>Come funziona:&lt;/strong> Gli utenti generano una coppia di chiavi (una chiave privata chiamata nsec e una chiave pubblica chiamata npub). La chiave privata firma i messaggi chiamati &amp;ldquo;eventi&amp;rdquo;, e la chiave pubblica serve come vostra identita&amp;rsquo;. Gli eventi vengono inviati ai relay, che li memorizzano e li inoltrano ad altri utenti. Poiche&amp;rsquo; voi controllate le vostre chiavi, potete passare da un client all&amp;rsquo;altro o da un relay all&amp;rsquo;altro senza perdere la vostra identita&amp;rsquo; o i vostri follower.&lt;/p>
&lt;p>&lt;strong>Perche&amp;rsquo; e&amp;rsquo; importante:&lt;/strong> Nostr fornisce resistenza alla censura attraverso la diversita&amp;rsquo; dei relay (se un relay vi blocca, altri possono comunque servire il vostro contenuto), portabilita&amp;rsquo; (la vostra identita&amp;rsquo; funziona su qualsiasi app Nostr) e interoperabilita&amp;rsquo; (tutti i client Nostr parlano lo stesso protocollo). Non c&amp;rsquo;e&amp;rsquo; nessun algoritmo che decide cosa vedete, niente pubblicita&amp;rsquo; e nessuna raccolta di dati.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;ecosistema oggi:&lt;/strong> Nostr supporta microblogging (come Twitter/X), contenuti di lunga forma (come Medium), messaggi diretti, marketplace, livestreaming e altro. I client includono Damus (iOS), Amethyst (Android), Primal, Coracle e dozzine di altri. L&amp;rsquo;integrazione con Lightning Network consente pagamenti istantanei attraverso gli &amp;ldquo;zap&amp;rdquo;. Il protocollo continua ad evolversi attraverso i NIP (Nostr Implementation Possibilities), specifiche guidate dalla comunita&amp;rsquo; che estendono le funzionalita'.&lt;/p>
&lt;h2 id="news">Notizie&lt;/h2>
&lt;p>&lt;strong>NIP-BE Unito: Supporto Bluetooth Low Energy&lt;/strong> - Una nuova significativa capacita&amp;rsquo; &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">e&amp;rsquo; arrivata nel protocollo&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a> specifica come le applicazioni Nostr possono comunicare e sincronizzarsi tramite Bluetooth Low Energy. Questo consente alle app di funzionare offline e sincronizzare dati tra dispositivi vicini senza connettivita&amp;rsquo; internet. La specifica adatta i pattern dei relay WebSocket ai vincoli del BLE, usando compressione DEFLATE e messaggistica a blocchi per gestire le piccole dimensioni MTU del BLE (20-256 byte). I dispositivi negoziano i ruoli in base al confronto UUID, con l&amp;rsquo;UUID piu&amp;rsquo; alto che diventa il server GATT.&lt;/p>
&lt;p>&lt;strong>MIP-05: Notifiche Push che Preservano la Privacy&lt;/strong> - Il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Protocollo Marmot&lt;/a> ha pubblicato &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a> (&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">specifica&lt;/a>), una specifica per notifiche push che mantengono la privacy. I sistemi push tradizionali richiedono che i server conoscano i token dei dispositivi e le identita&amp;rsquo; degli utenti; MIP-05 risolve questo problema crittografando i token dei dispositivi con ECDH+HKDF e ChaCha20-Poly1305, usando chiavi effimere per prevenire la correlazione. Un protocollo gossip a tre eventi (kind 447-449) sincronizza i token crittografati tra i membri del gruppo, e le notifiche usano il &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> gift wrapping con token esca per nascondere le dimensioni dei gruppi. Questo consente a WhiteNoise e altri client Marmot di consegnare notifiche tempestive senza compromettere la privacy degli utenti.&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10: Nuovo Schema URI&lt;/strong> - Il protocollo media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> sta ottenendo uno schema URI personalizzato tramite &lt;a href="https://nostrcompass.org/it/topics/bud-10/">BUD-10&lt;/a> (&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">specifica&lt;/a>). Il nuovo formato &lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code> incorpora hash del file, estensione, dimensione, suggerimenti per piu&amp;rsquo; server e pubkey degli autori per la scoperta server &lt;a href="https://nostrcompass.org/it/topics/bud-03/">BUD-03&lt;/a>. Questo rende i link blob piu&amp;rsquo; resilienti degli URL HTTP statici abilitando il fallback automatico tra server.&lt;/p>
&lt;p>&lt;strong>Aggiornamenti Marketplace Shopstr&lt;/strong> - Il marketplace nativo Nostr ha &lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">implementato Nostr Wallet Connect&lt;/a> (&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>) per i pagamenti, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">aggiunto la scadenza delle inserzioni&lt;/a> usando &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a>, e introdotto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">codici sconto&lt;/a> per i venditori.&lt;/p>
&lt;h2 id="nip-updates">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuovi NIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Messaggistica Bluetooth Low Energy e sincronizzazione dispositivi (&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/it/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - Standard Paywall/Contenuto Premium per gestire contenuti protetti all&amp;rsquo;interno del protocollo (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Modifiche Significative:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Aggiunto array opzionale &lt;code>languages&lt;/code> ai metadati utente Kind 0, permettendo agli utenti di specificare piu&amp;rsquo; lingue preferite usando tag IETF BCP 47 per migliorare la scoperta dei contenuti e il matching dei 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/it/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - Aggiunto supporto scadenza ordini per trading P2P con tag &lt;code>expires_at&lt;/code> e &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/it/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Gli eventi gift wrap possono ora essere eliminati tramite richieste 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/it/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Rimossi tag hashtag e URL dai segnalibri generici; gli hashtag ora usano 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/it/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - Migliorati i repost generici per eventi sostituibili con supporto tag &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/it/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - Formulazione raffinata e aggiunto supporto reazioni kind 7 ai DM (&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/it/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - Aggiunto campo &lt;code>self&lt;/code> per l&amp;rsquo;identificazione della chiave pubblica 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">Approfondimento NIP: NIP-01 e NIP-19&lt;/h2>
&lt;p>Per questo numero inaugurale, copriamo due NIP fondamentali che ogni sviluppatore Nostr dovrebbe comprendere. Consultate le nostre pagine tematiche per &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a>.&lt;/p>
&lt;h3 id="nip-01-protocollo-base">NIP-01: Protocollo Base&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> definisce il protocollo core. Tutto in Nostr si basa su questa specifica.&lt;/p>
&lt;p>&lt;strong>Eventi&lt;/strong> sono l&amp;rsquo;unico tipo di oggetto. Ogni evento contiene:&lt;/p>
&lt;ul>
&lt;li>&lt;code>id&lt;/code>: Hash SHA256 dell&amp;rsquo;evento serializzato (l&amp;rsquo;identificatore unico dell&amp;rsquo;evento)&lt;/li>
&lt;li>&lt;code>pubkey&lt;/code>: La chiave pubblica del creatore (32 byte esadecimali, secp256k1)&lt;/li>
&lt;li>&lt;code>created_at&lt;/code>: Timestamp Unix&lt;/li>
&lt;li>&lt;code>kind&lt;/code>: Intero che categorizza il tipo di evento&lt;/li>
&lt;li>&lt;code>tags&lt;/code>: Array di array per i metadati&lt;/li>
&lt;li>&lt;code>content&lt;/code>: Il payload (l&amp;rsquo;interpretazione dipende dal kind)&lt;/li>
&lt;li>&lt;code>sig&lt;/code>: Firma Schnorr che prova che la pubkey ha creato questo evento&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kind&lt;/strong> determinano come i relay memorizzano gli eventi:&lt;/p>
&lt;ul>
&lt;li>Eventi regolari (1, 2, 4-44, 1000-9999): Memorizzati normalmente, tutte le versioni mantenute&lt;/li>
&lt;li>Eventi sostituibili (0, 3, 10000-19999): Solo l&amp;rsquo;ultimo per pubkey viene mantenuto&lt;/li>
&lt;li>Eventi effimeri (20000-29999): Non memorizzati, solo inoltrati ai sottoscrittori&lt;/li>
&lt;li>Eventi indirizzabili (30000-39999): Ultimo per combinazione pubkey + kind + tag &lt;code>d&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Kind 0 sono i metadati utente (profilo), kind 1 e&amp;rsquo; una nota di testo (il post base), kind 3 e&amp;rsquo; la lista dei seguiti.&lt;/p>
&lt;p>&lt;strong>Kind 1: Note di Testo&lt;/strong> sono il cuore del Nostr sociale. Un evento kind 1 e&amp;rsquo; un post breve, simile a un tweet. Il campo &lt;code>content&lt;/code> contiene il testo del messaggio (testo semplice, anche se i client spesso renderizzano markdown). I tag abilitano risposte, menzioni e riferimenti:&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;Ciao Nostr! Date un&amp;#39;occhiata al lavoro di @jb55 su 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>Il tag &lt;code>e&lt;/code> con marcatore &amp;ldquo;reply&amp;rdquo; indica che questa e&amp;rsquo; una risposta (vedi &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> per le convenzioni di threading). Il tag &lt;code>p&lt;/code> menziona un utente, permettendo ai client di notificarlo e renderizzare il suo nome invece della pubkey grezza. I client recuperano l&amp;rsquo;evento kind 0 dell&amp;rsquo;utente menzionato per ottenere il suo nome visualizzato e l&amp;rsquo;immagine.&lt;/p>
&lt;p>Per costruire una timeline, un client si iscrive agli eventi kind 1 dalle pubkey seguite: &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>. Il relay restituisce le note corrispondenti, e il client le renderizza cronologicamente.&lt;/p>
&lt;p>&lt;strong>Eventi indirizzabili&lt;/strong> (30000-39999) funzionano come eventi sostituibili ma usano un tag &lt;code>d&lt;/code> come identificatore aggiuntivo. Il relay mantiene solo l&amp;rsquo;ultima versione di ogni combinazione pubkey + kind + tag-d. Questo abilita articoli modificabili, elenchi di prodotti o qualsiasi caso in cui servono piu&amp;rsquo; elementi sostituibili per utente.&lt;/p>
&lt;p>&lt;strong>Tag&lt;/strong> sono array dove il primo elemento e&amp;rsquo; il nome del tag. I tag standard a singola lettera (&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>) sono indicizzati dai relay per query efficienti. Per esempio, &lt;code>[&amp;quot;e&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt;&amp;quot;]&lt;/code> referenzia un altro evento, &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;&amp;lt;pubkey&amp;gt;&amp;quot;]&lt;/code> referenzia un utente.&lt;/p>
&lt;p>&lt;strong>Comunicazione Client-Relay&lt;/strong> usa connessioni WebSocket con array JSON come messaggi. Il primo elemento identifica il tipo di messaggio.&lt;/p>
&lt;p>Da client a relay:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;event&amp;gt;]&lt;/code> - Pubblica un evento sul 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> - Sottoscrivi agli eventi che corrispondono ai filtri&lt;/li>
&lt;li>&lt;code>[&amp;quot;CLOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - Termina una sottoscrizione&lt;/li>
&lt;/ul>
&lt;p>Da relay a client:&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> - Consegna un evento che corrisponde alla tua sottoscrizione&lt;/li>
&lt;li>&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - &amp;ldquo;Fine degli eventi memorizzati&amp;rdquo; - il relay ha inviato tutte le corrispondenze storiche e ora inviera&amp;rsquo; solo nuovi eventi quando arrivano&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> - Conferma se un evento e&amp;rsquo; stato accettato o rifiutato (e perche')&lt;/li>
&lt;li>&lt;code>[&amp;quot;NOTICE&amp;quot;, &amp;lt;message&amp;gt;]&lt;/code> - Messaggio leggibile dal relay&lt;/li>
&lt;/ul>
&lt;p>Il flusso di sottoscrizione: il client invia &lt;code>REQ&lt;/code> con un ID sottoscrizione e filtro, il relay risponde con messaggi &lt;code>EVENT&lt;/code> corrispondenti, poi invia &lt;code>EOSE&lt;/code> per segnalare che ha completato lo storico. Dopo &lt;code>EOSE&lt;/code>, qualsiasi nuovo messaggio &lt;code>EVENT&lt;/code> e&amp;rsquo; in tempo reale. Il client invia &lt;code>CLOSE&lt;/code> quando ha finito.&lt;/p>
&lt;p>&lt;strong>Filtri&lt;/strong> specificano quali eventi recuperare. Un oggetto filtro puo&amp;rsquo; includere: &lt;code>ids&lt;/code> (ID eventi), &lt;code>authors&lt;/code> (pubkey), &lt;code>kinds&lt;/code> (tipi di evento), &lt;code>#e&lt;/code>/&lt;code>#p&lt;/code>/&lt;code>#t&lt;/code> (valori tag), &lt;code>since&lt;/code>/&lt;code>until&lt;/code> (timestamp), e &lt;code>limit&lt;/code> (max risultati). Tutte le condizioni in un filtro usano logica AND. Potete includere piu&amp;rsquo; filtri in una &lt;code>REQ&lt;/code>, e si combinano con logica OR - utile per recuperare diversi tipi di evento in una sottoscrizione.&lt;/p>
&lt;h3 id="nip-19-identificatori-codificati-bech32">NIP-19: Identificatori Codificati Bech32&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> definisce i formati user-friendly che vedete ovunque in Nostr: npub, nsec, note e altro. Questi non sono usati nel protocollo stesso (che usa esadecimale), ma sono essenziali per la condivisione e la visualizzazione.&lt;/p>
&lt;p>&lt;strong>Perche&amp;rsquo; bech32?&lt;/strong> Le chiavi esadecimali grezze sono soggette a errori nella copia e difficili da distinguere visivamente. La codifica bech32 aggiunge un prefisso leggibile e un checksum. Potete immediatamente distinguere un &lt;code>npub&lt;/code> (chiave pubblica) da un &lt;code>nsec&lt;/code> (chiave privata) o &lt;code>note&lt;/code> (ID evento).&lt;/p>
&lt;p>&lt;strong>Formati base&lt;/strong> codificano valori grezzi a 32 byte:&lt;/p>
&lt;ul>
&lt;li>&lt;code>npub&lt;/code> - Chiave pubblica (la vostra identita&amp;rsquo;, sicura da condividere)&lt;/li>
&lt;li>&lt;code>nsec&lt;/code> - Chiave privata (mantenere segreta, usata per firmare)&lt;/li>
&lt;li>&lt;code>note&lt;/code> - ID evento (referenzia un evento specifico)&lt;/li>
&lt;/ul>
&lt;p>Esempio: La pubkey esadecimale &lt;code>3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&lt;/code> diventa &lt;code>npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Identificatori condivisibili&lt;/strong> includono metadati usando codifica TLV (Type-Length-Value):&lt;/p>
&lt;ul>
&lt;li>&lt;code>nprofile&lt;/code> - Profilo con suggerimenti relay (aiuta i client a trovare l&amp;rsquo;utente)&lt;/li>
&lt;li>&lt;code>nevent&lt;/code> - Evento con suggerimenti relay, pubkey autore e kind&lt;/li>
&lt;li>&lt;code>naddr&lt;/code> - Riferimento evento indirizzabile (pubkey + kind + tag-d + relay)&lt;/li>
&lt;/ul>
&lt;p>Questi risolvono un problema chiave: se qualcuno condivide un ID nota, come fate a sapere quale relay ce l&amp;rsquo;ha? Un &lt;code>nevent&lt;/code> raggruppa l&amp;rsquo;ID evento con relay suggeriti, rendendo la condivisione piu&amp;rsquo; affidabile.&lt;/p>
&lt;p>&lt;strong>Importante:&lt;/strong> Non usate mai formati bech32 nel protocollo stesso. Eventi, messaggi relay e risposte NIP-05 devono usare esadecimale. Bech32 e&amp;rsquo; puramente per interfacce umane: visualizzazione, copia/incolla, codici QR e URL.&lt;/p>
&lt;h2 id="releases">Rilasci&lt;/h2>
&lt;p>&lt;strong>Amber v4.0.4&lt;/strong> - L&amp;rsquo;app signer Android corregge una NullPointerException, migliora le prestazioni nella schermata attivita&amp;rsquo; e aggiunge traduzioni per alcuni tipi di evento. La precedente release v4.0.3 ha aggiunto UI rinnovata per cifratura/decifratura, esportazione/importazione account, gestione relay per account, supporto ping bunker e segnalazione crash. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.4">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Coracle 0.6.28&lt;/strong> - Release di correzione bug per il web client. Corretti feed topic, gestione immagini quando imgproxy e&amp;rsquo; disabilitato e linkificazione di sorgenti highlight non-link. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.28">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Flotilla v1.6.2&lt;/strong> - Il client per comunita&amp;rsquo; stile Discord corregge problemi di scorrimento modal e stili. Release precedenti in questo ciclo hanno aggiunto badge e suoni opzionali per le notifiche, migliorato il rendering dei link, scansione codice QR per link di invito e configurazione wallet semplificata. &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.6.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>nak v0.17.2&lt;/strong> - Lo strumento Nostr a riga di comando ha aggiunto un nuovo comando &lt;code>nip&lt;/code> per consultazione rapida dei NIP, piu&amp;rsquo; correzioni per gestione repository git e processamento eventi stdin. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>White Noise v0.2.1&lt;/strong> - Release importante per l&amp;rsquo;app di messaggistica crittografata basata su MLS aggiungendo condivisione immagini tramite Blossom, sincronizzazione in background, notifiche push, localizzazione in 8 lingue e gestione membri gruppo. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.2.1%2B14">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Amethyst v1.04.2&lt;/strong> - Release con nuove funzionalita&amp;rsquo; che introduce liste/pacchetti di follow, nuovi filtri timeline, galleria immagini e compressione video H.265 (file piu&amp;rsquo; piccoli del 50%). Completata migrazione Kotlin Multiplatform. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.04.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.5&lt;/strong> - Aggiornamento piattaforma trading P2P con supporto scadenza ordini NIP-69 e risposte migliorate per la cronologia scambi. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.5">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Nosflare v8.9.26&lt;/strong> - Relay Nostr serverless costruito su infrastruttura Cloudflare. Questa release fornisce un hotfix critico che risolve un bug che poteva causare fallimenti websocket, garantendo connessioni piu&amp;rsquo; stabili per utenti e applicazioni che dipendono dal relay. &lt;a href="https://github.com/Spl0itable/nosflare/releases/tag/v8.9.26">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Noscall v0.4.1&lt;/strong> - App per chiamate audio e video sicure basata su Nostr. Questa release migliora l&amp;rsquo;interfaccia pop-up nella pagina Me e corregge diversi problemi noti, risultando in maggiore stabilita&amp;rsquo; e affidabilita&amp;rsquo; delle chiamate. &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.4.1-release">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Gitplaza v0.25.0&lt;/strong> - Client Nostr desktop focalizzato su attivita&amp;rsquo; relative a Git. Questa release introduce un filtro kind avanzato per il feed inbox, include zap regolari nei filtri e semplifica la formattazione del testo delle schede. Miglioramenti delle prestazioni ottimizzano il caricamento dell&amp;rsquo;albero commenti, riducono query database non necessarie e usano branch di commenti in cache per visualizzazione piu&amp;rsquo; veloce. &lt;a href="https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0">Release&lt;/a>&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Focus sulla stabilita&amp;rsquo; con correzioni crash e UI: &lt;a href="https://github.com/damus-io/damus/pull/3377">correzione salto cursore&lt;/a> per la vista di composizione, &lt;a href="https://github.com/damus-io/damus/pull/3366">redesign interfaccia NostrDB&lt;/a> usando tipi Swift &lt;code>~Copyable&lt;/code> per sicurezza delle transazioni, &lt;a href="https://github.com/damus-io/damus/pull/3341">stabilita&amp;rsquo; UI thread&lt;/a> correggendo reinstanziazione della barra azioni, &lt;a href="https://github.com/damus-io/damus/pull/3346">freeze lista mute&lt;/a> da cicli AttributeGraph, e &lt;a href="https://github.com/damus-io/damus/pull/3334">crash profilo&lt;/a> da pulizia transazioni cross-thread. Aggiunto anche &lt;a href="https://github.com/damus-io/damus/pull/3293">AGENTS.md&lt;/a> linee guida per agenti di coding AI.&lt;/p>
&lt;h3 id="notedeck">Notedeck (Desktop/Mobile)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1191">Archiviazione chiavi sicura&lt;/a> sposta nsec nel secure store del SO con migrazione automatica. &lt;a href="https://github.com/damus-io/notedeck/pull/1201">Filtraggio note future&lt;/a> nasconde eventi datati 24+ ore in avanti (anti-spam). &lt;a href="https://github.com/damus-io/notedeck/pull/1183">Copia nevent&lt;/a> ora include suggerimenti relay. Inoltre: &lt;a href="https://github.com/damus-io/notedeck/pull/1212">aggiunta rapida colonna profilo&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1208">navigazione tastiera&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1210">ottimizzazione caricamento media&lt;/a>.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Supporto [firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>](&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1555">https://github.com/vitorpamplona/amethyst/pull/1555&lt;/a>) per Nostr Connect. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1586">Organizzazione segnalibri&lt;/a> con gestione liste pubbliche/private. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1596">Correzione compatibilita&amp;rsquo; strfry&lt;/a> per casi limite parsing info 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 link Nostr Connect&lt;/a> per URL &lt;code>nostrconnect://&lt;/code>. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/787">Login remoto&lt;/a> tramite scansione QR per connessioni bunker. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/783">Correzione race condition connessione&lt;/a>.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messaggistica Crittografata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/890">Correzione ritenzione dati app&lt;/a> disabilita auto-backup Android per privacy. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/861">Comportamento scroll chat&lt;/a> preserva posizione durante lettura cronologia.&lt;/p>
&lt;h3 id="zeus">Zeus (Wallet Lightning)&lt;/h3>
&lt;p>[Pagamenti paralleli &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>](&lt;a href="https://github.com/ZeusLN/zeus/pull/3407">https://github.com/ZeusLN/zeus/pull/3407&lt;/a>) per miglior throughput zap in batch.&lt;/p>
&lt;h2 id="best-practice-per-sviluppatori">Best Practice per Sviluppatori&lt;/h2>
&lt;p>&lt;strong>Validare Eventi Auth in Modo Difensivo&lt;/strong> - go-nostr ha corretto un &lt;a href="https://github.com/nbd-wtf/go-nostr/pull/182">panic nella validazione NIP-42&lt;/a> quando il tag relay mancava. Controllate sempre i tag richiesti prima di accedervi, anche nei flussi auth dove vi aspettate eventi ben formati.&lt;/p>
&lt;p>&lt;strong>Rate Limit per Stato Autenticazione&lt;/strong> - khatru ha aggiunto &lt;a href="https://github.com/fiatjaf/khatru/pull/57">rate limiting basato su NIP-42&lt;/a>, permettendo ai relay di applicare limiti diversi per connessioni autenticate vs anonime. Considerate limiti a livelli basati sullo stato auth invece di restrizioni generiche.&lt;/p>
&lt;p>&lt;strong>Usare Paginazione a Cursore per Liste&lt;/strong> - Blossom ha &lt;a href="https://github.com/hzrd149/blossom/pull/65">sostituito la paginazione basata su data&lt;/a> con paginazione a cursore sull&amp;rsquo;endpoint &lt;code>/list&lt;/code>. La paginazione basata su data fallisce quando elementi condividono timestamp; i cursori forniscono iterazione affidabile.&lt;/p>
&lt;p>&lt;strong>Validazione Schema per Tipi di Evento&lt;/strong> - Il progetto &lt;a href="https://github.com/nostrability/schemata">nostrability/schemata&lt;/a> fornisce schemi JSON per validare eventi conformi ai NIP. Considerate di integrare la validazione schema in sviluppo per catturare eventi malformati prima che raggiungano i relay.&lt;/p>
&lt;hr>
&lt;p>Questo e&amp;rsquo; tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item></channel></rss>