mirror of
https://github.com/vacp2p/rfc-index.git
synced 2026-01-09 22:08:07 -05:00
558 lines
50 KiB
HTML
558 lines
50 KiB
HTML
<!DOCTYPE HTML>
|
|
<html lang="en" class="ayu" dir="ltr">
|
|
<head>
|
|
<!-- Book generated using mdBook -->
|
|
<meta charset="UTF-8">
|
|
<title>Waku Usage - Vac RFC</title>
|
|
|
|
|
|
<!-- Custom HTML head -->
|
|
|
|
<meta name="description" content="">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
<link rel="icon" href="../../favicon.svg">
|
|
<link rel="shortcut icon" href="../../favicon.png">
|
|
<link rel="stylesheet" href="../../css/variables.css">
|
|
<link rel="stylesheet" href="../../css/general.css">
|
|
<link rel="stylesheet" href="../../css/chrome.css">
|
|
<link rel="stylesheet" href="../../css/print.css" media="print">
|
|
|
|
<!-- Fonts -->
|
|
<link rel="stylesheet" href="../../FontAwesome/css/font-awesome.css">
|
|
<link rel="stylesheet" href="../../fonts/fonts.css">
|
|
|
|
<!-- Highlight.js Stylesheets -->
|
|
<link rel="stylesheet" href="../../highlight.css">
|
|
<link rel="stylesheet" href="../../tomorrow-night.css">
|
|
<link rel="stylesheet" href="../../ayu-highlight.css">
|
|
|
|
<!-- Custom theme stylesheets -->
|
|
<link rel="stylesheet" href="../../custom.css">
|
|
|
|
</head>
|
|
<body class="sidebar-visible no-js">
|
|
<div id="body-container">
|
|
<!-- Provide site root to javascript -->
|
|
<script>
|
|
var path_to_root = "../../";
|
|
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "ayu";
|
|
</script>
|
|
|
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
|
<script>
|
|
try {
|
|
var theme = localStorage.getItem('mdbook-theme');
|
|
var sidebar = localStorage.getItem('mdbook-sidebar');
|
|
|
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
|
}
|
|
|
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
|
}
|
|
} catch (e) { }
|
|
</script>
|
|
|
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
|
<script>
|
|
var theme;
|
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
|
var html = document.querySelector('html');
|
|
html.classList.remove('ayu')
|
|
html.classList.add(theme);
|
|
var body = document.querySelector('body');
|
|
body.classList.remove('no-js')
|
|
body.classList.add('js');
|
|
</script>
|
|
|
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
|
|
|
<!-- Hide / unhide sidebar before it is displayed -->
|
|
<script>
|
|
var body = document.querySelector('body');
|
|
var sidebar = null;
|
|
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
|
if (document.body.clientWidth >= 1080) {
|
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
|
sidebar = sidebar || 'visible';
|
|
} else {
|
|
sidebar = 'hidden';
|
|
}
|
|
sidebar_toggle.checked = sidebar === 'visible';
|
|
body.classList.remove('sidebar-visible');
|
|
body.classList.add("sidebar-" + sidebar);
|
|
</script>
|
|
|
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
|
<div class="sidebar-scrollbox">
|
|
<ol class="chapter"><li class="chapter-item expanded affix "><a href="../../index.html">Introduction</a></li><li class="chapter-item expanded "><a href="../../vac/index.html"><strong aria-hidden="true">1.</strong> Vac</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../vac/1/coss.html"><strong aria-hidden="true">1.1.</strong> 1/COSS</a></li><li class="chapter-item expanded "><a href="../../vac/2/mvds.html"><strong aria-hidden="true">1.2.</strong> 2/MVDS</a></li><li class="chapter-item expanded "><a href="../../vac/3/remote-log.html"><strong aria-hidden="true">1.3.</strong> 3/Remote Log</a></li><li class="chapter-item expanded "><a href="../../vac/4/mvds-meta.html"><strong aria-hidden="true">1.4.</strong> 4/MVDS Meta</a></li><li class="chapter-item expanded "><a href="../../vac/25/libp2p-dns-discovery.html"><strong aria-hidden="true">1.5.</strong> 25/Libp2p DNS Discovery</a></li><li class="chapter-item expanded "><a href="../../vac/32/rln-v1.html"><strong aria-hidden="true">1.6.</strong> 32/RLN-V1</a></li><li class="chapter-item expanded "><a href="../../vac/raw/index.html"><strong aria-hidden="true">1.7.</strong> Raw</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../vac/raw/consensus-hashgraphlike.html"><strong aria-hidden="true">1.7.1.</strong> Consensus Hashgraphlike</a></li><li class="chapter-item expanded "><a href="../../vac/raw/decentralized-messaging-ethereum.html"><strong aria-hidden="true">1.7.2.</strong> Decentralized Messaging Ethereum</a></li><li class="chapter-item expanded "><a href="../../vac/raw/eth-mls-offchain.html"><strong aria-hidden="true">1.7.3.</strong> ETH MLS Offchain</a></li><li class="chapter-item expanded "><a href="../../vac/raw/eth-mls-onchain.html"><strong aria-hidden="true">1.7.4.</strong> ETH MLS Onchain</a></li><li class="chapter-item expanded "><a href="../../vac/raw/deleted/eth-secpm.html"><strong aria-hidden="true">1.7.5.</strong> ETH SecPM</a></li><li class="chapter-item expanded "><a href="../../vac/raw/gossipsub-tor-push.html"><strong aria-hidden="true">1.7.6.</strong> Gossipsub Tor Push</a></li><li class="chapter-item expanded "><a href="../../vac/raw/logos-capability-discovery.html"><strong aria-hidden="true">1.7.7.</strong> Logos Capability Discovery</a></li><li class="chapter-item expanded "><a href="../../vac/raw/mix.html"><strong aria-hidden="true">1.7.8.</strong> Mix</a></li><li class="chapter-item expanded "><a href="../../vac/raw/noise-x3dh-double-ratchet.html"><strong aria-hidden="true">1.7.9.</strong> Noise X3DH Double Ratchet</a></li><li class="chapter-item expanded "><a href="../../vac/raw/rln-interep-spec.html"><strong aria-hidden="true">1.7.10.</strong> RLN Interep Spec</a></li><li class="chapter-item expanded "><a href="../../vac/raw/rln-stealth-commitments.html"><strong aria-hidden="true">1.7.11.</strong> RLN Stealth Commitments</a></li><li class="chapter-item expanded "><a href="../../vac/raw/rln-v2.html"><strong aria-hidden="true">1.7.12.</strong> RLN-V2</a></li><li class="chapter-item expanded "><a href="../../vac/raw/sds.html"><strong aria-hidden="true">1.7.13.</strong> SDS</a></li></ol></li><li class="chapter-item expanded "><a href="../../vac/template.html"><strong aria-hidden="true">1.8.</strong> Template</a></li></ol></li><li class="chapter-item expanded "><a href="../../waku/index.html"><strong aria-hidden="true">2.</strong> Waku</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/standards/core/index.html"><strong aria-hidden="true">2.1.</strong> Standards - Core</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/standards/core/10/waku2.html"><strong aria-hidden="true">2.1.1.</strong> 10/Waku2</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/11/relay.html"><strong aria-hidden="true">2.1.2.</strong> 11/Relay</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/12/filter.html"><strong aria-hidden="true">2.1.3.</strong> 12/Filter</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/13/store.html"><strong aria-hidden="true">2.1.4.</strong> 13/Store</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/14/message.html"><strong aria-hidden="true">2.1.5.</strong> 14/Message</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/15/bridge.html"><strong aria-hidden="true">2.1.6.</strong> 15/Bridge</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/17/rln-relay.html"><strong aria-hidden="true">2.1.7.</strong> 17/RLN Relay</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/19/lightpush.html"><strong aria-hidden="true">2.1.8.</strong> 19/Lightpush</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/31/enr.html"><strong aria-hidden="true">2.1.9.</strong> 31/ENR</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/33/discv5.html"><strong aria-hidden="true">2.1.10.</strong> 33/Discv5</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/34/peer-exchange.html"><strong aria-hidden="true">2.1.11.</strong> 34/Peer Exchange</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/36/bindings-api.html"><strong aria-hidden="true">2.1.12.</strong> 36/Bindings API</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/64/network.html"><strong aria-hidden="true">2.1.13.</strong> 64/Network</a></li><li class="chapter-item expanded "><a href="../../waku/standards/core/66/metadata.html"><strong aria-hidden="true">2.1.14.</strong> 66/Metadata</a></li></ol></li><li class="chapter-item expanded "><a href="../../waku/standards/application/index.html"><strong aria-hidden="true">2.2.</strong> Standards - Application</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/standards/application/20/toy-eth-pm.html"><strong aria-hidden="true">2.2.1.</strong> 20/Toy ETH PM</a></li><li class="chapter-item expanded "><a href="../../waku/standards/application/26/payload.html"><strong aria-hidden="true">2.2.2.</strong> 26/Payload</a></li><li class="chapter-item expanded "><a href="../../waku/standards/application/53/x3dh.html"><strong aria-hidden="true">2.2.3.</strong> 53/X3DH</a></li><li class="chapter-item expanded "><a href="../../waku/standards/application/54/x3dh-sessions.html"><strong aria-hidden="true">2.2.4.</strong> 54/X3DH Sessions</a></li></ol></li><li class="chapter-item expanded "><a href="../../waku/standards/legacy/index.html"><strong aria-hidden="true">2.3.</strong> Standards - Legacy</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/standards/legacy/6/waku1.html"><strong aria-hidden="true">2.3.1.</strong> 6/Waku1</a></li><li class="chapter-item expanded "><a href="../../waku/standards/legacy/7/data.html"><strong aria-hidden="true">2.3.2.</strong> 7/Data</a></li><li class="chapter-item expanded "><a href="../../waku/standards/legacy/8/mail.html"><strong aria-hidden="true">2.3.3.</strong> 8/Mail</a></li><li class="chapter-item expanded "><a href="../../waku/standards/legacy/9/rpc.html"><strong aria-hidden="true">2.3.4.</strong> 9/RPC</a></li></ol></li><li class="chapter-item expanded "><a href="../../waku/informational/index.html"><strong aria-hidden="true">2.4.</strong> Informational</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/informational/22/toy-chat.html"><strong aria-hidden="true">2.4.1.</strong> 22/Toy Chat</a></li><li class="chapter-item expanded "><a href="../../waku/informational/23/topics.html"><strong aria-hidden="true">2.4.2.</strong> 23/Topics</a></li><li class="chapter-item expanded "><a href="../../waku/informational/27/peers.html"><strong aria-hidden="true">2.4.3.</strong> 27/Peers</a></li><li class="chapter-item expanded "><a href="../../waku/informational/29/config.html"><strong aria-hidden="true">2.4.4.</strong> 29/Config</a></li><li class="chapter-item expanded "><a href="../../waku/informational/30/adaptive-nodes.html"><strong aria-hidden="true">2.4.5.</strong> 30/Adaptive Nodes</a></li></ol></li><li class="chapter-item expanded "><a href="../../waku/deprecated/index.html"><strong aria-hidden="true">2.5.</strong> Deprecated</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../waku/deprecated/5/waku0.html"><strong aria-hidden="true">2.5.1.</strong> 5/Waku0</a></li><li class="chapter-item expanded "><a href="../../waku/deprecated/16/rpc.html"><strong aria-hidden="true">2.5.2.</strong> 16/RPC</a></li><li class="chapter-item expanded "><a href="../../waku/deprecated/18/swap.html"><strong aria-hidden="true">2.5.3.</strong> 18/Swap</a></li><li class="chapter-item expanded "><a href="../../waku/deprecated/fault-tolerant-store.html"><strong aria-hidden="true">2.5.4.</strong> Fault Tolerant Store</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="../../nomos/index.html"><strong aria-hidden="true">3.</strong> Nomos</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../nomos/raw/index.html"><strong aria-hidden="true">3.1.</strong> Raw</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../nomos/raw/nomosda-encoding.html"><strong aria-hidden="true">3.1.1.</strong> NomosDA Encoding</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/nomosda-network.html"><strong aria-hidden="true">3.1.2.</strong> NomosDA Network</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/p2p-hardware-requirements.html"><strong aria-hidden="true">3.1.3.</strong> P2P Hardware Requirements</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/p2p-nat-solution.html"><strong aria-hidden="true">3.1.4.</strong> P2P NAT Solution</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/p2p-network-bootstrapping.html"><strong aria-hidden="true">3.1.5.</strong> P2P Network Bootstrapping</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/p2p-network.html"><strong aria-hidden="true">3.1.6.</strong> P2P Network</a></li><li class="chapter-item expanded "><a href="../../nomos/raw/sdp.html"><strong aria-hidden="true">3.1.7.</strong> SDP</a></li></ol></li><li class="chapter-item expanded "><a href="../../nomos/deprecated/index.html"><strong aria-hidden="true">3.2.</strong> Deprecated</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../nomos/deprecated/claro.html"><strong aria-hidden="true">3.2.1.</strong> Claro</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="../../codex/index.html"><strong aria-hidden="true">4.</strong> Codex</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../codex/raw/index.html"><strong aria-hidden="true">4.1.</strong> Raw</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../codex/raw/codex-block-exchange.html"><strong aria-hidden="true">4.1.1.</strong> Block Exchange</a></li><li class="chapter-item expanded "><a href="../../codex/raw/codex-marketplace.html"><strong aria-hidden="true">4.1.2.</strong> Marketplace</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="../../status/index.html"><strong aria-hidden="true">5.</strong> Status</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../status/24/curation.html"><strong aria-hidden="true">5.1.</strong> 24/Curation</a></li><li class="chapter-item expanded "><a href="../../status/28/featuring.html"><strong aria-hidden="true">5.2.</strong> 28/Featuring</a></li><li class="chapter-item expanded "><a href="../../status/55/1to1-chat.html"><strong aria-hidden="true">5.3.</strong> 55/1-to-1 Chat</a></li><li class="chapter-item expanded "><a href="../../status/56/communities.html"><strong aria-hidden="true">5.4.</strong> 56/Communities</a></li><li class="chapter-item expanded "><a href="../../status/61/community-history-service.html"><strong aria-hidden="true">5.5.</strong> 61/Community History Service</a></li><li class="chapter-item expanded "><a href="../../status/62/payloads.html"><strong aria-hidden="true">5.6.</strong> 62/Payloads</a></li><li class="chapter-item expanded "><a href="../../status/63/keycard-usage.html"><strong aria-hidden="true">5.7.</strong> 63/Keycard Usage</a></li><li class="chapter-item expanded "><a href="../../status/65/account-address.html"><strong aria-hidden="true">5.8.</strong> 65/Account Address</a></li><li class="chapter-item expanded "><a href="../../status/71/push-notification-server.html"><strong aria-hidden="true">5.9.</strong> 71/Push Notification Server</a></li><li class="chapter-item expanded "><a href="../../status/raw/index.html"><strong aria-hidden="true">5.10.</strong> Raw</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../status/raw/simple-scaling.html"><strong aria-hidden="true">5.10.1.</strong> Simple Scaling</a></li><li class="chapter-item expanded "><a href="../../status/raw/status-app-protocols.html"><strong aria-hidden="true">5.10.2.</strong> Status App Protocols</a></li><li class="chapter-item expanded "><a href="../../status/raw/status-mvds.html"><strong aria-hidden="true">5.10.3.</strong> Status MVDS</a></li><li class="chapter-item expanded "><a href="../../status/raw/url-data.html"><strong aria-hidden="true">5.10.4.</strong> URL Data</a></li><li class="chapter-item expanded "><a href="../../status/raw/url-scheme.html"><strong aria-hidden="true">5.10.5.</strong> URL Scheme</a></li></ol></li><li class="chapter-item expanded "><a href="../../status/deprecated/index.html"><strong aria-hidden="true">5.11.</strong> Deprecated</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../status/deprecated/3rd-party.html"><strong aria-hidden="true">5.11.1.</strong> 3rd Party</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/account.html"><strong aria-hidden="true">5.11.2.</strong> Account</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/client.html"><strong aria-hidden="true">5.11.3.</strong> Client</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/dapp-browser-API-usage.html"><strong aria-hidden="true">5.11.4.</strong> Dapp Browser API Usage</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/eips.html"><strong aria-hidden="true">5.11.5.</strong> EIPs</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/ethereum-usage.html"><strong aria-hidden="true">5.11.6.</strong> Ethereum Usage</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/group-chat.html"><strong aria-hidden="true">5.11.7.</strong> Group Chat</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/IPFS-gateway-for-sticker-Pack.html"><strong aria-hidden="true">5.11.8.</strong> IPFS Gateway for Sticker Pack</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/keycard-usage-for-wallet-and-chat-keys.html"><strong aria-hidden="true">5.11.9.</strong> Keycard Usage for Wallet and Chat Keys</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/notifications.html"><strong aria-hidden="true">5.11.10.</strong> Notifications</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/payloads.html"><strong aria-hidden="true">5.11.11.</strong> Payloads</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/push-notification-server.html"><strong aria-hidden="true">5.11.12.</strong> Push Notification Server</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/secure-transport.html"><strong aria-hidden="true">5.11.13.</strong> Secure Transport</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/waku-mailserver.html"><strong aria-hidden="true">5.11.14.</strong> Waku Mailserver</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/waku-usage.html" class="active"><strong aria-hidden="true">5.11.15.</strong> Waku Usage</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/whisper-mailserver.html"><strong aria-hidden="true">5.11.16.</strong> Whisper Mailserver</a></li><li class="chapter-item expanded "><a href="../../status/deprecated/whisper-usage.html"><strong aria-hidden="true">5.11.17.</strong> Whisper Usage</a></li></ol></li></ol></li></ol>
|
|
</div>
|
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
|
<div class="sidebar-resize-indicator"></div>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Track and set sidebar scroll position -->
|
|
<script>
|
|
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
|
|
sidebarScrollbox.addEventListener('click', function(e) {
|
|
if (e.target.tagName === 'A') {
|
|
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
|
|
}
|
|
}, { passive: true });
|
|
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
|
|
sessionStorage.removeItem('sidebar-scroll');
|
|
if (sidebarScrollTop) {
|
|
// preserve sidebar scroll position when navigating via links within sidebar
|
|
sidebarScrollbox.scrollTop = sidebarScrollTop;
|
|
} else {
|
|
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
|
|
var activeSection = document.querySelector('#sidebar .active');
|
|
if (activeSection) {
|
|
activeSection.scrollIntoView({ block: 'center' });
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div id="page-wrapper" class="page-wrapper">
|
|
|
|
<div class="page">
|
|
<div id="menu-bar-hover-placeholder"></div>
|
|
<div id="menu-bar" class="menu-bar sticky">
|
|
<div class="left-buttons">
|
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
|
<i class="fa fa-bars"></i>
|
|
</label>
|
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
|
<i class="fa fa-paint-brush"></i>
|
|
</button>
|
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
|
</ul>
|
|
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
|
|
<i class="fa fa-search"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<h1 class="menu-title">Vac RFC</h1>
|
|
|
|
<div class="right-buttons">
|
|
<a href="../../print.html" title="Print this book" aria-label="Print this book">
|
|
<i id="print-button" class="fa fa-print"></i>
|
|
</a>
|
|
<a href="https://github.com/vacp2p/rfc-index" title="Git repository" aria-label="Git repository">
|
|
<i id="git-repository-button" class="fa fa-github"></i>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div id="search-wrapper" class="hidden">
|
|
<form id="searchbar-outer" class="searchbar-outer">
|
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
|
</form>
|
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
|
<div id="searchresults-header" class="searchresults-header"></div>
|
|
<ul id="searchresults">
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
|
<script>
|
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
|
});
|
|
</script>
|
|
|
|
<div id="content" class="content">
|
|
<main>
|
|
<h1 id="waku-usage"><a class="header" href="#waku-usage">WAKU-USAGE</a></h1>
|
|
<div class="table-wrapper"><table><thead><tr><th>Field</th><th>Value</th></tr></thead><tbody>
|
|
<tr><td>Name</td><td>Waku Usage</td></tr>
|
|
<tr><td>Status</td><td>deprecated</td></tr>
|
|
<tr><td>Editor</td><td>Filip Dimitrijevic <a href="mailto:filip@status.im">filip@status.im</a></td></tr>
|
|
<tr><td>Contributors</td><td>Adam Babik <a href="mailto:adam@status.im">adam@status.im</a>, Corey Petty <a href="mailto:corey@status.im">corey@status.im</a>, Oskar Thorén <a href="mailto:oskar@status.im">oskar@status.im</a>, Samuel Hawksby-Robinson <a href="mailto:samuel@status.im">samuel@status.im</a></td></tr>
|
|
</tbody></table>
|
|
</div><!-- timeline:start -->
|
|
<h2 id="timeline"><a class="header" href="#timeline">Timeline</a></h2>
|
|
<ul>
|
|
<li><strong>2025-12-22</strong> — <a href="https://github.com/vacp2p/rfc-index/blob/0f1855edcf68ef982c4ce478b67d660809aa9830/docs/status/deprecated/waku-usage.md"><code>0f1855e</code></a> — Chore/fix headers (#239)</li>
|
|
<li><strong>2025-12-22</strong> — <a href="https://github.com/vacp2p/rfc-index/blob/b1a578393edf8487ccc97a5f25b25af9bf41efb3/docs/status/deprecated/waku-usage.md"><code>b1a5783</code></a> — Chore/mdbook updates (#237)</li>
|
|
<li><strong>2025-12-18</strong> — <a href="https://github.com/vacp2p/rfc-index/blob/d03e699084774ebecef9c6d4662498907c5e2080/docs/status/deprecated/waku-usage.md"><code>d03e699</code></a> — ci: add mdBook configuration (#233)</li>
|
|
<li><strong>2025-04-29</strong> — <a href="https://github.com/vacp2p/rfc-index/blob/614348a4982aa9e519ccff8b8fbcd4c554683288/status/deprecated/waku-usage.md"><code>614348a</code></a> — Status deprecated update2 (#134)</li>
|
|
</ul>
|
|
<!-- timeline:end -->
|
|
<h2 id="abstract"><a class="header" href="#abstract">Abstract</a></h2>
|
|
<p>Status uses <a href="/waku/standards/legacy/6/waku1.html">Waku</a> to provide privacy-preserving routing
|
|
and messaging on top of devP2P.
|
|
Waku uses topics to partition its messages,
|
|
and these are leveraged for all chat capabilities.
|
|
In the case of public chats, the channel name maps directly to its Waku topic.
|
|
This allows anyone to listen on a single channel.</p>
|
|
<p>Additionally, since anyone can receive Waku envelopes,
|
|
it relies on the ability to decrypt messages to decide who is the correct recipient.
|
|
Status nodes do not rely upon this property,
|
|
and implement another secure transport layer on top of Whisper.</p>
|
|
<h2 id="reason"><a class="header" href="#reason">Reason</a></h2>
|
|
<p>Provide routing, metadata protection, topic-based multicasting and basic
|
|
encryption properties to support asynchronous chat.</p>
|
|
<h2 id="terminology"><a class="header" href="#terminology">Terminology</a></h2>
|
|
<ul>
|
|
<li><em>Waku node</em>: an Ethereum node with Waku V1 enabled</li>
|
|
<li><em>Waku network</em>: a group of Waku nodes connected together through the internet connection and forming a graph</li>
|
|
<li><em>Message</em>: a decrypted Waku message</li>
|
|
<li><em>Offline message</em>: an archived envelope</li>
|
|
<li><em>Envelope</em>: an encrypted message with metadata like topic and Time-To-Live</li>
|
|
</ul>
|
|
<h2 id="waku-packets"><a class="header" href="#waku-packets">Waku packets</a></h2>
|
|
<div class="table-wrapper"><table><thead><tr><th>Packet Name</th><th style="text-align: right">Code</th><th>References</th></tr></thead><tbody>
|
|
<tr><td>Status</td><td style="text-align: right">0</td><td><a href="status">Status</a>, <a href="/waku/standards/legacy/6/waku1.html#status">WAKU-1</a></td></tr>
|
|
<tr><td>Messages</td><td style="text-align: right">1</td><td><a href="/waku/standards/legacy/6/waku1.html#messages">WAKU-1</a></td></tr>
|
|
<tr><td>Batch Ack</td><td style="text-align: right">11</td><td>Undocumented. Marked for Deprecation</td></tr>
|
|
<tr><td>Message Response</td><td style="text-align: right">12</td><td><a href="/waku/standards/legacy/6/waku1.html#batch-ack-and-message-response">WAKU-1</a></td></tr>
|
|
<tr><td>Status Update</td><td style="text-align: right">22</td><td><a href="/waku/standards/legacy/6/waku1.html#status-update">WAKU-1</a></td></tr>
|
|
<tr><td>P2P Request Complete</td><td style="text-align: right">125</td><td><a href="/status/deprecated/waku-mailserver.html">4/WAKU-MAILSERVER</a></td></tr>
|
|
<tr><td>P2P Request</td><td style="text-align: right">126</td><td><a href="/status/deprecated/waku-mailserver.html">4/WAKU-MAILSERVER</a>, <a href="/waku/standards/legacy/6/waku1.html#p2p-request">WAKU-1</a></td></tr>
|
|
<tr><td>P2P Messages</td><td style="text-align: right">127</td><td><a href="/status/deprecated/waku-mailserver.html">4/WAKU-MAILSERVER</a>, <a href="/waku/standards/legacy/6/waku1.html#p2p-request-complete">WAKU-1</a></td></tr>
|
|
</tbody></table>
|
|
</div>
|
|
<h2 id="waku-node-configuration"><a class="header" href="#waku-node-configuration">Waku node configuration</a></h2>
|
|
<p>A Waku node must be properly configured to receive messages from Status clients.</p>
|
|
<p>Nodes use Waku's Proof Of Work algorithm to deter denial of service and various spam/flood attacks against the Whisper network.
|
|
The sender of a message must perform some work which in this case means processing time.
|
|
Because Status' main client is a mobile client, this easily leads to battery draining and poor performance of the app itself.
|
|
Hence, all clients MUST use the following Whisper node settings:</p>
|
|
<ul>
|
|
<li>proof-of-work requirement not larger than <code>0.002</code> for payloads less than 50,000 bytes</li>
|
|
<li>proof-of-work requirement not larger than <code>0.000002</code> for payloads greater than or equal to 50,000 bytes</li>
|
|
<li>time-to-live not lower than <code>10</code> (in seconds)</li>
|
|
</ul>
|
|
<h2 id="status"><a class="header" href="#status">Status</a></h2>
|
|
<p>Handshake is a RLP-encoded packet sent to a newly connected peer. It MUST start with a Status Code (<code>0x00</code>) and follow up with items:</p>
|
|
<pre><code class="language-golang">[
|
|
[ pow-requirement-key pow-requirement ]
|
|
[ bloom-filter-key bloom-filter ]
|
|
[ light-node-key light-node ]
|
|
[ confirmations-enabled-key confirmations-enabled ]
|
|
[ rate-limits-key rate-limits ]
|
|
[ topic-interest-key topic-interest ]
|
|
]
|
|
</code></pre>
|
|
<div class="table-wrapper"><table><thead><tr><th>Option Name</th><th>Key</th><th>Type</th><th>Description</th><th>References</th></tr></thead><tbody>
|
|
<tr><td><code>pow-requirement</code></td><td><code>0x00</code></td><td><code>uint64</code></td><td>minimum PoW accepted by the peer</td><td><a href="/waku/standards/legacy/6/waku1.html#pow-requirement-field">WAKU-1#pow-requirement</a></td></tr>
|
|
<tr><td><code>bloom-filter</code></td><td><code>0x01</code></td><td><code>[]byte</code></td><td>bloom filter of Waku topic accepted by the peer</td><td><a href="/waku/standards/legacy/6/waku1.html#bloom-filter-field">WAKU-1#bloom-filter</a></td></tr>
|
|
<tr><td><code>light-node</code></td><td><code>0x02</code></td><td><code>bool</code></td><td>when true, the peer won't forward envelopes through the Messages packet.</td><td><a href="/waku/standards/legacy/6/waku1.html#light-node">WAKU-1#light-node</a></td></tr>
|
|
<tr><td><code>confirmations-enabled</code></td><td><code>0x03</code></td><td><code>bool</code></td><td>when true, the peer will send message confirmations</td><td><a href="/waku/standards/legacy/6/waku1.html#confirmations-enabled-field">WAKU-1#confirmations-enabled-field</a></td></tr>
|
|
<tr><td><code>rate-limits</code></td><td><code>0x04</code></td><td></td><td>See <a href="/waku/standards/legacy/6/waku1.html#rate-limits-field">Rate limiting</a></td><td><a href="/waku/standards/legacy/6/waku1.html#rate-limits-field">WAKU-1#rate-limits</a></td></tr>
|
|
<tr><td><code>topic-interest</code></td><td><code>0x05</code></td><td><code>[10000][4]byte</code></td><td>Topic interest is used to share a node's interest in envelopes with specific topics. It does this in a more bandwidth considerate way, at the expense of some metadata protection. Peers MUST only send envelopes with specified topics.</td><td><a href="/waku/standards/legacy/6/waku1.html#topic-interest-field">WAKU-1#topic-interest</a>, <a href="https://github.com/vacp2p/research/tree/dcc71f4779be832d3b5ece9c4e11f1f7ec24aac2/whisper_scalability">the theoretical scaling model</a></td></tr>
|
|
</tbody></table>
|
|
</div><!-- TODO Add `light-node` and `confirmations-enabled` links when https://github.com/vacp2p/specs/pull/128 is merged -->
|
|
<h2 id="rate-limiting"><a class="header" href="#rate-limiting">Rate limiting</a></h2>
|
|
<p>In order to provide an optional very basic Denial-of-Service attack protection, each node SHOULD define its own rate limits.
|
|
The rate limits SHOULD be applied on IPs, peer IDs, and envelope topics.</p>
|
|
<p>Each node MAY decide to whitelist, i.e. do not rate limit, selected IPs or peer IDs.</p>
|
|
<p>If a peer exceeds node's rate limits, the connection between them MAY be dropped.</p>
|
|
<p>Each node SHOULD broadcast its rate limits to its peers using <code>rate limits</code> in <code>status-options</code> via packet code <code>0x00</code> or <code>0x22</code>. The rate limits is RLP-encoded information:</p>
|
|
<pre><code class="language-golang">[ IP limits, PeerID limits, Topic limits ]
|
|
</code></pre>
|
|
<p><code>IP limits</code>: 4-byte wide unsigned integer
|
|
<code>PeerID limits</code>: 4-byte wide unsigned integer
|
|
<code>Topic limits</code>: 4-byte wide unsigned integer</p>
|
|
<p>The rate limits MAY also be sent as an optional parameter in the handshake.</p>
|
|
<p>Each node SHOULD respect rate limits advertised by its peers. The number of packets SHOULD be throttled in order not to exceed peer's rate limits.
|
|
If the limit gets exceeded, the connection MAY be dropped by the peer.</p>
|
|
<h2 id="keys-management"><a class="header" href="#keys-management">Keys management</a></h2>
|
|
<p>The protocol requires a key (symmetric or asymmetric) for the following actions:</p>
|
|
<ul>
|
|
<li>signing & verifying messages (asymmetric key)</li>
|
|
<li>encrypting & decrypting messages (asymmetric or symmetric key).</li>
|
|
</ul>
|
|
<p>As nodes require asymmetric keys and symmetric keys to process incoming messages,
|
|
they must be available all the time and are stored in memory.</p>
|
|
<p>Keys management for PFS is described in <a href="/status/deprecated/secure-transport.html">5/SECURE-TRANSPORT</a>.</p>
|
|
<p>The Status protocols uses a few particular Waku topics to achieve its goals.</p>
|
|
<h3 id="contact-code-topic"><a class="header" href="#contact-code-topic">Contact code topic</a></h3>
|
|
<p>Nodes use the contact code topic to facilitate the discovery of X3DH bundles so that the first message can be PFS-encrypted.</p>
|
|
<p>Each user publishes periodically to this topic. If user A wants to contact user B, she SHOULD look for their bundle on this contact code topic.</p>
|
|
<p>Contact code topic MUST be created following the algorithm below:</p>
|
|
<pre><code class="language-golang">contactCode := "0x" + hexEncode(activePublicKey) + "-contact-code"
|
|
|
|
var hash []byte = keccak256(contactCode)
|
|
var topicLen int = 4
|
|
|
|
if len(hash) < topicLen {
|
|
topicLen = len(hash)
|
|
}
|
|
|
|
var topic [4]byte
|
|
for i = 0; i < topicLen; i++ {
|
|
topic[i] = hash[i]
|
|
}
|
|
</code></pre>
|
|
<h3 id="partitioned-topic"><a class="header" href="#partitioned-topic">Partitioned topic</a></h3>
|
|
<p>Waku is broadcast-based protocol. In theory, everyone could communicate using a single topic but that would be extremely inefficient.
|
|
Opposite would be using a unique topic for each conversation, however,
|
|
this brings privacy concerns because it would be much easier to detect whether and when two parties have an active conversation.</p>
|
|
<p>Nodes use partitioned topics to broadcast private messages efficiently.
|
|
By selecting a number of topic, it is possible to balance efficiency and privacy.</p>
|
|
<p>Currently, nodes set the number of partitioned topics to <code>5000</code>. They MUST be generated following the algorithm below:</p>
|
|
<pre><code class="language-golang">var partitionsNum *big.Int = big.NewInt(5000)
|
|
var partition *big.Int = big.NewInt(0).Mod(publicKey.X, partitionsNum)
|
|
|
|
partitionTopic := "contact-discovery-" + strconv.FormatInt(partition.Int64(), 10)
|
|
|
|
var hash []byte = keccak256(partitionTopic)
|
|
var topicLen int = 4
|
|
|
|
if len(hash) < topicLen {
|
|
topicLen = len(hash)
|
|
}
|
|
|
|
var topic [4]byte
|
|
for i = 0; i < topicLen; i++ {
|
|
topic[i] = hash[i]
|
|
}
|
|
</code></pre>
|
|
<h3 id="public-chats"><a class="header" href="#public-chats">Public chats</a></h3>
|
|
<p>A public chat MUST use a topic derived from a public chat name following the algorithm below:</p>
|
|
<pre><code class="language-golang">var hash []byte
|
|
hash = keccak256(name)
|
|
|
|
topicLen = 4
|
|
if len(hash) < topicLen {
|
|
topicLen = len(hash)
|
|
}
|
|
|
|
var topic [4]byte
|
|
for i = 0; i < topicLen; i++ {
|
|
topic[i] = hash[i]
|
|
}
|
|
</code></pre>
|
|
<!-- NOTE: commented out as it is currently not used. In code for potential future use. - C.P. Oct 8, 2019
|
|
### Personal discovery topic
|
|
|
|
Personal discovery topic is used to ???
|
|
|
|
A client MUST implement it following the algorithm below:
|
|
```golang
|
|
personalDiscoveryTopic := "contact-discovery-" + hexEncode(publicKey)
|
|
|
|
var hash []byte = keccak256(personalDiscoveryTopic)
|
|
var topicLen int = 4
|
|
|
|
if len(hash) < topicLen {
|
|
topicLen = len(hash)
|
|
}
|
|
|
|
var topic [4]byte
|
|
for i = 0; i < topicLen; i++ {
|
|
topic[i] = hash[i]
|
|
}
|
|
```
|
|
|
|
Each Status Client SHOULD listen to this topic in order to receive ??? -->
|
|
<h3 id="group-chat-topic"><a class="header" href="#group-chat-topic">Group chat topic</a></h3>
|
|
<p>Group chats does not have a dedicated topic.
|
|
All group chat messages (including membership updates) are sent as one-to-one messages to multiple recipients.</p>
|
|
<h3 id="negotiated-topic"><a class="header" href="#negotiated-topic">Negotiated topic</a></h3>
|
|
<p>When a client sends a one to one message to another client, it MUST listen to their negotiated topic.
|
|
This is computed by generating a diffie-hellman key exchange between two members
|
|
and taking the first four bytes of the <code>SHA3-256</code> of the key generated.</p>
|
|
<pre><code class="language-golang">
|
|
sharedKey, err := ecies.ImportECDSA(myPrivateKey).GenerateShared(
|
|
ecies.ImportECDSAPublic(theirPublicKey),
|
|
16,
|
|
16,
|
|
)
|
|
|
|
|
|
hexEncodedKey := hex.EncodeToString(sharedKey)
|
|
|
|
var hash []byte = keccak256(hexEncodedKey)
|
|
var topicLen int = 4
|
|
|
|
if len(hash) < topicLen {
|
|
topicLen = len(hash)
|
|
}
|
|
|
|
var topic [4]byte
|
|
for i = 0; i < topicLen; i++ {
|
|
topic[i] = hash[i]
|
|
}
|
|
</code></pre>
|
|
<p>A client SHOULD send to the negotiated topic only if it has received a message from all the devices included in the conversation.</p>
|
|
<h3 id="flow"><a class="header" href="#flow">Flow</a></h3>
|
|
<p>To exchange messages with client <code>B</code>, a client <code>A</code> SHOULD:</p>
|
|
<ul>
|
|
<li>Listen to client's <code>B</code> Contact Code Topic to retrieve their bundle information, including a list of active devices</li>
|
|
<li>Send a message on client's <code>B</code> partitioned topic</li>
|
|
<li>Listen to the Negotiated Topic between <code>A</code> & <code>B</code></li>
|
|
<li>Once client <code>A</code> receives a message from <code>B</code>, the Negotiated Topic SHOULD be used</li>
|
|
</ul>
|
|
<h2 id="message-encryption"><a class="header" href="#message-encryption">Message encryption</a></h2>
|
|
<p>Even though, the protocol specifies an encryption layer that encrypts messages before passing them to the transport layer,
|
|
Waku protocol requires each Waku message to be encrypted anyway.</p>
|
|
<p>The node encrypts public and group messages using symmetric encryption, and creates the key from a channel name string.
|
|
The implementation is available in <a href="https://github.com/ethereum/go-ethereum/wiki/Whisper-v6-RPC-API#shh_generatesymkeyfrompassword"><code>shh_generateSymKeyFromPassword</code></a> JSON-RPC method of go-ethereum Whisper implementation.</p>
|
|
<p>The node encrypts one-to-one messages using asymmetric encryption.</p>
|
|
<h2 id="message-confirmations"><a class="header" href="#message-confirmations">Message confirmations</a></h2>
|
|
<p>Sending a message is a complex process where many things can go wrong.
|
|
Message confirmations tell a node that a message originating from it has been seen by its direct peers.</p>
|
|
<p>A node MAY send a message confirmation for any batch of messages received in a packet Messages Code (<code>0x01</code>).</p>
|
|
<p>A node sends a message confirmation using Batch Acknowledge packet (<code>0x0b</code>) or Message Response packet (<code>0x0c</code>).</p>
|
|
<p>The Batch Acknowledge packet is followed by a keccak256 hash of the envelopes batch data (raw bytes).</p>
|
|
<p>The Message Response packet is more complex and is followed by a Versioned Message Response:</p>
|
|
<pre><code class="language-golang">[ Version, Response]
|
|
</code></pre>
|
|
<p><code>Version</code>: a version of the Message Response, equal to <code>1</code>,
|
|
<code>Response</code>: <code>[ Hash, Errors ]</code> where <code>Hash</code> is a keccak256 hash of the envelopes batch data (raw bytes)
|
|
for which the confirmation is sent and <code>Errors</code> is a list of envelope errors when processing the batch.
|
|
A single error contains <code>[ Hash, Code, Description ]</code> where <code>Hash</code> is a hash of the processed envelope,
|
|
<code>Code</code> is an error code and <code>Description</code> is a descriptive error message.</p>
|
|
<p>The supported codes:
|
|
<code>1</code>: means time sync error which happens when an envelope is too old
|
|
or created in the future (the root cause is no time sync between nodes).</p>
|
|
<p>The drawback of sending message confirmations is that it increases the noise in the network because for each sent message,
|
|
one or more peers broadcast a corresponding confirmation. To limit that, both Batch Acknowledge packet (<code>0x0b</code>)
|
|
and Message Response packet (<code>0x0c</code>) are not broadcast to peers of the peers, i.e. they do not follow epidemic spread.</p>
|
|
<p>In the current Status network setup, only <code>Mailservers</code> support message confirmations.
|
|
A client posting a message to the network and after receiving a confirmation can be sure that the message got processed by the <code>Mailserver</code>.
|
|
If additionally, sending a message is limited to non-<code>Mailserver</code> peers,
|
|
it also guarantees that the message got broadcast through the network and it reached the selected <code>Mailserver</code>.</p>
|
|
<h2 id="waku-v1-extensions"><a class="header" href="#waku-v1-extensions">Waku V1 extensions</a></h2>
|
|
<h3 id="request-historic-messages"><a class="header" href="#request-historic-messages">Request historic messages</a></h3>
|
|
<p>Sends a request for historic messages to a <code>Mailserver</code>.
|
|
The <code>Mailserver</code> node MUST be a direct peer and MUST be marked as trusted (using <code>waku_markTrustedPeer</code>).</p>
|
|
<p>The request does not wait for the response.
|
|
It merely sends a peer-to-peer message to the <code>Mailserver</code> and it's up to <code>Mailserver</code> to process it and start sending historic messages.</p>
|
|
<p>The drawback of this approach is that it is impossible to tell which historic messages are the result of which request.</p>
|
|
<p>It's recommended to return messages from newest to oldest.
|
|
To move further back in time, use <code>cursor</code> and <code>limit</code>.</p>
|
|
<h4 id="wakuext_requestmessages"><a class="header" href="#wakuext_requestmessages">wakuext_requestMessages</a></h4>
|
|
<p><strong>Parameters</strong>:</p>
|
|
<ul>
|
|
<li>Object - The message request object:
|
|
<ul>
|
|
<li><code>mailServerPeer</code> - <code>String</code>: <code>Mailserver</code>'s enode address.</li>
|
|
<li><code>from</code> - <code>Number</code> (optional): Lower bound of time range as unix timestamp, default is 24 hours back from now.</li>
|
|
<li><code>to</code> - <code>Number</code> (optional): Upper bound of time range as unix timestamp, default is now.</li>
|
|
<li><code>limit</code> - <code>Number</code> (optional): Limit the number of messages sent back, default is no limit.</li>
|
|
<li><code>cursor</code> - <code>String</code> (optional): Used for paginated requests.</li>
|
|
<li><code>topics</code> - <code>Array</code>: hex-encoded message topics.</li>
|
|
<li><code>symKeyID</code> - <code>String</code>: an ID of a symmetric key used to authenticate with the <code>Mailserver</code>, derived from the <code>Mailserver</code> password.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Returns</strong>:
|
|
<code>Boolean</code> - returns <code>true</code> if the request was sent.</p>
|
|
<p>The above <code>topics</code> is then converted into a bloom filter and then and sent to the <code>Mailserver</code>.</p>
|
|
<!-- TODO: Clarify actual request with bloom filter to mailserver -->
|
|
<h2 id="changelog"><a class="header" href="#changelog">Changelog</a></h2>
|
|
<h3 id="version-01"><a class="header" href="#version-01">Version 0.1</a></h3>
|
|
<p>Released <a href="https://github.com/status-im/specs/commit/664dd1c9df6ad409e4c007fefc8c8945b8d324e8">May 22, 2020</a></p>
|
|
<ul>
|
|
<li>Created document</li>
|
|
<li>Forked from <a href="3-whisper-usage.html">3-whisper-usage</a></li>
|
|
<li>Change to keep <code>Mailserver</code> term consistent</li>
|
|
<li>Replaced Whisper references with Waku</li>
|
|
<li>Added <a href="#status">Status options</a> section</li>
|
|
<li>Updated <a href="#waku-packets">Waku packets</a> section to match Waku</li>
|
|
<li>Added that <code>Batch Ack</code> is marked for deprecation</li>
|
|
<li>Changed <code>shh_generateSymKeyFromPassword</code> to <code>waku_generateSymKeyFromPassword</code>
|
|
<ul>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/waku/api.go#L172-L175">Exists here</a></li>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/eth-node/bridge/geth/public_waku_api.go#L33-L36">Exists here</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>Changed <code>shh_markTrustedPeer</code> to <code>waku_markTrustedPeer</code>
|
|
<ul>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/waku/api.go#L100-L108">Exists here</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>Changed <code>shhext_requestMessages</code> to <code>wakuext_requestMessages</code>
|
|
<ul>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/services/wakuext/api.go#L76-L139">Exists here</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 id="copyright"><a class="header" href="#copyright">Copyright</a></h2>
|
|
<p>Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0</a>.</p>
|
|
<h2 id="references"><a class="header" href="#references">References</a></h2>
|
|
<ul>
|
|
<li><a href="waku">Waku</a></li>
|
|
<li><a href="/waku/standards/legacy/6/waku1.html">WAKU1</a></li>
|
|
<li><a href="/status/deprecated/waku-mailserver.html">WAKU-MAILSERVER</a></li>
|
|
<li><a href="https://github.com/vacp2p/research/tree/dcc71f4779be832d3b5ece9c4e11f1f7ec24aac2/whisper_scalability">The theoretical scaling model</a></li>
|
|
<li><a href="/status/deprecated/secure-transport.html">SECURE-TRANSPORT</a></li>
|
|
<li><a href="https://github.com/status-im/specs/commit/664dd1c9df6ad409e4c007fefc8c8945b8d324e8">May 22, 2020 commit</a></li>
|
|
<li><a href="https://github.com/ethereum/go-ethereum/wiki/Whisper-v6-RPC-API#shh_generatesymkeyfrompassword"><code>shh_generateSymKeyFromPassword</code></a></li>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/waku/api.go#L172-L175">Key Change #1</a></li>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/eth-node/bridge/geth/public_waku_api.go#L33-L36">Key Change #2</a></li>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/waku/api.go#L100-L108">Key Change #3</a></li>
|
|
<li><a href="https://github.com/status-im/status-go/blob/2d13ccf5ec3db7e48d7a96a7954be57edb96f12f/services/wakuext/api.go#L76-L139">Key Change #4</a></li>
|
|
</ul>
|
|
|
|
</main>
|
|
|
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
|
<!-- Mobile navigation buttons -->
|
|
<a rel="prev" href="../../status/deprecated/waku-mailserver.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
|
|
<a rel="next prefetch" href="../../status/deprecated/whisper-mailserver.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
|
|
<div style="clear: both"></div>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
|
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
|
<a rel="prev" href="../../status/deprecated/waku-mailserver.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
|
|
<a rel="next prefetch" href="../../status/deprecated/whisper-mailserver.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
window.playground_copyable = true;
|
|
</script>
|
|
|
|
|
|
<script src="../../elasticlunr.min.js"></script>
|
|
<script src="../../mark.min.js"></script>
|
|
<script src="../../searcher.js"></script>
|
|
|
|
<script src="../../clipboard.min.js"></script>
|
|
<script src="../../highlight.js"></script>
|
|
<script src="../../book.js"></script>
|
|
|
|
<!-- Custom JS scripts -->
|
|
<script src="../../scripts/rfc-index.js"></script>
|
|
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|