Skip to content

Commit

Permalink
basic explanation
Browse files Browse the repository at this point in the history
  • Loading branch information
hzrd149 committed Feb 20, 2024
0 parents commit 64eb1a8
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
23 changes: 23 additions & 0 deletions Nostr.md
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": "..."
}
```
42 changes: 42 additions & 0 deletions README.md
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)
11 changes: 11 additions & 0 deletions Server.md
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>

0 comments on commit 64eb1a8

Please sign in to comment.