I’m personally crossing my fingers for Discord.

  • Andreas
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 years ago

    Thanks for the information. I set up a Matrix instance with a friend before and noticed it had significantly more resource usage than expected of a little chat client, then someone else explained that Matrix was trying to discover all of the other nodes on the network so I assumed it was true. What causes so many state changes to be generated?

    • darvit@beehaw.org
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 years ago

      There’s a page explaining it in more detail, but basically, all servers need to verify the complete chain of state events in order to trust data and messages about the room. This is because otherwise malicious servers could make bogus state events and messages that are not valid, like scam messages and unauthorized room setting changes.

      In matrix, when you create a new room, or edit room settings, a state event is made. The same is true for changes in user permissions like who is admin, and for settings related to who can join the room.

      The last one is key, because this means that in order for servers to trust other servers’ messages, they need to verify if the user that sent the message joined the room in a legit way.

      In order to do this, when a user joins a room it must cause a state event. However, this makes it easy for people to abuse, by joining a room with a ton of accounts, it spams state events to all connected servers, which bogs them all down because they are required to process all state events in order for chain of trust to function.

      Even for rooms with non-malicious usage, servers can still be bogged down if the room is very big, which might be what happened with you or your friend joining a big public room.

      Basically, in my opinion, Matrix cannot be used with public rooms as it stands today.

      • Kresten
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 years ago

        That sounds a lot like how blockchains work, do you know whether it is the same principle with hashing a state and then simply chaining them?

        I don’t really understand what actually takes up bandwidth. Is it the multiple clients querying the matrix server, about previous states, at once?

        If you don’t mind me asking