I mostly agree with this. Specifically why I dislike nip46's ability to use public relays, relay auth can't be trusted for client-side security.
I think remote signers (nip07 for desktop) are the only way we should be interacting with web clients. Which is the purpose of my app nvault. I will eventually add direct connection only-nip46 support with nip44 encryption only.
For me there is also the UX of opening a new app and having to accept 100000 message decryption requests, then add 200ms of latency per request. This is the main reason I stopped using coracle. I can't stand declining all the auth prompts.
The final issue, is most client's can't correctly handle exceptions thrown during nip07 requests and most of them lock up after I decline 2 or 3 in a row: Coracle, Primal, Nostter, ChaChai,
I just want to choose when to load my chat, not every social client need's to handle DMs, I can go to another client for that. Most clients are only good at 1 thing anyway and most of us just hop between clients to do multiple things because theyre all broken in some way anyway.
so, you don't want your app to decrypt the state of your account, ok
don't force that on everyone else
and don't assume that coracle's implementation isn't naive and doing work when it doesn't have to
i've quite kicked a hornet's nest here
good
because i know confidently how encryption works, i have been working with EC signatures and encryption algorithms for 8 years now
but don't bother asking me, of course, because you all know better
I don't want the app storing my data on public relays, regardless of the cryptographic nature. I'm arguing that the UX blows when decrypting DMs at startup.
If you want to ask me for a single decryption request when I load, that's better (ill personally decline it). But I also want the app to still function when I decline it because maybe I don't trust the app. It needs to be able to fall back to some type of local storage
Double checking here:
Let's say I have my own private relay (inbox). If I'm the only one being AUTH'ed on it, does the data it sends to a client need to be encrypted?
Or can it in theory receive encrypted messages, decrypt them, wait for me to open my chat app and send 'em over?
Clients and relays do not use any form of data encryption (defined in the nips) to speak with each-other, only TLS, TOR, and so on. This encryption is strictly for client data.
Are you suggesting storing plaintext client data, in a private relay, so that it could avoid that UX hassle?
I would love for clients to have that fine grained control over relays. Personally I'm mad and I'd like for every note signed, the option to select which relay it gets sent too.
Yes, that's what I'm suggesting indeed.
The incentive for users to have their own relay is already huge, even without this.
Hmm. I guess I would be inclined to avoid calling it a relay, because it has a very special purpose. You're basically looking to standardize a personal database api.
You'd probably want a way for the client to challenge the server (relay) before trusting it, which we don't have a spec for either.
We'd also want those relays to be local only, so that unencrypted data isn't sitting in plaintext on anyone databases.
I don't want my private relay (or server, indeed) to do only that specific thing though.
Neither do I want to set up fifteen different private relays, each with their specific purpose.
I want my server to challenge the buggy clients, lol 😂 .
Were just describing things like firebase lol. There are specs for http based abstract databases. It could be a standard. Call me lazy, but I'd rather client developers build this type of caching on their own, because if it's a standard its probably going to suck.
I've developed a framework for this exact purpose for my own apps
https://github.com/VnUgE/Plugins.Essentials/tree/develop/plugins/VNLib.Plugins.Essentials.Accounts.AppData
it just lets web client's store arbitrary data with a standard http endpoint. It can be protected by authentication and other stuff. Thats how all my apps store user's preferences. In Nvault I use to store all sorts of client-side data for every user. I use it for website whitelists, permissions, and so on.
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed
> the option to select which relay it gets sent too
Yup, I've been breaking my non-dev mind over where to propose this crucial feature in the NIPs.
Needs:
1️⃣ Npub can specify what relays an event is targeted at
2️⃣ Npub can edit this relay-set later on
An h-tag with the target relay, such as Chachi and the NIP-29 complexity lovers use, can only do the trick if the tags are editable after the fact.
Thread collapsed
NIP-70 does this in the best possible way.
With this, how does the author say "this event is targeted at these relays"?
This NIP asks relays to reject events with a ["-"]. It doesn't help in specifying the target audience for the event. That's what I need. In a way that's editable. For any event type.
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed