Unang pagpagawas sa Matrix Federated Network Peer-to-Peer Client

Usa ka eksperimento nga kliyente ang gipagawas Riot P2P.


Riot - orihinal nga kliyente alang sa usa ka federated network Matrix. Ang pagbag-o sa P2P nagdugang usa ka pagpatuman sa server ug pederasyon sa kliyente nga wala mogamit usa ka sentralisado nga DNS pinaagi sa panagsama libp2p, nga gigamit usab sa IPFS. Kini ang una nga bersyon sa kliyente nga nagtipig sa sesyon pagkahuman sa pag-reload sa panid, apan sa sunod nga dagkong mga pag-update (pananglitan, 0.2.0) ang data matangtang gihapon. Busa, ang paggamit sa kliyente alang sa bisan unsa nga importante dili girekomenda.

Ang kliyente nagpatuman sa federation, paghimo sa lawak ug pagpasundayag sa usa ka global (serverless!) nga katalogo sa mga lawak.

Bisan pa, ang panguna nga network sa Matrix nga naggamit sa DNS ug ang network sa Matrix sa libp2p dili pa mag-federate ug makig-uban sa usag usa.

Aron magamit ang kliyente, i-klik lang ang buton sa pag-login, pagkahuman makadawat ka usa ka nahimo nga ID sa network. Ang pag-eksport sa datos wala pa gisuportahan.

Tungod kay kini usa ka dili lig-on nga presentasyon sa usa ka posible nga konsepto, mahimo kang magkaproblema:

  • Dili ka maka-log in sa imong account o makig-uban sa ubang mga kliyente kung ang server nga nagdagan isip usa ka Service Worker gipatay sa browser kung wala na. Ang ingon nga problema nakita sa Firefox, nga mobuhat niini human sa 30 segundos nga dili aktibo].
  • Sa lebel sa network sa libp2p, adunay mga limitasyon sa oras sa gidaghanon sa mga aksyon nga mahimo, nga mahimong hinungdan sa mga problema sa pederasyon.

Ang pagsugod sa trabaho sa P2P nga bersyon sa Matrix tungod sa tinguha sa mga developers nga mahatagan og dugang kagawasan ang ilang mga tiggamit. Ang pag-decoupling gikan sa sentral nga server nagpaposible nga mapadali ang komunikasyon sulod sa lokal ug mesh nga mga network, ug sa kinatibuk-an, sa mga kondisyon diin ang pag-access sa eksternal nga network limitado o wala. Kini usab adunay positibo nga epekto sa pagkapribado, tungod sa pagkunhod sa gipasa nga metadata, nga sa kini nga senaryo gitipigan lamang sa mga partisipante sa sulat. Sa katapusan, kini nagdala sa usa nga ikonsiderar ang pag-refactor sa karon nga mga konsepto sa Matrix aron makab-ot ang labi nga kadali ug seguridad.

Ang pagpatuman sa server API makab-ot pinaagi sa server compilation Dendrite ngadto sa WebAssembly code, nga nagdagan dungan sa kliyente sa porma sa usa ka Service Worker, gamit ang IndexedDB ug SQLite aron tipigan ang datos sa lokal, sa kaso sa web version ug sa Electron wrapper.
Ang Dendrite usa ka "ikaduha nga henerasyon" nga Matrix server sa Go nga gipalambo ug gidesinyo nga mahimong hingpit nga modular ug mahimo usab nga magamit nga monolitik. Sa usa ka modular nga porma, ang Apache Kafka gigamit alang sa interaksyon tali sa mga microservice, ug sa usa ka monolithic nga porma - Naffka. Ang dokumentasyon alang sa pagtukod sa P2P nga bersyon sa Dendrite makita sa GitHub.

Ang Dendrite orihinal nga gituyo aron mahimong usa ka server sa kinatibuk-ang katuyoan nga gituyo aron mahimong direkta nga kapuli Synapse, gisulat sa Python, nga adunay mga isyu sa performance ug scalability. Apan tungod sa panginahanglan alang sa suporta ug mayor nga refactoring sa Synapse, Dendrite development nahulog sa daplin sa dalan. Sa katapusan, ang pag-uswag nagpadayon, apan sila nakahukom sa pagpalambo sa kasamtangan nga code base dili sa usa ka kinatibuk-ang katuyoan nga konteksto, apan sa pag-focus sa pagpahaom alang sa pag-embed sa madaladala ug ubos nga gahum nga mga himan sa kliyente, sama sa mga browser ug mga telepono.

Ang kasamtangan nga pagpatuman sa Dendrite anaa pa sa unang mga yugto sa pag-uswag, apan igo na kini alang sa usa ka yano nga pederasyon:

Mga Client-Server API: 34% (227/672 nga mga pagsulay) β€” gikan sa 33%
Mga Federation API: 34% (35/103 nga mga pagsulay) - gikan sa 27%

Dili kini ang unang pagsulay sa pagpatuman sa P2P. Kaniadto, adunay usa ka inisyatibo sa paghimo CoAP proxy sa Yggdrasil network alang sa Synapse.


Ang mga nag-develop sa Matrix protocol wala naka-focus sa federation nga nag-inusara ug nag-eksperimento sa mga himan alang sa mas dako nga desentralisasyon. Pananglitan, usa ka eksperimento ang gihimo aron makunhuran ang gasto sa lebel sa transportasyon. Usa ka demonyo ang nag-evolve Pantalaimon - usa ka proxy diin ang bisan unsang kliyente nga wala’y suporta sa pag-encrypt mahimong magkonektar ug makig-uban sa mga naka-encrypt nga mensahe. Ang tanan nga mga inisyatibo nga gihimo gitumong sa pagsiguro nga sa umaabot kuhaa ang pag-login nga nagbugkos sa server, pagwagtang sa MXID, pagpakig-uban sa network gamit ang usa ka publikong yawe, nga partially implementar sa Riot P2P.


Makita nimo ang mas detalyado nga kasayuran sa mga konsepto sa giplano nga pagpatuman sa FOSDEM 2020 nga presentasyon sa YouTube ΠΈ bag-o nga blog post.

Adunay usab Riot P2P nga variant alang sa Android, base sa code gikan sa daan nga app. Sa umaabot kini giplano nga ibalhin kini sa karon. RiotX.

Dugang pa

  • Gipresentar nga proyekto TARDIS (Time Agnostic Room DAG Inspection Service) maoy usa ka linear event graph (DAG) debugger alang sa Matrix nga mga lawak base sa Riot P2P.

  • Sa proyekto pipe (usa ka server nga gipalambo sa komunidad sa Rust) karon gipatuman ang encryption ug mga attachment.

  • Usa ka eksperimento nga server sa Scala nagpakita - Mascarene.

Source: linux.org.ru

Idugang sa usa ka comment