Update documentation

This commit is contained in:
status-im-auto 2025-10-03 05:55:52 +00:00
parent 898b31e184
commit 0a82721b65
164 changed files with 486 additions and 609 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[4283],{39018:(e,o,t)=>{var s=t(98941);t.o(s,"AccordionItem")&&t.d(o,{AccordionItem:function(){return s.AccordionItem}})},92384:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"learn/faq","title":"Waku FAQ","description":"Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.","source":"@site/docs/learn/faq.md","sourceDirName":"learn","slug":"/learn/faq","permalink":"/learn/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/faq.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Waku FAQ","hide_table_of_contents":true,"sidebar_label":"Frequently Asked Questions","displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Glossary","permalink":"/learn/glossary"}}');var n=t(74848),r=t(28453),a=t(39018);const i={title:"Waku FAQ",hide_table_of_contents:!0,sidebar_label:"Frequently Asked Questions",displayed_sidebar:"learn"},l=void 0,d={},c=[];function u(e){const o={p:"p",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.AccordionItem,{title:"How can I start building my application using Waku?",children:(0,n.jsxs)(o.p,{children:["Check out the ",(0,n.jsx)("a",{href:"/",children:"Getting Started"})," guide to explore our numerous SDKs and learn how to run a Waku node."]})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"Does messaging on Waku require a gas fee?",children:(0,n.jsx)(o.p,{children:"No, sending and receiving messages on Waku involves no gas fee."})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"What encryption does Waku use?",children:(0,n.jsx)(o.p,{children:"Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely."})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"Where does Waku store the messages?",children:(0,n.jsxs)(o.p,{children:["Waku's ",(0,n.jsx)("a",{href:"/learn/concepts/protocols#store",children:"Store protocol"})," is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using ",(0,n.jsx)("a",{href:"https://codex.storage/",children:"Codex"})," for long-term storage."]})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"Can Waku only be used for wallet-to-wallet messaging?",children:(0,n.jsx)(o.p,{children:"No, Waku is flexible and imposes no specific rules on identifiers."})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"How does Waku differ from IPFS?",children:(0,n.jsx)(o.p,{children:"Waku focuses on short, ephemeral, real-time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons."})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"What are Rate Limiting Nullifiers (RLN)?",children:(0,n.jsxs)(o.p,{children:[(0,n.jsx)("a",{href:"/learn/concepts/protocols#rln-relay",children:"Rate Limiting Nullifier"})," is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which ",(0,n.jsx)("a",{href:"/learn/concepts/protocols#relay",children:"Relay"})," nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame."]})}),"\n",(0,n.jsx)(a.AccordionItem,{title:"How to start a Waku node?",children:(0,n.jsxs)(o.p,{children:["Follow the README instructions at ",(0,n.jsx)("a",{href:"https://docs.waku.org/guides/nwaku/run-node",children:"nwaku-compose"}),"."]})})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}}}]);

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[4283],{39018:(e,o,t)=>{var n=t(98941);t.o(n,"AccordionItem")&&t.d(o,{AccordionItem:function(){return n.AccordionItem}})},92384:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"learn/faq","title":"Waku FAQ","description":"Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.","source":"@site/docs/learn/faq.md","sourceDirName":"learn","slug":"/learn/faq","permalink":"/learn/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/faq.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Waku FAQ","hide_table_of_contents":true,"sidebar_label":"Frequently Asked Questions"},"sidebar":"learn","previous":{"title":"Glossary","permalink":"/learn/glossary"}}');var s=t(74848),r=t(28453),a=t(39018);const i={title:"Waku FAQ",hide_table_of_contents:!0,sidebar_label:"Frequently Asked Questions"},l=void 0,c={},d=[];function u(e){const o={p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.AccordionItem,{title:"How can I start building my application using Waku?",children:(0,s.jsxs)(o.p,{children:["Check out the ",(0,s.jsx)("a",{href:"/",children:"Getting Started"})," guide to explore our numerous SDKs and learn how to run a Waku node."]})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"Does messaging on Waku require a gas fee?",children:(0,s.jsx)(o.p,{children:"No, sending and receiving messages on Waku involves no gas fee."})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"What encryption does Waku use?",children:(0,s.jsx)(o.p,{children:"Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely."})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"Where does Waku store the messages?",children:(0,s.jsxs)(o.p,{children:["Waku's ",(0,s.jsx)("a",{href:"/learn/concepts/protocols#store",children:"Store protocol"})," is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using ",(0,s.jsx)("a",{href:"https://codex.storage/",children:"Codex"})," for long-term storage."]})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"Can Waku only be used for wallet-to-wallet messaging?",children:(0,s.jsx)(o.p,{children:"No, Waku is flexible and imposes no specific rules on identifiers."})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"How does Waku differ from IPFS?",children:(0,s.jsx)(o.p,{children:"Waku focuses on short, ephemeral, real-time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons."})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"What are Rate Limiting Nullifiers (RLN)?",children:(0,s.jsxs)(o.p,{children:[(0,s.jsx)("a",{href:"/learn/concepts/protocols#rln-relay",children:"Rate Limiting Nullifier"})," is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which ",(0,s.jsx)("a",{href:"/learn/concepts/protocols#relay",children:"Relay"})," nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame."]})}),"\n",(0,s.jsx)(a.AccordionItem,{title:"How to start a Waku node?",children:(0,s.jsxs)(o.p,{children:["Follow the README instructions at ",(0,s.jsx)("a",{href:"https://docs.waku.org/guides/nwaku/run-node",children:"nwaku-compose"}),"."]})})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1304],{28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var o=n(96540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}},96573:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"learn/waku-vs-libp2p","title":"Comparing Waku and libp2p","description":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","source":"@site/docs/learn/waku-vs-libp2p.md","sourceDirName":"learn","slug":"/learn/waku-vs-libp2p","permalink":"/learn/waku-vs-libp2p","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/waku-vs-libp2p.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Comparing Waku and libp2p","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"RLN Key Benchmarks","permalink":"/learn/research/research-and-studies/rln-key-benchmarks"},"next":{"title":"Glossary","permalink":"/learn/glossary"}}');var r=n(74848),a=n(28453);const s={title:"Comparing Waku and libp2p",hide_table_of_contents:!0,displayed_sidebar:"learn"},i=void 0,l={},c=[{value:"Waku as a service network",id:"waku-as-a-service-network",level:2},{value:"Waku as a turnkey solution",id:"waku-as-a-turnkey-solution",level:2},{value:"Economic spam protection",id:"economic-spam-protection",level:2}];function p(e){const t={a:"a",h2:"h2",p:"p",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting."}),"\n",(0,r.jsx)(t.h2,{id:"waku-as-a-service-network",children:"Waku as a service network"}),"\n",(0,r.jsxs)(t.p,{children:["Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to ",(0,r.jsx)(t.a,{href:"/run-node",children:"run a node"})," to support and decentralise the network."]}),"\n",(0,r.jsx)(t.h2,{id:"waku-as-a-turnkey-solution",children:"Waku as a turnkey solution"}),"\n",(0,r.jsx)(t.p,{children:"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment."}),"\n",(0,r.jsxs)(t.p,{children:["Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, ",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#store",children:"Store"}),"/",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#light-push",children:"Light Push"}),"/",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#filter",children:"Filter"})," caters to those use cases."]}),"\n",(0,r.jsx)(t.h2,{id:"economic-spam-protection",children:"Economic spam protection"}),"\n",(0,r.jsxs)(t.p,{children:["libp2p does not have strong spam protection guarantees, ",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#rln-relay",children:"RLN Relay"})," is a protocol being developed by the Waku team towards this goal."]})]})}function u(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}}}]);

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1304],{28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var o=n(96540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}},96573:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"learn/waku-vs-libp2p","title":"Comparing Waku and libp2p","description":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","source":"@site/docs/learn/waku-vs-libp2p.md","sourceDirName":"learn","slug":"/learn/waku-vs-libp2p","permalink":"/learn/waku-vs-libp2p","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/waku-vs-libp2p.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Comparing Waku and libp2p","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Research","permalink":"/learn/research"},"next":{"title":"Glossary","permalink":"/learn/glossary"}}');var r=n(74848),a=n(28453);const s={title:"Comparing Waku and libp2p",hide_table_of_contents:!0},i=void 0,l={},c=[{value:"Waku as a service network",id:"waku-as-a-service-network",level:2},{value:"Waku as a turnkey solution",id:"waku-as-a-turnkey-solution",level:2},{value:"Economic spam protection",id:"economic-spam-protection",level:2}];function p(e){const t={a:"a",h2:"h2",p:"p",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting."}),"\n",(0,r.jsx)(t.h2,{id:"waku-as-a-service-network",children:"Waku as a service network"}),"\n",(0,r.jsxs)(t.p,{children:["Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to ",(0,r.jsx)(t.a,{href:"/#run-a-waku-node",children:"run a node"})," to support and decentralise the network."]}),"\n",(0,r.jsx)(t.h2,{id:"waku-as-a-turnkey-solution",children:"Waku as a turnkey solution"}),"\n",(0,r.jsx)(t.p,{children:"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment."}),"\n",(0,r.jsxs)(t.p,{children:["Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, ",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#store",children:"Store"}),"/",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#light-push",children:"Light Push"}),"/",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#filter",children:"Filter"})," caters to those use cases."]}),"\n",(0,r.jsx)(t.h2,{id:"economic-spam-protection",children:"Economic spam protection"}),"\n",(0,r.jsxs)(t.p,{children:["libp2p does not have strong spam protection guarantees, ",(0,r.jsx)(t.a,{href:"/learn/concepts/protocols#rln-relay",children:"RLN Relay"})," is a protocol being developed by the Waku team towards this goal."]})]})}function u(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}}}]);

View File

@ -0,0 +1 @@
(()=>{"use strict";var e,r,t={84809:(e,r,t)=>{t.d(r,{BH:()=>a,Ho:()=>s,IH:()=>n,sx:()=>o});t(58291);const o=!1,a=["en"],n="search-index{dir}.json?_=95fea220",s=1}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,a),n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[540],()=>a(90540));return e=a.O(e)},e=[],a.O=(r,t,o,n)=>{if(!t){var s=1/0;for(f=0;f<e.length;f++){t=e[f][0],o=e[f][1],n=e[f][2];for(var i=!0,u=0;u<t.length;u++)(!1&n||s>=n)&&Object.keys(a.O).every(e=>a.O[e](t[u]))?t.splice(u--,1):(i=!1,n<s&&(s=n));if(i){e.splice(f--,1);var p=o();void 0!==p&&(r=p)}}return r}n=n||0;for(var f=e.length;f>0&&e[f-1][2]>n;f--)e[f]=e[f-1];e[f]=[t,o,n]},a.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return a.d(r,{a:r}),r},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((r,t)=>(a.f[t](e,r),r),[])),a.u=e=>"assets/js/"+e+".59e0d2f8.js",a.miniCssF=e=>{},a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),a.p="/",a.gca=function(e){return e={}[e]||e,a.p+a.u(e)},(()=>{var e={4809:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[],t=r.push.bind(r);r.push=r=>{var o=r[0],n=r[1],s=r[2];for(var i in n)a.o(n,i)&&(a.m[i]=n[i]);for(s&&s(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(540).then(r);a.x()})();

View File

@ -1 +0,0 @@
(()=>{"use strict";var e,r,t={84809:(e,r,t)=>{t.d(r,{BH:()=>n,Ho:()=>a,IH:()=>s,sx:()=>o});t(58291);const o=!1,n=["en"],s="search-index{dir}.json?_=f3d51dfc",a=1}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var s=o[e]={exports:{}};return t[e](s,s.exports,n),s.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[540],()=>n(90540));return e=n.O(e)},e=[],n.O=(r,t,o,s)=>{if(!t){var a=1/0;for(p=0;p<e.length;p++){t=e[p][0],o=e[p][1],s=e[p][2];for(var i=!0,u=0;u<t.length;u++)(!1&s||a>=s)&&Object.keys(n.O).every(e=>n.O[e](t[u]))?t.splice(u--,1):(i=!1,s<a&&(a=s));if(i){e.splice(p--,1);var f=o();void 0!==f&&(r=f)}}return r}s=s||0;for(var p=e.length;p>0&&e[p-1][2]>s;p--)e[p]=e[p-1];e[p]=[t,o,s]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,t)=>(n.f[t](e,r),r),[])),n.u=e=>"assets/js/"+e+".59e0d2f8.js",n.miniCssF=e=>{},n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.p="/",n.gca=function(e){return e={}[e]||e,n.p+n.u(e)},(()=>{var e={4809:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[],t=r.push.bind(r);r.push=r=>{var o=r[0],s=r[1],a=r[2];for(var i in s)n.o(s,i)&&(n.m[i]=s[i]);for(a&&a(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>n.e(540).then(r);n.x()})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[4061],{28453:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>o});var t=n(96540);const r={},i=t.createContext(r);function c(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(i.Provider,{value:s},e.children)}},53763:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>c,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"learn/concepts/peer-discovery","title":"Peer Discovery","description":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.","source":"@site/docs/learn/concepts/peer-discovery.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/peer-discovery","permalink":"/learn/concepts/peer-discovery","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-discovery.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Peer Discovery","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Transports","permalink":"/learn/concepts/transports"},"next":{"title":"Static Peers","permalink":"/learn/concepts/static-peers"}}');var r=n(74848),i=n(28453);const c={title:"Peer Discovery",hide_table_of_contents:!0,displayed_sidebar:"learn"},o=void 0,a={},l=[];function p(e){const s={a:"a",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.p,{children:"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping."}),"\n",(0,r.jsx)(s.p,{children:"Once a connection is established, the node must actively seek out additional peers to have:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["Sufficient peers in the ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#relay",children:"Relay"})," mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed."]}),"\n",(0,r.jsx)(s.li,{children:"Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections."}),"\n",(0,r.jsxs)(s.li,{children:["Peers with specific capabilities: The node seeks out peers with specific capabilities, such as ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#store",children:"Store"}),", ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#light-push",children:"Light Push"}),", or ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#filter",children:"Filter"}),". This allows for targeted interactions and enhanced functionality based on the desired capabilities."]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Waku supports multiple peer discovery mechanisms, such as:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/static-peers",children:"Configuring Static Peers"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/dns-discovery",children:"Peer Discovery via DNS"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/discv5",children:"Discv5 Ambient Peer Discovery"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/peer-exchange",children:"Peer Exchange"})}),"\n"]})]})}function d(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}}}]);

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[4061],{28453:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>o});var t=n(96540);const r={},i=t.createContext(r);function c(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(i.Provider,{value:s},e.children)}},53763:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"learn/concepts/peer-discovery","title":"Peer Discovery","description":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.","source":"@site/docs/learn/concepts/peer-discovery.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/peer-discovery","permalink":"/learn/concepts/peer-discovery","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-discovery.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Peer Discovery","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Transports","permalink":"/learn/concepts/transports"},"next":{"title":"Static Peers","permalink":"/learn/concepts/static-peers"}}');var r=n(74848),i=n(28453);const c={title:"Peer Discovery",hide_table_of_contents:!0},o=void 0,a={},l=[];function p(e){const s={a:"a",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.p,{children:"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping."}),"\n",(0,r.jsx)(s.p,{children:"Once a connection is established, the node must actively seek out additional peers to have:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["Sufficient peers in the ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#relay",children:"Relay"})," mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed."]}),"\n",(0,r.jsx)(s.li,{children:"Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections."}),"\n",(0,r.jsxs)(s.li,{children:["Peers with specific capabilities: The node seeks out peers with specific capabilities, such as ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#store",children:"Store"}),", ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#light-push",children:"Light Push"}),", or ",(0,r.jsx)(s.a,{href:"/learn/concepts/protocols#filter",children:"Filter"}),". This allows for targeted interactions and enhanced functionality based on the desired capabilities."]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Waku supports multiple peer discovery mechanisms, such as:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/static-peers",children:"Configuring Static Peers"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/dns-discovery",children:"Peer Discovery via DNS"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/discv5",children:"Discv5 Ambient Peer Discovery"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/learn/concepts/peer-exchange",children:"Peer Exchange"})}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}}}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1903],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var a=t(96540);const r={},i=a.createContext(r);function s(e){const n=a.useContext(i);return a.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(r):e.components||r:s(e.components),a.createElement(i.Provider,{value:n},e.children)}},51432:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"learn/research","title":"Research","description":"The following features are currently experimental and under research and initial implementation:","source":"@site/docs/learn/research.md","sourceDirName":"learn","slug":"/learn/research","permalink":"/learn/research","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/research.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Research","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Security Features","permalink":"/learn/security-features"},"next":{"title":"Comparing Waku and libp2p","permalink":"/learn/waku-vs-libp2p"}}');var r=t(74848),i=t(28453);const s={title:"Research",hide_table_of_contents:!0},o=void 0,c={},l=[{value:"Economic spam resistance",id:"economic-spam-resistance",level:2},{value:"Prevention of denial of service (DoS) and node incentivisation",id:"prevention-of-denial-of-service-dos-and-node-incentivisation",level:2}];function d(e){const n={a:"a",code:"code",h2:"h2",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"The following features are currently experimental and under research and initial implementation:"}),"\n",(0,r.jsx)(n.h2,{id:"economic-spam-resistance",children:"Economic spam resistance"}),"\n",(0,r.jsxs)(n.p,{children:["We aim to enable an incentivised spam protection technique to enhance ",(0,r.jsx)(n.code,{children:"Relay"})," by using ",(0,r.jsx)(n.a,{href:"https://rfc.vac.dev/vac/32/rln-v1/",children:"Rate Limit Nullifiers (RLN)"}),". In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the ",(0,r.jsx)(n.a,{href:"https://vac.dev/rln-relay",children:"RLN Relay blog post"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["We have prepared a PoC implementation of this method in JS: ",(0,r.jsx)(n.a,{href:"https://examples.waku.org/rln-js/",children:"https://examples.waku.org/rln-js/"})]}),"\n",(0,r.jsx)(n.h2,{id:"prevention-of-denial-of-service-dos-and-node-incentivisation",children:"Prevention of denial of service (DoS) and node incentivisation"}),"\n",(0,r.jsxs)(n.p,{children:["Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can be tracked from here: ",(0,r.jsx)(n.a,{href:"https://github.com/vacp2p/research/issues/148",children:"https://github.com/vacp2p/research/issues/148"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in ",(0,r.jsx)(n.code,{children:"Store"})," and ",(0,r.jsx)(n.code,{children:"Filter"})," to protect against DoS attacks."]}),"\n",(0,r.jsxs)(n.p,{children:["Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: ",(0,r.jsx)(n.a,{href:"https://vac.dev/building-privacy-protecting-infrastructure",children:"https://vac.dev/building-privacy-protecting-infrastructure"})]}),"\n",(0,r.jsxs)(n.p,{children:["You can also read more about the ongoing challenges the Waku team is working on here: ",(0,r.jsx)(n.a,{href:"https://github.com/waku-org/research",children:"https://github.com/waku-org/research"})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[8061],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>c});var o=i(96540);const r={},t=o.createContext(r);function s(e){const n=o.useContext(t);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(t.Provider,{value:n},e.children)}},58962:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>l,metadata:()=>o,toc:()=>h});const o=JSON.parse('{"id":"learn/concepts/peer-exchange","title":"Peer Exchange","description":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.","source":"@site/docs/learn/concepts/peer-exchange.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/peer-exchange","permalink":"/learn/concepts/peer-exchange","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-exchange.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Peer Exchange","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Discv5","permalink":"/learn/concepts/discv5"},"next":{"title":"Security Features","permalink":"/learn/security-features"}}');var r=i(74848),t=i(28453);function s(e){const n={li:"li",mermaid:"mermaid",ol:"ol",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.mermaid,{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's multiaddr (websocket)\n Alice--\x3e>Bob: (3) Dial\n Alice->>Bob: (4) Peer Exchange Query\n Bob--\x3e>Alice: (5) Carol's ENR, David's ENR\n Alice->>Alice: (6) Decode ENRs\n Alice->>Carol: (7) Dial\n Alice->>David: (7) Dial\n Alice--\x3e>Bob: (8) Disconnect"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"DNS Discovery protocol is executed."}),"\n",(0,r.jsx)(n.li,{children:"Alice retrieves Bob's websocket multiaddr from DNS Server."}),"\n",(0,r.jsx)(n.li,{children:"Alice dials Bob using libp2p protocols."}),"\n",(0,r.jsx)(n.li,{children:"Alice executes a Peer Exchange query to Bob."}),"\n",(0,r.jsx)(n.li,{children:"Bob returns Carol's and David's ENR to Alice."}),"\n",(0,r.jsx)(n.li,{children:"Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs."}),"\n",(0,r.jsx)(n.li,{children:"Alice dials Carol and David."}),"\n",(0,r.jsx)(n.li,{children:"Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network."}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(s,{...e})}):s(e)}const l={title:"Peer Exchange",hide_table_of_contents:!0,displayed_sidebar:"learn"},a=void 0,d={},h=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}];function u(e){const n={admonition:"admonition",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on ",(0,r.jsx)(n.code,{children:"Discv5"}),". The peer exchange protocol enables light nodes to request peers from other nodes within the network."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Peer Exchange"})," enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood."]})}),"\n",(0,r.jsx)(n.h4,{id:"pros",children:"Pros"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Low resource requirements."}),"\n",(0,r.jsxs)(n.li,{children:["Decentralised with random sampling of nodes from a global view using ",(0,r.jsx)(n.code,{children:"Discv5"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"cons",children:"Cons"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Decreased anonymity."}),"\n",(0,r.jsx)(n.li,{children:"Imposes additional load on responder nodes."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n","\n",(0,r.jsx)(c,{})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}}}]);

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[8061],{28453:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>c});var i=o(96540);const r={},t=i.createContext(r);function s(e){const n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(t.Provider,{value:n},e.children)}},58962:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>l,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"learn/concepts/peer-exchange","title":"Peer Exchange","description":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.","source":"@site/docs/learn/concepts/peer-exchange.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/peer-exchange","permalink":"/learn/concepts/peer-exchange","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-exchange.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Peer Exchange","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Discv5","permalink":"/learn/concepts/discv5"},"next":{"title":"Security Features","permalink":"/learn/security-features"}}');var r=o(74848),t=o(28453);function s(e){const n={li:"li",mermaid:"mermaid",ol:"ol",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.mermaid,{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's multiaddr (websocket)\n Alice--\x3e>Bob: (3) Dial\n Alice->>Bob: (4) Peer Exchange Query\n Bob--\x3e>Alice: (5) Carol's ENR, David's ENR\n Alice->>Alice: (6) Decode ENRs\n Alice->>Carol: (7) Dial\n Alice->>David: (7) Dial\n Alice--\x3e>Bob: (8) Disconnect"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"DNS Discovery protocol is executed."}),"\n",(0,r.jsx)(n.li,{children:"Alice retrieves Bob's websocket multiaddr from DNS Server."}),"\n",(0,r.jsx)(n.li,{children:"Alice dials Bob using libp2p protocols."}),"\n",(0,r.jsx)(n.li,{children:"Alice executes a Peer Exchange query to Bob."}),"\n",(0,r.jsx)(n.li,{children:"Bob returns Carol's and David's ENR to Alice."}),"\n",(0,r.jsx)(n.li,{children:"Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs."}),"\n",(0,r.jsx)(n.li,{children:"Alice dials Carol and David."}),"\n",(0,r.jsx)(n.li,{children:"Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network."}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(s,{...e})}):s(e)}const l={title:"Peer Exchange",hide_table_of_contents:!0},a=void 0,d={},h=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}];function u(e){const n={admonition:"admonition",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on ",(0,r.jsx)(n.code,{children:"Discv5"}),". The peer exchange protocol enables light nodes to request peers from other nodes within the network."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Peer Exchange"})," enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood."]})}),"\n",(0,r.jsx)(n.h4,{id:"pros",children:"Pros"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Low resource requirements."}),"\n",(0,r.jsxs)(n.li,{children:["Decentralised with random sampling of nodes from a global view using ",(0,r.jsx)(n.code,{children:"Discv5"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"cons",children:"Cons"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Decreased anonymity."}),"\n",(0,r.jsx)(n.li,{children:"Imposes additional load on responder nodes."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n","\n",(0,r.jsx)(c,{})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[4704],{39018:(e,n,t)=>{var r=t(98941);t.o(r,"AccordionItem")&&t.d(n,{AccordionItem:function(){return r.AccordionItem}})},92264:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"guides/nwaku/upgrade-instructions","title":"Upgrade Instructions","description":"If you are currently using Nwaku, running an old version and want to upgrade your node, please follow the below migration instructions for each target release newer than your current running version in ascending order.","source":"@site/docs/guides/nwaku/upgrade-instructions.md","sourceDirName":"guides/nwaku","slug":"/guides/nwaku/upgrade-instructions","permalink":"/guides/nwaku/upgrade-instructions","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/upgrade-instructions.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Upgrade Instructions","hide_table_of_contents":true,"sidebar_label":"Upgrade Instructions"},"sidebar":"guides","previous":{"title":"Frequently Asked Questions","permalink":"/guides/nwaku/faq"},"next":{"title":"JavaScript Waku SDK","permalink":"/guides/js-waku/"}}');var i=t(74848),s=t(28453),o=t(39018);const a={title:"Upgrade Instructions",hide_table_of_contents:!0,sidebar_label:"Upgrade Instructions"},d=void 0,c={},u=[{value:"Target Releases",id:"target-releases",level:2}];function l(e){const n={code:"code",h2:"h2",li:"li",ol:"ol",p:"p",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"If you are currently using Nwaku, running an old version and want to upgrade your node, please follow the below migration instructions for each target release newer than your current running version in ascending order."}),"\n",(0,i.jsx)(n.p,{children:"For example, if you are interested in the version v0.32.0 and are currently running v0.30.0, follow the instructions for v0.31.0 and then the ones for v0.32.0"}),"\n",(0,i.jsx)(n.h2,{id:"target-releases",children:"Target Releases"}),"\n",(0,i.jsxs)(o.AccordionItem,{title:"v0.32.0",children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"--protected-topic"})," CLI config was deprecated and is replaced by the new ",(0,i.jsx)(n.code,{children:"--protected-shard"})," configuration. Instead of configuring ",(0,i.jsx)(n.code,{children:"topic:public_key"})," you will now need to configure ",(0,i.jsx)(n.code,{children:"shard:public_key"}),(0,i.jsx)("br",{}),(0,i.jsx)("br",{})]}),(0,i.jsxs)(n.p,{children:["For example, if you used to run your node with ",(0,i.jsx)(n.code,{children:'--protected-topic="waku/2/rs/3/4:your_public_key"'})," you will need to replace this configuration for ",(0,i.jsx)(n.code,{children:'--protected-shard="4:your_public_key"'})]})]}),"\n",(0,i.jsxs)(o.AccordionItem,{title:"v0.31.0",children:[(0,i.jsxs)(n.p,{children:["Named sharding was deprecated in this version. This means that pubsub topics will only be supported if they comply with the static sharding format: ",(0,i.jsx)("code",{children:"/waku/2/rs/<CLUSTER_ID>/<SHARD_ID>"}),(0,i.jsx)("br",{}),(0,i.jsx)("br",{})]}),(0,i.jsx)(n.p,{children:"In order to migrate your existing application, you need to:"}),(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Make sure that your clients are sending messages to pubsub topics in the required format. Check that in your interactions with Nwaku's REST API or when using ",(0,i.jsx)(n.code,{children:"js-waku"}),", the configured pubsub topics follow the static sharding format defined above."]}),"\n",(0,i.jsxs)(n.li,{children:["When running a node with the ",(0,i.jsx)(n.code,{children:"--pubsub-topic"})," CLI flag, the values provided should comply with the static sharding format."]}),"\n",(0,i.jsx)(n.li,{children:"If your application relies on nodes or clients that may not be updated immediately, keep your node on an older version while subscribing to both the current pubsub topic and the new pubsub topic that will comply with the static sharding format. In that case, you can keep backward compatibility for a migration period."}),"\n"]})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[2166],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var s=t(96540);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}},66300:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"learn/concepts/static-peers","title":"Static Peers","description":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.","source":"@site/docs/learn/concepts/static-peers.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/static-peers","permalink":"/learn/concepts/static-peers","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/static-peers.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Static Peers","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Peer Discovery","permalink":"/learn/concepts/peer-discovery"},"next":{"title":"DNS Discovery","permalink":"/learn/concepts/dns-discovery"}}');var r=t(74848),i=t(28453);function o(e){const n={mermaid:"mermaid",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.mermaid,{value:"sequenceDiagram\nAlice->>Bob: Connect to Bob (static peer details)\nAlice->>Carol: Connect to Carol (static peer details)"}),"\n",(0,r.jsx)(n.p,{children:"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node."})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}const a={title:"Static Peers",hide_table_of_contents:!0},l=void 0,d={},p=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}];function u(e){const n={a:"a",h2:"h2",h4:"h4",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or ",(0,r.jsx)(n.a,{href:"/#run-a-waku-node",children:"run a node"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"pros",children:"Pros"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Low latency."}),"\n",(0,r.jsx)(n.li,{children:"Low resource requirements."}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"cons",children:"Cons"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Vulnerable to censorship: Node IPs can be blocked or restricted."}),"\n",(0,r.jsx)(n.li,{children:"Limited scalability: The number of nodes is fixed and cannot easily be expanded."}),"\n",(0,r.jsx)(n.li,{children:"Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n","\n",(0,r.jsx)(c,{})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[2166],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var s=t(96540);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}},66300:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"learn/concepts/static-peers","title":"Static Peers","description":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.","source":"@site/docs/learn/concepts/static-peers.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/static-peers","permalink":"/learn/concepts/static-peers","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/static-peers.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Static Peers","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Peer Discovery","permalink":"/learn/concepts/peer-discovery"},"next":{"title":"DNS Discovery","permalink":"/learn/concepts/dns-discovery"}}');var r=t(74848),i=t(28453);function o(e){const n={mermaid:"mermaid",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.mermaid,{value:"sequenceDiagram\nAlice->>Bob: Connect to Bob (static peer details)\nAlice->>Carol: Connect to Carol (static peer details)"}),"\n",(0,r.jsx)(n.p,{children:"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node."})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}const a={title:"Static Peers",hide_table_of_contents:!0,displayed_sidebar:"learn"},l=void 0,d={},p=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}];function u(e){const n={a:"a",h2:"h2",h4:"h4",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or ",(0,r.jsx)(n.a,{href:"/run-node",children:"run a node"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"pros",children:"Pros"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Low latency."}),"\n",(0,r.jsx)(n.li,{children:"Low resource requirements."}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"cons",children:"Cons"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Vulnerable to censorship: Node IPs can be blocked or restricted."}),"\n",(0,r.jsx)(n.li,{children:"Limited scalability: The number of nodes is fixed and cannot easily be expanded."}),"\n",(0,r.jsx)(n.li,{children:"Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n","\n",(0,r.jsx)(c,{})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}}}]);

