Marmot è un protocollo per la messaggistica di gruppo end-to-end encrypted su Nostr. Combina l’identità e la rete relay di Nostr con MLS per la gestione delle chiavi di gruppo, forward secrecy e post-compromise security.

Come funziona

Marmot usa Nostr per identità, trasporto relay e distribuzione degli eventi, poi stratifica MLS sopra per i cambiamenti di membership e la cifratura dei messaggi. A differenza di NIP-17, che si concentra sulla messaggistica uno-a-uno, Marmot è pensato per gruppi in cui i membri entrano, escono o ruotano le chiavi nel tempo.

Perché conta

MLS offre a Marmot proprietà che gli schemi di direct message di Nostr non forniscono da soli: evoluzione dello stato del gruppo, semantica di rimozione dei membri e recupero dopo una compromissione tramite aggiornamenti successivi delle chiavi.

Questa divisione del lavoro è l’intuizione utile. Nostr risolve identità e trasporto in una rete aperta. MLS risolve l’accordo autenticato sulle chiavi di gruppo. Marmot è il livello di collegamento tra i due.

Stato delle implementazioni

Il protocollo resta sperimentale, ma oggi ha più implementazioni e uso attivo in applicazioni. MDK è lo stack Rust di riferimento, marmot-ts porta il modello in TypeScript e applicazioni come White Noise, Amethyst, Pika e Vector hanno già usato componenti compatibili con Marmot.

Il lavoro recente si è concentrato su hardening e interoperabilità. Fix guidati da audit sono arrivati all’inizio del 2026, e MIP-03 ha introdotto una risoluzione deterministica dei commit per permettere ai client di convergere quando cambiamenti concorrenti di stato del gruppo corrono su relay diversi.

Nell’aprile 2026, Amethyst ha allineato il proprio MDK embedded ai formati wire MIP-01 e MIP-05: PR #2462 ha aggiunto codifica VarInt e validazione round-trip, PR #2435 ha aggiunto il supporto MIP-00 KeyPackage Relay List, PR #2436 ha chiuso i gap residui emersi dai test con White Noise, PR #2466 ha corretto il framing dei commit MLS, PR #2471 ha corretto un bug di decrittazione nel layer esterno e PR #2493 ha aggiunto validazione crittografica completa dei commit. PR #2488 pubblica inoltre amy, una CLI per operazioni di gruppo Marmot e MLS.

MDK ha pubblicato PR #261 per calcolare le RequiredCapabilities del gruppo come LCD delle capability degli invitati, sbloccando inviti tra versioni diverse di Amethyst e White Noise. PR #262 valida i key package degli invitati prima di persistere il signer del creatore, PR #264 converge il formato wire di SelfUpdate tra implementazioni e PR #265 espone un accessor group_required_proposals.

whitenoise-rs è nel mezzo di una refactor multi-fase dai singleton globali a viste per-account AccountSession: PR #743 ha impostato la scaffolding di AccountSession e AccountManager, le fasi successive hanno migrato relay handles, draft, settings, operazioni messaggi, lettura e scrittura dei gruppi, membership, notifiche push, letture dei key package e creazione dei gruppi, e PR #770 porta ora il dispatch degli eventi a livello di sessione. Sul lato TypeScript, marmot-ts PR #68 migra i key package all’evento addressable kind 30443.


Fonti primarie:

Menzionato in:

Vedi anche: