I'm really excited about this. Blossom is deceivingly simple, which is why it is powerful and why it has a chance of working.

What #nostr got right (and Bitcoin, for that matter) is that duplication is a feature, not a bug. "It takes advantage of the nature of information being easy to spread but hard to stifle," to quote Satoshi. De-duplication is a fools' errand, as it assumes a God's-eye-view. A global state is required to properly understand what to delete and what to keep. The second problem is of course indexing and discovery, which is indeed a hard problem if a global state is to be avoided. It's hard, but solvable. Especially if you already know what you're looking for, and especially especially if you have a common and purple-coloured discoverability layer.

Blossom is basically copying what nostr did for notes and applies it to arbitrary files. Instead of relays handling events, there's simple HTTP servers handling files. Like relays, servers are interchangeable as they share the same interface, encouraging duplication and redundancy. Instead of uploading something to a single server, you might upload it to five different servers. Popular and/or important files will be on many servers, which is how the online world works today already. Files that you need often might even be served by a #blossom server that is geographically close to you, just like we now have local cache relays packaged with some clients (or that you can self-host on your home server).

In the best case, Blossom will organically mirror what YouTube et al's content delivery networks already do well today, which is to provide file hosting that is high in availability and proximity. The neat thing about it all is that you can provide monetary incentives as it is nostr-native, and you get web-of-trust characteristics for free, as you can use only your servers, or those who are trusted by your friends, etc. And in the future, we'll probably have paid servers that whitelist npubs, just like we have paid relays now.

So why is all of that awesome? Well, here's the thing: as the user, you actually don't care where a file is hosted; you just care about the file itself. The current iteration of image (and other) hosts is incredibly stupid. Images are uploaded, downloaded, and re-uploaded without end, often with massive loss-of-quality as the same image is compressed and re-compressed a hundred times. It's always the same image, or at least it *should* be. With Blossom, it actually is.

Gone are the days of finding a thing and uploading again. You just need the hash, and the thing will appear. You could even insert images directly in notes with something like a blossom:ef1c26172f55017c9d9d6afa7cf22605b237b0fe92425e81e3b5e24d46c95448 and each client can choose how (HTTP, torrent, I2P, etc.) and where (public servers, private servers, etc.) to retrieve it from.

But wait, there's more. Remember the monetary incentives we talked about? It is what allows for the emergence of a proverbial "assassination market" for files: you provide the hash, along with a bounty of 21k sats to anyone who can provide the file most readily. Servers could provide cryptographic proof that they have the file, and you could escrow the money until delivery is done and you verify the file on your side. The building blocks are already there, we just need to put them together in the right way.

Blossom is one of the most exciting projects that came out of the first nostr:npub1s0veng2gvfwr62acrxhnqexq76sj6ldg3a5t935jy8e6w3shr5vsnwrmq5 cohort, aka #SEC-01. I'll have more to say about all the other amazing #SovEng projects that came out of the discussions and collaborations we had, but now I'll have to go and upload some files.

nostr:nevent1qqs9pgpsdel6ejqrh4nrlj6p8j0d09w0frlhhuyajfy3wn8ugzzfjfgpzpmhxue69uhkummnw3ezuamfdejsygpxdq27pjfppharynrvhg6h8v2taeya5ssf49zkl9yyu5gxe4qg55psgqqqqqqst9390z

Reply to this note

Please Login to reply.

Discussion

This is 🤯

Fantastic summary! Definitely one of the best things that came out of our SEC-01

Purple-coloured discoverability layer 💜

Yeah, wow. Amazing!

interesting, but unless I’m missing a crucial detail this doesn’t sound new.

is this an http server with a well known api for uploading content? that uses the content hash for later retrieval and deduplication?

I love the idea but have seen this exact solution proposed many times. I even implemented a proposed spec for this almost a year ago. is there something new or is this just novel because it came out of sec-01?

nostr:note1xpzr5jnjw7d46ntcnjtk8wexsxlefvuyq2kf6x2wahvf739wy52qytwz7j

I was not aware of this spec but it looks similar to what I've written for blossom in that it uses the sha256 for the id of the file.

however I think it has some issues

1. Its only focused on images and videos. if we want to solve the storage problem it needs to be generic

2. It relies on the "/.well-known/nostr.json" document for servers to describe themselves. this makes servers not interchangeable when it comes to retrieving files

3. It only focuses on uploading and retrieving the files. I think its also necessary for users to be able to list and delete the files they have on servers

is your spec/protocol documented somewhere I can read it?

I think the issues you highlighted from the old spec are trivial… but that’s neither here nor there.

nostr:naddr1qqxkymr0wdek7mfdv3exjan9qgszv6q4uryjzr06xfxxew34wwc5hmjfmfpqn229d72gfegsdn2q3fgrqsqqqa28e4v8zy

nothing happens when I click that link in damus 🤷

spec is documented here https://github.com/hzrd149/blossom

If replication and distributed retrieval can be solved I'll be excited. Same problem nostr has in general. I think it's doable, but it hasn't been done.

does blossom do replication or distributed retrieval? I clicked through the link but couldn’t find any kind of spec.

That can be done out of band, doesn’t need to be on the spec; much like negentropy is useful but doesn’t need to be done via nostr nor speced within nostr.

nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr talked about doing something similar to NIP-65 for blossom as well as the idea of creating a DVM market for “I want to find file with hash x and willing to pay y sats” which are two very useful building blocks of this system

so this is just another http media server?

Who remembers NIP-95? Blobs all the way! :)

