docs.waku.org/assets/js/4aba8864.03f5c05f.js
2025-10-03 11:14:33 +00:00

1 line
18 KiB
JavaScript

"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[7159],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>t});var r=i(96540);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}},57908:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"learn/glossary","title":"Glossary","description":"Definitions and usage of the terminology used in the Waku ecosystem.","source":"@site/docs/learn/glossary.md","sourceDirName":"learn","slug":"/learn/glossary","permalink":"/learn/glossary","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/glossary.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Glossary","hide_table_of_contents":true,"displayed_sidebar":"learn"},"sidebar":"learn","previous":{"title":"Comparing Waku and libp2p","permalink":"/learn/waku-vs-libp2p"},"next":{"title":"Frequently Asked Questions","permalink":"/learn/faq"}}');var s=i(74848),a=i(28453);const o={title:"Glossary",hide_table_of_contents:!0,displayed_sidebar:"learn"},t="Waku Docs Glossary",l={},d=[{value:"Bootstrapping",id:"bootstrapping",level:3},{value:"Content topic",id:"content-topic",level:3},{value:"Dappnode",id:"dappnode",level:3},{value:"Discv5",id:"discv5",level:3},{value:"DNS discovery",id:"dns-discovery",level:3},{value:"ENR",id:"enr",level:3},{value:"Filter",id:"filter",level:3},{value:"GossipSub",id:"gossipsub",level:3},{value:"Libp2p",id:"libp2p",level:3},{value:"Light node",id:"light-node",level:3},{value:"Light push",id:"light-push",level:3},{value:"Mostly offline",id:"mostly-offline",level:3},{value:"Node",id:"node",level:3},{value:"Node key",id:"node-key",level:3},{value:"Out-of-band",id:"out-of-band",level:3},{value:"Payload",id:"payload",level:3},{value:"Peer",id:"peer",level:3},{value:"Peer discovery",id:"peer-discovery",level:3},{value:"Peer exchange",id:"peer-exchange",level:3},{value:"Peer ID",id:"peer-id",level:3},{value:"Protocol",id:"protocol",level:3},{value:"Pub/Sub",id:"pubsub",level:3},{value:"Pub/Sub topic",id:"pubsub-topic",level:3},{value:"Rate limit nullifiers",id:"rate-limit-nullifiers",level:3},{value:"Relay",id:"relay",level:3},{value:"Resource-limited",id:"resource-limited",level:3},{value:"RLN relay",id:"rln-relay",level:3},{value:"SDK",id:"sdk",level:3},{value:"Store",id:"store",level:3},{value:"Transport",id:"transport",level:3},{value:"Waku",id:"waku",level:3},{value:"Waku message",id:"waku-message",level:3},{value:"Waku message payload encryption",id:"waku-message-payload-encryption",level:3},{value:"Waku network",id:"waku-network",level:3},{value:"Waku noise",id:"waku-noise",level:3}];function c(e){const n={a:"a",code:"code",h1:"h1",h3:"h3",header:"header",p:"p",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"waku-docs-glossary",children:"Waku Docs Glossary"})}),"\n",(0,s.jsx)(n.p,{children:"Definitions and usage of the terminology used in the Waku ecosystem."}),"\n",(0,s.jsx)(n.h3,{id:"bootstrapping",children:"Bootstrapping"}),"\n",(0,s.jsxs)(n.p,{children:["Bootstrapping is the initial entry point of a ",(0,s.jsx)(n.a,{href:"#node",children:"node"})," to the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),". Once connected, other ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"peer discovery"})," methods can be employed to locate other ",(0,s.jsx)(n.a,{href:"#peer",children:"peers"})," in the network."]}),"\n",(0,s.jsx)(n.h3,{id:"content-topic",children:(0,s.jsx)(n.a,{href:"/learn/concepts/content-topics",children:"Content topic"})}),"\n",(0,s.jsxs)(n.p,{children:["A content topic is a string attached to ",(0,s.jsx)(n.a,{href:"#waku-message",children:"messages"})," to enable ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocol-level"})," features like selective message processing and retrieval based on specific criteria."]}),"\n",(0,s.jsx)(n.h3,{id:"dappnode",children:(0,s.jsx)(n.a,{href:"https://dappnode.com/",children:"Dappnode"})}),"\n",(0,s.jsxs)(n.p,{children:["Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including ",(0,s.jsx)(n.a,{href:"#waku",children:"Waku"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"discv5",children:(0,s.jsx)(n.a,{href:"/learn/concepts/discv5",children:"Discv5"})}),"\n",(0,s.jsxs)(n.p,{children:["Discv5 is a ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"peer discovery"})," mechanism using a Distributed Hash Table (DHT) to store ",(0,s.jsx)(n.a,{href:"#enr",children:"ENR"})," records, providing censorship resistance, load distribution, and enhanced network resilience."]}),"\n",(0,s.jsx)(n.h3,{id:"dns-discovery",children:(0,s.jsx)(n.a,{href:"/learn/concepts/dns-discovery",children:"DNS discovery"})}),"\n",(0,s.jsxs)(n.p,{children:["DNS discovery is a ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"peer discovery"})," mechanism that allows the retrieval of an ",(0,s.jsx)(n.a,{href:"#enr",children:"ENR"})," tree from the TXT field of a domain name, enabling the storage of ",(0,s.jsx)(n.a,{href:"#node",children:"node"})," connection details and promoting decentralisation."]}),"\n",(0,s.jsx)(n.h3,{id:"enr",children:(0,s.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-778",children:"ENR"})}),"\n",(0,s.jsxs)(n.p,{children:["Ethereum Node Record (ENR) is a specification used to represent and identify ",(0,s.jsx)(n.a,{href:"#node",children:"nodes"}),", facilitating ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"discovery"})," and communication within the network. Besides connection details, ",(0,s.jsx)(n.code,{children:"ENR"})," also includes node configuration information like enabled protocol and shards."]}),"\n",(0,s.jsx)(n.h3,{id:"filter",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#filter",children:"Filter"})}),"\n",(0,s.jsxs)(n.p,{children:["Filter is a ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocol"})," that enables ",(0,s.jsx)(n.a,{href:"#light-node",children:"light nodes"})," to selectively subscribe to specific ",(0,s.jsx)(n.a,{href:"#waku-message",children:"messages"})," transmitted by ",(0,s.jsx)(n.a,{href:"#peer",children:"peers"})," using ",(0,s.jsx)(n.a,{href:"#content-topic",children:"content topics"}),". It is designed to be a lightweight alternative for accessing the ",(0,s.jsx)(n.a,{href:"#relay",children:"Relay"})," network."]}),"\n",(0,s.jsx)(n.h3,{id:"gossipsub",children:(0,s.jsx)(n.a,{href:"/learn/concepts/network-domains#gossip-domain",children:"GossipSub"})}),"\n",(0,s.jsxs)(n.p,{children:["GossipSub is a ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocol"})," for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems."]}),"\n",(0,s.jsx)(n.h3,{id:"libp2p",children:(0,s.jsx)(n.a,{href:"https://libp2p.io/",children:"Libp2p"})}),"\n",(0,s.jsx)(n.p,{children:"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols."}),"\n",(0,s.jsx)(n.h3,{id:"light-node",children:"Light node"}),"\n",(0,s.jsxs)(n.p,{children:["A light node is a ",(0,s.jsx)(n.a,{href:"#resource-limited",children:"resource-limited"})," device or client that leverages service nodes to access the ",(0,s.jsx)(n.a,{href:"#relay",children:"Relay"})," network."]}),"\n",(0,s.jsx)(n.h3,{id:"light-push",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#light-push",children:"Light push"})}),"\n",(0,s.jsxs)(n.p,{children:["Light push is a protocol enabling ",(0,s.jsx)(n.a,{href:"#light-node",children:"light nodes"})," to send ",(0,s.jsx)(n.a,{href:"#waku-message",children:"messages"})," to the ",(0,s.jsx)(n.a,{href:"#relay",children:"Relay"})," network and receive acknowledgements confirming that a ",(0,s.jsx)(n.a,{href:"#peer",children:"peer"})," has received them."]}),"\n",(0,s.jsx)(n.h3,{id:"mostly-offline",children:"Mostly offline"}),"\n",(0,s.jsxs)(n.p,{children:["Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),". Examples include browsers and mobile phones."]}),"\n",(0,s.jsx)(n.h3,{id:"node",children:"Node"}),"\n",(0,s.jsxs)(n.p,{children:["A node is a device or client that implements Waku ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocols"})," and leverages the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"})," to enable secure and private peer-to-peer web3 communication."]}),"\n",(0,s.jsx)(n.h3,{id:"node-key",children:"Node key"}),"\n",(0,s.jsxs)(n.p,{children:["A node key is a ",(0,s.jsx)(n.a,{href:"https://en.bitcoin.it/wiki/Secp256k1",children:"Secp256k1"})," (64-char hex string) private key for generating the ",(0,s.jsx)(n.a,{href:"#peer-id",children:"PeerID"}),", ",(0,s.jsx)(n.a,{href:"#transport",children:"listening"})," addresses, and ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"discovery"})," addresses of a Waku node."]}),"\n",(0,s.jsx)(n.h3,{id:"out-of-band",children:"Out-of-band"}),"\n",(0,s.jsx)(n.p,{children:"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security."}),"\n",(0,s.jsx)(n.h3,{id:"payload",children:"Payload"}),"\n",(0,s.jsxs)(n.p,{children:["The payload field in a ",(0,s.jsx)(n.a,{href:"#waku-message",children:"Waku Message"})," contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in ",(0,s.jsx)(n.a,{href:"#waku-message-payload-encryption",children:"Waku Message Payload Encryption"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"peer",children:"Peer"}),"\n",(0,s.jsxs)(n.p,{children:["A peer refers to other ",(0,s.jsx)(n.a,{href:"#node",children:"nodes"})," and participants of the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"})," with whom communication and interaction are possible."]}),"\n",(0,s.jsx)(n.h3,{id:"peer-discovery",children:(0,s.jsx)(n.a,{href:"/learn/concepts/peer-discovery",children:"Peer discovery"})}),"\n",(0,s.jsxs)(n.p,{children:["Peer discovery is when a ",(0,s.jsx)(n.a,{href:"#node",children:"node"})," locates and gets information about other ",(0,s.jsx)(n.a,{href:"#peer",children:"peers"})," in the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"peer-exchange",children:(0,s.jsx)(n.a,{href:"/learn/concepts/peer-exchange",children:"Peer exchange"})}),"\n",(0,s.jsxs)(n.p,{children:["Peer exchange is a ",(0,s.jsx)(n.a,{href:"#peer-discovery",children:"peer discovery"})," mechanism that enables ",(0,s.jsx)(n.a,{href:"#light-node",children:"light nodes"})," to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on ",(0,s.jsx)(n.a,{href:"#discv5",children:"Discv5"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"peer-id",children:"Peer ID"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"PeerID"})," is the unique identifier of a ",(0,s.jsx)(n.a,{href:"#node",children:"node"})," in the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"})," generated from the cryptographic hash of the node's public key."]}),"\n",(0,s.jsx)(n.h3,{id:"protocol",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols",children:"Protocol"})}),"\n",(0,s.jsxs)(n.p,{children:["A protocol is a set of rules that enables ",(0,s.jsx)(n.a,{href:"#node",children:"nodes"})," within the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"})," to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more."]}),"\n",(0,s.jsx)(n.h3,{id:"pubsub",children:"Pub/Sub"}),"\n",(0,s.jsx)(n.p,{children:"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication."}),"\n",(0,s.jsx)(n.h3,{id:"pubsub-topic",children:"Pub/Sub topic"}),"\n",(0,s.jsxs)(n.p,{children:["A Pub/Sub topic is a string that serves as an identifier for the topic of interest among ",(0,s.jsx)(n.a,{href:"#gossipsub",children:"GossipSub"})," peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic."]}),"\n",(0,s.jsx)(n.h3,{id:"rate-limit-nullifiers",children:(0,s.jsx)(n.a,{href:"https://rate-limiting-nullifier.github.io/rln-docs/",children:"Rate limit nullifiers"})}),"\n",(0,s.jsx)(n.p,{children:"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity."}),"\n",(0,s.jsx)(n.h3,{id:"relay",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#relay",children:"Relay"})}),"\n",(0,s.jsxs)(n.p,{children:["Relay is a ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocol"})," that extends the ",(0,s.jsx)(n.a,{href:"#gossipsub",children:"GossipSub protocol"})," to enable secure and censorship resistant ",(0,s.jsx)(n.a,{href:"#waku-message",children:"message"})," sending and receiving among ",(0,s.jsx)(n.a,{href:"#peer",children:"peers"})," while preserving privacy. It also scales the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"})," to accommodate many nodes efficiently."]}),"\n",(0,s.jsx)(n.h3,{id:"resource-limited",children:"Resource-limited"}),"\n",(0,s.jsx)(n.p,{children:"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power."}),"\n",(0,s.jsx)(n.h3,{id:"rln-relay",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#rln-relay",children:"RLN relay"})}),"\n",(0,s.jsxs)(n.p,{children:["RLN Relay is an extension of the ",(0,s.jsx)(n.a,{href:"#relay",children:"Relay protocol"})," that uses ",(0,s.jsx)(n.a,{href:"#rate-limit-nullifiers",children:"Rate Limit Nullifiers (RLN)"})," to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers."]}),"\n",(0,s.jsx)(n.h3,{id:"sdk",children:(0,s.jsx)(n.a,{href:"/",children:"SDK"})}),"\n",(0,s.jsx)(n.p,{children:"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications."}),"\n",(0,s.jsx)(n.h3,{id:"store",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#store",children:"Store"})}),"\n",(0,s.jsxs)(n.p,{children:["Store is a ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocol"})," that enables the storage of relayed ",(0,s.jsx)(n.a,{href:"#waku-message",children:"messages"})," in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network."]}),"\n",(0,s.jsx)(n.h3,{id:"transport",children:(0,s.jsx)(n.a,{href:"/learn/concepts/transports",children:"Transport"})}),"\n",(0,s.jsxs)(n.p,{children:["A transport is a network mechanism that establishes connections between ",(0,s.jsx)(n.a,{href:"#peer",children:"peers"})," and enables efficient transmission, routing, and delivery of data packets."]}),"\n",(0,s.jsx)(n.h3,{id:"waku",children:"Waku"}),"\n",(0,s.jsxs)(n.p,{children:["Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication ",(0,s.jsx)(n.a,{href:"#protocol",children:"protocols"})," designed to operate in ",(0,s.jsx)(n.a,{href:"#resource-limited",children:"resource-limited"})," environments and suitable for ",(0,s.jsx)(n.a,{href:"#node",children:"node"})," or desktop application use. Additionally, these protocols collectively form the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"waku-message",children:(0,s.jsx)(n.a,{href:"/learn/concepts/protocols#waku-message",children:"Waku message"})}),"\n",(0,s.jsxs)(n.p,{children:["Waku Message defines the structure of messages in the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),", including the ",(0,s.jsx)(n.a,{href:"#content-topic",children:"content topic"}),", ",(0,s.jsx)(n.a,{href:"#payload",children:"payload"}),", and metadata for application-specific processing."]}),"\n",(0,s.jsx)(n.h3,{id:"waku-message-payload-encryption",children:(0,s.jsx)(n.a,{href:"https://rfc.vac.dev/waku/standards/application/26/payload",children:"Waku message payload encryption"})}),"\n",(0,s.jsxs)(n.p,{children:["Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the ",(0,s.jsx)(n.a,{href:"#waku-network",children:"Waku Network"}),". It covers encryption, decryption, and signing methods for message ",(0,s.jsx)(n.a,{href:"#payload",children:"payloads"}),", focusing on confidentiality, authenticity, integrity, and unlinkability."]}),"\n",(0,s.jsx)(n.h3,{id:"waku-network",children:(0,s.jsx)(n.a,{href:"/learn/",children:"Waku network"})}),"\n",(0,s.jsxs)(n.p,{children:["The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to ",(0,s.jsx)(n.a,{href:"#resource-limited",children:"resource limited"})," devices."]}),"\n",(0,s.jsx)(n.h3,{id:"waku-noise",children:"Waku noise"}),"\n",(0,s.jsxs)(n.p,{children:["Waku Noise is a specified way to use the ",(0,s.jsx)(n.a,{href:"http://noiseprotocol.org/",children:"Noise Protocol Framework"})," to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties."]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}}}]);