nips/34.md
2023-03-26 12:43:40 -03:00

1.8 KiB

NIP-34

Parameterized Versioned Events

draft optional author:Giszmo

This NIP adds a new event range that allows for versioning of events that have the same author, first d tag and kind but unlike NIP-33, no events get discarded, keeping references by event ID intact.

Reasoning

For maintaining bodies of events between multiple authors, relying on the good-will of others to not change or delete their respective events is not good enough. For example for wikipedia or nip registry replacements, we need ways to know an acceptable version of the document stays around without having to copy it under another author's pubkey.

Implementation

A Parameterized Versioned Event is defined as an event with a kind 40000 <= n < 50000.

It follows the same rules as NIP-33 except that "replaced" events do not get discarded.

Relays queried for author:kind:d-tag tuples serve the last but when queried for specific event IDs, those will be returned, too.

A Use Case

A later nip might define a nip registry such that authors can either publish their own preferred version of a nip or endorse others by author:kind:d-tag tuples or by event ID.

Alice proposes NIP-999:

"author": $alice,
"id": "14aeb..8dad4",
"kind": 40001,
"tags": [
   [ "d", "999"],
…

Bob endorses exactly that version:

"author": $bob,
"kind": 40001,
"tags": [
    [ "d", "999"],
    [ "n", "14aeb..8dad4"]
],
"content": "",
…

Carol endorses whatever Bob wants to see as NIP-999:

"author": $carol,
"kind": 40001,
"tags": [
    ["d", "999"],
    ["n", "$bob:999"],
],
"content": "",
…

Dave announces to generally trust Alice in all things "NIP":

"author": $dave,
"kind": 40001,
"tags": [
    ["n", $alice,
],
"content": "",
…