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
2023-04-12 09:03:52 -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 > )
2023-04-12 09:03:52 -04:00
* `"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": [
2023-04-12 09:03:52 -04:00
["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.