From 72bb8a128b2d7d3c2c654644cd68d0d0fe58a3b1 Mon Sep 17 00:00:00 2001 From: fiatjaf_ Date: Sun, 13 Aug 2023 13:47:45 -0300 Subject: merge nips 12, 16, 20 and 33 into nip 01 (#703) Co-authored-by: Viktor Vsk --- README.md | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 3c35ef3..f2603cf 100644 --- a/README.md +++ b/README.md @@ -30,14 +30,11 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-09: Event Deletion](09.md) - [NIP-10: Conventions for clients' use of `e` and `p` tags in text events](10.md) - [NIP-11: Relay Information Document](11.md) -- [NIP-12: Generic Tag Queries](12.md) - [NIP-13: Proof of Work](13.md) - [NIP-14: Subject tag in text events](14.md) - [NIP-15: Nostr Marketplace (for resilient marketplaces)](15.md) -- [NIP-16: Event Treatment](16.md) - [NIP-18: Reposts](18.md) - [NIP-19: bech32-encoded entities](19.md) -- [NIP-20: Command Results](20.md) - [NIP-21: `nostr:` URI scheme](21.md) - [NIP-22: Event `created_at` Limits](22.md) - [NIP-23: Long-form Content](23.md) @@ -48,7 +45,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-30: Custom Emoji](30.md) - [NIP-31: Dealing with Unknown Events](31.md) - [NIP-32: Labeling](32.md) -- [NIP-33: Parameterized Replaceable Events](33.md) - [NIP-36: Sensitive Content](36.md) - [NIP-39: External Identities in Profiles](39.md) - [NIP-40: Expiration Timestamp](40.md) @@ -78,7 +74,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | ------- | -------------------------- | ----------- | | `0` | Metadata | [1](01.md) | | `1` | Short Text Note | [1](01.md) | -| `2` | Recommend Relay | [1](01.md) | +| `2` | Recommend Relay | | | `3` | Contacts | [2](02.md) | | `4` | Encrypted Direct Messages | [4](04.md) | | `5` | Event Deletion | [9](09.md) | @@ -128,59 +124,48 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `34550` | Community Definition | [72](72.md) | -### Event Kind Ranges - -| range | description | NIP | -| ---------------- | -------------------------------- | ----------- | -| `1000`--`9999` | Regular Events | [16](16.md) | -| `10000`--`19999` | Replaceable Events | [16](16.md) | -| `20000`--`29999` | Ephemeral Events | [16](16.md) | -| `30000`--`39999` | Parameterized Replaceable Events | [33](33.md) | - ## Message types ### Client to Relay | type | description | NIP | | ------- | --------------------------------------------------- | ----------- | +| `EVENT` | used to publish events | [01](01.md) | +| `REQ` | used to request events and subscribe to new updates | [01](01.md) | +| `CLOSE` | used to stop previous subscriptions | [01](01.md) | | `AUTH` | used to send authentication events | [42](42.md) | -| `CLOSE` | used to stop previous subscriptions | [1](01.md) | | `COUNT` | used to request event counts | [45](45.md) | -| `EVENT` | used to publish events | [1](01.md) | -| `REQ` | used to request events and subscribe to new updates | [1](01.md) | ### Relay to Client | type | description | NIP | | -------- | ------------------------------------------------------- | ----------- | +| `EOSE` | used to notify clients all stored events have been sent | [01](01.md) | +| `EVENT` | used to send events requested to clients | [01](01.md) | +| `NOTICE` | used to send human-readable messages to clients | [01](01.md) | +| `OK` | used to notify clients if an EVENT was successful | [01](01.md) | | `AUTH` | used to send authentication challenges | [42](42.md) | | `COUNT` | used to send requested event counts to clients | [45](45.md) | -| `EOSE` | used to notify clients all stored events have been sent | [1](01.md) | -| `EVENT` | used to send events requested to clients | [1](01.md) | -| `NOTICE` | used to send human-readable messages to clients | [1](01.md) | -| `OK` | used to notify clients if an EVENT was successful | [20](20.md) | Please update these lists when proposing NIPs introducing new event kinds. -When experimenting with kinds, keep in mind the classification introduced by [NIP-16](16.md) and [NIP-33](33.md). - ## Standardized Tags | name | value | other parameters | NIP | | ----------------- | ------------------------------------ | -------------------- | ------------------------ | -| `a` | coordinates to an event | relay URL | [33](33.md), [23](23.md) | +| `e` | event id (hex) | relay URL, marker | [01](01.md), [10](10.md) | +| `p` | pubkey (hex) | relay URL, petname | [01](01.md), [02](02.md) | +| `a` | coordinates to an event | relay URL | [01](01.md) | +| `d` | identifier | -- | [01](01.md) | | `alt` | Alt tag | -- | [31](31.md) | -| `d` | identifier | -- | [33](33.md) | -| `e` | event id (hex) | relay URL, marker | [1](01.md), [10](10.md) | -| `g` | geohash | -- | [12](12.md), [52](52.md) | +| `g` | geohash | -- | [52](52.md) | | `i` | identity | proof | [39](39.md) | | `k` | kind number (string) | -- | [18](18.md), [72](72.md) | | `l` | label, label namespace | annotations | [32](32.md) | | `L` | label namespace | -- | [32](32.md) | -| `p` | pubkey (hex) | relay URL | [1](01.md) | -| `r` | a reference (URL, etc) | -- | [12](12.md) | -| `t` | hashtag | -- | [12](12.md) | -| `amount` | millisats | -- | [57](57.md) | +| `r` | a reference (URL, etc) | -- | | +| `t` | hashtag | -- | | +| `amount` | millisatoshis, stringified | -- | [57](57.md) | | `bolt11` | `bolt11` invoice | -- | [57](57.md) | | `challenge` | challenge string | -- | [42](42.md) | | `content-warning` | reason | -- | [36](36.md) | -- cgit v1.2.3 From 04051ffcbc36964ecaf44f390e7d1f17e61edb15 Mon Sep 17 00:00:00 2001 From: Asai Toshiya Date: Tue, 15 Aug 2023 05:40:54 +0900 Subject: Update tag list (#692) --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index f2603cf..38a0317 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ Please update these lists when proposing NIPs introducing new event kinds. | `l` | label, label namespace | annotations | [32](32.md) | | `L` | label namespace | -- | [32](32.md) | | `r` | a reference (URL, etc) | -- | | +| `r` | relay url | marker | [65](65.md) | | `t` | hashtag | -- | | | `amount` | millisatoshis, stringified | -- | [57](57.md) | | `bolt11` | `bolt11` invoice | -- | [57](57.md) | @@ -189,7 +190,7 @@ Please update these lists when proposing NIPs introducing new event kinds. | `summary` | article summary | -- | [23](23.md) | | `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) | | `title` | article title | -- | [23](23.md) | -| `zap` | profile name | type of value | [57](57.md) | +| `zap` | pubkey (hex), relay URL | weight | [57](57.md) | ## Criteria for acceptance of NIPs -- cgit v1.2.3 From 7143bfccf7470e209c0048050f104a27901b9ebd Mon Sep 17 00:00:00 2001 From: gzuuus Date: Fri, 18 Aug 2023 10:23:45 +0200 Subject: added other parameter 'petname' to r tag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 38a0317..555f006 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ Please update these lists when proposing NIPs introducing new event kinds. | `k` | kind number (string) | -- | [18](18.md), [72](72.md) | | `l` | label, label namespace | annotations | [32](32.md) | | `L` | label namespace | -- | [32](32.md) | -| `r` | a reference (URL, etc) | -- | | +| `r` | a reference (URL, etc) | petname | | | `r` | relay url | marker | [65](65.md) | | `t` | hashtag | -- | | | `amount` | millisatoshis, stringified | -- | [57](57.md) | -- cgit v1.2.3 From 209dc5d7945ca95f4de4c44df085568b271f3de5 Mon Sep 17 00:00:00 2001 From: Asai Toshiya Date: Mon, 21 Aug 2023 18:49:21 +0900 Subject: Update NIP-50 title in list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 38a0317..72eb2a4 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-46: Nostr Connect](46.md) - [NIP-47: Wallet Connect](47.md) - [NIP-48: Proxy Tags](48.md) -- [NIP-50: Keywords filter](50.md) +- [NIP-50: Search Capability](50.md) - [NIP-51: Lists](51.md) - [NIP-52: Calendar Events](52.md) - [NIP-53: Live Activities](53.md) -- cgit v1.2.3 From f7b7b865e629789cb4d64b45a836c116e2831cbe Mon Sep 17 00:00:00 2001 From: William Casarin Date: Wed, 23 Aug 2023 19:56:20 -0700 Subject: NIP-315: User Statuses This NIP enables a way for users to share live statuses such as what music they are listening to, as well as what they are currently doing: work, play, out of office, etc. --- 315.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 62 insertions(+) create mode 100644 315.md (limited to 'README.md') diff --git a/315.md b/315.md new file mode 100644 index 0000000..0f4f0a1 --- /dev/null +++ b/315.md @@ -0,0 +1,60 @@ + +NIP-315 +======= + +User Statuses +-------------- + +`draft` `optional` `author:jb55` + +## Abstract + +This NIP enables a way for users to share live statuses such as what music they are listening to, as well as what they are currently doing: work, play, out of office, etc. + +## Live Statuses + +A special event with `kind:30315` "User Status" is defined as an *optionally expiring* _parameterized replaceable event_, where the `d` tag represents the status type: + +For example: + +```js +{ + "kind": 30315, + "content": "Sign up for nostrasia!", + "tags": [ + ["d", "general"], + ["r", "https://nostr.world"] + ], +} + +{ + "kind": 30315, + "content": "Intergalatic - Beastie Boys", + "tags": [ + ["d", "music"], + ["r", "spotify:search:Intergalatic%20-%20Beastie%20Boys"], + ["expiration", "1692845589"] + ], +} +``` + +Two common status types are defined: `general` and `music`. `general` represent general statuses: "Working", "Hiking", etc. + +`music` status events are for live streaming what you are currently listening to. The expiry of the `music` status should be when the track will stop playing. + +Any other status types can be used but they are not defined by this NIP. + +The status MAY include an `r`, `p`, `e` or `a` tag linking to a URL, profile, note, or parameterized replaceable event. + +# Client behavior + +Clients MAY display this next to the username on posts or profiles to provide live user status information. + +# Use Cases + +* Calendar nostr apps that update your general status when you're in a meeting +* Nostr Nests that update your general status with a link to the nest when you join +* Nostr music streaming services that update your music status when you're listening +* Podcasting apps that update your music status when you're listening to a podcast, with a link for others to listen as well +* Clients can use the system media player to update playing music status + diff --git a/README.md b/README.md index f8b77df..f6b57f1 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-94: File Metadata](94.md) - [NIP-98: HTTP Auth](98.md) - [NIP-99: Classified Listings](99.md) +- [NIP-315: User Statuses](315.md) ## Event Kinds @@ -113,6 +114,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `30024` | Draft Long-form Content | [23](23.md) | | `30078` | Application-specific Data | [78](78.md) | | `30311` | Live Event | [53](53.md) | +| `30315` | User Statuses | [315](315.md) | | `30402` | Classified Listing | [99](99.md) | | `30403` | Draft Classified Listing | [99](99.md) | | `31922` | Date-Based Calendar Event | [52](52.md) | -- cgit v1.2.3 From 7dc1f02fa70a5b9da7b3867e3faa37f48571d5e1 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 25 Aug 2023 08:41:26 -0300 Subject: rename 315 to 38. --- 315.md | 60 ------------------------------------------------------------ 38.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 ++-- 3 files changed, 61 insertions(+), 62 deletions(-) delete mode 100644 315.md create mode 100644 38.md (limited to 'README.md') diff --git a/315.md b/315.md deleted file mode 100644 index 0f4f0a1..0000000 --- a/315.md +++ /dev/null @@ -1,60 +0,0 @@ - -NIP-315 -======= - -User Statuses --------------- - -`draft` `optional` `author:jb55` - -## Abstract - -This NIP enables a way for users to share live statuses such as what music they are listening to, as well as what they are currently doing: work, play, out of office, etc. - -## Live Statuses - -A special event with `kind:30315` "User Status" is defined as an *optionally expiring* _parameterized replaceable event_, where the `d` tag represents the status type: - -For example: - -```js -{ - "kind": 30315, - "content": "Sign up for nostrasia!", - "tags": [ - ["d", "general"], - ["r", "https://nostr.world"] - ], -} - -{ - "kind": 30315, - "content": "Intergalatic - Beastie Boys", - "tags": [ - ["d", "music"], - ["r", "spotify:search:Intergalatic%20-%20Beastie%20Boys"], - ["expiration", "1692845589"] - ], -} -``` - -Two common status types are defined: `general` and `music`. `general` represent general statuses: "Working", "Hiking", etc. - -`music` status events are for live streaming what you are currently listening to. The expiry of the `music` status should be when the track will stop playing. - -Any other status types can be used but they are not defined by this NIP. - -The status MAY include an `r`, `p`, `e` or `a` tag linking to a URL, profile, note, or parameterized replaceable event. - -# Client behavior - -Clients MAY display this next to the username on posts or profiles to provide live user status information. - -# Use Cases - -* Calendar nostr apps that update your general status when you're in a meeting -* Nostr Nests that update your general status with a link to the nest when you join -* Nostr music streaming services that update your music status when you're listening -* Podcasting apps that update your music status when you're listening to a podcast, with a link for others to listen as well -* Clients can use the system media player to update playing music status - diff --git a/38.md b/38.md new file mode 100644 index 0000000..378da1c --- /dev/null +++ b/38.md @@ -0,0 +1,59 @@ + +NIP-38 +====== + +User Statuses +-------------- + +`draft` `optional` `author:jb55` + +## Abstract + +This NIP enables a way for users to share live statuses such as what music they are listening to, as well as what they are currently doing: work, play, out of office, etc. + +## Live Statuses + +A special event with `kind:30315` "User Status" is defined as an *optionally expiring* _parameterized replaceable event_, where the `d` tag represents the status type: + +For example: + +```js +{ + "kind": 30315, + "content": "Sign up for nostrasia!", + "tags": [ + ["d", "general"], + ["r", "https://nostr.world"] + ], +} + +{ + "kind": 30315, + "content": "Intergalatic - Beastie Boys", + "tags": [ + ["d", "music"], + ["r", "spotify:search:Intergalatic%20-%20Beastie%20Boys"], + ["expiration", "1692845589"] + ], +} +``` + +Two common status types are defined: `general` and `music`. `general` represent general statuses: "Working", "Hiking", etc. + +`music` status events are for live streaming what you are currently listening to. The expiry of the `music` status should be when the track will stop playing. + +Any other status types can be used but they are not defined by this NIP. + +The status MAY include an `r`, `p`, `e` or `a` tag linking to a URL, profile, note, or parameterized replaceable event. + +# Client behavior + +Clients MAY display this next to the username on posts or profiles to provide live user status information. + +# Use Cases + +* Calendar nostr apps that update your general status when you're in a meeting +* Nostr Nests that update your general status with a link to the nest when you join +* Nostr music streaming services that update your music status when you're listening +* Podcasting apps that update your music status when you're listening to a podcast, with a link for others to listen as well +* Clients can use the system media player to update playing music status diff --git a/README.md b/README.md index f6b57f1..7951339 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-31: Dealing with Unknown Events](31.md) - [NIP-32: Labeling](32.md) - [NIP-36: Sensitive Content](36.md) +- [NIP-38: User Statuses](38.md) - [NIP-39: External Identities in Profiles](39.md) - [NIP-40: Expiration Timestamp](40.md) - [NIP-42: Authentication of clients to relays](42.md) @@ -67,7 +68,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-94: File Metadata](94.md) - [NIP-98: HTTP Auth](98.md) - [NIP-99: Classified Listings](99.md) -- [NIP-315: User Statuses](315.md) ## Event Kinds @@ -114,7 +114,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `30024` | Draft Long-form Content | [23](23.md) | | `30078` | Application-specific Data | [78](78.md) | | `30311` | Live Event | [53](53.md) | -| `30315` | User Statuses | [315](315.md) | +| `30315` | User Statuses | [38](38.md) | | `30402` | Classified Listing | [99](99.md) | | `30403` | Draft Classified Listing | [99](99.md) | | `31922` | Date-Based Calendar Event | [52](52.md) | -- cgit v1.2.3 From 08bd050598e078179eea71cb9de777d887a9e9f8 Mon Sep 17 00:00:00 2001 From: Alejandro Date: Fri, 1 Sep 2023 15:07:52 +0200 Subject: NIP-75: Zap Goals (#757) --- 75.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 3 +++ 2 files changed, 79 insertions(+) create mode 100644 75.md (limited to 'README.md') diff --git a/75.md b/75.md new file mode 100644 index 0000000..6c8cb7b --- /dev/null +++ b/75.md @@ -0,0 +1,76 @@ +# NIP-75 + +## Zap Goals + +`draft` `optional` `author:verbiricha` + +This NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event. + +## Nostr Event + +A `kind:9041` event is used. + +The `.content` contains a human-readable description of the goal. + +The following tags are defined as REQUIRED. + +- `amount` - target amount in milisats. +- `relays` - a list of relays the zaps to this goal will be sent to and tallied from. + +Example event: + +```json +{ + "kind": 9041, + "tags": [ + ["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", ...], + ["amount", "210000"], + ], + "content": "Nostrasia travel expenses", + ...other fields +``` + +The following tags are OPTIONAL. + +- `closed_at` - timestamp for determining which zaps are included in the tally. Zap receipts published after the `closed_at` timestamp SHOULD NOT count towards the goal progress. + +```json +{ + "kind": 9041, + "tags": [ + ["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", ...], + ["amount", "210000"], + ["closed_at", ""], + ], + "content": "Nostrasia travel expenses", + ...other fields +``` + +The goal MAY include an `r` or `a` tag linking to a URL or parameterized replaceable event. + +The goal MAY include multiple beneficiary pubkeys by specifying [`zap` tags](57.md#appendix-g-zap-tag-on-other-events). + +Parameterized replaceable events can link to a goal by using a `goal` tag specifying the event id and an optional relay hint. + +```json +{ + "kind": 3XXXX, + "tags": [ + ... + ["goal", "", ""], + ], + ...other fields +``` + +## Client behavior + +Clients MAY display funding goals on user profiles. + +When zapping a goal event, clients MUST include the relays in the `relays` tag of the goal event in the zap request `relays` tag. + +When zapping a parameterized replaceable event with a `goal` tag, clients SHOULD tag the goal event id in the `e` tag of the zap request. + +## Use cases + +- Fundraising clients +- Adding funding goals to events such as long form posts, badges or live streams diff --git a/README.md b/README.md index 7951339..5beff91 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-58: Badges](58.md) - [NIP-65: Relay List Metadata](65.md) - [NIP-72: Moderated Communities](72.md) +- [NIP-75: Zap Goals](75.md) - [NIP-78: Application-specific data](78.md) - [NIP-89: Recommended Application Handlers](89.md) - [NIP-94: File Metadata](94.md) @@ -93,6 +94,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `1984` | Reporting | [56](56.md) | | `1985` | Label | [32](32.md) | | `4550` | Community Post Approval | [72](72.md) | +| `9041` | Zap Goal | [75](75.md) | | `9734` | Zap Request | [57](57.md) | | `9735` | Zap | [57](57.md) | | `10000` | Mute List | [51](51.md) | @@ -177,6 +179,7 @@ Please update these lists when proposing NIPs introducing new event kinds. | `description` | invoice description | -- | [57](57.md) | | `emoji` | shortcode, image URL | -- | [30](30.md) | | `expiration` | unix timestamp (string) | -- | [40](40.md) | +| `goal` | event id (hex) | relay URL | [75](75.md) | | `image` | image URL | dimensions in pixels | [23](23.md), [58](58.md) | | `lnurl` | `bech32` encoded `lnurl` | -- | [57](57.md) | | `location` | location string | -- | [52](52.md), [99](99.md) | -- cgit v1.2.3 From 01b6bfc28666db4b259556bf55c9269ca0c059d5 Mon Sep 17 00:00:00 2001 From: Asai Toshiya Date: Wed, 20 Sep 2023 21:05:32 +0900 Subject: Update tag list (#778) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 5beff91..98f6ddb 100644 --- a/README.md +++ b/README.md @@ -161,12 +161,13 @@ Please update these lists when proposing NIPs introducing new event kinds. | `p` | pubkey (hex) | relay URL, petname | [01](01.md), [02](02.md) | | `a` | coordinates to an event | relay URL | [01](01.md) | | `d` | identifier | -- | [01](01.md) | -| `alt` | Alt tag | -- | [31](31.md) | +| `alt` | summary | -- | [31](31.md) | | `g` | geohash | -- | [52](52.md) | | `i` | identity | proof | [39](39.md) | | `k` | kind number (string) | -- | [18](18.md), [72](72.md) | | `l` | label, label namespace | annotations | [32](32.md) | | `L` | label namespace | -- | [32](32.md) | +| `m` | MIME type | -- | [94](94.md) | | `r` | a reference (URL, etc) | petname | | | `r` | relay url | marker | [65](65.md) | | `t` | hashtag | -- | | @@ -175,8 +176,7 @@ Please update these lists when proposing NIPs introducing new event kinds. | `challenge` | challenge string | -- | [42](42.md) | | `content-warning` | reason | -- | [36](36.md) | | `delegation` | pubkey, conditions, delegation token | -- | [26](26.md) | -| `description` | badge description | -- | [58](58.md) | -| `description` | invoice description | -- | [57](57.md) | +| `description` | invoice/badge description | -- | [57](57.md), [58](58.md) | | `emoji` | shortcode, image URL | -- | [30](30.md) | | `expiration` | unix timestamp (string) | -- | [40](40.md) | | `goal` | event id (hex) | relay URL | [75](75.md) | -- cgit v1.2.3 From aa1bf6d26845a025541b5d37c8df1cfab00c58fe Mon Sep 17 00:00:00 2001 From: Asai Toshiya Date: Fri, 6 Oct 2023 07:11:23 +0900 Subject: Add NIP-24 to list --- README.md | 1 + 1 file changed, 1 insertion(+) (limited to 'README.md') diff --git a/README.md b/README.md index 98f6ddb..1097bc5 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-21: `nostr:` URI scheme](21.md) - [NIP-22: Event `created_at` Limits](22.md) - [NIP-23: Long-form Content](23.md) +- [NIP-24: Extra metadata fields and tags](24.md) - [NIP-25: Reactions](25.md) - [NIP-26: Delegated Event Signing](26.md) - [NIP-27: Text Note References](27.md) -- cgit v1.2.3 From 324c7aafdcd316fb971c1f26b964d2b53c939a10 Mon Sep 17 00:00:00 2001 From: Don Date: Wed, 11 Oct 2023 20:55:27 +0900 Subject: Change wording to imply that reactions can target any event (#815) * kind:17 generic reactions. * `kind 7` is available for all kind events. * `k` tag is not required. --- 25.md | 6 ++++- README.md | 82 +++++++++++++++++++++++++++++++-------------------------------- 2 files changed, 46 insertions(+), 42 deletions(-) (limited to 'README.md') diff --git a/25.md b/25.md index 63c07a7..7b29140 100644 --- a/25.md +++ b/25.md @@ -7,7 +7,7 @@ Reactions `draft` `optional` `author:jb55` -A reaction is a `kind 7` note that is used to react to other notes. +A reaction is a `kind 7` event that is used to react to other events. The generic reaction, represented by the `content` set to a `+` string, SHOULD be interpreted as a "like" or "upvote". @@ -34,6 +34,9 @@ The last `e` tag MUST be the `id` of the note that is being reacted to. The last `p` tag MUST be the `pubkey` of the event being reacted to. +The reaction event MAY include a `k` tag with the stringified kind number +of the reacted event as its value. + Example code ```swift @@ -43,6 +46,7 @@ func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> Nost } tags.append(["e", liked.id]) tags.append(["p", liked.pubkey]) + tags.append(["k", liked.kind]) let ev = NostrEvent(content: "+", pubkey: pubkey, kind: 7, tags: tags) ev.calculate_id() ev.sign(privkey: privkey) diff --git a/README.md b/README.md index 1097bc5..dc70887 100644 --- a/README.md +++ b/README.md @@ -156,47 +156,47 @@ Please update these lists when proposing NIPs introducing new event kinds. ## Standardized Tags -| name | value | other parameters | NIP | -| ----------------- | ------------------------------------ | -------------------- | ------------------------ | -| `e` | event id (hex) | relay URL, marker | [01](01.md), [10](10.md) | -| `p` | pubkey (hex) | relay URL, petname | [01](01.md), [02](02.md) | -| `a` | coordinates to an event | relay URL | [01](01.md) | -| `d` | identifier | -- | [01](01.md) | -| `alt` | summary | -- | [31](31.md) | -| `g` | geohash | -- | [52](52.md) | -| `i` | identity | proof | [39](39.md) | -| `k` | kind number (string) | -- | [18](18.md), [72](72.md) | -| `l` | label, label namespace | annotations | [32](32.md) | -| `L` | label namespace | -- | [32](32.md) | -| `m` | MIME type | -- | [94](94.md) | -| `r` | a reference (URL, etc) | petname | | -| `r` | relay url | marker | [65](65.md) | -| `t` | hashtag | -- | | -| `amount` | millisatoshis, stringified | -- | [57](57.md) | -| `bolt11` | `bolt11` invoice | -- | [57](57.md) | -| `challenge` | challenge string | -- | [42](42.md) | -| `content-warning` | reason | -- | [36](36.md) | -| `delegation` | pubkey, conditions, delegation token | -- | [26](26.md) | -| `description` | invoice/badge description | -- | [57](57.md), [58](58.md) | -| `emoji` | shortcode, image URL | -- | [30](30.md) | -| `expiration` | unix timestamp (string) | -- | [40](40.md) | -| `goal` | event id (hex) | relay URL | [75](75.md) | -| `image` | image URL | dimensions in pixels | [23](23.md), [58](58.md) | -| `lnurl` | `bech32` encoded `lnurl` | -- | [57](57.md) | -| `location` | location string | -- | [52](52.md), [99](99.md) | -| `name` | badge name | -- | [58](58.md) | -| `nonce` | random | -- | [13](13.md) | -| `preimage` | hash of `bolt11` invoice | -- | [57](57.md) | -| `price` | price | currency, frequency | [99](99.md) | -| `proxy` | external ID | protocol | [48](48.md) | -| `published_at` | unix timestamp (string) | -- | [23](23.md) | -| `relay` | relay url | -- | [42](42.md) | -| `relays` | relay list | -- | [57](57.md) | -| `subject` | subject | -- | [14](14.md) | -| `summary` | article summary | -- | [23](23.md) | -| `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) | -| `title` | article title | -- | [23](23.md) | -| `zap` | pubkey (hex), relay URL | weight | [57](57.md) | +| name | value | other parameters | NIP | +| ----------------- | ------------------------------------ | -------------------- | ------------------------------------- | +| `e` | event id (hex) | relay URL, marker | [01](01.md), [10](10.md) | +| `p` | pubkey (hex) | relay URL, petname | [01](01.md), [02](02.md) | +| `a` | coordinates to an event | relay URL | [01](01.md) | +| `d` | identifier | -- | [01](01.md) | +| `alt` | summary | -- | [31](31.md) | +| `g` | geohash | -- | [52](52.md) | +| `i` | identity | proof | [39](39.md) | +| `k` | kind number (string) | -- | [18](18.md), [25](25.md), [72](72.md) | +| `l` | label, label namespace | annotations | [32](32.md) | +| `L` | label namespace | -- | [32](32.md) | +| `m` | MIME type | -- | [94](94.md) | +| `r` | a reference (URL, etc) | petname | | +| `r` | relay url | marker | [65](65.md) | +| `t` | hashtag | -- | | +| `amount` | millisatoshis, stringified | -- | [57](57.md) | +| `bolt11` | `bolt11` invoice | -- | [57](57.md) | +| `challenge` | challenge string | -- | [42](42.md) | +| `content-warning` | reason | -- | [36](36.md) | +| `delegation` | pubkey, conditions, delegation token | -- | [26](26.md) | +| `description` | invoice/badge description | -- | [57](57.md), [58](58.md) | +| `emoji` | shortcode, image URL | -- | [30](30.md) | +| `expiration` | unix timestamp (string) | -- | [40](40.md) | +| `goal` | event id (hex) | relay URL | [75](75.md) | +| `image` | image URL | dimensions in pixels | [23](23.md), [58](58.md) | +| `lnurl` | `bech32` encoded `lnurl` | -- | [57](57.md) | +| `location` | location string | -- | [52](52.md), [99](99.md) | +| `name` | badge name | -- | [58](58.md) | +| `nonce` | random | -- | [13](13.md) | +| `preimage` | hash of `bolt11` invoice | -- | [57](57.md) | +| `price` | price | currency, frequency | [99](99.md) | +| `proxy` | external ID | protocol | [48](48.md) | +| `published_at` | unix timestamp (string) | -- | [23](23.md) | +| `relay` | relay url | -- | [42](42.md) | +| `relays` | relay list | -- | [57](57.md) | +| `subject` | subject | -- | [14](14.md) | +| `summary` | article summary | -- | [23](23.md) | +| `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) | +| `title` | article title | -- | [23](23.md) | +| `zap` | pubkey (hex), relay URL | weight | [57](57.md) | ## Criteria for acceptance of NIPs -- cgit v1.2.3 From 09ffb951c69343312486aaff2726dca04bc42f6e Mon Sep 17 00:00:00 2001 From: fiatjaf_ Date: Wed, 11 Oct 2023 10:17:43 -0300 Subject: rework NIP-03 so it is actually usable (#804) * rework nip-03 to be actually useful and usable. * fixes. * add ots verification flow. --- 03.md | 33 +++++++++++++++++++++++---------- README.md | 1 + 2 files changed, 24 insertions(+), 10 deletions(-) (limited to 'README.md') diff --git a/03.md b/03.md index 3c5d764..4faf3f1 100644 --- a/03.md +++ b/03.md @@ -4,20 +4,33 @@ NIP-03 OpenTimestamps Attestations for Events -------------------------------------- -`draft` `optional` `author:fiatjaf` +`draft` `optional` `author:fiatjaf` `author:constant` -When there is an OTS available it MAY be included in the existing event body under the `ots` key: +This NIP defines an event with `kind:1040` that can contain an [OpenTimestamps](https://opentimestamps.org/) proof for any other event: -``` +```json { - "id": ..., - "kind": ..., - ..., - ..., - "ots": + "kind": 1040 + "tags": [ + ["e", , ], + ["block", , ], + ["alt", "opentimestamps attestation"] + ], + "content": } ``` -The _event id_ MUST be used as the raw hash to be included in the OpenTimestamps merkle tree. +- The OpenTimestamps proof MUST prove the referenced `e` event id as its digest. +- The `block` tag is optional, it exists to establish a minimum date since which the given event has existed. +- The `content` MUST be the full content of an `.ots` file containing at least one Bitcoin attestation. This file SHOULD contain a **single** Bitcoin attestation and no reference to "pending" attestations since they are useless in this context. + +### Example OpenTimestamps proof verification flow -The attestation can be either provided by relays automatically (and the OTS binary contents just appended to the events it receives) or by clients themselves when they first upload the event to relays — and used by clients to show that an event is really "at least as old as [OTS date]". +Using [`nak`](https://github.com/fiatjaf/nak), [`jq`](https://jqlang.github.io/jq/) and [`ots`](https://github.com/fiatjaf/ots): + +```bash +~> nak req -i e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323 wss://nostr-pub.wellorder.net | jq -r .content | ots verify +> using an esplora server at https://blockstream.info/api +- sequence ending on block 810391 is valid +timestamp validated at block [810391] +``` diff --git a/README.md b/README.md index dc70887..e9f08bd 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `44` | Channel Mute User | [28](28.md) | | `1063` | File Metadata | [94](94.md) | | `1311` | Live Chat Message | [53](53.md) | +| `1040` | OpenTimestamps | [03](03.md) | | `1984` | Reporting | [56](56.md) | | `1985` | Label | [32](32.md) | | `4550` | Community Post Approval | [72](72.md) | -- cgit v1.2.3