waku.org/assets/js/d40faacd.da277f2e.js

1 line
8.1 KiB
JavaScript
Raw Normal View History

2023-07-17 16:26:05 +00:00
"use strict";(self.webpackChunkwaku_docusaurus_template=self.webpackChunkwaku_docusaurus_template||[]).push([[894],{46050:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Description and architecture",sidebar_position:2},i=void 0,s={unversionedId:"architect",id:"architect",title:"Description and architecture",description:"Waku is a family of protocols that enable private, censorship-resistant communications over an open-source, decentralised network. By communications, we mean the exchange of data or messages between two or more entities, whether they are users, devices, or nodes.",source:"@site/about/architect.md",sourceDirName:".",slug:"/architect",permalink:"/about/architect",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Description and architecture",sidebar_position:2},sidebar:"defaultSidebar",previous:{title:"About",permalink:"/about/"},next:{title:"Development roadmap",permalink:"/about/roadmap"}},l={},p=[{value:"Network architecture",id:"network-architecture",level:2},{value:"Waku protocols",id:"waku-protocols",level:3}],c={toc:p};function u(e){let{components:t,...o}=e;return(0,a.kt)("wrapper",(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Waku is a family of protocols that enable private, censorship-resistant communications over an open-source, decentralised network. By communications, we mean the exchange of data or messages between two or more entities, whether they are users, devices, or nodes. "),(0,a.kt)("p",null,"Waku was built as open-source public goods infrastructure to serve as the communications layer of the decentralised web. As such, its development focuses on the following: "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Generalised:")," Waku's focus on generalised and ephemeral messaging facilitates communication between users, subsystems, or nodes according to developers' needs.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Peer-to-peer:")," The Waku network has a decentralised peer-to-peer topology, preventing censorship and providing surveillance resistance. It is composed of adaptive nodes and is designed to scale to millions of users. ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Runs anywhere:")," Waku was designed to run in resource-restricted environments like phones and browsers, enabling users operating lower-spec hardware or with limited bandwidth to participate as peers.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Privacy first:")," Waku empowers developers to build apps that cannot harvest users' metadata, removing the need for them to trust that their data is not used maliciously or without their consent. ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Modular:")," Waku's modularity enables developers to make tradeoffs according to their users' privacy expectations and performance demands, by implementing only those protocols that are relevant to their applications. For example, while one app might value privacy above all else, another may be willing to make compromises to deliver a more frictionless UX.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Platform agnostic:")," Waku can run on any platform or in any environment, making it a suitable messaging solution for decentralised applications regardless of the network on which they're deployed."))),(0,a.kt)("br",null),(0,a.kt)("h2",{id:"network-architecture"},"Network architecture"),(0,a.kt)("p",null,"The Waku team has developed three clients to run in different environments along with a range of SDKs in Rust, React Native, Kotlin, and Swift:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName