bud09: rehosting and blob adoption.

This commit is contained in:
fiatjaf 2024-11-22 17:33:38 -03:00
parent d9a53bda1c
commit 9d7b3588c0
1 changed files with 29 additions and 0 deletions

29
buds/09.md Normal file
View File

@ -0,0 +1,29 @@
# BUD-09
## Rehosting or blob adoption
`draft` `optional`
Defines a Nostr event for announcing that a file is being rehosted on some other server or that it has been adopted by some other pubkey.
### Adoption
Adoption means the act of declaring that one also intend to keep hosting a file in their Blossom servers.
For example:
1. `bob` publishes a note with id `<x>` containing a URL to `https://bob.blossom/<hash>`;
2. Later `alice` sees that post and decides to keep that file alive by uploading it to her server: `https://alice.blossom/<hash>`;
3. After uploading it, `alice` publishes an event `{"kind": 1063,"tags":[["e","<x>"]]}`, which means she has adopted all the media files contained in event `<x>`;
4. Now when `https://bob.blossom/<hash>` is not available anymore, clients can fetch `{"kinds":[1063],"#e":["<x>"]}` to learn who has adopted that and then proceed to look for the blob in that person's Blossom servers.
### Rehosting
A more flexible approach means not committing to hosting a file forever, but only giving users a second choice in case the first server is unavailable.
For example:
1. `bob` publishes a note with id `<x>` containing a URL to `https://bob.blossom/<hash>`;
2. Later `alice` sees that post and decides to keep that file alive by uploading it to some public server and paying for its storage out of her pocket for a couple of years: `https://public.blossom/<hash>`;
3. After uploading it, `alice` can publish an event `{"kind":1062,"tags":[["e","<x>"]],"content":"https://public.blossom/<hash>"}` and forget about it.
4. Now when `https://bob.blossom/<hash>` is not available anymore, clients can fetch `{"kinds":[1062],"#e":["<x>"]}` to learn who what other server might be storing the same file.