The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
The key words "RAW", "DRAFT", "STABLE", "DEPRECATED", and "RETIRED" in this document are to be interpreted as described in NIP-1962.
Lines marked 🚀 are only applicable when when consuming this NIP attached to Nostrocket.
Lines marked 🍌 are only applicable when consuming this NIP independently from Nostrocket.
.Kind1592.Tags- [MUST]🚀
epointer to a Rocket Ignition Event ofkind 1031with the markerrocket. - [MUST]🚀
epointer to the Nostrocket ignition event with the markerroot - [MUST] at least ONE
ptag with the hex pubkey of someone to add to the Identity Tree, MAY also include a marker for the credentials of this addition, for exampleparticipantormaintainer. As this is the first event, it SHOULD include the pubkey of the creator of this event to add themselves to the Tree. - [SHOULD] current Bitcoin height and hash
- [MUST]🚀
.Content[🚀SHOULD] be an empty string. [🍌MAY] a description of the purpose of this Identity Tree..Pubkey[🚀MUST] be the same pubkey as that which created the Rocket in the firstetag.
.Kind1592.Tags- [🍌MUST]
dpointer to the root of this Identity Tree (akind 1592event) with the markerroot. - [🚀MUST]
epointer to a Rocket Ignition Event ofkind 15171031with the markerrocket. - [🚀MUST]
epointer to the Nostrocket anchor event with the markerroot - [SHOULD] at least ONE
ptag with the hex pubkey of someone to add to the Identity Tree, MAY also include a marker for the credentials of this addition, for exampleparticipantormaintainer. - [SHOULD] current Bitcoin height and hash
- [🍌MUST]
.ContentSHOULD be an empty string.
Identity Tree events are considered client side replaceable. They are not relay replaceable because we require a historical record of additions and removals from the Tree.
To remove someone that you have added, simply publish an event as above, but do not include their p tag.
This enables identity trees to be reconstructed by retrieving the latest events (similar to how replaceable events work), while retaining the ability to see the history of the tree.
-
Clients SHOULD request all
kind 1592events published by the creator of a Rocket and tagged with the Rocket. Take the earliest event (but created after the time the Rocket event was published. This is the first event in the Identity Tree. Add each pubkey in the event'sptags to the local state of the Identity Tree, along with the block height and timestamp of the event. Maintain a counter of how many pubkeys have been added so far, and increment this with each addition, and associate this "account number" with the added pubkey. -
Subscribe to all
kind 1517events from each pubkey we just added, and repeat the process. -
If a pubkey is already in the tree, ignore.
-
If a removal is detected, remove that pubkey. Do not decrement the counter from step 1, but instead use a removal counter in addition to this.