Oddbean new post about | logout
 Here is the problem with relays. You can DoS a basic relay implementation (if it has no rate-limiting) from a single laptop like this:

cat /dev/urandom | websocat wss://somerelay.xyz

Here is the problem with Outbox Model. A user can make another user's client connect to any relay, and that relay can do the exact same thing just in the other direction, because websockets are bidirectional. Therefore a single relay can DoS a client.

Therefore rate-limiting of websocket messages are needed on both the relay AND the client.

I'm not saying we shouldn't do it, or that outbox isn't the answer to all our problems. It is. But it creates a new set of fun problems that programmers will have to think about and mitigate.