#GrowNostr
Proof Of Dad
10/26 22:59:36
💕
🥩 Buy Local Beef, Support Your Community! 🌾
Here’s how to find local beef:
1️⃣ Join local social media groups.
2️⃣ Post: “Looking for local beef—whole or half packages!”
3️⃣ Message a rancher.
4️⃣ Buy fresh, local beef!
Skip the headlines, shake a hand, and strengthen your community! 💪
#GrowNostr #Zapathon #PlebChain
#farm #fitness
#BuyLocal #SupportRanchers
Anthony Accioly
8/8 20:53:39
💕
The big why behind Blossom
Laeserin, IMO the short answer here is that Blossom is about resiliency. Dead simple, pragmatic "Universal" resource addressing with viral replication and easy fallback trumps features and flexibility (i.e. not NIP-96, certainly not IPFS).
Stop here if you don't care about the details (you have been warned). I'm verbose, I’m not AI, and it’s not my problem if certain anons have an attention span of 280 characters.
(...)
Still here? Good.
==============
The long version
==============
Illustrative use case: Anon wants to upload their favourite meme to Nostr.
Simplified flow:
1. Anon uploads their media to a Blossom server (PUT /upload), gets a universally addressable hash at the root of the server (GET anonsblossomserver.xyz/{sha256}.png).
2. Anon can also optionally mirror (or configure their client to mirror by default) to as many other Blossom servers as they wish. For instance, Anon sets their Nostr client to mirror to blossom.band and blossom.primal.net, so from here on they can retrieve a copy of their media from blossom.band/{sha256}.png or blossom.primal.net/{sha256}.png.
3. Anon then posts a kind 1 note referencing anonsblossomserver.xyz/{sha256}.png.
4. Nostr clients, even those that don’t know anything about Blossom, try to retrieve the resource from the link. The resource is there, the server is up; happy days, the client just retrieved Anon’s meme over HTTP.
Now assume that, in a joint effort, the Ministry of Truth and Ministry of Love decide that anonsblossomserver.xyz is not doing proper age verification with government IDs and biometrics, so they take the domain down.
At the same time, in this alternative reality, nostr:nprofile1qqsglv2qkn5dmmuhee9cy8fywfu2rfp4xd3xy0myqg2gfvmjl9yqqrqpp4mhxue69uhkummn9ekx7mqpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgqgkwaehxw309aex2mrp0yh8qunfd4skctnwv46qye8cpd goes evil and decides that non-Blossom stuff is so much better than Blossom that they will make blossom.band incompatible to focus on their other tool, notreallyblossom.band, with several cool not-Blossom features, Microsoft vs Netscape style.
So now anonsblossomserver.xyz/{sha256}.png returns 404 and blossom.band/{sha256}.png returns The Fishcake's favourite photo of a dog telling you to pay to retrieve your image from notreallyblossom.band/path/{notReallyTheOriginalSha256}.png, serving a slightly compressed photo of a dog with a watermark (sorry for making you the evil villain of the story here, The Fishcake; I hope you forgive me).
Nostr clients that are Blossom-aware can now fall back to other Blossom servers:
1. The client finds out that anonsblossomserver.xyz/{sha256}.png is broken.
2. Instead of giving up, it retrieves Anon’s kind 10063, which contains a list of their favourite Blossom servers.
3. The client then tries to download {sha256}.png from each server in the list until it finds one that works. It can even detect The Fishcake’s evil version of the attack by hashing the blob and verifying that it doesn’t match the hash in the original URL. It then proceeds to retrieve media from blossom.primal.net, finds it, and all is well.
Now let’s assume that blossom.primal.net is also down, but other anons have mirrored the media to other popular blissim servers like supeuperdupperblossom.ch. Clients can even fall back to a list of popular servers, ask each server if they have a copy of the media (/HEAD {sha256}.png), and, if they do, download it from there.
There’s of course a bit more to it, with optional endpoints around media optimisation, listing images for a certain npub, reporting bad stuff, paying to host, retrieving metadata, etc. But the core functionality is basically what I stated above.
Hopefully this is helpful.
nostr:nprofile1qqszv6q4uryjzr06xfxxew34wwc5hmjfmfpqn229d72gfegsdn2q3fgpzfmhxue69uhkummnw3e82efwvdhk6tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99urf278z, I'm thinking about putting together a "Why Blossom" presentation/domain like Fiatjaf did for the Outbox model. What do you think?
#Blossom #TheBigWhy #GrowNostr #NonCanonical #ShowBeALongFormArticle #ButItWontBecauseImLazy
⬆
Laeserin 🇻🇦
8/8 18:08:41
💕
That's a description of the endpoints. My problem is that I have no idea what it does and why it's supposedly so much better than a media server.
⬆
The Fishcake (nostr.build)
8/8 18:04:45
💕
You can read all you need at https://blossom.band with all the links to all the BIPs, I’ve done the mental heavy lifting for ya 🤣
⬆
Laeserin 🇻🇦
8/8 18:00:05
💕
I legit can't figure Blossom out. I've read the specs, but "Ich verstehe nur Bahnhof." 🤷🏻♀️
⬆
Laeserin 🇻🇦
8/8 17:57:43
💕
Is Blossom the reason why media servers are downloading copies of my pictures and serving up their version, instead of the original?
Cuz, I find that sorta creepy.
⬆
The Fishcake (nostr.build)
8/8 16:45:45
💕
Redirect can get you only so far, because it redirects from the upload endpoint, making it a single point of failure.
Integrity of a media is undesirable by the majority, since it prevents any sort of transcoding or asynchronous optimization, resulting in slower uploading times (if sync optimized) or shitty user experience that is caused by gigantic files with a ton of redundant and unused by the client info.
Lastly, the assumption that service MUST deduplicate content to be compliant, is naive at best. People want to own their uploads and not share them with others, services want to provide individuals with their own libraries, making things more challenging. Lastly, deduplication of the content based on hash is highly inefficient at scale, forcing services to come up with a bunch of workarounds, and maintain risk of deleting/overwriting someone else’s files at any moment.
Overall, I understand what you are preaching, but at the same time ideologies are never productive in the real world.
Mirroring could have been added easily to nip96, if it wasn’t for people hyping toward the next thing. That’s exactly how we are ending up with fragmented clients that cannot keep up with 4 standards for DMs, 4 standards for media hosting, and so on.
⬆
daniele
8/8 16:36:35
💕
Serving media in Blossom can be managed with a redirect, like you do, and this offer a good degree of flexibility to separate the upload endpoint and the actual storage.
> Note that the "<sha256-hash>" part is from the original file, not from the transformed file if the uploaded file went through any server transformation.
Instead I find this part quite problematic because it does not easily permit to test the file integrity. I need a nip94 event or an imeta tag with the "x" value to check it.
Media transformation is a powerful feature but adds a lot of complexity.
Finally I don't read in the nip anything about mirroring (not only multiple uploads) of the assets, and fallbacks in the download procedure, aspects that seem important in the decentralized context of Nostr.
⬆
The Fishcake (nostr.build)
8/8 9:56:25
💕
NIP96 does not prescribe how I serve the media (endpoint to be specific) and allows me to make a more reliable service with a clear separation of concerns. In blossom I am forced to accept uploads and serve media from the same exact hostname, therefore forcing me to make trade-offs that hurt speed or availability.
⬆
daniele
8/8 6:59:33
💕
I got it, thanks.
Btw it seems that Blossom is getting more traction than nip96, isn't?
Why do you prefer nip96?
⬆
The Fishcake (nostr.build)
8/8 6:10:03
💕
The standard (and recommended) way is nip96, blossom protocol in our case is just an addon and it gives you a link that will redirect to the original media
⬆
daniele
8/8 6:00:12
💕
Oh, image.nostr.build is not Blossom?
Now I see that blossom.nostr.build exists.
⬆
The Fishcake (nostr.build)
8/8 5:56:04
💕
That’s not how it works, only Blossom, not the standard one.
⬆
daniele
8/8 0:46:02
💕🤙 🤣
nostr:npub1nxy4qpqnld6kmpphjykvx2lqwvxmuxluddwjamm4nc29ds3elyzsm5avr7 this image has the wrong hash in the url:
It should be e63f8c6dbe7423b2d5cf62a0b5b64b556bac5234ad501ea295742d5cda4717e4
Soapbox
7/12 0:17:10
💕
WOW! We had over 100 people sign up last night to try #Shakespeare 🎭 beta!
You've already been busy building new projects and pushing the boundaries of our platform. We're going to squash a few bugs the community identified, and then let the next round of users in!
Thank you to everyone for your patience and support! #GrowNostr #Nostr #ShakespeareDIY #AI
Join the waitlist here: https://shakespeare.diy
ava
3/31 12:09:34
💕🤙
Since January, fewer than 18,000 daily active users with trusted pubkeys have been writing events on average.
As of March 8th, #Nostr retention has flatlined at 0.
nostr:nevent1qqswrvtr8jlegeqjs2z2l6s2l9st78rrpd5653ywjx6d9vhq6555ucqpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qgsyawyrzrttfmv4cmtx5w2m85702kdct7hv3amfrkhagpdf9cz46mgrqsqqqqqpzdqgys
#IKITAO #Nostr > #Bitcoin #GrowNostr
⬆
e1b1633cbf9464128284afea0af960bf1c630b69aa448e91b4d2b2e0d5294e60



