Oddbean new post about | logout

Notes by tyiu | export

 Who are you replying to? My relays can't find the parent note. 😎 
 Rekt. 
 Damus doesn’t respect event deletions currently. If it cached the original note, it will stay there because it doesn’t query for deletions.
https://github.com/damus-io/damus/issues/14 
 GM 🌤️ PV 🤙

Would it be possible to build a desktop Nostr client that you can simply sign... 
 People are working on dedicated native mobile signer apps as we speak.

@greenart7c3 just released NIP-46 support on Amber, an Android signer.
nostr:note17dlrejdnn878zllmwjajzun3wldwsxdkqht8dzw4dusarvee96vqq3e3vw

@Alex Gleason and @Karnage  also are working on this.

I have iOS on my aspirational backlog, but I’m pretty backlogged. 
 Confession, #BitBlockBoom was my first full on Bitcoin conference. I’ve been to single day even... 
 It was great chatting with you. Looking forward to more in the future.  🫡 
 It was amazing to talk to Nostriches and builders at BitBlockBoom last weekend. Got a major pep talk and motivation boost from @montzstar @jonb @arkinox @elsat @Marks and others to keep laser-focused on building Comingle. I’ve dragged my feet long enough with it. I ran out of gas after introducing the NIP-52 calendar spec and implementing NIP-52 in Nostr SDK for Apple Platforms, but I’m back now. I started integrating those building blocks into Comingle iOS and it feels great. My goal is to launch the Comingle conference app with a real integration to the NIP-52 calendar spec, in time for the Nostriga and Baltic Honeybadger Bitcoin conferences in Riga, Latvia this coming August. 🫡 
 I don’t think you can do it there. You can alternatively upload it as a public Gist and then link to it from the issue.
https://gist.github.com 
 Starting to use some code from nostr-sdk-ios in damus (nip44 encryption) thank you nostr:npub1yau... 
 LFG! 
 nostr:npub1yaul8k059377u9lsu67de7y637w4jtgeuwcmh5n7788l6xnlnrgs3tvjmf I'm curious, since you have... 
 There's a few that you could consider potentially integrating that doesn’t require adopting the NostrEvent data model if you already have your own:

Public and private key creation:
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/Keys.swift

Unrecommended DM spec:
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/DirectMessageEncrypting.swift

Event verification:
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/SignatureVerifying.swift

NIP-05 validation:
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/NIP05Validating.swift

Relay metadata and validation:
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/RelayURLValidating.swift
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/RelayInfo.swift

