Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.

Questa settimana: Il Marmot Development Kit distribuisce il suo primo rilascio pubblico con media cifrati e binding multi-linguaggio. Nostrability pubblica benchmark del modello outbox su 14 algoritmi di selezione dei relay. Wisp passa dalla prima alpha alla beta in otto giorni con Tor e firma NIP-55 (Applicazione Signer Android). NIP-91 (filtri AND) viene unito. Vector v0.3.1 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’esplosione di Damus sull’App Store, passando per le reti mesh e le proposte per agenti AI.

Notizie

Il Modello Outbox Sotto la Lente

Nostrability 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’analisi empirica più approfondita delle strategie di implementazione di NIP-65 (Relay List Metadata) fino ad oggi.

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’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.

Il filtraggio dei relay inattivi tramite NIP-66 (Relay Monitoring) si è rivelato significativo. Il pre-filtraggio dei candidati relay rispetto ai dati di liveness di nostr.watch 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’EOSE più un periodo di grazia di 200ms migliorava la completezza rispetto all’arresto al primo relay che terminava.

Per i client che non possono riscrivere completamente il proprio routing dei relay, un approccio di “arricchimento outbox ibrido” 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.

ContextVM Apre il NIP per MCP e Distribuisce Gift Wrap Effimeri

ContextVM, il protocollo che collega Nostr con il Model Context Protocol, ha aperto due proposte nel repository NIPs questa settimana. La PR #2246 formalizza CVM come convenzione per il trasporto di messaggi MCP JSON-RPC su Nostr tramite event effimeri di kind 25910. La PR #2245 estende NIP-59 (Gift Wrap) con un kind effimero (21059) che segue la semantica effimera di NIP-01 (Flusso Base del Protocollo), permettendo ai relay di scartare i messaggi avvolti dopo la consegna.

La convenzione gift wrap effimera è stata distribuita come CEP-19 nella famiglia di rilasci ContextVM SDK v0.6.x. L’implementazione SDK aggiunge un enum GiftWrapMode 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’esposizione della privacy.

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.

Marmot Development Kit Distribuisce il Primo Rilascio Pubblico

MDK (Marmot Development Kit), la libreria Rust che alimenta la messaggistica cifrata con Marmot su Pika e White Noise, ha distribuito la v0.6.0 come primo rilascio pubblico. Oltre 200 PR sono state unite in questa versione, con sei nuovi contributor.

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’autorizzazione admin per i commit e le proposte Marmot, e supporto GREASE per l’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 Secret<T> che azzera i valori sensibili in memoria.

