mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-23 00:45:53 -05:00
30 lines
975 B
Markdown
30 lines
975 B
Markdown
|
NIP-0A
|
||
|
======
|
||
|
|
||
|
Contact List v2
|
||
|
---------------
|
||
|
|
||
|
This is an early draft, I'll flesh out details after discussion.
|
||
|
|
||
|
Event tags would look like this:
|
||
|
|
||
|
```
|
||
|
["contact", "<pubkey1>", "in", "<timestamp1>"]
|
||
|
["contact", "<pubkey2>", "out", "<timestamp2>"]
|
||
|
```
|
||
|
|
||
|
Note that they are not 'p' tags, they don't need delivery to the person's INBOX.
|
||
|
But maybe they should be searchable to people can count their "followers".
|
||
|
|
||
|
When you add a person, you find their entry and change the last two fields to "in" and the current timestamp.
|
||
|
|
||
|
When you remove a person, you find their entry and change the last two fields to "out" and the current timestamp.
|
||
|
|
||
|
When merging two events, you accept the entry with the largest timestamp.
|
||
|
|
||
|
Note that we have to keep the "out" entries in case we later get an "in" entry dated earlier, we can
|
||
|
ignore such an add.
|
||
|
|
||
|
This is functionally implements a Last-Write-Wins Element Set, which is a conflict-free replicated data set
|
||
|
with eventual consistency.
|