Compare commits

..

1 Commits

Author SHA1 Message Date
fiatjaf
2fac7a23b0 add nip34-related follow lists. 2025-11-20 07:42:05 -03:00
9 changed files with 22 additions and 82 deletions

13
18.md
View File

@@ -21,9 +21,9 @@ reposted.
## Quote Reposts
Mentions to [NIP-21](21.md) entities like `nevent`, `note` and `naddr` on any
event must be converted into `q` tags. The `q` tag ensures quote reposts are
not pulled and included as replies in threads. It also allows you to easily
Mentions to [NIP-21](21.md) entities like `nevent`, `note` and `naddr` on any
event must be converted into `q` tags. The `q` tag ensures quote reposts are
not pulled and included as replies in threads. It also allows you to easily
pull and count all of the quotes for a post. The syntax follows
`["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]`
@@ -36,10 +36,3 @@ as a "generic repost", that can include any kind of event inside other than
`kind 16` reposts SHOULD contain a `"k"` tag with the stringified kind number
of the reposted event as its value.
When reposting a replaceable event, the repost SHOULD include an `"a"` tag with
the event coordinate (`kind:pubkey:d-tag`) of the reposted event.
If the `"a"` tag is not present, it indicates that a specific version of a replaceable
event is being reposted, in which case the `content` field must contain the full
JSON string of the reposted event.

6
51.md
View File

