No, that’s not it. The hashing is about making the content addressable, which means that the *where* the data, the media, comes from, is non-important.

Ok, that gives us the same thing relays give us on nostr, so what?

The next piece of the puzzle is the pubkey, tying a blob’s hash to a pubkey allows you to easily retrieve the list of blossom servers that pubkey uses; so when you have a url from a pubkey pointing to server1 as the place to find file with hash1

When server1goes down/censors, you can ask nostr in the same way we use outbox model to find which is the new server for that same pubkey

You now have a list of candidates servers that pubkey moved to and a hash; you can just ask for the hash to those servers and voila, maybe you’ll get your file.

Since you also can talk about this blob by its hash you can use other tricks to find it or DVMs to go and do the searching for you in exchange for some sats.

It really is extremely simple but it works and it’s super powerful.

Reply to this note

Please Login to reply.

Discussion

Is it expected that Blossom servers scrape from other blossom servers for data redundancy?

no, it's not expected, but they can

OR, for example, you could have a blossom server in your home that is backing up absolutely everything YOU publish; it doesn't need to do anything special, just listen from events from you and look for referenced blossom URLs.

That's it. That's all it needs to do.

Say one day your main server rugs you, you automatically have all your prior media fixed.

Today we've been discussing the /mirror endpoint, which you can use to accomplish 👇

1. upload file1 to serverA

2. instruct serverB, serverC and serverD to fetch file1 from serverA and keep a copy

this could all be done automatically, or not, from your client

That’s pretty awesome.

ah, i don’t think i was clear that it created a mapping from npub to the blob. that does help a lot, thanks for clarifying.

fwiw, this discussion came up in private as i was working with a friend on exploring Highlighter’s long form blogging tool. looks like media is currently uploaded to nostr.build. is Blossom ready for a service like Highlighter to use or still need more development first?

No, it's ready for prime time; I'm working right now on replacing nostr.build with Blossom endpoints-only.

It will default to Primal's blossom server but it will be easily configurable.

In fact, this very screenshot was uploaded from Highlighter to the Satellite blossom instance, and if it were to go down, it would automagically heal.

“Automagically” is the best word I’ve heard all year

👀

Okay, let me get this straight.

So this image is from a blossom server, but it is linked to directly from a webserver (cdn.satellite.com)

So for this to automagically heal, you have to configure known blossom servers on your client so that it will identify missing images from a blossom server and redirect to other blossom servers in order to find the image?

I didn’t know it mapped to an npub either. That’s super cool.

It’s npubs all the way down lol… and that’s probably a good thing.

I’ve heard nostr:npub12rv5lskctqxxs2c8rf2zlzc7xx3qpvzs3w4etgemauy9thegr43sf485vg noting about npubs to address cashu mints

I was talking with someone recently about npubs to be website addresses and I think nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft shared something like this today?

and now we’re learning from nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr that Blossom addresses a piece of media with an npub where the underlying serving location can be re-mapped making the media serving more resilient

maybe npubs are really about creating an abstraction/mapping layer when accessing any entity, be it person or service?

Yup. 100%. The addressability plus the layers of “how to find stuff related to me” that the protocol already does makes it like the universal join table for nostr data.

I’ve been digging in on double ratchets and syncing big groups across devices and, wouldn’t you know, I think npubs are going to solve problems there.

oooo… can’t wait to hear more. let me know when i can play with something?

Will do!

uncoupling a blob from a specific url, and making it locatable anywhere on the network is such a powerful idea

🤝

next youll make relays key addressable and add a dht, voila p2p