{"id":84713,"date":"2020-06-10T07:42:20","date_gmt":"2020-06-10T05:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix"},"modified":"2020-06-10T07:42:20","modified_gmt":"2020-06-10T05:42:20","slug":"pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix","title":{"rendered":"The first edition of the Peer-to-Peer client for the federated Matrix network","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex>      <noindex><\/p>\n<p>The experimental client has been released <a rel=\"nofollow\" href=\"https:\/\/p2p.riot.im\">Riot P2P<\/a>.<\/p>\n<p><\/noindex><\/noindex><br \/>\n<noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/riot.im\">Riot<\/a> \u2014 originally a client for the federated network <a rel=\"nofollow\" href=\"https:\/\/matrix.org\">Matrix<\/a>. The P2P modification adds server implementation and federation to the client without using centralized DNS through integration <a rel=\"nofollow\" href=\"https:\/\/libp2p.io\">libp2p<\/a>, which is also used in <a rel=\"nofollow\" href=\"https:\/\/ipfs.io\">IPFS<\/a>. This is the first version of the client that maintains the session after a page reload, but in future major updates (e.g., 0.2.0) data will still be deleted. Therefore, it is not recommended to use the client for anything important.<\/p>\n<p><\/noindex><\/p>\n<p>The client implements federation, room creation, and displays a global (serverless!) room directory.<\/p>\n<p>At the same time, the main Matrix network, which uses DNS, and the Matrix network on libp2p cannot federate and interact with each other yet.<\/p>\n<p>To use the client, just click the login button, after which you will receive a generated ID in the network. Data export is not supported yet.<\/p>\n<p>Since this is an unstable presentation of a possible concept, you may encounter issues:<\/p>\n<ul>\n<li>You will not be able to log into your account or interact with other clients if the server running as a Service Worker is killed by the browser after a timeout. This problem <a rel=\"nofollow\" href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1378587\">was observed in Firefox<\/a>, which does this after 30 seconds of inactivity].<\/li>\n<li>On the network level, libp2p imposes limits on the number of actions that can be performed over time, which may cause federation issues.<\/li>\n<\/ul>\n<p>The work on the P2P version of Matrix is driven by the developers' desire to give their users more freedom. Detachment from a central server facilitates communication within local and mesh networks, especially in conditions where access to an external network is limited or nonexistent. This also positively impacts privacy by minimizing the metadata transmitted, which in such scenarios is stored only by the participants in the conversation. Ultimately, this prompts consideration of refactoring current Matrix concepts for greater portability and security.<\/p>\n<p>The implementation of the server API is achieved by compiling the server <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/dendrite\">Dendrite<\/a> into WebAssembly code, which runs alongside the client as a Service Worker, using IndexedDB and SQLite for local data storage in the case of the web version and the Electron wrapper.<br \/>\nDendrite is a developing 'second generation' Matrix server written in Go, aimed at complete modularity, which can also be used in a monolithic form. In its modular form, it utilizes Apache Kafka for microservices interactions, while in monolithic form it works with <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/naffka\">Naffka<\/a>. Documentation for building the P2P version of Dendrite can be found <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/dendrite\/blob\/master\/docs\/p2p.md\">on GitHub<\/a>.<\/p>\n<p><noindex><\/p>\n<p>Dendrite was originally conceived as a general-purpose server intended to be a direct replacement for <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/synapse\">Synapse<\/a>, which is written in Python and has performance and scalability issues. However, due to the need for support and significant refactoring of Synapse, Dendrite development was put on hold. Ultimately, development resumed, but the existing codebase was decided to be developed not in the context of general purpose, but rather focused on adapting for integration into portable and low-powered client devices, like browsers and phones.<\/p>\n<p><\/noindex><\/p>\n<p>The current implementation of Dendrite is still in the early stages of development, but it is sufficient for simple federation:<\/p>\n<p>Client-Server APIs: 34% (227\/672 tests) \u2014 up from 33%<br \/>\nFederation APIs: 34% (35\/103 tests) \u2014 up from 27%<\/p>\n<p><noindex><\/p>\n<p>This is not the first attempt at implementing P2P. Earlier, there was an initiative to create <a rel=\"nofollow\" href=\"https:\/\/www.epfl.ch\/labs\/dedis\/wp-content\/uploads\/2020\/01\/presentation-2019-2-Timothee-Floure-Experimenting-with-Matrix-federation-over-Yggdrasil.pdf\">a CoAP proxy in the Yggdrasil network for Synapse<\/a>.<\/p>\n<p><\/noindex><br \/>\n<noindex><\/p>\n<p>Matrix protocol developers do not focus solely on federation and are experimenting with tools for even greater decentralization. For example, an experiment was conducted <a rel=\"nofollow\" href=\"https:\/\/matrix.org\/blog\/2019\/03\/12\/breaking-the-100-bps-barrier-with-matrix-meshsim-coap-proxy\">to reduce costs at the transport level<\/a>. Developing is a daemon <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/pantalaimon\">Pantalaimon<\/a> \u2014 a proxy that any client can connect to without encryption support and interact with encrypted messages. All initiatives aim to eventually <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/matrix-doc\/blob\/rav\/proposal\/remove_mxids_from_events\/proposals\/1228-removing-mxids-from-events.md\">eliminate the login binding to the server<\/a>, abolishing MXID, interacting with the network through a public key, which is already partially implemented in Riot P2P.<\/p>\n<p><\/noindex><br \/>\n<noindex><\/p>\n<p>More detailed information about the concepts of planned implementations can be found <a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nZBKzQzH2NA\">in the FOSDEM 2020 presentation on YouTube<\/a> and <a rel=\"nofollow\" href=\"https:\/\/matrix.org\/blog\/2020\/06\/02\/introducing-p-2-p-matrix\">in a recently released blog post<\/a>.<\/p>\n<p><\/noindex><\/p>\n<p><noindex><\/p>\n<p>There is also a Riot P2P version for Android, based on the code of the old app. In the future, it is planned to migrate it to the current <a rel=\"nofollow\" href=\"https:\/\/github.com\/vector-im\/riotX-android\">RiotX<\/a>.<\/p>\n<p><\/noindex><\/p>\n<p>Additionally<\/p>\n<ul>\n<li>\n<noindex><\/p>\n<p>Project <a rel=\"nofollow\" href=\"https:\/\/github.com\/matrix-org\/tardis\">TARDIS<\/a> (Time Agnostic Room DAG Inspection Service) \u2014 a debugger for linear event graph (DAG) for Matrix rooms based on Riot P2P.<\/p>\n<p><\/noindex>\n<\/li>\n<li>\n<noindex><\/p>\n<p>In the project <a rel=\"nofollow\" href=\"https:\/\/git.koesters.xyz\/timo\/conduit\">Conduit<\/a> (a community-developed server in Rust) now <a rel=\"nofollow\" href=\"https:\/\/youtu.be\/HoBslDtqC1k\">encryption and attachments have been implemented<\/a>.<\/p>\n<p><\/noindex>\n<\/li>\n<li>\n<noindex><\/p>\n<p>An experimental server based on Scala has been launched \u2014 <a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/mascarene\/mascarene\">Mascarene<\/a>.<\/p>\n<p><\/noindex>\n<\/li>\n<\/ul>\n<p>Source: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/opensource\/15721430\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432\u044b\u043f\u0443\u0441\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Riot P2P. Riot \u2014 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Matrix. P2P-\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u043a\u043b\u0438\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e DNS \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 libp2p, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 IPFS. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 0.2.0) \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0443\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-84713","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432\u044b\u043f\u0443\u0441\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Riot P2P. Riot \u2014.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a Peer-to-Peer \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0444\u0435\u0434\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Matrix | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432\u044b\u043f\u0443\u0441\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Riot P2P. Riot \u2014.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-10T05:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-10T05:42:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47The first release of the Peer-to-Peer client for the federated Matrix network | ProHoster","description":"The experimental Riot P2P client has been released. Riot \u2014.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a Peer-to-Peer \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0444\u0435\u0434\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Matrix | ProHoster","og:description":"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432\u044b\u043f\u0443\u0441\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Riot P2P. Riot \u2014.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/pervyj-vypusk-peer-to-peer-klienta-federativnoj-seti-matrix","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-10T05:42:20+00:00","article:modified_time":"2020-06-10T05:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84713","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:52:37","updated":"2022-09-28 00:51:43","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/84713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=84713"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/84713\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=84713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=84713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=84713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}