@@ -26,7 +26,7 @@ For example, _mute list_ can contain the public keys of spammers and bad actors
| Mute list | 10000 | things the user doesn't want to see in their feeds | `"p"` (pubkeys), `"t"` (hashtags), `"word"` (lowercase string), `"e"` (threads) |
| Pinned notes | 10001 | events the user intends to showcase in their profile page | `"e"` (kind:1 notes) |
| Read/write relays | 10002 | where a user publishes to and where they expect mentions | see [NIP-65](65.md) |
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles) |
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
| Communities | 10004 | [NIP-72](72.md) communities the user belongs to | `"a"` (kind:34550 community definitions) |
| Public chats | 10005 | [NIP-28](28.md) chat channels the user is in | `"e"` (kind:40 channel definitions) |
| Blocked relays | 10006 | relays clients should never connect to | `"relay"` (relay URLs) |
@@ -39,6 +39,8 @@ For example, _mute list_ can contain the public keys of spammers and bad actors
| DM relays | 10050 | Where to receive [NIP-17](17.md) direct messages | `"relay"` (see [NIP-17](17.md)) |
| Good wiki authors | 10101 | [NIP-54](54.md) user recommended wiki authors | `"p"` (pubkeys) |
| Good wiki relays | 10102 | [NIP-54](54.md) relays deemed to only host useful articles | `"relay"` (relay URLs) |
| Git authors | 10017 | code (people who produce NIP-34 events) follow list | `"p"` (pubkeys -- with optional relay hint and petname) |
| Git repositories | 10018 | [NIP-34](34.md) followed repositories | `"a"` (kind:30617 repository announcement event) |
### Sets
@@ -52,7 +54,7 @@ Aside from their main identifier, the `"d"` tag, sets can optionally have a `"ti
| --- | --- | --- | --- |
| Follow sets | 30000 | categorized groups of users a client may choose to check out in different circumstances | `"p"` (pubkeys) |
| Relay sets | 30002 | user-defined relay groups the user can easily pick and choose from during various operations | `"relay"` (relay URLs) |
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles) |
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
| Curation sets | 30004 | groups of articles picked by users as interesting and/or belonging to the same category | `"a"` (kind:30023 articles), `"e"` (kind:1 notes) |
| Curation sets | 30005 | groups of videos picked by users as interesting and/or belonging to the same category | `"e"` (kind:21 videos) |
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |

2
52.md
View File

@@ -56,7 +56,7 @@ Example:
```yaml
{
"id": <32-bytes lowercase hex-encoded SHA-256 of the serialized event data>,
"id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>,
"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
"created_at": <unix timestamp in seconds>,
"kind": 31922,

2
58.md
View File

@@ -11,7 +11,7 @@ user profiles:
1. A "Badge Definition" event is defined as an addressable event with kind `30009` having a `d` tag with a value that uniquely identifies the badge (e.g. `bravery`) published by the badge issuer. Badge definitions can be updated.
2. A "Badge Award" event is a kind `8` event with a single `a` tag referencing a "Badge Definition" event and one or more `p` tags, one for each pubkey the badge issuer wishes to award. Awarded badges are immutable and non-transferable.
2. A "Badge Award" event is a kind `8` event with a single `a` tag referencing a "Badge Definition" event and one or more `p` tags, one for each pubkey the badge issuer wishes to award. Awarded badges are immutable and non-transferrable.
3. A "Profile Badges" event is defined as an _addressable event_ with kind `30008` with a `d` tag with the value `profile_badges`.
Profile badges contain an ordered list of pairs of `a` and `e` tags referencing a `Badge Definition` and a `Badge Award` for each badge to be displayed.

2
59.md
View File

@@ -99,8 +99,6 @@ AUTH, and refuse to serve wrapped events to non-recipients.
When adding expiration tags to both `seal` and `gift wrap` layers, implementations SHOULD use independent random timestamps for each layer. Using different `created_at` values increases timing variance and helps protect against metadata correlation attacks.
Since signing keys are random, relays SHOULD delete `kind 1059` events whose p-tag matches the signer of
[NIP-09](09.md) deletions or [NIP-62](62.md) vanish requests.
## An Example

4
C0.md
View File

@@ -23,9 +23,9 @@ The `.content` field contains the actual code snippet text.
- `extension` - File extension (without the dot). Examples: "js", "py", "rs"
- `description` - Brief description of what the code does
- `runtime` - Runtime or environment specification (e.g., "node v18.15.0", "python 3.11")
- `license` - License under which the code (along with any related data contained within the event, when available, such as the description) is shared. This MUST be a standard [SPDX](https://spdx.org/licenses/) short identifier (e.g., "MIT", "GPL-3.0-or-later", "Apache-2.0") when available. An additional parameter containing a reference to the actual text of the license MAY be provided. This tag can be repeated, to indicate multi-licensing, allowing recipients to use the code under any license of choosing among the referenced ones
- `license` - License under which the code is shared (e.g., "MIT", "GPL-3.0", "Apache-2.0")
- `dep` - Dependency required for the code to run (can be repeated)
- `repo` - Reference to a repository where this code originates. This MUST be a either standard URL or, alternatively, the address of a [NIP-34](34.md) Git repository announcement event in the form `"30617:<32-bytes hex a pubkey>:<d tag value>"`. If a repository announcement is referenced, a recommended relay URL where to find the event should be provided as an additional parameter
- `repo` - Reference to a repository where this code originates
## Format

10
EE.md
View File

@@ -1,12 +1,8 @@
> __Warning__ `unrecommended`: superseded by the [Marmot Protocol](https://github.com/marmot-protocol/marmot)
# NIP-EE
NIP-EE
======
## E2EE Messaging using the Messaging Layer Security (MLS) Protocol
E2EE Messaging using the Messaging Layer Security (MLS) Protocol
----------------------------------------------------------------
`final` `unrecommended` `optional`
`draft` `optional`
This NIP standardizes how to use the [MLS Protocol](https://www.rfc-editor.org/rfc/rfc9420.html) with Nostr for efficient and E2EE (end-to-end encrypted) direct and group messaging.

38
F1.md
View File

@@ -1,38 +0,0 @@
NIP-F1
======
Profile Hypercustomization
--------------------------
`draft` `optional`
This NIP describes a new event `kind:19999` that can be used for multiple optional and weird forms of profile customization, such as extra colors, extra pictures, preferences and background music.
It's completely optional and clients may choose to fulfill only some of these tags, or none. Clients may also allow users to turn off these customizations or not.
## Tags
| Name | Value type | Description |
| --- | ---- | ----------- |
| `background-color` | hex value | To be used by clients when displaying the user profile page |
| `foreground-color` | hex value | Idem |
| `background-music` | URL | Music that optionally plays when the profile is opened |
| `priority_kinds` | stringified kind number (variadic) | Kinds to be displayed by default in the user profile page (rather than `kind:1` always) |
| `custom` | string name, then value | An arbitrary field to be displayed along with the profile |
## Example
```yaml
{
"kind": 19999,
"tags": [
["background-color", "#1a1a2e"],
["foreground-color", "#eee444"],
["background-music", "https://example.com/music/profile-theme.mp3"],
["priority_kinds", "20", "30023", "21", "10009"],
["custom", "favorite fruit", "banana"],
["custom", "pets?", "no"]
],
// ...other fields
}
```

View File

@@ -108,7 +108,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
- [NIP-BE: Nostr BLE Communications Protocol](BE.md)
- [NIP-C0: Code Snippets](C0.md)
- [NIP-C7: Chats](C7.md)
- [NIP-EE: E2EE Messaging using MLS Protocol](EE.md) --- **unrecommended**: superseded by the [Marmot Protocol](https://github.com/marmot-protocol/marmot)
- [NIP-EE: E2EE Messaging using MLS Protocol](EE.md)
## Event Kinds
| kind | description | NIP |
@@ -135,9 +135,9 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `21` | Video Event | [71](71.md) |
| `22` | Short-form Portrait Video Event | [71](71.md) |
| `30` | internal reference | [NKBIP-03] |
| `31` | external web reference | [NKBIP-03] |
| `32` | hardcopy reference | [NKBIP-03] |
| `33` | prompt reference | [NKBIP-03] |
| `31` | external web reference | [NKBIP-03] |
| `32` | hardcopy reference | [NKBIP-03] |
| `33` | prompt reference | [NKBIP-03] |
| `40` | Channel Creation | [28](28.md) |
| `41` | Channel Metadata | [28](28.md) |
| `42` | Channel Message | [28](28.md) |
@@ -145,9 +145,9 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `44` | Channel Mute User | [28](28.md) |
| `62` | Request to Vanish | [62](62.md) |
| `64` | Chess (PGN) | [64](64.md) |
| `443` | KeyPackage | [Marmot](marmot) |
| `444` | Welcome Message | [Marmot](marmot) |
| `445` | Group Event | [Marmot](marmot) |
| `443` | KeyPackage | [EE](EE.md) |
| `444` | Welcome Message | [EE](EE.md) |
| `445` | Group Event | [EE](EE.md) |
| `818` | Merge Requests | [54](54.md) |
| `1018` | Poll Response | [88](88.md) |
| `1021` | Bid | [15](15.md) |
@@ -209,7 +209,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `10020` | Media follows | [51](51.md) |
| `10030` | User emoji list | [51](51.md) |
| `10050` | Relay list to receive DMs | [51](51.md), [17](17.md) |
| `10051` | KeyPackage Relays List | [Marmot](marmot) |
| `10051` | KeyPackage Relays List | [EE](EE.md) |
| `10063` | User server list | [Blossom][blossom] |
| `10096` | File storage server list | [96](96.md) (deprecated) |
| `10166` | Relay Monitor Announcement | [66](66.md) |
@@ -218,7 +218,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `11111` | Transport Method Announcement | [Nostr Epoxy][nostr-epoxy] |
| `13194` | Wallet Info | [47](47.md) |
| `13534` | Membership Lists | [43](43.md) |
| `14388` | User Sound Effect Lists | [Corny Chat][cornychat-usersoundlist] |
| `17375` | Cashu Wallet Event | [60](60.md) |
| `21000` | Lightning Pub RPC | [Lightning.Pub][lnpub] |
| `22242` | Client Authentication | [42](42.md) |
@@ -274,9 +273,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `31989` | Handler recommendation | [89](89.md) |
| `31990` | Handler information | [89](89.md) |
| `32267` | Software Application | |
| `32388` | User Room Favorites | [Corny Chat][cornychat-roomfavorites] |
| `33388` | High Scores | [Corny Chat][cornychat-highscores] |
| `34388` | Sound Effects | [Corny Chat][cornychat-soundeffects] |
| `34550` | Community Definition | [72](72.md) |
| `38172` | Cashu Mint Announcement | [87](87.md) |
| `38173` | Fedimint Announcement | [87](87.md) |
@@ -290,12 +286,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
[NUD: Custom Feeds]: https://wikifreedia.xyz/cip-01/
[nostrocket]: https://github.com/nostrocket/NIPS/blob/main/Problems.md
[lnpub]: https://github.com/shocknet/Lightning.Pub/blob/master/proto/autogenerated/client.md
[cornychat-usersoundlist]: https://cornychat.com/datatypes#kind14388usersoundeffectslist
[cornychat-slideset]: https://cornychat.com/datatypes#kind30388slideset
[cornychat-linkset]: https://cornychat.com/datatypes#kind31388linkset
[cornychat-roomfavorites]: https://cornychat.com/datatypes#kind32388roomfavorites
[cornychat-highscores]: https://cornychat.com/datatypes#kind33388highscores
[cornychat-soundeffects]: https://cornychat.com/datatypes#kind34388soundeffectsets
[joinstr]: https://gitlab.com/1440000bytes/joinstr/-/blob/main/NIP.md
[NKBIP-01]: https://wikistr.com/nkbip-01*fd208ee8c8f283780a9552896e4823cc9dc6bfd442063889577106940fd927c1
[NKBIP-02]: https://wikistr.com/nkbip-02*fd208ee8c8f283780a9552896e4823cc9dc6bfd442063889577106940fd927c1
@@ -304,8 +296,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
[Tidal-nostr]: https://wikistr.com/tidal-nostr
[geocaching]: https://nostrhub.io/naddr1qvzqqqrcvypzppscgyy746fhmrt0nq955z6xmf80pkvrat0yq0hpknqtd00z8z68qqgkwet0vdskx6rfdenj6etkv4h8guc6gs5y5
[nostr-epoxy]: https://github.com/Origami74/nostr-epoxy-reverse-proxy
[marmot]: https://github.com/marmot-protocol/marmot
## Message types
@@ -398,7 +388,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `repo` | Reference to the origin repository | -- | [C0](C0.md) |
| `runtime` | Runtime or environment specification | -- | [C0](C0.md) |
| `server` | file storage server url | -- | [96](96.md) |
| `sound` | shortcode, sound url, image url | -- | [51](51.md) |
| `subject` | subject | -- | [14](14.md), [17](17.md), [34](34.md) |
| `summary` | summary | -- | [23](23.md), [52](52.md) |
| `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) |