NIP-37: Draft Wraps
NIP-37 definieert een versleuteld opslag-event voor niet-ondertekende concept-events van elk type. Een gebruiker die een long-form artikel opstelt, een aankomend agenda-event of een bericht dat zij later willen versturen, kan het concept opslaan op relays onder een kind 31234-event, versleuteld voor de eigen sleutel met NIP-44. Het concept is herstelbaar vanuit elke client die de sleutel van de gebruiker in bezit heeft, en dezelfde NIP definieert een afzonderlijk kind:10013-lijstevent dat de relays benoemt waarop de gebruiker zijn privéconcepten wil opslaan.
Hoe het werkt
Een draft wrap is een geparameteriseerd vervangbaar event van kind 31234. Het niet-ondertekende concept-event wordt naar JSON geserialiseerd, NIP-44-versleuteld voor de eigen publieke sleutel van de ondertekenaar, en in .content geplaatst. Een k-tag verklaart het kind van het concept zodat een client concepten kan groeperen per event-type. Een d-tag bevat de concept-identifier zodat de wrap kan worden vervangen naarmate het concept zich ontwikkelt, en een NIP-40 expiration-tag wordt aanbevolen zodat oude concepten automatisch verlopen.
{
"kind": 31234,
"tags": [
["d", "<identifier>"],
["k", "<kind of the draft event>"],
["expiration", "<unix-timestamp>"]
],
"content": "<nip44Encrypt(JSON.stringify(draft_event))>"
}
Een leeggemaakt .content-veld geeft aan dat het concept is verwijderd.
Checkpoints
Kind 1234 definieert checkpoints die toebehoren aan een bovenliggend kind:31234-event. Checkpoints bevatten een a-tag die verwijst naar het bovenliggende concept en stellen een client in staat om revisiegeschiedenis op te slaan naast het meest recente concept.
{
"kind": 1234,
"tags": [
["a", "31234:<pubkey>:<identifier>"]
],
"content": "<nip44Encrypt(JSON.stringify(draft_event))>"
}
Relay-lijst voor privé-inhoud (kind 10013)
Kind 10013 is een vervangbaar event waarvan de tags de relays opsommen waarop de gebruiker privé-inhoud wil opslaan, inclusief draft wraps. Clients die kind 31234 publiceren, ZOUDEN moeten publiceren naar relays die vermeld staan in het kind 10013-event van de gebruiker. Dit scheidt de relay-set die gebruikt wordt voor openbaar posten (NIP-65) van de relay-set die gebruikt wordt voor privé-inhoudsopslag, zodat een gebruiker privéconcepten kan vastzetten op een kleine set vertrouwde relays zonder die set bloot te geven in hun openbare outbox.
Implementaties
- Notedeck - slaat privé-sync-relays op als een kind-10013-lijst (toegevoegd 2026-06)
Primaire bronnen:
- NIP-37 Specificatie
- Notedeck-commit die privé-sync-relays opslaat als kind-10013 - Damus-team adopteert de specificatie voor desktop sync-relay-beheer
Genoemd in:
Zie ook: