From c0622617893e792c71839c0b94669887ddbb30c6 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sat, 20 May 2023 00:35:51 +0100 Subject: [PATCH 01/19] update docs settings --- docs/overview/reference/security-features.md | 2 +- docs/overview/reference/waku-vs-libp2p.md | 2 +- docs/overview/what-is-waku.md | 4 +- docusaurus.config.js | 278 +++++++++---------- sidebars.js | 79 +++--- 5 files changed, 180 insertions(+), 185 deletions(-) diff --git a/docs/overview/reference/security-features.md b/docs/overview/reference/security-features.md index ae7d623..913c00f 100644 --- a/docs/overview/reference/security-features.md +++ b/docs/overview/reference/security-features.md @@ -21,7 +21,7 @@ Anonymity means an adversary cannot connect an actor to their actions or data. T The spam protection feature in `Waku Relay` ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the [scoring mechanism](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures) of `GossipSub v1.1`. Peers assign scores to their connections based on their behavior and remove peers with low scores. -Ongoing research is being conducted, including developing [Rate Limiting Nullifiers (RLN)](overview/concepts/protocols#waku-rln-relay), which can be explored further at: . +Ongoing research is being conducted, including developing [Rate Limiting Nullifiers (RLN)](/overview/concepts/protocols#waku-rln-relay), which can be explored further at: . ## [Data Confidentiality, Integrity, and Authenticity](https://rfc.vac.dev/spec/10/#data-confidentiality-integrity-and-authenticity) diff --git a/docs/overview/reference/waku-vs-libp2p.md b/docs/overview/reference/waku-vs-libp2p.md index e993f5f..7295a82 100644 --- a/docs/overview/reference/waku-vs-libp2p.md +++ b/docs/overview/reference/waku-vs-libp2p.md @@ -1,5 +1,5 @@ --- -title: Waku vs. libp2p - What's the Difference? +title: Comparing Waku and libp2p --- 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. diff --git a/docs/overview/what-is-waku.md b/docs/overview/what-is-waku.md index b022b47..4b4f37a 100644 --- a/docs/overview/what-is-waku.md +++ b/docs/overview/what-is-waku.md @@ -33,7 +33,7 @@ Waku can cater to applications that require privacy guarantees, such as: - Pseudonymity and not being tied to any Personally Identifiable Information (PII). - Metadata protection in transit. -- Various forms of [unlinkability](overview/reference/security-features#anonymityunlinkability). +- Various forms of [unlinkability](/overview/reference/security-features#anonymityunlinkability). ### Modular Design @@ -47,7 +47,7 @@ These options are part of the [Anonymity Trilemma](https://eprint.iacr.org/2017/ ## How Does Waku Work? -The [Waku Relay](overview/concepts/protocols#waku-relay) protocol is the foundation of the Waku network, which employs a Pub/Sub architecture built on the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). Additionally, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to: +The [Waku Relay](/overview/concepts/protocols#waku-relay) protocol is the foundation of the Waku network, which employs a Pub/Sub architecture built on the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). Additionally, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to: 1. Facilitating the retrieval of historical messages for primarily offline devices. 2. Providing solutions for encrypted communication, such as symmetric encryption, ECIES/asymmetric encryption, and noise handshake-based key turns. diff --git a/docusaurus.config.js b/docusaurus.config.js index 5df8e75..cdf104a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -2,148 +2,144 @@ // Note: type annotations allow type checking and IDEs autocompletion require("dotenv").config(); -/** @type {import('@docusaurus/types').Config} */ +/** @type {import("@docusaurus/types").Config} */ const config = { - title: "Waku Documentation Portal", - url: "https://waku.guide/", - baseUrl: "/", - onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", + title: "Waku Documentation Portal", + url: "https://waku.guide/", + baseUrl: "/", + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", - // Even if you don't use internalization, you can use this field to set useful - // metadata like html lang. For example, if your site is Chinese, you may want - // to replace "en" with "zh-Hans". - i18n: { - defaultLocale: "en", - locales: ["en"], - }, - - presets: [ - [ - "@acid-info/logos-docusaurus-preset", - /** @type {import('@acid-info/logos-docusaurus-preset').PluginOptions} */ - ({ - businessUnit: "Waku", - customSiteConfig: true, - docs: { - routeBasePath: "/", - sidebarPath: require.resolve("./sidebars.js"), - editUrl: "https://github.com/waku-org/waku.guide/tree/develop/", - }, - theme: { - name: "docusaurus-default", - options: { - customCss: [require.resolve("./src/css/custom.scss")], - }, - }, - }), - ], - ], - staticDirectories: ["static"], - themeConfig: - /** @type {import('@acid-info/logos-docusaurus-preset').ThemeConfig} */ - ({ - navbar: { - title: "Waku", - logo: { - srcDark: "logo_white.svg", - }, - items: [ - { - type: 'docSidebar', - position: 'left', - sidebarId: 'main', - label: 'Getting Started', - }, - ], - }, - announcementBar: { - content: - "While Waku is still in development and needs to prepare for extensive adoption, it is already being used by Status, XMTP and Railgun. Join our Discord Community to stay updated on our progress.", - backgroundColor: "#EBEDF0", - textColor: "#1B1B1D", - isCloseable: true, - }, - footer: { - links: [ - { - title: "Legal", - items: [ - { - href: "https://waku.org/terms-of-use", - label: "Terms of Use", - }, - { - href: "https://waku.org/privacy-policy", - label: "Privacy Policy", - }, - ], - }, - { - title: "Community", - items: [ - { - href: "https://forum.vac.dev/", - label: "Discourse", - }, - { - href: "https://discord.gg/Nrac59MfSX", - label: "Discord", - }, - { - href: "https://twitter.com/waku_org", - label: "Twitter", - }, - { - href: "https://t.me/waku_org", - label: "Telegram", - }, - ], - }, - { - title: "Resources", - items: [ - { - href: "https://github.com/waku-org", - label: "GitHub", - }, - { - href: "https://vac.dev/research", - label: "Blog", - }, - { - href: "https://vac.dev/", - label: "Vac", - }, - { - href: "https://rfc.vac.dev/", - label: "Vac RFCs", - }, - ], - }, - ], - }, - colorMode: { - defaultMode: "light", - disableSwitch: false, - respectPrefersColorScheme: false, - }, - }), - - plugins: [ - [ - "@easyops-cn/docusaurus-search-local", - { - hashed: true, - indexDocs: true, - indexPages: true, - }, - ], - ], - themes: ["@docusaurus/theme-mermaid"], - markdown: { - mermaid: true, - }, + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: "en", + locales: ["en"] + }, + presets: [ + [ + "@acid-info/logos-docusaurus-preset", + /** @type {import("@acid-info/logos-docusaurus-preset").PluginOptions} */ + ({ + businessUnit: "Waku", + customSiteConfig: true, + docs: { + routeBasePath: "/", + sidebarPath: require.resolve("./sidebars.js"), + editUrl: "https://github.com/waku-org/waku.guide/tree/develop/" + }, + theme: { + name: "docusaurus-default", + options: { + customCss: [require.resolve("./src/css/custom.scss")] + } + } + }) + ] + ], + staticDirectories: ["static"], + themeConfig: ({ + docs: { + sidebar: { + hideable: false + } + }, + navbar: { + title: "Waku", + logo: { + srcDark: "logo_white.svg" + }, + items: [ + { + type: "docSidebar", + position: "left", + sidebarId: "main", + label: "Getting Started" + } + ] + }, + announcementBar: { + content: "While Waku is still in development and needs to prepare for extensive adoption, it is already being used by Status, XMTP, and Railgun. Join our Discord Community to stay updated on our progress.", + backgroundColor: "#EBEDF0", + textColor: "#1B1B1D", + isCloseable: true + }, + footer: { + links: [{ + title: "Waku Clients", + items: [] + }, + { + title: "Community", + items: [{ + href: "https://forum.vac.dev/", + label: "Discourse" + }, + { + href: "https://discord.gg/Nrac59MfSX", + label: "Discord" + }, + { + href: "https://twitter.com/waku_org", + label: "Twitter" + }, + { + href: "https://t.me/waku_org", + label: "Telegram" + } + ] + }, + { + title: "Resources", + items: [{ + href: "https://github.com/waku-org", + label: "GitHub" + }, + { + href: "https://vac.dev/research", + label: "Blog" + }, + { + href: "https://rfc.vac.dev/", + label: "Vac RFCs" + } + ] + }, + { + title: "Legal", + items: [{ + href: "https://waku.org/terms-of-use", + label: "Terms of Use" + }, + { + href: "https://waku.org/privacy-policy", + label: "Privacy Policy" + } + ] + } + ] + }, + colorMode: { + defaultMode: "light", + disableSwitch: false, + respectPrefersColorScheme: false + } + }), + plugins: [ + [ + "@easyops-cn/docusaurus-search-local", + { + hashed: true, + indexDocs: true, + indexPages: true + } + ] + ], + themes: ["@docusaurus/theme-mermaid"], + markdown: { + mermaid: true + } }; -module.exports = config; +module.exports = config; \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index f5376f0..7be5de2 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,45 +1,44 @@ // @ts-check -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ - +/** @type {import("@docusaurus/plugin-content-docs").SidebarsConfig} */ const sidebars = { - main: [ - "overview/what-is-waku", - "overview/history", - "overview/why-waku", - "overview/use-cases", - "overview/who-is-using-waku", - "overview/implementations", - { - type: "category", - label: "Waku Concepts", - collapsed: false, - collapsible: true, - items: [ - "overview/concepts/protocols", - "overview/concepts/network-domains", - "overview/concepts/node-discovery", - "overview/concepts/content-topics", - "overview/concepts/transports", - ], - }, - { - type: "category", - label: "Reference", - collapsed: true, - collapsible: true, - items: [ - "overview/reference/security-features", - "overview/reference/research-in-progress", - "overview/reference/waku-vs-libp2p", - ], - }, - ], - browser: [ - "browser/introduction", - "browser/quick-start", - "browser/build-chat-app", - ] + main: [ + "overview/what-is-waku", + "overview/history", + "overview/why-waku", + "overview/use-cases", + "overview/who-is-using-waku", + "overview/implementations", + { + type: "category", + label: "Waku Concepts", + collapsed: false, + collapsible: true, + items: [ + "overview/concepts/protocols", + "overview/concepts/network-domains", + "overview/concepts/node-discovery", + "overview/concepts/content-topics", + "overview/concepts/transports" + ] + }, + { + type: "category", + label: "Reference", + collapsed: false, + collapsible: true, + items: [ + "overview/reference/security-features", + "overview/reference/research-in-progress", + "overview/reference/waku-vs-libp2p" + ] + } + ], + js: [ + "browser/introduction", + "browser/quick-start", + "browser/build-chat-app" + ] }; -module.exports = sidebars; +module.exports = sidebars; \ No newline at end of file From 01078c9921c4479a3bcb9b5520516a1c6edd1774 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sat, 20 May 2023 01:15:16 +0100 Subject: [PATCH 02/19] create js-waku dir --- docs/{browser => clients/js-waku}/build-chat-app.mdx | 0 docs/{browser => clients/js-waku}/introduction.mdx | 0 docs/{browser => clients/js-waku}/quick-start.mdx | 0 docs/overview/{implementations.md => clients.md} | 4 ++-- docusaurus.config.js | 11 +++++++++++ sidebars.js | 6 ++---- 6 files changed, 15 insertions(+), 6 deletions(-) rename docs/{browser => clients/js-waku}/build-chat-app.mdx (100%) rename docs/{browser => clients/js-waku}/introduction.mdx (100%) rename docs/{browser => clients/js-waku}/quick-start.mdx (100%) rename docs/overview/{implementations.md => clients.md} (92%) diff --git a/docs/browser/build-chat-app.mdx b/docs/clients/js-waku/build-chat-app.mdx similarity index 100% rename from docs/browser/build-chat-app.mdx rename to docs/clients/js-waku/build-chat-app.mdx diff --git a/docs/browser/introduction.mdx b/docs/clients/js-waku/introduction.mdx similarity index 100% rename from docs/browser/introduction.mdx rename to docs/clients/js-waku/introduction.mdx diff --git a/docs/browser/quick-start.mdx b/docs/clients/js-waku/quick-start.mdx similarity index 100% rename from docs/browser/quick-start.mdx rename to docs/clients/js-waku/quick-start.mdx diff --git a/docs/overview/implementations.md b/docs/overview/clients.md similarity index 92% rename from docs/overview/implementations.md rename to docs/overview/clients.md index a0aa58b..ccae4ac 100644 --- a/docs/overview/implementations.md +++ b/docs/overview/clients.md @@ -1,8 +1,8 @@ --- -title: Waku Implementations +title: Waku Clients --- -Waku has been implemented in multiple programming languages to address various use cases. The Waku team builds and maintains each implementation, ensuring that updates are provided automatically. +Waku has been implemented in multiple programming languages to address various use cases. The Waku team builds and maintains each client, ensuring that updates are provided automatically. ### [nwaku](https://github.com/waku-org/nwaku) diff --git a/docusaurus.config.js b/docusaurus.config.js index cdf104a..1e1b263 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -56,6 +56,17 @@ const config = { position: "left", sidebarId: "main", label: "Getting Started" + }, + { + type: "dropdown", + label: "Waku Clients", + position: "left", + items: [ + { + label: "JS-Waku", + to: "/clients/js-waku" + } + ] } ] }, diff --git a/sidebars.js b/sidebars.js index 7be5de2..f64cb3c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -8,7 +8,7 @@ const sidebars = { "overview/why-waku", "overview/use-cases", "overview/who-is-using-waku", - "overview/implementations", + "overview/clients", { type: "category", label: "Waku Concepts", @@ -35,9 +35,7 @@ const sidebars = { } ], js: [ - "browser/introduction", - "browser/quick-start", - "browser/build-chat-app" + "clients/js-waku/introduction" ] }; From 6544c9a8d9f77627b2bb75df3ef19bf38363cee0 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sat, 20 May 2023 05:23:47 +0100 Subject: [PATCH 03/19] navbar reorg --- .../js-waku/{introduction.mdx => index.md} | 1 + docs/overview/clients.md | 2 +- docs/overview/{what-is-waku.md => index.md} | 0 docs/overview/reference/waku-vs-libp2p.md | 4 +- docs/overview/who-is-using-waku.md | 12 +++--- docusaurus.config.js | 39 +++++++++++++++---- sidebars.js | 6 +-- 7 files changed, 43 insertions(+), 21 deletions(-) rename docs/clients/js-waku/{introduction.mdx => index.md} (98%) rename docs/overview/{what-is-waku.md => index.md} (100%) diff --git a/docs/clients/js-waku/introduction.mdx b/docs/clients/js-waku/index.md similarity index 98% rename from docs/clients/js-waku/introduction.mdx rename to docs/clients/js-waku/index.md index 8d7ea6e..f4b182e 100644 --- a/docs/clients/js-waku/introduction.mdx +++ b/docs/clients/js-waku/index.md @@ -1,5 +1,6 @@ --- title: Introduction +slug: /clients/js-waku --- # JS-Waku Documentation diff --git a/docs/overview/clients.md b/docs/overview/clients.md index ccae4ac..d12d4c8 100644 --- a/docs/overview/clients.md +++ b/docs/overview/clients.md @@ -8,7 +8,7 @@ Waku has been implemented in multiple programming languages to address various u The Nim implementation of the Waku protocol is the reference implementation recommended for deploying a node in the cloud or at home. -### [js-waku](https://github.com/waku-org/js-waku/) +### [js-waku](/clients/js-waku) The JavaScript/TypeScript implementation of the Waku protocol designed for use in browser environments. diff --git a/docs/overview/what-is-waku.md b/docs/overview/index.md similarity index 100% rename from docs/overview/what-is-waku.md rename to docs/overview/index.md diff --git a/docs/overview/reference/waku-vs-libp2p.md b/docs/overview/reference/waku-vs-libp2p.md index 7295a82..dd9734e 100644 --- a/docs/overview/reference/waku-vs-libp2p.md +++ b/docs/overview/reference/waku-vs-libp2p.md @@ -6,9 +6,7 @@ Since Waku is built on top of libp2p, they share a lot of concepts and terminolo ## Waku as a Service Network -Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. - -However, you are encouraged to [run your node](https://github.com/waku-org/nwaku/tree/master/docs/operators) to support and decentralize the network. +Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. However, you are encouraged to [run your node](https://github.com/waku-org/nwaku/tree/master/docs/operators) to support and decentralize the network. ## Waku as a Keyturn Solution diff --git a/docs/overview/who-is-using-waku.md b/docs/overview/who-is-using-waku.md index 658bda9..3ccbba8 100644 --- a/docs/overview/who-is-using-waku.md +++ b/docs/overview/who-is-using-waku.md @@ -2,14 +2,14 @@ title: Who is Using Waku? --- -### Status +### [Status](https://status.im/) -[Status](https://status.im/) is a secure messaging app, crypto wallet, and Web3 browser built with state-of-the-art technology. +Status is a secure messaging app, crypto wallet, and Web3 browser built with state-of-the-art technology. -### XMTP +### [XMTP](https://xmtp.org/) -[XMTP](https://xmtp.org/) uses Waku to enable secure Web3 messaging in their open protocol and network. +XMTP uses Waku to enable secure Web3 messaging in their open protocol and network. -### RAILGUN +### [RAILGUN](https://railgun.org/) -[RAILGUN](https://railgun.org/) uses Waku to offer private ETH gas payments to users, ensuring anonymity and privacy for their stablecoin and token transactions. +RAILGUN uses Waku to offer private ETH gas payments to users, ensuring anonymity and privacy for their stablecoin and token transactions. diff --git a/docusaurus.config.js b/docusaurus.config.js index 1e1b263..f18f684 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -20,7 +20,6 @@ const config = { presets: [ [ "@acid-info/logos-docusaurus-preset", - /** @type {import("@acid-info/logos-docusaurus-preset").PluginOptions} */ ({ businessUnit: "Waku", customSiteConfig: true, @@ -53,20 +52,34 @@ const config = { items: [ { type: "docSidebar", - position: "left", + position: "right", sidebarId: "main", label: "Getting Started" }, { type: "dropdown", label: "Waku Clients", - position: "left", + position: "right", items: [ { - label: "JS-Waku", + label: "Overview", + to: "/overview/clients" + }, + { + label: "JS Waku", to: "/clients/js-waku" } ] + }, + { + to: "/powered-by-waku", + label: "Powered by Waku", + position: "right" + }, + { + to: "/community", + label: "Community", + position: "right" } ] }, @@ -77,10 +90,20 @@ const config = { isCloseable: true }, footer: { - links: [{ - title: "Waku Clients", - items: [] - }, + links: [ + { + title: "Waku Clients", + items: [ + { + to: "/overview/clients", + label: "Overview" + }, + { + to: "/clients/js-waku", + label: "JS Waku" + } + ] + }, { title: "Community", items: [{ diff --git a/sidebars.js b/sidebars.js index f64cb3c..27b7230 100644 --- a/sidebars.js +++ b/sidebars.js @@ -3,12 +3,12 @@ /** @type {import("@docusaurus/plugin-content-docs").SidebarsConfig} */ const sidebars = { main: [ - "overview/what-is-waku", + "overview/index", "overview/history", "overview/why-waku", "overview/use-cases", - "overview/who-is-using-waku", "overview/clients", + "overview/who-is-using-waku", { type: "category", label: "Waku Concepts", @@ -35,7 +35,7 @@ const sidebars = { } ], js: [ - "clients/js-waku/introduction" + "clients/js-waku/index" ] }; From f06b84a4f239c7c8452601d052f571cbf9e2c479 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sat, 20 May 2023 23:09:10 +0100 Subject: [PATCH 04/19] add powered by waku page --- docs/overview/who-is-using-waku.md | 15 --------- docs/powered-by-waku.mdx | 37 ++++++++++++++++++++++ docusaurus.config.js | 35 ++++++++++++--------- sidebars.js | 1 - src/components/PoweredByCard.js | 48 +++++++++++++++++++++++++++++ static/custom.css | 23 ++++++++++++++ static/{ => img}/logo_white.svg | 0 static/img/railgun-logo.png | Bin 0 -> 3239 bytes static/img/status-logo.svg | 10 ++++++ static/img/xmtp-logo.svg | 7 +++++ 10 files changed, 146 insertions(+), 30 deletions(-) delete mode 100644 docs/overview/who-is-using-waku.md create mode 100644 docs/powered-by-waku.mdx create mode 100644 src/components/PoweredByCard.js create mode 100644 static/custom.css rename static/{ => img}/logo_white.svg (100%) create mode 100644 static/img/railgun-logo.png create mode 100644 static/img/status-logo.svg create mode 100644 static/img/xmtp-logo.svg diff --git a/docs/overview/who-is-using-waku.md b/docs/overview/who-is-using-waku.md deleted file mode 100644 index 3ccbba8..0000000 --- a/docs/overview/who-is-using-waku.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Who is Using Waku? ---- - -### [Status](https://status.im/) - -Status is a secure messaging app, crypto wallet, and Web3 browser built with state-of-the-art technology. - -### [XMTP](https://xmtp.org/) - -XMTP uses Waku to enable secure Web3 messaging in their open protocol and network. - -### [RAILGUN](https://railgun.org/) - -RAILGUN uses Waku to offer private ETH gas payments to users, ensuring anonymity and privacy for their stablecoin and token transactions. diff --git a/docs/powered-by-waku.mdx b/docs/powered-by-waku.mdx new file mode 100644 index 0000000..f37b87b --- /dev/null +++ b/docs/powered-by-waku.mdx @@ -0,0 +1,37 @@ +--- +title: Powered by Waku +custom_edit_url: null +hide_table_of_contents: true +--- + +Leap into the future with Waku! Revolutionize communication, collaboration, and connectivity. Join us and create something extraordinary! + + + +```mdx-code-block +import PoweredByCard from "@site/src/components/PoweredByCard"; + +
+ + Status is a secure messaging app, crypto wallet, and Web3 browser built with state-of-the-art technology. + + + XMTP uses the Waku network to enable secure Web3 messaging in their open protocol and network. + + + RAILGUN uses Waku to offer private gas payments to users, ensuring anonymity and privacy for their transactions. + +
+``` \ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js index f18f684..9e29559 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -47,8 +47,9 @@ const config = { navbar: { title: "Waku", logo: { - srcDark: "logo_white.svg" + srcDark: "img/logo_white.svg" }, + hideOnScroll: true, items: [ { type: "docSidebar", @@ -84,7 +85,7 @@ const config = { ] }, announcementBar: { - content: "While Waku is still in development and needs to prepare for extensive adoption, it is already being used by Status, XMTP, and Railgun. Join our Discord Community to stay updated on our progress.", + content: "While Waku is still in development and needs to prepare for extensive adoption, it is already powering various applications. Join our Discord Community to stay updated on our progress.", backgroundColor: "#EBEDF0", textColor: "#1B1B1D", isCloseable: true @@ -106,10 +107,11 @@ const config = { }, { title: "Community", - items: [{ - href: "https://forum.vac.dev/", - label: "Discourse" - }, + items: [ + { + href: "https://forum.vac.dev/", + label: "Discourse" + }, { href: "https://discord.gg/Nrac59MfSX", label: "Discord" @@ -126,10 +128,11 @@ const config = { }, { title: "Resources", - items: [{ - href: "https://github.com/waku-org", - label: "GitHub" - }, + items: [ + { + href: "https://github.com/waku-org", + label: "GitHub" + }, { href: "https://vac.dev/research", label: "Blog" @@ -142,13 +145,17 @@ const config = { }, { title: "Legal", - items: [{ - href: "https://waku.org/terms-of-use", - label: "Terms of Use" - }, + items: [ + { + href: "https://waku.org/terms-of-use", + label: "Terms of Use" + }, { href: "https://waku.org/privacy-policy", label: "Privacy Policy" + }, + { + html: "" } ] } diff --git a/sidebars.js b/sidebars.js index 27b7230..d5f1176 100644 --- a/sidebars.js +++ b/sidebars.js @@ -8,7 +8,6 @@ const sidebars = { "overview/why-waku", "overview/use-cases", "overview/clients", - "overview/who-is-using-waku", { type: "category", label: "Waku Concepts", diff --git a/src/components/PoweredByCard.js b/src/components/PoweredByCard.js new file mode 100644 index 0000000..3e62362 --- /dev/null +++ b/src/components/PoweredByCard.js @@ -0,0 +1,48 @@ +import React from "react"; + +const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => ( +
+
+ {logoAlt} +
+

{children}

+ + + +
+); + +export default PoweredByCard; diff --git a/static/custom.css b/static/custom.css new file mode 100644 index 0000000..abcbff6 --- /dev/null +++ b/static/custom.css @@ -0,0 +1,23 @@ +.powered-by-card-container { + display: grid; + gap: 2em; + justify-content: center; +} + +@media (max-width: 767px) { + .powered-by-card-container { + grid-template-columns: 1fr; + } +} + +@media (min-width: 768px) and (max-width: 1023px) { + .powered-by-card-container { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .powered-by-card-container { + grid-template-columns: repeat(3, 1fr); + } +} \ No newline at end of file diff --git a/static/logo_white.svg b/static/img/logo_white.svg similarity index 100% rename from static/logo_white.svg rename to static/img/logo_white.svg diff --git a/static/img/railgun-logo.png b/static/img/railgun-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..62ed16319666d711a09990ee585b00855fbe792b GIT binary patch literal 3239 zcmV;Y3|RAtP)003490{{R3>_PHj0001xP)t-s|Ns97 z0RR910NdN!;NRcP&CU4u_~78+(a_LAKR*rv0j#U5yt=x-y}gl z>w4-c5QY;HlUnPsTD59DSC_5s`@g%bU51$)7>3kDTu;7Vd+j12@CKM+0LQ6RsZym% zl`2)LRH;&>N|h>As#NI)nulun;d~bS`U!!5&2F6Ix1N8MM;9arqo?@4FEMBwzO-JC zi%DxU^yfwy_oD*&WP!%Au4i<1(d+4IvF}IEH7oD$^(LOx>MVDw#?vpKu(>`#e9@Ja zrJ9hUixJA#5Psf*CgpEl>+pOrSZxfxg=SP9w>Kn`wWD&27MWc`rrXiAxN)O|-H>0} zTc|5^`aHb6JHc37t^zs%ok>hcB$<39zz;tA1{vykBY7)uXGMSDfsSjqt z`prHmp1P>6vUP!}nV%)E6Fot^8vnQ^OQ$7CCcFtr;Uq?ptO+q;w$DrSbJ3wmit^Tx z1ce|!NSV+=l733R%H36dKpmWne|#^J-Uq5`5rYjYhr&p5MVFP(PLj?jJyZ2TX!eEb zz&MZlkQ7YP{Sm5)2`7)@NOHxLlh9I<&INN{a^+t`jUv9xe|-m%W(xwO3ra_Z=};s| zOX3ynC&?A04Wd*lRt0mzU*ChIV5_SVvC~f*3na-EM@GWpNeW^jNs9kT2vZI&ihbVV z-SF3UAgTYQ|F-C<%8!a9$rb9kT6rY(_YK-(~fJCM{)em}`- zV6?kaG)ZfvXRADt#)E{rNDb0{Jl}kw6hfF!l@{?Da1EQee3Cw5edxslvN*PPgG5aU zS7$sFN)q8vDUYOCojo!7ae<8|9cZL_-|%VvGEoECZ#k~gNdoWJ4@ismXha`QzGEnz zG_&r4Nm72)_LAf{n;x{1sTto$jtU*K-_{Nw#ja%aYBC`(a$NEB<1*KHA&81mQI+h=XbcpPa zCAol9G)b=b%AB;?O%k{l4HsdbquSg@EiDLFNQO!#2`o+FX17BFp+vq(;Uu})K>?PN zw27RQly@~PPvY|;#|^PEaVeEc5~>?j>_&iKBi)lFkd)~uE|ny%pfYRG{6NvADzuV= z+gx^Q;@M<)E0?62oF<8HRVmRrqM-6Bo}}#0+H#US*`vG}a4@fh-D> zHBl;zq!HMcSv}|dVgXocMxI}j(Jh$BY0~ANAM#%YOt5lNu3;1C2<{?!aNq!$q`VYzR&2ExHxeiMPekK%!LW}xeYc;}A2!6<1xg>2L zf+PftRWX){1wDSy|S^aX>ZT8n}*_@+_0Bn=*hq+kc{yY{jZ+C@^};T=0B z_B)t+a()fY$u;*S%Oz>~FeEuO6n=QfPFOZcwdPQvW~0^a;qc|i2;(S_VE`wX6v51$ zYXX)^(){yrNW$^vu~47;k(AsZK%F88btsu$Uw=y*)9Aib3 z6rf4>($7k0@6Ji_#~@p9&0yz|wBB5%H=$gTdJ2*@iqDMN3tKcvv7m%Wkde?{l1%oh zg)(>`c8X7nS#MJ1lGIU>lwBi(dy?e*LF3ydBcY`v39&VaOoD~FSlqU3Z_(rBV>wAg zTNO`Ih>Yq{MnXGD5+?(*4ef|d?91v)2p2lL_xflERb3IV>ol zC;2w(WM>Ah?+GVc%SpQP=;j2d^{$Q;3rG@w@VQDJ+OT7^L+v6N^pIX&0qgC=c~M(P z%KpagP7(^!hytT+ASu2n63${XJrx4&DakmILJsY$6%#v1@~7{hDXjBSt4HOKgpbVo zTcP%m6rduSZQ;Ir!s?F}hPO{fR(6mSQ}AXJN#g?=-)4@DBtes(?E<4?0U@F*#9Qp94ko*(Y`7p>unB}+rE~HFo19;PK?SwPtt$CCCQnBQNwO;uob+p6VoU=p@}p@`9=$v?Sr3CRUOZ+X|yS>Ff!H zEz;C`f_7h!8Rj7=cLm;>q!8cZCBy+Xe+Qe`RlAH8NIgjqR$wVf4%(lmy;K=pl|#C( z131g!n>(;(wD}3 zgZcKF+ws!}z2_i_bU*w^WpLk|Bs7XAN*4d$Z~CAe21)pME-OjuV_TIyt69)bg*6p% zr0C2;l1|EnpWBl(+cJukF&j^dLy{AlbZ3ziS>6Upo*>5b9vkK0sm zgb+L4(VaY!a7d4hBso1)K6Mxk+Ee1{zcaL@ov50}C&_U>K9yw?Bks+MJd#j-*+~-a zlvH;@J5C7krc}>$6>?4zH(2}&BstzOX|4VJxeyDs7nMm8j+nNQB(yz`$QG@XFv8+I z^vdeh%W_GAIp#wBq%%p881tm-Yb?H#E+ip3Uk3M-b4fxcL1&VbOFWX`#8RSbn4)Y? zs&+?d7*#YwN2RK#@ij<9TZ6tq#i-89>`$erMZ;zz68nJq^M^BC#m^)?ncAWp-2jtrX1t z;cDCc{_HOHLq9Y;k!mJO@6#P2R799g73i Z{{x-b-)b(kM~MIc002ovPDHLkV1hsXA@=|P literal 0 HcmV?d00001 diff --git a/static/img/status-logo.svg b/static/img/status-logo.svg new file mode 100644 index 0000000..799e00e --- /dev/null +++ b/static/img/status-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/xmtp-logo.svg b/static/img/xmtp-logo.svg new file mode 100644 index 0000000..9ce73b7 --- /dev/null +++ b/static/img/xmtp-logo.svg @@ -0,0 +1,7 @@ + + + + + + + From e09bc136a2ec7544d1b47b2a15bd9680dee0cc99 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sat, 20 May 2023 23:30:26 +0100 Subject: [PATCH 05/19] move announcement message --- docs/overview/index.md | 4 ++++ docusaurus.config.js | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/overview/index.md b/docs/overview/index.md index 4b4f37a..98950c7 100644 --- a/docs/overview/index.md +++ b/docs/overview/index.md @@ -3,6 +3,10 @@ title: What is Waku? slug: / --- +:::caution +While Waku comes with risks and limitations, as it is still in development and preparing for extensive adoption, it is already demonstrating its capabilities by [powering various applications](/powered-by-waku). Join our [Discord Community](https://discord.gg/Nrac59MfSX) to stay updated on our progress. +::: + Waku is a family of peer-to-peer protocols that offer secure and private communication in a decentralized environment, making it suitable for various decentralized applications (dApps). It is designed to operate in resource-limited environments but can also be used as a node or desktop application. Waku protocols ensure that users communication remains censorship-resistant and privacy-preserving, giving them complete control over their data. By incorporating Waku into your dApp, you can add decentralized communication features to your application without compromising security or privacy. diff --git a/docusaurus.config.js b/docusaurus.config.js index 9e29559..9ed59d9 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -84,12 +84,6 @@ const config = { } ] }, - announcementBar: { - content: "While Waku is still in development and needs to prepare for extensive adoption, it is already powering various applications. Join our Discord Community to stay updated on our progress.", - backgroundColor: "#EBEDF0", - textColor: "#1B1B1D", - isCloseable: true - }, footer: { links: [ { From 9bb060f5110dbec2aa12d3dfa729673fa7c60d98 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sun, 21 May 2023 01:32:38 +0100 Subject: [PATCH 06/19] reorg sidebar --- docs/overview/clients.md | 2 +- docs/overview/concepts/node-discovery.md | 4 ++-- docs/overview/concepts/protocols.md | 18 ++++++++---------- docs/overview/concepts/transports.md | 2 +- docs/overview/index.md | 4 ++-- docs/overview/use-cases.md | 2 +- docs/overview/why-waku.md | 1 + sidebars.js | 2 +- src/components/PoweredByCard.js | 17 +++++++++++------ 9 files changed, 28 insertions(+), 24 deletions(-) diff --git a/docs/overview/clients.md b/docs/overview/clients.md index d12d4c8..165d6c8 100644 --- a/docs/overview/clients.md +++ b/docs/overview/clients.md @@ -1,5 +1,5 @@ --- -title: Waku Clients +title: Clients --- Waku has been implemented in multiple programming languages to address various use cases. The Waku team builds and maintains each client, ensuring that updates are provided automatically. diff --git a/docs/overview/concepts/node-discovery.md b/docs/overview/concepts/node-discovery.md index d5a1e15..3b22e9d 100644 --- a/docs/overview/concepts/node-discovery.md +++ b/docs/overview/concepts/node-discovery.md @@ -10,9 +10,9 @@ After establishing a connection, the node must actively seek out additional peer - 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. - Peers with specific Waku capabilities: The node seeks out peers with specific Waku capabilities, such as [Store](/overview/concepts/protocols#waku-store), [Light Push](/overview/concepts/protocols#waku-light-push), or [Filter](/overview/concepts/protocols#waku-filter). This allows for targeted interactions and enhanced functionality based on the desired capabilities. -## Predefined Bootstrap Nodes +## Predefined Nodes -Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to utilize either the [pre-deployed nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [set up their nodes](https://github.com/waku-org/nwaku/tree/master/docs/operators) per their preference. +Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to utilize either the [predefined nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [set up their nodes](https://github.com/waku-org/nwaku/tree/master/docs/operators) per their preference. #### Pros diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index e42de26..23bf812 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -1,18 +1,18 @@ --- -title: Protocols in Waku +title: Protocols --- Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the [Anonymity Trilemma](https://eprint.iacr.org/2017/954.pdf). This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku: -### [Waku Relay](https://rfc.vac.dev/spec/11/) +## [Waku Relay](https://rfc.vac.dev/spec/11/) `Waku Relay` is a privacy-focused peer-to-peer messaging protocol that extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). It utilizes a Pub/Sub architecture to enable secure communication channels, encryption, and protection against censorship. With a strong emphasis on privacy, `Waku Relay` ensures scalability, allowing many peers and messages to coexist within the network. -### [Waku Filter](https://rfc.vac.dev/spec/12/) +## [Waku Filter](https://rfc.vac.dev/spec/12/) `Waku Filter` is a protocol enabling peers to subscribe to specific messages from other peers. It is designed for devices with limited bandwidth, serving as a lighter alternative to [Waku Relay](#waku-relay). Unlike relay nodes, `Waku Filter` allows light nodes to subscribe to service nodes and receive only the messages they are interested in. This optimizes bandwidth consumption but may involve privacy compromises. Nonetheless, `Waku Filter` efficiently delivers desired messages within bandwidth constraints. -### [Waku Store](https://rfc.vac.dev/spec/13/) +## [Waku Store](https://rfc.vac.dev/spec/13/) `Waku Store` is a protocol that allows the querying of messages received through the relay protocol and stored by nodes. It supports retrieving historical messages with pagination. Unlike [Waku Relay](#waku-relay), which doesn't save messages for offline users, `Waku Store` peers retain relayed messages for later retrieval. @@ -20,7 +20,7 @@ Waku takes a modular approach, providing a range of protocols that enable applic Data availability is not guaranteed with `Waku Store`. [Waku Relay](#waku-relay) or [Waku Filter](#waku-filter) are preferred for online usage, while `Waku Store` is suitable for retrieving messages after reconnecting to the network, like when a dApp starts. ::: -### [Waku Light Push](https://rfc.vac.dev/spec/19/) +## [Waku Light Push](https://rfc.vac.dev/spec/19/) `Waku Light Push` is a [Request/Reply](/overview/concepts/network-domains#requestreply-domain) protocol for Waku's light nodes with limited bandwidth and short connection windows. It enables clients to receive a confirmation when sending messages, indicating that at least one node has received them. However, using `Waku Light Push` compromises privacy as the remote peer becomes aware of the message originator. @@ -28,16 +28,14 @@ Data availability is not guaranteed with `Waku Store`. [Waku Relay](#waku-relay) Please note that `Waku Light Push` confirms receipt by the remote peer but doesn't guarantee network-wide propagation. ::: -## Additional Protocols - -### [Waku Message](https://rfc.vac.dev/spec/14) +## [Waku Message](https://rfc.vac.dev/spec/14) `Waku Message` specifies the message structure used in the Waku network. It defines metadata fields, such as content topics and timestamps, that other Waku protocols can use. -### [Waku Payload](https://rfc.vac.dev/spec/26) +## [Waku Payload](https://rfc.vac.dev/spec/26) `Waku Payload` provides guidelines for implementing secure and private communication in the Waku network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability. -### [Waku RLN Relay](https://rfc.vac.dev/spec/17/) +## [Waku RLN Relay](https://rfc.vac.dev/spec/17/) The `Waku RLN Relay` protocol extends the [Waku Relay](#waku-relay) protocol by adding spam protection using [Rate Limiting Nullifiers (RLN)](https://rfc.vac.dev/spec/32/). It enforces a global messaging rate for all peers to prevent spam in the Waku network. Spammers face financial penalties and removal from the system. This protocol provides efficient and economic spam prevention suitable for resource-constrained environments. \ No newline at end of file diff --git a/docs/overview/concepts/transports.md b/docs/overview/concepts/transports.md index 836e09c..f7df266 100644 --- a/docs/overview/concepts/transports.md +++ b/docs/overview/concepts/transports.md @@ -1,5 +1,5 @@ --- -title: Transports in Waku +title: Transports --- Transports help move data packets across a network by establishing connections between members. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. diff --git a/docs/overview/index.md b/docs/overview/index.md index 98950c7..05ba1ba 100644 --- a/docs/overview/index.md +++ b/docs/overview/index.md @@ -1,10 +1,10 @@ --- -title: What is Waku? +title: Introduction slug: / --- :::caution -While Waku comes with risks and limitations, as it is still in development and preparing for extensive adoption, it is already demonstrating its capabilities by [powering various applications](/powered-by-waku). Join our [Discord Community](https://discord.gg/Nrac59MfSX) to stay updated on our progress. +While Waku comes with risks and limitations, as it is still in development and preparing for extensive adoption, it is already demonstrating its capabilities by [powering various applications](/powered-by-waku). Join our [community](/community) to stay updated on our progress. ::: Waku is a family of peer-to-peer protocols that offer secure and private communication in a decentralized environment, making it suitable for various decentralized applications (dApps). It is designed to operate in resource-limited environments but can also be used as a node or desktop application. diff --git a/docs/overview/use-cases.md b/docs/overview/use-cases.md index 6bb1fc5..31f9272 100644 --- a/docs/overview/use-cases.md +++ b/docs/overview/use-cases.md @@ -1,5 +1,5 @@ --- -title: Waku Use Cases +title: Use Cases --- Waku is a decentralized communication network, facilitating secure and private person-to-person and machine-to-machine communication without a central authority. It supports various use cases, including but not limited to: diff --git a/docs/overview/why-waku.md b/docs/overview/why-waku.md index d5f3974..3da4323 100644 --- a/docs/overview/why-waku.md +++ b/docs/overview/why-waku.md @@ -1,5 +1,6 @@ --- title: Why Waku? +hide_table_of_contents: true --- Communication in the present day is heavily influenced by third-party intervention, ranging from censorship and deplatforming to intermediaries that seek to profit from rent and the misuse of data in the surveillance economy. diff --git a/sidebars.js b/sidebars.js index d5f1176..76af7ce 100644 --- a/sidebars.js +++ b/sidebars.js @@ -10,7 +10,7 @@ const sidebars = { "overview/clients", { type: "category", - label: "Waku Concepts", + label: "Concepts", collapsed: false, collapsible: true, items: [ diff --git a/src/components/PoweredByCard.js b/src/components/PoweredByCard.js index 3e62362..6aacffa 100644 --- a/src/components/PoweredByCard.js +++ b/src/components/PoweredByCard.js @@ -4,7 +4,7 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => (
( display: "flex", flexDirection: "column", alignItems: "center", - backgroundColor: "#fff" + backgroundColor: "#fff", + marginBottom: "1em" }}> {logoAlt}
@@ -32,14 +33,18 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => ( padding: "1em", borderRadius: "8px", backgroundColor: "#e6f6ff", - border: "1px solid #e6f6ff", + border: "1px solid #666", fontSize: "16px", fontWeight: 700, cursor: "pointer", color: "#3578e5" }} > - Visit Application + Visit Application  + From 86b3331c80c1c18b1d1bddd4dabec627e7a4d25b Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sun, 21 May 2023 14:20:48 +0100 Subject: [PATCH 07/19] removed Waku ref + add GitHub icon --- docs/overview/concepts/content-topics.md | 2 +- docs/overview/concepts/network-domains.md | 6 ++-- docs/overview/concepts/node-discovery.md | 6 ++-- docs/overview/concepts/protocols.md | 32 +++++++++---------- docs/overview/index.md | 4 +-- .../reference/research-in-progress.md | 4 +-- docs/overview/reference/security-features.md | 10 +++--- docs/overview/reference/waku-vs-libp2p.md | 4 +-- docs/overview/why-waku.md | 1 - docs/powered-by-waku.mdx | 6 ++-- docusaurus.config.js | 12 +++++-- static/custom.css | 18 +++++++++++ 12 files changed, 64 insertions(+), 41 deletions(-) diff --git a/docs/overview/concepts/content-topics.md b/docs/overview/concepts/content-topics.md index a7a69a1..8f63442 100644 --- a/docs/overview/concepts/content-topics.md +++ b/docs/overview/concepts/content-topics.md @@ -2,7 +2,7 @@ title: Content Topics --- -`Content Topics` are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages ([Relay](/overview/concepts/protocols#waku-relay) or [Filter](/overview/concepts/protocols#waku-filter)) and retrieving historical messages ([Store](/overview/concepts/protocols#waku-store)) that meet specific filtering criteria. Please refer to the [WAKU2-TOPICS](https://rfc.vac.dev/spec/23/#content-topics) specification to learn more. +`Content Topics` are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages ([Relay](/overview/concepts/protocols#relay) or [Filter](/overview/concepts/protocols#filter)) and retrieving historical messages ([Store](/overview/concepts/protocols#store)) that meet specific filtering criteria. Please refer to the [WAKU2-TOPICS](https://rfc.vac.dev/spec/23/#content-topics) specification to learn more. ## Content Topic Format diff --git a/docs/overview/concepts/network-domains.md b/docs/overview/concepts/network-domains.md index eef3c86..9f5a0cb 100644 --- a/docs/overview/concepts/network-domains.md +++ b/docs/overview/concepts/network-domains.md @@ -12,13 +12,13 @@ Node discovery in Waku facilitates locating other nodes within the network. As a Gossipsub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network. -Waku employs gossiping through [`Waku Relay`](/overview/concepts/protocols#waku-relay) to distribute messages across the network. Additionally, Waku introduces [`Waku RLN Relay`](/overview/concepts/protocols#waku-rln-relay), an experimental mechanism that combines privacy preservation and economic spam protection. +Waku employs gossiping through [`Relay`](/overview/concepts/protocols#relay) to distribute messages across the network. Additionally, Waku introduces [`RLN Relay`](/overview/concepts/protocols#rln-relay), an experimental mechanism that combines privacy preservation and economic spam protection. ## Request/Reply Domain Waku provides a set of Request/Reply protocols to optimize its performance in resource-restricted environments like low bandwidth or offline scenarios. -These protocols serve multiple purposes. [`Waku Store`](/overview/concepts/protocols#waku-store) enables the retrieval of historical messages, [`Waku Filter`](/overview/concepts/protocols#waku-filter) efficiently retrieves a subset of messages to conserve bandwidth, and [`Waku Light Push`](/overview/concepts/protocols#waku-light-push) facilitates message publication for nodes with limited bandwidth and short connection windows. +These protocols serve multiple purposes. [`Store`](/overview/concepts/protocols#store) enables the retrieval of historical messages, [`Filter`](/overview/concepts/protocols#filter) efficiently retrieves a subset of messages to conserve bandwidth, and [`Light Push`](/overview/concepts/protocols#light-push) facilitates message publication for nodes with limited bandwidth and short connection windows. ## Overview of Protocol Interaction @@ -46,7 +46,7 @@ E ->> D: HistoryQuery(pubtopic1, contentTopic1) (6) D ->> E: HistoryResponse(msg1, ...) (6) ``` -The Pub/Sub topic `pubtopic1` serves as a means of routing messages (the network employs a default pubsub topic) and indicates that it is subscribed to messages on that topic for a relay. In the context of Waku Store, Node D is responsible for persisting these messages. +The Pub/Sub topic `pubtopic1` serves as a means of routing messages (the network employs a default pubsub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a `Store` and is responsible for persisting messages. 1. Node A creates a WakuMessage `msg1` with a [ContentTopic](/overview/concepts/content-topics) `contentTopic1`. 2. Node F requests to get messages filtered by Pub/Sub topic `pubtopic1` and ContentTopic `contentTopic1`. Node D subscribes F to this filter and will forward messages that match that filter in the future. diff --git a/docs/overview/concepts/node-discovery.md b/docs/overview/concepts/node-discovery.md index 3b22e9d..86f951f 100644 --- a/docs/overview/concepts/node-discovery.md +++ b/docs/overview/concepts/node-discovery.md @@ -6,9 +6,9 @@ When initializing a Waku node, it must connect with other nodes to enable messag After establishing a connection, the node must actively seek out additional peers to have: -- Sufficient peers in the [Waku Relay](/overview/concepts/protocols#waku-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. +- Sufficient peers in the [Relay](/overview/concepts/protocols#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. - 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. -- Peers with specific Waku capabilities: The node seeks out peers with specific Waku capabilities, such as [Store](/overview/concepts/protocols#waku-store), [Light Push](/overview/concepts/protocols#waku-light-push), or [Filter](/overview/concepts/protocols#waku-filter). This allows for targeted interactions and enhanced functionality based on the desired capabilities. +- Peers with specific capabilities: The node seeks out peers with specific capabilities, such as [Store](/overview/concepts/protocols#store), [Light Push](/overview/concepts/protocols#light-push), or [Filter](/overview/concepts/protocols#filter). This allows for targeted interactions and enhanced functionality based on the desired capabilities. ## Predefined Nodes @@ -58,7 +58,7 @@ This bootstrapping method allows anyone to register and publish a domain name fo ## [Peer Exchange](https://rfc.vac.dev/spec/34/) -The primary objective of this protocol is to facilitate peer connectivity for resource-restricted devices. The peer exchange protocol enables lightweight nodes to request peers from other nodes within the network. Light nodes can bootstrap and expand their mesh independently without relying on [Discv5](#discv5). +The primary objective of this protocol is to facilitate peer connectivity for resource-restricted devices. The peer exchange protocol enables lightweight nodes to request peers from other nodes within the network. Light nodes can bootstrap and expand their mesh independently without relying on `Discv5`. #### Pros diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index 23bf812..7f8eb35 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -4,38 +4,38 @@ title: Protocols Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the [Anonymity Trilemma](https://eprint.iacr.org/2017/954.pdf). This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku: -## [Waku Relay](https://rfc.vac.dev/spec/11/) +## [Relay](https://rfc.vac.dev/spec/11/) -`Waku Relay` is a privacy-focused peer-to-peer messaging protocol that extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). It utilizes a Pub/Sub architecture to enable secure communication channels, encryption, and protection against censorship. With a strong emphasis on privacy, `Waku Relay` ensures scalability, allowing many peers and messages to coexist within the network. +`Relay` is a privacy-focused peer-to-peer messaging protocol that extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). It utilizes a Pub/Sub architecture to enable secure communication channels, encryption, and protection against censorship. With a strong emphasis on privacy, `Relay` ensures scalability, allowing many peers and messages to coexist within the network. -## [Waku Filter](https://rfc.vac.dev/spec/12/) +## [Filter](https://rfc.vac.dev/spec/12/) -`Waku Filter` is a protocol enabling peers to subscribe to specific messages from other peers. It is designed for devices with limited bandwidth, serving as a lighter alternative to [Waku Relay](#waku-relay). Unlike relay nodes, `Waku Filter` allows light nodes to subscribe to service nodes and receive only the messages they are interested in. This optimizes bandwidth consumption but may involve privacy compromises. Nonetheless, `Waku Filter` efficiently delivers desired messages within bandwidth constraints. +`Filter` is a protocol enabling peers to subscribe to specific messages from other peers. It is designed for devices with limited bandwidth, serving as a lighter alternative to `Relay`. Unlike relay nodes, `Filter` allows light nodes to subscribe to service nodes and receive only the messages they are interested in. This optimizes bandwidth consumption but may involve privacy compromises. Nonetheless, `Filter` efficiently delivers desired messages within bandwidth constraints. -## [Waku Store](https://rfc.vac.dev/spec/13/) +## [Store](https://rfc.vac.dev/spec/13/) -`Waku Store` is a protocol that allows the querying of messages received through the relay protocol and stored by nodes. It supports retrieving historical messages with pagination. Unlike [Waku Relay](#waku-relay), which doesn't save messages for offline users, `Waku Store` peers retain relayed messages for later retrieval. +`Store` is a protocol that allows the querying of messages received through the relay protocol and stored by nodes. It supports retrieving historical messages with pagination. Unlike `Relay`, which doesn't save messages for offline users, `Store` peers retain relayed messages for later retrieval. :::info -Data availability is not guaranteed with `Waku Store`. [Waku Relay](#waku-relay) or [Waku Filter](#waku-filter) are preferred for online usage, while `Waku Store` is suitable for retrieving messages after reconnecting to the network, like when a dApp starts. +Data availability is not guaranteed with `Store`. `Relay` or `Filter` are preferred for online usage, while `Store` is suitable for retrieving messages after reconnecting to the network, like when a dApp starts. ::: -## [Waku Light Push](https://rfc.vac.dev/spec/19/) +## [Light Push](https://rfc.vac.dev/spec/19/) -`Waku Light Push` is a [Request/Reply](/overview/concepts/network-domains#requestreply-domain) protocol for Waku's light nodes with limited bandwidth and short connection windows. It enables clients to receive a confirmation when sending messages, indicating that at least one node has received them. However, using `Waku Light Push` compromises privacy as the remote peer becomes aware of the message originator. +`Light Push` is a [Request/Reply](/overview/concepts/network-domains#requestreply-domain) protocol for Waku's light nodes with limited bandwidth and short connection windows. It enables clients to receive a confirmation when sending messages, indicating that at least one node has received them. However, using `Light Push` compromises privacy as the remote peer becomes aware of the message originator. :::info -Please note that `Waku Light Push` confirms receipt by the remote peer but doesn't guarantee network-wide propagation. +Please note that `Light Push` confirms receipt by the remote peer but doesn't guarantee network-wide propagation. ::: -## [Waku Message](https://rfc.vac.dev/spec/14) +## [Message](https://rfc.vac.dev/spec/14) -`Waku Message` specifies the message structure used in the Waku network. It defines metadata fields, such as content topics and timestamps, that other Waku protocols can use. +`Message` specifies the message structure used in the Waku network. It defines metadata fields, such as content topics and timestamps, that other Waku protocols can use. -## [Waku Payload](https://rfc.vac.dev/spec/26) +## [Payload](https://rfc.vac.dev/spec/26) -`Waku Payload` provides guidelines for implementing secure and private communication in the Waku network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability. +`Payload` provides guidelines for implementing secure and private communication in the Waku network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability. -## [Waku RLN Relay](https://rfc.vac.dev/spec/17/) +## [RLN Relay](https://rfc.vac.dev/spec/17/) -The `Waku RLN Relay` protocol extends the [Waku Relay](#waku-relay) protocol by adding spam protection using [Rate Limiting Nullifiers (RLN)](https://rfc.vac.dev/spec/32/). It enforces a global messaging rate for all peers to prevent spam in the Waku network. Spammers face financial penalties and removal from the system. This protocol provides efficient and economic spam prevention suitable for resource-constrained environments. \ No newline at end of file +The `RLN Relay` protocol extends the `Relay` protocol by adding spam protection using [Rate Limiting Nullifiers (RLN)](https://rfc.vac.dev/spec/32/). It enforces a global messaging rate for all peers to prevent spam in the Waku network. Spammers face financial penalties and removal from the system. This protocol provides efficient and economic spam prevention suitable for resource-constrained environments. \ No newline at end of file diff --git a/docs/overview/index.md b/docs/overview/index.md index 05ba1ba..324310a 100644 --- a/docs/overview/index.md +++ b/docs/overview/index.md @@ -51,13 +51,13 @@ These options are part of the [Anonymity Trilemma](https://eprint.iacr.org/2017/ ## How Does Waku Work? -The [Waku Relay](/overview/concepts/protocols#waku-relay) protocol is the foundation of the Waku network, which employs a Pub/Sub architecture built on the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). Additionally, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to: +The [Relay](/overview/concepts/protocols#relay) protocol is the foundation of the Waku network, which employs a Pub/Sub architecture built on the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). Additionally, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to: 1. Facilitating the retrieval of historical messages for primarily offline devices. 2. Providing solutions for encrypted communication, such as symmetric encryption, ECIES/asymmetric encryption, and noise handshake-based key turns. 3. Preserving bandwidth usage for resource-limited environments. 4. Implementing economic spam protection (rate limits) while ensuring privacy. 5. Developing methods to protect against mass deanonymization (currently being researched). -6. Designing strategies to scale `Waku Relay/GossipSub` securely. +6. Designing strategies to scale `Relay/GossipSub` securely. If you want to learn more about how Waku operates, the [WAKU2 RFC](https://rfc.vac.dev/spec/10/) provides an in-depth look under the hood. diff --git a/docs/overview/reference/research-in-progress.md b/docs/overview/reference/research-in-progress.md index 46a26fb..0d96983 100644 --- a/docs/overview/reference/research-in-progress.md +++ b/docs/overview/reference/research-in-progress.md @@ -6,7 +6,7 @@ The following features are currently experimental and under research and initial ## Economic Spam Resistance -We aim to enable an incentivized spam protection technique to enhance `Waku Relay` by using rate limiting nullifiers. More details on this can be found in [WAKU2-RLN-RELAY](https://rfc.vac.dev/spec/17). In this advanced method, peers are limited to a certain rate of messaging per epoch and an immediate financial penalty is enforced for spammers who break this rate. +We aim to enable an incentivized spam protection technique to enhance `Relay` by using rate limiting nullifiers. More details on this can be found in [WAKU2-RLN-RELAY](https://rfc.vac.dev/spec/17). In this advanced method, peers are limited to a certain rate of messaging per epoch and an immediate financial penalty is enforced for spammers who break this rate. We have prepared a PoC implementation of this method in JS: @@ -14,7 +14,7 @@ We have prepared a PoC implementation of this method in JS: . -In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivizing the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in `Waku Store` and `Waku Filter` to protect against DoS attacks. +In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivizing the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in `Store` and `Filter` to protect against DoS attacks. 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: diff --git a/docs/overview/reference/security-features.md b/docs/overview/reference/security-features.md index 913c00f..78ec506 100644 --- a/docs/overview/reference/security-features.md +++ b/docs/overview/reference/security-features.md @@ -14,14 +14,14 @@ Waku ensures pseudonymity across its protocol layers, using libp2p `PeerID` as i Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided: -- [Publisher-Message Unlinkability](https://rfc.vac.dev/spec/11/#security-analysis): Ensures that the publisher of messages in the `Waku Relay` protocol cannot be linked to their published messages. -- [Subscriber-Topic Unlinkability](https://rfc.vac.dev/spec/11/#security-analysis): Ensures that the subscriber of topics in the `Waku Relay` protocol cannot be linked to the topics they have subscribed to. +- [Publisher-Message Unlinkability](https://rfc.vac.dev/spec/11/#security-analysis): Ensures that the publisher of messages in the `Relay` protocol cannot be linked to their published messages. +- [Subscriber-Topic Unlinkability](https://rfc.vac.dev/spec/11/#security-analysis): Ensures that the subscriber of topics in the `Relay` protocol cannot be linked to the topics they have subscribed to. ## [Spam Protection](https://rfc.vac.dev/spec/10/#spam-protection) -The spam protection feature in `Waku Relay` ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the [scoring mechanism](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures) of `GossipSub v1.1`. Peers assign scores to their connections based on their behavior and remove peers with low scores. +The spam protection feature in `Relay` ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the [scoring mechanism](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures) of `GossipSub v1.1`. Peers assign scores to their connections based on their behavior and remove peers with low scores. -Ongoing research is being conducted, including developing [Rate Limiting Nullifiers (RLN)](/overview/concepts/protocols#waku-rln-relay), which can be explored further at: . +Ongoing research is being conducted, including developing [Rate Limiting Nullifiers (RLN)](/overview/concepts/protocols#rln-relay), which can be explored further at: . ## [Data Confidentiality, Integrity, and Authenticity](https://rfc.vac.dev/spec/10/#data-confidentiality-integrity-and-authenticity) @@ -29,4 +29,4 @@ Confidentiality in Waku is ensured through data encryption, while integrity and ## [Security Considerations](https://rfc.vac.dev/spec/10/#security-considerations) -In protocols like `Waku Store` and `Waku Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because peers use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Waku Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Waku Filter`, a full node can link the `PeerID` of a light node to its content filter. \ No newline at end of file +In protocols like `Store` and `Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because peers use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Filter`, a full node can link the `PeerID` of a light node to its content filter. \ No newline at end of file diff --git a/docs/overview/reference/waku-vs-libp2p.md b/docs/overview/reference/waku-vs-libp2p.md index dd9734e..c2b6179 100644 --- a/docs/overview/reference/waku-vs-libp2p.md +++ b/docs/overview/reference/waku-vs-libp2p.md @@ -12,8 +12,8 @@ Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment. -libp2p does not provide out-of-the-box protocols to enable mostly offline/resource-restricted devices, [Waku Store](/overview/concepts/protocols#waku-store)/[Waku Light Push](/overview/concepts/protocols#waku-light-push)/[Waku Filter](/overview/concepts/protocols#waku-filter) caters to those use cases. +libp2p does not provide out-of-the-box protocols to enable mostly offline/resource-restricted devices, [Store](/overview/concepts/protocols#store)/[Light Push](/overview/concepts/protocols#light-push)/[Filter](/overview/concepts/protocols#filter) caters to those use cases. ## Economic Spam Protection -libp2p does not have strong spam protection guarantees, [RLN (Rate Limit Nullifier)](/overview/concepts/protocols#waku-rln-relay) is a protocol being developed by the Waku team towards this goal. +libp2p does not have strong spam protection guarantees, [RLN (Rate Limit Nullifier)](/overview/concepts/protocols#rln-relay) is a protocol being developed by the Waku team towards this goal. diff --git a/docs/overview/why-waku.md b/docs/overview/why-waku.md index 3da4323..d5f3974 100644 --- a/docs/overview/why-waku.md +++ b/docs/overview/why-waku.md @@ -1,6 +1,5 @@ --- title: Why Waku? -hide_table_of_contents: true --- Communication in the present day is heavily influenced by third-party intervention, ranging from censorship and deplatforming to intermediaries that seek to profit from rent and the misuse of data in the surveillance economy. diff --git a/docs/powered-by-waku.mdx b/docs/powered-by-waku.mdx index f37b87b..fa57817 100644 --- a/docs/powered-by-waku.mdx +++ b/docs/powered-by-waku.mdx @@ -14,21 +14,21 @@ import PoweredByCard from "@site/src/components/PoweredByCard";
Status is a secure messaging app, crypto wallet, and Web3 browser built with state-of-the-art technology. XMTP uses the Waku network to enable secure Web3 messaging in their open protocol and network. RAILGUN uses Waku to offer private gas payments to users, ensuring anonymity and privacy for their transactions. diff --git a/docusaurus.config.js b/docusaurus.config.js index 9ed59d9..90a53c8 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -59,7 +59,7 @@ const config = { }, { type: "dropdown", - label: "Waku Clients", + label: "Clients", position: "right", items: [ { @@ -81,7 +81,13 @@ const config = { to: "/community", label: "Community", position: "right" - } + }, + { + href: "https://github.com/waku-org", + position: "right", + className: "header-github-link", + title: "Waku GitHub repository" + }, ] }, footer: { @@ -149,7 +155,7 @@ const config = { label: "Privacy Policy" }, { - html: "" + html: "" } ] } diff --git a/static/custom.css b/static/custom.css index abcbff6..d74e0d7 100644 --- a/static/custom.css +++ b/static/custom.css @@ -20,4 +20,22 @@ .powered-by-card-container { grid-template-columns: repeat(3, 1fr); } +} + +.header-github-link:hover { + opacity: 0.6; +} + +.header-github-link:before { + content: ''; + width: 24px; + height: 24px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; +} + +html[data-theme='dark'] .header-github-link:before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; } \ No newline at end of file From d12297918fd8f8ba6258f4a3133db7a2a356c073 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Sun, 21 May 2023 15:50:59 +0100 Subject: [PATCH 08/19] update protocols --- docs/overview/concepts/protocols.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index 7f8eb35..35580b5 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -6,35 +6,35 @@ Waku takes a modular approach, providing a range of protocols that enable applic ## [Relay](https://rfc.vac.dev/spec/11/) -`Relay` is a privacy-focused peer-to-peer messaging protocol that extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). It utilizes a Pub/Sub architecture to enable secure communication channels, encryption, and protection against censorship. With a strong emphasis on privacy, `Relay` ensures scalability, allowing many peers and messages to coexist within the network. +The `Relay` protocol employs a Pub/Sub architecture to facilitate message routing among nodes. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. ## [Filter](https://rfc.vac.dev/spec/12/) -`Filter` is a protocol enabling peers to subscribe to specific messages from other peers. It is designed for devices with limited bandwidth, serving as a lighter alternative to `Relay`. Unlike relay nodes, `Filter` allows light nodes to subscribe to service nodes and receive only the messages they are interested in. This optimizes bandwidth consumption but may involve privacy compromises. Nonetheless, `Filter` efficiently delivers desired messages within bandwidth constraints. +The `Filter` protocol allows nodes to selectively subscribe to specific messages transmitted by other nodes. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. ## [Store](https://rfc.vac.dev/spec/13/) -`Store` is a protocol that allows the querying of messages received through the relay protocol and stored by nodes. It supports retrieving historical messages with pagination. Unlike `Relay`, which doesn't save messages for offline users, `Store` peers retain relayed messages for later retrieval. +The `Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline nodes by enabling them to retrieve missed messages upon reconnection. :::info -Data availability is not guaranteed with `Store`. `Relay` or `Filter` are preferred for online usage, while `Store` is suitable for retrieving messages after reconnecting to the network, like when a dApp starts. +Using `Relay` and `Filter` protocols is recommended when a node is online, as `Store` does not guarantee data availability. The `Store` protocol is suitable for retrieving messages when connecting to the network, like when a dApp starts. ::: ## [Light Push](https://rfc.vac.dev/spec/19/) -`Light Push` is a [Request/Reply](/overview/concepts/network-domains#requestreply-domain) protocol for Waku's light nodes with limited bandwidth and short connection windows. It enables clients to receive a confirmation when sending messages, indicating that at least one node has received them. However, using `Light Push` compromises privacy as the remote peer becomes aware of the message originator. +`Light Push` is a [Request/Reply](/overview/concepts/network-domains#requestreply-domain) protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgment when sending messages, indicating that at least one peer has received them. :::info -Please note that `Light Push` confirms receipt by the remote peer but doesn't guarantee network-wide propagation. +While the `Light Push` protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation. ::: ## [Message](https://rfc.vac.dev/spec/14) -`Message` specifies the message structure used in the Waku network. It defines metadata fields, such as content topics and timestamps, that other Waku protocols can use. +`Message` specifies the message structure used in the Waku network. It defines metadata fields, such as content topics and timestamps, that other protocols can use. ## [Payload](https://rfc.vac.dev/spec/26) -`Payload` provides guidelines for implementing secure and private communication in the Waku network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability. +`Payload` provides guidelines for implementing secure and private communication in the network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability. ## [RLN Relay](https://rfc.vac.dev/spec/17/) From 61e6d92633cfe5c24e7d0b0cc7b6845fcdeac685 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Mon, 22 May 2023 06:19:27 +0100 Subject: [PATCH 09/19] add community page --- docs/community.md | 21 +++++++++++++++++++ docs/overview/concepts/network-domains.md | 4 ++-- .../{node-discovery.md => peer-discovery.md} | 6 +++--- docs/overview/concepts/protocols.md | 2 +- docusaurus.config.js | 2 +- sidebars.js | 5 ++++- 6 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 docs/community.md rename docs/overview/concepts/{node-discovery.md => peer-discovery.md} (94%) diff --git a/docs/community.md b/docs/community.md new file mode 100644 index 0000000..9c6394e --- /dev/null +++ b/docs/community.md @@ -0,0 +1,21 @@ +--- +title: Join Our Community +--- + +Welcome to the Waku Community! Whether you're interested in building with Waku, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone. + +## [Discourse](https://forum.vac.dev/) + +Have you got questions, or are you eager to discuss Waku? Head to the [Vac Discourse forum](https://forum.vac.dev/) and join the conversation! + +## [Discord](https://discord.gg/Nrac59MfSX) + +Connect with like-minded individuals in the Waku ecosystem! Introduce yourself, join developer conversations, or seek assistance. Join the [Vac Discord](https://discord.gg/Nrac59MfSX) today! + +## [Twitter](https://twitter.com/waku_org) + +Stay informed and updated with the latest news and insights from Waku. [Follow us on Twitter](https://twitter.com/waku_org) now for all the exciting updates! + +## [Telegram](https://t.me/waku_org) + +Join the [Waku Telegram group](https://t.me/waku_org) now and become part of the thriving community! Stay informed, share ideas, and connect with fellow enthusiasts. \ No newline at end of file diff --git a/docs/overview/concepts/network-domains.md b/docs/overview/concepts/network-domains.md index 9f5a0cb..dfd0e26 100644 --- a/docs/overview/concepts/network-domains.md +++ b/docs/overview/concepts/network-domains.md @@ -1,12 +1,12 @@ --- -title: Network Interaction Domains +title: Network Domains --- Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialized purposes and contribute to the robust functionality of Waku, forming its foundation. ## Discovery Domain -Node discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/node-discovery#discv5) and [`Peer Exchange`](/overview/concepts/node-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more. +Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/peer-discovery#discv5) and [`Peer Exchange`](/overview/concepts/peer-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more. ## Gossip Domain diff --git a/docs/overview/concepts/node-discovery.md b/docs/overview/concepts/peer-discovery.md similarity index 94% rename from docs/overview/concepts/node-discovery.md rename to docs/overview/concepts/peer-discovery.md index 86f951f..cb65337 100644 --- a/docs/overview/concepts/node-discovery.md +++ b/docs/overview/concepts/peer-discovery.md @@ -1,10 +1,10 @@ --- -title: Node Discovery Mechanisms +title: Peer Discovery --- -When initializing a Waku node, it must connect with other nodes to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate and connect with other nodes. This process is known as bootstrapping. +When initializing 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 and connect with other peers. This process is known as bootstrapping. -After establishing a connection, the node must actively seek out additional peers to have: +Once a connection is established, the node must actively seek out additional peers to have: - Sufficient peers in the [Relay](/overview/concepts/protocols#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. - 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. diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index 35580b5..3614d58 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -10,7 +10,7 @@ The `Relay` protocol employs a Pub/Sub architecture to facilitate message routin ## [Filter](https://rfc.vac.dev/spec/12/) -The `Filter` protocol allows nodes to selectively subscribe to specific messages transmitted by other nodes. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. +The `Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other nodes. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. ## [Store](https://rfc.vac.dev/spec/13/) diff --git a/docusaurus.config.js b/docusaurus.config.js index 90a53c8..a8e550c 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -93,7 +93,7 @@ const config = { footer: { links: [ { - title: "Waku Clients", + title: "Clients", items: [ { to: "/overview/clients", diff --git a/sidebars.js b/sidebars.js index 76af7ce..88dbff1 100644 --- a/sidebars.js +++ b/sidebars.js @@ -16,7 +16,7 @@ const sidebars = { items: [ "overview/concepts/protocols", "overview/concepts/network-domains", - "overview/concepts/node-discovery", + "overview/concepts/peer-discovery", "overview/concepts/content-topics", "overview/concepts/transports" ] @@ -35,6 +35,9 @@ const sidebars = { ], js: [ "clients/js-waku/index" + ], + community: [ + "community" ] }; From a3d192b14e463653bb6fe51bc6e474fd6815c843 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Mon, 22 May 2023 11:53:23 +0100 Subject: [PATCH 10/19] add The Graph + fix node-peer phrasing --- docs/overview/concepts/network-domains.md | 2 +- docs/overview/concepts/protocols.md | 6 +++--- docs/overview/concepts/transports.md | 2 +- .../reference/research-in-progress.md | 2 +- docs/overview/reference/security-features.md | 2 +- docs/powered-by-waku.mdx | 7 +++++++ sidebars.js | 1 + src/components/PoweredByCard.js | 6 +++--- static/custom.css | 10 ++------- static/img/the-graph-logo.svg | 21 +++++++++++++++++++ 10 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 static/img/the-graph-logo.svg diff --git a/docs/overview/concepts/network-domains.md b/docs/overview/concepts/network-domains.md index dfd0e26..c375c1a 100644 --- a/docs/overview/concepts/network-domains.md +++ b/docs/overview/concepts/network-domains.md @@ -6,7 +6,7 @@ Waku is a unified and cohesive entity that offers a rich ecosystem with three di ## Discovery Domain -Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/peer-discovery#discv5) and [`Peer Exchange`](/overview/concepts/peer-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more. +Peer discovery in Waku facilitates locating other peers within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/peer-discovery#discv5) and [`Peer Exchange`](/overview/concepts/peer-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more. ## Gossip Domain diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index 3614d58..a525405 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -6,15 +6,15 @@ Waku takes a modular approach, providing a range of protocols that enable applic ## [Relay](https://rfc.vac.dev/spec/11/) -The `Relay` protocol employs a Pub/Sub architecture to facilitate message routing among nodes. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. +The `Relay` protocol employs a Pub/Sub architecture to facilitate message routing among peers. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. ## [Filter](https://rfc.vac.dev/spec/12/) -The `Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other nodes. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. +The `Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other peers. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. ## [Store](https://rfc.vac.dev/spec/13/) -The `Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline nodes by enabling them to retrieve missed messages upon reconnection. +The `Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. :::info Using `Relay` and `Filter` protocols is recommended when a node is online, as `Store` does not guarantee data availability. The `Store` protocol is suitable for retrieving messages when connecting to the network, like when a dApp starts. diff --git a/docs/overview/concepts/transports.md b/docs/overview/concepts/transports.md index f7df266..3959e4d 100644 --- a/docs/overview/concepts/transports.md +++ b/docs/overview/concepts/transports.md @@ -6,7 +6,7 @@ Transports help move data packets across a network by establishing connections b 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: -- **TCP:** By default, Waku nodes utilize TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. +- **TCP:** By default, Waku nodes utilize TCP for communication. Service nodes should employ TCP for listening to and connecting with other peers. - **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. - Other protocols like [WebRTC](https://github.com/waku-org/js-waku/issues/20), [WebTransport](https://github.com/waku-org/js-waku/issues/697), and QUIC have been researched and studied for potential integration. diff --git a/docs/overview/reference/research-in-progress.md b/docs/overview/reference/research-in-progress.md index 0d96983..3617691 100644 --- a/docs/overview/reference/research-in-progress.md +++ b/docs/overview/reference/research-in-progress.md @@ -12,7 +12,7 @@ We have prepared a PoC implementation of this method in JS: . +Denial of service signifies the case where an adversarial peer exhausts another peer'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 tracked from here: . In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivizing the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in `Store` and `Filter` to protect against DoS attacks. diff --git a/docs/overview/reference/security-features.md b/docs/overview/reference/security-features.md index 78ec506..bd36628 100644 --- a/docs/overview/reference/security-features.md +++ b/docs/overview/reference/security-features.md @@ -29,4 +29,4 @@ Confidentiality in Waku is ensured through data encryption, while integrity and ## [Security Considerations](https://rfc.vac.dev/spec/10/#security-considerations) -In protocols like `Store` and `Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because peers use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Filter`, a full node can link the `PeerID` of a light node to its content filter. \ No newline at end of file +In protocols like `Store` and `Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Filter`, a node can link the `PeerID` of a light node to its content filter. \ No newline at end of file diff --git a/docs/powered-by-waku.mdx b/docs/powered-by-waku.mdx index fa57817..04f23a1 100644 --- a/docs/powered-by-waku.mdx +++ b/docs/powered-by-waku.mdx @@ -33,5 +33,12 @@ import PoweredByCard from "@site/src/components/PoweredByCard"; > RAILGUN uses Waku to offer private gas payments to users, ensuring anonymity and privacy for their transactions. + + Waku powers the Graphcast SDK, enabling the development of gossip-powered applications within The Graph ecosystem. +
``` \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index 88dbff1..4ee89e6 100644 --- a/sidebars.js +++ b/sidebars.js @@ -37,6 +37,7 @@ const sidebars = { "clients/js-waku/index" ], community: [ + "powered-by-waku", "community" ] }; diff --git a/src/components/PoweredByCard.js b/src/components/PoweredByCard.js index 6aacffa..14dbc3f 100644 --- a/src/components/PoweredByCard.js +++ b/src/components/PoweredByCard.js @@ -6,7 +6,7 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => ( width: "100%", border: "1px solid #666", borderRadius: "8px", - padding: "1.5em" + padding: "1.5rem" }} >
( flexDirection: "column", alignItems: "center", backgroundColor: "#fff", - marginBottom: "1em" + marginBottom: "1rem" }}> (