mirror of
https://github.com/nostr-protocol/nips.git
synced 2025-12-11 09:38:50 +00:00
Compare commits
1 Commits
iot
...
revert-798
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f829e7ccbf |
6
01.md
6
01.md
@@ -82,14 +82,12 @@ Kinds specify how clients should interpret the meaning of each event and the oth
|
|||||||
And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation:
|
And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation:
|
||||||
|
|
||||||
- for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays.
|
- for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays.
|
||||||
- for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event MUST be stored by relays, older versions MAY be discarded.
|
- for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event is expected to (SHOULD) be stored by relays, older versions are expected to be discarded.
|
||||||
- for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays.
|
- for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays.
|
||||||
- for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event MUST be stored by relays, older versions MAY be discarded.
|
- for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event is expected to be stored by relays, older versions are expected to be discarded.
|
||||||
|
|
||||||
In case of replaceable events with the same timestamp, the event with the lowest id (first in lexical order) should be retained, and the other discarded.
|
In case of replaceable events with the same timestamp, the event with the lowest id (first in lexical order) should be retained, and the other discarded.
|
||||||
|
|
||||||
When answering to `REQ` messages for replaceable events such as `{"kinds":[0],"authors":[<hex-key>]}`, even if the relay has more than one version stored, it SHOULD return just the latest one.
|
|
||||||
|
|
||||||
These are just conventions and relay implementations may differ.
|
These are just conventions and relay implementations may differ.
|
||||||
|
|
||||||
## Communication between clients and relays
|
## Communication between clients and relays
|
||||||
|
|||||||
33
03.md
33
03.md
@@ -4,33 +4,20 @@ NIP-03
|
|||||||
OpenTimestamps Attestations for Events
|
OpenTimestamps Attestations for Events
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
`draft` `optional` `author:fiatjaf` `author:constant`
|
`draft` `optional` `author:fiatjaf`
|
||||||
|
|
||||||
This NIP defines an event with `kind:1040` that can contain an [OpenTimestamps](https://opentimestamps.org/) proof for any other event:
|
When there is an OTS available it MAY be included in the existing event body under the `ots` key:
|
||||||
|
|
||||||
```json
|
```
|
||||||
{
|
{
|
||||||
"kind": 1040
|
"id": ...,
|
||||||
"tags": [
|
"kind": ...,
|
||||||
["e", <event-id>, <relay-url>],
|
...,
|
||||||
["block", <block-height-as-string>, <block-hash>],
|
...,
|
||||||
["alt", "opentimestamps attestation"]
|
"ots": <base64-encoded OTS file data>
|
||||||
],
|
|
||||||
"content": <base64-encoded OTS file data>
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- The OpenTimestamps proof MUST prove the referenced `e` event id as its digest.
|
The _event id_ MUST be used as the raw hash to be included in the OpenTimestamps merkle tree.
|
||||||
- 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]
|
|
||||||
```
|
|
||||||
|
|||||||
1
07.md
1
07.md
@@ -33,4 +33,3 @@ async window.nostr.nip04.decrypt(pubkey, ciphertext): string // takes ciphertext
|
|||||||
- [AKA Profiles](https://github.com/neilck/aka-extension) (Chrome, stores multiple keys)
|
- [AKA Profiles](https://github.com/neilck/aka-extension) (Chrome, stores multiple keys)
|
||||||
- [TokenPocket](https://www.tokenpocket.pro/) (Android, IOS, Chrome and derivatives)
|
- [TokenPocket](https://www.tokenpocket.pro/) (Android, IOS, Chrome and derivatives)
|
||||||
- [Nostrmo](https://github.com/haorendashu/nostrmo_faq#download) (Android, IOS)
|
- [Nostrmo](https://github.com/haorendashu/nostrmo_faq#download) (Android, IOS)
|
||||||
- [Spring Browser](https://spring.site) (Android)
|
|
||||||
|
|||||||
6
25.md
6
25.md
@@ -7,7 +7,7 @@ Reactions
|
|||||||
|
|
||||||
`draft` `optional` `author:jb55`
|
`draft` `optional` `author:jb55`
|
||||||
|
|
||||||
A reaction is a `kind 7` event that is used to react to other events.
|
A reaction is a `kind 7` note that is used to react to other notes.
|
||||||
|
|
||||||
The generic reaction, represented by the `content` set to a `+` string, SHOULD
|
The generic reaction, represented by the `content` set to a `+` string, SHOULD
|
||||||
be interpreted as a "like" or "upvote".
|
be interpreted as a "like" or "upvote".
|
||||||
@@ -34,9 +34,6 @@ 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 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
|
Example code
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
@@ -46,7 +43,6 @@ func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> Nost
|
|||||||
}
|
}
|
||||||
tags.append(["e", liked.id])
|
tags.append(["e", liked.id])
|
||||||
tags.append(["p", liked.pubkey])
|
tags.append(["p", liked.pubkey])
|
||||||
tags.append(["k", liked.kind])
|
|
||||||
let ev = NostrEvent(content: "+", pubkey: pubkey, kind: 7, tags: tags)
|
let ev = NostrEvent(content: "+", pubkey: pubkey, kind: 7, tags: tags)
|
||||||
ev.calculate_id()
|
ev.calculate_id()
|
||||||
ev.sign(privkey: privkey)
|
ev.sign(privkey: privkey)
|
||||||
|
|||||||
4
57.md
4
57.md
@@ -45,7 +45,7 @@ Example:
|
|||||||
"kind": 9734,
|
"kind": 9734,
|
||||||
"content": "Zap!",
|
"content": "Zap!",
|
||||||
"tags": [
|
"tags": [
|
||||||
["relays", "wss://nostr-pub.wellorder.com", "wss://anotherrelay.example.com"],
|
["relays", "wss://nostr-pub.wellorder.com"],
|
||||||
["amount", "21000"],
|
["amount", "21000"],
|
||||||
["lnurl", "lnurl1dp68gurn8ghj7um5v93kketj9ehx2amn9uh8wetvdskkkmn0wahz7mrww4excup0dajx2mrv92x9xp"],
|
["lnurl", "lnurl1dp68gurn8ghj7um5v93kketj9ehx2amn9uh8wetvdskkkmn0wahz7mrww4excup0dajx2mrv92x9xp"],
|
||||||
["p", "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"],
|
["p", "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"],
|
||||||
@@ -66,7 +66,7 @@ A signed `zap request` event is not published, but is instead sent using a HTTP
|
|||||||
- `nostr` is the `9734` `zap request` event, JSON encoded then URI encoded
|
- `nostr` is the `9734` `zap request` event, JSON encoded then URI encoded
|
||||||
- `lnurl` is the lnurl pay url of the recipient, encoded using bech32 with the prefix `lnurl`
|
- `lnurl` is the lnurl pay url of the recipient, encoded using bech32 with the prefix `lnurl`
|
||||||
|
|
||||||
This request should return a JSON response with a `pr` key, which is the invoice the sender must pay to finalize his zap. Here is an example flow in javascript:
|
This request should return a JSON response with a `pr` key, which is the invoice the sender must pay to finalize his zap. Here is an example flow:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
const senderPubkey // The sender's pubkey
|
const senderPubkey // The sender's pubkey
|
||||||
|
|||||||
2
65.md
2
65.md
@@ -59,5 +59,3 @@ This NIP allows Clients to connect directly with the most up-to-date relay set f
|
|||||||
4. DMs SHOULD only be broadcasted to the author's WRITE relays and to the receiver's READ relays to keep maximum privacy.
|
4. DMs SHOULD only be broadcasted to the author's WRITE relays and to the receiver's READ relays to keep maximum privacy.
|
||||||
|
|
||||||
5. If a relay signals support for this NIP in their [NIP-11](11.md) document that means they're willing to accept kind 10002 events from a broad range of users, not only their paying customers or whitelisted group.
|
5. If a relay signals support for this NIP in their [NIP-11](11.md) document that means they're willing to accept kind 10002 events from a broad range of users, not only their paying customers or whitelisted group.
|
||||||
|
|
||||||
6. Clients SHOULD deduplicate connections by normalizing relay URIs according to [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#section-6).
|
|
||||||
|
|||||||
48
91.md
48
91.md
@@ -1,48 +0,0 @@
|
|||||||
NIP-91
|
|
||||||
======
|
|
||||||
|
|
||||||
IoT sensors and intents
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
`draft` `optional` `author:BlackCoffee` `author:arcbtc` `author:fiatjaf`
|
|
||||||
|
|
||||||
This NIP standardizes communication of public sensor and intent events in order to create an open, pluggable and interoperable standard for "Internet of Things" devices to communicate.
|
|
||||||
|
|
||||||
The standard event format follows the following template:
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"kind": <a number from the table below>,
|
|
||||||
"tags": [
|
|
||||||
["device", <optional device id>],
|
|
||||||
["alt", <optional human-readable translation of the event>],
|
|
||||||
],
|
|
||||||
"content": "<data according to the format in the table below>"
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Ideally each device would have its own public key, which allows for easy command-and-control and comes with built-in trus guarantees (i.e. you know you're getting the data from the correct device if you know its key and can check the signature), but the `device` tag exists for when that is too cumbersome and more than one device is using the same key.
|
|
||||||
|
|
||||||
The `alt` tag follows NIP-31 and can accomodate all human-readable needs, like the device name or the human-readable name of the place it is in.
|
|
||||||
|
|
||||||
Other generic tags, like `g` for geolocation, may be included.
|
|
||||||
|
|
||||||
### Event Kinds
|
|
||||||
|
|
||||||
Kinds between 8000-8999 (inclusive) are reserved for this NIP, to be filled in the table below.
|
|
||||||
|
|
||||||
| kind | name | type | unit | example | description |
|
|
||||||
| ----- | ----- | ------ | ----- | ----- | -------- |
|
|
||||||
| 8000 | intent | | | | someone wants to trigger an action on a device? |
|
|
||||||
| 8001 | on | empty | | | device was turned on |
|
|
||||||
| 8002 | off | empty | | | device will turn off |
|
|
||||||
| 8003 | temperature | number | celsius | 20.9 | |
|
|
||||||
| 8004 | pressure | number | pascals | 1013 | |
|
|
||||||
| 8005 | location | array | decimal degrees | [51.5053, -0.08737] | |
|
|
||||||
| 8006 | light | | | | |
|
|
||||||
| 8007 | humidity | | | | |
|
|
||||||
| 8008 | rain | | | | |
|
|
||||||
| 8009 | moisture | | | | |
|
|
||||||
| 8010 | unary switch | | empty | | a sensor that detects if a thing happened or not |
|
|
||||||
| 8011 | binary switch | boolean | | true / false | a switch that can be turned on or off |
|
|
||||||
194
README.md
194
README.md
@@ -38,7 +38,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
- [NIP-21: `nostr:` URI scheme](21.md)
|
- [NIP-21: `nostr:` URI scheme](21.md)
|
||||||
- [NIP-22: Event `created_at` Limits](22.md)
|
- [NIP-22: Event `created_at` Limits](22.md)
|
||||||
- [NIP-23: Long-form Content](23.md)
|
- [NIP-23: Long-form Content](23.md)
|
||||||
- [NIP-24: Extra metadata fields and tags](24.md)
|
|
||||||
- [NIP-25: Reactions](25.md)
|
- [NIP-25: Reactions](25.md)
|
||||||
- [NIP-26: Delegated Event Signing](26.md)
|
- [NIP-26: Delegated Event Signing](26.md)
|
||||||
- [NIP-27: Text Note References](27.md)
|
- [NIP-27: Text Note References](27.md)
|
||||||
@@ -67,69 +66,66 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
- [NIP-75: Zap Goals](75.md)
|
- [NIP-75: Zap Goals](75.md)
|
||||||
- [NIP-78: Application-specific data](78.md)
|
- [NIP-78: Application-specific data](78.md)
|
||||||
- [NIP-89: Recommended Application Handlers](89.md)
|
- [NIP-89: Recommended Application Handlers](89.md)
|
||||||
- [NIP-91: IoT Sensors and Intents](91.md)
|
|
||||||
- [NIP-94: File Metadata](94.md)
|
- [NIP-94: File Metadata](94.md)
|
||||||
- [NIP-98: HTTP Auth](98.md)
|
- [NIP-98: HTTP Auth](98.md)
|
||||||
- [NIP-99: Classified Listings](99.md)
|
- [NIP-99: Classified Listings](99.md)
|
||||||
|
|
||||||
## Event Kinds
|
## Event Kinds
|
||||||
|
|
||||||
| kind | description | NIP |
|
| kind | description | NIP |
|
||||||
| ------- | -------------------------- | ----------- |
|
| ------- | -------------------------- | ----------- |
|
||||||
| `0` | Metadata | [1](01.md) |
|
| `0` | Metadata | [1](01.md) |
|
||||||
| `1` | Short Text Note | [1](01.md) |
|
| `1` | Short Text Note | [1](01.md) |
|
||||||
| `2` | Recommend Relay | |
|
| `2` | Recommend Relay | |
|
||||||
| `3` | Contacts | [2](02.md) |
|
| `3` | Contacts | [2](02.md) |
|
||||||
| `4` | Encrypted Direct Messages | [4](04.md) |
|
| `4` | Encrypted Direct Messages | [4](04.md) |
|
||||||
| `5` | Event Deletion | [9](09.md) |
|
| `5` | Event Deletion | [9](09.md) |
|
||||||
| `6` | Repost | [18](18.md) |
|
| `6` | Repost | [18](18.md) |
|
||||||
| `7` | Reaction | [25](25.md) |
|
| `7` | Reaction | [25](25.md) |
|
||||||
| `8` | Badge Award | [58](58.md) |
|
| `8` | Badge Award | [58](58.md) |
|
||||||
| `16` | Generic Repost | [18](18.md) |
|
| `16` | Generic Repost | [18](18.md) |
|
||||||
| `40` | Channel Creation | [28](28.md) |
|
| `40` | Channel Creation | [28](28.md) |
|
||||||
| `41` | Channel Metadata | [28](28.md) |
|
| `41` | Channel Metadata | [28](28.md) |
|
||||||
| `42` | Channel Message | [28](28.md) |
|
| `42` | Channel Message | [28](28.md) |
|
||||||
| `43` | Channel Hide Message | [28](28.md) |
|
| `43` | Channel Hide Message | [28](28.md) |
|
||||||
| `44` | Channel Mute User | [28](28.md) |
|
| `44` | Channel Mute User | [28](28.md) |
|
||||||
| `1063` | File Metadata | [94](94.md) |
|
| `1063` | File Metadata | [94](94.md) |
|
||||||
| `1311` | Live Chat Message | [53](53.md) |
|
| `1311` | Live Chat Message | [53](53.md) |
|
||||||
| `1040` | OpenTimestamps | [03](03.md) |
|
| `1984` | Reporting | [56](56.md) |
|
||||||
| `1984` | Reporting | [56](56.md) |
|
| `1985` | Label | [32](32.md) |
|
||||||
| `1985` | Label | [32](32.md) |
|
| `4550` | Community Post Approval | [72](72.md) |
|
||||||
| `8000-8999` | IoT Sensors and Intents | [91](91.md) |
|
| `9041` | Zap Goal | [75](75.md) |
|
||||||
| `4550` | Community Post Approval | [72](72.md) |
|
| `9734` | Zap Request | [57](57.md) |
|
||||||
| `9041` | Zap Goal | [75](75.md) |
|
| `9735` | Zap | [57](57.md) |
|
||||||
| `9734` | Zap Request | [57](57.md) |
|
| `10000` | Mute List | [51](51.md) |
|
||||||
| `9735` | Zap | [57](57.md) |
|
| `10001` | Pin List | [51](51.md) |
|
||||||
| `10000` | Mute List | [51](51.md) |
|
| `10002` | Relay List Metadata | [65](65.md) |
|
||||||
| `10001` | Pin List | [51](51.md) |
|
| `13194` | Wallet Info | [47](47.md) |
|
||||||
| `10002` | Relay List Metadata | [65](65.md) |
|
| `22242` | Client Authentication | [42](42.md) |
|
||||||
| `13194` | Wallet Info | [47](47.md) |
|
| `23194` | Wallet Request | [47](47.md) |
|
||||||
| `22242` | Client Authentication | [42](42.md) |
|
| `23195` | Wallet Response | [47](47.md) |
|
||||||
| `23194` | Wallet Request | [47](47.md) |
|
| `24133` | Nostr Connect | [46](46.md) |
|
||||||
| `23195` | Wallet Response | [47](47.md) |
|
| `27235` | HTTP Auth | [98](98.md) |
|
||||||
| `24133` | Nostr Connect | [46](46.md) |
|
| `30000` | Categorized People List | [51](51.md) |
|
||||||
| `27235` | HTTP Auth | [98](98.md) |
|
| `30001` | Categorized Bookmark List | [51](51.md) |
|
||||||
| `30000` | Categorized People List | [51](51.md) |
|
| `30008` | Profile Badges | [58](58.md) |
|
||||||
| `30001` | Categorized Bookmark List | [51](51.md) |
|
| `30009` | Badge Definition | [58](58.md) |
|
||||||
| `30008` | Profile Badges | [58](58.md) |
|
| `30017` | Create or update a stall | [15](15.md) |
|
||||||
| `30009` | Badge Definition | [58](58.md) |
|
| `30018` | Create or update a product | [15](15.md) |
|
||||||
| `30017` | Create or update a stall | [15](15.md) |
|
| `30023` | Long-form Content | [23](23.md) |
|
||||||
| `30018` | Create or update a product | [15](15.md) |
|
| `30024` | Draft Long-form Content | [23](23.md) |
|
||||||
| `30023` | Long-form Content | [23](23.md) |
|
| `30078` | Application-specific Data | [78](78.md) |
|
||||||
| `30024` | Draft Long-form Content | [23](23.md) |
|
| `30311` | Live Event | [53](53.md) |
|
||||||
| `30078` | Application-specific Data | [78](78.md) |
|
| `30315` | User Statuses | [38](38.md) |
|
||||||
| `30311` | Live Event | [53](53.md) |
|
| `30402` | Classified Listing | [99](99.md) |
|
||||||
| `30315` | User Statuses | [38](38.md) |
|
| `30403` | Draft Classified Listing | [99](99.md) |
|
||||||
| `30402` | Classified Listing | [99](99.md) |
|
| `31922` | Date-Based Calendar Event | [52](52.md) |
|
||||||
| `30403` | Draft Classified Listing | [99](99.md) |
|
| `31923` | Time-Based Calendar Event | [52](52.md) |
|
||||||
| `31922` | Date-Based Calendar Event | [52](52.md) |
|
| `31924` | Calendar | [52](52.md) |
|
||||||
| `31923` | Time-Based Calendar Event | [52](52.md) |
|
| `31925` | Calendar Event RSVP | [52](52.md) |
|
||||||
| `31924` | Calendar | [52](52.md) |
|
| `31989` | Handler recommendation | [89](89.md) |
|
||||||
| `31925` | Calendar Event RSVP | [52](52.md) |
|
| `31990` | Handler information | [89](89.md) |
|
||||||
| `31989` | Handler recommendation | [89](89.md) |
|
| `34550` | Community Definition | [72](72.md) |
|
||||||
| `31990` | Handler information | [89](89.md) |
|
|
||||||
| `34550` | Community Definition | [72](72.md) |
|
|
||||||
|
|
||||||
|
|
||||||
## Message types
|
## Message types
|
||||||
@@ -159,47 +155,47 @@ Please update these lists when proposing NIPs introducing new event kinds.
|
|||||||
|
|
||||||
## Standardized Tags
|
## Standardized Tags
|
||||||
|
|
||||||
| name | value | other parameters | NIP |
|
| name | value | other parameters | NIP |
|
||||||
| ----------------- | ------------------------------------ | -------------------- | ------------------------------------- |
|
| ----------------- | ------------------------------------ | -------------------- | ------------------------ |
|
||||||
| `e` | event id (hex) | relay URL, marker | [01](01.md), [10](10.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) |
|
| `p` | pubkey (hex) | relay URL, petname | [01](01.md), [02](02.md) |
|
||||||
| `a` | coordinates to an event | relay URL | [01](01.md) |
|
| `a` | coordinates to an event | relay URL | [01](01.md) |
|
||||||
| `d` | identifier | -- | [01](01.md) |
|
| `d` | identifier | -- | [01](01.md) |
|
||||||
| `alt` | summary | -- | [31](31.md) |
|
| `alt` | summary | -- | [31](31.md) |
|
||||||
| `g` | geohash | -- | [52](52.md) |
|
| `g` | geohash | -- | [52](52.md) |
|
||||||
| `i` | identity | proof | [39](39.md) |
|
| `i` | identity | proof | [39](39.md) |
|
||||||
| `k` | kind number (string) | -- | [18](18.md), [25](25.md), [72](72.md) |
|
| `k` | kind number (string) | -- | [18](18.md), [72](72.md) |
|
||||||
| `l` | label, label namespace | annotations | [32](32.md) |
|
| `l` | label, label namespace | annotations | [32](32.md) |
|
||||||
| `L` | label namespace | -- | [32](32.md) |
|
| `L` | label namespace | -- | [32](32.md) |
|
||||||
| `m` | MIME type | -- | [94](94.md) |
|
| `m` | MIME type | -- | [94](94.md) |
|
||||||
| `r` | a reference (URL, etc) | petname | |
|
| `r` | a reference (URL, etc) | petname | |
|
||||||
| `r` | relay url | marker | [65](65.md) |
|
| `r` | relay url | marker | [65](65.md) |
|
||||||
| `t` | hashtag | -- | |
|
| `t` | hashtag | -- | |
|
||||||
| `amount` | millisatoshis, stringified | -- | [57](57.md) |
|
| `amount` | millisatoshis, stringified | -- | [57](57.md) |
|
||||||
| `bolt11` | `bolt11` invoice | -- | [57](57.md) |
|
| `bolt11` | `bolt11` invoice | -- | [57](57.md) |
|
||||||
| `challenge` | challenge string | -- | [42](42.md) |
|
| `challenge` | challenge string | -- | [42](42.md) |
|
||||||
| `content-warning` | reason | -- | [36](36.md) |
|
| `content-warning` | reason | -- | [36](36.md) |
|
||||||
| `delegation` | pubkey, conditions, delegation token | -- | [26](26.md) |
|
| `delegation` | pubkey, conditions, delegation token | -- | [26](26.md) |
|
||||||
| `description` | invoice/badge description | -- | [57](57.md), [58](58.md) |
|
| `description` | invoice/badge description | -- | [57](57.md), [58](58.md) |
|
||||||
| `emoji` | shortcode, image URL | -- | [30](30.md) |
|
| `emoji` | shortcode, image URL | -- | [30](30.md) |
|
||||||
| `expiration` | unix timestamp (string) | -- | [40](40.md) |
|
| `expiration` | unix timestamp (string) | -- | [40](40.md) |
|
||||||
| `goal` | event id (hex) | relay URL | [75](75.md) |
|
| `goal` | event id (hex) | relay URL | [75](75.md) |
|
||||||
| `image` | image URL | dimensions in pixels | [23](23.md), [58](58.md) |
|
| `image` | image URL | dimensions in pixels | [23](23.md), [58](58.md) |
|
||||||
| `lnurl` | `bech32` encoded `lnurl` | -- | [57](57.md) |
|
| `lnurl` | `bech32` encoded `lnurl` | -- | [57](57.md) |
|
||||||
| `location` | location string | -- | [52](52.md), [99](99.md) |
|
| `location` | location string | -- | [52](52.md), [99](99.md) |
|
||||||
| `name` | badge name | -- | [58](58.md) |
|
| `name` | badge name | -- | [58](58.md) |
|
||||||
| `nonce` | random | -- | [13](13.md) |
|
| `nonce` | random | -- | [13](13.md) |
|
||||||
| `preimage` | hash of `bolt11` invoice | -- | [57](57.md) |
|
| `preimage` | hash of `bolt11` invoice | -- | [57](57.md) |
|
||||||
| `price` | price | currency, frequency | [99](99.md) |
|
| `price` | price | currency, frequency | [99](99.md) |
|
||||||
| `proxy` | external ID | protocol | [48](48.md) |
|
| `proxy` | external ID | protocol | [48](48.md) |
|
||||||
| `published_at` | unix timestamp (string) | -- | [23](23.md) |
|
| `published_at` | unix timestamp (string) | -- | [23](23.md) |
|
||||||
| `relay` | relay url | -- | [42](42.md) |
|
| `relay` | relay url | -- | [42](42.md) |
|
||||||
| `relays` | relay list | -- | [57](57.md) |
|
| `relays` | relay list | -- | [57](57.md) |
|
||||||
| `subject` | subject | -- | [14](14.md) |
|
| `subject` | subject | -- | [14](14.md) |
|
||||||
| `summary` | article summary | -- | [23](23.md) |
|
| `summary` | article summary | -- | [23](23.md) |
|
||||||
| `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) |
|
| `thumb` | badge thumbnail | dimensions in pixels | [58](58.md) |
|
||||||
| `title` | article title | -- | [23](23.md) |
|
| `title` | article title | -- | [23](23.md) |
|
||||||
| `zap` | pubkey (hex), relay URL | weight | [57](57.md) |
|
| `zap` | pubkey (hex), relay URL | weight | [57](57.md) |
|
||||||
|
|
||||||
## Criteria for acceptance of NIPs
|
## Criteria for acceptance of NIPs
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user