COMPAX

COMPAX A MATRIX

Jeden rozdíl
a co z něj plyne

Matrix je vyzrálý federovaný messenger a většinu toho, co se o srovnání obou píše, píší lidé, kteří nepoužili ani jednu z těch kódových základen. To, co následuje, bylo přečteno v obou.

Změřeno 27. srpna 2026. Synapse: 246 976 řádků Pythonu — 71 349 jen v úložné vrstvě. Continuwuity, druhá implementace téže sítě, 95 220 řádků Rustu. Tento server: 17 041 řádků. Obě strany se hýbou a polovina toho, co je níže, se týká dneška, ne povahy věci; místa, která se týkají povahy věci, jsou označena.

ROZCESTÍ

Kdo je autorita nad tím,
co je místnost

Matrix — server
  • Místnost je DAG událostí, z nichž každá nese vlastní autorizační řetězec.
  • Když se servery neshodnou, rozhodne state resolution v2.
  • Odtud stavové skupiny, dopředné a zpětné extremity, outliery, backfill — a 71 349 řádků v samotné úložné vrstvě.
  • Commit se přijme lokálně i tehdy, když se síť rozpadne, a slučuje se potom.
Compax — strom MLS
  • Server je doručovací služba. Jedno pořadí, držené domovem místnosti.
  • Porovnej epochu, připoj pod stejným zámkem. Není co by se rozešlo.
  • Takže žádný DAG, žádná state resolution, žádný backfill.
  • A commit potřebuje cestu domů a zpět a při závodu dostane 409.

Ten obchod je poctivý v obou směrech a MLS v tom nedává na výběr: použití commitu zničí tajemství předchozí epochy. Není kam se vrátit.

TVRZENÍ, KTERÉ STOJÍ ZA TO ŘÍCT PŘESNĚ

„Jejich server čte vaše zprávy“
je nepravda v obou směrech

V šifrované místnosti Matrixu je tělo zprávy šifrový text a server ho nečte — Megolm, přesně jako je tady MLS. To, co platí, je užší a pro většinu lidí horší.

Co je ve skutečnosti odkryté
  • Šifrování je vypínač na místnosti. Veřejné místnosti ho obvykle nemají a tam je čitelné všechno.
  • Stav místnosti není šifrovaný nikdy: název, téma, avatar, členství, pozvánky, power levels — v otevřeném textu i v šifrované místnosti.
  • To není přehlédnutí. Server na události uplatňuje autorizační pravidla, takže je musí umět přečíst.
Takže skutečným rozdílem je graf
  • Kdo je s kým v místnosti, kdo koho pozval a kdy — jejich serveru vždycky viditelné.
  • Tady tohle žije ve stromu MLS. Server vidí group_id a epochu.
  • A důsledek, který se snadno přehlédne: vyhledávání na straně serveru v šifrovaných místnostech jim nefunguje vůbec. Element hledá lokálně — takže ve vyhledávání tohle zaostává za Elementem, ne za Matrixem.

KAM KAŽDÝ VKLÁDÁ ÚSILÍ

Kam jde úsilí

Matrix — dosah a provoz
  • Přežít rozpad sítě, protože DAG se potom sloučí.
  • Dvanáct verzí místnosti vydaných a zmigrovaných na běžící síti.
  • Škála prokázaná v terénu: stream writery, mapy instancí, replikace Redisu.
  • Moderace do hloubky — administrátorské API, ACL místnosti, karanténa médií, proces MSC.
  • Implementace třetích stran prověřované jako černé skříňky nástrojem Complement.
  • Obnova po ztrátě všech zařízení, přes zálohu klíčů na straně serveru.
