mirror of
https://github.com/vacp2p/research.logos.co.git
synced 2026-04-03 03:01:03 -04:00
1 line
19 KiB
JavaScript
1 line
19 KiB
JavaScript
"use strict";(self.webpackChunkresearch_logos_co=self.webpackChunkresearch_logos_co||[]).push([[1809],{28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>o});var t=s(96540);const a={},r=t.createContext(a);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),t.createElement(r.Provider,{value:n},e.children)}},44356:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>t,toc:()=>l});var t=s(66579),a=s(74848),r=s(28453);const i={layout:"post",name:"Waku for All Decentralized Applications and Infrastructures",title:"Waku for All Decentralized Applications and Infrastructures",date:new Date("2022-11-08T00:00:00.000Z"),authors:"franck",published:!0,slug:"waku-for-all",categories:"waku, dapp, infrastructure, public good, platform, operator",image:"/img/black-waku-logo-with-name.png",discuss:"https://forum.research.logos.co/t/discussion-waku-for-all-decentralized-applications-and-infrastructures/163"},o=void 0,c={authorsImageUrls:[void 0]},l=[{value:"Background",id:"background",level:2},{value:"Waku for All Decentralized Applications and Infrastructures",id:"waku-for-all-decentralized-applications-and-infrastructures",level:2},{value:"Waku for Your Project",id:"waku-for-your-project",level:2},{value:"Layer-2 Decentralization",id:"layer-2-decentralization",level:2},{value:"Device pairing and communication",id:"device-pairing-and-communication",level:2},{value:"Get Involved",id:"get-involved",level:2},{value:"Moving Forward",id:"moving-forward",level:2},{value:"References",id:"references",level:2}];function u(e){const n={a:"a",em:"em",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"Waku is an open communication protocol and network. Decentralized apps and infrastructure can use Waku for their\ncommunication needs. It is designed to enable dApps and decentralized infrastructure projects to have secure, private,\nscalable communication. Waku is available in several languages and platforms, from Web to mobile to desktop to cloud.\nInitially, We pushed Waku adoption to the Web ecosystem, we learned that Waku is usable in a variety of complex applications\nand infrastructure projects. We have prioritized our effort to make Waku usable on various platforms and environments."}),"\n","\n",(0,a.jsx)(n.h2,{id:"background",children:"Background"}),"\n",(0,a.jsx)(n.p,{children:"We have built Waku to be the communication layer for Web3. Waku is a collection of protocols to chose from for your\nmessaging needs. It enables secure, censorship-resistant, privacy-preserving, spam-protected communication for its user.\nIt is designed to run on any device, from mobile to the cloud."}),"\n",(0,a.jsx)(n.p,{children:"Waku is available on many systems and environments and used by several applications and SDKs for decentralized communications."}),"\n",(0,a.jsx)(n.p,{children:"This involved research efforts in various domains: conversational security, protocol incentivization, zero-knowledge,\netc."}),"\n",(0,a.jsxs)(n.p,{children:["Waku uses novel technologies. Hence, we knew that early dogfooding of Waku was necessary. Even if research\nwas still ",(0,a.jsx)(n.em,{children:"in progress"})," ",(0,a.jsx)(n.a,{href:"#references",children:"[1]"}),". Thus, as soon as Waku protocols and software were usable, we started to push\nfor the adoption of Waku. This started back in 2021."]}),"\n",(0,a.jsx)(n.p,{children:"Waku is the communication component of the Web3 trifecta. This trifecta was Ethereum (contracts), Swarm\n(storage) and Whisper (communication). Hence, it made sense to first target dApps which already uses one of the pillars:\nEthereum."}),"\n",(0,a.jsxs)(n.p,{children:["As most dApps are web apps, we started the development of ",(0,a.jsx)(n.a,{href:"https://research.logos.co/presenting-js-waku",children:"js-waku for the browser"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Once ready, we reached out to dApps to integrate Waku, added ",(0,a.jsx)(n.a,{href:"https://twitter.com/waku_org/status/1451400128791605254?s=20&t=Zhc0BEz6RVLkE_SeE6UyFA",children:"prizes to hackathons"}),"\nand gave ",(0,a.jsx)(n.a,{href:"https://docs.wakuconnect.dev/docs/presentations/",children:"talks"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["We also assumed we would see patterns in the usage of Waku, that we would facilitate with the help of\n",(0,a.jsx)(n.a,{href:"https://github.com/status-im/wakuconnect-vote-poll-sdk",children:"SDKs"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Finally, we created several web apps:\n",(0,a.jsx)(n.a,{href:"https://docs.wakuconnect.dev/docs/examples/",children:"examples"}),"\nand ",(0,a.jsx)(n.a,{href:"https://github.com/status-iM/gnosis-safe-waku",children:"PoCs"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"By discussing with Waku users and watching it being used, we learned a few facts:"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"The potential use cases for Waku are varied and many:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Wallet <> dApp communication: ",(0,a.jsx)(n.a,{href:"https://medium.com/walletconnect/walletconnect-v2-0-protocol-whats-new-3243fa80d312",children:"WalletConnect"}),", ",(0,a.jsx)(n.a,{href:"https://xmtp.org/docs/dev-concepts/architectural-overview/",children:"XMTP"})]}),"\n",(0,a.jsxs)(n.li,{children:["Off-chain (and private) marketplace:\n",(0,a.jsx)(n.a,{href:"https://twitter.com/RAILGUN_Project/status/1556780629848727552?s=20&t=NEKQJiJAfg5WJqvuF-Ym_Q",children:"RAILGUN"})," &\n",(0,a.jsx)(n.a,{href:"https://twitter.com/TheBojda/status/1455557282318721026",children:"Decentralized Uber"})]}),"\n",(0,a.jsxs)(n.li,{children:["Signature exchange for a multi-sign wallet: ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/gnosis-safe-waku",children:"Gnosis Safe x Waku"})]}),"\n",(0,a.jsxs)(n.li,{children:["Off-chain Game moves/actions: ",(0,a.jsx)(n.a,{href:"https://showcase.ethglobal.com/ethonline2021/super-card-game",children:"Super Card Game (EthOnline 2021)"})]}),"\n",(0,a.jsxs)(n.li,{children:["Decentralized Pastebin: ",(0,a.jsx)(n.a,{href:"https://debin.io/",children:"Debin"})]}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"Many projects are interested in having an embedded chat in their dApp,"}),"\n",(0,a.jsx)(n.li,{children:"There are complex applications that need Waku as a solution. Taking RAILGUN as an example:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Web wallet"}),"\n",(0,a.jsx)(n.li,{children:"+ React Native mobile wallet"}),"\n",(0,a.jsx)(n.li,{children:"+ NodeJS node/backend."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"(1) means that it is not that easy to create SDKs for common use cases."}),"\n",(0,a.jsxs)(n.p,{children:["(2) was a clear candidate for an SDK. Yet, building a chat app is a complex task. Hence, the Status app team tackled\nthis in the form of ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/status-web/",children:"Status Web"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"Finally, (3) was the most important lesson. We learned that multi-tier applications need Waku for decentralized and\ncensorship-resistant communications. For these projects, js-waku is simply not enough. They need Waku to work in their\nGolang backend, Unity desktop game and React Native mobile app."}),"\n",(0,a.jsxs)(n.p,{children:["We understood that we should see the whole Waku software suite\n(",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/js-waku",children:"js-waku"}),",\n",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku",children:"nwaku"}),",\n",(0,a.jsx)(n.a,{href:"https://github.com/status-im/go-waku",children:"go-waku"}),",\n",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/waku-react-native",children:"waku-react-native"}),",\n",(0,a.jsx)(n.a,{href:"https://github.com/waku-org",children:"etc"}),") as an asset for its success.\nThat we should not limit outreach, marketing, documentation efforts to the web, but target all platforms."]}),"\n",(0,a.jsx)(n.p,{children:"From a market perspective, we identified several actors:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"platforms: Projects that uses Waku to handle communication,"}),"\n",(0,a.jsx)(n.li,{children:"operators: Operators run Waku nodes and are incentivized to do so,"}),"\n",(0,a.jsx)(n.li,{children:"developers: Developers are usually part of a platforms or solo hackers learning Web3,"}),"\n",(0,a.jsx)(n.li,{children:"contributors: Developers and researchers with interests in decentralization, privacy, censorship-resistance,\nzero-knowledge, etc."}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"waku-for-all-decentralized-applications-and-infrastructures",children:"Waku for All Decentralized Applications and Infrastructures"}),"\n",(0,a.jsxs)(n.p,{children:["In 2022, we shifted our focus to make the various Waku implementations ",(0,a.jsx)(n.strong,{children:"usable and used"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["We made Waku ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/go-waku/tree/master/examples",children:"multi-plaform"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"We shifted Waku positioning to leverage all Waku implementations and better serve the user's needs:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Running a node for your projects and want to use Waku? Use ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku",children:"nwaku"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:["Going mobile? Use ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/waku-react-native",children:"Waku React Native"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:["C++ Desktop Game? Use ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/go-waku/tree/master/examples/c-bindings",children:"go-waku's C-Bindings"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:["Web app? Use ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/js-waku",children:"js-waku"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["We are consolidating the documentation for all implementations on a single website (",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/waku.org/issues/15",children:"work in progress"}),")\nto improve developer experience."]}),"\n",(0,a.jsxs)(n.p,{children:["This year, we also started the ",(0,a.jsx)(n.em,{children:"operator outreach"})," effort to push for users to run their own Waku nodes. We have\nrecently concluded our ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku/issues/828",children:"first operator trial run"}),".\n",(0,a.jsx)(n.a,{href:"https://research.logos.co/introducing-nwaku",children:"Nwaku"}),"'s documentation, stability and performance has improved. It is now easier to\nrun your ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku/tree/master/docs/operators",children:"own Waku node"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Today, operator wannabes most likely run their own nodes to support or use the Waku network.\nWe are ",(0,a.jsx)(n.a,{href:"https://twitter.com/oskarth/status/1582027828295790593?s=20&t=DPEP6fXK6KWbBjV5EBCBMA",children:"dogfooding"}),"\n",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku/issues/827",children:"Waku RLN"}),", our novel economic spam protection protocol,\nand looking at ",(0,a.jsx)(n.a,{href:"https://github.com/vacp2p/research/issues/99",children:"incentivizing the Waku Store protocol"}),".\nThis way, we are adding reasons to run your own Waku node."]}),"\n",(0,a.jsxs)(n.p,{children:["For those who were following us in 2021, know that we are retiring the ",(0,a.jsx)(n.em,{children:"Waku Connect"})," branding in favour of the ",(0,a.jsx)(n.em,{children:"Waku"}),"\nbranding."]}),"\n",(0,a.jsx)(n.h2,{id:"waku-for-your-project",children:"Waku for Your Project"}),"\n",(0,a.jsxs)(n.p,{children:["As discussed, Waku is now available on various platforms. The question remains: How can Waku benefit ",(0,a.jsx)(n.strong,{children:"your"})," project?"]}),"\n",(0,a.jsx)(n.p,{children:"Here are a couple of use cases we recently investigated:"}),"\n",(0,a.jsx)(n.h2,{id:"layer-2-decentralization",children:"Layer-2 Decentralization"}),"\n",(0,a.jsxs)(n.p,{children:["Most (",(0,a.jsx)(n.a,{href:"#references",children:"[2] [3]"})," roll-ups use a centralized sequencer or equivalent. Running several sequencers is not as straightforward as running several execution nodes.\nWaku can help:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Provide a neutral marketplace for a mempool: If sequencers compete for L2 tx fees, they may not be incentivized to\nshare transactions with other sequencers. Waku nodes can act as a neutral network to enable all sequences to access\ntransactions."}),"\n",(0,a.jsx)(n.li,{children:"Enable censorship-resistant wallet<>L2 communication,"}),"\n",(0,a.jsxs)(n.li,{children:["Provide rate limiting mechanism for spam protection: Using ",(0,a.jsx)(n.a,{href:"https://rfc.vac.dev/vac/32/rln-v1",children:"RLN"})," to prevent DDOS."]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"device-pairing-and-communication",children:"Device pairing and communication"}),"\n",(0,a.jsxs)(n.p,{children:["With ",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/specs/blob/master/standards/application/device-pairing.md",children:"Waku Device Pairing"}),", a user can setup a secure encrypted communication channel\nbetween their devices. As this channel would operate over Waku, it would be censorship-resistant and privacy preserving.\nThese two devices could be:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Ethereum node and mobile phone to access a remote admin panel,"}),"\n",(0,a.jsx)(n.li,{children:"Alice's phone and Bob's phone for any kind of secure communication,"}),"\n",(0,a.jsx)(n.li,{children:"Mobile wallet and desktop/browser dApp for transaction and signature exchange."}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Check ",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/js-waku/issues/950",children:"js-waku#950"})," for the latest update on this."]}),"\n",(0,a.jsx)(n.h2,{id:"get-involved",children:"Get Involved"}),"\n",(0,a.jsxs)(n.p,{children:["Developer? Grab any of the Waku implementations and integrate it in your app: ",(0,a.jsx)(n.a,{href:"https://waku.org/platform",children:"https://waku.org/platform"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Researcher? See ",(0,a.jsx)(n.a,{href:"https://research.logos.co/contribute",children:"https://research.logos.co/contribute"})," to participate in Waku research."]}),"\n",(0,a.jsxs)(n.p,{children:["Tech-savvy? Try to run your own node: ",(0,a.jsx)(n.a,{href:"https://waku.org/operator",children:"https://waku.org/operator"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Otherwise, play around with the various ",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/js-waku-examples#readme",children:"web examples"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["If you want to help, we are ",(0,a.jsx)(n.a,{href:"https://jobs.status.im/",children:"hiring"}),"!"]}),"\n",(0,a.jsx)(n.h2,{id:"moving-forward",children:"Moving Forward"}),"\n",(0,a.jsx)(n.p,{children:"What you can expect next:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://forum.research.logos.co/t/waku-v2-scalability-studies/142/9",children:"Scalability and performance studies"})," and improvement across Waku software,"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/waku-org/waku.org/issues/15",children:"New websites"})," to easily find documentation about Waku and its implementations,"]}),"\n",(0,a.jsxs)(n.li,{children:["New Waku protocols implemented in all code bases and cross client PoCs\n(",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/specs/blob/master/standards/application/noise.md",children:"noise"}),", ",(0,a.jsx)(n.a,{href:"https://github.com/waku-org/specs/blob/master/standards/application/noise-sessions.md",children:"noise-sessions"}),",\n",(0,a.jsx)(n.a,{href:"https://rfc.vac.dev/waku/standards/core/17/rln-relay",children:"waku-rln-relay"}),", etc),"]}),"\n",(0,a.jsxs)(n.li,{children:["Easier to ",(0,a.jsx)(n.a,{href:"https://github.com/status-im/nwaku/issues/828",children:"run your own waku node"}),", more operator trials,"]}),"\n",(0,a.jsxs)(n.li,{children:["Dogfooding and Improvement of existing protocols (e.g. ",(0,a.jsx)(n.a,{href:"https://github.com/vacp2p/rfc/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++12%2FWAKU2-FILTER",children:"Waku Filter"}),"),"]}),"\n",(0,a.jsxs)(n.li,{children:["Continue our focus Waku portability: Browser,\n",(0,a.jsx)(n.a,{href:"https://twitter.com/richardramos_me/status/1574405469912932355?s=20&t=DPEP6fXK6KWbBjV5EBCBMA",children:"Raspberry Pi Zero"})," and other restricted-resource environments,"]}),"\n",(0,a.jsx)(n.li,{children:"More communication & marketing effort around Waku and the Waku developer community."}),"\n"]}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h2,{id:"references",children:"References"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["[1] Waku is modular; it is a suite of protocols; hence some Waku protocols may be mature, while\nnew protocols are still being designed. Which means that research continues to be ",(0,a.jsx)(n.em,{children:"ongoing"})," while\nWaku is already used in production."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://community.optimism.io/docs/how-optimism-works/#block-production",children:"[2]"})," The Optimism Foundation runs the only block produce on the Optimism network."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://l2beat.com/",children:"[3]"})," Top 10 L2s are documented has having a centralized operator."]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},66579:e=>{e.exports=JSON.parse('{"permalink":"/rlog/waku-for-all","source":"@site/rlog/2022-11-08-waku-for-all-decentralize-applications.mdx","title":"Waku for All Decentralized Applications and Infrastructures","description":"Waku is an open communication protocol and network. Decentralized apps and infrastructure can use Waku for their","date":"2022-11-08T00:00:00.000Z","tags":[],"readingTime":6.155,"hasTruncateMarker":true,"authors":[{"name":"Franck","twitter":"fryorcraken","github":"fryorcraken","key":"franck","page":null}],"frontMatter":{"layout":"post","name":"Waku for All Decentralized Applications and Infrastructures","title":"Waku for All Decentralized Applications and Infrastructures","date":"2022-11-08T00:00:00.000Z","authors":"franck","published":true,"slug":"waku-for-all","categories":"waku, dapp, infrastructure, public good, platform, operator","image":"/img/black-waku-logo-with-name.png","discuss":"https://forum.research.logos.co/t/discussion-waku-for-all-decentralized-applications-and-infrastructures/163"},"unlisted":false,"prevItem":{"title":"The Future of Waku Network: Scaling, Incentivization, and Heterogeneity","permalink":"/rlog/future-of-waku-network"},"nextItem":{"title":"Building Privacy-Protecting Infrastructure","permalink":"/rlog/building-privacy-protecting-infrastructure"}}')}}]); |