From 8b18e7818e0c2fcbd8bc82e0660f8b6ba23af50d Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sat, 14 Jan 2023 09:59:19 +1300 Subject: Several NIP examples (3, 11) weren't quoting the field keys (JSON keys must be quoted) --- 11.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to '11.md') diff --git a/11.md b/11.md index 2b26823..8cdb85e 100644 --- a/11.md +++ b/11.md @@ -12,13 +12,13 @@ When a relay receives an HTTP(s) request with an `Accept` header of `application ```json { - name: , - description: , - pubkey: , - contact: , - supported_nips: , - software: , - version: + "name": , + "description": , + "pubkey": , + "contact": , + "supported_nips": , + "software": , + "version": } ``` -- cgit v1.2.3 From f7b57e3735fc95482d9485d21c4439b9d21851ac Mon Sep 17 00:00:00 2001 From: nostr-wine <124309146+nostr-wine@users.noreply.github.com> Date: Sat, 18 Mar 2023 18:44:31 -0400 Subject: Add proposed extensions to NIP-11 Take the proposed changes from https://github.com/nostr-protocol/nips/pull/163 and put them in NIP-11 under "Extra Fields" --- 11.md | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) (limited to '11.md') diff --git a/11.md b/11.md index 8cdb85e..a8386ba 100644 --- a/11.md +++ b/11.md @@ -56,3 +56,200 @@ The relay server implementation MAY be provided in the `software` attribute. If ### Version ### The relay MAY choose to publish its software version as a string attribute. The string format is defined by the relay implementation. It is recommended this be a version number or commit identifier. + +Extra Fields +----------------- + +### Server Limitations ### + +These are limitations imposed by the relay on clients. Your client +should expect that requests which exceed these *practical* limitations +are rejected or fail immediately. + +```json +{ +... + limitation: { + max_message_length: 16384, + max_subscriptions: 20, + max_filters: 100, + max_limit: 5000, + max_subid_length: 100, + min_prefix: 4, + max_event_tags: 100, + max_content_length: 8196, + min_pow_difficulty: 30, + auth_required: true, + payment_required: true, + } +... +} +``` + +- `max_message_length`: this is the maximum number of bytes for incoming JSON that the relay +will attempt to decode and act upon. When you send large subscriptions, you will be +limited by this value. It also effectively limits the maximum size of any event. Value is +calculated from `[` to `]` and is after UTF-8 serialization (so some unicode characters +will cost 2-3 bytes). It is equal to the maximum size of the WebSocket message frame. + +- `max_subscriptions`: total number of subscriptions that may be +active on a single websocket connection to this relay. It's possible +that authenticated clients with a (paid) relationship to the relay +may have higher limits. + +- `max_filters`: maximum number of filter values in each subscription. +Must be one or higher. + +- `max_subid_length`: maximum length of subscription id as a string. + +- `min_prefix`: for `authors` and `ids` filters which are to match against +a hex prefix, you must provide at least this many hex digits in the prefix. + +- `max_limit`: the relay server will clamp each filter's `limit` value to this number. +This means the client won't be able to get more than this number +of events from a single subscription filter. This clamping is typically done silently +by the relay, but with this number, you can know that there are additional results +if you narrowed your filter's time range or other parameters. + +- `max_event_tags`: in any event, this is the maximum number of elements in the `tags` list. + +- `max_content_length`: maximum number of characters in the `content` +field of any event. This is a count of unicode characters. After +serializing into JSON it may be larger (in bytes), and is still +subject to the `max_message_length`, if defined. + +- `min_pow_difficulty`: new events will require at least this difficulty of PoW, +based on [NIP-13](13.md), or they will be rejected by this server. + +- `auth_required`: this relay requires [NIP-42](42.md) authentication +to happen before a new connection may perform any other action. +Even if set to False, authentication may be required for specific actions. + +- `payment_required`: this relay requires payment before a new connection may perform any action. + +### Event Retention ### + +There may be a cost associated with storing data forever, so relays +may wish to state retention times. The values stated here are defaults +for unauthenticated users and visitors. Paid users would likely have +other policies. + +Retention times are given in seconds, with `null` indicating infinity. +If zero is provided, this means the event will not be stored at +all, and preferably an error will be provided when those are received. + +```json +{ +... + retention: [ + { kinds: [0, 1, [5, 7], [40, 49]], time: 3600 }, + { kinds: [[40000, 49999], time: 100 }, + { kinds: [[30000, 39999], count: 1000 }, + { time: 3600, count: 10000 } + ] +... +} +``` + +`retention` is a list of specifications: each will apply to either all kinds, or +a subset of kinds. Ranges may be specified for the kind field as a tuple of inclusive +start and end values. Events of indicated kind (or all) are then limited to a `count` +and or time period. + +It is possible to effectively blacklist Nostr-based protocols that rely on +a specific `kind` number, by giving a retention time of zero for those `kind` values. +While that is unfortunate, it does allow clients to discover servers that will +support their protocol quickly via a single HTTP fetch. + +There is no need to specify retention times for _ephemeral events_ as defined +in [NIP-16](16.md) since they are not retained. + + +### Content Limitations ### + +Some relays may be governed by the arbitrary laws of a nation state. This +may limit what content can be stored in cleartext on those relays. All +clients are encouraged to use encryption to work around this limitation. + +It is not possible to describe the limitations of each country's laws +and policies which themselves are typically vague and constantly shifting. + +Therefore, this field allows the relay operator to indicate which +country's' laws might end up being enforced on them, and then +indirectly on their users's content. + +Users should be able to avoid relays in countries they don't like, +and/or select relays in more favourable zones. Exposing this +flexibility is up to the client software. + +```json +{ +... + relay_countries: [ 'CA', 'US' ], +... +} +``` + +- `relay_countries`: a list of two-level ISO country codes (ISO 3166-1 alpha-2) whose + laws and policies may affect this relay. `EU` may be used for European Union countries. + +Remember that a relay may be hosted in a country which is not the +country of the legal entities who own the relay, so it's very +likely a number of countries are involved. + + +### Community Preferences ### + +For public text notes at least, a relay may try to foster a +local community. This would encourage users to follow the global +feed on that relay, in addition to their usual individual follows. +To support this goal, relays MAY specify some of the following values. + +```json +{ +... + language_tags: [ 'en', 'en-419' ], + tags: [ 'sfw-only', 'bitcoin-only', 'anime' ], + posting_policy: 'https://example.com/posting-policy.html', +... +} +``` + +- `language_tags` is an ordered list + of [IETF language tags](https://en.wikipedia.org/wiki/IETF_language_tag) indicating + the major languages spoken on the relay. + +- `tags` is a list of limitations on the topics to be discussed. + For example `sfw-only` indicates hat only "Safe For Work" content + is encouraged on this relay. This relies on assumptions of what the + "work" "community" feels "safe" talking about. In time, a common + set of tags may emerge that allow users to find relays that suit + their needs, and client software will be able to parse these tags easily. + The `bitcoin-only` tag indicates that any *altcoin*, *"crypto"* or *blockchain* + comments will be ridiculed without mercy. + +- `posting_policy` is a link to a human-readable page which specifies the + community policies for the relay. In cases where `sfw-only` is True, it's + important to link to a page which gets into the specifics of your posting policy. + +The `description` field should be used to describe your community +goals and values, in brief. The `posting_policy` is for additional +detail and legal terms. Use the `tags` field to signify limitations +on content, or topics to be discussed, which could be machine +processed by appropriate client software. + +### Pay-To-Relay ### + +Relays that require payments may want to expose their fee schedules. + +```json +{ +... + payments_url: "https://my-relay/payments", + fees: { + "admission": [{ amount: 1000000, unit: 'msats' }], + "subscription": [{ amount: 5000000, unit: 'msats', period: 2592000 }], + "publication": [{ kinds: [4], amount: 100, unit: 'msats' }], + }, +... +} -- cgit v1.2.3 From 92a41a284a55371e13f7155be0ba8a9ab4225561 Mon Sep 17 00:00:00 2001 From: nostr-wine <124309146+nostr-wine@users.noreply.github.com> Date: Sat, 18 Mar 2023 18:53:54 -0400 Subject: Add doc-hex as author --- 11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '11.md') diff --git a/11.md b/11.md index a8386ba..c538326 100644 --- a/11.md +++ b/11.md @@ -4,7 +4,7 @@ NIP-11 Relay Information Document --------------------------- -`draft` `optional` `author:scsibug` +`draft` `optional` `author:scsibug` `author:doc-hex` Relays may provide server metadata to clients to inform them of capabilities, administrative contacts, and various server attributes. This is made available as a JSON document over HTTP, on the same URI as the relay's websocket. -- cgit v1.2.3 From 2394e5cc630741e036e6d0554e59a6611a123030 Mon Sep 17 00:00:00 2001 From: nostr-wine <124309146+nostr-wine@users.noreply.github.com> Date: Sat, 18 Mar 2023 18:57:02 -0400 Subject: Add cameri as author --- 11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '11.md') diff --git a/11.md b/11.md index c538326..f97193c 100644 --- a/11.md +++ b/11.md @@ -4,7 +4,7 @@ NIP-11 Relay Information Document --------------------------- -`draft` `optional` `author:scsibug` `author:doc-hex` +`draft` `optional` `author:scsibug` `author:doc-hex` `author:cameri` Relays may provide server metadata to clients to inform them of capabilities, administrative contacts, and various server attributes. This is made available as a JSON document over HTTP, on the same URI as the relay's websocket. -- cgit v1.2.3 From 3cec80d99ebbee6b72aae31f1856181d04971244 Mon Sep 17 00:00:00 2001 From: vivganes Date: Fri, 7 Apr 2023 17:38:03 +0530 Subject: fix grammar and typos --- 04.md | 2 +- 05.md | 2 +- 11.md | 8 ++++---- 13.md | 2 +- 22.md | 2 +- 25.md | 2 +- 40.md | 2 +- 45.md | 2 +- 51.md | 2 +- 78.md | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) (limited to '11.md') diff --git a/04.md b/04.md index 60ec5e0..6e45b74 100644 --- a/04.md +++ b/04.md @@ -50,4 +50,4 @@ This standard does not go anywhere near what is considered the state-of-the-art ## Client Implementation Warning -Client's *should not* search and replace public key or note references from the `.content`. If processed like a regular text note (where `@npub...` is replaced with `#[0]` with a `["p", "..."]` tag) the tags are leaked and the mentioned user will receive the message in their inbox. +Clients *should not* search and replace public key or note references from the `.content`. If processed like a regular text note (where `@npub...` is replaced with `#[0]` with a `["p", "..."]` tag) the tags are leaked and the mentioned user will receive the message in their inbox. diff --git a/05.md b/05.md index 992983f..a7b42b0 100644 --- a/05.md +++ b/05.md @@ -64,7 +64,7 @@ For example, if after finding that `bob@bob.com` has the public key `abc...def`, ### Public keys must be in hex format -Keys must be returned in hex format. Keys in NIP-19 `npub` format are are only meant to be used for display in client UIs, not in this NIP. +Keys must be returned in hex format. Keys in NIP-19 `npub` format are only meant to be used for display in client UIs, not in this NIP. ### User Discovery implementation suggestion diff --git a/11.md b/11.md index f97193c..1766320 100644 --- a/11.md +++ b/11.md @@ -154,7 +154,7 @@ all, and preferably an error will be provided when those are received. `retention` is a list of specifications: each will apply to either all kinds, or a subset of kinds. Ranges may be specified for the kind field as a tuple of inclusive start and end values. Events of indicated kind (or all) are then limited to a `count` -and or time period. +and/or time period. It is possible to effectively blacklist Nostr-based protocols that rely on a specific `kind` number, by giving a retention time of zero for those `kind` values. @@ -175,8 +175,8 @@ It is not possible to describe the limitations of each country's laws and policies which themselves are typically vague and constantly shifting. Therefore, this field allows the relay operator to indicate which -country's' laws might end up being enforced on them, and then -indirectly on their users's content. +countries' laws might end up being enforced on them, and then +indirectly on their users' content. Users should be able to avoid relays in countries they don't like, and/or select relays in more favourable zones. Exposing this @@ -220,7 +220,7 @@ To support this goal, relays MAY specify some of the following values. the major languages spoken on the relay. - `tags` is a list of limitations on the topics to be discussed. - For example `sfw-only` indicates hat only "Safe For Work" content + For example `sfw-only` indicates that only "Safe For Work" content is encouraged on this relay. This relies on assumptions of what the "work" "community" feels "safe" talking about. In time, a common set of tags may emerge that allow users to find relays that suit diff --git a/13.md b/13.md index cf28d86..e3662a5 100644 --- a/13.md +++ b/13.md @@ -90,4 +90,4 @@ $ echo '["REQ", "subid", {"ids": ["000000000"]}]' | websocat wss://some-relay.c Delegated Proof of Work ----------------------- -Since the `NIP-01` note id does not commit to any signature, PoW can be outsourced to PoW providers, perhaps for a fee. This provides a way for clients to get their messages out to PoW-restricted relays without having to do any work themselves, which is useful for energy constrained devices like on mobile +Since the `NIP-01` note id does not commit to any signature, PoW can be outsourced to PoW providers, perhaps for a fee. This provides a way for clients to get their messages out to PoW-restricted relays without having to do any work themselves, which is useful for energy-constrained devices like mobile phones. diff --git a/22.md b/22.md index fb29e6a..2172519 100644 --- a/22.md +++ b/22.md @@ -22,7 +22,7 @@ This NIP formalizes restrictions on event timestamps as accepted by a relay and The event `created_at` field is just a unix timestamp and can be set to a time in the past or future. Relays accept and share events dated to 20 years ago or 50,000 years in the future. This NIP aims to define a way for relays that do not want to store events with *any* timestamp to set their own restrictions. -[Replaceable events](16.md#replaceable-events) can behave rather unexpected if the user wrote them - or tried to write them - with a wrong system clock. Persisting an update with a backdated system now would result in the update not getting persisted without a notification and if they did the last update with a forward dated system, they will again fail to do another update with the now correct time. +[Replaceable events](16.md#replaceable-events) can behave rather unexpectedly if the user wrote them - or tried to write them - with a wrong system clock. Persisting an update with a backdated system now would result in the update not getting persisted without a notification and if they did the last update with a forward dated system, they will again fail to do another update with the now correct time. A wide adoption of this NIP could create a better user experience as it would decrease the amount of events that appear wildly out of order or even from impossible dates in the distant past or future. diff --git a/25.md b/25.md index 5ab1553..f74bcc0 100644 --- a/25.md +++ b/25.md @@ -16,7 +16,7 @@ A reaction with `content` set to `-` SHOULD be interpreted as a "dislike" or "downvote". It SHOULD NOT be counted as a "like", and MAY be displayed as a downvote or dislike on a post. A client MAY also choose to tally likes against dislikes in a reddit-like system of upvotes and downvotes, or display them as -separate tallys. +separate tallies. The `content` MAY be an emoji, in this case it MAY be interpreted as a "like" or "dislike", or the client MAY display this emoji reaction on the post. diff --git a/40.md b/40.md index 274ee80..32680db 100644 --- a/40.md +++ b/40.md @@ -43,7 +43,7 @@ Clients SHOULD ignore events that have expired. Relay Behavior -------------- -Relays MAY NOT delete an expired message immediately on expiration and MAY persist them indefinitely. +Relays MAY NOT delete expired messages immediately on expiration and MAY persist them indefinitely. Relays SHOULD NOT send expired events to clients, even if they are stored. Relays SHOULD drop any events that are published to them if they are expired. An expiration timestamp does not affect storage of ephemeral events. diff --git a/45.md b/45.md index cd81c11..28e5e96 100644 --- a/45.md +++ b/45.md @@ -6,7 +6,7 @@ Event Counts `draft` `optional` `author:staab` -Relays may support the `COUNT` verb, which provide a mechanism for obtaining event counts. +Relays may support the `COUNT` verb, which provides a mechanism for obtaining event counts. ## Motivation diff --git a/51.md b/51.md index b4143ad..34a5def 100644 --- a/51.md +++ b/51.md @@ -10,7 +10,7 @@ A "list" event is defined as having a list of public and/or private tags. Public If a list type should only be defined once per user (like the 'Mute' list), the list type's events should follow the specification for [NIP-16 - Replaceable Events](16.md). These lists may be referred to as 'replaceable lists'. -Otherwise the list type's events should follow the specification for [NIP-33 - Parameterized Replaceable Events](33.md), where the list name will be used as the 'd' parameter. These lists may be referred to as 'parameterized replaceable lists'. +Otherwise, the list type's events should follow the specification for [NIP-33 - Parameterized Replaceable Events](33.md), where the list name will be used as the 'd' parameter. These lists may be referred to as 'parameterized replaceable lists'. ## Replaceable List Event Example diff --git a/78.md b/78.md index 175f66b..10ff535 100644 --- a/78.md +++ b/78.md @@ -8,7 +8,7 @@ Arbitrary custom app data The goal of this NIP is to enable [remoteStorage](https://remotestorage.io/)-like capabilities for custom applications that do not care about interoperability. -Even though interoperability is great, some apps do not want or do not need interoperability, and it that wouldn't make sense for them. Yet Nostr can still serve as a generalized data storage for these apps in a "bring your own database" way, for example: a user would open an app and somehow input their preferred relay for storage, which would then enable these apps to store application-specific data there. +Even though interoperability is great, some apps do not want or do not need interoperability, and it wouldn't make sense for them. Yet Nostr can still serve as a generalized data storage for these apps in a "bring your own database" way, for example: a user would open an app and somehow input their preferred relay for storage, which would then enable these apps to store application-specific data there. ## Nostr event -- cgit v1.2.3 From c7711aa8027b064b14236343dc9f287a5ecd3b2f Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sat, 8 Apr 2023 14:13:18 +1200 Subject: JSON quoting (and other fixes) --- 11.md | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) (limited to '11.md') diff --git a/11.md b/11.md index 1766320..a377364 100644 --- a/11.md +++ b/11.md @@ -69,18 +69,18 @@ are rejected or fail immediately. ```json { ... - limitation: { - max_message_length: 16384, - max_subscriptions: 20, - max_filters: 100, - max_limit: 5000, - max_subid_length: 100, - min_prefix: 4, - max_event_tags: 100, - max_content_length: 8196, - min_pow_difficulty: 30, - auth_required: true, - payment_required: true, + "limitation": { + "max_message_length": 16384, + "max_subscriptions": 20, + "max_filters": 100, + "max_limit": 5000, + "max_subid_length": 100, + "min_prefix": 4, + "max_event_tags": 100, + "max_content_length": 8196, + "min_pow_difficulty": 30, + "auth_required": true, + "payment_required": true, } ... } @@ -141,11 +141,11 @@ all, and preferably an error will be provided when those are received. ```json { ... - retention: [ - { kinds: [0, 1, [5, 7], [40, 49]], time: 3600 }, - { kinds: [[40000, 49999], time: 100 }, - { kinds: [[30000, 39999], count: 1000 }, - { time: 3600, count: 10000 } + "retention": [ + { "kinds": [0, 1, [5, 7], [40, 49]], "time": 3600 }, + { "kinds": [[40000, 49999]], "time": 100 }, + { "kinds": [[30000, 39999]], "count": 1000 }, + { "time": 3600, "count": 10000 } ] ... } @@ -185,7 +185,7 @@ flexibility is up to the client software. ```json { ... - relay_countries: [ 'CA', 'US' ], + "relay_countries": [ "CA", "US" ], ... } ``` @@ -208,9 +208,9 @@ To support this goal, relays MAY specify some of the following values. ```json { ... - language_tags: [ 'en', 'en-419' ], - tags: [ 'sfw-only', 'bitcoin-only', 'anime' ], - posting_policy: 'https://example.com/posting-policy.html', + "language_tags": [ "en", "en-419" ], + "tags": [ "sfw-only", "bitcoin-only", "anime" ], + "posting_policy": "https://example.com/posting-policy.html", ... } ``` @@ -245,11 +245,12 @@ Relays that require payments may want to expose their fee schedules. ```json { ... - payments_url: "https://my-relay/payments", - fees: { - "admission": [{ amount: 1000000, unit: 'msats' }], - "subscription": [{ amount: 5000000, unit: 'msats', period: 2592000 }], - "publication": [{ kinds: [4], amount: 100, unit: 'msats' }], + "payments_url": "https://my-relay/payments", + "fees": { + "admission": [{ "amount": 1000000, "unit": "msats" }], + "subscription": [{ "amount": 5000000, "unit": "msats", "period": 2592000 }], + "publication": [{ "kinds": [4], "amount": 100, "unit": "msats" }], }, ... } +``` -- cgit v1.2.3 From d7c189d70bd1f9489a388920bc325576bd9cf8e4 Mon Sep 17 00:00:00 2001 From: "Robert C. Martin" Date: Tue, 2 May 2023 09:41:59 -0500 Subject: NIP11 example using curl. (#490) --- 11.md | 88 ++++++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 58 insertions(+), 30 deletions(-) (limited to '11.md') diff --git a/11.md b/11.md index a377364..8951835 100644 --- a/11.md +++ b/11.md @@ -69,18 +69,18 @@ are rejected or fail immediately. ```json { ... - "limitation": { - "max_message_length": 16384, - "max_subscriptions": 20, - "max_filters": 100, - "max_limit": 5000, - "max_subid_length": 100, - "min_prefix": 4, - "max_event_tags": 100, - "max_content_length": 8196, - "min_pow_difficulty": 30, - "auth_required": true, - "payment_required": true, + limitation: { + max_message_length: 16384, + max_subscriptions: 20, + max_filters: 100, + max_limit: 5000, + max_subid_length: 100, + min_prefix: 4, + max_event_tags: 100, + max_content_length: 8196, + min_pow_difficulty: 30, + auth_required: true, + payment_required: true, } ... } @@ -141,11 +141,11 @@ all, and preferably an error will be provided when those are received. ```json { ... - "retention": [ - { "kinds": [0, 1, [5, 7], [40, 49]], "time": 3600 }, - { "kinds": [[40000, 49999]], "time": 100 }, - { "kinds": [[30000, 39999]], "count": 1000 }, - { "time": 3600, "count": 10000 } + retention: [ + { kinds: [0, 1, [5, 7], [40, 49]], time: 3600 }, + { kinds: [[40000, 49999], time: 100 }, + { kinds: [[30000, 39999], count: 1000 }, + { time: 3600, count: 10000 } ] ... } @@ -154,7 +154,7 @@ all, and preferably an error will be provided when those are received. `retention` is a list of specifications: each will apply to either all kinds, or a subset of kinds. Ranges may be specified for the kind field as a tuple of inclusive start and end values. Events of indicated kind (or all) are then limited to a `count` -and/or time period. +and or time period. It is possible to effectively blacklist Nostr-based protocols that rely on a specific `kind` number, by giving a retention time of zero for those `kind` values. @@ -175,8 +175,8 @@ It is not possible to describe the limitations of each country's laws and policies which themselves are typically vague and constantly shifting. Therefore, this field allows the relay operator to indicate which -countries' laws might end up being enforced on them, and then -indirectly on their users' content. +country's' laws might end up being enforced on them, and then +indirectly on their users's content. Users should be able to avoid relays in countries they don't like, and/or select relays in more favourable zones. Exposing this @@ -185,7 +185,7 @@ flexibility is up to the client software. ```json { ... - "relay_countries": [ "CA", "US" ], + relay_countries: [ 'CA', 'US' ], ... } ``` @@ -208,9 +208,9 @@ To support this goal, relays MAY specify some of the following values. ```json { ... - "language_tags": [ "en", "en-419" ], - "tags": [ "sfw-only", "bitcoin-only", "anime" ], - "posting_policy": "https://example.com/posting-policy.html", + language_tags: [ 'en', 'en-419' ], + tags: [ 'sfw-only', 'bitcoin-only', 'anime' ], + posting_policy: 'https://example.com/posting-policy.html', ... } ``` @@ -220,7 +220,7 @@ To support this goal, relays MAY specify some of the following values. the major languages spoken on the relay. - `tags` is a list of limitations on the topics to be discussed. - For example `sfw-only` indicates that only "Safe For Work" content + For example `sfw-only` indicates hat only "Safe For Work" content is encouraged on this relay. This relies on assumptions of what the "work" "community" feels "safe" talking about. In time, a common set of tags may emerge that allow users to find relays that suit @@ -245,12 +245,40 @@ Relays that require payments may want to expose their fee schedules. ```json { ... - "payments_url": "https://my-relay/payments", - "fees": { - "admission": [{ "amount": 1000000, "unit": "msats" }], - "subscription": [{ "amount": 5000000, "unit": "msats", "period": 2592000 }], - "publication": [{ "kinds": [4], "amount": 100, "unit": "msats" }], + payments_url: "https://my-relay/payments", + fees: { + "admission": [{ amount: 1000000, unit: 'msats' }], + "subscription": [{ amount: 5000000, unit: 'msats', period: 2592000 }], + "publication": [{ kinds: [4], amount: 100, unit: 'msats' }], }, ... } ``` + +### Examples ### +As of 2 May 2023 the following `curl` command provided these results. + + >curl -H "Accept: application/nostr+json" https://eden.nostr.land + + {"name":"eden.nostr.land", + "description":"Eden Nostr Land - Toronto 1-01", + "pubkey":"00000000827ffaa94bfea288c3dfce4422c794fbb96625b6b31e9049f729d700", + "contact":"me@ricardocabral.io", + "supported_nips":[1,2,4,9,11,12,15,16,20,22,26,28,33,40], + "supported_nip_extensions":["11a"], + "software":"git+https://github.com/Cameri/nostream.git", + "version":"1.22.6", + "limitation":{"max_message_length":1048576, + "max_subscriptions":10, + "max_filters":2500, + "max_limit":5000, + "max_subid_length":256, + "min_prefix":4, + "max_event_tags":2500, + "max_content_length":65536, + "min_pow_difficulty":0, + "auth_required":false, + "payment_required":true}, + "payments_url":"https://eden.nostr.land/invoices", + "fees":{"admission":[{"amount":5000000,"unit":"msats"}], + "publication":[]}} -- cgit v1.2.3 From d70aa87f076f8609950fc96e4e66d86c711c66ac Mon Sep 17 00:00:00 2001 From: Asai Toshiya Date: Tue, 9 May 2023 22:09:45 +0900 Subject: Restore some lost changes c7711aa and 3cec80d. --- 11.md | 60 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) (limited to '11.md') diff --git a/11.md b/11.md index 8951835..b0d6003 100644 --- a/11.md +++ b/11.md @@ -69,18 +69,18 @@ are rejected or fail immediately. ```json { ... - limitation: { - max_message_length: 16384, - max_subscriptions: 20, - max_filters: 100, - max_limit: 5000, - max_subid_length: 100, - min_prefix: 4, - max_event_tags: 100, - max_content_length: 8196, - min_pow_difficulty: 30, - auth_required: true, - payment_required: true, + "limitation": { + "max_message_length": 16384, + "max_subscriptions": 20, + "max_filters": 100, + "max_limit": 5000, + "max_subid_length": 100, + "min_prefix": 4, + "max_event_tags": 100, + "max_content_length": 8196, + "min_pow_difficulty": 30, + "auth_required": true, + "payment_required": true, } ... } @@ -141,11 +141,11 @@ all, and preferably an error will be provided when those are received. ```json { ... - retention: [ - { kinds: [0, 1, [5, 7], [40, 49]], time: 3600 }, - { kinds: [[40000, 49999], time: 100 }, - { kinds: [[30000, 39999], count: 1000 }, - { time: 3600, count: 10000 } + "retention": [ + { "kinds": [0, 1, [5, 7], [40, 49]], "time": 3600 }, + { "kinds": [[40000, 49999]], "time": 100 }, + { "kinds": [[30000, 39999]], "count": 1000 }, + { "time": 3600, "count": 10000 } ] ... } @@ -154,7 +154,7 @@ all, and preferably an error will be provided when those are received. `retention` is a list of specifications: each will apply to either all kinds, or a subset of kinds. Ranges may be specified for the kind field as a tuple of inclusive start and end values. Events of indicated kind (or all) are then limited to a `count` -and or time period. +and/or time period. It is possible to effectively blacklist Nostr-based protocols that rely on a specific `kind` number, by giving a retention time of zero for those `kind` values. @@ -175,8 +175,8 @@ It is not possible to describe the limitations of each country's laws and policies which themselves are typically vague and constantly shifting. Therefore, this field allows the relay operator to indicate which -country's' laws might end up being enforced on them, and then -indirectly on their users's content. +countries' laws might end up being enforced on them, and then +indirectly on their users' content. Users should be able to avoid relays in countries they don't like, and/or select relays in more favourable zones. Exposing this @@ -185,7 +185,7 @@ flexibility is up to the client software. ```json { ... - relay_countries: [ 'CA', 'US' ], + "relay_countries": [ "CA", "US" ], ... } ``` @@ -208,9 +208,9 @@ To support this goal, relays MAY specify some of the following values. ```json { ... - language_tags: [ 'en', 'en-419' ], - tags: [ 'sfw-only', 'bitcoin-only', 'anime' ], - posting_policy: 'https://example.com/posting-policy.html', + "language_tags": [ "en", "en-419" ], + "tags": [ "sfw-only", "bitcoin-only", "anime" ], + "posting_policy": "https://example.com/posting-policy.html", ... } ``` @@ -220,7 +220,7 @@ To support this goal, relays MAY specify some of the following values. the major languages spoken on the relay. - `tags` is a list of limitations on the topics to be discussed. - For example `sfw-only` indicates hat only "Safe For Work" content + For example `sfw-only` indicates that only "Safe For Work" content is encouraged on this relay. This relies on assumptions of what the "work" "community" feels "safe" talking about. In time, a common set of tags may emerge that allow users to find relays that suit @@ -245,11 +245,11 @@ Relays that require payments may want to expose their fee schedules. ```json { ... - payments_url: "https://my-relay/payments", - fees: { - "admission": [{ amount: 1000000, unit: 'msats' }], - "subscription": [{ amount: 5000000, unit: 'msats', period: 2592000 }], - "publication": [{ kinds: [4], amount: 100, unit: 'msats' }], + "payments_url": "https://my-relay/payments", + "fees": { + "admission": [{ "amount": 1000000, "unit": "msats" }], + "subscription": [{ "amount": 5000000, "unit": "msats", "period": 2592000 }], + "publication": [{ "kinds": [4], "amount": 100, "unit": "msats" }], }, ... } -- cgit v1.2.3