nips/94.md

58 lines
2.5 KiB
Markdown
Raw Normal View History

2023-04-21 09:41:53 -04:00
# NIP-94 - File Header
`draft` `optional` `author:frbitten`
2023-03-09 09:01:19 -05:00
The purpose of this NIP is to allow an organization and classification of shared files. So that relays can filter and organize in any way that is of interest.
2023-04-21 09:41:53 -04:00
Also the goal is to create a base on the protocol for this bountsr "Filesharing App" (<https://bountsr.org/p2p-filesharing/>) to be implemented.
## Nostr event
2023-03-09 09:01:19 -05:00
2023-04-05 10:11:59 -04:00
This NIP specifies the use of the `1063` event type, having in `content` a description of the file content, and a list of tags described below:
2023-04-21 09:41:53 -04:00
* `url` the url to download the file
2023-04-21 09:41:53 -04:00
* `m` a string indicating the data type of the file. The MIME types format must be used (<https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types>)
* `"aes-256-gcm"` (optional) key and nonce for AES-GCM encryption with tagSize always 128bits
* `x` containing the SHA-256 hexencoded string of the file.
* `size` (optional) size of file in bytes
* `magnet` (optional) URI to magnet file
* `i` (optional) torrent infohash
* `blurhash`(optional) for cosmetic purposes
2023-03-09 09:01:19 -05:00
```json
{
"id": <32-bytes lowercase hex-encoded sha256 of the the serialized event data>,
"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
"created_at": <unix timestamp in seconds>,
2023-03-17 09:41:46 -04:00
"kind": 1063,
2023-03-09 09:01:19 -05:00
"tags": [
["url",<string with URI of file>],
["aes-256-gcm",<key>, <iv>],
["m", <MIME type>],
["x",<Hash SHA-256>],
["size", <size of file in bytes>],
["magnet",<magnet URI> ],
["i",<torrent infohash>],
["blurhash", <value>]
2023-03-09 09:01:19 -05:00
],
2023-03-09 09:04:57 -05:00
"content": <description>,
2023-03-09 09:01:19 -05:00
"sig": <64-bytes hex of the signature of the sha256 hash of the serialized event data, which is the same as the "id" field>
}
2023-03-10 05:04:00 -05:00
```
2023-03-09 09:01:19 -05:00
2023-04-21 09:41:53 -04:00
## Client Behavior
2023-03-10 05:11:55 -05:00
The client can use this event as they see fit. Either showing events in the same feed as kind 1 events or creating a specific feed for file listings.
2023-04-21 09:41:53 -04:00
It allows the app to create image galleries (memes, animations) that can be reused countless times in different notes. As it exists in whatsapp, telegram, etc.
2023-03-10 05:11:55 -05:00
2023-04-21 09:41:53 -04:00
Example: <https://ibb.co/Fnj5TMg>
2023-03-10 05:11:55 -05:00
2023-03-09 09:01:19 -05:00
To do this, just select the image from the gallery (events NIP-94) and include the URL of the selected image
2023-04-21 09:41:53 -04:00
## Suggested Use Cases
2023-03-10 05:11:55 -05:00
2023-03-09 09:01:19 -05:00
* A relay for indexing shared files. For example to promote torrents
* A Pinterest-like relay and app where people can share their portfolio and inspire others.
* A simple way to distribute configurations and software updates.
* Specialized relays can provide collections of emojis, memes and animated gifs to be used in notes.