Sender | Message | Time |
---|---|---|
22 Nov 2019 | ||
In reply to@smar:yuuko.smar.fi The room state is not just user IDs and permission bits, it's a directed acyclic graph containing which server did which modifications to the room state and when, because different servers can update it at any time they want and there needs to be some way for all servers to resolve the room state into a single consistent view of "the truth" | 17:28:36 | |
vurpo: how much of that graph is typically traversed when updating the state, though? | 17:29:39 | |
Sure, the server caches that computed room state | 17:29:41 | |
I get it that you need to write everything somewhere where the data doesn’t get lost, but something feels off here... but again, I’m in no means versed in how matrix works :) | 17:30:07 | |
In reply to@flux:matrix.orgI don't know | 17:31:00 | |
17:31:45 | ||
In reply to@smar:yuuko.smar.fiTo put it briefly: try inventing a decentralized (no single node is in control of the network) group communication protocol where people can join and leave the group and send messages to it, and I think you'll find that it's a very complicated task | 17:34:21 | |
17:34:38 | ||
17:35:03 | ||
yes, I can believe that | 17:35:31 | |
The very first question the protocol needs to solve is: who is currently a member of the group? Remember that needs to be solved in a way that no central server decides the truth, and all servers need to agree on the answer | 17:36:15 | |
17:36:19 | ||
17:37:52 | ||
17:40:48 | ||
In reply to @vurpo:hacklab.fiOut of curiosity, how is the truth actually enforced though? What's to stop a malicious server being part of a room and then claiming that certain events happened at a time that they didn't happen? Or claiming that certain administrative actions we're taken that were not? | 17:53:07 | |
It could only claim that to its own users, or if it's users in that room had administrative privileges | 17:54:26 | |
I have an old channel on my homeserver that won't clear from the directory list. If I try to join it again, it says "Failed to join room. No known servers." Any idea how to remove it? | 17:54:53 | |
jack: if you are a homeserver admin shift click it in the directory | 17:56:48 | |
* jack: if you are a homeserver admin shift click it in the directory | 17:57:14 | |
In reply to @dandellion:dodsorf.asThat was easy. Thanks. | 17:57:15 | |
In reply to@ssorbom:matrix.org All servers have to sign everything they send out by their own signing key, so: A server could not say that other servers' users did something because it can't sign the events with those servers' keys It couldn't claim that its own users did something forbidden because all other servers will just say "no, that can't happen because that's not allowed". If the malicious server keeps living in its own alternate reality where those events did happen, then it would also be living in a detached reality where it can't communicate with other servers because they don't agree on what reality is | 18:01:53 | |
In reply to @x:riot.ovhInteresting, thanks. | 18:07:40 | |
A server can indeed tell its own clients whatever it wants, because those clients don't receive information from anywhere else | 18:13:16 | |
But it can't tell other servers that "my server's user X is now the admin of this room btw", because other servers will just say "that's not right" and then ignore it | 18:14:37 | |
18:17:14 | ||
Interesting. | 18:17:23 | |
18:18:20 | ||
18:18:53 | ||
The state change that makes User X an admin will have to be made by some user who already has privileges to do that from before, and all servers already know from before which users have that privilege | 18:19:04 | |
18:19:36 |