Update 1078.md

This commit is contained in:
BlowaterNostr 2023-07-15 00:25:28 +08:00 committed by GitHub
parent 7205e23c9a
commit 25d071f69a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,13 +5,16 @@
## Nostr event ## Nostr event
This NIP specifies the use of event kind `1078` which is almost identical to 30078 except that it's not a replacible event. This NIP specifies the use of event kind `1078` which is almost identical to [30078](https://github.com/nostr-protocol/nips/blob/master/78.md) except that it's not a replacible event.
## Some use cases ## Some use cases
The reason to not having a 30078 is that some clients want to implement local state changes as CRDTs, meaning support cumulative and associative mutations. The reason to not having a 30078 is that some clients want to implement local state changes as [CRDTs](https://crdt.tech/), meaning support cumulative and associative mutations
Meaning the order of applying operations doesn't change the final result as long as the same set of operations are applied. Cumulative and associative means the order of applying operations doesn't change the final result as long as the same set of operations are applied.
Using regular events can reserve the event/operation history thus the client can recompute the final state easily. [Figma uses CRDT to implement their vector design system.](https://www.figma.com/blog/how-figmas-multiplayer-technology-works/)
## Implementations
For example, in [Blowater](https://blowater.deno.dev), Pin/Unpin Contacts is implemented as regular events to achieve better consistency. For example, in [Blowater](https://blowater.deno.dev), Pin/Unpin Contacts is implemented as regular events to achieve better consistency.
Event set [`Pin Npub X`, `Unpin NpubX`, `Pin Npub Y`] will result in a pin list of `[Y]` no matter how the order is shifted. Event set [`Pin Npub X`, `Unpin NpubX`, `Pin Npub Y`] will result in a pin list of `[Y]` no matter how the order is shifted.