forked from hzrd149/blossom
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 64eb1a8
Showing
3 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Blossom nostr integration | ||
|
||
Blossom uses nostr for public / private key identities. Users are expected to sign "Client Authentication" events to prove their identity when uploading or deleting blobs | ||
|
||
## User Server Discovery | ||
|
||
Users can publish a kind `10063` event with a list of `r` tags indicating where other users should look to find their published blobs | ||
|
||
### Example | ||
|
||
```json | ||
{ | ||
"kind": 10063, | ||
"content": "", | ||
"tags": [ | ||
["r", "https://cdn.self.hosted"], | ||
["r", "https://cdn.satellite.earth"] | ||
], | ||
"created_at": 1708454797, | ||
"id": "...", | ||
"sig": "..." | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# 🌸 Blossom | ||
|
||
Blobs stored simply on mediaservers | ||
|
||
## What is it? | ||
|
||
Blossom is a spec of http endpoints for storing blobs on publicly accessible servers | ||
|
||
## How dose it work? | ||
|
||
Blobs are packs of binary data addressed by their sha256 hash | ||
|
||
Blossom Servers expose four endpoints for managing blobs | ||
|
||
- `GET /<sha256>` (optional file `.ext`) | ||
- `PUT /upload` | ||
- `GET /list` | ||
- `DELETE /<sha256>` | ||
|
||
## Blob Descriptor | ||
|
||
A blob descriptor is a JSON object containing `url`, `sha256`, `size`, `type`, and `created` fields | ||
|
||
- `url` A public facing url this blob can retrieved from | ||
- `sha256` The sha256 hash of the blob | ||
- `size` The size of the blob in bytes | ||
- `type` (optional) The MIME type of the blob | ||
- `created` The unix timestamp of when the blob was uploaded to the server | ||
|
||
Servers may include additional fields in the descriptor like `magnet`, `infohash`, or `ipfs` depending on other protocols they support | ||
|
||
## Nostr Identities | ||
|
||
Blossom uses nostr public / private keys for identities. Users are expected to sign "Client Authentication" events to prove their identity when uploading or deleting blobs | ||
|
||
## Server Implementation | ||
|
||
See [Server](./Server.md) | ||
|
||
## Client Implementation | ||
|
||
Example Implementation: [blossom-client](https://github.com/hzrd149/blossom-client) (TypeScript) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Blossom Server Implementation | ||
|
||
## Endpoints | ||
|
||
### GET /<sha256> - Get Blob | ||
|
||
### GET /list | ||
|
||
### PUT /upload | ||
|
||
### DELETE /<sha256> |