Una modifica companion al protocollo (MIP-03) ha sostituito la cifratura NIP-44 (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 specifica core, MDK e l’SDK TypeScript.

marmot-ts, l’implementazione TypeScript mantenuta da hzrd149, ha unito quattro PR con modifiche incompatibili alle API a loro volta. Un aggiornamento omnibus ha aggiunto un gestore di key package per il ciclo di vita create/publish/rotate, un metodo di convenienza sendChatMessage, anteprima degli inviti senza entrare nel gruppo (readInviteGroupInfo), auto-aggiornamento per le rotazioni di forward-secrecy e logging di debug strutturato. Le API di decifratura dei gruppi sono state rinominate da readGroupMessage a decryptGroupMessage 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.

La White Noise CLI (wn), il backend Rust che alimenta sia l’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 (PR #538), 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 (PR #515), e le sottoscrizioni giftwrap ricadono sui relay NIP-65 quando le liste inbox sono assenti (PR #518). Una modalità debug (PR #528) espone le query al database e l’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.

Marmot ha visto un’espansione significativa oltre lo stack Rust core questa settimana. White Noise TUI, un’interfaccia basata su terminale per lo stack di messaggistica White Noise, è stata lanciata il 3 marzo. Avvolge la CLI wn come sottoprocesso e renderizza il suo output JSON attraverso un’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.

DavidGershony ha pubblicato uno stack Marmot completo in C# che rispecchia l’architettura a livelli del toolchain Rust. dotnet-mls implementa le primitive crittografiche MLS RFC 9420 in C#. marmot-cs si basa su di esso per aggiungere il trasporto relay Nostr, funzionando come equivalente C# di MDK. OpenChat, un’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 NIP-46 (Nostr Connect) e indicatori di stato multi-relay.

MDK PWA Reference 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.

Wisp Passa dall’Alpha alla Beta

Wisp è un nuovo client Nostr Android che è passato dalla prima alpha il 24 febbraio alla v0.3.4-beta il 3 marzo, producendo 19 rilasci, 115 PR unite e 276 commit in otto giorni.

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 NIP-55 per Amber, un proxy Tor SOCKS5 integrato per la connettività ai relay .onion, e NIP-47 (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 NIP-13 per le note, il mining PoW in background con impostazioni persistenti, lo storage dei relay .onion e le notifiche thread silenziati.

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.

Rilasci

Vector v0.3.1

Vector, l’app di messaggistica cifrata con Marmot, ha distribuito la v0.3.1 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.

La sincronizzazione deterministica basata su Negentropy 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’installazione dell’app sono diminuite di oltre un terzo, con il frontend ridotto di circa la metà. È stato aggiunto il supporto Android ARM a 32 bit.

Alby Hub v1.21.5

Alby Hub, il nodo Lightning auto-custodiale con supporto Nostr Wallet Connect (NIP-47), ha distribuito la v1.21.5. Un secondo relay è stato aggiunto alla configurazione NWC predefinita, migliorando l’affidabilità durante i riavvii dei relay. Una correzione per i dati zap non validi nella lista transazioni risolve un problema di visualizzazione con event NIP-57 (Lightning Zaps) malformati. Le nuove voci dell’app store includono Alby CLI e LNVPS.

nospeak v0.12.x

nospeak, il client di messaggistica Nostr basato su testo, ha distribuito tre rilasci nel periodo. La v0.12.0 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 v0.12.1 ha introdotto un tema Cypher con sfondi neri puri e accenti ciano, più la generazione di poster video Android. La v0.12.2 ha aggiunto l’esportazione chat e View Profile nei menù dei contatti.

Citrine v2.0.0-pre2

Citrine, il relay personale Android di greenart7c3, ha distribuito la v2.0.0-pre2 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.

NoorNote v0.5.x

NoorNote, un’applicazione per prendere appunti basata su Nostr, ha distribuito 8 rilasci dalla v0.5.0 alla v0.5.7. Il lancio della v0.5.0 su Android ha aggiunto il supporto al signer Amber NIP-55 e la pubblicazione di note NIP-71 (Video Events). Una pagina di benvenuto riprogettata nella v0.5.1 includeva anteprime della timeline pubblica e ha ridotto l’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 NIP-30. I rilasci successivi fino alla v0.5.7 hanno risolto race condition di sincronizzazione nel sistema collaborativo di condivisione note “tribes”.

NosCall v0.5.1

NosCall, l’app per chiamate vocali e video su Nostr, ha distribuito la v0.5.1 con supporto ai messaggi vocali, un’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’accessibilità per le dimensioni dei font di sistema.

Shosho v0.13.0

Shosho, l’app di live streaming su Nostr, ha distribuito la v0.13.0 con download di replay MP4 dai menù delle card dello streaming e NIP-05 (DNS-Based Verification) per i profili. Il publisher RTMP è migrato all’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 Zap.Stream sono corretti.

nostr-java v2.0.0

nostr-java ha distribuito la v2.0.0 con dimensioni configurabili del buffer WebSocket, permettendo alle applicazioni di gestire event Nostr più grandi senza troncamento. L’incremento della versione major riflette modifiche incompatibili all’API di connessione.

Prism 1.1.0

Prism ha distribuito la 1.1.0 con supporto ai contenuti long-form (articoli kind 30023) e un editor Markdown per la composizione direttamente nell’app, seguita da un rilascio bug fix 1.1.1.

Angor v0.2.6

Angor, la piattaforma di crowdfunding Bitcoin, ha distribuito la v0.2.6 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%.

Aggiornamenti NIP

Modifiche recenti al repository NIPs:

Uniti:

  • NIP-91: Operatore AND per i Filtri: 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 p 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.

  • NIP-30: Indirizzo del Set di Emoji nei Tag: I tag emoji personalizzate in NIP-30 possono ora includere un indirizzo opzionale del set di emoji. Cliccando su un’emoji in un client si può aprire il set a cui appartiene per aggiungerlo ai segnalibri o navigarlo. Originato dal client Chachi.

  • NIP-29: Aggiunta di unallowpubkey e unbanpubkey: Due nuovi comandi admin per le chat di gruppo NIP-29. unallowpubkey rimuove una pubkey dalla lista consentiti senza bannare l’utente. unbanpubkey revoca un ban senza ri-aggiungere la pubkey alla lista dei membri. In precedenza, l’unico modo per rimuovere qualcuno dalla lista consentiti comportava anche il ban, e revocare il ban richiedeva di ri-aggiungere l’utente come membro.

PR Aperte e Discussioni:

  • NIP-A7: Spells (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 (k per i kind, authors per le pubkey, tag per filtri di tag arbitrari) con variabili runtime: $me si risolve alla pubkey dell’utente loggato, $contacts si espande alla lista di follow di kind 3 dell’utente. I timestamp relativi (7d, 2w, 1mo) permettono agli spell di definire finestre temporali mobili senza date hardcoded. Già implementati in nak e Grimoire, gli spell permettono agli utenti di creare, condividere e sottoscrivere feed curati che si spostano tra i client.

  • NIP-59: Gift Wrap Effimero (kind 21059) (aperta il 27 feb): Aggiunge una variante effimera dei gift wrap NIP-59. 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.

  • ContextVM: MCP JSON-RPC su Nostr (aperta il 27 feb): Specifica come trasportare i messaggi del Model Context Protocol su Nostr usando event effimeri di kind 25910 con tag p ed e per l’indirizzamento e la correlazione. Intenzionalmente snello, rimanda i dettagli del protocollo alla specifica ContextVM.

  • NIP-29: Spazi Live Audio/Video (aperta il 25 feb, bozza): Bozza di fiatjaf che estende i gruppi NIP-29 con audio e video live. La proposta aggiunge tag opzionali livekit e no-text agli event di metadata dei gruppi. Quando un utente vuole unirsi a uno spazio vocale, il client richiede un JWT dal relay su /.well-known/nip29/livekit/{groupId}. Il relay verifica l’appartenenza al gruppo ed emette un token con la pubkey hex dell’utente come claim sub, che viene passato a LiveKit per il trasporto dei media. L’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.

  • Proprietà Collaborativa degli Event (aperta il 24 feb): pablof7z propone un event puntatore (kind 39382) che dichiara uno spazio collaborativo elencando le pubkey dei co-proprietari nei tag p e un kind di event target in un tag k. Qualsiasi proprietario elencato può pubblicare event di quel kind con lo stesso tag d, e i client risolvono lo stato corrente interrogando tutti i proprietari e prendendo l’event più recente. L’attribuzione di co-autorialità viene visualizzata solo quando un tag a verificabile referenzia il puntatore e l’autore appare nei suoi tag p, prevenendo rivendicazioni falsificate. Questo abilita pagine wiki condivise e risorse co-autoriate senza assegnare il controllo a un singolo keypair.

  • NIP-09: Cancellazione a Cascata dei Repost (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’autore ha cancellato la fonte. La modifica è solo lato relay e non richiede modifiche ai client.

  • NIP-07: peekPublicKey (aperta il 23 feb): Aggiunge un metodo peekPublicKey() alle estensioni browser NIP-07. A differenza di getPublicKey(), restituisce la pubkey corrente senza richiedere conferma all’utente, abilitando il login automatico silenzioso quando l’utente ha abilitato l’auto-login.

  • NIP-BB: Book (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 NIP-32 (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.

  • NIP-54: Passaggio da Asciidoc a Djot (aperta il 26 feb): In seguito alla correzione dell’internazionalizzazione del d-tag di dicembre, questa PR propone di sostituire il formato markup Asciidoc del wiki NIP-54 con Djot, aggiungendo una sezione di motivazioni ed esempi di wikilink per script non latini.

  • NIP-66: Misure Difensive (aperta il 26 feb): Basato sugli apprendimenti dai benchmark nostrability/outbox, aggiunge segnalazioni esplicite per i casi limite di NIP-66. Una PR #2241 companion definisce tag di output per SSL, geolocalizzazione, rete e controlli di connettività.

  • NIP-C1: Prove di Identità Crittografica (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’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 Zapstore.

  • NIP-31402: SARA Revenue Share Offering Registry (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.

PR Aperte e Aggiornamenti dei Progetti

La PR #3337 implementa il supporto ai tag client NIP-89 per Damus. L’app ora emette un tag client su tutti i percorsi di pubblicazione (app principale, estensione di condivisione, evidenziatore, bozze) e visualizza “via ClientName” accanto ai timestamp quando altre app includono i loro tag. Un toggle Privacy nelle impostazioni Aspetto permette agli utenti di disabilitare l’emissione del tag. La PR #3652 aggiunge una sezione Storage nelle Impostazioni con un grafico a torta interattivo che mostra l’utilizzo del disco per NostrDB e la cache Kingfisher con supporto all’esportazione.

Aperta: la PR #3657 aggiunge il fallback NIP-65 per le note citate. Quando un nevent inline include una pubkey autore ma nessun suggerimento relay e la nota è assente dal pool dell’utente, Damus recupera la lista relay kind 10002 dell’autore e riprova dai suoi relay di scrittura.

Amethyst: NIP-39 (External Identities), NIP-C0, NIP-66

Amethyst ha unito un’ondata di implementazioni NIP su 28 PR. Le rivendicazioni di identità esterna ora pubblicano come event dedicati di kind 10011 sotto NIP-39 (PR #1747), separando l’identità sociale dai metadata di kind 0 con fallback retrocompatibile. Il supporto agli snippet di codice tramite NIP-C0 (PR #1744) aggiunge event di kind 1337 con accessor per linguaggio, estensione, runtime, licenza e dipendenze. L’implementazione del relay monitoring NIP-66 (PR #1742) copre entrambi i tipi di event con parsing completo dei tag per metriche RTT, tipo di rete, NIP supportati e geohash.

I DM cifrati sono arrivati su Amethyst Desktop (PR #1710) con un layout chat a pannelli divisi che supporta sia NIP-04 (Encrypted Direct Messages) che NIP-17 (Private Direct Messages). Una nuova schermata feed relay (PR #1733) permette agli utenti di navigare i post da un relay specifico con funzionalità follow/unfollow. Aperta: la verifica NIP-05 resistente alla censura (PR #1734) aggiunge un percorso di verifica parallelo per gli identificatori .bit che risolve contro la blockchain Namecoin invece dell’HTTP DNS. Quando Amethyst rileva un suffisso .bit in un campo NIP-05, interroga un server ElectrumX-NMC per la cronologia delle transazioni del nome, analizza lo script NAME_UPDATE dall’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 .onion. Una cache LRU con TTL di un’ora previene query ripetute alla blockchain.

Notedeck: Architettura Outbox

La PR #1303 migra Notedeck 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.

Pika: Profili Per-Gruppo e Feed Tutorial

Pika, l’app di messaggistica cifrata con Marmot disponibile su iOS e Android con una build desktop, ha ottenuto i profili per-gruppo (PR #368). Gli utenti possono ora impostare un nome visualizzato e un’immagine separati per ogni chat di gruppo, insieme a una bio personalizzata. Questi profili pubblicano come event di kind 0 cifrati all’interno del gruppo Marmot, invisibili a chiunque sia esterno, con fallback al profilo Nostr globale dell’utente quando non è impostato un profilo specifico per il gruppo. Quando nuovi membri si uniscono, l’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’upload su Blossom. La PR include 16 nuovi test unitari e espone la funzionalità sia tramite un comando CLI (update-group-profile) che tramite la UI.

Una nuova web app pika-news (PR #401) monitora le PR GitHub di Pika e genera automaticamente walkthrough tutorial passo-passo dalle diff delle PR, pubblicandoli come pagine server-rendered con autenticazione NIP-07. Gli utenti possono discutere tutorial specifici in tempo reale tramite chat autenticata Nostr.

diVine: Widget Incorporabili e Risposte Video

diVine, la piattaforma di condivisione video nativa su Nostr, ha unito 132 PR in dieci giorni. I widget iframe incorporabili (PR #1843) forniscono una pagina /embed?npub=... autonoma che renderizza il profilo di un utente e i suoi video più recenti. La funzionalità risposte video (PR #1915), protetta da un feature flag, usa commenti Kind 1111 (NIP-22) con metadata imeta NIP-92 (Media Attachments). I filtri di contenuto a tre vie ispirati a Bluesky (PR #1797) offrono controlli Show/Warn/Hide su 17 categorie di avvisi di contenuto NIP-32.

strfry: Validazione Filtri REQ

La PR #163 aggiunge la validazione configurabile dei filtri REQ a strfry, 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’applicazione rigorosa dei filtri. Aperta: la PR #173 aggiunge la compressione zstd opzionale per i payload degli event al momento dell’ingestione.

rust-nostr: NIP-62 Request to Vanish

rust-nostr, la libreria Rust per il protocollo Nostr, ha aggiunto il supporto a NIP-62 (Request to Vanish) su tutti e tre i backend di database: LMDB, SQLite e in-memory. L’implementazione LMDB include opzioni configurabili per abilitare o disabilitare l’applicazione di NIP-09 e NIP-62 per deployment.

NDK: Event Collaborativi e Timeout NIP-46

NDK, il Nostr Development Kit per JavaScript/TypeScript, ha unito la PR #380 che introduce NDKCollaborativeEvent per documenti collaborativi multi-autore usando un event puntatore indirizzabile (kind 39382) che definisce gli autori autorizzati. Un timeout configurabile per NDKNip46Signer (PR #381) impedisce alle operazioni di firma remota NIP-46 di bloccarsi indefinitamente quando un bunker non risponde.

TENEX: Categorizzazione degli Agenti e Gating tramite Pubkey

TENEX, 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 (PR #91) 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 (PR #87) 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’audit.

Zap Cooking: Dashboard Abbonamenti

Zap Cooking, la piattaforma di condivisione ricette basata su Nostr, ha unito 25 PR e 85 commit in dieci giorni. Una dashboard abbonamenti (PR #228) 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 (PR #227) fornisce un fetch iniziale rapido di 3 giorni per la visualizzazione istantanea seguito da un backfill in background di 40 giorni.

Lo storage del mnemonic del wallet è passato dalla cifratura derivata dalla pubkey alla cifratura encrypt-to-self NIP-44 (PR #224), correggendo una vulnerabilità in cui il vecchio schema derivava la chiave da SHA-256(pubkey), che è effettivamente non cifrato poiché le pubkey sono pubbliche. I wallet esistenti vengono migrati silenziosamente al primo caricamento. La chat di gruppo NIP-29 ha ottenuto indicatori di non letto con badge a pallino rosso e accesso solo su invito con codici invito di kind 9009 (PR #213). Le anteprime link e gli embed di event Nostr ora si renderizzano nei DM e nei messaggi di gruppo (PR #218). Una sezione backup Nostr nelle Impostazioni (PR #210) memorizza follow e liste mute tramite storage cifrato NIP-78 (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 (PR #208). Una modale di stampa ricetta personalizzabile (PR #205) permette agli utenti di selezionare quali sezioni includere con un’anteprima live. L’integrazione Branta SDK (PR #222) aggiunge garanzie di verifica per le richieste POST e GET.

Keep: Migrazione dello Stato Guidata da Rust

Keep, il gestore di chiavi private basato su Nostr per Android, ha unito la PR #178, 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 KeepStateCallback push-based da Rust. La PR #179 aggiunge backup e ripristino cifrati con protezione tramite passphrase.

Mostro Mobile: Cifratura Chat Dispute

Mostro Mobile, 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 (PR #495) passa dal wrapping specifico di mostro alla cifratura con chiave condivisa derivata dalla pubkey dell’admin. Basandosi su questo, la PR #501 unifica il modello di messaggi con NostrEvent e memorizza gli event gift wrap cifrati su disco, coerente con il pattern di chat peer-to-peer. Una correzione della firma BIP-340 (PR #496) sovrascrive la dipendenza bip340 alla 0.2.0, risolvendo un bug di padding bigToBytes() che causava l’invalidità dell'1-2% delle firme Schnorr e il 100% di fallimenti per le chiavi la cui chiave pubblica inizia con 0x00. Order Details ora mostra etichette di stato leggibili invece di valori grezzi del protocollo, localizzate in inglese, spagnolo, italiano e francese (PR #502). HalCash è stato aggiunto e SEPA rimosso come metodo di pagamento (PR #493), poiché i trasferimenti SEPA possono superare le 24 ore (SEPA Instant rimane).

Lato server, Mostro ha corretto il ripristino della sessione dispute per includere il campo initiator (PR #599) 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 (PR #606).

Cinque Anni di Febbraio di Nostr

La newsletter del mese scorso ha tracciato le pietre miliari di gennaio di Nostr dai primi sviluppi fino all’esplosione di Damus, arrivando all’infrastruttura di sicurezza nel 2026. Questa retrospettiva copre cosa è successo ogni febbraio dal 2021 al 2026.

Febbraio 2021: La Riscrittura

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 riscritto NIP-01, 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à.

NIP-04 è 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 NIP-44, ma ha dato alla manciata di utenti iniziali il loro primo canale di comunicazione privata sul protocollo.

Il tooling si è espanso con noscl, un client a riga di comando in Go per l’interazione con i relay da terminale, e futurepaul ha iniziato nostr-rs, una prima implementazione Rust. L’intera rete funzionava su due o tre relay, coordinata attraverso un gruppo Telegram, con circa sette contributor attivi.

Febbraio 2022: Costruire lo Slancio

Il post su Hacker News del 31 dicembre 2021 ha continuato ad attirare sviluppatori fino a febbraio. Il repository nostr-protocol/nostr (il repository NIPs 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 NIP-17 (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 gitworkshop.dev.

Il nostr-rs-relay 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 NIP-05. 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.

Robert C. Martin (Uncle Bob) stava costruendo more-speech, 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’estensione browser nos2x di fiatjaf ha distribuito il supporto alla decifratura NIP-04 e le politiche di preferenza dei relay a febbraio, implementando l’interfaccia window.nostr (NIP-07) che i client web usano ancora per la delega delle chiavi.

Branle, ancora il client web principale, ha ottenuto la registrazione del gestore di protocollo web+nostr il 13 febbraio, un primo tentativo di deep linking tra applicazioni Nostr. nostr-tools ha rafforzato la validazione NIP-05. go-nostr 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’ordine delle centinaia. Damus e Nostream non esistevano ancora e non sarebbero apparsi fino ad aprile 2022.

Febbraio 2023: Attenzione Internazionale

Febbraio 2023 ha portato a Nostr la sua più grande ondata di attenzione pubblica. Damus, il client iOS di William Casarin, era stato approvato sull’App Store di Apple il 31 gennaio dopo ripetuti rifiuti. Entro il 1° febbraio aveva raggiunto la top 10 nella categoria Social Networking negli USA. Due giorni dopo, il 2 febbraio, Apple ha rimosso Damus dall’App Store cinese apparentemente su richiesta dell’Amministrazione del Cyberspazio della Cina.

I principali media inclusi TechCrunch e CoinDesk hanno coperto la rimozione, amplificando la consapevolezza sia dell’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’infrastruttura si è affannata per gestire il carico. Circa 289 relay erano tracciati a inizio febbraio, un numero che ha continuato a crescere.

Il repository NIPs ha registrato 29 pull request unite quel mese, il conteggio mensile più alto nella storia del protocollo fino a quel momento. NIP-57 (Lightning Zaps) e NIP-23 (Long-form Content) sono stati entrambi uniti il 13 febbraio, aggiungendo micropagamenti Bitcoin e espandendo Nostr oltre i post brevi in un solo giorno. NIP-65 (Relay List Metadata) era stato unito una settimana prima, il 7 febbraio, abilitando il modello outbox che è seguito. NIP-46 (Nostr Connect) e NIP-58 (Badges) sono stati anch’essi rilasciati prima della fine del mese.

La Human Rights Foundation ha assegnato 50.000$ a William Casarin per lo sviluppo di Nostr e Damus 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 luglio 2023).

Febbraio 2024: Durabilità del Protocollo

Febbraio 2024 ha spostato il focus dalla crescita alla durabilità del protocollo. NIP-17 (Private Direct Messages), aperto dal luglio precedente, stava lavorando verso una sostituzione per l’invecchiata cifratura NIP-04 usando la crittografia verificata di NIP-44 e il gift wrapping di NIP-59. NIP-04 faceva trapelare metadata agli operatori dei relay, che potevano vedere le coppie mittente-destinatario. NIP-17 nasconde l’identità del mittente dietro keypair usa e getta ed è stato unito quella primavera dopo un ultimo giro di revisione a marzo.

NIP-29 (Simple Groups) è stato unito il 28 febbraio dopo mesi di discussione, definendo come i relay possono ospitare chat di gruppo moderate con ruoli admin e controllo degli accessi. NIP-92 (tag imeta) è stato unito il 1° febbraio, standardizzando come i client allegano dimensioni delle immagini e anteprime blurhash agli event media.

Il 16 febbraio, il repository NIPs ha aggiunto BREAKING.md, 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.

Ventidue pull request sono state unite quel mese. npub.cash è stato lanciato come servizio di indirizzo Lightning che permette a qualsiasi npub di ricevere pagamenti senza gestire un server. Un articolo accademico 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’epoca).

Febbraio 2025: Crescita dell’Infrastruttura

Febbraio 2025 ha prodotto 28 pull request unite nel repository NIPs. Un NIP Right to Vanish è 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’utente.

NIP-60 (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.

I rilasci dei client hanno segnato progressi costanti. Notedeck v0.3.0 alpha è stato distribuito l’ultimo giorno di gennaio, con l’adozione che è continuata in febbraio. Primal v2.1 è seguito il 7 febbraio, e GRAIN v0.3.0, un’implementazione relay in Go, è stato rilasciato il 21 febbraio.

NOSTRLDN v5 ha riunito la comunità Nostr londinese per il suo quinto incontro. Un bridge DVMCP ha collegato le Data Vending Machine di Nostr (NIP-90) con il Model Context Protocol, prefigurando il lavoro di integrazione degli agenti AI arrivato il mese successivo.

Febbraio 2026: Oltre i Social Media

L’attività di febbraio 2026 è tratta dai numeri di Nostr Compass #8 fino al #11.

Febbraio 2026 ha prodotto la gamma più ampia di sviluppo a livello applicativo in un singolo mese di Nostr. Mostro ha distribuito la sua prima beta pubblica per il trading decentralizzato di Bitcoin peer-to-peer, e Zapstore ha raggiunto la 1.0 stabile dopo mesi di test in release candidate. White Noise v0.3.0 ha portato la messaggistica in tempo reale cifrata con Marmot con supporto al signer Amber e oltre 160 miglioramenti uniti.

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 proposta di Coordinamento Agenti DVM che estende NIP-90. ContextVM ha distribuito miglioramenti all’SDK per collegare il Model Context Protocol al trasporto Nostr. Burrow ha aggiunto la messaggistica cifrata con Marmot sia per agenti AI che per umani, estendendo l’identità e l’infrastruttura relay di Nostr alla comunicazione machine-to-machine.

FIPS ha distribuito un’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’infrastruttura di rete fisica.

OpenSats ha annunciato la quindicesima ondata di grant Nostr, finanziando progetti inclusi ContextVM e Nostube. Le modifiche al protocollo hanno incluso il supporto hold invoice NIP-47 per Nostr Wallet Connect e NIP-45 (Counting Results) HyperLogLog per la stima dei conteggi lato relay. Anche la scopribilità dei service provider NIP-85 (Trusted Assertions) per il punteggio Web of Trust è stata unita. rust-nostr ha iniziato un redesign completo delle API mentre Nostria 3.0 e Frostr (iOS TestFlight) sono stati entrambi distribuiti. Il livello di cache locale di Blossom ha affrontato la disponibilità dei media sui relay.

Guardando Avanti

Cinque febbraio di storia del protocollo mostrano una progressione costante dal lavoro fondamentale alla diversificazione a livello applicativo, con l’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.


È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Contattaci via DM NIP-17 o trovaci su Nostr.