128
- Note: "relay" is the nostr term while "instance" is the AP/Mastodon/Lemmy term. They are functionally very similar and offer the same abilities to ban annoying users from "public square" type spaces. Moderation works identically.
- In AP/mastodon/lemmy you are connected to one "main instance" and then connect to other instances "through" that instance. In nostr, you are typically connected to multiple relays and access content more directly.
- Nostr is an underlying protocol like AP is for Mastodon/Lemmy. The main use of nostr currently is as a twitter/mastodon clone, but it has other interfaces as well (calendaring, video sharing, etc) that I am less familiar with.
- Both networks are decentralized in nature
AP/Mastodon/Lemmy
- Instance admins on your instance and the instance of the user you are DMing can read your DMs, block them, or modify them without your knowledge or the knowledge of the receiving user
- If your instance goes down, so does your access to the wider network. It will take your DMs with it, and your identity.
Nostr
- Relays cannot read the content of your DMs as they are encrypted. They can only see that user A is DMing user B and approximate DM size. (This upgrade reduces that visibility further)
- Relays cannot manipulate DMs as they are encrypted and will fail a signature check
- No relay can prevent you from DMing another user as your client will automatically route the DM through another relay (unless that user has blocked you, which they can do).
- You can receive DMs from anybody as long as one relay lets your DM through (and you are usually connected to several)
- Your DMs and other content is replicated across multiple relays. Downed relay? No problem. You don't lose your content or your identity as your identity is a private/public keypair not "user @ instance dot com"
Bluesky
Idk anybody care to fill this section in?
Image source: nostr post
Why do we even need relays in the first place? Like, if only someone could create a network that could enable computers to send messages to each other on the layer below apps so apps would just be to display and format those messages, not pass them (ツ).
To store message content. To hold message content if you send a message to an offline contact and vice versa. To handle getting things across networks (clearnet to Tor and back if you only are connected to one). To work around NAT etc. To moderate "public square" type features (ie trending posts). Many reasons.
No problem, relays can communicate cross-network. They relay things between each other so traffic will find a way through as long as one node speaks to both networks.
As long as there is a relay path between you and your contact, there is no issue. Relays can be run through Tor and other anonymity networks which are very difficult to distinguish from other forms of encrypted traffic.
Okey, so relays can pass message to other relay? Didn't know that, so thanks.
But then, why not use network like Yggdrasil? Which would be basically like Nostr, but can relay any TCP/IP packet for any app, instead of just Nostr notes.
Relays currently don't talk to each other. But users are typically connected to multiple relays and publish simultaneously to multiple relays. Likewise, a user pulls in data (tweets etc) from multiple relays. My client is connected to ten. So to give you a more accurate answer to your question, to DM another user, you and that other user need to share a relay. If you are crossing networks (such as clearnet->tor), this means one of those relays needs to talk to both networks. If you want to follow a particular person but aren't normally connected to a relay they are on, your client can connect to a relay just to get content from that particular person. All of this is handled automatically, of course.
Taking a cursory look at this, it sounds more like a general routing protocol not something that is specifically designed to relay message content or other formatted data (ie you build your apps on top of it, it's just a protocol for packet delivery). Nostr could conceivably run on any base routing protocol like Tor, I2P, or Yggdrasil though I don't know of any specific implementations either way. As long as the relay has a way to resolve addresses and send data to them over TCP it should be fine. Hadn't heard of Yggdrasil yet thanks for letting me know about that I'll do some more reading later.
Same reason you need an email server, not everyone is online at the same time.
Closest I've seen to something truly serverless is plebbit, which is a Reddit/4chan clone using ipfs.
Plebbit is dead