View File

@ -1 +0,0 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[7460],{28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(96540);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}},37252:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"learn/concepts/transports","title":"Transports","description":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.","source":"@site/docs/learn/concepts/transports.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/transports","permalink":"/learn/concepts/transports","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/transports.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Transports","hide_table_of_contents":true},"sidebar":"learn","previous":{"title":"Network Domains","permalink":"/learn/concepts/network-domains"},"next":{"title":"Peer Discovery","permalink":"/learn/concepts/peer-discovery"}}');var s=t(74848),r=t(28453);const i={title:"Transports",hide_table_of_contents:!0},a=void 0,c={},l=[];function d(e){const n={a:"a",admonition:"admonition",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery."}),"\n",(0,s.jsx)(n.p,{children:"Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"TCP"}),": By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Secure WebSocket"}),": In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely."]}),"\n",(0,s.jsxs)(n.li,{children:["Other protocols like ",(0,s.jsx)(n.a,{href:"https://github.com/waku-org/js-waku/issues/20",children:"WebRTC"}),", ",(0,s.jsx)(n.a,{href:"https://github.com/waku-org/js-waku/issues/697",children:"WebTransport"}),", and QUIC have been researched and studied for potential integration."]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Waku ensures compatibility and improved communication capabilities by following these recommended transports."})})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[7460],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var s=t(96540);const o={},r=s.createContext(o);function a(e){const n=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(r.Provider,{value:n},e.children)}},37252:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"learn/concepts/transports","title":"Transports","description":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.","source":"@site/docs/learn/concepts/transports.md","sourceDirName":"learn/concepts","slug":"/learn/concepts/transports","permalink":"/learn/concepts/transports","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/transports.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Transports","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Network Domains","permalink":"/learn/concepts/network-domains"},"next":{"title":"Peer Discovery","permalink":"/learn/concepts/peer-discovery"}}');var o=t(74848),r=t(28453);const a={title:"Transports",hide_table_of_contents:!0,displayed_sidebar:"learn"},i=void 0,c={},l=[];function d(e){const n={a:"a",admonition:"admonition",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery."}),"\n",(0,o.jsx)(n.p,{children:"Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"TCP"}),": By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Secure WebSocket"}),": In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely."]}),"\n",(0,o.jsxs)(n.li,{children:["Other protocols like ",(0,o.jsx)(n.a,{href:"https://github.com/waku-org/js-waku/issues/20",children:"WebRTC"}),", ",(0,o.jsx)(n.a,{href:"https://github.com/waku-org/js-waku/issues/697",children:"WebTransport"}),", and QUIC have been researched and studied for potential integration."]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsx)(n.p,{children:"Waku ensures compatibility and improved communication capabilities by following these recommended transports."})})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More