I remember and still think blobs should be stored *not* in json encoded events. still think nostr:npub1xv6axulxcx6mce5mfvfzpsy89r4gee3zuknulm45cqqpmyw7680q5pxea6 ‘s original proposal from a year ago is fine. curious how blossom is different.

Blobs are not stored in json under blossom

Oh, sorry, you were reply to Vitor 😂

Now that some clients are putting base64 images directly inside the .content of kind 1s to go around the chinese firewall, NIP-95 is easy.

Which client?

I don't know. I just see the event with the massive base64 in it. It's becoming quite common.

I was just testing this yesterday, hoping to find that clients would render a data URL embedded in kind1 content. None of the clients I tested did, though.

Storing file hashes and content in events makes sense to me. If there are clients that support it I’d love to see what they’ve implemented. I was thinking of experimenting with it this week(end).

👀

Some emoji images?

You have a typo, but yes, all men are into them big time!

Not me, I’m a newbie. What was in NIP-95?

#nostrdev

Seems similar. I really like some of the stuff in that one, particularly how the filename can be anything.

one of my favorite things about hodlbod... he is enthusiastic, but honest, and doesnt ride the fanboy train.

There is no deduplication.

this isnt an answer either.

That's pretty damn cool. It's like filecoin, without the ponzi scheme token.

Nostr is a beacon on a hill to every shitcoiner.

Bitcoin fixes the money and we can do all the things you say you can do with cryptography, except we don't need any Chuck E. Cheese's tokens.

That was my first reaction too: IPFS without the suck.

Lol. I thought about using IPFS, but it says it will delete pods in days if no one listens. That's the sucky part for me.

Sounds like IPFS but with payments?

Way simpler infra

Great note, but didn't you yourself say you loved having sub-notes instead of one large note? ;)

Hmmm - wonder if you can now have a de-centralised WikiLeaks? Built on Blossom, built on Nostr...

How do you know in which server a specific blob is hosted?

This is the hard part

Similar to NIP-65 users could publish a k:10063 event that would advertise where their blobs are hosted

https://github.com/hzrd149/blossom/blob/master/Nostr.md

Although most clients wouldn't need to check unless the image failed to load from the original URL

This can become an interesting market, a user is willing to pay 1k sats/year for his file to be hosted, 1 server accepts it, a second one comes along, so now it's 500 sats to each one, if the split value get too low no more servers will appear, some can even pull out, but there will be a equilibrium ans maybe you have enough redundancy for your file, if it's not enough you have to increase your budget. Servers will constantly compete for a share of your payment, they will compete to provide a service for you and they would be able to see all the competition, it's like bitcoin miners fighting for the block reward.

The 1000 needn't be shared either, it could ve a guarantee that at least one sercer hosts it

Wd could use this to store git objects.

Hmm... I actually do care where my files are stored. Especially images. I'm more picky about that, than about notes.

Could this just end up being another gigantic Datenkraken?

I don't really understand the wider implications.

Deceivingly simple means it appeals to peasants.

One of the good features of Nostr is that you can beg from anyone who knows Satoshi, his income is from work in Iran.

more

To improve my business, please donate Satoshi😅😅

Great explanation. Thanks for demystifying it a bit.

Yesss, finally, censorship resistant file hosting!

Remember 20y old IT joke:

- How real hacker backups his data?

- Upload them to anonymous FTP server and let them replicate over the globe.

When Whatsapp was costing $0.89 a year, some years ago, I saw people pirating it by downloading an .apk from forums. So, is people going to pay to download a jpeg? Are they going to grant permissions to their clients to pay for whatever image the client will download... or will you be asked to pay for each specific image?

nostr:note10uf9apz4yd4zknj2973tgr7wx4qe6gu2j892p77xg6v883fphhlswx5slg

blossom would be perfect for events, also... assuming they are stored in the canonical form that generates the corresponding event ID

if relays just stored all events on blossom they would propagate wildly across blossom nodes

not suitable for DMs and closed groups but for anything public it's a perfect solution as a back-end storage for relays

i intend to build out an interface to do exactly this in the future

You mean so that one relay can use multiple back-end servers? #noobquestion

yes, that is even possible

i am in the middle of getting the logic set up for a local cache with one back end but it's entirely possible you could have multiple and set up sequences to request them from and each cache level could also have its own downstream sources as well

as i understand it, this is part of blossom's architecture also

thats terrific, thanks for the explanation

sounds similar to Obsidian in terms of use cases?

🔥🔥🔥

Nostrcheck-server 0.6.0 and all instances that want to upgrade to the new version, will be compatible with blossom and NIP96 simultaneously.

After a long phase of analysis I think blossom lays the foundations to develop the objective that I always looked for with nostrcheck-server. I also think it's not perfect, but that's good, in imperfection is virtue, I'll try to do my bit to improve some things.

#bitcoin + #nostr + #blossom = freedom for humans

P.S: I will confess one thing, at first I rejected blossom for the simple fact of not being my idea and forcing me to reimplement and discard hard work done for months, I was absolutely wrong.

By making duplication and redundancy features, not bugs, it creates a resilient, user-sovereign, and censorship-resistant layer for file hosting-much like Nostr did for notes and Bitcoin did for money. Its design aligns perfectly with the needs of a decentralized, open internet.

Just set up a drive with hzrd149 via cdn.satellite.earth. First file uploaded.

nevent1qvzqqqqqqypzqquxdpn0xlh4zqw9k3patfqml9nnndqkyd9e642sfxzlycj5279pqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qpqa68zlj3u73kke75zwh85myznavnf8m5h8nkemue80f4f88wrk0rqes42em

so there is a global, we are just not god enough? 🤣