Marmot Protocol
Marmot is een protocol voor end-to-end versleutelde groepsberichten op Nostr. Het combineert Nostr’s identiteit en relaynetwerk met MLS voor groepssleutelbeheer, forward secrecy en post-compromise security.
Hoe Het Werkt
Marmot gebruikt Nostr voor identiteit, relaytransport en eventdistributie, en legt daar MLS bovenop voor wijzigingen in groepslidmaatschap en berichtversleuteling. In tegenstelling tot NIP-17, dat zich richt op één-op-één berichten, is Marmot gebouwd voor groepen waarin leden in de loop van de tijd toetreden, vertrekken of sleutels roteren.
Waarom Het Belangrijk Is
MLS geeft Marmot eigenschappen die Nostr’s schema’s voor directe berichten op zichzelf niet bieden: evolutie van de groepsstatus, semantiek voor het verwijderen van leden en herstel na compromittering via latere sleutelupdates.
Die taakverdeling is het nuttige inzicht. Nostr lost identiteit en transport op in een open netwerk. MLS lost geauthenticeerde groepssleutelafspraak op. Marmot is de lijmlaag tussen die twee.
Implementatiestatus
Het protocol blijft experimenteel, maar het heeft nu meerdere implementaties en actief gebruik in applicaties. MDK is de belangrijkste Rust-referentiestack, marmot-ts brengt het model naar TypeScript, en applicaties zoals White Noise, Amethyst, Pika en Vector gebruiken Marmot-compatibele componenten.
Recent werk heeft zich gericht op hardening en interop. Auditgedreven fixes landden begin 2026, en MIP-03 introduceerde deterministische commit resolution zodat clients kunnen convergeren wanneer gelijktijdige wijzigingen in de groepsstatus via relays met elkaar concurreren.
In april 2026 bracht Amethyst zijn ingebedde MDK in lijn met de MIP-01- en MIP-05-wire formats: PR #2462 voegde VarInt-encoding van TLS-achtige length prefixes en round-trip-validatie tegen MDK-testvectors toe, PR #2435 voegde MIP-00 KeyPackage Relay List-ondersteuning toe, en PR #2436 sloot resterende admin-gate- en media-handling-gaten die door cross-client tests tegen White Noise waren gevonden. PR #2466 corrigeerde MLS commit framing zodat encrypted welcome bytes overeenkomen met de output van mdk-core, en PR #2471 repareerde een outer-layer decryption bug die state divergence tussen co-admins veroorzaakte. De vervolg-PR PR #2493 voegt uitgebreide MLS commit cryptography-validatie toe, en PR #2488 levert amy, een CLI-interface voor Marmot- en MLS-groepsoperaties vanuit de implementatie van Amethyst.
MDK merge’de PR #261 om RequiredCapabilities van een groep als de LCD van invitee capabilities te berekenen, waarmee mixed-version invites tussen Amethyst en White Noise worden vrijgemaakt, PR #262 om key packages van invitees te parsen voordat de signer van de maker wordt opgeslagen, PR #264 om het SelfUpdate-wire format tussen implementaties te laten convergeren, en PR #265 om een group_required_proposals accessor bloot te stellen.
whitenoise-rs zit midden in een meerfasige refactor van globale singletons naar AccountSession-views per account: PR #743 zette de AccountSession- en AccountManager-scaffolding op, en vervolgfases migreerden relay handles, drafts en settings, message ops, group read en write, membership, push notifications, key-package reads, group creation en, vanaf PR #770, session-scoped event dispatch. marmot-ts PR #68 migreert de TypeScript-client naar addressable kind 30443 key packages.
Primaire bronnen:
- Marmot Protocol Repository
- MLS Protocol
- Marmot Development Kit
- marmot-ts
- whitenoise-rs
- White Noise client
- Amethyst PR #2462 - MIP-01/MIP-05 wire format alignment
- Amethyst PR #2435 - MIP-00 KeyPackage Relay List
- Amethyst PR #2488 - Amy CLI
Vermeld in:
- Newsletter #1: News
- Newsletter #1: Releases
- Newsletter #4
- Newsletter #7
- Newsletter #12
- Newsletter #19: Amethyst MIP compliance
- Newsletter #19: MDK interop work
- Newsletter #19: whitenoise-rs session refactor
Zie ook: