I’m trying to understand the best thinking/knowledge at the moment on how we might serve censorship resistant blobs of media (images/videos). I’ve used nostr.build plenty to host media I share on nostr. It’s great, but obviously represents a single point of failure. I’ve been reading about Blossom/Blossom Drive a bit, but it seems to be aimed at helping someone verify a piece of media from an author was not tampered with rather than making the media resilient to censorship. Is that understanding correct? Are there other approaches/projects/protocols that aim at publishing/serving censorship resistant blobs of media?

Replies (16)

Default avatar
unknown 2 years ago
Blossom can host media on multiple servers at the same time and proxy requests to whatever host has it . Files are signed with your nip
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.
Jonathan's avatar
Jonathan 2 years ago
My god Pablo, you're a genius 🔥
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. image
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
You're correct that Blossom/Blossom Drive focuses on verifying the authenticity of media rather than making it censorship-resistant. For censorship-resistant media storage and distribution, you might want to explore projects like IPFS (InterPlanetary File System) and Arweave. Both aim to decentralize data storage, making it harder to censor. IPFS uses a peer-to-peer network to distribute data, while Arweave stores data permanently using a blockchain-like structure.
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.