-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Answer "Why doesn't Async Payjoin use Nostr" FAQ #85
Comments
Just adding some more context from Discord discussions.
|
If (and this is a big if) nostr relays supported some sort of BIP157/158 filter protocol, would that mitigate concerns to use nostr as a channel? I haven't convinced myself client privacy is preserved, but this is the pie-in-the-sky thinking:
I think there are still issues with the above. Like as far as I know, nostr doesn't "gossip" notes between relays, so a relay could probably still connect both party IP addresses to an event. At the very least this thought experiment may help explain why nostr isn't great for this use case? |
There is a strong argument for choosing Nostr: Many relays exist already. One might assume that other nostr messages would be indistinguishable with payjoin messages, providing privacy, and that censorship would therefore be difficult for a relay operator. Even if you could, it'd be hard to justify censoring payjoins from nostr relays since it's really no different from a mail server that forwards messages on behalf of its users. But in practice a Nostr relay used for payjoin would probably have distinguishable messages by length and by traffic pattern. And to support backwards compatibility with v1, you'd have to explicitly add support for HTTP-to-Nostr conversion on supporting relays. Finally, since Nostr relies on WebSocket, and WebSocket is basically a raw TCP connection, it's hard to prevent IP leaks from clients to relays with simple solutions like Oblivious HTTP. The lack of ability to address the privacy leak at the IP layer is the biggest reason not to build Payjoin with Nostr. Oblivious HTTP doesn't work with WebSocket because WebSocket isn't semantically HTTP, it just uses HTTP to bootstrap a TCP connection. In order to preserve privacy at higher messaging layers, it's critical that each lower layer also preserves privacy otherwise lower layer leaks can be used to obviate higher layer privacy. There's a couple significant nostr demos that encode relays in Bitcoin URIs for discovery even a draft spec. I think @nyonson's discovery idea would work too. |
write up an FAQ answer to this ever so frequent question
The text was updated successfully, but these errors were encountered: