upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfiatjaf_ <fiatjaf@gmail.com>2025-01-30 23:21:21 -0300
committerGitHub <noreply@github.com>2025-01-30 23:21:21 -0300
commit14d38014850930129e831b7ace25a9653e5d7095 (patch)
treef0944fb005c9b700c0b199a0c02cf936d416c92d
parent5eb515ceb97bdf0aa1570fb97ac510cd795bcf5a (diff)
parentf440eac3dccefa5c0ec9d3964e1d08357fd31e09 (diff)
Merge branch 'master' into video-events-regularvideo-events-regular
-rw-r--r--01.md2
-rw-r--r--56.md27
-rw-r--r--60.md27
-rw-r--r--92.md4
-rw-r--r--BREAKING.md32
-rw-r--r--README.md7
6 files changed, 61 insertions, 38 deletions
diff --git a/01.md b/01.md
index e515d81..9e25ca9 100644
--- a/01.md
+++ b/01.md
@@ -89,7 +89,7 @@ Kinds specify how clients should interpret the meaning of each event and the oth
89 89
90This NIP defines one basic kind: 90This NIP defines one basic kind:
91 91
92- `0`: **user metadata**: the `content` is set to a stringified JSON object `{name: <username>, about: <string>, picture: <url, string>}` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey. 92- `0`: **user metadata**: the `content` is set to a stringified JSON object `{name: <nickname or full name>, about: <short bio>, picture: <url of the image>}` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey.
93 93
94And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: 94And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation:
95 95
diff --git a/56.md b/56.md
index f7b1b1a..dc6f098 100644
--- a/56.md
+++ b/56.md
@@ -22,7 +22,7 @@ are reporting.
22 22
23If reporting a note, an `e` tag MUST also be included referencing the note id. 23If reporting a note, an `e` tag MUST also be included referencing the note id.
24 24
25A `report type` string MUST be included as the 3rd entry to the `e` or `p` tag 25A `report type` string MUST be included as the 3rd entry to the `e`, `p` or `x` tag
26being reported, which consists of the following report types: 26being reported, which consists of the following report types:
27 27
28- `nudity` - depictions of nudity, porn, etc. 28- `nudity` - depictions of nudity, porn, etc.
@@ -33,7 +33,9 @@ being reported, which consists of the following report types:
33- `impersonation` - someone pretending to be someone else 33- `impersonation` - someone pretending to be someone else
34- `other` - for reports that don't fit in the above categories 34- `other` - for reports that don't fit in the above categories
35 35
36Some report tags only make sense for profile reports, such as `impersonation` 36Some report tags only make sense for profile reports, such as `impersonation`.
37
38- `x` tags SHOULD be info hash of a blob which is intended to be report. when the `x` tag is represented client MUST include an `e` tag which is the id of the event that contains the mentioned blob. also, additionally these events can contain a `server` tag to point to media servers which may contain the mentioned media.
37 39
38`l` and `L` tags MAY be also be used as defined in [NIP-32](32.md) to support 40`l` and `L` tags MAY be also be used as defined in [NIP-32](32.md) to support
39further qualification and querying. 41further qualification and querying.
@@ -45,7 +47,7 @@ Example events
45{ 47{
46 "kind": 1984, 48 "kind": 1984,
47 "tags": [ 49 "tags": [
48 ["p", <pubkey>, "nudity"], 50 ["p", "<pubkey>", "nudity"],
49 ["L", "social.nos.ontology"], 51 ["L", "social.nos.ontology"],
50 ["l", "NS-nud", "social.nos.ontology"] 52 ["l", "NS-nud", "social.nos.ontology"]
51 ], 53 ],
@@ -58,8 +60,8 @@ Example events
58{ 60{
59 "kind": 1984, 61 "kind": 1984,
60 "tags": [ 62 "tags": [
61 ["e", <eventId>, "illegal"], 63 ["e", "<eventId>", "illegal"],
62 ["p", <pubkey>] 64 ["p", "<pubkey>"]
63 ], 65 ],
64 "content": "He's insulting the king!", 66 "content": "He's insulting the king!",
65 // other fields... 67 // other fields...
@@ -70,13 +72,26 @@ Example events
70{ 72{
71 "kind": 1984, 73 "kind": 1984,
72 "tags": [ 74 "tags": [
73 ["p", <impersonator pubkey>, "impersonation"] 75 ["p", "<impersonator pubkey>", "impersonation"]
74 ], 76 ],
75 "content": "Profile is impersonating nostr:<victim bech32 pubkey>", 77 "content": "Profile is impersonating nostr:<victim bech32 pubkey>",
76 // other fields... 78 // other fields...
77} 79}
78``` 80```
79 81
82```jsonc
83{
84 "kind": 1984,
85 "tags": [
86 ["x", "<blob hash>", "malware"],
87 ["e", "<event id which contains the blob on x tag>", "malware"],
88 ["server", "https://you-may-find-the-blob-here.com/path-to-url.ext"]
89 ],
90 "content": "This file contains malware software in it.",
91 // other fields...
92}
93```
94
80Client behavior 95Client behavior
81--------------- 96---------------
82 97
diff --git a/60.md b/60.md
index b2b0dd4..8117412 100644
--- a/60.md
+++ b/60.md
@@ -39,7 +39,7 @@ This NIP doesn't deal with users' *receiving* money from someone else, it's just
39} 39}
40``` 40```
41 41
42The wallet event is a parameterized replaceable event `kind:37375`. 42The wallet event is an addressable event `kind:37375`.
43 43
44Tags: 44Tags:
45* `d` - wallet ID. 45* `d` - wallet ID.
@@ -57,7 +57,7 @@ Any tag, other than the `d` tag, can be [[NIP-44]] encrypted into the `.content`
57Due to addressable event being hard to delete, if a user wants to delete a wallet, they should empty the event and keep just the `d` identifier and add a `deleted` tag. 57Due to addressable event being hard to delete, if a user wants to delete a wallet, they should empty the event and keep just the `d` identifier and add a `deleted` tag.
58 58
59## Token Event 59## Token Event
60Token events are used to record the unspent proofs that come from the mint. 60Token events are used to record unspent proofs.
61 61
62There can be multiple `kind:7375` events for the same mint, and multiple proofs inside each `kind:7375` event. 62There can be multiple `kind:7375` events for the same mint, and multiple proofs inside each `kind:7375` event.
63 63
@@ -73,7 +73,9 @@ There can be multiple `kind:7375` events for the same mint, and multiple proofs
73 "secret": "z+zyxAVLRqN9lEjxuNPSyRJzEstbl69Jc1vtimvtkPg=", 73 "secret": "z+zyxAVLRqN9lEjxuNPSyRJzEstbl69Jc1vtimvtkPg=",
74 "C": "0241d98a8197ef238a192d47edf191a9de78b657308937b4f7dd0aa53beae72c46" 74 "C": "0241d98a8197ef238a192d47edf191a9de78b657308937b4f7dd0aa53beae72c46"
75 } 75 }
76 ] 76 ],
77 // tokens that were destroyed in the creation of this token
78 "del": [ "token-id-1" ]
77 }), 79 }),
78 "tags": [ 80 "tags": [
79 [ "a", "37375:<pubkey>:my-wallet" ] 81 [ "a", "37375:<pubkey>:my-wallet" ]
@@ -81,8 +83,11 @@ There can be multiple `kind:7375` events for the same mint, and multiple proofs
81} 83}
82``` 84```
83 85
84`.content` is a [[NIP-44]] encrypted payload storing the mint and the unencoded proofs. 86 * `a` an optional tag linking the token to a specific wallet.
85* `a` an optional tag linking the token to a specific wallet. 87 * `.content` is a [[NIP-44]] encrypted payload:
88 * `mint`: The mint the proofs belong to.
89 * `proofs`: unecoded proofs
90 * `del`: token-ids that were destroyed by the creation of this token. This assists with state transitions.
86 91
87### Spending proofs 92### Spending proofs
88When one or more proofs of a token are spent, the token event should be [[NIP-09]]-deleted and, if some proofs are unspent from the same token event, a new token event should be created rolling over the unspent proofs and adding any change outputs to the new token event. 93When one or more proofs of a token are spent, the token event should be [[NIP-09]]-deleted and, if some proofs are unspent from the same token event, a new token event should be created rolling over the unspent proofs and adding any change outputs to the new token event.
@@ -96,7 +101,7 @@ Clients SHOULD publish `kind:7376` events to create a transaction history when t
96 "content": nip44_encrypt([ 101 "content": nip44_encrypt([
97 [ "direction", "in" ], // in = received, out = sent 102 [ "direction", "in" ], // in = received, out = sent
98 [ "amount", "1", "sat" ], 103 [ "amount", "1", "sat" ],
99 [ "e", "<event-id-of-spent-token>", "<relay-hint>", "created" ], 104 [ "e", "<event-id-of-created-token>", "<relay-hint>", "created" ],
100 ]), 105 ]),
101 "tags": [ 106 "tags": [
102 [ "a", "37375:<pubkey>:my-wallet" ], 107 [ "a", "37375:<pubkey>:my-wallet" ],
@@ -129,7 +134,7 @@ While the client is fetching (and perhaps validating) proofs it can use the opti
129 134
130## Spending token 135## Spending token
131If Alice spends 4 sats from this token event 136If Alice spends 4 sats from this token event
132```jsonconc 137```jsonc
133{ 138{
134 "kind": 7375, 139 "kind": 7375,
135 "id": "event-id-1", 140 "id": "event-id-1",
@@ -150,7 +155,7 @@ If Alice spends 4 sats from this token event
150 155
151Her client: 156Her client:
152* MUST roll over the unspent proofs: 157* MUST roll over the unspent proofs:
153```jsonconc 158```jsonc
154{ 159{
155 "kind": 7375, 160 "kind": 7375,
156 "id": "event-id-2", 161 "id": "event-id-2",
@@ -160,7 +165,8 @@ Her client:
160 { "id": "1", "amount": 1 }, 165 { "id": "1", "amount": 1 },
161 { "id": "2", "amount": 2 }, 166 { "id": "2", "amount": 2 },
162 { "id": "4", "amount": 8 }, 167 { "id": "4", "amount": 8 },
163 ] 168 ],
169 "del": [ "event-id-1" ]
164 }), 170 }),
165 "tags": [ 171 "tags": [
166 [ "a", "37375:<pubkey>:my-wallet" ] 172 [ "a", "37375:<pubkey>:my-wallet" ]
@@ -168,8 +174,9 @@ Her client:
168} 174}
169``` 175```
170* MUST delete event `event-id-1` 176* MUST delete event `event-id-1`
177* SHOULD add the `event-id-1` to the `del` array of deleted token-ids.
171* SHOULD create a `kind:7376` event to record the spend 178* SHOULD create a `kind:7376` event to record the spend
172```jsonconc 179```jsonc
173{ 180{
174 "kind": 7376, 181 "kind": 7376,
175 "content": nip44_encrypt([ 182 "content": nip44_encrypt([
diff --git a/92.md b/92.md
index b332d21..d6e9932 100644
--- a/92.md
+++ b/92.md
@@ -6,10 +6,10 @@ Media Attachments
6 6
7Media attachments (images, videos, and other files) may be added to events by including a URL in the event content, along with a matching `imeta` tag. 7Media attachments (images, videos, and other files) may be added to events by including a URL in the event content, along with a matching `imeta` tag.
8 8
9`imeta` ("inline metadata") tags add information about media URLs in the event's content. Each `imeta` tag SHOULD match a URL in the event content. Clients may replace imeta URLs with rich previews. 9`imeta` ("inline metadata") tags MAY add information about media URLs in the event's content. Each `imeta` tag SHOULD match a URL in the event content. Clients MAY replace imeta URLs with rich previews.
10 10
11The `imeta` tag is variadic, and each entry is a space-delimited key/value pair. 11The `imeta` tag is variadic, and each entry is a space-delimited key/value pair.
12Each `imeta` tag MUST have a `url`, and at least one other field. `imeta` may include 12Each `imeta` tag MUST have a `url`, and at least one other field. `imeta` MAY include
13any field specified by [NIP 94](./94.md). There SHOULD be only one `imeta` tag per URL. 13any field specified by [NIP 94](./94.md). There SHOULD be only one `imeta` tag per URL.
14 14
15## Example 15## Example
diff --git a/BREAKING.md b/BREAKING.md
index 77900d3..66f1a9f 100644
--- a/BREAKING.md
+++ b/BREAKING.md
@@ -21,37 +21,37 @@ reverse chronological order.
21| 2024-07-23 | [0227a2cd](https://github.com/nostr-protocol/nips/commit/0227a2cd) | [01](01.md) | events should be sorted by id after created_at | 21| 2024-07-23 | [0227a2cd](https://github.com/nostr-protocol/nips/commit/0227a2cd) | [01](01.md) | events should be sorted by id after created_at |
22| 2024-06-06 | [58e94b20](https://github.com/nostr-protocol/nips/commit/58e94b20) | [25](25.md) | [8073c848](https://github.com/nostr-protocol/nips/commit/8073c848) was reverted | 22| 2024-06-06 | [58e94b20](https://github.com/nostr-protocol/nips/commit/58e94b20) | [25](25.md) | [8073c848](https://github.com/nostr-protocol/nips/commit/8073c848) was reverted |
23| 2024-06-06 | [a6dfc7b5](https://github.com/nostr-protocol/nips/commit/a6dfc7b5) | [55](55.md) | NIP number was changed | 23| 2024-06-06 | [a6dfc7b5](https://github.com/nostr-protocol/nips/commit/a6dfc7b5) | [55](55.md) | NIP number was changed |
24| 2024-05-25 | [5d1d1c17](https://github.com/nostr-protocol/nips/commit/5d1d1c17) | [71](71.md) | 'aes-256-gcm' tag was removed | 24| 2024-05-25 | [5d1d1c17](https://github.com/nostr-protocol/nips/commit/5d1d1c17) | [71](71.md) | `aes-256-gcm` tag was removed |
25| 2024-05-07 | [8073c848](https://github.com/nostr-protocol/nips/commit/8073c848) | [25](25.md) | e-tags were changed to not include entire thread | 25| 2024-05-07 | [8073c848](https://github.com/nostr-protocol/nips/commit/8073c848) | [25](25.md) | e-tags were changed to not include entire thread |
26| 2024-04-30 | [bad88262](https://github.com/nostr-protocol/nips/commit/bad88262) | [34](34.md) | 'earliest-unique-commit' tag was removed (use 'r' tag instead) | 26| 2024-04-30 | [bad88262](https://github.com/nostr-protocol/nips/commit/bad88262) | [34](34.md) | `earliest-unique-commit` tag was removed (use `r` tag instead) |
27| 2024-02-25 | [4a171cb0](https://github.com/nostr-protocol/nips/commit/4a171cb0) | [18](18.md) | quote repost should use `q` tag | 27| 2024-02-25 | [4a171cb0](https://github.com/nostr-protocol/nips/commit/4a171cb0) | [18](18.md) | quote repost should use `q` tag |
28| 2024-02-21 | [c6cd655c](https://github.com/nostr-protocol/nips/commit/c6cd655c) | [46](46.md) | Params were stringified | 28| 2024-02-21 | [c6cd655c](https://github.com/nostr-protocol/nips/commit/c6cd655c) | [46](46.md) | Params were stringified |
29| 2024-02-16 | [cbec02ab](https://github.com/nostr-protocol/nips/commit/cbec02ab) | [49](49.md) | Password first normalized to NFKC | 29| 2024-02-16 | [cbec02ab](https://github.com/nostr-protocol/nips/commit/cbec02ab) | [49](49.md) | Password first normalized to NFKC |
30| 2024-02-15 | [afbb8dd0](https://github.com/nostr-protocol/nips/commit/afbb8dd0) | [39](39.md) | PGP identity was removed | 30| 2024-02-15 | [afbb8dd0](https://github.com/nostr-protocol/nips/commit/afbb8dd0) | [39](39.md) | PGP identity was removed |
31| 2024-02-07 | [d3dad114](https://github.com/nostr-protocol/nips/commit/d3dad114) | [46](46.md) | Connection token format was changed | 31| 2024-02-07 | [d3dad114](https://github.com/nostr-protocol/nips/commit/d3dad114) | [46](46.md) | Connection token format was changed |
32| 2024-01-30 | [1a2b21b6](https://github.com/nostr-protocol/nips/commit/1a2b21b6) | [59](59.md) | 'p' tag became optional | 32| 2024-01-30 | [1a2b21b6](https://github.com/nostr-protocol/nips/commit/1a2b21b6) | [59](59.md) | `p` tag became optional |
33| 2023-01-27 | [c2f34817](https://github.com/nostr-protocol/nips/commit/c2f34817) | [47](47.md) | optional expiration tag should be honored | 33| 2023-01-27 | [c2f34817](https://github.com/nostr-protocol/nips/commit/c2f34817) | [47](47.md) | optional expiration tag should be honored |
34| 2024-01-10 | [3d8652ea](https://github.com/nostr-protocol/nips/commit/3d8652ea) | [02](02.md), [51](51.md) | list entries should be chronological | 34| 2024-01-10 | [3d8652ea](https://github.com/nostr-protocol/nips/commit/3d8652ea) | [02](02.md), [51](51.md) | list entries should be chronological |
35| 2023-12-30 | [29869821](https://github.com/nostr-protocol/nips/commit/29869821) | [52](52.md) | 'name' tag was removed (use 'title' tag instead) | 35| 2023-12-30 | [29869821](https://github.com/nostr-protocol/nips/commit/29869821) | [52](52.md) | `name` tag was removed (use `title` tag instead) |
36| 2023-12-27 | [17c67ef5](https://github.com/nostr-protocol/nips/commit/17c67ef5) | [94](94.md) | 'aes-256-gcm' tag was removed | 36| 2023-12-27 | [17c67ef5](https://github.com/nostr-protocol/nips/commit/17c67ef5) | [94](94.md) | `aes-256-gcm` tag was removed |
37| 2023-12-03 | [0ba45895](https://github.com/nostr-protocol/nips/commit/0ba45895) | [01](01.md) | WebSocket status code `4000` was replaced by 'CLOSED' message | 37| 2023-12-03 | [0ba45895](https://github.com/nostr-protocol/nips/commit/0ba45895) | [01](01.md) | WebSocket status code `4000` was replaced by `CLOSED` message |
38| 2023-11-28 | [6de35f9e](https://github.com/nostr-protocol/nips/commit/6de35f9e) | [89](89.md) | 'client' tag value was changed | 38| 2023-11-28 | [6de35f9e](https://github.com/nostr-protocol/nips/commit/6de35f9e) | [89](89.md) | `client` tag value was changed |
39| 2023-11-20 | [7822a8b1](https://github.com/nostr-protocol/nips/commit/7822a8b1) | [51](51.md) | `kind: 30001` was deprecated | 39| 2023-11-20 | [7822a8b1](https://github.com/nostr-protocol/nips/commit/7822a8b1) | [51](51.md) | `kind: 30001` was deprecated |
40| 2023-11-20 | [7822a8b1](https://github.com/nostr-protocol/nips/commit/7822a8b1) | [51](51.md) | the meaning of `kind: 30000` was changed | 40| 2023-11-20 | [7822a8b1](https://github.com/nostr-protocol/nips/commit/7822a8b1) | [51](51.md) | the meaning of `kind: 30000` was changed |
41| 2023-11-11 | [cbdca1e9](https://github.com/nostr-protocol/nips/commit/cbdca1e9) | [84](84.md) | 'range' tag was removed | 41| 2023-11-11 | [cbdca1e9](https://github.com/nostr-protocol/nips/commit/cbdca1e9) | [84](84.md) | `range` tag was removed |
42| 2023-11-10 | [c945d8bd](https://github.com/nostr-protocol/nips/commit/c945d8bd) | [32](32.md) | 'l' tag annotations was removed | 42| 2023-11-10 | [c945d8bd](https://github.com/nostr-protocol/nips/commit/c945d8bd) | [32](32.md) | `l` tag annotations was removed |
43| 2023-11-07 | [108b7f16](https://github.com/nostr-protocol/nips/commit/108b7f16) | [01](01.md) | 'OK' message must have 4 items | 43| 2023-11-07 | [108b7f16](https://github.com/nostr-protocol/nips/commit/108b7f16) | [01](01.md) | `OK` message must have 4 items |
44| 2023-10-17 | [cf672b76](https://github.com/nostr-protocol/nips/commit/cf672b76) | [03](03.md) | 'block' tag was removed | 44| 2023-10-17 | [cf672b76](https://github.com/nostr-protocol/nips/commit/cf672b76) | [03](03.md) | `block` tag was removed |
45| 2023-09-29 | [7dc6385f](https://github.com/nostr-protocol/nips/commit/7dc6385f) | [57](57.md) | optional 'a' tag was included in `zap receipt` | 45| 2023-09-29 | [7dc6385f](https://github.com/nostr-protocol/nips/commit/7dc6385f) | [57](57.md) | optional `a` tag was included in `zap receipt` |
46| 2023-08-21 | [89915e02](https://github.com/nostr-protocol/nips/commit/89915e02) | [11](11.md) | 'min_prefix' was removed | 46| 2023-08-21 | [89915e02](https://github.com/nostr-protocol/nips/commit/89915e02) | [11](11.md) | `min_prefix` was removed |
47| 2023-08-20 | [37c4375e](https://github.com/nostr-protocol/nips/commit/37c4375e) | [01](01.md) | replaceable events with same timestamp should be retained event with lowest id | 47| 2023-08-20 | [37c4375e](https://github.com/nostr-protocol/nips/commit/37c4375e) | [01](01.md) | replaceable events with same timestamp should be retained event with lowest id |
48| 2023-08-15 | [88ee873c](https://github.com/nostr-protocol/nips/commit/88ee873c) | [15](15.md) | 'countries' tag was renamed to 'regions' | 48| 2023-08-15 | [88ee873c](https://github.com/nostr-protocol/nips/commit/88ee873c) | [15](15.md) | `countries` tag was renamed to `regions` |
49| 2023-08-14 | [72bb8a12](https://github.com/nostr-protocol/nips/commit/72bb8a12) | [12](12.md), [16](16.md), [20](20.md), [33](33.md) | NIP-12, 16, 20 and 33 were merged into NIP-01 | 49| 2023-08-14 | [72bb8a12](https://github.com/nostr-protocol/nips/commit/72bb8a12) | [12](12.md), [16](16.md), [20](20.md), [33](33.md) | NIP-12, 16, 20 and 33 were merged into NIP-01 |
50| 2023-08-11 | [d87f8617](https://github.com/nostr-protocol/nips/commit/d87f8617) | [25](25.md) | empty `content` should be considered as "+" | 50| 2023-08-11 | [d87f8617](https://github.com/nostr-protocol/nips/commit/d87f8617) | [25](25.md) | empty `content` should be considered as "+" |
51| 2023-08-01 | [5d63b157](https://github.com/nostr-protocol/nips/commit/5d63b157) | [57](57.md) | 'zap' tag was changed | 51| 2023-08-01 | [5d63b157](https://github.com/nostr-protocol/nips/commit/5d63b157) | [57](57.md) | `zap` tag was changed |
52| 2023-07-15 | [d1814405](https://github.com/nostr-protocol/nips/commit/d1814405) | [01](01.md) | `since` and `until` filters should be `since <= created_at <= until` | 52| 2023-07-15 | [d1814405](https://github.com/nostr-protocol/nips/commit/d1814405) | [01](01.md) | `since` and `until` filters should be `since <= created_at <= until` |
53| 2023-07-12 | [a1cd2bd8](https://github.com/nostr-protocol/nips/commit/a1cd2bd8) | [25](25.md) | custom emoji was supported | 53| 2023-07-12 | [a1cd2bd8](https://github.com/nostr-protocol/nips/commit/a1cd2bd8) | [25](25.md) | custom emoji was supported |
54| 2023-06-18 | [83cbd3e1](https://github.com/nostr-protocol/nips/commit/83cbd3e1) | [11](11.md) | 'image' was renamed to 'icon' | 54| 2023-06-18 | [83cbd3e1](https://github.com/nostr-protocol/nips/commit/83cbd3e1) | [11](11.md) | `image` was renamed to `icon` |
55| 2023-04-13 | [bf0a0da6](https://github.com/nostr-protocol/nips/commit/bf0a0da6) | [15](15.md) | different NIP was re-added as NIP-15 | 55| 2023-04-13 | [bf0a0da6](https://github.com/nostr-protocol/nips/commit/bf0a0da6) | [15](15.md) | different NIP was re-added as NIP-15 |
56| 2023-04-09 | [fb5b7c73](https://github.com/nostr-protocol/nips/commit/fb5b7c73) | [15](15.md) | NIP-15 was merged into NIP-01 | 56| 2023-04-09 | [fb5b7c73](https://github.com/nostr-protocol/nips/commit/fb5b7c73) | [15](15.md) | NIP-15 was merged into NIP-01 |
57| 2023-03-29 | [599e1313](https://github.com/nostr-protocol/nips/commit/599e1313) | [18](18.md) | NIP-18 was bring back | 57| 2023-03-29 | [599e1313](https://github.com/nostr-protocol/nips/commit/599e1313) | [18](18.md) | NIP-18 was bring back |
diff --git a/README.md b/README.md
index 4c507dd..5c1d4ec 100644
--- a/README.md
+++ b/README.md
@@ -122,6 +122,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
122| `16` | Generic Repost | [18](18.md) | 122| `16` | Generic Repost | [18](18.md) |
123| `17` | Reaction to a website | [25](25.md) | 123| `17` | Reaction to a website | [25](25.md) |
124| `20` | Picture | [68](68.md) | 124| `20` | Picture | [68](68.md) |
125| `21` | Video Event | [71](71.md) |
126| `22` | Short-form Portrait Video Event | [71](71.md) |
125| `40` | Channel Creation | [28](28.md) | 127| `40` | Channel Creation | [28](28.md) |
126| `41` | Channel Metadata | [28](28.md) | 128| `41` | Channel Metadata | [28](28.md) |
127| `42` | Channel Message | [28](28.md) | 129| `42` | Channel Message | [28](28.md) |
@@ -227,9 +229,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
227| `31924` | Calendar | [52](52.md) | 229| `31924` | Calendar | [52](52.md) |
228| `31925` | Calendar Event RSVP | [52](52.md) | 230| `31925` | Calendar Event RSVP | [52](52.md) |
229| `31989` | Handler recommendation | [89](89.md) | 231| `31989` | Handler recommendation | [89](89.md) |
230| `31990` | Handler information | [89](89.md) | 232| `31990` | Handler information | [89](89.md) | |
231| `21` | Video Event | [71](71.md) | 233| `32267` | Software Application | | |
232| `22` | Short-form Portrait Video Event | [71](71.md) |
233| `34550` | Community Definition | [72](72.md) | 234| `34550` | Community Definition | [72](72.md) |
234| `37375` | Cashu Wallet Event | [60](60.md) | 235| `37375` | Cashu Wallet Event | [60](60.md) |
235| `38383` | Peer-to-peer Order events | [69](69.md) | 236| `38383` | Peer-to-peer Order events | [69](69.md) |