Web socket and relay management (though we haven't integrated the outbox model yet, and it has some coupling to the NostrEvent data model):
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/WebSocket.swift
https://github.com/nostr-sdk/nostr-sdk-ios/blob/main/Sources/NostrSDK/RelayPool.swift

For further integration with our data models, we haven’t thought through what that might look like with a persistence framework. We’re leaving room for flexibility so that the developer can choose. With that said, it’ll be good to get an idea of what that might look like. I’ll start thinking about it. Tagging in @montzstar as well as he has much more Apple development experience than I do. I know about Realm, SQLite, and Apple recently introduced SwiftData. Though, I don’t know the tradeoffs. 
 My fix to Primal iOS is merged, thanks to @pavle . The next release should make new Primal iOS replies work better with Damus and other clients that still use the deprecated reply spec. nostr:note1nzf7wkhevdntuc9mykdw42j9np8zuhq5g7zcn8tmg275hymy2thsauwxf7 
 Hey, @Fabian Do you see a possibility where Nostur could migrate to use Nostr SDK for Apple Platforms? It’s a pure Swift library. We’d like to rally the Nostr Apple platform developer community to use and contribute back so that there’s consistency and reduced interoperability issues across Apple platform clients and build features where everybody gets it for free. I know you’ve refactored a bit of logic out from Nostur into a separate library, though.

https://github.com/nostr-sdk/nostr-sdk-ios 
 git commit -m “Fix what the previous commit was meant to” 
 git commit --amend
git push origin main -f

Yolo force push and orphan all your fellow contributor local branches. 😎 
 @miljan @nikola @pavle Do you see a possibility where Primal iOS could migrate to use Nostr SDK for Apple Platforms? It’s a pure Swift library. We’d like to rally the Nostr Apple platform developer community to use and contribute back so that there’s consistency and reduced interoperability issues across Apple platform clients and build features where everybody gets it for free.

https://github.com/nostr-sdk/nostr-sdk-ios 
 I disagree with that view, it’s too absolutist and not aligned with actual reality of the OS market share. Don’t worry. We’ll take the KYC hit so that Apple users can experience freedom of speech and censorship resistance. We’ll keep applying pressure on Apple. Somebody has to do it. I’m also building on Android. 
 We want the UX to be as native as possible! Of course! /s 
 Now boarding only customers in zone 2

*Literally entire planet starts lining up* 
 @vita ‘s candle business, Fire Rabbit, is at the Sip Shop Eat market in Brooklyn, New York this weekend! If you’re around, come support her business by checking out her incredible candles!

12-5pm Saturday
12-5pm Sunday

Hook Studios
76 Verona Street
Brooklyn, NY 11231

https://www.sipshopeat.com/rsvpbrooklyn https://i.nostr.build/xE75G.jpg  
 Doxxed 😂 
 @montzstar and I will be speaking about Nostr SDK for Apple Platforms today at 2pm Central Time at BitBlockBoom! If you’re attending, come hang out with us! The recording should be available later. nostr:note18e50f0sukldgqld6430annpnlchdd2jey3966mdpkr575dkkaeksmnz2ul 
 Software is never finished 
 Anything but “Hello, world!” 
 Neat! Did you ever consider using Nostr SDK for Apple Platforms? We’re actively building it and supports a bunch of NIPs already. We just cut the 0.1.0 release.
https://github.com/nostr-sdk/nostr-sdk-ios 
 Cool. I didn’t know about Swift Adwaita. I knew it was possible to use Swift to build on non-Apple platforms but never really looked into it. Nothing wrong with building your own.

Contributions are welcome! 
 VERY HUMBLED

IMMENSE THANKS TO EVERYONE THAT HAS MADE THIS POSSIBLE

LET'S SHIP THE OTHER STUFF
... 
 There is no better choice. Congrats, Pablo! 
 Things are starting to come together. People have no idea how massively Nostr is going to win. Im... 
 Interoperability at its finest!

P.S. which screen recording tool are you using? 
 Be careful! I was going to use the selfie camera but I read it can damage the sensor so I decided against it. It took me only 5 minutes to make, it’s pretty straightforward. 
 Pinhole projector 
 Better than staring directly into the sun for 10 minutes. 🤷🏻‍♂️ 
 What are the tradeoffs between Casa, Nunchuk, and Unchained for their Bitcoin multisig vaults and inheritance products? #asknostr #bitcoin 
 Ente looks great. I want to use it. Although they open sourced all their code, I don’t think it’s quite there in terms of fully self-hosting.

I tried to set it up on my local machine and the account registration apparently went to their remote server rather than to my local machine. Moreover, their Photos mobile app doesn’t give you the ability to switch to a custom server, yet. This all is when I tried a month ago. 
 I don’t know the answer to your issue, but I’ve had a similar problem. I added NIP-44 support to Nostr SDK which required a simple import of a C library function. This broke Swift documentation generation for our public documentation site but there’s absolutely no information or logs about why it failed. So now I’m trying to find an alternative library because I don’t want to revert just because of documentation issues. 
 I hope not! 
 Many of the issues I’m running across in Nos development these days feel like really basic prob... 
 I don’t know the answer to your issue, but I’ve had a similar problem. I added NIP-44 support to Nostr SDK which required a simple import of a C library function. This broke Swift documentation generation for our public documentation site but there’s absolutely no information or logs about why it failed. So now I’m trying to find an alternative library because I don’t want to revert just because of documentation issues. 
 This is how you get immortalized in Japan. By zapping your nips and nuts. nostr:note1t2n932ja794u9cymvvycgyge3fcj92jghrc3d9gvluvzaws53dyq0zd9j9 
 Had a good cry at a funeral and thought about the fragility of life this weekend. No time to waste in this life. RIP. 
 Family friend. 
 Worst UI ever. Do I check or uncheck to unsubscribe? Just kidding, I tried all the permutations and I still get marketing emails. Blocked. https://i.nostr.build/9z2zQ.jpg  
 Nostr devs, have you ever wondered why kind-1 puts a JSON string in the content but do not use th... 
 Does that actually happen? I think it’s been established that it’s an anti-pattern. 
 This is the same person who said the following, so it’s not too surprising that he’d authorize running a man-in-the-middle attack on his own customers. He is evil.

Zuck: Yeah so if you ever need info about anyone at Harvard
Zuck: Just ask.
Zuck: I have over 4,000 emails, pictures, addresses, SNS
Friend: What? How'd you manage that one?
Zuck: People just submitted it.
Zuck: I don't know why.
Zuck: They "trust me"
Zuck: Dumb fucks.

Source: https://www.businessinsider.com/well-these-new-zuckerberg-ims-wont-help-facebooks-privacy-problems-2010-5 
 @miljan do you know why the Primal iOS GitHub is 2 months out of date? There’s been releases that are more recent but the public source code hasn’t caught up. I had found bug I wanted to fix but couldn’t because of it being stale.

https://github.com/PrimalHQ/primal-android-app 
 Fantastic. Thank you! 
 Are there any native mobile Nostr chat clients under development with the current or inflight NIPs aside from Amethyst? 
 I guess it's Wednesday. That makes sense.
nostr:nevent1qqsd5fxuepddpk96hzrawky5nweqvfwmvmwlrdpxs6... 
 Imagine my reaction when I read your reply out of context without seeing the rest of the thread. 
 Oops I mean can! It let me delete nostr:npub1030jfcwftah37a242jv0qqvmuyje5ew8tt59rs3477c4e8ugurhq... 
 It’s a request for deletion, not an actual deletion. Relays should delete only after verifying that you are the original author. I believe the green success doesn’t necessarily mean it’s actually deleted. 
 Cooked for the fam tonight. 🥩 https://i.nostr.build/BRgne.jpg  
 After working on this on and off for 7 days, I've finally finished implementing NIP-44 encryption in Swift for use on Apple platforms! This will replace the unrecommended NIP-04 encryption. Definitely lost a few hairs and gained a few gray ones. 😅 Thanks to @montzstar for reviewing my PR to Nostr SDK for Apple Platforms and thanks to @mplorentz from Nos for pair programming with me when I got stuck.
https://github.com/nostr-sdk/nostr-sdk-ios/pull/138

I’ve submitted a forked copy to the shared nip44 repo. Please review and double-check my work if you’re able to read Swift code. All the test vectors pass, though. @paulmillr @Vitor Pamplona @Magister Michael Dilger M.Sc. 
https://github.com/paulmillr/nip44/pull/11 
 The claim is that every time you encrypt a message with NIP-04, it decreases the difficulty for an attacker to determine your private key. I’m not a cryptographer, so I can’t verify the claim. The design and professional cryptography audit of NIP-44 was funded by OpenSats, mitigates that attack vector, and is allegedly a better encryption scheme than NIP-04. It does have known limitations as mentioned in the specification. NIP-04 is unrecommended but it has not yet been replaced in all the other NIPs that use it. The developer community needs to work on moving towards implementing NIP-44 encryption for all encrypted messages, including DMs, while still maintaining backward compatibility with NIP-04 encrypted messages.

https://github.com/nostr-protocol/nips/blob/master/44.md

https://opensats.org/blog/nostr-grants-december-2023#nip-44-cryptography-audit 
 The way I see it working is:

1. Have all the major clients and SDKs support encryption and decryption for both NIP-04 and NIP-44 for some time but have NIP-44 be the default for encryption.
2. Clients can allow users to migrate their signed NIP-04 encrypted events by decrypting them and creating new ones with identical content but encrypted with NIP-44.
3. Once most people stop creating new NIP-04 encrypted events, remove support for encrypting in NIP-04 and support only decrypting NIP-04 moving forward. NIP-44 becomes the only way to encrypt events. 
 I turned out to be terrible in both of these languages. https://i.nostr.build/Z5wqP.jpg  
 Public key cryptography, we meet again. Turns out, sometimes, what you learn in school is useful. https://i.nostr.build/ml23x.jpg  
 Nah, I was cleaning out my old belongings. This page was from my textbook 15+ years ago and I was commenting that it’s still relevant today. This month will not be the only month I’m hearing about it because Nostr, Bitcoin, and many other things use cryptography. I just implemented the NIP-44 encryption spec this week. 
 Nostr notes are the pinnacle of responsibility as no editing or deleting exists. What you post wi... 
 Rabble is correct. 
 In fact, I sent a request for deletion for two of my notes (that I self-censored because it might cause me trouble in the future) to a couple hundred relays and they were wiped out from relays that I was aware of almost instantly. Sure, they might still exist somewhere, but deletion is inherently part of the protocol. 
 I’m fine with best effort deletion requests. If I disappear because of what I’ve written in the past, so be it. (I’m only partially joking) 
 Yes. I used https://nostr-delete.vercel.app/ to delete note1 prefixed identifiers. 
 You're not wrong. It's voluntary. What should get communicated is that you can absolutely send a request for deletion from clients that support it and that it is a best effort delete, but the data might still exist in perpetuity until the end of time on machines that don’t respect your request for deletion. Even if the signed content gets deleted from all machines, people can still take screenshots! Expectations should be curbed. 
 can I get some more zaps, for some more testing. 😘🚀🙏
I will zap some back. nostr:note1rw... 
 @miljan do you know why the Primal iOS GitHub is 2 months out of date? There’s been releases that are more recent but the public source code hasn’t caught up. I had found bug I wanted to fix but couldn’t because of it being stale.

https://github.com/PrimalHQ/primal-android-app 
 Wrong link. Here the right one:

https://github.com/PrimalHQ/primal-ios-app 
 What broken interaction did you experience between nostr apps this week?

#nostrability 
 I submitted a fix for the backwards incompatibility issue in Primal iOS. This should make new replies from Primal iOS display properly in Damus and other clients that are still using deprecated positional tags.
https://github.com/PrimalHQ/primal-ios-app/pull/124 
Event not found
 No, Nostr is permissionless. 
Event not found
 Not a bad idea. Chaos engineering.

I wonder if there’s a way to crowdsource relay trust status. e.g. if you find an event on a relay that has an invalid signature, you broadcast a kind to all your relays that indicates that this relay can’t be trusted. People or clients who deem your pubkey as trustworthy can make a determination of if they want to stop subscribing to that bad relay. Basically as a mechanism to not need to perform as many verifications of signatures on events as it could be expensive on computation and battery if you’re on a smartphone.