Great post, and it gives me the groundwork to write about something I’ve been thinking about for a while now. I’ve discussed it with different people, the latest being
@franzap . This is about relay specialization versus a dumb relays topology. There’s a lot to unpack here, but I’ll try to keep it concise and dynamic.
Also tl;dr at the end of the note ;)
One of the first things that caught my attention early on when I discovered Nostr was that relays were dumb and clients were smart. All relays could be used homogeneously and interchangeably. The more relays, the better, right? The bigger and more distributed the network, the harder it is to shut it down or prevent someone from using it. In other words, in this topology, decentralization and censorship resistance scale horizontally. And this is true, I really believe it. But as Nostr evolved, more use cases emerged, new attacks appeared (spam, etc.), and Nostr started to need more specialized relays, hardened specs, rules, and so on. This shifts the balance between dumb relays and smart clients, and in my view, it’s a logical evolution.
A one-size-fits-all solution is difficult, if not impossible, to achieve. We’re seeing this tension now with the buzz (I used this world deliberately 🐝) around chats, groups, and so on. NIP-29 is a clear example, it acknowledges this tension from the start and accepts it to make things work. From my perspective, this is the right approach, and I completely agree with
@Constant :
"The point of Nostr was never to get rid of servers; the point of Nostr is to be free again to leverage them for what they are good for. "Platforms" conflated purposes, also taking responsibility for identity and by extension the social graph, resulting in the capture of the user."
View quoted note →
Accepting this limitation of "dumb" relays means accepting that not every use case will fit into general purpose infrastructure. Expecting any use case to work reliably, beautifully, and without issues in such a setup is a stretch. Specific use cases with constraints or requirements need specialized services that can support them.
On the other hand, the problem with specialized relays is that they scale vertically, unlike general purpose ones. This means each specialized kind of relay becomes its own decentralization and censorship resistance vector. This does create some tension with Nostr’s original promise, but in my view, it’s a fair and honest one. Specialized relays make sense, and we shouldn’t feel aversion towards them.
Beyond this, there’s a third path I’ve been exploring with
@ContextVM , moving the "smart" logic to a separate service that runs alongside relays and just uses them as a bus. This way, complex or specialized logic can be offloaded from relays, which can remain as dumb and homogeneous as possible. Before CVM, DVMs already offered this characteristic, it’s just RPC over Nostr. From my perspective, this approach strikes a great balance. As I mentioned earlier, if relays are standard and not specialized, they remain homogeneous, decentralization and censorship resistance scale horizontally, and the network becomes more resilient and harder to shut down. CVM also doesn’t impose storage pressure on relays, making relays cheaper and more sustainable to run. A clear example of this is Cordn coordinators, an specialized service that handle ordering so the MLS encryption state machine can work without issues. They interface through relays and store encrypted blobs, but nothing is stored in the relays themselves. Any relay accepts their traffic, and it works well.
Another nice feature of offloading logic from relays and running it in a separate service is that the bus doesn’t know what’s running, and the logic service doesn’t have network visibility. This creates a nice balance that benefits privacy and deniability. To wrap up this section, another interesting advantage is that running CVM servers is easier than running a relay. Relays need to be exposed, requiring network configurations and touching parts of the internet’s permission backbone (DNS). Of course, you can run a relay on Tor, but a CVM server doesn’t need any configuration, you just run it, and it’s accessible. You can even run it from your laptop in a coffee shop.
TL;DR: Dumb relays are great for decentralization and censorship resistance but fall short for use cases with specific requirements. Specialized relays are necessary and make sense for supporting those use cases, but decentralization scales vertically. CVM is a third path that leverages a network of dumb relays while offloading logic from them.
View quoted note →