Compax — co server nedokáže
  • Odkryté jsou group_id a epocha, a víc na pořadí není potřeba.
  • Identitu nevydává server: kořenový klíč podepíše potvrzení zařízení a každý si ho ověří lokálně.
  • Pořadí stojí jeden řádek — compare-and-set, naměřeno 239 připojení za sekundu v jedné místnosti.
  • Push nenese nic. Ten jejich nese room_id, takže se místnost k poskytovateli pushů dostane stejně.
  • Hovor dědí svou místnost: klíč médií pochází z tajemství epochy, takže odebrání člena ho jako vedlejší účinek odebere i z médií.
  • Boti jsou listy stromu, ne odbočka přes server — není místo, kde by pro bota ležel otevřený text.
  • Stížnost je dokazatelná: důkaz zprávy ukáže autorství. Megolm je skupinový klíč a nedokazuje nic.
  • Peníze, které skupina drží společně, což v Matrixu není vůbec.

DŮSLEDKY

Co který protokol
nedokáže

Není to tabulka skóre. Každý řádek je cenou volby nad ním a v obou sloupcích stojí věci, které by ta která strana raději neměla.

Matrix

Compax

Těla zpráv v šifrované místnosti

Šifrový text. Megolm — server je nečte.

Šifrový text. MLS — totéž.

Jestli je šifrování zapnuté

Vypínač na místnost, m.room.encryption. Veřejné obvykle zapnuté nejsou a tam server čte všechno.

Není to vypínač. Neexistuje nešifrovaná místnost, ve které by se dalo být.

Stav místnosti — název, téma, členství, pozvánky, power levels

V otevřeném textu, vždy, i v šifrované místnosti. Není to přehlédnutí: server uplatňuje autorizační pravidla, takže je musí číst.

Ve stromu MLS. Server vidí group_id a epochu.

Kdo je s kým v místnosti

Serveru viditelné, vždy.

Neviditelné. Tohle, a ne text zpráv, je ten skutečný rozdíl.

Vyhledávání na straně serveru v šifrované místnosti

Nefunguje vůbec — šifrovaná událost nemá content.body, který by šel zaindexovat. Element hledá lokálně.

Nefunguje také, a ze stejného důvodu. Cesta ven je táž, kterou zvolil Element: index v klientovi.

Commit přijatý během rozpadu sítě

Ano. Událost se přijme lokálně a potom ji sloučí state resolution.

Nemožné. Použití commitu zničí tajemství předchozí epochy — dva commity v jedné epoše jsou dva neslučitelné stavy klíčů.

Historie po ztrátě všech zařízení

Záloha klíčů na straně serveru pod obnovovacím klíčem — také koncová.

Pryč. Obal, který by otevřela samotná fráze, by byl trvalý přístup, který by nikdo nemohl odvolat; bylo to odmítnuto schválně.

Pravidla místnosti vymáhaná serverem

Ano — power levels, a server odmítne událost, která je poruší.

Ne. Politika běží ve stínu: počítá neshody a neodmítá nic, protože odmítnutý platný commit skupinu MLS nezkazí, on ji ukončí.

Náhledy odkazů, moderace podle obsahu, push nesoucí text

Možné všude, kde místnost není šifrovaná.

Nemožné. Tohle není „zatím ne“ — tohle je to, čím se zaplatilo za všechno ostatní.

Peníze držené skupinou

Není součástí protokolu.

Pět řetězců, klíč každého podepisujícího na jeho vlastním zařízení, platba přicházející jako zpráva.

A KDE SE POTKÁVAJÍ

Totéž na obou stranách

Postgres na to, co má vydržet, a Redis na to, co má být rychlé. Žetonové kbelíky na akci. Historie na druhém zařízení — u nich záloha klíčů, tady zapečetěná okna a přenos přes QR. Narůstající čekání při opakování na mrtvém protějšku. Sbalení mnoha záznamů do jednoho požadavku. Ohlášení verze přes HTTP. Blokování poskytovatele. Odstranění duplicit při příjmu. Přílohy mimo protokol událostí. Prometheus a pravidla pro alerty. A žádné vyhledávání na straně serveru v šifrované místnosti, na žádné z obou stran.

DÁL

Otázky,
které přijdou první

Šestnáct z nich, zodpovězených na rovinu — včetně těch dvou, kde odpověď není ta pohodlná.