Avatar
hzrd149
266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5
JavaScript developer working on some nostr stuff - noStrudel https://nostrudel.ninja - Blossom https://github.com/hzrd149/blossom - Applesauce https://hzrd149.github.io/applesauce

nostr:npub1gmhctt2hmjqz8ay2x8h5f8fl3h4fpfcezwqneal3usu3u65qca4s8094ea any idea how this zap got created? I didn't receive it on my node and the zap event itself is published by a pubkey without metadata nostr:npub15vampmxe5sqnw9m9asjhjs60uy8fsk7kz3633fgze02nx754t4vsd2lzh6

I put the invoice in to https://lndecode.com/ and it seems to be pointing to the lightning node myNode which I don't think I've ever used for zaps

https://1ml.com/node/03399ca763c592d7109c8976ffa55580058195981ecc362133d676130bc1b8e466

nostr:nevent1qvzqqqpxqupzp0htfpq85mcg0650wmwrsjja3rr8emvmm8asekafpyczzr0nmyh8qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqyqu8d92s5l7tf6n6xvuktmhjptwjdwqwysgrfn24cr8lvqk4fyhqvq3dm2d

probably not, although I haven't looked into the app yet

Ever wanted to create a temporary NIP-46 bunker using your NIP-07 extension?... well in case you did I added an applesauce example that lets you create NIP-46 bunkers (remote signers) for testing.

also applesauce V3 will have a class for easily creating and handling the server (bunker) side of remote signers 😁

https://cdn.hzrd149.com/a2b77ccae9f66be0207a56fd587e85002a1a58c3361e951aa744d3debd141b4a.webm

Example:

https://hzrd149.github.io/applesauce/examples/#signers/bunker-provider

Documentation:

https://hzrd149.github.io/applesauce/signers/bunker-provider.html

yes, there isn't any chunking in blossom. which made it a lot simpler for small files and easier to write server implementations but it limits the size of the file that can be easily uploaded or transferred

Replying to Avatar david maus jr

nostr:npub1spdnfacgsd7lk0nlqkq443tkq4jx9z6c6ksvaquuewmw7d3qltpslcq6j7 thanks for introducing me into this new social media world. It’s funny. I have 100k followers on IG, and 56k sub on YouTube but somehow I feel more connected with people here. Love you bro, can’t wait to get back to Costa and hang again πŸ€™πŸ½

100k followers? I'm so used to the smaller numbers here that number seems impossible :)

> Most people don't actually want their media distributed all over the place. This is a solution that is looking for a problem, IMO.

Great discussion going on here. ill just jump in here and say that Blossom isn't designed to be a solution to everything, just as nostr isn't.

Its a solution for sharing and distributing "small" files publicly. for "large" files torrents are probably the best, and for private or personal files then traditional servers with access control and internal ids are probably the best

Initially my motivation for blossom wasn't to fix everything, just to finally realize the promise that IPFS failed to deliver on. which was hash addressable small files

Maybe trouble shooting, but mainly to test my NWC library to see if it can handle the client and server side :)

This thread is too long for me to catch up on but I am interested in building community apps. I'm limited to building small apps since I already have too many projects

I have a bunch of ideas (like everyone) but I'm distracted by building out applesauce. maybe once its "complete" (almost there) I will put more time to apps

This was more fun then I thought it was going to be.

Built a dashboard app that lets you run a fake NWC wallet with whatever information you want. its really fun to connect it up to nostr:npub1getal6ykt05fsz5nqu4uld09nfj3y3qxmv8crys4aeut53unfvlqr80nfm Go or the other NWC tools i built and see the transactions and create fake invoices 😁

Are there any other apps that support NWC that I should test this with?

https://cdn.hzrd149.com/d7de03336c7b14d7df6e02b2306121e34d3a3e9dae2c21782de65d68fc034e2c.webp

Create a session token like JWT, easy to work with and only requires a single request. although I'm not sure if that would break NIP-98

Most of the time, but the apps that implement it literally and require a signature for every... single... http request. Makes it impossible to use without auto signing

I'm mostly vibe coding inside the repo itself so it has plenty of context.

I haven't figured out the best way to build a new app with it or create a stack for it. The nostr apps I've built that use it I've manually set them up and then told the AI how to use the core parts i setup

The last post could work but I feel like I would be missing a lot of content, since most users tend to post a few times about the same topic in the span of a few minutes

While I have your attention. What do you think about using NIP-40 on the gift wrap event to support messages that "disappear".

I've found that it's kind of nice to have the DM auto remove themselves after a few weeks.

The problem with supporting custom paths is that the URL used to fetch blobs would be completely different on every server. which means before fetching a blob from a server the client would have to interview the server (fetch the api map) to know what endpoints it should talk to. they would effectively all be talking a different language and the client would have to interpret it.

BUD-03 allows users to provide a list of servers they upload their blobs to, but there is no expectation that extra paths in the URLs will be honored because its expected that every blossom server will handle a `cdn.server.com/` URL

All that said there isn't anything wrong with a server using a 301/307/308 redirect to another URL that actually serves the blob. I think blossom.band, and 24242.io do something similar to this

I think we will get there, but it will take longer for blossom servers than relays because blobs are larger and move slower

I have a few ideas to improve blossom, but none that will make it able to support "large files". the fact that a whole file is hashed using sha256 is the main bottleneck, it means the larger the file the longer it takes to hash and the longer it takes to verify (possible attack vector)

Ultimately for "large files" BitTorrent is the best solution and will probably remain that way. which is why we have NIP-35 torrents on nostr 😁

I say "large files" in quotes because every user and every server is going to have a different upper limit on file size. for example a blossom server on my local network could probably take a 10Gb file while one over tor could only take a 50Mb file

For video specifically I think HLS is the simplest standard, it doesn't produce a nice .mp4 link or use a fancy merktle tree but it would support multiple resolutions and many open source players support it

For live streaming you could upload new chunks to blossom servers (or normal FTP servers) and then keep updating the root HLS playlist. nostr:npub1v0lxxxxutpvrelsksy8cdhgfux9l6a42hsj2qzquu2zk7vc9qnkszrqj49's NIP-5E does something similar using nostr events https://github.com/nostr-protocol/nips/pull/1790

I've looked into BitTorrent V2 a while ago and it looks really promising since it uses a merkle tree instead of a flat list of hashes, but its fixed chunk size of 16KiB is way to small for almost all uses cases and produces 100s of chunks for a single image file. compared to most BitTorrent V1 torrents I've seen which have chunk sizes ranging from 1Mb to 4Mb

I also couldn't find any working implementations of the V2 protocol. so I don't think its being used

H.O.R.N.E.T.S looks promising and I read through the specification enough to understand how its Scionic Merkle Trees work but I don't think it would work well because it requires a backend server in order to communicate with the mainline DHT to fetch chunk metadata. which makes it impossible to implement in web apps, so no video playback in the browser :(

I also tried my hand at creating a simple chunking system on top of blossom https://github.com/hzrd149/blossom/blob/chunked-blobs/buds/10.md and https://github.com/hzrd149/cherry-tree which works but not well enough to implement at the protocol layer

Personally I don't think the solution is protocol level chunking. I think it makes more sense to chunk video at the file level using HLS since it seems to provide the best of both worlds

Replying to Avatar Sirius

cherry tree and this PR was a thought experiment I did to see how chunking could be implemented on top of blossom. it works but its a little too complicated for most use cases