From 1788712c98b4f332340b6eacd4efeb561b92d3b9 Mon Sep 17 00:00:00 2001 From: Filip Pajic <42151917+pajicf@users.noreply.github.com> Date: Tue, 25 Jun 2024 07:54:16 +0200 Subject: [PATCH] chore: Build streamlined (#4) * chore: create a command for unified build and scrape flow * chore: cleanup repo from temp folders * feat: add new .md fetching mode * feat: fetching through git added * ci: add Scrape stage to the Jenkinsfile * feat: add env variables to the Jenkinsfile --- .env.example | 7 + .gitignore | 9 + Jenkinsfile | 8 + README.md | 8 +- codex/README.md | 4 - docusaurus-utils/scrapper/config.mjs | 38 +- docusaurus-utils/scrapper/fetch-content.mjs | 42 +- docusaurus-utils/scrapper/file.mjs | 56 + docusaurus-utils/scrapper/git.mjs | 23 + docusaurus-utils/scrapper/github.mjs | 2 +- docusaurus-utils/scrapper/main.mjs | 56 +- nomos/38/claro.md | 644 -------- nomos/README.md | 4 - package.json | 6 +- status/24/curation.md | 83 - status/28/featuring.md | 57 - status/55/1to1-chat.md | 231 --- status/56/communities.md | 469 ------ status/61/community-history-service.md | 398 ----- status/62/payloads.md | 1083 ------------- status/63/keycard-usage.md | 363 ----- status/65/account-address.md | 125 -- status/71/images/notification.png | Bin 60401 -> 0 bytes status/71/images/registration.png | Bin 25264 -> 0 bytes status/71/push-notification-server.md | 571 ------- status/README.md | 5 - status/raw/simple-scaling.md | 505 ------- status/raw/status-waku-usage.md | 210 --- vac/1/coss.md | 238 --- vac/1/images/lifecycle.png | Bin 43402 -> 0 bytes vac/2/mvds.md | 159 -- vac/25/libp2p-dns-discovery.md | 135 -- vac/3/images/remote-log.msc | 21 - vac/3/images/remote-log.png | Bin 17444 -> 0 bytes vac/3/remote-log.md | 247 --- vac/32/rln-v1.md | 660 -------- vac/4/mvds-meta.md | 86 -- vac/46/gossipsub-tor-push.md | 186 --- vac/48/rln-interep-spec.md | 110 -- vac/58/rln-v2.md | 206 --- vac/70/eth-secpm.md | 811 ---------- vac/README.md | 10 - vac/raw/README.md | 5 - vac/raw/rln-stealth-commitments.md | 110 -- vac/template.md | 83 - waku/README.md | 6 - waku/deprecated/16/rpc.md | 639 -------- waku/deprecated/18/swap.md | 191 --- waku/deprecated/5/waku0.md | 562 ------- waku/deprecated/README.md | 7 - waku/informational/22/toy-chat.md | 56 - waku/informational/23/topics.md | 176 --- waku/informational/27/peers.md | 100 -- waku/informational/29/config.md | 75 - waku/informational/30/adaptive-nodes.md | 103 -- .../adaptive_network_topology_protocols.jpg | Bin 632861 -> 0 bytes .../30/images/adaptive_node_continuum.jpg | Bin 673930 -> 0 bytes .../30/images/adaptive_node_continuum2.png | Bin 48006 -> 0 bytes .../30/images/adaptive_node_cross_section.jpg | Bin 454237 -> 0 bytes .../images/adaptive_node_cross_section2.png | Bin 81120 -> 0 bytes ...ptive_node_network_topology_protocols2.png | Bin 99659 -> 0 bytes ...node_network_topology_protocols_legend.png | Bin 53159 -> 0 bytes .../adaptive_node_protocol_selection2.png | Bin 54453 -> 0 bytes .../30/images/adaptive_protocol_selection.jpg | Bin 627929 -> 0 bytes waku/standards/application/20/toy-eth-pm.md | 225 --- .../application/21/fault-tolerant-store.md | 75 - waku/standards/application/26/payload.md | 155 -- waku/standards/application/53/x3dh.md | 266 ---- .../standards/application/54/x3dh-sessions.md | 172 --- waku/standards/core/10/images/overview.msc | 33 - waku/standards/core/10/images/overview.png | Bin 73394 -> 0 bytes waku/standards/core/10/waku2.md | 508 ------- waku/standards/core/11/relay.md | 213 --- waku/standards/core/12/filter.md | 277 ---- .../core/12/previous-versions00/filter.md | 181 --- waku/standards/core/13/store.md | 276 ---- waku/standards/core/14/message.md | 226 --- waku/standards/core/15/bridge.md | 67 - .../17/images/rln-message-verification.msc | 43 - .../17/images/rln-message-verification.png | Bin 124706 -> 0 bytes .../rln-relay-reg-with-tree-on-chain.msc | 33 - waku/standards/core/17/images/rln-relay.msc | 25 - waku/standards/core/17/images/rln-relay.png | Bin 99253 -> 0 bytes waku/standards/core/17/rln-relay.md | 267 ---- waku/standards/core/19/lightpush.md | 72 - waku/standards/core/33/discv5.md | 177 --- waku/standards/core/36/bindings-api.md | 1337 ----------------- waku/standards/core/64/network.md | 321 ---- waku/standards/core/66/metadata.md | 52 - waku/standards/legacy/6/waku1.md | 642 -------- waku/standards/legacy/7/data.md | 69 - waku/standards/legacy/8/mail.md | 129 -- waku/standards/legacy/9/rpc.md | 414 ----- yarn.lock | 589 +++++++- 94 files changed, 803 insertions(+), 16030 deletions(-) delete mode 100644 codex/README.md create mode 100644 docusaurus-utils/scrapper/git.mjs delete mode 100644 nomos/38/claro.md delete mode 100644 nomos/README.md delete mode 100644 status/24/curation.md delete mode 100644 status/28/featuring.md delete mode 100644 status/55/1to1-chat.md delete mode 100644 status/56/communities.md delete mode 100644 status/61/community-history-service.md delete mode 100644 status/62/payloads.md delete mode 100644 status/63/keycard-usage.md delete mode 100644 status/65/account-address.md delete mode 100644 status/71/images/notification.png delete mode 100644 status/71/images/registration.png delete mode 100644 status/71/push-notification-server.md delete mode 100644 status/README.md delete mode 100644 status/raw/simple-scaling.md delete mode 100644 status/raw/status-waku-usage.md delete mode 100644 vac/1/coss.md delete mode 100644 vac/1/images/lifecycle.png delete mode 100644 vac/2/mvds.md delete mode 100644 vac/25/libp2p-dns-discovery.md delete mode 100644 vac/3/images/remote-log.msc delete mode 100644 vac/3/images/remote-log.png delete mode 100644 vac/3/remote-log.md delete mode 100644 vac/32/rln-v1.md delete mode 100644 vac/4/mvds-meta.md delete mode 100644 vac/46/gossipsub-tor-push.md delete mode 100644 vac/48/rln-interep-spec.md delete mode 100644 vac/58/rln-v2.md delete mode 100644 vac/70/eth-secpm.md delete mode 100644 vac/README.md delete mode 100644 vac/raw/README.md delete mode 100644 vac/raw/rln-stealth-commitments.md delete mode 100644 vac/template.md delete mode 100644 waku/README.md delete mode 100644 waku/deprecated/16/rpc.md delete mode 100644 waku/deprecated/18/swap.md delete mode 100644 waku/deprecated/5/waku0.md delete mode 100644 waku/deprecated/README.md delete mode 100644 waku/informational/22/toy-chat.md delete mode 100644 waku/informational/23/topics.md delete mode 100644 waku/informational/27/peers.md delete mode 100644 waku/informational/29/config.md delete mode 100644 waku/informational/30/adaptive-nodes.md delete mode 100644 waku/informational/30/images/adaptive_network_topology_protocols.jpg delete mode 100644 waku/informational/30/images/adaptive_node_continuum.jpg delete mode 100644 waku/informational/30/images/adaptive_node_continuum2.png delete mode 100644 waku/informational/30/images/adaptive_node_cross_section.jpg delete mode 100644 waku/informational/30/images/adaptive_node_cross_section2.png delete mode 100644 waku/informational/30/images/adaptive_node_network_topology_protocols2.png delete mode 100644 waku/informational/30/images/adaptive_node_network_topology_protocols_legend.png delete mode 100644 waku/informational/30/images/adaptive_node_protocol_selection2.png delete mode 100644 waku/informational/30/images/adaptive_protocol_selection.jpg delete mode 100644 waku/standards/application/20/toy-eth-pm.md delete mode 100644 waku/standards/application/21/fault-tolerant-store.md delete mode 100644 waku/standards/application/26/payload.md delete mode 100644 waku/standards/application/53/x3dh.md delete mode 100644 waku/standards/application/54/x3dh-sessions.md delete mode 100644 waku/standards/core/10/images/overview.msc delete mode 100644 waku/standards/core/10/images/overview.png delete mode 100644 waku/standards/core/10/waku2.md delete mode 100644 waku/standards/core/11/relay.md delete mode 100644 waku/standards/core/12/filter.md delete mode 100644 waku/standards/core/12/previous-versions00/filter.md delete mode 100644 waku/standards/core/13/store.md delete mode 100644 waku/standards/core/14/message.md delete mode 100644 waku/standards/core/15/bridge.md delete mode 100644 waku/standards/core/17/images/rln-message-verification.msc delete mode 100644 waku/standards/core/17/images/rln-message-verification.png delete mode 100644 waku/standards/core/17/images/rln-relay-reg-with-tree-on-chain.msc delete mode 100644 waku/standards/core/17/images/rln-relay.msc delete mode 100644 waku/standards/core/17/images/rln-relay.png delete mode 100644 waku/standards/core/17/rln-relay.md delete mode 100644 waku/standards/core/19/lightpush.md delete mode 100644 waku/standards/core/33/discv5.md delete mode 100644 waku/standards/core/36/bindings-api.md delete mode 100644 waku/standards/core/64/network.md delete mode 100644 waku/standards/core/66/metadata.md delete mode 100644 waku/standards/legacy/6/waku1.md delete mode 100644 waku/standards/legacy/7/data.md delete mode 100644 waku/standards/legacy/8/mail.md delete mode 100644 waku/standards/legacy/9/rpc.md diff --git a/.env.example b/.env.example index 0c6a33dd1..fb3d14ced 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,8 @@ +# github | git +FETCH_MODE=git + +# Directories to include in the build +INCLUDED_DIRS="codex,nomos,status,vac,waku" + +# Github token used for authentication if fetch mode is Github GITHUB_TOKEN= \ No newline at end of file diff --git a/.gitignore b/.gitignore index e8af2f580..d066bcd8b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,12 @@ yalc.lock .idea static/search-index.json + +codex +nomos +status +vac +waku + +temp +raw_temp \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index 796b9fa56..92c409ff8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,6 +16,8 @@ pipeline { environment { GIT_COMMITTER_NAME = 'status-im-auto' GIT_COMMITTER_EMAIL = 'auto@status.im' + INCLUDED_DIRS = 'codex,nomos,status,vac,waku' + FETCH_MODE = 'git' } stages { @@ -25,6 +27,12 @@ pipeline { } } + stage('Scrape') { + steps { + sh 'yarn scrape' + } + } + stage('Build') { steps { script { sh 'yarn build' diff --git a/README.md b/README.md index ede2246bf..b060f6158 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,7 @@ $ git clone https://github.com/acid-info/logos-docs-template.git $ yarn install ``` -3. Create .env and run the scraping script -and +3. Create .env and run the scraping script (make sure you're located in the root of the project when running this command) ```bash $ yarn scrape ``` @@ -115,9 +114,14 @@ By default, this template utilizes the CSS styles defined in the [logos-docusaur 1. Generate static files for production: +- If you have ran `yarn scrape` previously, you can just run ```bash $ yarn build ``` +- If not, you can use the next command for complete scrape and build process +```bash +$ yarn build:full +``` The static files will be created in the `build` directory. diff --git a/codex/README.md b/codex/README.md deleted file mode 100644 index e6988d52a..000000000 --- a/codex/README.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Codex RFCs - -Codex specifications related to a decentralised data storage platform. diff --git a/docusaurus-utils/scrapper/config.mjs b/docusaurus-utils/scrapper/config.mjs index 46310641d..8b525f131 100644 --- a/docusaurus-utils/scrapper/config.mjs +++ b/docusaurus-utils/scrapper/config.mjs @@ -1,13 +1,47 @@ import 'dotenv/config'; const { + FETCH_MODE, + INCLUDED_DIRS, GITHUB_TOKEN } = process.env; -if (!GITHUB_TOKEN) { +export const ALL_FETCH_MODES = { + GITHUB: "github", + GIT: "git" +} + +let parsedIncludedDirs = []; +if (!INCLUDED_DIRS) { + throw new Error("Please provide the INCLUDED_DIRS") +} else { + parsedIncludedDirs = INCLUDED_DIRS.split(","); + if (parsedIncludedDirs.length < 1) { + throw new Error("Please provide the INCLUDED_DIRS in a correct format") + } +} + +if (!FETCH_MODE) { + throw new Error("Please provide the FETCH_MODE") +} else { + if (!(FETCH_MODE === ALL_FETCH_MODES.GITHUB || FETCH_MODE === ALL_FETCH_MODES.GIT)) { + throw new Error("Please provide the FETCH_MODE in a correct format") + } +} + +if (FETCH_MODE === ALL_FETCH_MODES.GITHUB && !GITHUB_TOKEN) { throw new Error("Please provide the GITHUB_TOKEN") } +const GIT_TEMP_DIR_NAME = "raw_temp" +const GIT_ORG_NAME = "vacp2p" +const GIT_SOURCE_REPO_NAME = "rfc-index" + export { - GITHUB_TOKEN + parsedIncludedDirs as INCLUDED_DIRS, + FETCH_MODE, + GITHUB_TOKEN, + GIT_TEMP_DIR_NAME, + GIT_ORG_NAME, + GIT_SOURCE_REPO_NAME } \ No newline at end of file diff --git a/docusaurus-utils/scrapper/fetch-content.mjs b/docusaurus-utils/scrapper/fetch-content.mjs index 8cd860996..b12fa9e43 100644 --- a/docusaurus-utils/scrapper/fetch-content.mjs +++ b/docusaurus-utils/scrapper/fetch-content.mjs @@ -3,8 +3,15 @@ import path from "path"; import { fetchFromGitHub } from "./github.mjs"; import axios from 'axios' -import { createDirectory, readFile, writeFile, writeLargeFile } from './file.mjs' -import { adjustPathForMarkdown, vacMarkdownToDocusaurusMarkdown } from './markdown-convertor.mjs' +import { + copyDirectory, + createDirectory, + getDirFiles, + readFile, + writeFile, + writeLargeFile +} from './file.mjs' +import { vacMarkdownToDocusaurusMarkdown } from './markdown-convertor.mjs' async function downloadFile(url, fullFilePath) { const request = await axios.get(url, { @@ -16,16 +23,12 @@ async function downloadFile(url, fullFilePath) { await writeLargeFile(fullFilePath, request.data) } -async function downloadAndModifyFile(url, filePath) { - const fullFilePath = path.join(process.cwd(), filePath) - - await downloadFile(url, fullFilePath); - - const fileExtension = path.extname(filePath) +async function modifyFile(fullFilePath) { + const fileExtension = path.extname(fullFilePath) if (fileExtension === '.md' || fileExtension === '.mdx') { const fileBuffer = await readFile(fullFilePath); const fileContent = fileBuffer.toString(); - const convertedFileContent = vacMarkdownToDocusaurusMarkdown(fileContent, filePath); + const convertedFileContent = vacMarkdownToDocusaurusMarkdown(fileContent, fullFilePath); await writeFile(fullFilePath, convertedFileContent); } @@ -47,7 +50,10 @@ export async function fetchDirectoryContents(dirUrl, basePath, prefixToRemove) { const filePath = path.join(basePath, relativePath) if (file.type === 'file') { - await downloadAndModifyFile(file.download_url, filePath) + const fullFilePath = path.join(process.cwd(), filePath) + + await downloadFile(file.download_url, fullFilePath); + await modifyFile(fullFilePath) } else if (file.type === 'dir') { await fetchDirectoryContents(file.url, basePath, prefixToRemove) } @@ -55,4 +61,20 @@ export async function fetchDirectoryContents(dirUrl, basePath, prefixToRemove) { } catch (e) { console.error('Error fetching files:', e) } +} + +export async function copyAndParseLocally(dirName, from) { + try { + const originalDir = from ? from : path.join(process.cwd(), `../${dirName}`) + const newDir = path.join(process.cwd(),`./${dirName}`) + + await copyDirectory(originalDir, newDir) + const allFiles = getDirFiles(newDir, []) + + for (let i = 0; i < allFiles.length; i++) { + await modifyFile(allFiles[i]); + } + } catch (e) { + console.error('Error copying files:', e) + } } \ No newline at end of file diff --git a/docusaurus-utils/scrapper/file.mjs b/docusaurus-utils/scrapper/file.mjs index 03cad0032..fd27f1344 100644 --- a/docusaurus-utils/scrapper/file.mjs +++ b/docusaurus-utils/scrapper/file.mjs @@ -2,6 +2,8 @@ import { mkdirp } from 'mkdirp' import fs from 'fs' import util from 'util' import stream from 'stream' +import ncp from "ncp" +import path from 'path' export function readFile(path) { return new Promise((resolve, reject) => { @@ -73,4 +75,58 @@ export async function createDirectory(path) { } catch (error) { throw error; } +} + +export async function copyDirectory(from, to) { + + const ncpOptions = { + stopOnErr: true, + limit: 32 + } + + return new Promise((resolve, reject) => { + ncp(from, to, ncpOptions, (data) => { + const isError = data instanceof Error || (Array.isArray(data) && data[0] instanceof Error); + + if (isError) { + const error = (Array.isArray(data) ? data[0] : data); + + reject(error); + return; + } + + // No error happened here + if (data) { + resolve(data) + } else { + resolve() + } + }) + }) +} + +export function getDirFiles(dir, files = []) { + const fileList = fs.readdirSync(dir) + + for (const file of fileList) { + const filePath = `${dir}/${file}` + const isDir = fs.statSync(filePath).isDirectory() + + if (isDir) { + getDirFiles(filePath, files) + } else { + files.push(filePath) + } + } + return files +} + +export async function purgeOldFiles(dirName, dirPath = undefined) { + const directoryPath = dirPath ? dirPath : path.join(process.cwd(), dirName); + const shouldRemoveOldContent = await directoryExists(directoryPath); + + if (shouldRemoveOldContent) { + await removeDirectory(directoryPath) + console.log(`Removed old ${dirName}`) + } } \ No newline at end of file diff --git a/docusaurus-utils/scrapper/git.mjs b/docusaurus-utils/scrapper/git.mjs new file mode 100644 index 000000000..6a458443e --- /dev/null +++ b/docusaurus-utils/scrapper/git.mjs @@ -0,0 +1,23 @@ +// import clone from "git-clone/promise.js" + +import { purgeOldFiles } from './file.mjs' +import gitDownload from "clone-git-repo" + +async function clone(repoUrl, toDir) { + return new Promise((resolve, reject) => { + gitDownload(repoUrl, toDir, {}, (err) => { + if (err) { + reject(err) + } else { + resolve() + } + }) + }) +} + +export async function pullWithGit(repoUrl, toDir) { + // If any old temp files that weren't removed are present + await purgeOldFiles(undefined, toDir) + + await clone(repoUrl, toDir) +} \ No newline at end of file diff --git a/docusaurus-utils/scrapper/github.mjs b/docusaurus-utils/scrapper/github.mjs index 84be9ce04..d1059ca37 100644 --- a/docusaurus-utils/scrapper/github.mjs +++ b/docusaurus-utils/scrapper/github.mjs @@ -1,7 +1,7 @@ import { GITHUB_TOKEN } from './config.mjs' import axios from "axios"; -export async function fetchFromGitHub(url, callback) { +export async function fetchFromGitHub(url) { const response = await axios.get(url, { headers: { 'User-Agent': 'Node.js', diff --git a/docusaurus-utils/scrapper/main.mjs b/docusaurus-utils/scrapper/main.mjs index 57aac7c7e..20d4af5c4 100644 --- a/docusaurus-utils/scrapper/main.mjs +++ b/docusaurus-utils/scrapper/main.mjs @@ -1,26 +1,54 @@ -import { fetchDirectoryContents } from './fetch-content.mjs' import path from 'path' -import { directoryExists, removeDirectory } from './file.mjs' +import { purgeOldFiles } from './file.mjs' +import { + ALL_FETCH_MODES, + FETCH_MODE, + GIT_ORG_NAME, + GIT_SOURCE_REPO_NAME, + GIT_TEMP_DIR_NAME, + INCLUDED_DIRS, +} from './config.mjs' +import { copyAndParseLocally, fetchDirectoryContents } from './fetch-content.mjs' +import { pullWithGit } from './git.mjs' -const directoriesToSync = ['codex', 'nomos', 'status', 'vac', 'waku'] async function main() { - for (let i = 0; i < directoriesToSync.length; i++) { - const dirName = directoriesToSync[i]; + switch (FETCH_MODE) { + case ALL_FETCH_MODES.GIT: { + const tempDirPath = path.join(process.cwd(), GIT_TEMP_DIR_NAME); - const baseUrl = `https://api.github.com/repos/vacp2p/rfc-index/contents/${dirName}` + await pullWithGit(`${GIT_ORG_NAME}/${GIT_SOURCE_REPO_NAME}`, tempDirPath) + await sync(ALL_FETCH_MODES.GIT) - const baseSavePath = `./${dirName}/` - const prefixToRemove = dirName + '/' - const directoryPath = path.join(process.cwd(), dirName); + // Removes raw MDs so docusaurus doesn't parse them as well + await purgeOldFiles(GIT_TEMP_DIR_NAME, tempDirPath) - const shouldRemoveOldContent = await directoryExists(directoryPath); - if (shouldRemoveOldContent) { - await removeDirectory(directoryPath) - console.log(`Removed old ${dirName}`) + break; + } + case ALL_FETCH_MODES.GITHUB: { + await sync(ALL_FETCH_MODES.GITHUB) + + break; + } + } +} + +async function sync(mode) { + for (let i = 0; i < INCLUDED_DIRS.length; i++) { + const dirName = INCLUDED_DIRS[i]; + await purgeOldFiles(dirName) + + if (mode === ALL_FETCH_MODES.GITHUB) { + const baseUrl = `https://api.github.com/repos/${GIT_ORG_NAME}/${GIT_SOURCE_REPO_NAME}/contents/${dirName}` + const baseSavePath = `./${dirName}/` + const prefixToRemove = dirName + '/' + + await fetchDirectoryContents(baseUrl, baseSavePath, prefixToRemove) + } else if (mode === ALL_FETCH_MODES.GIT) { + const rawFilePath = path.join(process.cwd(), GIT_TEMP_DIR_NAME, dirName); + await copyAndParseLocally(dirName, rawFilePath); } - await fetchDirectoryContents(baseUrl, baseSavePath, prefixToRemove) console.log(`Synced ${dirName}`) } } diff --git a/nomos/38/claro.md b/nomos/38/claro.md deleted file mode 100644 index 404853d76..000000000 --- a/nomos/38/claro.md +++ /dev/null @@ -1,644 +0,0 @@ ---- -title: 38/CONSENSUS-CLARO -name: Claro Consensus Protocol -status: raw -category: Standards Track -editor: Corey Petty <corey@status.im> -created: 01-JUL-2022 -revised: <2022-08-26 Fri 13:11Z> -uri: <https://rdf.logos.co/protocol/Claro/1/0/0#<2022-08-26%20Fri$2013:11Z> -contributors: - - Álvaro Castro-Castilla - - Mark Evenson ---- -- Status: raw -- Category: Standards Track -- Editor: Corey Petty <corey@status.im> -- Contributors: - - Álvaro Castro-Castilla - - Mark Evenson - - -## Abstract - -This document specifies Claro: a Byzantine, fault-tolerant, binary decision -agreement algorithm that utilizes bounded memory for its execution. -Claro is a novel variant of the Snow family providing a probabilistic -leaderless BFT consensus algorithm that achieves metastablity via -network sub-sampling. We present an application context of the use of -Claro in an efficient, leaderless, probabilistic permission-less -consensus mechanism. We outline a simple taxonomy of Byzantine -adversaries, leaving explicit explorations of to subsequent -publication. - -NOTE: We have renamed this variant to `Claro` from `Glacier` in order to disambiguate from a previously released research endeavor by [Amores-Sesar, Cachin, and Tedeschi](https://arxiv.org/pdf/2210.03423.pdf). Their naming was coincidentally named the same as our work but is sufficiently differentiated from how ours works. - -## Motivation -This work is a part of a larger research endeavor to explore highly scalable Byzantine Fault Tolerant (BFT) consensus protocols. Consensus lies at the heart of many decentralized protocols, and thus its characteristics and properties are inherited by applications built on top. Thus, we seek to improve upon the current state of the art in two main directions: base-layer scalability and censorship resistance. - -Avalanche has shown to exibit the former in a production environment in a way that is differentiated from Nakamoto consensus and other Proof of Stake (PoS) protocols based in practical Byzantine Fault Tolerant (pBFT) methodologies. We aim to understand its limitations and improve upon them. - -## Background -Our starting point is Avalanche’s Binary Byzantine Agreement algorithm, called Snowball. As long as modifications allow a DAG to be constructed later on, this simplifies the design significantly. The DAG stays the same in principle: it supports confidence, but the core algorithm can be modeled without. - -The concept of the Snowball algorithm is relatively simple. Following is a simplified description (lacking some details, but giving an overview). For further details, please refer to the [Avalanche paper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6009805681b416f34dcae012_Avalanche%20Consensus%20Whitepaper.pdf). - -1. The objective is to vote yes/no on a decision (this decision could be a single bit, or, in our DAG use case, whether a vertex should be included or not). -2. Every node has an eventually-consistent complete view of the network. It will select at random k nodes, and will ask their opinion on the decision (yes/no). -3. After this sampling is finished, if there is a vote that has more than an `alpha` threshold, it accumulates one count for this opinion, as well as changes its opinion to this one. But, if a different opinion is received, the counter is reset to 1. If no threshold `alpha` is reached, the counter is reset to 0 instead. -4. After several iterations of this algorithm, we will reach a threshold `beta`, and decide on that as final. - -Next, we will proceed to describe our new algorithm, based on Snowball. - -We have identified a shortcoming of the Snowball algorithm that was a perfect starting point for devising improvements. The scenario is as follows: - -- There is a powerful adversary in the network, that controls a large percentage of the node population: 10% to ~50%. -- This adversary follows a strategy that allows them to rapidly change the decision bit (possibly even in a coordinated way) so as to maximally confuse the honest nodes. -- Under normal conditions, honest nodes will accumulate supermajorities soon enough, and reach the `beta` threshold. However, when an honest node performs a query and does not reach the threshold `alpha` of responses, the counter will be set to 0. -- The highest threat to Snowball is an adversary that keeps it from reaching the `beta` threshold, managing to continuously reset the counter, and steering Snowball away from making a decision. - -This document only outlines the specification to Claro. Subsequent analysis work on Claro (both on its performance and how it differentiates with Snowball) will be published shortly and this document will be updated. - -## Claro Algorithm Specification - -The Claro consensus algorithm computes a boolean decision on a -proposition via a set of distributed computational nodes. Claro is -a leaderless, probabilistic, binary consensus algorithm with fast -finality that provides good reliability for network and Byzantine -fault tolerance. - -### Algorithmic concept -Claro is an evolution of the Snowball Byzantine Binary Agreement (BBA) algorithm, in which we tackle specifically the perceived weakness described above. The main focus is going to be the counter and the triggering of the reset. Following, we elaborate the different modifications and features that have been added to the reference algorithm: - -1. Instead of allowing the latest evidence to change the opinion completely, we take into account all accumulated evidence, to reduce the impact of high variability when there is already a large amount of evidence collected. -2. Eliminate the counter and threshold scheme, and introduce instead two regimes of operation: - - One focused on grabbing opinions and reacting as soon as possible. This part is somewhat closer conceptually to the reference algorithm. - - Another one focused on interpreting the accumulated data instead of reacting to the latest information gathered. -3. Finally, combine those two phases via a transition function. This avoids the creation of a step function, or a sudden change in behavior that could complicate analysis and understanding of the dynamics. Instead, we can have a single algorithm that transfers weight from one operation to the other as more evidence is gathered. -4. Additionally, we introduce a function for weighted sampling. This will allow the combination of different forms of weighting: - - Staking - - Heuristic reputation - - Manual reputation. - -It’s worth delving a bit into the way the data is interpreted in order to reach a decision. Our approach is based conceptually on the paper [Confidence as Higher-Order Uncertainty](https://cis.temple.edu/~pwang/Publication/confidence.pdf), which describes a frequentist approach to decision certainty. The first-order certainty, measured by frequency, is caused by known positive evidence, and the higher-order certainty is caused by potential positive evidence. Because confidence is a relative measurement defined on evidence, it naturally follows comparing the amount of evidence the system knows with the amount that it will know in the near future (defining “near” as a constant). - -Intuitively, we are looking for a function of evidence, **`w`**, call it **`c`** for confidence, that satisfies the following conditions: - -1. Confidence `c` is a continuous and monotonically increasing function of `w`. (More evidence, higher confidence.) -2. When `w = 0`, `c = 0`. (Without any evidence, confidence is minimum.) -3. When `w` goes to infinity, `c` converges to 1. (With infinite evidence, confidence is maximum.) - -The paper describes also a set of operations for the evidence/confidence pairs, so that different sources of knowledge could be combined. However, we leave here the suggestion of a possible research line in the future combining an algebra of evidence/confidence pairs with swarm-propagation algorithm like the one described in [this paper](http://replicated.cc/files/schmebulock.pdf). - -### Initial opinion -A proposal is formulated to which consensus of truth or falsity is -desired. Each node that participates starts the protocol with an -opinion on the proposal, represented in the sequel as `NO`, `NONE`, -and `YES`. - -A new proposition is discovered either by local creation or in -response to a query, a node checks its local opinion. If the node can -compute a justification of the proposal, it sets its opinion to one of -`YES` or `NO`. If it cannot form an opinion, it leaves its opinion as -`NONE`. - -For now, we will ignore the proposal dissemination process and assume all nodes participating have an initial opinion to respond to within a given request. Further research will relax this assumption and analyze timing attacks on proposal propagation through the network. - - -The node then participates in a number of query rounds in which it -solicits other node's opinion in query rounds. Given a set of `N` -leaderless computational nodes, a gossip-based protocol is presumed to -exist which allows members to discover, join, and leave a weakly -transitory maximally connected graph. Joining this graph allows each -node to view a possibly incomplete node membership list of all other -nodes. This view may change as the protocol advances, as nodes join -and leave. Under generalized Internet conditions, the membership of -the graph would experience a churn rate varying across different -time-scales, as the protocol rounds progress. As such, a given node -may not have a view on the complete members participating in the -consensus on a proposal in a given round. - -The algorithm is divided into 4 phases: -1. Querying -2. Computing `confidence`, `evidence`, and `accumulated evidence` -3. Transition function -4. Opinion and Decision - - - - - - - - -### Setup Parameters - -The node initializes the following integer ratios as constants: -``` -# The following values are constants chosen with justification from experiments -# performed with the adversarial models - -# -confidence_threshold - <-- 1 - -# constant look ahead for number of rounds we expect to finalize a -# decision. Could be set dependent on number of nodes -# visible in the current gossip graph. -look_ahead - <-- 19 - -# the confidence weighting parameter (aka alpha_1) -certainty - <-- 4 / 5 -doubt ;; the lack of confidence weighting parameter (aka alpha_2) - <-- 2 / 5 - -k_multiplier ;; neighbor threshold multiplier - <-- 2 - -;;; maximal threshold multiplier, i.e. we will never exceed -;;; questioning k_initial * k_multiplier ^ max_k_multiplier_power peers -max_k_multiplier_power - <-- 4 - -;;; Initial number of nodes queried in a round -k_initial - <-- 7 - -;;; maximum query rounds before termination -max_rounds ;; placeholder for simulation work, no justification yet - <-- 100 -``` - -The following variables are needed to keep the state of Claro: - -``` -;; current number of nodes to attempt to query in a round -k - <-- k_original - -;; total number of votes examined over all rounds -total_votes - <-- 0 -;; total number of YES (i.e. positive) votes for the truth of the proposal -total_positive - <-- 0 -;; the current query round, an integer starting from zero -round - <-- 0 -``` - - -### Phase One: Query - -A node selects `k` nodes randomly from the complete pool of peers in the -network. This query is can optionally be weighted, so the probability -of selecting nodes is proportional to their - -Node Weighting -$$ -P(i) = \frac{w_i}{\sum_{j=0}^{j=N} w_j} -$$ - -where `w` is evidence. The list of nodes is maintained by a separate protocol (the network -layer), and eventual consistency of this knowledge in the network -suffices. Even if there are slight divergences in the network view -from different nodes, the algorithm is resilient to those. - -A query is sent to each neighbor with the node's current `opinion` of -the proposal. - -Each node replies with their current opinion on the proposal. - -See [the wire protocol Interoperability section](#wire-protocol) for -details on the semantics and syntax of the "on the wire" -representation of this query. - -**Adaptive querying**. An additional optimization in the query -consists of adaptively growing the *`k`* constant in the event of -**high confusion**. We define high confusion as the situation in -which neither opinion is strongly held in a query (*i.e.* a -threshold is not reached for either yes or no). For this, we will -use the *`alpha`* threshold defined below. This adaptive growth of -the query size is done as follows: - -Every time the threshold is not reached, we multiply *`k`* by a -constant. In our experiments, we found that a constant of 2 works -well, but what really matters is that it stays within that order of -magnitude. - -The growth is capped at 4 times the initial *`k`* value. Again, this -is an experimental value, and could potentially be increased. This -depends mainly on complex factors such as the size of the query -messages, which could saturate the node bandwidth if the number of -nodes queried is too high. - -When the query finishes, the node now initializes the following two -values: - - new_votes - <-- |total vote replies received in this round to the current query| - positive_votes - <-- |YES votes received from the query| - -### Phase Two: Computation -When the query returns, three ratios are used later on to compute the -transition function and the opinion forming. Confidence encapsulates -the notion of how much we know (as a node) in relation to how much we -will know in the near future (this being encoded in the look-ahead -parameter *`l`*.) Evidence accumulated keeps the ratio of total positive -votes vs the total votes received (positive and negative), whereas the -evidence per round stores the ratio of the current round only. - -Parameters -$$ -\begin{array}{lc} -\text{Look-ahead parameter} & l = 20 \newline -\text{First evidence parameter} & \alpha_1 = 0.8 \newline -\text{Second evidence parameter} & \alpha_2 = 0.5 \newline -\end{array} -$$ - -Computation -$$ -\begin{array}{lc} -\text{Confidence} & c_{accum} \impliedby \frac{total\ votes}{total\ votes + l} \newline -\text{Total accumulated evidence}& e_{accum} \impliedby \frac{total\ positive\ votes}{total\ votes} \newline -\text{Evidence per round} & e_{round} \impliedby \frac{round\ positive\ votes}{round\ votes} \newline -\end{array} -$$ - -The node runs the `new_votes` and `positive_votes` parameters received -in the query round through the following algorithm: - - total_votes - +== new_votes - total_positive - +== positive_votes - confidence - <-- total_votes / (total_votes + look_ahead) - total_evidence - <-- total_positive / total_votes - new_evidence - <-- positive_votes / new_votes - evidence - <-- new_evidence * ( 1 - confidence ) + total_evidence * confidence - alpha - <-- doubt * ( 1 - confidence ) + certainty * confidence - -### Phase Three: Computation -In order to eliminate the need for a step function (a conditional in -the code), we introduce a transition function from one regime to the -other. Our interest in removing the step function is twofold: - -1. Simplify the algorithm. With this change the number of branches is - reduced, and everything is expressed as a set of equations. - -2. The transition function makes the regime switch smooth, - making it harder to potentially exploit the sudden regime change in - some unforeseen manner. Such a swift change in operation mode could - potentially result in a more complex behavior than initially - understood, opening the door to elaborated attacks. The transition - function proposed is linear with respect to the confidence. - -Transition Function -$$ -\begin{array}{cl} -evidence & \impliedby e_{round} (1 - c_{accum}) + e_{accum} c_{accum} \newline -\alpha & \impliedby \alpha_1 (1 - c_{accum}) + \alpha_2 c_{accum} \newline -\end{array} -$$ - -Since the confidence is modeled as a ratio that depends on the -constant *`l`*, we can visualize the transition function at -different values of *`l`*. Recall that this constant encapsulates -the idea of “near future” in the frequentist certainty model: the -higher it is, the more distant in time we consider the next -valuable input of evidence to happen. - -We have observed via experiment that for a transition function to be -useful, we need establish two requirements: - -1. The change has to be balanced and smooth, giving an - opportunity to the first regime to operate and not jump directly - to the second regime. - -2. The convergence to 1.0 (fully operating in the second regime) - should happen within a reasonable time-frame. We’ve set this - time-frame experimentally at 1000 votes, which is in the order of - ~100 queries given a *`k`* of 9. - -[[ Note: Avalanche uses k = 20, as an experimental result from their -deployment. Due to the fundamental similarities between the -algorithms, it’s a good start for us. ]] - -The node updates its local opinion on the consensus proposal by -examining the relationship between the evidence accumulated for a -proposal with the confidence encoded in the `alpha` parameter: - - IF - evidence > alpha - THEN - opinion <-- YES - ELSE IF - evidence < 1 - alpha - THEN - opinion <-- NO - -If the opinion of the node is `NONE` after evaluating the relation -between `evidence` and `alpha`, adjust the number of uniform randomly -queried nodes by multiplying the neighbors `k` by the `k_multiplier` -up to the limit of `k_max_multiplier_power` query size increases. - - ;; possibly increase number nodes to uniformly randomly query in next round - WHEN - opinion is NONE - AND - k < k_original * k_multiplier ^ max_k_multiplier_power - THEN - k <-- k * k_multiplier - -### Decision -The next step is a simple one: change our opinion if the threshold -*`alpha`* is reached. This needs to be done separately for the `YES/NO` -decision, checking both boundaries. The last step is then to *`decide`* -on the current opinion. For that, a confidence threshold is -employed. This threshold is derived from the network size, and is -directly related to the number of total votes received. - -Decision -$$ -\begin{array}{cl} -evidence > \alpha & \implies \text{opinion YES} \newline -evidence < 1 - \alpha & \implies \text{opinion NO} \newline -if\ \text{confidence} > c_{target} & THEN \ \text{finalize decision} \newline -\end{array} -$$ - -After the `OPINION` phase is executed, the current value of `confidence` -is considered: if `confidence` exceeds a threshold derived from the -network size and directly related to the total votes received, an -honest node marks the decision as final, and always returns this -opinion is response to further queries from other nodes on the -network. - - IF - confidence > confidence_threshold - OR - round > max_rounds - THEN - finalized <-- T - QUERY LOOP TERMINATES - ELSE - round +== 1 - QUERY LOOP CONTINUES - -Thus, after the decision phase, either a decision has been finalized -and the local node becomes quiescent never initiating a new query, or -it initiates a [new query](#query). - -### Termination - -A local round of Claro terminates in one of the following -execution model considerations: - - -1. No queries are received for any newly initiated round for temporal - periods observed via a locally computed passage of time. See [the - following point on local time](#clock). - -2. The `confidence` on the proposal exceeds our threshold for - finalization. - -3. The number of `rounds` executed would be greater than - `max_rounds`. - -#### Quiescence - -After a local node has finalized an `opinion` into a `decision`, it enters a quiescent -state whereby it never solicits new votes on the proposal. The local -node MUST reply with the currently finalized `decision`. - -#### Clock - -The algorithm only requires that nodes have computed the drift of -observation of the passage of local time, not that that they have -coordinated an absolute time with their peers. For an implementation -of a phase locked-loop feedback to measure local clock drift see -[NTP](https://www.rfc-editor.org/rfc/rfc5905.html). - -## Further points - -### Node receives information during round -In the query step, the node is envisioned as packing information into -the query to cut down on the communication overhead a query to each of -this `k` nodes containing the node's own current opinion on the -proposal (`YES`, `NO`, or `NONE`). The algorithm does not currently -specify how a given node utilizes this incoming information. A -possible use may be to count unsolicited votes towards a currently -active round, and discard the information if the node is in a -quiescent state. - -#### Problems with Weighting Node Value of Opinions -If the view of other nodes is incomplete, then the sum of the optional -weighting will not be a probability distribution normalized to 1. - -The current algorithm doesn't describe how the initial opinions are formed. - -## Implementation status -The following implementations have been created for various testing and simulation purposes: -- [Rust](https://github.com/logos-co/consensus-research) -- [Python](#) - FILL THIS IN WITH NEWLY CREATED REPO -- [Common Lisp](#) - FILL THIS IN WITH NEWLY CREATED REPO - -## Wire Protocol - -For interoperability we present a wire protocol semantics by requiring -the validity of the following statements expressed in Notation3 (aka -`n3`) about any query performed by a query node: - - -```n3 -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - -@prefix Claro . - -Claro:query - :holds ( - :_0 [ rdfs:label "round"; - a xsd:postitiveInteger; ], - rdfs:comment """ -The current round of this query - -A value of zero corresponds to the initial round. -""" ; - - :_1 [ rdfs:label "uri"; - rdfs:comment """ -A unique URI for the proposal. - -It MAY be possible to examine the proposal by resolving this resource, -and its associated URIs. -""" ; - a xsd:anyURI ], - - :_2 [ rdfs:label "opinion"; - rdfs:comment """ -The opinion on the proposal - -One of the strings "YES" "NO" or "NONE". -""" ; - # TODO constrain as an enumeration on three values efficiently - a xsd:string ] - ) . -``` - -Nodes are advised to use Waku messages to include their own -metadata in serializations as needed. - -## Syntax - -The semantic description presented above can be reliably round-tripped -through a suitable serialization mechanism. JSON-LD provides a -canonical mapping to UTF-8 JSON. - -At their core, the query messages are a simple enumeration of the -three possible values of the opinion: - - { NO, NONE, YES } - -When represented via integers, such as choosing - - { -1, 0, +1 } - -the parity summations across network invariants often become easier to -manipulate. - -## Security Considerations - - -### Privacy - -In practice, each honest node gossips its current opinion which -reduces the number of messages that need to be gossiped for a given -proposal. The resulting impact on the privacy of the node's opinion -is not currently analyzed. - -### Security with respect to various Adversarial Models - -Adversarial models have been tested for which the values for current -parameters of Claro have been tuned. Exposition of the -justification of this tuning need to be completed. - -### Local Strategies - -#### Random Adversaries - -A random adversary optionally chooses to respond to all queries with a -random decision. Note that this adversary may be in some sense -Byzantine but not malicious. The random adversary also models some -software defects involved in not "understanding" how to derive a truth -value for a given proposition. - -#### Infantile Adversary - -Like a petulant child, an infantile adversary responds with the -opposite vote of the honest majority on an opinion. - -### Omniscient Adversaries - -Omniscient adversaries have somehow gained an "unfair" participation in -consensus by being able to control `f` of `N` nodes with a out-of-band -"supra-liminal" coordination mechanism. Such adversaries use this -coordinated behavior to delay or sway honest majority consensus. - -#### Passive Gossip Adversary - -The passive network omniscient adversary is fully aware at all times -of the network state. Such an adversary can always chose to vote in -the most efficient way to block the distributed consensus from -finalizing. - -#### Active Gossip Adversary - -An omniscient gossip adversary somehow not only controls `f` of `N` -nodes, but has also has corrupted communications between nodes such -that she may inspect, delay, and drop arbitrary messages. Such an -adversary uses capability to corrupt consensus away from honest -decisions to ones favorable to itself. This adversary will, of -course, choose to participate in an honest manner until defecting is -most advantageous. - -### Future Directions - -Although we have proposed a normative description of the -implementation of the underlying binary consensus algorithm (Claro), -we believe we have prepared for analysis its adversarial performance -in a manner that is amenable to replacement by another member of the -[snow*](#snow*) family. - -We have presumed the existence of a general family of algorithms that -can be counted on to vote on nodes in the DAG in a fair manner. -Avalanche provides an example of the construction of votes on UTXO -transactions. One can express all state machine, i.e. account-based -models as checkpoints anchored in UTXO trust, so we believe that this -presupposition has some justification. We can envision a need for -tooling abstraction that allow one to just program the DAG itself, as -they should be of stable interest no matter if Claro isn't. - -## Informative References - -0. [Logos](<https://logos.co/>) - -1. [On BFT Consensus Evolution: From Monolithic to - DAG](<https://dahliamalkhi.github.io/posts/2022/06/dag-bft/>) - -2. [snow-ipfs](<https://ipfs.io/ipfs/QmUy4jh5mGNZvLkjies1RWM4YuvJh5o2FYopNPVYwrRVGV>) - -3. [snow*](<https://www.avalabs.org/whitepapers>) The Snow family of - algorithms - -4. [Move](<https://cloud.google.com/composer/docs/how-to/using/writing-dags>) - Move: a Language for Writing DAG Abstractions - -5. [rdf](<http://www.w3.org/1999/02/22-rdf-syntax-ns#>) - -6. [rdfs](<http://www.w3.org/2000/01/rdf-schema#>) - -7. [xsd](<http://www.w3.org/2001/XMLSchema#>) - -8. [n3-w3c-notes](<https://www.w3.org/TeamSubmission/n3/>) - -9. [ntp](<https://www.ntp.org/downloads.html>) - -## Normative References - -0. [Claro](<https://rdf.logos.co/protocol/Claro/1/0/0/raw>) - -1. [n3](<https://www.w3.org/DesignIssues/Notation3.html>) - -2. [json-ld](<https://json-ld.org/>) - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/nomos/README.md b/nomos/README.md deleted file mode 100644 index b9135059e..000000000 --- a/nomos/README.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Nomos Request For Comments(RFC) - -Nomos is building secure, flexible, and scalable infrastructure for developers creating applications for the network state. diff --git a/package.json b/package.json index a65169552..bb9e18b9d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "typecheck": "tsc", - "scrape": "node ./docusaurus-utils/scrapper/main.mjs" + "scrape": "node ./docusaurus-utils/scrapper/main.mjs", + "build:full": "yarn scrape && yarn build" }, "dependencies": { "@acid-info/logos-docusaurus-preset": "^1.0.0-alpha.174", @@ -23,9 +24,12 @@ "@emotion/react": "^11.11.0", "@emotion/styled": "^11.11.0", "@mdx-js/react": "^1.6.22", + "axios": "^1.7.2", + "clone-git-repo": "^0.0.2", "clsx": "^1.2.1", "dotenv": "^16.4.5", "mkdirp": "^3.0.1", + "ncp": "^2.0.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/status/24/curation.md b/status/24/curation.md deleted file mode 100644 index d5bf3baa3..000000000 --- a/status/24/curation.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: 24/STATUS-CURATION -name: Status Community Directory Curation Voting using Waku v2 -status: draft -description: A voting protocol for SNT holders to submit votes to a smart contract. Voting is immutable, which helps avoid sabotage from malicious peers. -editor: Szymon Szlachtowicz <szymon.s@ethworks.io> ---- -- Status: draft -- Editor: Szymon Szlachtowicz <szymon.s@ethworks.io> - -## Abstract -This specification is a voting protocol for peers to submit votes to a smart contract. Voting is immutable, -this will help avoid sabotage from malicious peers. - -## Motivation - -In open p2p protocol there is an issue with voting off-chain as there is much room for malicious peers to only include votes that support their case when submitting votes to chain. - -Proposed solution is to aggregate votes over waku and allow users to submit votes to smart contract that aren't already submitted. - -### Smart contract - -Voting should be finalized on chain so that the finished vote is immutable. -Because of that, smart contract needs to be deployed. -When votes are submitted smart contract has to verify what votes are properly signed and that sender has correct amount of SNT. -When Vote is verified the amount of SNT voted on specific topic by specific sender is saved on chain. - -### Double voting - -Smart contract should also keep a list of all signatures so that no one can send the same vote twice. -Another possibility is to allow each sender to only vote once. - -### Initializing Vote - -When someone wants to initialize vote he has to send a transaction to smart contract that will create a new voting session. -When initializing a user has to specify type of vote (Addition, Deletion), amount of his initial SNT to submit and public key of community under vote. -Smart contract will return a ID which is identifier of voting session. -Also there will be function on Smart Contract that when given community public key it will return voting session ID or undefined if community isn't under vote. - -## Voting - -### Sending votes - -Sending votes is simple every peer is able to send a message to Waku topic specific to given application: -``` -/status-community-directory-curation-vote/1/{voting-session-id}/json -``` - -vote object that is sent over waku should contain information about: - -```ts -type Vote = { - sender: string // address of the sender - vote: string // vote sent eg. 'yes' 'no' - sntAmount: BigNumber //number of snt cast on vote - sign: string // cryptographic signature of a transaction (signed fields: sender,vote,sntAmount,nonce,sessionID) - nonce: number // number of votes cast from this address on current vote (only if we allow multiple votes from the same sender) - sessionID: number // ID of voting session -} -``` - -### Aggregating votes - -Every peer that is opening specific voting session will listen to votes sent over p2p network, and aggregate them for a single transaction to chain. - -### Submitting to chain - -Every peer that has aggregated at least one vote will be able to send them to smart contract. -When someone votes he will aggregate his own vote and will be able to immediately send it. - -Peer doesn't need to vote to be able to submit the votes to the chain. - -Smart contract needs to verify that all votes are valid (eg. all senders had enough SNT, all votes are correctly signed) and that votes aren't duplicated on smart contract. - -### Finalizing - -Once the vote deadline has expired, the smart contract will not accept votes anymore. -Also directory will be updated according to vote results (community added to directory, removed etc.) - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/status/28/featuring.md b/status/28/featuring.md deleted file mode 100644 index 2b024702b..000000000 --- a/status/28/featuring.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 28/STATUS-FEATURING -name: Status community featuring using waku v2 -status: draft -description: To gain new members, current SNT holders can vote to feature an active Status community to the larger Status audience. -editor: Szymon Szlachtowicz <szymon.s@ethworks.io> ---- -- Status: draft -- Editor: Szymon Szlachtowicz <szymon.s@ethworks.io> - -## Abstract -This specification describes a voting method to feature different active Status Communities. - -## Overview - -When there is a active community that is seeking new members, current users of community should be able to feature their community so that it will be accessible to larger audience. -Status community curation DApp should provide such a tool. - -Rules of featuring: - - Given community can't be featured twice in a row. - - Only one vote per user per community (single user can vote on multiple communities) - - Voting will be done off-chain - - If community hasn't been featured votes for given community are still valid for the next 4 weeks - -Since voting for featuring is similar to polling solutions proposed in this spec could be also used for different applications. - -### Voting - -Voting for featuring will be done through waku v2. - -Payload of waku message will be : -```ts -type FeatureVote = { - voter: string // address of a voter - sntAmount: BigNumber // amount of snt voted on featuring - communityPK: string // public key of community - timestamp: number // timestamp of message, must match timestamp of wakuMessage - sign: string // cryptographic signature of a transaction (signed fields: voterAddress,sntAmount,communityPK,timestamp) -} -``` - -timestamp is necessary so that votes can't be reused after 4 week period - -### Counting Votes - -Votes will be counted by the DApp itself. -DApp will aggregate all the votes in the last 4 weeks and calculate which communities should be displayed in the Featured tab of DApp. - -Rules of counting: - - When multiple votes from the same address on the same community are encountered only the vote with highest timestamp is considered valid. - - If a community has been featured in a previous week it can't be featured in current week. - - In a current week top 5 (or 10) communities with highest amount of SNT votes up to previous Sunday 23:59:59 UTC are considered featured. - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/status/55/1to1-chat.md b/status/55/1to1-chat.md deleted file mode 100644 index f191ffef2..000000000 --- a/status/55/1to1-chat.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: 55/STATUS-1TO1-CHAT -name: Status 1-to-1 Chat -status: draft -category: Standards Track -description: A chat protocol to send public and private messages to a single recipient by the Status app. -editor: Aaryamann Challani <aaryamann@status.im> -contributors: -- Andrea Piana <andreap@status.im> -- Pedro Pombeiro <pedro@status.im> -- Corey Petty <corey@status.im> -- Oskar Thorén <oskarth@titanproxy.com> -- Dean Eigenmann <dean@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Andrea Piana <andreap@status.im> - - Pedro Pombeiro <pedro@status.im> - - Corey Petty <corey@status.im> - - Oskar Thorén <oskarth@titanproxy.com> - - Dean Eigenmann <dean@status.im> - - -## Abstract - -This specification describes how the Status 1-to-1 chat protocol is implemented on top of the Waku v2 protocol. -This protocol can be used to send messages to a single recipient. - -## Terminology - -- **Participant**: A participant is a user that is able to send and receive messages. -- **1-to-1 chat**: A chat between two participants. -- **Public chat**: A chat where any participant can join and read messages. -- **Private chat**: A chat where only invited participants can join and read messages. -- **Group chat**: A chat where multiple select participants can join and read messages. -- **Group admin**: A participant that is able to add/remove participants from a group chat. - -## Background - -This document describes how 2 peers communicate with each other to send messages in a 1-to-1 chat, with privacy and authenticity guarantees. - -## Specification - -### Overview - -This protocol MAY use any key-exchange mechanism previously discussed - - -1. [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) -2. [WAKU2-NOISE](https://github.com/waku-org/specs/blob/master/standards/application/noise) - -This protocol can provide end-to-end encryption to give peers a strong degree of privacy and security. -Public chat messages are publicly readable by anyone since there's no permission model for who is participating in a public chat. - -## Flow - -### Negotiation of a 1:1 chat - -There are two phases in the initial negotiation of a 1:1 chat: -1. **Identity verification** (e.g., face-to-face contact exchange through QR code, Identicon matching). -A QR code serves two purposes simultaneously - identity verification and initial key material retrieval; -1. **Asynchronous initial key exchange** - -For more information on account generation and trust establishment, see [65/ACCOUNT-ADDRESS](../65/account-address) - -### Post Negotiation - -After the peers have shared their public key material, a 1:1 chat can be established using the methods described in the key-exchange protocols mentioned above. - -### Session management - -The 1:1 chat is made robust by having sessions between peers. -It is handled by the key-exchange protocol used. For example, - -1. [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh), the session management is described in [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) - -2. [WAKU2-NOISE](https://github.com/waku-org/specs/blob/master/standards/application/noise), the session management is described in [WAKU2-NOISE-SESSIONS](https://github.com/waku-org/specs/blob/master/standards/application/noise-sessions) - -## Negotiation of a 1:1 chat amongst multiple participants (group chat) - -A small, private group chat can be constructed by having multiple participants negotiate a 1:1 chat amongst each other. -Each participant MUST maintain a session with all other participants in the group chat. -This allows for a group chat to be created with a small number of participants. - -However, this method does not scale as the number of participants increases, for the following reasons - -1. The number of messages sent over the network increases with the number of participants. -2. Handling the X3DH key exchange for each participant is computationally expensive. - -The above issues are addressed in [56/STATUS-COMMUNITIES](../56/communities), with other trade-offs. - -### Flow - -The following flow describes how a group chat is created and maintained. - -#### Membership Update Flow - -Membership updates have the following wire format: - -```protobuf -message MembershipUpdateMessage { - // The chat id of the private group chat - // derived in the following way: - // chat_id = hex(chat_creator_public_key) + "-" + random_uuid - // This chat_id MUST be validated by all participants - string chat_id = 1; - // A list of events for this group chat, first 65 bytes are the signature, then is a - // protobuf encoded MembershipUpdateEvent - repeated bytes events = 2; - oneof chat_entity { - // An optional chat message - ChatMessage message = 3; - // An optional reaction to a message - EmojiReaction emoji_reaction = 4; - } -} -``` - -Note that in `events`, the first element is the signature, and all other elements after are encoded `MembershipUpdateEvent`'s. - -where `MembershipUpdateEvent` is defined as follows: - -```protobuf -message MembershipUpdateEvent { - // Lamport timestamp of the event - uint64 clock = 1; - // Optional list of public keys of the targets of the action - repeated string members = 2; - // Name of the chat for the CHAT_CREATED/NAME_CHANGED event types - string name = 3; - // The type of the event - EventType type = 4; - // Color of the chat for the CHAT_CREATED/COLOR_CHANGED event types - string color = 5; - // Chat image - bytes image = 6; - - enum EventType { - UNKNOWN = 0; - CHAT_CREATED = 1; // See [CHAT_CREATED](#chat-created) - NAME_CHANGED = 2; // See [NAME_CHANGED](#name-changed) - MEMBERS_ADDED = 3; // See [MEMBERS_ADDED](#members-added) - MEMBER_JOINED = 4; // See [MEMBER_JOINED](#member-joined) - MEMBER_REMOVED = 5; // See [MEMBER_REMOVED](#member-removed) - ADMINS_ADDED = 6; // See [ADMINS_ADDED](#admins-added) - ADMIN_REMOVED = 7; // See [ADMIN_REMOVED](#admin-removed) - COLOR_CHANGED = 8; // See [COLOR_CHANGED](#color-changed) - IMAGE_CHANGED = 9; // See [IMAGE_CHANGED](#image-changed) - } -} -``` - - - -Note that the definitions for `ChatMessage` and `EmojiReaction` can be found in [chat_message.proto](https://github.com/status-im/status-go/blob/5fd9e93e9c298ed087e6716d857a3951dbfb3c1e/protocol/protobuf/chat_message.proto#L1) and [emoji_reaction.proto](https://github.com/status-im/status-go/blob/5fd9e93e9c298ed087e6716d857a3951dbfb3c1e/protocol/protobuf/emoji_reaction.proto). - -##### Chat Created - -When creating a group chat, this is the first event that MUST be sent. -Any event with a clock value lower than this MUST be discarded. -Upon receiving this event a client MUST validate the `chat_id` provided with the update and create a chat with identified by `chat_id`. - -By default, the creator of the group chat is the only group admin. - -##### Name Changed - -To change the name of the group chat, group admins MUST use a `NAME_CHANGED` event. -Upon receiving this event a client MUST validate the `chat_id` provided with the updates and MUST ensure the author of the event is an admin of the chat, otherwise the event MUST be ignored. -If the event is valid the chat name SHOULD be changed according to the provided message. - -##### Members Added - -To add members to the chat, group admins MUST use a `MEMBERS_ADDED` event. -Upon receiving this event a participant MUST validate the `chat_id` provided with the updates and MUST ensure the author of the event is an admin of the chat, otherwise the event MUST be ignored. -If the event is valid, a participant MUST update the list of members of the chat who have not joined, adding the members received. - -##### Member Joined - -To signal the intent to start receiving messages from a given chat, new participants MUST use a `MEMBER_JOINED` event. -Upon receiving this event a participant MUST validate the `chat_id` provided with the updates. -If the event is valid a participant MUST add the new participant to the list of participants stored locally. -Any message sent to the group chat MUST now include the new participant. - -##### Member Removed - -There are two ways in which a member MAY be removed from a group chat: -- A member MAY leave the chat by sending a `MEMBER_REMOVED` event, with the `members` field containing their own public key. -- An admin MAY remove a member by sending a `MEMBER_REMOVED` event, with the `members` field containing the public key of the member to be removed. - -Each participant MUST validate the `chat_id` provided with the updates and MUST ensure the author of the event is an admin of the chat, otherwise the event MUST be ignored. -If the event is valid, a participant MUST update the local list of members accordingly. - -##### Admins Added - -To promote participants to group admin, group admins MUST use an `ADMINS_ADDED` event. -Upon receiving this event, a participant MUST validate the `chat_id` provided with the updates, MUST ensure the author of the event is an admin of the chat, otherwise the event MUST be ignored. -If the event is valid, a participant MUST update the list of admins of the chat accordingly. - -##### Admin Removed - -Group admins MUST NOT be able to remove other group admins. -An admin MAY remove themselves by sending an `ADMIN_REMOVED` event, with the `members` field containing their own public key. -Each participant MUST validate the `chat_id` provided with the updates and MUST ensure the author of the event is an admin of the chat, otherwise the event MUST be ignored. -If the event is valid, a participant MUST update the list of admins of the chat accordingly. - -##### Color Changed - -To change the text color of the group chat name, group admins MUST use a `COLOR_CHANGED` event. - -##### Image Changed - -To change the display image of the group chat, group admins MUST use an `IMAGE_CHANGED` event. - -## Security Considerations - -1. Inherits the security considerations of the key-exchange mechanism used, e.g., [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) or [WAKU2-NOISE](https://github.com/waku-org/specs/blob/master/standards/application/noise) - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -1. [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) -2. [WAKU2-NOISE](https://github.com/waku-org/specs/blob/master/standards/application/noise) -3. [65/STATUS-ACCOUNT](../65/account-address) -4. [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) -5. [WAKU2-NOISE-SESSIONS](https://github.com/waku-org/specs/blob/master/standards/application/noise-sessions) -6. [56/STATUS-COMMUNITIES](../56/communities) -7. [chat_message.proto](https://github.com/status-im/status-go/blob/5fd9e93e9c298ed087e6716d857a3951dbfb3c1e/protocol/protobuf/chat_message.proto#L1) -8. [emoji_reaction.proto](https://github.com/status-im/status-go/blob/5fd9e93e9c298ed087e6716d857a3951dbfb3c1e/protocol/protobuf/emoji_reaction.proto) diff --git a/status/56/communities.md b/status/56/communities.md deleted file mode 100644 index b8d856d73..000000000 --- a/status/56/communities.md +++ /dev/null @@ -1,469 +0,0 @@ ---- -title: 56/STATUS-COMMUNITIES -name: Status Communities that run over Waku v2 -status: draft -category: Standards Track -description: Status Communities allow multiple users to communicate in a discussion space. This is a key feature of the Status application. -editor: Aaryamann Challani <aaryamann@status.im> -contributors: -- Andrea Piana <andreap@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Andrea Piana <andreap@status.im> - - -## Abstract - -This document describes the design of Status Communities over Waku v2, allowing for multiple users to communicate in a discussion space. -This is a key feature for the Status messaging app. - -## Background and Motivation - -The purpose of Status communities, as specified in this document, is allowing for large group chats. -Communities can have further substructure, e.g. specific channels. - -Smaller group chats, on the other hand, are out of scope for this document and can be built over [55/STATUS-1TO1-CHAT](../55/1to1-chat). -We refer to these smaller group chats simply as "group chats", to differentiate them from Communities. - -For group chats based on [55/STATUS-1TO1-CHAT](../55/1to1-chat), the key exchange mechanism MUST be X3DH, as described in [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh). - -However, this method does not scale as the number of participants increases, for the following reasons - -1. The number of messages sent over the network increases with the number of participants. -2. Handling the X3DH key exchange for each participant is computationally expensive. - -Having multicast channels reduces the overhead of a group chat based on 1:1 chat. -Additionally, if all the participants of the group chat have a shared key, then the number of messages sent over the network is reduced to one per message. - -## Terminology - -- **Community**: A group of peers that can communicate with each other. -- **Member**: A peer that is part of a community. -- **Admin**: A member that has administrative privileges. Used interchangeably with "owner". -- **Channel**: A designated subtopic for a community. Used interchangeably with "chat". - -## Design Requirements - -Due to the nature of communities, the following requirements are necessary for the design of communities - - -1. The creator of the Community is the owner of the Community. -2. The Community owner is trusted. -3. The Community owner can add or remove members from the Community. -This extends to banning and kicking members. -4. The Community owner can add, edit and remove channels. -5. Community members can send/receive messages to the channels which they have access to. -6. Communities may be encrypted (private) or unencrypted (public). -7. A Community is uniquely identified by a public key. -8. The public key of the Community is shared out of band. -9. The metadata of the Community can be found by listening on a content topic derived from the public key of the Community. -10. Community members run their own Waku nodes, with the configuration described in [Waku-Protocols](#waku-protocols). -Light nodes solely implementing [19/WAKU2-LIGHTPUSH](../../waku/standards/core/19/lightpush) may not be able to run their own Waku node with the configuration described. - -## Design - -### Cryptographic Primitives - -The following cryptographic primitives are used in the design - - -- X3DH -- Single Ratchet - - The single ratchet is used to encrypt the messages sent to the Community. - - The single ratchet is re-keyed when a member is added/removed from the Community. - -## Wire format - - - - - -```protobuf -syntax = "proto3"; - -message IdentityImage { - // payload is a context based payload for the profile image data, - // context is determined by the `source_type` - bytes payload = 1; - // source_type signals the image payload source - SourceType source_type = 2; - // image_type signals the image type and method of parsing the payload - ImageType image_type = 3; - // encryption_keys is a list of encrypted keys that can be used to decrypt an encrypted payload - repeated bytes encryption_keys = 4; - // encrypted signals the encryption state of the payload, default is false. - bool encrypted = 5; - // SourceType are the predefined types of image source allowed - enum SourceType { - UNKNOWN_SOURCE_TYPE = 0; - - // RAW_PAYLOAD image byte data - RAW_PAYLOAD = 1; - - // ENS_AVATAR uses the ENS record's resolver get-text-data.avatar data - // The `payload` field will be ignored if ENS_AVATAR is selected - // The application will read and parse the ENS avatar data as image payload data, URLs will be ignored - // The parent `ChatMessageIdentity` must have a valid `ens_name` set - ENS_AVATAR = 2; - } -} - -// SocialLinks represents social link associated with given chat identity (personal/community) -message SocialLink { - // Type of the social link - string text = 1; - // URL of the social link - string url = 2; -} -// ChatIdentity represents identity of a community/chat -message ChatIdentity { - // Lamport timestamp of the message - uint64 clock = 1; - // ens_name is the valid ENS name associated with the chat key - string ens_name = 2; - // images is a string indexed mapping of images associated with an identity - map images = 3; - // display name is the user set identity - string display_name = 4; - // description is the user set description - string description = 5; - string color = 6; - string emoji = 7; - repeated SocialLink social_links = 8; - // first known message timestamp in seconds (valid only for community chats for now) - // 0 - unknown - // 1 - no messages - uint32 first_message_timestamp = 9; -} - -message Grant { - // Community ID (The public key of the community) - bytes community_id = 1; - // The member ID (The public key of the member) - bytes member_id = 2; - // The chat for which the grant is given - string chat_id = 3; - // The Lamport timestamp of the grant - uint64 clock = 4; -} - -message CommunityMember { - // The roles a community member MAY have - enum Roles { - UNKNOWN_ROLE = 0; - ROLE_ALL = 1; - ROLE_MANAGE_USERS = 2; - ROLE_MODERATE_CONTENT = 3; - } - repeated Roles roles = 1; -} - -message CommunityPermissions { - // The type of access a community MAY have - enum Access { - UNKNOWN_ACCESS = 0; - NO_MEMBERSHIP = 1; - INVITATION_ONLY = 2; - ON_REQUEST = 3; - } - - // If the community should be available only to ens users - bool ens_only = 1; - // If the community is private - bool private = 2; - Access access = 3; -} - -message CommunityAdminSettings { - // If the Community admin may pin messages - bool pin_message_all_members_enabled = 1; -} - -message CommunityChat { - // A map of members in the community to their roles in a chat - map members = 1; - // The permissions of the chat - CommunityPermissions permissions = 2; - // The metadata of the chat - ChatIdentity identity = 3; - // The category of the chat - string category_id = 4; - // The position of chat in the display - int32 position = 5; -} - -message CommunityCategory { - // The category id - string category_id = 1; - // The name of the category - string name = 2; - // The position of the category in the display - int32 position = 3; -} - -message CommunityInvitation { - // Encrypted/unencrypted community description - bytes community_description = 1; - // The grant offered by the community - bytes grant = 2; - // The chat id requested to join - string chat_id = 3; - // The public key of the community - bytes public_key = 4; -} - -message CommunityRequestToJoin { - // The Lamport timestamp of the request - uint64 clock = 1; - // The ENS name of the requester - string ens_name = 2; - // The chat id requested to join - string chat_id = 3; - // The public key of the community - bytes community_id = 4; - // The display name of the requester - string display_name = 5; -} - -message CommunityCancelRequestToJoin { - // The Lamport timestamp of the request - uint64 clock = 1; - // The ENS name of the requester - string ens_name = 2; - // The chat id requested to join - string chat_id = 3; - // The public key of the community - bytes community_id = 4; - // The display name of the requester - string display_name = 5; - // Magnet uri for community history protocol - string magnet_uri = 6; -} - -message CommunityRequestToJoinResponse { - // The Lamport timestamp of the request - uint64 clock = 1; - // The community description - CommunityDescription community = 2; - // If the request was accepted - bool accepted = 3; - // The grant offered by the community - bytes grant = 4; - // The community public key - bytes community_id = 5; -} - -message CommunityRequestToLeave { - // The Lamport timestamp of the request - uint64 clock = 1; - // The community public key - bytes community_id = 2; -} - -message CommunityDescription { - // The Lamport timestamp of the message - uint64 clock = 1; - // A mapping of members in the community to their roles - map members = 2; - // The permissions of the Community - CommunityPermissions permissions = 3; - // The metadata of the Community - ChatIdentity identity = 5; - // A mapping of chats to their details - map chats = 6; - // A list of banned members - repeated string ban_list = 7; - // A mapping of categories to their details - map categories = 8; - // The admin settings of the Community - CommunityAdminSettings admin_settings = 10; - // If the community is encrypted - bool encrypted = 13; - // The list of tags - repeated string tags = 14; -} -``` - -Note: The usage of the clock is described in the [Clock](#clock) section. - -### Content topic usage - -"Content topic" refers to the field in [14/WAKU2-MESSAGE](../../waku/standards/core/14/message#message-attributes), further elaborated in [10/WAKU2](../../waku/standards/core/10/waku2#overview-of-protocol-interaction). - -#### Advertising a Community - -The content topic that the community is advertised on MUST be derived from the public key of the community. -The content topic MUST be the first four bytes of the keccak-256 hash of the compressed (33 bytes) public key of the community encoded into a hex string. - -``` -hash = hex(keccak256(encodeToHex(compressedPublicKey))) - -topicLen = 4 -if len(hash) < topicLen { - topicLen = len(hash) -} - -var topic [4]byte -for i = 0; i < topicLen; i++ { - topic[i] = hash[i] -} - -contentTopic = "/waku/1/0x" + topic + "/rfc26" -``` - -#### Community channels/chats - -The unique identifier for a community channel/chat is the chat id. - - - -The content topic that Community channels/chats use MUST be the hex-encoded keccak-256 hash of the public key of the community concatenated with the chat id. - -``` -hash = hex(keccak256(encodeToHex(compressedPublicKey + chatId))) - -topicLen = 4 -if len(hash) < topicLen { - topicLen = len(hash) -} -var topic [4]byte -for i = 0; i < topicLen; i++ { - topic[i] = hash[i] -} - -contentTopic = "/waku/1/0x" + topic + "/rfc26" -``` - - -#### Community event messages - -Requests to leave, join, kick and ban, as well as key exchange messages, MUST be sent to the content topic derived from the public key of the community. -The content topic MUST be the hex-encoded keccak-256 hash of the public key of the community. - -``` -hash = hex(keccak256(encodeToHex(publicKey))) - -topicLen = 4 -if len(hash) < topicLen { - topicLen = len(hash) -} -var topic [4]byte -for i = 0; i < topicLen; i++ { - topic[i] = hash[i] -} - -contentTopic = "/waku/1/0x" + topic + "/rfc26" -``` - -### Community Management - -The flows for Community management are as described below. - -#### Community Creation Flow - -1. The Community owner generates a public/private key pair. -2. The Community owner configures the Community metadata, according to the wire format "CommunityDescription". -3. The Community owner publishes the Community metadata on a content topic derived from the public key of the Community. -the Community metadata SHOULD be encrypted with the public key of the Community. - - -The Community metadata MAY be sent during fixed intervals, to ensure that the Community metadata is available to members. -The Community metadata SHOULD be sent every time the Community metadata is updated. -4. The Community owner MAY advertise the Community out of band, by sharing the public key of the Community on other mediums of communication. - -#### Community Join Flow (peer requests to join a Community) - -1. A peer and the Community owner establish a 1:1 chat as described in [55/STATUS-1TO1-CHAT](../55/1to1-chat). -2. The peer requests to join a Community by sending a "CommunityRequestToJoin" message to the Community. -At this point, the peer MAY send a "CommunityCancelRequestToJoin" message to cancel the request. -3. The Community owner MAY accept or reject the request. -4. If the request is accepted, the Community owner sends a "CommunityRequestToJoinResponse" message to the peer. -5. The Community owner then adds the member to the Community metadata, and publishes the updated Community metadata. - -#### Community Join Flow (peer is invited to join a Community) - -1. The Community owner and peer establish a 1:1 chat as described in [55/STATUS-1TO1-CHAT](../55/1to1-chat). -2. The peer is invited to join a Community by the Community owner, by sending a "CommunityInvitation" message. -3. The peer decrypts the "CommunityInvitation" message, and verifies the signature. -4. The peer requests to join a Community by sending a "CommunityRequestToJoin" message to the Community. -5. The Community owner MAY accept or reject the request. -6. If the request is accepted, the Community owner sends a "CommunityRequestToJoinResponse" message to the peer. -7. The Community owner then adds the member to the Community metadata, and publishes the updated Community metadata. - -#### Community Leave Flow - -1. A member requests to leave a Community by sending a "CommunityRequestToLeave" message to the Community. -2. The Community owner MAY accept or reject the request. -3. If the request is accepted, the Community owner removes the member from the Community metadata, and publishes the updated Community metadata. - -#### Community Ban Flow - -1. The Community owner adds a member to the ban list, revokes their grants, and publishes the updated Community metadata. -2. If the Community is Private, Re-keying is performed between the members of the Community, to ensure that the banned member is unable to decrypt any messages. - -### Waku Protocols - -The following Waku protocols SHOULD be used to implement Status Communities - - -1. [11/WAKU2-RELAY](../../waku/standards/core/11/relay) - To send and receive messages -2. [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) - To encrypt and decrypt messages -3. [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) - To handle session keys -4. [14/WAKU2-MESSAGE](../../waku/standards/core/14/message) - To wrap community messages in a Waku message -5. [13/WAKU2-STORE](../../waku/standards/core/13/store) - To store and retrieve messages for offline devices - - -The following Waku protocols MAY be used to implement Status Communities - - -1. [12/WAKU2-FILTER](../../waku/standards/core/12/filter) - Content filtering for resource restricted devices -2. [19/WAKU2-LIGHTPUSH](../../waku/standards/core/19/lightpush) - Allows Light clients to participate in the network - -### Backups - -The member MAY back up their local settings, by encrypting it with their public key, and sending it to a given content topic. -The member MAY then rely on this backup to restore their local settings, in case of a data loss. -This feature relies on [13/WAKU2-STORE](../../waku/standards/core/13/store) for storing and retrieving messages. - -### Clock - -The clock used in the wire format refers to the Lamport timestamp of the message. -The Lamport timestamp is a logical clock that is used to determine the order of events in a distributed system. -This allows ordering of messages in an asynchronous network where messages may be received out of order. - -## Security Considerations - -1. The Community owner is a single point of failure. If the Community owner is compromised, the Community is compromised. - -2. Follows the same security considerations as the [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) protocol. - -## Future work - -1. To scale and optimize the Community management, the Community metadata should be stored on a decentralized storage system, and only the references to the Community metadata should be broadcasted. The following document describes this method in more detail - [Optimizing the `CommunityDescription` dissemination](https://hackmd.io/rD1OfIbJQieDe3GQdyCRTw) - -2. Token gating for communities - -3. Sharding the content topic used for [#Community Event Messages](#community-event-messages), since members of the community don't need to receive all the control messages. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [55/STATUS-1TO1-CHAT](../55/1to1-chat) -- [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) -- [19/WAKU2-LIGHTPUSH](../../waku/standards/core/19/lightpush) -- [14/WAKU2-MESSAGE](../../waku/standards/core/14/message) -- [10/WAKU2](../../waku/standards/core/10/waku2) -- [11/WAKU2-RELAY](../../waku/standards/core/11/relay) -- [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) -- [13/WAKU2-STORE](../../waku/standards/core/13/store) -- [12/WAKU2-FILTER](../../waku/standards/core/12/filter) - -### informative -- [community.go](https://github.com/status-im/status-go/blob/6072bd17ab1e5d9fc42cf844fcb8ad18aa07760c/protocol/communities/community.go) -- [organisation-channels.md](https://github.com/status-im/specs/blob/403b5ce316a270565023fc6a1f8dec138819f4b0/docs/raw/organisation-channels) diff --git a/status/61/community-history-service.md b/status/61/community-history-service.md deleted file mode 100644 index 43948b202..000000000 --- a/status/61/community-history-service.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -title: 61/STATUS-Community-History-Service -name: Status Community History Service -status: draft -category: Standards Track -description: Explains how new members of a Status community can request historical messages from archive nodes. -editor: r4bbit <r4bbit@status.im> -contributors: - - Sanaz Taheri <sanaz@status.im> - - John Lea <john@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: r4bbit <r4bbit@status.im> -- Contributors: - - Sanaz Taheri <sanaz@status.im> - - John Lea <john@status.im> - - -## Abstract - -Messages are stored permanently by store nodes ([13/WAKU2-STORE](../../waku/standards/core/13/store)) for up to a certain configurable period of time, limited by the overall storage provided by a store node. -Messages older than that period are no longer provided by store nodes, making it impossible for other nodes to request historical messages that go beyond that time range. -This raises issues in the case of Status communities, where recently joined members of a community are not able to request complete message histories of the community channels. - -This specification describes how **Control Nodes** (which are specific nodes in Status communities) archive historical message data of their communities, beyond the time range limit provided by Store Nodes using the [BitTorrent](https://bittorrent.org) protocol. -It also describes how the archives are distributed to community members via the Status network, so they can fetch them and gain access to a complete message history. - -## Terminology - -The following terminology is used throughout this specification. Notice that some actors listed here are nodes that operate in Waku networks only, while others operate in the Status communities layer): - -| Name | References | -| -------------------- | --- | -| Waku node | An Waku node ([10/WAKU2](../../waku/standards/core/10/waku2)) that implements [11/WAKU2-RELAY](../../waku/standards/core/11/relay)| -| Store node | A Waku node that implements [13/WAKU2-STORE](../../waku/standards/core/13/store) | -| Waku network | A group of Waku nodes forming a graph, connected via [11/WAKU2-RELAY](../../waku/standards/core/11/relay) | -| Status user | An Status account that is used in a Status consumer product, such as Status Mobile or Status Desktop | -| Status node | A Status client run by a Status application | -| Control node | A Status node that owns the private key for a Status community | -| Community member | A Status user that is part of a Status community, not owning the private key of the community | -| Community member node| A Status node with message archive capabilities enabled, run by a community member | -| Live messages | Waku messages received through the Waku network | -| BitTorrent client | A program implementing the [BitTorrent](https://bittorrent.org) protocol | -| Torrent/Torrent file | A file containing metadata about data to be downloaded by BitTorrent clients | -| Magnet link | A link encoding the metadata provided by a torrent file ([Magnet URI scheme](https://en.wikipedia.org/wiki/Magnet_URI_scheme)) | - -## Requirements / Assumptions - -This specification has the following assumptions: - -- Store nodes([13/WAKU2-STORE](../../waku/standards/core/13/store)) are available 24/7, ensuring constant live message availability. -- The storage time range limit is 30 days. -- Store nodes have enough storage to persist historical messages for up to 30 days. -- No store nodes have storage to persist historical messages older than 30 days. -- All nodes are honest. -- The network is reliable. - -Furthermore, it assumes that: - -- Control nodes have enough storage to persist historical messages older than 30 days. -- Control nodes provide archives with historical messages **at least** every 30 days. -- Control nodes receive all community messages. -- Control nodes are honest. -- Control nodes know at least one store node from which it can query historical messages. - -These assumptions are less than ideal and will be enhanced in future work. This [forum discussion](https://forum.vac.dev/t/status-communities-protocol-and-product-point-of-view/114) provides more details. - -## Overview - -The following is a high-level overview of the user flow and features this specification describes. For more detailed descriptions, read the dedicated sections in this specification. - -### Serving community history archives - -Control nodes go through the following (high level) process to provide community members with message histories: - -1. Community owner creates a Status community (previously known as [org channels](https://github.com/status-im/specs/pull/151)) which makes its node a Control node. -2. Community owner enables message archive capabilities (on by default but can be turned off as well - see [UI feature spec](https://github.com/status-im/feature-specs/pull/36)). -3. A special type of channel to exchange metadata about the archival data is created, this channel is not visible in the user interface. -4. Community owner invites community members. -5. Control node receives messages published in channels and stores them into a local database. -6. After 7 days, the control node exports and compresses last 7 days worth of messages from database and bundles it together with a [message archive index](#waku-message-archive-index) into a torrent, from which it then creates a magnet link ([Magnet URI scheme](https://en.wikipedia.org/wiki/Magnet_URI_scheme), [Extensions for Peers to Send Metadata Files](https://www.bittorrent.org/beps/bep_0009.html)). -7. Control node sends the magnet link created in step 6 to community members via special channel created in step 3 through the Waku network. -8. Every subsequent 7 days, steps 6 and 7 are repeated and the new message archive data is appended to the previously created message archive data. - -### Serving archives for missed messages - -If the control node goes offline (where "offline" means, the control node's main process is no longer running), it MUST go through the following process: - -1. Control node restarts -2. Control node requests messages from store nodes for the missed time range for all channels in their community -3. All missed messages are stored into control node's local message database -4. If 7 or more days have elapsed since the last message history torrent was created, the control node will perform step 6 and 7 of [Serving community history archives](#serving-community-history-archives) for every 7 days worth of messages in the missed time range (e.g. if the node was offline for 30 days, it will create 4 message history archives) - -### Receiving community history archives - -Community member nodes go through the following (high level) process to fetch and restore community message histories: - -1. User joins community and becomes community member (see [org channels spec](../56/communities)) -2. By joining a community, member nodes automatically subscribe to special channel for message archive metadata exchange provided by the community -3. Member node requests live message history (last 30 days) of all the community channels including the special channel from store nodes -4. Member node receives Waku message ([14/WAKU2-MESSAGE](../../waku/standards/core/14/message)) that contains the metadata magnet link from the special channel -5. Member node extracts the magnet link from the Waku message and passes it to torrent client -6. Member node downloads [message archive index](#message-history-archive-index) file and determines which message archives are not downloaded yet (all or some) -7. Member node fetches missing message archive data via torrent -8. Member node unpacks and decompresses message archive data to then hydrate its local database, deleting any messages for that community that the database previously stored in the same time range as covered by the message history archive - -## Storing live messages - -For archival data serving, the control node MUST store live messages as [14/WAKU2-MESSAGE](../../waku/standards/core/14/message). -This is in addition to their database of application messages. -This is required to provide confidentiality, authenticity, and integrity of message data distributed via the BitTorrent layer, and later validated by community members when they unpack message history archives. - -Control nodes SHOULD remove those messages from their local databases once they are older than 30 days and after they have been turned into message archives and distributed to the BitTorrent network. - -### Exporting messages for bundling - -Control nodes export Waku messages from their local database for creating and bundling history archives using the following criteria: - -- Waku messages to be exported MUST have a `contentTopic` that match any of the topics of the community channels -- Waku messages to be exported MUST have a `timestamp` that lies within a time range of 7 days - -The `timestamp` is determined by the context in which the control node attempts to create a message history archives as described below: - -1. The control node attempts to create an archive periodically for the past seven days (including the current day). In this case, the `timestamp` has to lie within those 7 days. -2. The control node has been offline (control node's main process has stopped and needs restart) and attempts to create archives for all the live messages it has missed since it went offline. In this case, the `timestamp` has to lie within the day the latest message was received and the current day. - -Exported messages MUST be restored as [14/WAKU2-MESSAGE](../../waku/standards/core/14/message) for bundling. Waku messages that are older than 30 days and have been exported for bundling can be removed from the control node's database (control nodes still maintain a database of application messages). - -## Message history archives - -Message history archives are represented as `WakuMessageArchive` and created from Waku messages exported from the local database. -Message history archives are implemented using the following protocol buffer. - -### WakuMessageHistoryArchive - -The `from` field SHOULD contain a timestamp of the time range's lower bound. -The type parallels the `timestamp` of [WakuMessage](../../waku/standards/core/14/message#payloads). - -The `to` field SHOULD contain a timestamp of the time range's the higher bound. - -The `contentTopic` field MUST contain a list of all communiity channel topics. - -The `messages` field MUST contain all messages that belong into the archive given its `from`, `to` and `contentTopic` fields. - -The `padding` field MUST contain the amount of zero bytes needed so that the overall byte size of the protobuf encoded `WakuMessageArchive` is a multiple of the `pieceLength` used to divide the message archive data into pieces. -This is needed for seamless encoding and decoding of archival data in interation with BitTorrent as explained in [creating message archive torrents](#creating-message-archive-torrents). - -``` -syntax = "proto3" - -message WakuMessageArchiveMetadata { - uint8 version = 1 - uint64 from = 2 - uint64 to = 3 - repeated string contentTopic = 4 -} - -message WakuMessageArchive { - uint8 version = 1 - WakuMessageArchiveMetadata metadata = 2 - repeated WakuMessage messages = 3 // `WakuMessage` is provided by 14/WAKU2-MESSAGE - bytes padding = 4 -} -``` - -## Message history archive index - -Control nodes MUST provide message archives for the entire community history. -The entirey history consists of a set of `WakuMessageArchive`'s where each archive contains a subset of historical `WakuMessage`s for a time range of seven days. -All the `WakuMessageArchive`s are concatenated into a single file as a byte string (see [Ensuring reproducible data pieces](#ensuring-reproducible-data-pieces)). - -Control nodes MUST create a message history archive index (`WakuMessageArchiveIndex`) with metadata that allows receiving nodes to only fetch the message history archives they are interested in. - -### WakuMessageArchiveIndex - -A `WakuMessageArchiveIndex` is a map where the key is the KECCAK-256 hash of the `WakuMessageArchiveIndexMetadata` derived from a 7-day archive and the value is an instance of that `WakuMessageArchiveIndexMetadata` corresponding to that archive. - -The `offset` field MUST contain the position at which the message history archive starts in the byte string of the total message archive data. This MUST be the sum of the length of all previously created message archives in bytes (see [Creating message archive torrents](#creating-message-archive-torrents)). - -``` -syntax = "proto3" - -message WakuMessageArchiveIndexMetadata { - uint8 version = 1 - WakuMessageArchiveMetadata metadata = 2 - uint64 offset = 3 - uint64 num_pieces = 4 -} - -message WakuMessageArchiveIndex { - map archives = 1 -} -``` - -The control node MUST update the `WakuMessageArchiveIndex` every time it creates one or more `WakuMessageArchive`s and bundle it into a new torrent. -For every created `WakuMessageArchive`, there MUST be a `WakuMessageArchiveIndexMetadata` entry in the `archives` field `WakuMessageArchiveIndex`. - -# Creating message archive torrents - -Control nodes MUST create a torrent file ("torrent") containing metadata to all message history archives. -To create a torrent file, and later serve the message archive data in the BitTorrent network, control nodes MUST store the necessary data in dedicated files on the file system. - -A torrent's source folder MUST contain the following two files: - -- `data` - Contains all protobuf encoded `WakuMessageArchive`'s (as bit strings) concatenated in ascending order based on their time -- `index` - Contains the protobuf encoded `WakuMessageArchiveIndex` - -Control nodes SHOULD store these files in a dedicated folder that is identifiable via the community id. - -### Ensuring reproducible data pieces - -The control node MUST ensure that the byte string resulting from the protobuf encoded `data` is equal to the byte string `data` from the previously generated message archive torrent, plus the data of the latest 7 days worth of messages encoded as `WakuMessageArchive`. -Therefore, the size of `data` grows every seven days as it's append only. - -The control nodes also MUST ensure that the byte size of every individual `WakuMessageArchive` encoded protobuf is a multiple of `pieceLength: ???` (**TODO**) using the `padding` field. -If the protobuf encoded 'WakuMessageArchive` is not a multiple of `pieceLength`, its `padding` field MUST be filled with zero bytes and the `WakuMessageArchive` MUST be re-encoded until its size becomes multiple of `pieceLength`. - -This is necessary because the content of the `data` file will be split into pieces of `pieceLength` when the torrent file is created, and the SHA1 hash of every piece is then stored in the torrent file and later used by other nodes to request the data for each individual data piece. - -By fitting message archives into a multiple of `pieceLength` and ensuring they fill possible remaining space with zero bytes, control nodes prevent the **next** message archive to occupy that remaining space of the last piece, which will result in a different SHA1 hash for that piece. - -#### **Example: Without padding** - -Let `WakuMessageArchive` "A1" be of size 20 bytes: - -``` - 0 11 22 33 44 55 66 77 88 99 -10 11 12 13 14 15 16 17 18 19 -``` - -With a `pieceLength` of 10 bytes, A1 will fit into `20 / 10 = 2` pieces: - -``` - 0 11 22 33 44 55 66 77 88 99 // piece[0] SHA1: 0x123 -10 11 12 13 14 15 16 17 18 19 // piece[1] SHA1: 0x456 -``` - -#### **Example: With padding** - -Let `WakuMessageArchive` "A2" be of size 21 bytes: - -``` - 0 11 22 33 44 55 66 77 88 99 -10 11 12 13 14 15 16 17 18 19 -20 -``` - -With a `pieceLength` of 10 bytes, A2 will fit into `21 / 10 = 2` pieces. The remainder will introduce a third piece: - -``` - 0 11 22 33 44 55 66 77 88 99 // piece[0] SHA1: 0x123 -10 11 12 13 14 15 16 17 18 19 // piece[1] SHA1: 0x456 -20 // piece[2] SHA1: 0x789 -``` - -The next `WakuMessageArchive` "A3" will be appended ("#3") to the existing data and occupy the remaining space of the third data piece. The piece at index 2 will now produce a different SHA1 hash: - -``` - 0 11 22 33 44 55 66 77 88 99 // piece[0] SHA1: 0x123 -10 11 12 13 14 15 16 17 18 19 // piece[1] SHA1: 0x456 -20 #3 #3 #3 #3 #3 #3 #3 #3 #3 // piece[2] SHA1: 0xeef -#3 #3 #3 #3 #3 #3 #3 #3 #3 #3 // piece[3] -``` - -By filling up the remaining space of the third piece with A2 using its `padding` field, it is guaranteed that its SHA1 will stay the same: - -``` - 0 11 22 33 44 55 66 77 88 99 // piece[0] SHA1: 0x123 -10 11 12 13 14 15 16 17 18 19 // piece[1] SHA1: 0x456 -20 0 0 0 0 0 0 0 0 0 // piece[2] SHA1: 0x999 -#3 #3 #3 #3 #3 #3 #3 #3 #3 #3 // piece[3] -#3 #3 #3 #3 #3 #3 #3 #3 #3 #3 // piece[4] -``` - -### Seeding message history archives - -The control node MUST seed the [generated torrent](#creating-message-archive-torrents) until a new `WakuMessageArchive` is created. - -The control node SHOULD NOT seed torrents for older message history archives. Only one torrent at a time should be seeded. - -### Creating magnet links - -Once a torrent file for all message archives is created, the control node MUST derive a magnet link following the [Magnet URI scheme](https://en.wikipedia.org/wiki/Magnet_URI_scheme) using the underlying BitTorrent protocol client. - -### Message archive distribution - -Message archives are available via the BitTorrent network as they are being [seeded by the control node](#seeding-message-history-archives). -Other community member nodes will download the message archives from the BitTorrent network once they receive a magnet link that contains a message archive index. - -The control node MUST send magnet links containing message archives and the message archive index to a special community channel. -The topic of that special channel follows the following format: - -``` -/{application-name}/{version-of-the-application}/{content-topic-name}/{encoding} -``` - -All messages sent with this topic MUST be instances of `ApplicationMetadataMessage` ([62/STATUS-PAYLOAD](../62/payload)) with a `payload` of `CommunityMessageArchiveIndex`. - -Only the control node MAY post to the special channel. Other messages on this specified channel MUST be ignored by clients. -Community members MUST NOT have permission to send messages to the special channel. -However, community member nodes MUST subscribe to special channel to receive Waku messages containing magnet links for message archives. - -### Canonical message histories - -Only control nodes are allowed to distribute messages with magnet links via the special channel for magnet link exchange. -Community members MUST NOT be allowed to post any messages to the special channel. - -Status nodes MUST ensure that any message that isn't signed by the control node in the special channel is ignored. - -Since the magnet links are created from the control node's database (and previously distributed archives), the message history provided by the control node becomes the canonical message history and single source of truth for the community. - -Community member nodes MUST replace messages in their local databases with the messages extracted from archives within the same time range. -Messages that the control node didn't receive MUST be removed and are no longer part of the message history of interest, even if it already existed in a community member node's database. - -## Fetching message history archives - -Generally, fetching message history archives is a three step process: - -1. Receive [message archive index](#message-history-archive-index) magnet link as described in [Message archive distribution], download `index` file from torrent, then determine which message archives to download -2. Download individual archives - -Community member nodes subscribe to the special channel that control nodes publish magnet links for message history archives to. -There are two scenarios in which member nodes can receive such a magnet link message from the special channel: - -1. The member node receives it via live messages, by listening to the special channel -2. The member node requests messages for a time range of up to 30 days from store nodes (this is the case when a new community member joins a community) - -### Downloading message archives -When member nodes receive a message with a `CommunityMessageHistoryArchive` ([62/STATUS-PAYLOADS](../62/payloads)) from the aforementioned channnel, they MUST extract the `magnet_uri` and pass it to their underlying BitTorrent client so they can fetch the latest message history archive index, which is the `index` file of the torrent (see [Creating message archive torrents](#creating-message-archive-torrents)). - -Due to the nature of distributed systems, there's no guarantee that a received message is the "last" message. This is especially true when member nodes request historical messages from store nodes. - -Therefore, member nodes MUST wait for 20 seconds after receiving the last `CommunityMessageArchive` before they start extracting the magnet link to fetch the latest archive index. - -Once a message history archive index is downloaded and parsed back into `WakuMessageArchiveIndex`, community member nodes use a local lookup table to determine which of the listed archives are missing using the KECCAK-256 hashes stored in the index. - -For this lookup to work, member nodes MUST store the KECCAK-256 hashes of the `WakuMessageArchiveIndexMetadata` provided by the `index` file for all of the message history archives that have been downlaoded in their local database. - -Given a `WakuMessageArchiveIndex`, member nodes can access individual `WakuMessageArchiveIndexMetadata` to download individual archives. - -Community member nodes MUST choose one of the following options: - -1. **Download all archives** - Request and download all data pieces for `data` provided by the torrent (this is the case for new community member nodes that haven't downloaded any archives yet) -2. **Download only the latest archive** - Request and download all pieces starting at the `offset` of the latest `WakuMessageArchiveIndexMetadata` (this the case for any member node that already has downloaded all previous history and is now interested in only the latst archive) -3. **Download specific archives** - Look into `from` and `to` fields of every `WakuMessageArchiveIndexMetadata` and determine the pieces for archives of a specific time range (can be the case for member nodes that have recently joined the network and are only interested in a subset of the complete history) - -### Storing historical messages - -When message archives are fetched, community member nodes MUST unwrap the resulting `WakuMessage` instances into `ApplicationMetadataMessage` instances and store them in their local database. -Community member nodes SHOULD NOT store the wrapped `WakuMessage` messages. - -All message within the same time range MUST be replaced with the messages provided by the message history archive. - -Community members nodes MUST ignore the expiration state of each archive message. - -## Considerations - -The following are things to cosider when implementing this specification. - -## Control node honesty - -This spec assumes that all control nodes are honest and behave according to the spec. Meaning they don't inject their own messages into, or remove any messages from historic archives. - -## Bandwidth consumption - -Community member nodes will download the latest archive they've received from the archive index, which includes messages from the last seven days. Assuming that community members nodes were online for that time range, they have already downloaded that message data and will now download an archive that contains the same. - -This means there's a possibility member nodes will download the same data at least twice. - -## Multiple community owners - -It is possible for control nodes to export the private key of their owned community and pass it to other users so they become control nodes as well. -This means, it's possible for multiple control nodes to exist. - -This might conflict with the assumption that the control node serves as a single source of thruth. Multiple control nodes can have different message histories. - -Not only will multiple control nodes multiply the amount of archive index messages being distributed to the network, they might also contain different sets of magnet links and their corresponding hashes. - -Even if just a single message is missing in one of the histories, the hashes presented in archive indices will look completely different, resulting in the community member node to download the corresponding archive (which might be identical to an archive that was already downloaded, except for that one message). - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References -* [13/WAKU2-STORE](../../waku/standards/core/13/store) -* [BitTorrent](https://bittorrent.org) -* [10/WAKU2](../../waku/standards/core/10/waku2) -* [11/WAKU2-RELAY](../../waku/standards/core/11/relay) -* [Magnet URI scheme](https://en.wikipedia.org/wiki/Magnet_URI_scheme) -* [forum discussion](https://forum.vac.dev/t/status-communities-protocol-and-product-point-of-view/114) -* [org channels](https://github.com/status-im/specs/pull/151) -* [UI feature spec](https://github.com/status-im/feature-specs/pull/36) -* [Extensions for Peers to Send Metadata Files](https://www.bittorrent.org/beps/bep_0009.html) -* [org channels spec](../56/communities) -* [14/WAKU2-MESSAGE](../../waku/standards/core/14/message) -* [62/STATUS-PAYLOADS](../62/payloads) diff --git a/status/62/payloads.md b/status/62/payloads.md deleted file mode 100644 index 6f56a8ac5..000000000 --- a/status/62/payloads.md +++ /dev/null @@ -1,1083 +0,0 @@ ---- -title: 62/STATUS-Payloads -name: Status Message Payloads -status: draft -editor: r4bbit <r4bbit@status.im> -contributors: -- Adam Babik <adam@status.im> -- Andrea Maria Piana <andreap@status.im> -- Oskar Thoren <oskarth@titanproxy.com> -- Samuel Hawksby-Robinson <samuel@status.im> ---- -- Status: draft -- Editor: r4bbit <r4bbit@status.im> -- Contributors: - - Adam Babik <adam@status.im> - - Andrea Maria Piana <andreap@status.im> - - Oskar Thoren <oskarth@titanproxy.com> - - Samuel Hawksby-Robinson <samuel@status.im> - - -## Abstract - -This specification describes how the payload of each message in Status looks -like. -It is primarily centered around chat and chat-related use cases. - -The payloads aims to be flexible enough to support messaging but also cases -described in the [Status Whitepaper](https://status.im/whitepaper.pdf) as well -as various clients created using different technologies. - -## Wire Format Specification - -### Payload wrapper - -The node wraps all payloads in a [protobuf record](https://developers.google.com/protocol-buffers/) -record: - -```protobuf -message StatusProtocolMessage { - bytes signature = 4001; - bytes payload = 4002; -} -``` - -`signature` is the bytes of the signed `SHA3-256` of the payload, signed with the key of the author of the message. -The node needs the signature to validate authorship of the message, so that the message can be relayed to third parties. -If a signature is not present, but an author is provided by a layer below, the message is not to be relayed to third parties, and it is considered plausibly deniable. - -### Encoding - -The node encodes the payload using [Protobuf](https://developers.google.com/protocol-buffers) - -### Types of messages - -#### ChatMessage - -The type `ChatMessage` represents a chat message exchanged between clients. - -#### Payload - -The protobuf description is: - -```protobuf -message ChatMessage { - // Lamport timestamp of the chat message - uint64 clock = 1; - // Unix timestamps in milliseconds, currently not used as we use whisper as - // more reliable, but here so that we don't rely on it - uint64 timestamp = 2; - // Text of the message - string text = 3; - // Id of the message that we are replying to - string response_to = 4; - // Ens name of the sender - string ens_name = 5; - // Chat id, this field is symmetric for public-chats and private group chats, - // but asymmetric in case of one-to-ones, as the sender will use the chat-id - // of the received, while the receiver will use the chat-id of the sender. - // Probably should be the concatenation of sender-pk & receiver-pk in - // alphabetical order - string chat_id = 6; - - // The type of message (public/one-to-one/private-group-chat) - MessageType message_type = 7; - // The type of the content of the message - ContentType content_type = 8; - - oneof payload { - StickerMessage sticker = 9; - ImageMessage image = 10; - AudioMessage audio = 11; - bytes community = 12; - DiscordMessage discord_message = 99; - } - - // Grant for community chat messages - bytes grant = 13; - - // Message author's display name, introduced in version 1 - string display_name = 14; - - ContactRequestPropagatedState contact_request_propagated_state = 15; - - repeated UnfurledLink unfurled_links = 16; - - enum ContentType { - UNKNOWN_CONTENT_TYPE = 0; - TEXT_PLAIN = 1; - STICKER = 2; - STATUS = 3; - EMOJI = 4; - TRANSACTION_COMMAND = 5; - // Only local - SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP = 6; - IMAGE = 7; - AUDIO = 8; - COMMUNITY = 9; - // Only local - SYSTEM_MESSAGE_GAP = 10; - CONTACT_REQUEST = 11; - DISCORD_MESSAGE = 12; - IDENTITY_VERIFICATION = 13; - // Only local - SYSTEM_MESSAGE_PINNED_MESSAGE = 14; - // Only local - SYSTEM_MESSAGE_MUTUAL_EVENT_SENT = 15; - // Only local - SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED = 16; - // Only local - SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED = 17; - } -} -``` - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | The clock of the chat| -| 2 | timestamp | `uint64` | The sender timestamp at message creation | -| 3 | text | `string` | The content of the message | -| 4 | response_to | `string` | The ID of the message replied to | -| 5 | ens_name | `string` | The ENS name of the user sending the message | -| 6 | chat_id | `string` | The local ID of the chat the message is sent to | -| 7 | message_type | `MessageType` | The type of message, different for one-to-one, public or group chats | -| 8 | content_type | `ContentType` | The type of the content of the message | -| 9 | payload | `Sticker` I `Image` I `Audio` I `DiscordMessage` I `bytes` I nil` | The payload of the message based on the content type | -| 13 | grant | `bytes` | Grant for community chat messages | -| 14 | display_name | `string` | The message author's display name | -| 15 | contact_request_propagated_state | `ContactRequestPropagatedState` | Contact request clock values | -| 16 | unfurled_links | `UnfurledLink[]` | Unfurled links and their metadata that have been attached to the message | - -#### Content types - -A node requires content types for a proper interpretation of incoming messages. Not each message is plain text but may carry different information. - -The following content types MUST be supported: -* `TEXT_PLAIN` identifies a message which content is a plaintext. - -There are other content types that MAY be implemented by the client: -* `STICKER` -* `STATUS` -* `EMOJI` -* `TRANSACTION_COMMAND` -* `IMAGE` -* `AUDIO` -* `COMMUNITY` -* `CONTACT_REQUEST` -* `DISCORD_MESSAGE` -* `IDENTITY_VERIFICATION` - -##### Mentions - -A mention MUST be represented as a string with the `@0xpk` format, where `pk` is the public key of the [user account](https://specs.status.im/spec/2) to be mentioned, within the `text` field of a message with content_type `TEXT_PLAIN`. -A message MAY contain more than one mention. -This specification RECOMMENDs that the application does not require the user to enter the entire pk. -This specification RECOMMENDs that the application allows the user to create a mention by typing @ followed by the related ENS or 3-word pseudonym. -This specification RECOMMENDs that the application provides the user auto-completion functionality to create a mention. -For better user experience, the client SHOULD display a known [ens name or the 3-word pseudonym corresponding to the key](https://specs.status.im/spec/2#contact-verification) instead of the `pk`. - -##### Sticker content type - -A `ChatMessage` with `STICKER` `Content/Type` MUST also specify the ID of the `Pack` and -the `Hash` of the pack, in the `Sticker` field of `ChatMessage` - -```protobuf -message StickerMessage { - string hash = 1; - int32 pack = 2; -} -``` - -##### Image content type - -A `ChatMessage` with `IMAGE` `Content/Type` MUST also specify the `payload` of the image -and the `type`. - -Clients MUST sanitize the payload before accessing its content, in particular: -- Clients MUST choose a secure decoder -- Clients SHOULD strip metadata if present without parsing/decoding it -- Clients SHOULD NOT add metadata/exif when sending an image file for privacy and security reasons -- Clients MUST make sure that the transport layer constraints the size of the payload to limit they are able to handle securely - - -```protobuf -message ImageMessage { - bytes payload = 1; - ImageType type = 2; - enum ImageType { - UNKNOWN_IMAGE_TYPE = 0; - PNG = 1; - JPEG = 2; - WEBP = 3; - GIF = 4; - } -} -``` - -##### Audio content type - -A `ChatMessage` with `AUDIO` `Content/Type` MUST also specify the `payload` of the audio, -the `type` and the duration in milliseconds (`duration_ms`). - -Clients MUST sanitize the payload before accessing its content, in particular: -- Clients MUST choose a secure decoder -- Clients SHOULD strip metadata if present without parsing/decoding it -- Clients SHOULD NOT add metadata/exif when sending an audio file for privacy and security reasons -- Clients MUST make sure that the transport layer constraints the size of the payload to limit they are able to handle securely - -```protobuf -message AudioMessage { - bytes payload = 1; - AudioType type = 2; - uint64 duration_ms = 3; - enum AudioType { - UNKNOWN_AUDIO_TYPE = 0; - AAC = 1; - AMR = 2; -``` - -##### Community content type - -A `ChatMessage` with `COMMUNITY` `Content/Type` MUST also specify the `payload` of the community as bytes from a [CommunityDescription](#communitydescription). - -##### DiscordMessage content type - -A `ChatMessage` with `DISCORD_MESSAGE` `Content/Type` MUST also specify the `payload` of the `DiscordMessage`. - -```protobuf -message DiscordMessage { - string id = 1; - string type = 2; - string timestamp = 3; - string timestampEdited = 4; - string content = 5; - DiscordMessageAuthor author = 6; - DiscordMessageReference reference = 7; - repeated DiscordMessageAttachment attachments = 8; -} - -message DiscordMessageAuthor { - string id = 1; - string name = 2; - string discriminator = 3; - string nickname = 4; - string avatarUrl = 5; - bytes avatarImagePayload = 6; - string localUrl = 7; -} - -message DiscordMessageReference { - string messageId = 1; - string channelId = 2; - string guildId = 3; -} - -message DiscordMessageAttachment { - string id = 1; - string messageId = 2; - string url = 3; - string fileName = 4; - uint64 fileSizeBytes = 5; - string contentType = 6; - bytes payload = 7; - string localUrl = 8; -} -``` - -#### Message types - -A node requires message types to decide how to encrypt a particular message and what metadata needs to be attached when passing a message to the transport layer. -For more on this, see [10/WAKU2](../../waku/standards/core/10/waku2). - - - - -The following messages types MUST be supported: -* `ONE_TO_ONE` is a message to the public group -* `PUBLIC_GROUP` is a private message -* `PRIVATE_GROUP` is a message to the private group. -* `COMMUNITY_CHAT` is a message to a community channe. - -```protobuf -enum MessageType { - UNKNOWN_MESSAGE_TYPE = 0; - ONE_TO_ONE = 1; - PUBLIC_GROUP = 2; - PRIVATE_GROUP = 3; - // Only local - SYSTEM_MESSAGE_PRIVATE_GROUP = 4; - COMMUNITY_CHAT = 5; - // Only local - SYSTEM_MESSAGE_GAP = 6; -} -``` - -#### Clock vs Timestamp and message ordering - -If a user sends a new message before the messages sent while the user was offline are received, the new message is supposed to be displayed last in a chat. -This is where the basic algorithm of Lamport timestamp would fall short as it's only meant to order causally related events. - -The status client therefore makes a "bid", speculating that it will beat the current chat-timestamp, s.t. the status client's Lamport timestamp format is: `clock = `max({timestamp}, chat_clock + 1)` - -This will satisfy the Lamport requirement, namely: a -> b then T(a) < T(b) - -`timestamp` MUST be Unix time calculated, when the node creates the message, in milliseconds. -This field SHOULD not be relied upon for message ordering. - -`clock` SHOULD be calculated using the algorithm of [Lamport timestamps](https://en.wikipedia.org/wiki/Lamport_timestamps). -When there are messages available in a chat, the node calculates `clock`'s value based on the last received message in a particular chat: `max(timeNowInMs, last-message-clock-value + 1)`. -If there are no messages, `clock` is initialized with `timestamp`'s value. - -Messages with a `clock` greater than `120` seconds over the Whisper/Waku timestamp SHOULD be discarded, in order to avoid malicious users to increase the `clock` of a chat arbitrarily. - -Messages with a `clock` less than `120` seconds under the Whisper/Waku timestamp might indicate an attempt to insert messages in the chat history which is not distinguishable from a `datasync` layer re-transit event. -A client MAY mark this messages with a warning to the user, or discard them. - -The node uses `clock` value for the message ordering. The algorithm used, and the distributed nature of the system produces casual ordering, which might produce counter-intuitive results in some edge cases. -For example, when a user joins a public chat and sends a message before receiving the exist messages, their message `clock` value might be lower and the message will end up in the past when the historical messages are fetched. - -#### Chats - -Chat is a structure that helps organize messages. -It's usually desired to display messages only from a single recipient, or a group of recipients at a time and chats help to achieve that. - -All incoming messages can be matched against a chat. -The below table describes how to calculate a chat ID for each message type. - -|Message Type|Chat ID Calculation|Direction|Comment| -|------------|-------------------|---------|-------| -|PUBLIC_GROUP|chat ID is equal to a public channel name; it should equal `chatId` from the message|Incoming/Outgoing|| -|ONE_TO_ONE|let `P` be a public key of the recipient; `hex-encode(P)` is a chat ID; use it as `chatId` value in the message|Outgoing|| -|user-message|let `P` be a public key of message's signature; `hex-encode(P)` is a chat ID; discard `chat-id` from message|Incoming|if there is no matched chat, it might be the first message from public key `P`; the node MAY discard the message or MAY create a new chat; Status official clients create a new chat| -|PRIVATE_GROUP|use `chatId` from the message|Incoming/Outgoing|find an existing chat by `chatId`; if none is found, the user is not a member of that chat or the user hasn't joined that chat, the message MUST be discarded | -|COMMUNITY_CHAT|use `chatId` from the message|Incoming/Outgoing| find existing community chat within a community based on `chatId`; the `chatId` includes a community id prefix | - -### ContactUpdate - -`ContactUpdate` is a message exchange to notify peers that either the user has been added as a contact, or that information about the sending user have changed. - -```protobuf -message ContactUpdate { - uint64 clock = 1; - string ens_name = 2; - string profile_image = 3; - string display_name = 4; - uint64 contact_request_clock = 5; - ContactRequestPropagatedState contact_request_propagated_state = 6; - string public_key = 7; -} - -message ContactRequestPropagatedState { - uint64 local_clock = 1; - uint64 local_state = 2; - uint64 remote_clock = 3; - uint64 remote_state = 4; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | The clock of the chat with the user | -| 2 | ens_name | `string` | The ENS name if set | -| 3 | profile_image | `string` | The base64 encoded profile picture of the user | -| 4 | display_name | `string` | The display name of the user | -| 5 | contact_request_clock | `uint64` | The clock at which a contact request was sent | -| 6 | contact_request_propagated_state | `ContactRequestPropagatedState` | Additional propagation clock values | -| 7 | public_key | `string` | The public key of the user | - -#### Contact update - -A client SHOULD send a `ContactUpdate` to all the contacts each time: - -- The ens_name has changed -- A user edits the profile image - -A client SHOULD also periodically send a `ContactUpdate` to all the contacts, the interval is up to the client, the Status official client sends these updates every 48 hours. - -### EmojiReaction - -`EmojiReaction`s represents a user's "reaction" to a specific chat message. -For more information about the concept of emoji reactions see [Facebook Reactions](https://en.wikipedia.org/wiki/Facebook_like_button#Use_on_Facebook). - -This specification RECOMMENDS that the UI/UX implementation of sending `EmojiReactions` requires only a single click operation, as users have an expectation that emoji reactions are effortless and simple to perform. - -```protobuf -message EmojiReaction { - // clock Lamport timestamp of the chat message - uint64 clock = 1; - - // chat_id the ID of the chat the message belongs to, for query efficiency the chat_id is stored in the db even though the - // target message also stores the chat_id - string chat_id = 2; - - // message_id the ID of the target message that the user wishes to react to - string message_id = 3; - - // message_type is (somewhat confusingly) the ID of the type of chat the message belongs to - MessageType message_type = 4; - - // type the ID of the emoji the user wishes to react with - Type type = 5; - - enum Type { - UNKNOWN_EMOJI_REACTION_TYPE = 0; - LOVE = 1; - THUMBS_UP = 2; - THUMBS_DOWN = 3; - LAUGH = 4; - SAD = 5; - ANGRY = 6; - } - - // whether this is a retraction of a previously sent emoji - bool retracted = 6; -} -``` - -Clients MUST specify `clock`, `chat_id`, `message_id`, `type` and `message_type`. - -This specification RECOMMENDS that the UI/UX implementation of retracting an `EmojiReaction`s requires only a single click operation, as users have an expectation that emoji reaction removals are effortless and simple to perform. - -### MembershipUpdateMessage and MembershipUpdateEvent - -`MembershipUpdateEvent` is a message used to propagate information about group membership changes in a group chat. -The details are in the [Group chats specs](../56/communities). - - -```protobuf -message MembershipUpdateMessage { - // The chat id of the private group chat - string chat_id = 1; - // A list of events for this group chat, first x bytes are the signature, then is a - // protobuf encoded MembershipUpdateEvent - repeated bytes events = 2; - - // An optional chat message - oneof chat_entity { - ChatMessage message = 3; - EmojiReaction emoji_reaction = 4; - } -} - -message MembershipUpdateEvent { - // Lamport timestamp of the event - uint64 clock = 1; - // List of public keys of objects of the action - repeated string members = 2; - // Name of the chat for the CHAT_CREATED/NAME_CHANGED event types - string name = 3; - // The type of the event - EventType type = 4; - // Color of the chat for the CHAT_CREATED/COLOR_CHANGED event types - string color = 5; - // Chat image - bytes image = 6; - - enum EventType { - UNKNOWN = 0; - CHAT_CREATED = 1; - NAME_CHANGED = 2; - MEMBERS_ADDED = 3; - MEMBER_JOINED = 4; - MEMBER_REMOVED = 5; - ADMINS_ADDED = 6; - ADMIN_REMOVED = 7; - COLOR_CHANGED = 8; - IMAGE_CHANGED = 9; - } -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | chat_id | `string` | The chat id of the private group chat | -| 2 | events | `bytes[]` | The list of events for this group chat | - -#### Chat entities - -A `MembershipUpdateMessage` includes either a `ChatMessage` or `EmojiReaction`. - -### SyncInstallationContactV2 - -The node uses `SyncInstallationContact` messages to synchronize in a best-effort the contacts to other devices. - -```protobuf -message SyncInstallationContactV2 { - uint64 last_updated_locally = 1; - string id = 2; - string profile_image = 3; - string ens_name = 4; - uint64 last_updated = 5; - repeated string system_tags = 6; - string local_nickname = 7; - bool added = 9; - bool blocked = 10; - bool muted = 11; - bool removed = 12; - bool has_added_us = 13; - int64 verification_status = 14; - int64 trust_status = 15; - int64 contact_request_local_state = 16; - int64 contact_request_local_clock = 17; - int64 contact_request_remote_state = 18; - int64 contact_request_remote_clock = 19; - string display_name = 20; -} -``` - - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | last_updated_locally | `uint64` | Timestamp of last local update | -| 2 | id | `string` | id of the contact synced | -| 3 | profile_image | `string` | `base64` encoded profile picture of the user | -| 4 | ens_name | `string` | ENS name of the contact | -| 5 | `array[string]` | Array of `system_tags` for the user, this can currently be: `":contact/added", ":contact/blocked", ":contact/request-received"`| -| 7 | local_nickname | `string` | Local display name of the contact | -| 9 | added | `bool` | Wether the contact is added | -| 10 | blocked | `bool` | Wether the contact is blocked | -| 11 | muted | `bool` | Wether the contact is muted | -| 12 | removed | `bool` | Wether the contact is removed | -| 13 | has_added_us | `bool` | Wether the contact has added us | -| 14 | verification_status | `int64` | The verification status of the contact | -| 15 | trust_status | `int64` | The trust status of the contact | -| 16 | contact_request_local_state | `int64` | The local contact request state | -| 17 | contact_request_local_clock | `int64` | The local contact request clock | -| 18 | contact_request_remote_state | `int64` | The remote contact request state | -| 19 | contact_request_remote_clock | `int64` | The remote contact request clock | - -### SyncInstallationPublicChat - -The node uses `SyncInstallationPublicChat` message to synchronize in a best-effort the public chats to other devices. - -```protobuf -message SyncInstallationPublicChat { - uint64 clock = 1; - string id = 2; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | clock value of the chat | -| 2 | id | `string` | id of the chat synced | - -### SyncPairInstallation - -The node uses `PairInstallation` messages to propagate information about a device to its paired devices. - -```protobuf -message SyncPairInstallation { - uint64 clock = 1; - string installation_id = 2; - string device_type = 3; - string name = 4; - // following fields used for local pairing - uint32 version = 5; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | clock value of the chat | -| 2| installation_id | `string` | A randomly generated id that identifies this device | -| 3 | device_type | `string` | The OS of the device `ios`,`android` or `desktop` | -| 4 | name | `string` | The self-assigned name of the device | - -### ChatIdentity - -`ChatIdentity` represents the user defined identity associated with their public chat key. - -```protobuf -message ChatIdentity { - uint64 clock = 1; - string ens_name = 2; - map<string, IdentityImage> images = 3; - string display_name = 4; - string description = 5; - string color = 6; - string emoji = 7; - repeated SocialLink social_links = 8; - // first known message timestamp in seconds (valid only for community chats for now) - // 0 - unknown - // 1 - no messages - uint32 first_message_timestamp = 9; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2| ens_name | `string` | A valid ENS associated with the chat key | -| 3 | images | `map` | Image data associated with the chat key | -| 4 | display_name | `string` | The self-assigned display_name of the chat key | -| 5 | description | `string` | The description of the chat | -| 6 | color | `string` | The color of the chat | -| 7 | emoji | `string` | The emoji of the chat | -| 8 | social_links | `array` | A list of links to social platforms | -| 9 | first_message_timestamp | `uint32` | First known message timestamp in seconds | - -### CommunityDescription - -`CommunityDescription` represents a community metadata that is used to discover communities and share community updates. - - -```protobuf -message CommunityDescription { - uint64 clock = 1; - map<string,CommunityMember> members = 2; - CommunityPermissions permissions = 3; - ChatIdentity identity = 5; - map<string,CommunityChat> chats = 6; - repeated string ban_list = 7; - map<string,CommunityCategory> categories = 8; - uint64 archive_magnetlink_clock = 9; - CommunityAdminSettings admin_settings = 10; - string intro_message = 11; - string outro_message = 12; - bool encrypted = 13; - repeated string tags = 14; - map<string, CommunityTokenPermission> token_permissions = 15; - repeated CommunityTokenMetadata community_tokens_metadata = 16; - uint64 active_members_count = 17; -} - -message CommunityMember { - enum Roles { - reserved 2, 3; - reserved "ROLE_MANAGE_USERS", "ROLE_MODERATE_CONTENT"; - ROLE_NONE = 0; - ROLE_OWNER = 1; - ROLE_ADMIN = 4; - ROLE_TOKEN_MASTER = 5; - } - repeated Roles roles = 1; - repeated RevealedAccount revealed_accounts = 2 [deprecated = true]; - uint64 last_update_clock = 3; -} - -message CommunityPermissions { - enum Access { - UNKNOWN_ACCESS = 0; - NO_MEMBERSHIP = 1; - INVITATION_ONLY = 2; - ON_REQUEST = 3; - } - - bool ens_only = 1; - // https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants - bool private = 2; - Access access = 3; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2| members | `map` | The members of the community | -| 3 | permissions | `CommunityPermissions` | Image data associated with the chat key | -| 4 | display_name | `string` | The self-assigned display_name of the chat key | -| 5 | description | `string` | The description of the chat | -| 6 | color | `string` | The color of the chat | -| 7 | emoji | `string` | The emoji of the chat | -| 8 | social_links | `array` | A list of links to social platforms | -| 9 | first_message_timestamp | `uint32` | First known message timestamp in seconds | - -### CommunityRequestToJoin - -A `CommunityRequestToJoin` represents a request to join a community, sent by a user that is not yet a member of that community. -A request to join a community includes a list of `RevealedAccount`. -These are wallet addresses that users are willing to reveal with the community's control node and admins. - -```protobuf -message CommunityRequestToJoin { - uint64 clock = 1; - string ens_name = 2; - string chat_id = 3; - bytes community_id = 4; - string display_name = 5; - repeated RevealedAccount revealed_accounts = 6; -} - -message RevealedAccount { - string address = 1; - bytes signature = 2; - repeated uint64 chain_ids = 3; - bool isAirdropAddress = 4; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2| ens_name | `string` | The ENS of the user sending the request | -| 3 | chat_id | `string` | The id of the chat to request access to | -| 4 | community_id | `bytes` | The public key of the community | -| 5 | display_name | `string` | The display name of the usre sending the request | -| 6 | revealed_accounts | `array` | A list of accounts to reveal to the control node | - -### PinMessage - -A `PinMessage` is a signal that tells a client that a specific message has to be marked as pinned. - -```protobuf -message PinMessage { - uint64 clock = 1; - string message_id = 2; - string chat_id = 3; - bool pinned = 4; - MessageType message_type = 5; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2| message_id | `string` | The id of the message to be pinned | -| 3 | chat_id | `string` | The id of the chat of the message to be pinned | -| 4 | pinned | `bool` | Whether the message should be pinned or unpinned | -| 5 | message_type | `MessageType` | The type of message (public/one-to-one/private-group-chat) | - - -### EditMessage - -A `EditMessage` represents an update to an existing message. - - -```protobuf -message EditMessage { - uint64 clock = 1; - string text = 2; - - string chat_id = 3; - string message_id = 4; - - bytes grant = 5; - - MessageType message_type = 6; - - ChatMessage.ContentType content_type = 7; - repeated UnfurledLink unfurled_links = 8; -} - -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2| text | `string` | The updated message text | -| 3 | chat_id | `string` | The id of the chat of the message | -| 4 | message_id | `string` | The id of the message to be edited | -| 5 | grant | `bytes` | A grant for a community edit messages | -| 6 | message_type | `MessageType` | The type of message | -| 7 | content_type | `ChatMessage.ContentType` | The updated content type of the message | -| 8 | unfurled_links | `array` | Updated link metadata | - - -### DeleteMessage - -A `DeleteMessage` represents a signal to delete a message from the local database of a client. - -```protobuf -message DeleteMessage { - uint64 clock = 1; - - string chat_id = 2; - string message_id = 3; - - // Grant for community delete messages - bytes grant = 4; - - // The type of message (public/one-to-one/private-group-chat) - MessageType message_type = 5; - - string deleted_by = 6; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | chat_id | `string` | The id of the chat of the message | -| 3 | message_id | `string` | The id of the message to delete | -| 4 | grant | `bytes` | A grant for a community edit messages | -| 5 | message_type | `MessageType` | The type of message | -| 6 | deleted_by | `string` | The public key of the user who deleted the message | - - -### CommunityMessageArchiveLink - -A `CommunityMessageArchiveLink` contains a magnet uri for a community's message archive, created using [61/STATUS-Community-History-Archives](../61/community-history-service). - -```protobuf -message CommunityMessageArchiveMagnetlink { - uint64 clock = 1; - string magnet_uri = 2; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | magnet_uri | `string` | The magnet uri of the community archive torrent | - -### AcceptContactRequest - -A `AcceptContractRequest` message signals to the requester that the request was accepted. - -```protobuf -message AcceptContactRequest { - string id = 1; - uint64 clock = 2; -} - -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | id | `string` | The id of the contact request | -| 2 | clock | `uint64` | Clock value of the message | - -### RetractContactRequest - -A `RetractContractRequest` message signals to the reiver of a request that the request was retracted. - -```protobuf -message RetractContactRequest { - string id = 1; - uint64 clock = 2; -} - -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | id | `string` | The id of the contact request | -| 2 | clock | `uint64` | Clock value of the message | - -### CommunityRequestToJoinResponse - -A `CommunityRequestToJoinResponse` represents a response to a request to join a community. - -```protobuf -message CommunityRequestToJoinResponse { - uint64 clock = 1; - CommunityDescription community = 2; - bool accepted = 3; - bytes grant = 4; - bytes community_id = 5; - string magnet_uri = 6; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | community | `CommunityDescription` | The community metadata | -| 3 | accepted | `bool` | Whether the request was accepted | -| 4 | grant | `bytes` | The grant | -| 5 | community_id | `bytes` | The id of the community | -| 6 | magnet_uri | `string` | The latest magnet uri of the community's archive torrent | - -### CommunityRequestToLeave - -A `CommunityRequestToLeave` represents a signal to a community that a user wants to be removed from the community's member list. - -```protobuf -message CommunityRequestToLeave { - uint64 clock = 1; - bytes community_id = 2; -} -``` -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | community_id | `bytes` | The id of the community | - - -### RequestContactVerification - -A `RequestContactVerification` is a request to verify a contact using a "challenge", which can by any string message and typically involves questions that only the contact should know. - -```protobuf -message RequestContactVerification { - uint64 clock = 1; - string challenge = 3; -} -``` -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | challenge | `string` | The challenge message used for verification | - -### AcceptContactVerification - -A `AcceptContactVerification` signals that a verification request was accepted and includes a response to the challenge. - - -```protobuf -message AcceptContactVerification { - uint64 clock = 1; - string id = 2; - string response = 3; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | id | `string` | The verification request id | -| 3 | response | `string` | The response for the challenge | - -### DeclineContactVerification - -A `DeclineContactVerification` declines a contact verification request. - -```protobuf -message DeclineContactVerification { - uint64 clock = 1; - string id = 2; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | id | `string` | The verification request id | - -### CancelContactVerification - -A `CancelContactVerification` cancels a contact verification request. - -```protobuf -message CancelContactVerification { - uint64 clock = 1; - string id = 2; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | id | `string` | The verification request id | - - -### CommunityCancelRequestToJoin - -A `CommunityCancelRequestToJoin` cancels a pending request to join. - -```protobuf -message CommunityCancelRequestToJoin { - uint64 clock = 1; - string ens_name = 2; - string chat_id = 3; - bytes community_id = 4; - string display_name = 5; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | ens_name | `string` | The ENS name of the account cancelling the request | -| 3 | chat_id | `string` | The id of the chat | -| 4 | community_id | `bytes` | The id of the community | -| 5 | display_name | `string` | The display name of the account cancelling the request | - -### CommunityEditSharedAddresses - -A `CommunityEditSharedAddresses` message allows users to edit the shared accounts they've revealed when requesting to join a community. - -```protobuf -message CommunityEditSharedAddresses { - uint64 clock = 1; - bytes community_id = 2; - repeated RevealedAccount revealed_accounts = 3; -} -``` - -#### Payload - -| Field | Name | Type | Description | -| ----- | ---- | ---- | ---- | -| 1 | clock | `uint64` | Clock value of the message | -| 2 | community_id | `bytes` | The id of the community | -| 3 | revealed_accounts | `array<RevealedAccount>` | A list of revealed accounts | - -## Upgradability - -There are two ways to upgrade the protocol without breaking compatibility: - -- A node always supports accretion -- A node does not support deletion of existing fields or messages, which might break compatibility - -## Security Considerations - -- - -## Changelog - -### Version 0.5 - -Released [August 25, 2020](https://github.com/status-im/specs/commit/968fafff23cdfc67589b34dd64015de29aaf41f0) - -- Added support for emoji reactions - -### Version 0.4 - -Released [July 16, 2020](https://github.com/status-im/specs/commit/ad45cd5fed3c0f79dfa472253a404f670dd47396) - -- Added support for images -- Added support for audio - -### Version 0.3 - -Released [May 22, 2020](https://github.com/status-im/specs/commit/664dd1c9df6ad409e4c007fefc8c8945b8d324e8) - -- Added language to include Waku in all relevant places - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/status/63/keycard-usage.md b/status/63/keycard-usage.md deleted file mode 100644 index b3bfe9bdb..000000000 --- a/status/63/keycard-usage.md +++ /dev/null @@ -1,363 +0,0 @@ ---- -title: 63/STATUS-Keycard-Usage -name: Status Keycard Usage -status: draft -category: Standards Track -description: Describes how an application can use the Status Keycard to create, store and transact with different account addresses. -editor: Aaryamann Challani <aaryamann@status.im> -contributors: - - Jimmy Debe <jimmy@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Jimmy Debe <jimmy@status.im> - - -## Terminology - -- **Account**: A valid [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) compliant key. -- **Multiaccount**: An account from which multiple Accounts can be derived. - -## Abstract - -This specification describes how an application can use the Status Keycard to - - -1. Create Multiaccounts -2. Store Multiaccounts -3. Use Multiaccounts for transaction or message signing -4. Derive Accounts from Multiaccounts - -More documentation on the Status Keycard can be found [here](https://keycard.tech/docs/) - -## Motivation - -The Status Keycard is a hardware wallet that can be used to store and sign transactions. -For the purpose of the Status App, this specification describes how the Keycard SHOULD be used to store and sign transactions. - -## Usage - -### Endpoints - -#### 1. Initialize Keycard (`/init-keycard`) - -To initialize the keycard for use with the application. -The keycard is locked with a 6 digit pin. - -#### Request wire format - -```json -{ - "pin": 6_digit_pin -} -``` - -#### Response wire format - -```json -{ - "password": password_to_unlock_keycard, - "puk": 12_digit_recovery_code, - "pin": provided_pin, -} -``` - -The keycard MUST be initialized before it can be used with the application. -The application SHOULD provide a way to recover the keycard in case the pin is forgotten. - -### 2. Get Application Info (`/get-application-info`) - -To fetch if the keycard is ready to be used by the application. - -#### Request wire format - -The requester MAY add a `pairing` field to filter through the generated keys -```json -{ - "pairing": //<256_bit_salt> OR null -} -``` - -#### Response wire format - -##### If the keycard is not initialized yet - -```json -{ - "initialized?": false -} -``` - -##### If the keycard is initialized - -```json -{ - "free-pairing-slots": number, - "app-version": major_version.minor_version, - "secure-channel-pub-key": valid_bip32_key,, - "key-uid": unique_id_of_the_default_key, - "instance-uid": unique_instance_id, - "paired?": bool, - "has-master-key?": bool, - "initialized?" true -} -``` - -### 3. Pairing the Keycard to the Client device (`/pair`) - -To establish a secure communication channel described [here](https://keycard.tech/docs/apdu/opensecurechannel.html), the keycard and the client device need to be paired. - -#### Request wire format - -```json -{ - "password": password_to_unlock_keycard -} -``` - -#### Response wire format - -```json -"//<256_bit_salt>" -``` - -### 4. Generate a new set of keys (`/generate-and-load-keys`) - -To generate a new set of keys and load them onto the keycard. - -#### Request wire format - -```json -{ - "mnemonic": 12_word_mnemonic, - "pairing": //<256_bit_salt>, - "pin": 6_digit_pin -} -``` - -#### Response wire format - -```json -{ - "whisper-address": 20_byte_whisper_compatible_address, - "whisper-private-key": whisper_private_key, - "wallet-root-public-key": 256_bit_wallet_root_public_key, - "encryption-public-key": 256_bit_encryption_public_key,, - "wallet-root-address": 20_byte_wallet_root_address, - "whisper-public-key": 256_bit_whisper_public_key, - "address": 20_byte_address, - "wallet-address": 20_byte_wallet_address,, - "key-uid": 64_byte_unique_key_id, - "wallet-public-key": 256_bit_wallet_public_key, - "public-key": 256_bit_public_key, - "instance-uid": 32_byte_unique_instance_id, -} -``` - -### 5. Get a set of generated keys (`/get-keys`) - -To fetch the keys that are currently loaded on the keycard. - -#### Request wire format - -```json -{ - "pairing": //<256_bit_salt>, - "pin": 6_digit_pin -} -``` - -#### Response wire format - -```json -{ - "whisper-address": 20_byte_whisper_compatible_address, - "whisper-private-key": whisper_private_key, - "wallet-root-public-key": 256_bit_wallet_root_public_key, - "encryption-public-key": 256_bit_encryption_public_key, - "wallet-root-address": 20_byte_wallet_root_address, - "whisper-public-key": 256_bit_whisper_public_key, - "address": 20_byte_address, - "wallet-address": 20_byte_wallet_address, - "key-uid": 64_byte_unique_key_id, - "wallet-public-key": 256_bit_wallet_public_key, - "public-key": 256_bit_public_key, - "instance-uid": 32_byte_unique_instance_id, -} -``` - -### 6. Sign a transaction (`/sign`) - -To sign a transaction using the keycard, passing in the pairing information and the transaction to be signed. - -#### Request wire format - -```json -{ - "hash": 64_byte_hash_of_the_transaction, - "pairing": //<256_bit_salt>, - "pin": 6_digit_pin, - "path": bip32_path_to_the_key -} -``` - -#### Response wire format - -```json -<256_bit_signature> -``` - -### 7. Export a key (`/export-key`) - -To export a key from the keycard, passing in the pairing information and the path to the key to be exported. - -#### Request wire format - -```json -{ - "pairing": //<256_bit_salt>, - "pin": 6_digit_pin, - "path": bip32_path_to_the_key -} -``` - -#### Response wire format - -```json -<256_bit_public_key> -``` - -### 8. Verify a pin (`/verify-pin`) - -To verify the pin of the keycard. - -#### Request wire format - -```json -{ - "pin": 6_digit_pin -} -``` - -#### Response wire format - -```json -1_digit_status_code -``` - -Status code reference: -- 3: PIN is valid - - - - - -### 9. Change the pin (`/change-pin`) - -To change the pin of the keycard. - -#### Request wire format - -```json -{ - "new-pin": 6_digit_new_pin, - "current-pin": 6_digit_new_pin, - "pairing": //<256_bit_salt> -} -``` - -#### Response wire format - -##### If the operation was successful - -```json -true -``` - -##### If the operation was unsuccessful - -```json -false -``` - -### 10. Unblock the keycard (`/unblock-pin`) - -If the Keycard is blocked due to too many incorrect pin attempts, it can be unblocked using the PUK. - -#### Request wire format - -```json -{ - "puk": 12_digit_recovery_code, - "new-pin": 6_digit_new_pin, - "pairing": //<256_bit_salt> -} -``` - -#### Response wire format - -##### If the operation was successful - -```json -true -``` - -##### If the operation was unsuccessful - -```json -false -``` - -## Flows - -Any application that uses the Status Keycard MAY implement the following flows according to the actions listed above. - -### 1. A new user wants to use the Keycard with the application - -1. The user initializes the Keycard using the `/init-keycard` endpoint. -2. The user pairs the Keycard with the client device using the `/pair` endpoint. -3. The user generates a new set of keys using the `/generate-and-load-keys` endpoint. -4. The user can now use the Keycard to sign transactions using the `/sign` endpoint. - -### 2. An existing user wants to use the Keycard with the application - -1. The user pairs the Keycard with the client device using the `/pair` endpoint. -2. The user can now use the Keycard to sign transactions using the `/sign` endpoint. - -### 3. An existing user wants to use the Keycard with a new client device - -1. The user pairs the Keycard with the new client device using the `/pair` endpoint. -2. The user can now use the Keycard to sign transactions using the `/sign` endpoint. - -### 4. An existing user wishes to verify the pin of the Keycard - -1. The user verifies the pin of the Keycard using the `/verify-pin` endpoint. - -### 5. An existing user wishes to change the pin of the Keycard - -1. The user changes the pin of the Keycard using the `/change-pin` endpoint. - -### 6. An existing user wishes to unblock the Keycard - -1. The user unblocks the Keycard using the `/unblock-pin` endpoint. - - -## Security Considerations - -Inherits the security considerations of [Status Keycard](https://keycard.tech/docs/) - -## Privacy Considerations - -Inherits the privacy considerations of [Status Keycard](https://keycard.tech/docs/) - - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -1. [BIP-32 specification](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) -2. [Keycard documentation](https://keycard.tech/docs/) -3. [16/Keycard-Usage](https://specs.status.im/draft/16) diff --git a/status/65/account-address.md b/status/65/account-address.md deleted file mode 100644 index 72fb3e796..000000000 --- a/status/65/account-address.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: 65/STATUS-ACCOUNT-ADDRESS -name: Status Account Address -status: draft -category: Standards Track -description: Details of what a Status account address is and how account addresses are created and used. -editor: Aaryamann Challani <aaryamann@status.im> -contributors: -- Corey Petty <corey@status.im> -- Oskar Thorén <oskarth@titanproxy.com> -- Samuel Hawksby-Robinson <samuel@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Corey Petty <corey@status.im> - - Oskar Thorén <oskarth@titanproxy.com> - - Samuel Hawksby-Robinson <samuel@status.im> - - -## Abstract - -This specification details what a Status account address is and how account addresses are created and used. - -## Background - -The core concept of an account in Status is a set of cryptographic keypairs. Namely, the combination of the following: -1. a Waku chat identity keypair -1. a set of cryptocurrency wallet keypairs - -The Status node verifies or derives everything else associated with the contact from the above items, including: -- Ethereum address (future verification, currently the same base keypair) -- identicon -- message signatures - -## Initial Key Generation -### Public/Private Keypairs -- An ECDSA (secp256k1 curve) public/private keypair MUST be generated via a [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki) derived path from a [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) mnemonic seed phrase. -- The default paths are defined as such: - - Waku Chat Key (`IK`): `m/43'/60'/1581'/0'/0` (post Multiaccount integration) - - following [EIP1581](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1581) - - Status Wallet paths: `m/44'/60'/0'/0/i` starting at `i=0` - - following [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) - - NOTE: this (`i=0`) is also the current (and only) path for Waku key before Multiaccount integration - -## Account Broadcasting -- A user is responsible for broadcasting certain information publicly so that others may contact them. - -### X3DH Prekey bundles -- Refer to [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) for details on the X3DH prekey bundle broadcasting, as well as regeneration. - -## Optional Account additions - -### ENS Username -- A user MAY register a public username on the Ethereum Name System (ENS). This username is a user-chosen subdomain of the `stateofus.eth` ENS registration that maps to their Waku identity key (`IK`). - -### User Profile Picture -- An account MAY edit the `IK` generated identicon with a chosen picture. This picture will become part of the publicly broadcasted profile of the account. - - - - - -## Wire Format - -Below is the wire format for the account information that is broadcasted publicly. -An Account is referred to as a Multiaccount in the wire format. - -```proto -message MultiAccount { - string name = 1; // name of the account - int64 timestamp = 2; // timestamp of the message - string identicon = 3; // base64 encoded identicon - repeated ColorHash color_hash = 4; // color hash of the identicon - int64 color_id = 5; // color id of the identicon - string keycard_pairing = 6; // keycard pairing code - string key_uid = 7; // unique identifier of the account - repeated IdentityImage images = 8; // images associated with the account - string customization_color = 9; // color of the identicon - uint64 customization_color_clock = 10; // clock of the identicon color, to track updates - - message ColorHash { - repeated int64 index = 1; - } - - message IdentityImage { - string key_uid = 1; // unique identifier of the image - string name = 2; // name of the image - bytes payload = 3; // payload of the image - int64 width = 4; // width of the image - int64 height = 5; // height of the image - int64 filesize = 6; // filesize of the image - int64 resize_target = 7; // resize target of the image - uint64 clock = 8; // clock of the image, to track updates - } -} -``` - -The above payload is broadcasted when 2 devices that belong to a user need to be paired. - -## Security Considerations - -- This specification inherits security considerations of [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) and [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions). - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -### normative - -- [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) -- [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) -- [55/STATUS-1TO1-CHAT](../55/1to1-chat) - -## informative - -- [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki) -- [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) -- [EIP1581](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1581) -- [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) -- [Ethereum Name System](https://ens.domains/) -- [Status Multiaccount](../63/account-address) diff --git a/status/71/images/notification.png b/status/71/images/notification.png deleted file mode 100644 index e7d945a883a5c87500761d79fa073644248a627a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60401 zcmdqJWmgFTl)rwBQa11# z0=*0FKr%u?2p{f;jsXW35TZn4evjqdJ^+II#&i@o#zV>8DAlM3S~My;pO35-&19bc z4px;k_sfLj8TPA6B4UIzE-tQ$zs>GN0t9M1pas3rMZ>^}vL zd>gxpLWhI3T(>2khFj_8iweAtyxDHm~}}Qm@Pyh{^@?p0dWHl zaUv=hm<6xbS3fmip>oGS=We~PuiZG$udi+_ikE~ip^zS6Sfr+>?1R&fz?yTJYDk&M z$$`-V@8Q6}!z{s|fOp`)>pk!Swk8kaUke0G9_0UhumAQTyM%is7?=>4l<23=?%>DS zu->1=76(vDp@bz4RLf@2=<`U7AeEHp{SlO*`(aWR0}&3*dm^MIlt6)B5h4)Cs7WH& zXlA_5*h%3HyFEUPdDbtkDPp5bR5YSO%5ym4Q1NkDMbTDf4 z^d{?}i?S1O?% zl3(p<$bTEaZ{Zc09dfZ$68_h{&=24S)IYjoFn=5TAEBsmTP7oDr2L^Ifs5o9aKqO- zMl;C24Im!~Or%xw{-nP%MEwKYAnJ`%AMm$fQve(R=Cs~O`rnM*fg8xWBA0~zHaO&h zK||hZvQYkA08u{R2DFWS8ArVWI%x=AK zo^ge5Xl4WFP=SZeE%;rTnaks%!1-)lHv*G}%;j({K7mqZWL{mLLA%LjI{378pQu!` z-Yn*f`%f#*<+644u!7+8j-F8w0(C$rGCsl$DW~7?@bFBRkJnO{Py66?%SqEp!KWY? zkDS-L?bstneV=PpujPgYHp1IE6@{g39iOERkNS?gUy*gzi;USncpN^8+a; zD27_TY&+*{_}pffS6oEp3iz~jJf61SI71_1Cl%-VF2Ag-Fj=_mPh=N(7%7Q;EP zt`iA+7nsQ@;*Q~dTswGmx612KejGO3Ko_;xLyCUW@8 zU*q0wbv>TWa_ZajydxB$7Kw?R)ZuA3K9KBv$42UB1}D;5hMuV z%?P@xsa<-F8X-SMy$%ieEH2W)SmMQ7UD1hLL4D#r4Hqnj&K4)#7M_hC`|Jw@)pSmJ zY`(u}O41~J@Afk7owesz6q*KnFNUd_tgAa0nk;8OXs0sj+TiFo1PD~EuiBg}H_mRL z5b;^4*atPCQ%e6loG&+5;bbMOCVFUkxIS80_kFb0PNr48V!2K!iq-Z0)8CYqhMVb$ zQMcx?pUuNK^V+Au>X*N+cJ+Pcy-9hI=jPI{U%zY)ZN-W4xg86hTiS+~Ud~=$6kcC8 zgHUXwOKM7+%`-hm8=o&mnRvR42Vw*xok&MnVR zd3{X7=Vr;=_Apwu8GQR70vlDl2ZCy*IX8tlFsw$`>($qbyzP}JqXmeo#_=DkJY}*zgvl- zy0%1l_=eO!^3W!Kh%D2L1>s+AK?QiOGk0+OqvFQ(15&X`rWQox>%^>Y?Wb zI1oqpXfUXD{w=jzJ=5RB5Le7|efG+RzDB5jm%apu7M2M|RK5s(o)L^SPv&DQ_vae+M0Sp7C!5H#;Hc7;qmUJ?P!+Mip^md_0?{ks?NTOca z0qPl_$CG9bKI$)!T~8OIw$hP#(8N)b{9ZRdA8ya82d^$C1?|1gI&ZI9RA&h};JQ9^ zH?MojY;?pAzP{WFu3@UXusy|Lb1t->b!jh($jRVB-ApodKPeLj3Bi0qSd7n@s3o2} zS{8XEao_gryH)xwe&F<_@)u{7+mC>aLsxg=*}U>I#v2>6QzN;%&AEW1F`+Xb(*hdsZV^7-`ii zO3vz0dB(V$T(b``2wz5RD-5%^^we=9OE9VoqnLE|*{$Yk3X6+Zs$Jl2fho@Q*44A@ zDTc&7Sq>yVG{CN%$5m9u(uHK^S~ViuOH>8o`E%KI+5fEhlzaPUkoYK*lR}$MDCuE= z5qA?N0_+5G1cZzS&iOlx*jK|ZHuQDM^%CdsB*ehKt*q7kIqa;Z2CzHXN64`DNRpAw zuKexE5bbV zWLr=2Vdi0hL?Fk|@~$nG8%ked!jOo#rdl?u-Okn@DzToFh}a~ih=M(ZbSwSx_4MaZ zjQKe@7D8b?l$8^ZwYcEgTR2ZQy7gnFOqsq9l0tFmzmA(h4$cAVYxyGh`c#jN`N@HO zfSFN*Ut=IiG&}lJqt*Q9M=^tABjhx7HBLb#PEzZJ=l1ZhX)>g0gO-xH4%a>=iqEvt z*?P!Y&+z2A5VA3ZynD6t0vDg{`HTjr zqnPHSHIn=bkYAVwQ6Od6p+6jcuwz=B$8kHfsN&v<6f~!QdA`+GLUB;y)K;2>`PN|l z&F=Ku`tNI6=%n10Mz`nd#Ut9lLeI3X84J_b>h^gLobLje9^e+4UXqF=CSA(ILIl+1 zD3>19_Tevz@VDr>M?)2iyYkhV3?TOVpX5dzG7V^4+hzV)^}W!hfN zcyHQ|GOQ>x_VHx%=cGJ3>2mW|6^Pm$j)kPSG;#%8a;@r5mxO=dYLt|FBVKYAac9GO zH@izPkdmbJ-6B0NCl~lzq(GkdbeLJte0-=$%jyQYk%D}ffa8-w-kN~q^n-=W86M!=kyozCW zkb0SPfMF86yFa;xy5uIW+I!Hql|=tP(XgcS^=NaMG1Lqh*k28=qr;jqQcx>al{k<+ zu(!&20OKq^Hy6o>(i=4Md5EET_1jTdk&&~v-69c`3r3Qfn4ou3Wyni#p1(g9%AH-+ zhUsX^@bOZ8V_fX^0^fONj~f&TpNK{1CUSm*>&dd#o#+Ocyyd&AKAh0y*&;cNLYH}C zRO8wAQxe_JH<=}tB&~pd)+iLe;u2wv5Ey#jmo@?DlvQ4ss4s)osFq_tn`1IN2GWez z^B;H*p@K#k+hxyP^Y;|5@rf%8^*s+LZR4wuQm@AQG|g$gQ}k$)s4)xu(rt0bCoS^9Op2j>SbeiU~?;ulO0zUnZSRsVF}hw{Jx&B=TzUh8_I)uYi{2G+r_84cHC zfy8H-R3|aT$>+p)(Z9kmupfa%*8m0)fL(5`$XS@OD3!nEe>0MuS0vEjaJlLQ=SCn~_G2azwg$RBK3s}JFT}DqIt}u*Rr9m>}>0qmFF)EZ|&b`VkZfguX z+(gVGmRju=5f}sZz`FrzD7?8o7SUzgS*H*A0F+jPElIRo!fA8w&l z>&Ojv0HlR|@F(n^iIT$NyYQ153ZhS!C*t(r_$m{r1e3f$84dgW~;jUZ)SYap%;EgE>+wRzbw6Q6) zC5PjQD(nrc&cl41reVh9elZNN7-WFkb1TLQL!VaXAyr;s25x`GIdnaoqfr_~Yz)G6 z8y);9(Med0c>V#|g?3MF%Uc|tlm~hJTOKzkSLuW|Ww$IQ=D_i>(yq5nwqX{}UZIMA z@Z$Ui-fU=tM~!ecQhJlKD$rKii_3whWDgx1$TQ@ z-V%sg+G4_KHFz7hK8mjW9Rn>i}B6}%TPV^x_f%$A%6u`r9YmcP~ zq1Hr|LnxUWqr!pcgZ_(B{h@l3!Jva2PPi8`|28}c`3D9N=dsHCjXL4ffiSeUabLs! zZ^Jnx5O(_dkI?^%bajA87j7}fxbt76ivmQpci^=3|AJ`;N+6il@rt?r@Hd(lLS#jmo!SC@*{09)+1%tV%U%`u;3IB`wg-Irs-<=-W7WSOwpw}E9jd%Xy z4;i|YB*B5`7;p^e6CpyYiJ@7>bq|iCivJtvo1g=Me){u>+TR9$31D{a!O{Ouzc92n zNWz-=+oL>%NuLo2LBGGni1N7t3_w_wpjN3R6^YG2K|?cq8RhZeZ?GRs9bm&4f3Qhi zo?0ZEPNpDmUqHa+AT%>Odrchkxr9Ka6!r(#&l@Ng2G<3tCzrW<%`aQbATGSGraPY!nJTQc#@4eNe=zq!j@uMja zys^5U8zdqN{u8hYcn8`~F2u)hBdJVGVebepN*&3 zHXuaxK$^<>dXLBT$>@K06-j`@2caIJYa%3+PGpU$w6wI}wj6x9e>)D81`b*8Mw^Ru zHSwWFyg}_Dl2vh?!@m=j1OPo^Rl4o2=s5fLO=u2@-h+g0?#r-zvHu1h3Jg5!C<2Js z)qL-Fae5Gfox`oQ{9iVj^6KMTP%wvckz=#pn~)ve$?6ySE#Dlj?#!o994qogkmhvwOt% z;qUnkP^1KvLWSi7CQMvJZh+Nx9AWfNx^cFmgvK8axaV{w@Hlnnh43`huRpSi1FS z6oJEgs_mKpISd6d%9{Yxa%btj#hl*i|HA_P9FPtcrp-T}i=pU^BUIq!;aUDEp>IiG z>Xf3EgY`@Q0J$h&8_YlBO8iwHO2DRlN^<4Pl>6H-0Z4{}c*vK3h+g3vqWAy*2LvR> z5VKjtVNxrCUd$6Tw&Owr{)#18G=SP7*KN(3%@W5i40t!21BY3;)6+#tO6rTJ9T2gb zT<(o47s=uk4}RxIhe(1aPzi++lmfXyxkul}P&$o}8Q`fvm#{dn(w>9P7OQg;$u*U@ z#PdOvL`45PS8&D^-d31Te* z9usWr+dlJNQQH9S4Gn71FB6z-Nj$CcuVV zghYm~k-W{}*QzA(yi|o2WR>XG!+g-dn^h9}jG8w9ina?~01F5Vz_0m?{wBczUPEaS zP#0qUiyB=HEVcMR?<1$-p`%!9V1pE=Xf;U804z*uOp88*1DvD#-u@qUfFY-OPu$iM zDfL$mkyyb&tqvFf;OJXacMkwiCPxdEbzZl2+yHo$#RmkbDk_u=405cjtUCbI?s#*o z`HaJ0=R#WB|KrE+?v@s=@YvYY;9#g8*5REU6B^CBf+RY1`7*UiS^zzXTd35Q>5str zZdOy5|37Jep+ZH)51K7j7~L68G#yK0sk4|Sdu^tTkZ!q}ktqbgxS3Wba~h2r1IdQf zZwbFX3rk+X(VS}3)9V?!m_K657}|=cefSB>ik=g+xd5#orkxwVd>9vX&UYJ z(xeg%l?0j8!~&y2N>UolUkKOY^{G2eO zl?#91O(adnvvk~ZjwmRmjUK5LalF{H{^jVg;!ea93q`eOBn=YtFx~n6Uq`VqY&Po7a)8bVD9PB*yc~%fLE>tCsh64r0COh_U zCw^9w=0K7kRFG8S2dP*hehPkm-3av((n?}?UB;FQ9|tXb%0fFWE|ERoy8?o>MkRC% z4AZB(KU&O);+G7NQGuVBdHhYq`2aBhV1ID?JX6_wJ!V`1?-stRDUmiMWV_?i;6Ow4 z>LNJYCj}A_Iqs*27a`62XLsG70ER^c34?U**Yl2212D#rupCcP5M3l7>oFY6^sr=q z;8|+S{sD%IRk|*km5<$wa`t{dwHUi$zk(8I&S+11FxuEG?3oKOh79lwFp(hOb4{QGAn@Ov-eW0C z@nCT0@3*Jsn+~_1$Z^s{62&wDOv+bw<_?t zJ~!#u2%E+J!k_Zmrk)*ZWHEgpdyoh6|D~$p@WHE#(Z!?R7hZ;4l7&uD7(Bo*mg4;z zF(-tc93^06MQGKl=pCF^?Uxxn*~X%sQDb{VetnI>YIrocO7G^>t1BtsN=E(RYd#$> z1L%RB8`~N!Gdz`bIZA_6(O_w0Z6#_rHTyOtMjb_CKLn^*bGxhoivJx%B}q{EnrjU) zgmC(@+&5HRcXqr?HCs(K6?-?^EX5FY#NP5II<<;8Adv$v&}_T%0rnk19N@4>Nk=TB z$}o`jqi>9j$yO?br`YyS2f5Sr=-b#-tRIis(CGmQ6dK*O1|Z!c_MXFr`VBB+vznvs z;K^>J41gouOg5--IZ}(x7cJC63nX{U49KQOlg$;glL=a6y^Ba=HVgzYw4h}Ksb@~n zYo3vmxuWrxyP`o?&&_>iU_M!@mr!?qdAf(N&xQkZ%oJm1yUWoBz)$6gc?Ep!yIg&wCZ$HONUJt-QMh4 zt#p5bhcQ@9aUbkA-B@cpcxcz%!dYn!;$(w; zI|wi2fGB_+Sp@_7`E@>y`!U%6fZWEpf0I8z-}heZ90pPDQy7k5s?~V)rGU!bW&+q< z;74~65y;GUFo4VZih3^1%*=b!@4z@O*ty-OWBd!l*{*2PJI!Uz6grfdO%$|39});c z0(a=@SgCKT0kpQ$;1tNfoCXknx*jm=TC@@YsuV))#K>#R#@qQwna`p8t{@@*x22T01`MnaDY`7d903sfP>{3c`MN7pRfJEN zBnH>uA-_O3Snff*fd^rr1^>c$p&g9#!*DwyR*lGU)MY4H;&cJTljTsm6Ci4O^ zOQyd;rc%I^p4BFyO?*d{^@A#vpJfN9*P_+%uhaf8=0#P-j`-TRpiRr@!GRJ5eTQkIM0M6CJbC;2{2WE@2)H6Wr!&uwsYzwGh^@V-~7^rX|!Y zv3vq^1P~gDKzy3T&FgYU3{$}k&ZhHCEg7{(ff?! z#OUTwVm*;q|Af*#a--fe9+Od5&+cx6i$?WY_}=$7f1S@T!ES61J+?PCfA*2>4iM4Z;sC6on)!v8LKYi%L>;kuj&Lj1Zkd8AKgw7slK$1ut9WEt`n&VI&Fc^PaA`LsSIaEyJaKIldcIt+KZC4b*j62`T8TnLG7w* zUNVQZLCUq$$unCalO`*_G`UCkYrcexc{dhkso4gLfBT%=wtTq~`?{#&N}o%$zi35& zlAE2kVqOi_4HX6I34(Re43SBJ*GQ+QrUF0a5AfHedovK;G9(u7A=!*?4+ZBl?}XA> z3d)bQyFb&iTTvFjJB>H?Y8qN2#~HEzo|A%D-KqWHT`P6-^q5-lyo<=~;$H3h^ERtP zjj^Spb4&^4ikz3@H|+hhO0(2<%=1p}fidN_bHuUUbr@SmDe%?mN0*4Jv=%MK)<>H3 z`w^cd>Qgo00W2TA1m9WLG9HG6XZ%!i-WXzs$u`%U{jw*YI=2&}(&@S&`Ffv&>R)NM zP2GOe2cGgea#LqZ{o~y7~(I@~f zI{zx9$PV*mXWi~Co=h*yofL;DlmH0 zMUWE~`CCyl6hA02=MHLYuP*GxN9rtzN75TGJC8C24DPFAF8p5m`_yGht#G8TN0(`C zD?*Y(x6<-rrXVyft5zGLD{^leqmGm%&MFr7@|z2%8E!|9n_-83^IB6Qiz62HP*Y5d z@OSuRqr2NBxfgDgtnScqH@THFLS_UHKWmSq&z35Gwxqxf6d|Fc6vH9N{mjLMWl*a5 zG}&rc9BKdVEqD*evqH+l9{k+f@5X0@gD@q^$A%V>qp!($CZKVO_gu`ThN315Pjb8w zcP-w1yV0*zqVdtX&X-GMRPpS=%lZA2`8aH^@FE)G&Oi^wwRQ&@LY&=%SL_g0r+xzO z`omJ8*FHLyHNp$FFPo@sf)kGXEVzsF*yCoA-<)gv_)ZTV>{U~{OtCLXyBcHMUN$U3 z!~4>~chtNgmhz+htJe$Nz6l=>EbD9!vYbpmEB8uzjc-MCG0BY6*>kJ&2tvq#PGNLx zv&T^RAe{dY^4-vLU%*4j8T;=#-KCP3xMOJD`pKDjNrtFDErDpo~310bePB!*xj}Qr{zsi*hm)P6hjnpUlO7iaMR_L(bduRx%eqbXU z+{us#v+nE9U2oA(kV#f|kxaHq)uGaU&B^}0S`O1eDcHHLp5o1}vqbe-Nena2Ogb;^ zK@=8mrLk(g{RPk}8s+_G;1mXY5;Mr|VEMc>Bj=pYTNLo$f#c0bVUW{1vZ}E3v~(4= zqM6?K2h#6)V}MTs9!!8ZcmqCiw7uPZT>rfw|9x}=k7t!aqDu-~^n>Oy0$inzE zT7P|aI69Z*)zXs>id@I|%-6q4n>#tHM_5b7>;?Ci9jIW(TR^0Ksk;U4-QxXaa^9O1 zhqe03Cq8Mp5G?GWmgV2uIcT<5V5}lab8|RG6o^iXLY_x&OfL&8i@`ltTb$M{P5s;5 zFPOb%3Vw~mCpuD_6zw0wdY?m^W-Be)*0GXJ*n_UGT~~zBzXQ-XAhG@RB~hhNdP2Jz_fArM(X zsz~meMs|YT!r&8bz^vsNRVNrRNsx<}P|dM42u4Gme>~`SCmc*}P^xC=F*5rZW!32?|Wx2xH8e+26aKkl@OA^*VE8q9^&WDelo+WD^F|I7Hm)EGipS1{8 zTHQ-?yt0T`HJ=s~74eKrT8+TNl%b*%rj{C+PQ>hXmnO6L$pDUgfpeqhh=5s1MJBJR z+ISX8bLUO=1ip-3esu55GB&@S;_R2nkr846^pee5a+4r@ufx((*2avIU62*lREgM9 z#>`F=Y{8HR*6vi3->xycn42_1^IE%I_}KF~ye-JZ(ceZuz%&nV~1-~ zx>cT=$hPj*a*H)0_PW>u94Su=RxX*0uagS;st^)w2FY@xdLnhnxr-=$8&?u~2Oe2~ zo%ew-q{404U@M{sm?HDXqB5Q9n}%w+;n$a=B3SQIW6)n?I4CW?B9+A}EF_q0lD$rK zBbq^(>Kzd`4ZFCX{`1;3E#tM1alVgKmkzYW1fzA;8pau%Ze%~$jUPYna zM8KLjX;Y^o;@>RjqViqXIl6yVfd2xb(`+?2*q-jGI|`VaD)< zW%Zu2-aW*<$IoYJ+;m27SRE3(U zpXzQmx|4HbjyVKxq|Xrn&_)qXG~1x&_w4Jec$C;Yx)jtPx9X4NO0U``Ly(*GxtToX zy}MUeBjXd1FBAgJzE<(OvuUibPAN0-wk)n1nRZCGh4=I!E;>aBJ$YJ}){T!2^qnD) zHRFEX)!C-H*PDJ#;GQE=a&AI*TzP84o1`%;)vrmjl_Dee*ut~CL+dq;acu32C!0=>KT87wd7Pf_h>RZHkY^L)gFi$>!f`)Hl>pE)qTQ z^*dr{5*&fh>roYdRz%NWg_Ey{%$v%3nDZy`0^d}P3i%~3HmH?ISeJcxxK2Tl0hh~K_ zwuS3omFMu6nrC+VHX2iVxEk4N+Z;2Iav>ZNpwtI8kh@fPx&;+R%9{y;w;!A6USZg; zS;dW~oS#*;=LC>;O%AtD8f(C+!%|D}nJOAts3Lscb$J(5>Jh;UB9!|+ecnK=4R)M6 zncq<}1>;b_vs6`mdB@mw$&&uZNWHZ30)(H>Er@%l!l>@do>BJ;7Wq9ztl&#a63w%Zq8+6hK+bQx6oS01n%@s?t%uM@iTZO5J1 zgMuIF246Q*PM!qg z;w@7=bG-Ji&O3qG1Py8WGfzKWB0r#%>DqutUv4I}4BMg{?k2=IeH(Cb8Xjr9UcO=? zZdYSM5z)OV_gF)m%Y1LwOZaM^p;MAY&Yg2sK@^2Z6u`ORtx~35&4`M6bF#AE9I;9I zwbga(RX>kUOPE^7Khu;x)di_4rSw$uviOPnK(*2GXS)Xi^bp1k#5x@G5ae||0`!Lo z7Jc)BxCIvf04m`CV}U0iE3wH7VQ6g(MlMW$5SY1rS+@8X`&Ab!1533*7K^*aqtLfK z3_N*0WwSf+T#iP;q3R(>>1T?d-yA+~a_N$W@3TQ1f2oW7+}JgbQ>o5XhxCZBS9;1` zvA~z_Hp(zYa0{0w=@&9Xs31MK0Cdz2Tec^iRoG-ov5=F?%l#V^3x%`K zu4AyIX61O2Wo9hS->=UNuQ_Fp4{Pluua1A9oyDU4EC~Qi#f|V_o2Ah` zy|H133>~$kI1p;X2E2Ce!dD;YU!LSjE7;&ntvDPr#sPD@P}QI5_M-5(%a$J&&pgl{ zYD9%{vas@9f96^W#mVuN&3t?5xxSCL@Vc!q`jh*uY02C=Yfjhv#qb^Q>%{U zSd=})pe%C;$73aI!6tX=R?MK!AN+FEnB&z=Z(}xnOb{QiBoN}D_QidF)kNs~NPod~ z4*CRh4NY0?BU^WTxd6>dut!M0V8YS;(%s6=Yi*x?arMJwromgAcw)U)g-1e=xVXCD zMUMCDOy`YholmjNwEWkKYfaYOH3AveT3Q${VjI1?&N;QyuYTT*sjhNS{1P>D*e5wa zq~0id(cl<7C(OZ+MM_DlllRPEfJfQHEm)NzrMGm86~GjF7Pd~lk~$U-RT$9zu;n(# zw$kkRv7ma6mZ)N8slgyr$QX=sJWXCkT|l_*P*7+7mFT40a6e+B&?K2>=1;PvR-(Br zWH%s!P^oX*4uyj+6YC6t3J3F!fI5@YKE<#vbhj;d8i&3{jI#*SQ%4*GhwrV!vixWrR=M7MEYX@;B4ScYWM}_a)u54*;{i8K2Q&1KU9S@uTb{^(++w z)@>MwTfe$a74o6?QeH%yiI481G%KMjV;olcWZKnhemIit3xJ9NHu?*ClqpLx%++6*kck!&Yyxp?QyObX&H6A`kjAPc18!QR5Dq8 zD%^DERGex3WE0c8mnr2FCs^i0R4P*0}&VJ)N;E3apMj-OWDb*wlb}x1M88#iy2Kp*q*CYBsGLaG7&v~;@@h7(%W7}amRzUl zL!_=_Hm@AN>yW^08<1@>*}B7_{A4Q{goWimK8orMk;Z!NW-qg-%ogthYQo5_?ivcd=`8v|Qxo%g;911+7K;lK^zVOZVR# z?bdnT&vSCDS{{#Mia8k79>+m^leH--Rq`M2x3^Pw$Q!XfvOzhJg!GhgX#8l)=U z2}^C4372Ls9QSYDO!io7ZftRzR1?sYH(x*$~8PmAv-N_>bX3JQ0a z6B>&CTzTaU)E8f0?t3iMqFOGd3AVD>F9JE>GNGRqNEPF?6ZxmgUgPTBS1_7_XV!R& zg)x}w3v;$ap4yYe84S8I)Ym5$_H{&eEmE5M?s8oVttzWo|6yK=ZpP1MNnaTA>ltkF zONAV=c(b1j==j65E4*DQmxSKq#`M#rj-P9Vf#rviw!sJS8%<+{&$O{~<6gxXbw5o^1=av5ZVIU^Z=KD-SR68Tl1CJf12w?jln^{u+lA^3VOYR2lyO~C!h3vPlaKDI_#>gZLFGTBrrcw^_l7|?deo>yKEF%%&k40l zRl3-4MyiY3>D&Q!ljBR+(khRJGf_2_0mZHyz;2* zPf?6N`{G1XQ-AH#ShiO5fPgIg7nm9aX&Gy~U#0*DSj2-j3J1dPr) zbn1h_!_bwc#bQb$`G2fAIBf6@I2aBDn4Uu+x6%F#4=8{ZfNsq5#u@r551|JS^W}?X zQ{=#dAP-uoM0suayTF6`^AeZe^E0yjX{G5?<%Z64LjXR7Mp$V^Cq=>x)q#%mYrEe2 zJMSeTYT98vrW^c!X^B%0+0<-*57hM1^ka#8Iz=cXzggk{+SJ`RA-132ong?t}n+yv+oA zxeFHYR{hR!!%5v6GcYPwxubwhT%E4&4S+>3&&cq%=JzgJ1b%)sO`qJa9d(OV7gK>vYBZ~gj z;Z3#-X4~EDqb&{=iAA}}&TVrJG6j4dg6+wL3-;Va`kj%~JSvKr36k_Q1>MT_Vtp;< zN|Y22LBdib3GnU=xXuSNVsDfSVEXZLe%{2x6}@$~nb;FkK0yM9tF2BNO{8o;uO7q#GfvgyTv8{8Oi*s3USc2bg5}F^*te|X z2FAG-vrsZn<->%d>l|+&wYrJ|bKjLRHcbxE-6g0PbGl3o@Ze^Bc9cHw(ZGV+h+c1n z5g*=#VCW?<_&q0)Ba?e8fMvZZcA$wz;gYVRj@?G3lf(P_D?mZ&w=M~M_$~()Irb@oY<9egfu_OS$6x#wdyF2Z`I%stTSG@DO#2Gi9cKJNEYe6BL@>iD<1swNo}}M^YU4;`kGC< zND{ zLMlBud`N^ez$l_*rjU$6e{W=DBsNEBv75Z%*vG)HC%{Z-P@j!uqZ_S@zGV#QMGP8e z;d|fff%znw7Ts;|8$R=$>;|(5zzD|E@0g0Gg9mDG{GcF7^Z=HNFLNcpK*3;AX)k4K zy#_B`I#df+kTqhu^9Or-1lkj(K`S*xln`ke^z3!5slQmX0oV;59v-Vw3bb+*3yU;DlLkHGC7Sb8rnhchp&&owa!PBU7|Wke<%_f-yBn9y)g&jC zu8B&2E~6YS9FYRjV+nCd^k1w-NI3+iUpQ2SI+Xy5LwE*fnT@@QRcDj$_Yuj&k5&;R z47ulvJ1i zwKR_Bo1eH{kJAbY3M4%}+p@Tw#95QKzMVP|%Wi3ozS}*+#lMS;j-H39ow74LGC59g zU-#IDzY*}qpmAp_Xg6NuAGRK2$0zy|^+qjHXJ($~^?7LU25K%@J+CY@8!Y0(_li;A zfJN_6Fj^-0{Di3iqcMj7Bk)_x>=Ohdz!G)}4}}G?D0nIXXh;>;fSM>C%jQ)t*J`#~ zqxHHuj_(UY83owN6zuG(-EyC1{W;6(tr*e$rdh*6W5Si*qdysXkgh+Cb&csV!aVYx#H?02$*@%S%q=dh7@Syjr*7BaJ6d>bcciV4aM!M@#h!OoPbP<2)dQ#ULh@=xj;(_${;S-LPk4+tPW=dk;PWYl#FcX#*ZhXRDa zjZXCQ0YTSe4Uer59HZ@3PT1m_@@CSQ10R_elva8wl*$!dHI26K4#gk?+3bzF%iN7!S*ww+R4?;n`HJ0aa__5C?ZbZeIo^OC}nWiX0X|f-aVPnC>PbyYu1TouvwD*hJ-;MiU#F< z3aVpsoEll$K%>wmm|+HfB0&@fJa+{*3ZGNn^Y*l|@MoJXugr=>n2c~f*|ZqDWTl(} zH);Kbui{Jgb8A;?EZ#?P=0?=t20laQwjZXh)|h~;`;WUDFkM}*SfWV!R=S@=qcX5$ zH~<|Fup~)(W2e3`7>_i+hwLbPpPwfdyI;8WkywQqZj&SsY~eH=9^%HG12=+Tj(G&*6lJNksi=8L)uPE5+T98(V!tLAc(IKv{!Nw;5Ig0Z=WQD-*<;HSsgu|xJ zNa0U#Q3!BmX+TCrZeBd^H#rQt1I4DawUBK9InB$5fZwE>7|}hyr@voodE$1v5O*id z!jiK38aOfMOQ>*n*=N4d<8PHn%FNy>3LG%*0OQy=%Vd4=t3T43T+ce|Ucm3gyAnDu zHV)wDO96D|@qBN;|Ivv#d;N0(MX@DO7e|>3L5WWH6B1Z05pEnoVu<{GC)w}gKBoW~-t=dU;r#?Goly+2V9p6&g?ym@HZI8+ZomK> zw*^L!7ogZ$0gbUr1t`*W1xnC&(qM=?nmol#Un(eC(@M4Gga3R%T;WVGHdtnY{#;dR z2WLcIpwPYbgkuAK>kXuL?L@W(@A5+545*jO>;$EDPE5nb9h!rkCNUD{CUP)pc1^8 zRAk+U?Hs=apbi&$W|3uq4fQZ+!dEdym4U#IS&Pw|q^x@c3QcIOF7bB;dj~L-@7_vb z(29ir>$Ce;MWsnn6kmN#%N|ve$ESekkC_=C+>^oXj&18_Dqq6 zEGmh>FRf=8w)uMdR3HXDSzy82c+c)>mvu@)*aqMwyckLVRK#Sd9_KNUX?F<1WVw-G z=4|HAw*X@3+dP5$@I2&tUa;Zw$DY*DIj>VX0r`G=zRK+36o6yk z47XGmwP=^OKiCiek=zx}=|hP$^UB*0<@RNDg+$^@hm6;@+m#w5o+Kl;pR=T$HxSoa-58Jm)A|3jDoNdrTs^8R|x1O}+# zf`ne5E}ciX=lX$4`I&avL(?=v3X(b|Sj_NyvX2xn%}W=syf3m88T~K`M(+LP_R-Hk)p}<-i7@M zUJDYaYxawQOx=u^jBVRugX8H{peMis82~y^7<6$XtzqT~J5#q^#)Pe8xq-#Pqq}N* z3-4-Gk~D4S zZYl0OwzcXzADk+W^9|yC3S=gec0=-*58F^7a7=X}CQ*H)-bw{wmA~JF3<2oYYW4sM z3<-(st#NA%+l_cJiFHbWm8+jX(kYSwQdfn~LEg?z4#EDV%^lun z(ax6Gb*G!^POo15*t{7+hhOp7L?K}R5VFD}$VB*C!ApA0JVjZ=V10$FtN58mua-)K zr40K}>!;99pmDZYsT%Tsg%JXs4@#>f)@`sIc%I(++eSVuw!@~q}mwIn|mp_P3;9JKH-txS~_!5A$8P2A`kIm)|5HlQoX^KNM#f9plrROgD|Ae<_?d#|&qH^ut0%wSU%`)Trjs ztH%6nd9{vj_3ZoB1oGKDQ#bajVgb$Z5+3J z{pt7Z^{nGkTi)8oS=NNesRAG_6;{2ydG}kd{k!#DDs)PG^bgwY8YBpq8Dz=1&?Z&R z7-C>1+QNjNpYea_!FV&tXvk2=m3I#YVI0$|-0U(85bD59Dn?()zUBngfYIKE>Tz)55sJl z#D7CE7)-k*#qu>y5OCIOu%f=+1O1%8<&akurpH@757%^XPEgX(M?Ip4U=3_&6OqLA z6Ve32tOZks*PTSok@uS!bD1cP2UOe@jnZvxCIypztU#o7;@sB%-cbL_$M~70n75oOZy^RM_~uWX;m%MbhPPIbeCv#O|edNfs4=P7**c?1hh8@&9U;D*t| zllT7p*~hjP**1~|rlNa|qMGUCAMNg*4fw14!zS~6ayE(nI(KN=EbF(EIX9#Y$R#DV z8ONtEJI?mqks)l!WLZt|=`{-uwee5>HD=ZR_Razi*I6*L?`x^+V3pQi#Yg!i`7CxV&~0o_G!Mw+&`1lHmK2ZCHlU1m|1M8JBB>cTZ_#Zk zK4=Yo=!%5%$&)EF|GQk|yf3UO|KSJbWKQ2DW`Uc(6#wUneahF-7o}aN8>P_Y^HHXz z=aHWrIz=z%iGJ&KMtLt$!rN!xubs{3WER>if5ev>8XPnnvV55i_PY^8Q)JeOH~7_gDVFgG z_%#pU=GC+Mo4VZFPjh}463SieCsEZeKEnQf{Fh;O?qea@Fdu1B@-J?vW}mz&UBKB` zsM>I+e_xb8$%H+t2Q&gn+8BFA5YM+N;3|9Q%{8c1UB1QHeq~_dX6eakua1a7^A!Qv zZu61S0R?!uxKop69iHJ-TATwT7AJ*pInmFClPV-rp1H^2k_L>^juhLh%}RYqMKiko zJk5C(rFU-eZ`~dUOzww#hyI}`wXE!G2-*sJbUFEYh&ZBSDe6Zd@wx_d&tJfPGfplMlbK{4mbD}UJj8+Ki#jAYfn!tF0Fv7S?Xd}^{)ib+X(+aaM+(%@Qn zcb?yFw;0CZe+2eL4(cxY?QL;eEWJo(2bCvZ==5jgqVFAR37l7sW=Czh-*2+Hy7H@g z=Quxdv$Qv{kK_3d3&(nUZ*e-@HB<`_W>9^TtuvlFTL{wRWOgIw9Ylx=5GayY*hZP}kbp=MX>wRsF=RW@!OBMpT)Sw_9eZ zH{KyM%4aD#gZ7t%R2&L%D&1jtZF|juA~28^Y>aYM;^~Jn8(Hw{$wQ<^61~{ng+=p@ zEnksNQ>sCjidn1UezT0kaZa1t*Wr`e?eu0Cb`F6Ys#XLH2nmnk=ucQb$p%5^aY$fdYf1k?pBw27uZ2fv9 zy?j(`{>w=E8soK75LRKr-*Ulg7(74;P9fXrj8$-!9=*c8OozV}VmV((1@k135L5H9 zw^1?6VhnFtdC--5jT_{mv4%2b8$S%hTQWNR1&%8n5sCga&VYZ{m;(dgVbvmt9KV=| zc$IN5r0v+Z)ueYkrT$n*qtBzu?fB};T34Va>R4<%Y8BnTi#JVHLX!r=6qPnzAziK# znU~9v+n-Wd%_W6Cc4l|5!4x|FoKw?z61(}EW zQ+~5+q{~y3OPQ0uiq}XxGJ4-A1Dxn14^y8GiTZcqm|XAr0jKeas3Cr=+_Ni zCbjt{1!;KPd*cT8EQR^1b)+tdN&F5X$JR^+#$+q?vnP%4?F0&p1#IoivF-kq-L|ZQ=4hz&zNY;7d=spXPNz{*RqOXD`2yP`dXk4YiMsBl z%32t*0=DOWL-FCkzQVhyV3|g;o{6Z8CFJ>~RrvYc=9up|HHh5h_9VGOhlp{aC z*pvDRdM`0MuI)e=B3R`Y3`q}~s@*>%4T-KsO^6^7uK0A^q(Z0$_jkw)q4I}7Zh^)^ zwpm)Gyd9T2{C?sp49?h>w=%t`&K8Zt5(^9JUv_7p%?aJKUmVPg4$5Vu} zH-!VJ=_?aM6i*zTvXD>Yx`#Pfm!khY>j2=ap)?vkSd{E5$E{7nJ3d~@h~)7w66Wx} zw^_MH2*d@22G6TzQU6x;JIAXBQn>vd;L>N*(uD z7eC=X8w2=Er928=x+T~CWY4uL)9~KpT+L0H#DAN_Z5h_~(VZ498g`Sf|1j-4htGHun#y`+v4Hl!(PePxQIYuruM1UCXZew0~i9u*Mqrp2koaTN5(i z-1)BPgW0X~UMXcH5^eCeNKt%g7xZ#- z-L;!05mcb1SB5(XD#Dm2${N*X{d#{69NJKT&spY=zY}ZQRcz~7H_~LQr%Paf8bEfu zKdk83YQ2l9{(IW6A%Mfaf55avP4nQ@RoZQ4L23 zKFZr%gByRJzZsdQZ@3^=Ex= zseT(h2t~$i&85a|`aA#=6!_#sO6hNMGsRll0B&&3+SvP;o8F|o6`NUK)1he__sxc} zTdG%HthX=OB;<8qiomnFZ{Az&=!j>~Qs{F(UeuaQs4A;zl-n7t2TsL97NCo`KXvce z6^}x$YQ3Qm-C*9l%qe(ItI>Gp?ZJVGTv-dC)4N$>FA0FX%IWK;TpiA-0xC@w+0&TF zV`(I*us$x6F8P@7ZQ7b)nhO9px(DpfEdb`21X!zx&`9tQ=>nf)q2N&a!!f9~{@|HR zLn4HH1;`#-;Y)xVwPp%<$K-*PZ(YJ*%^htkG1IAwk0pCe+o|k{=_I)*;^a%-Tm2Xd z9sV6p04&z|?#z?`5DxvaM4zvw7K%-A=D}fr5(@V?u234T%7YBuU5EQyLQ!^9rgJND@3`NAuo~r1B~%D17tt zAR+|txD#l8hN>0q55*a7V#Ib>Ja+Ts0F5RVNCWKSpng7_O#ql`13A(W=KV1glhqcA zUDGfjUjdem?Qu7t0dM6-iwt7i9yhF}P~QJz3Gu^wY~Q0hlKvd@T5;piU>@8xkV9>z zz&5QF@G(GEDp)%v?F|E(_G8|vf7dzLQO-n&#UD>+h3dz z?q)v;AaKor!v@*rDgESFs5}L_xsf0iC}*O5A8)qhkd`1z89Jd>32#pRGSVo-k4pr9 z?VELp-tmCKs;m=?H2T%n8s<1=OT9oP^ zmYd3aVs-sD3DV4MF#@azfme_`psYe1ybp=2jR)5UTC|A2X@8u&DyEqKK4$5t-$v|? z;FM~5xP1zWZ5*|;!yv*bp8pu zkP@wLWeb;ISowsbv-z4oFi92vv3VPX5C|dofE)*9X7B6q_<(MUTe2y)1~^m#gI7N{ zonHP6$a>4!1f*(*_#VE@{&N*aMyWHvc}O(mmlFJY9&B$SX06SP!kjOVgQXF^HfLMv zs&=6WXkWM=I~9O&JN@5tS~J`pWUPqi+%K>=PGdDn=(;1v5?f7^SDf+P9;Q%+&1rO_<#hDTm`;nh6o_4?1{_Aoqg( zt^CUy9@Dw3WB-R3A%cOdCI{e-VbI8r_FDl53LEu;^0aRg9dR6PF9NWd58BVooQ4IE z5s(3*Y&2RV#*oO-!p1-R8}bJrQZZ*vBx29=ypHn)00_&UuC#qN{=Bq81B7}_FcERi z8B{ZlNI~=1UQdg#O8UOcnGwpmUsKX~B&s=hS_(9@5)%lu(Udy6gu zRNSq12KgxH0Bj>8kZ0Kg=t~}}d@qZ5r(_2H)@67DP`Bz3iHeV+y}2-SdpYltAhbi2 z_9iruU;yk+GulU;HItq7G(plk0Pp3p08N~$wuXs@79%Ewb=K6|IS%;g>8`*dB#}uk zCs#qI;$4)Zuh;<)>&1+XRp#*X5{Do~S#O0Gp{_K<2FYYq-gZu_R0c_3Tz$o5&^->n zayGICSUT{}8N1v&dSnC+)A(CkR=^5IVKoiMhbIBd%)-g3!B!Wr9qE00G849e2@qX^ z8GqTON90N6r2sA1t<*S-W%)$0G$K_oJ-zP~lnh&YdV1-7WlA3+26*6XMnosu%_1!4Ap->QWGn86-d!R|MQ86B(aJl#C5RKxLc5nA*knsE)|?<2<_jk z)X_&NKl~e6AOVeZ0jUKG0Gv~8F@(F&X3z#A6JdI%Qpme8ttqdl;n+`bpsZ(2bmorh zI4;8Wt#+0|vm@8+LwqQ-IbkkcZX8xbicHn|u$gc6Q@!AP_52 zUj1^A>|9_xoBGZ%_5>ZtkI>lcw^wrwCit}&V{sMv*GCKmp9P{& zk_&24lh|ujCj=52Vd~n1RCfX_BYE}Yf|5Wu0zK&&-T$o`q6+LI z^A{pa9pRA$foizsCi)W}4)S$M9Z@%O(vw%(sI{zkQmHF>!|N5jZdNkL`+5U50dXBpc7PHXejxJ(PBiC*$|q`m*nC{l!=lG%Whc9&Bl8)U;X z_DL*mSQdzFO#68Xg!^sCZ((ob0zg-Xf-3_-!UU&10Whc`9G8uOZ|pI5U>E8B&#k6m z*ju|PSkW;71%SKisqlTb>5W^(CE^P6_59zNjv74*dasY1&^z7!ZB7p)N1t!^Z5dAE z*EnrPO1e`!CKLA31gL5WBP4!&E!};o4Nmrs%Zqp{hPpuhCcl8~Z59B$)&!scHZImI z!VEF)Z;@NXZv>l9GiZKkdAnlMFzT%&Bsx+`5E??r5;u?UgR3V%sy4qlS|F|G<50DI ziapw92A7ny>=>9Ma|!Uf;0XHmF%E2 zo)LB=!yyNAD?NVW0SqwKcyvMx`-t4+#QnQ#;q` zMdNf!dnz@9cz`&yG6G_Wr5}^OvY({-chZ<37^Fd<82tszGvZxl1RB`LhSvdsJ#eXv z66KpHg1^W`=h8evpoM7A59a0pbRMm$@O8X{@w3~l{2|;*Oo)WEkiCOcW|G@MBhV)6 z^roUVr-N^MuvDR2M}XVc)rsT#KWDkXf4tl@<=_KzY6~1Q0ify(0OcN4?;V48MBD3^ z^R40J62K~SGb@i^ZPz7o(JIy)c!c~-9;Vjbn?({-ME+FCM9g`-Y+~hhX8808H8$F3NHYAK2T!Y4z$HjQM#s zTauv2g8MCMx{?{Ex{?){T?BtcHo281rN1)8l=;8VSxu_iQUhz9*4xOwPvbo4j5n-_=aF~?!#Ms3M8!rP#Q>oAeRT&DT5w{_U%8N} z0b&(UfdIi#wEX;Z*sa90z9%_|qo_{-B6=-uWn_vGC#9x_5o*V=M0C)PV7ksZC}MF6 z{Cbi8*<&U;{4`06za>iq!h8p7+UcYHY@-Tmz>;u|;Rr|frK}*9ul?RXL*R&XW%LMCf-f%th*cL zZw7W^HrjL=EZ$);N(PZes_s~mUxhXM%s z)x-$1lF-CyJ5W&xB$^e4Ir9x2dP){lAr*obZiI;eq(Sl4nNbWcE2E)-_cq2#)8X@t zyG;XZz%__)(R558#S!*&HKhtE3Zom_4>;cA@AinUFn~O91N2%O7Kn(F9SDS&ezh-x zA_3lt?*9MYdIzxaKl^A|uu0hmYDkGkNo96cVMB&M!LDNReLjdEMQ@?zczdt)`~$7d zt#dYbEhKK@?ZD8exoMbeuo8f0v2(>o6|CBM6}4ZoHb>`d1A*5MKR(EI7Yb3IEyHH# z8&~4p)YFv2)U2*o2W$8h-N^UU+BPaMh8_Qci%fOw(f_6#O61!HlBfcFTgZxc94&dF zTpX>D)Hm!OD^lVZ-k>29jQ8KLLE=S|IQx_&*yu4UA>-bs%v-PR?!#40%QQ(_&P|Fd zXH*Tmf`XinBP%CMypHXs5BG7k7B{!9*Te4z4GXyvyw|m68&z@24sM?K)77npRhq~u zY()L0ScCU(W)v@k^@_PPe?3IRQ&>?vzJ&9zWb(j?NhFhzyo#4S2Jla{r30Ix939h2%cD{&%Ewawcm;t#l*J%4nS<#fdOEsr=dFJ6 z`^((|pnz5b!1;9EZYU4u4`O}yFfxb>l1HfI^S}M_yW7niyT(e>7tFngg#vK z`bPYXC+>rWm74g!*H%}1)n+NT=@hfoUDwY@QgO^W>7)Cwa=#L?m8c9wgI< zV2j9LUDj7}2WsHgNTcF)QJ|thsmZ6Wax5Ht>GD9d}s z-Ao^l$z8+)Y(=Y~&to0_Hoph*WI(BB{sU+3nN+3|8lFZKi&p?X>HDiJzk+s74!8ap zR2!jatNRc^Il<$PJ-A=smj{7o8Kk(~!5@w_avC3+ojH;jK0k#hxPVs@`KdlW-+|&I zgZtJ{LrvF`5w#qoqS-yXI^O~9UGSn|A%3Y^=+Cbcm(639a_Hz9Cecq?P&U#-L29VS28b!7 zafvah<#Hvdu?VE57}9+a2}oJ?_4<@4{O)!>*m;+B61S!QAiOKtolO@_>!>wieUmvkAw)nu-5mu!*oN<3E zic-2)y!h-LbkGFx4(sxluQAx zj6|Yn*5ySOlSKSn13V%T6@DTm=2x>`ZSfNM)y%+a7wDiOXGzTm7lj1$ufCkFG^;!& zj{PcgksT*+qX=F{F(&wQ)2FkbSJ3&#bmw@9r)d?iPnvy?G1u)Ihpt|GG%7uJ)KYGp z6ul0%Z+pVi78=ThTF>*zoL^ap*7>PL)=sWVTpt&uo1GbwH!;*TRxY?%;W4#S`Nw1H2cd-7js9QCVM?Ufx!tj7O;YQGiBPku5NtR_zj3QXqXTaFMXM4`GKohV z!j?tA8D?jIwCLJEb6=><+&w~kMcS138mZhckf`rhszRkz{(4#L6 zQEQ$->`0Qed_+I165N=c;5M>MR=opv+E+F6U)A%+r0}AT^2nC33+gsS z@+VOQg@tDQbkppUJNY=Z_u!Es3-fX5)B?~yA{SXIR|R)g`RhzviPUWg45;5Z>Ay}{ z)owhtS540UF?+OLXsAFG_S7WgBWsPQA0z7{t&M*gR}o+GdklQRU#4QvYBX}&U(2Z7 zjV^LXy0sL)R78``%}5yvD1bntp1xHo09|P=xwm<$EY3_Gx2Fcf39)gm?Di9s%Qt@mwe{we8 z8}E1=9!Ps0R`o*sZFSW)H_K)|WklG#w2#{25GhbekHv@Nv{+;Gy=w4FUTwG^xivD~ z*ia_J%+P zNyM=ajbRq;&YQwwSSPJuXr(}6jEmAE|4jS!ijhp=FI#9uhOh!mri0k^3Xy6=$AOY; zLpgYp53g?_GS(J6v*%8~bz(oLSIi;2G=!^IZ98E85D{!8sJcLP{WKKXm2Vx~6#Y2B z9)s74|IwY749Zb+=ES5*woI$hxwDsj?Y66}B{po;{I7f8`Lv;=_1O8?nw7mFEUZ=E zbHqG*CI^O8ruQtL5=dzwi8$~Wo)y$^MWbssjJhyn`^~s-%s`O-9WVkKU`6E`OWAl*dF;Qr)&*_)l)!@j9OK&@X2?SHSTvS*Ie(jhD;I)mw~@l9 zg6qGtAtRAxws>H=7?*xgHrD%s-R(FEYE7Hb6L0}D{%!U7PWBSFKN@A*+Pxi)Eh(hc z>l6L{>+a%2txm~!*Y)LsLCklQFS4;?n5x~52gxD=?w?vbaKLPwus=Tz0COF61L+KD0F!a7zoe;M;n?YsYEhev8cBb+MThQqj;4mB=H`?YIZg~M?i58*#ZE2Pq(v9>%X z8XwzrSu^pe*(p%k%R`D>$lH0AT-ME9$AbFq#{#009$NCKyzTz}`2 z_DQaB2iuaJ>szGWM7CzykN1+0*{T~17)4kb*VScu$`jIp^TmK_g-p2F@KR2(^ z5~b-d-VVlL>q^r>F`YjfLaUKc1dO&}(_)o57=lZ>&4?>0?950LBF4fnP~=*@b{9M+ z_&wi9HBb3t644GN!|~=vNL72V&kjE)kFJA!H@oR?)EW@u9G}(K^V+K!tcDf8Sa?CQ zmW`H!h=YBeIO(}>(b!QvGYbh=Vj4cp(8dQY$n@1QNGNvf(@#P5|F+5MhxB{zpC}Q1 z>3D*bjl_F=KUg46-rE(Xi+c-fjE7{V-{SOoH+XL?$^@@;^aR~9<2L?FK8|{)(`m3% zU6VIA9AdA8J>jOen#efsOWP-NwCCv;Cre?U6l21Ai5-KmX%%G>+7oiCW|V@TSs!nf zQ1)k5Rh-yn6;QQ>`c7tcxE}trYL;3mwu5GK4tG`hCw1H@@CTW~?Pban@V^NAzeuRo zd-na6Y|}?|v|61}pwY0tJ(YdRxAY@w7l^X-tt1HUD*+2|Sw3LBKg;Hab~$O7m(HZs zP+4s9pzOn_UAL$OrQwN$!Ok1dE~6w>oYSP`;qT2zhmXz`Z@kfJZi*hu{K;(R@b)V z8R5Z)J402E9?X0zDKcE6y+dtYh%6mwAC)gfJip5D49Is}l@DC@>g1I+yx=#K5tM{4 za+8LH5AL<^Q3S|6)jnxQ!C4nQ9RHycQyvY{Jx5o?iJ#dI#+rK^F!G1N@H zpxJRBt!chw49R+6hX>fI__~+vfX(_H$wF&d6smy~e`5USpY@r4I|}$e+6C?x>xhUm ze>d+PWQ?+*stSb=(m2zkkP(lw!Z-^zg-DS4WoS{%Fj7Unp6ZWo3*n1M&1pIBHYX;g zr#y-wm$95L8O{IHDCapS!dM!{DBEi9_`)P>hG!Z})yPnVN<1Yu`_W!QE!^M30q4Xp z4t>Brs?mYlho+;+!t^(VW-AIf;dd;DRiA_t+TKLeH0W6K2EH>~SfVr0LI0hwxrV)nbUo&mOr zoK~QX)w1ir-Sfa^vsT>ocD7CyMXx?bG1{((vRk?5Lh0E0vPVXDJlf4GWNi;n1)K+q zI4y2-HB^(0{``g-h}4s!!-t~C;bd1pyN-iV1}$*pTT;Ns|BOE3WU}Ij!)#%O?%U`k4F4%I#`2f8#sna^EEbBHh{0 zkgCZo192tEr1mVVwH}c57QlZo^vyMAp%VqPu z1c!mt0lfQW;GxnKqJR-oLH07hjFIEtOAT59^PH+h$NY%K~(z z_i_>FLlE_ndpuwU)Txhq9d&+F?+{ij95Al1NFmwAjKPUgzm_eE+1S-hXIbSfGFLeI zfZ9M78R{byIgHS+;;V$XDZda|;L95v3hkq%<$p`@5c?$uzkY(60LCR)36;~HSslP6 z_?EaJ6!PjuU92v8V#XsvL1ci0s4<8Qs5WNov`Ef}W8H|}*?K^rHKdiZp#S|oy zTb!7(m`0E%{?QUEXY?}1=a>yiCJE=QBdGh%fk$V(YJt)&O}iMl{^@iUVdX4j%dbjDhrDSv@X2(M(V1mzL-co}$GDIxGDDp_xN zfIXI?iLzk?JyD!$Et-O5-#n4~A@pa?4>o6H(57HZsr2ulwn8*>leGsiI~CVh6AenD z6{nb#j~DjPAu*vX@W%ei8PZumkV+G1>~7j;B6|t7Vw_vdiRyILUJZV)*5-BXVTvt9 z6s{{Yjt_g%3cr>e-Q*6e{>sBLBlxrD8;vs9+ZjB+9Raz#DHb4l@G1V*Q&K7fX1Vlk=yJnoGSsd7win2du!_NDRyLn2aM6fhNsC6?GHi=J zQh-ZU&4#5*FopYRAm6s5d5bE(;H=)_JbNa6`7B#X37Gxc;SIk~BISX7hRy2QLJXTQ z@|}^p75kHWu9i^}VV9C;@e($LFQ}sxlVmkjw1+q#(Sluulj&(QWU~Oj^$OT4P5zGu zn|Pp_4uc1&l@50hAzm_3E*OY(O#{dkoj=^GQ1H;u^R7IkA@d={LTVO472RO#%4=G3 zph#$4Ftum2gvXB-AGVpurIO47_QBz@7{vamJ^z~!YI8|QCNN=Oe-Ap-;JajYqZ@e2ny;qjSJ>NARF+Vq904JX?2YvU|L z0-a%ZN(SIirnH7ZgcJdL#`cm{FB&If4T0rb{y%U1mAf`@AKaiLwcyK zi#lZJDt35YS_-)Cp#z(?g|e8mD*=0^lgFt1ZRvCDX^qG3$|i*SKqTX#g8nm#oN2hB zyDmlGvrUt!1UiBM&e<@;DzI<%{qp>~5LEF`_CPvK$znLj>x;s>5RLEGF0D@I@wFhk zw)APXGoFn_;~*J`Qg5J#`&u4(c=`(=wFtkE$lszTv@b>EnlLw_%Ivah8DJU{PehZ+?g69K5F+{(x1ZM>oO7tegJAnZZr9v_xEQ1ofM_JHE|LYCaNLKb*m+Weg9igk?}vDMjpfKXbeOI6ZZ&@44-O# z8$T0jLA$X$$X7z=cg`-!qd+-Ql^_4}spx1J9>Au#+oe1zBvS5<#t~swd+8cMXP9hK z-xyI*xsh8rXBWQ#r$`5RP8bMmOf$hbCM3zrnr<;W;CKFDXm+`!{r%`&aa01MPCgKX z>9y2gIn@5$NyF7FiJ=CK4Uz_+5@LmjL-OuSX<|z|3tW;p&OQ>XE%qz;i%nKPRk%#N^sW#(GW_UncCL+bay_i8y(U-4(~ z;)0(i*&07@3yt_(@;@Bs?zsINOOJRrNfzua6aHtBOf-AOOeBWm(ElN_ew2WI2}#ud z%Z~4KP|&L}({+Yut6;YmvHMD+M<{KpdT4ouu#Aohj3SA=n>q@2np3dYrkY3eIq~&|q;*|4Y{6;-t;s!%h4il? z+R5KMz#vdt#WDRNRcbMEeh2*{k|LpM=dk{tQ+kQ)6g+K}1U#T@Qem%f+o$md7|p8B zq6~T!!Z6i5;k2<9>AGEkVv;=;U_{szTzqY(^ruBO_(7xi*~sS@L>+rf*gmS%q^WPG ztG|Zcp}y~J{ZlA&n(cbhVPEUNZRdwCnzj9Vh5VyY0pj4G<6YP`^J_(>Xu&i=%|!9U zsm3O#L#h{Gbib@Y;rA_?t!bJiYG3L#{CS!$0wTapXeL zNy{dk!FwWcxn!&f)_;Cbcl3}Rom!>3Kbk)u$^g)j+ytssS`Yh6QN3vA#9}FN&u?eK zd@V*&On~ekPbaV5frsHj`v4vKNw)nd?Pi1oMQj_BM{>7fb0OxsH! z<4+8{UjpRJ7p)rv$Mos)F@Og@A@^@6%7_7o!6-|Y0IUE9__7>na(m|6cZXiozDK z8Cp3+AIG0*;`7twSlSw4Y?4bO-v+=d2;Q7BAEo~TrT%NfIzqD=MJ=5GW`18cj5y05 zc$&Q3Zfp>lR3~czrVqO8aV+JUJACW)tO2GwRPO9WJvuF#1sCvS6YG``LkSMyUh%5` z7C;gRRLt)O=bM3WZ4-$6p^3cy$j=pa0* z$-K?$)J)Krk*44oneY?z3c_pD<782h=CDJjZvkTzYlF5~E0CE)4978)YuwO2D{Nvt z%-ZabDBZ213n~DrZ?B5Chhp4NJifViNFoZ*= zv~+ieba%JXAt@y&-K9u(gGwpg-60_%CEcCUA@FXz_x|5ctTl_-bLPxG`>9_%_m!a8 ztNpAs*RNn^RT zRJuXUx9bmLN?1;3M1^(a`Qf|2KluAmEmx7kwIfe<@Aoi`<{KlPcAXRa*ng=zIvn$@ zTrOEP29X{!rp5b5@ zIY}rJXV71Rd8ooKv;K;7Nth}FSC|-IprU$ZaO@%2=;V$O@%)a;D7vUjCs$3!3so-b z!(rtxoJN+*$cJQdpNl`Px4S(~2R5OU%kuCar(xW772s7Vzqv6$?!){?JW*jRe}*v! zg1GnI(`=Apuy92-p8icoTtccF*2gT^RS2)rT^jAXummfP*hBlX-?$Rj8F^VqbT$Sb z5MpzZpwoW+hzEwGK{p^UGZ`T?uViB^(omrWneNT2$2o@1e;xA|`X&R{O14<7MKFNw zXaM=jIS}&=({jBP&%KhhhOi-t(d|m=3y_eD_(Ut+J_jWz3-Cl~j%=<4PaG+vb&msP zXF#&2i%xHrpaPMK$O>m>y)WGr|3ZA5@Xv+%n=vlA9_Fx`8`RIue}MeNArp72p**dv zywc1Si>RO%Qf&o=$xm~)Sxk$>T%@Q5pFi*3DouUb*r5lEOZ&KZLX7x$q3QkzYnmJ4E+2l!x;jS$!x|^x|J1UvVBdm zfh8Oqn%Q)w3-SK`FvzH=)Zgdw6_bZq9bdM3dwhLa$0|O_CPKrcnOBvl^?S$Q+@Lwg zeW(LmzY=djY8?*)>1p9WWLM{3Q`#F=bWHsE>8q-E%zGoRm&ESrln6wuK2KB z&L{qG?@SBB%1?HLjm*4nZ=NtoK*<*0;qST)W_GHp6RRVV&y+V%^oX6ld`%+YmG z=)9?<>DH%g>$M5-W{YbQ8r3WVcj8B-AW^!NQO!YR17Sq;U)$5$6ebP%{LfY6busJT z9>QnNRxud7+(JJ{$V*;%Yb}#O$qsV*-Cq?{9rX0tZE$XB&FKStUYX|N6ZGNZ0qFu|j1Gb@)|Lh%JGX`A0DO!LYBF!foIgLd zGDs(np|EWnsLLO+7Yp#vzL7~$WsRu#sorE~Ae><<-KQiYk1uX;QInm%|7<*@*hOUV z#aPsy7UP7eATU+9B5OU;Mm?sMt(<{oRoS;IA;4um_J`lkk<5X?3)N?&1=rcNd9m}0 zs?P>EHCJA}IJ1;(?6r{n*4M1s^pHZkalBRb-WZz4Q9B(;MsA__Yq7!v0x}wC@MM|EwN(W)T zVwVmsqWswKnA5oj`!5k70yqv#MG1MFA8mPo!`uBfeHqo@ZBrZrL7s z{AlQ}^_XYj`}MjDr<=JbGtT;!vxZ*Pr&FbjVDe+fNPSzLFtz`gs2L_5k$anAp1?>? zT=gvKi|0{f0k^)3W@4#vxtJysLzrlTf-bERetUemV~^5vKkFxk{FSn(PoZoJ4IbL4 z$T3_`i|#3(mi`R3W$(bkt|xr1GA|Bl!u)elKUR;MzFX)}wrKWLsUg!m{z&Uhelkr)GnMXD8y0^|Wjz?zFC7lJJYvbylG?gWdy-LWF5t(1i10G<4^~aaGE?y{n-^;tuh&fwWZ0Qr zG5o3DrR0bEuIK?wL=%(BZ`xyn2NVrQUp0rr^wyhwtNSADq-FiTE4EML)mxl>>C^Th z$HY4BO-t}6W*hGm)@Pz(b)^P56>LwjrhW4N&}_H4okBSfN5w#u-wb8Ud-Z$+WnZA3 zBW8f2Mnvtam$a*d)C4H@>x^aN?gL+{EQ* zJkos$E!~=Ch0Is`mSZwbQ=w}dH^OhR^neU1cg#b-XCpPo+uVzySzrMgtSz@mbXXi<`cHzJ%lC4V1m7ZZsNRkD=LHTTd!cEw@O=4oZimpg1X*84R zdNj=9{P0qaVqRd#Xj7!BnxdAR3We{KkUi0pjF^y8_aL z0Zh8~!P=NoKNHF^+0D_f?H|uEvGs9Hq-9+G8Y?QM8DT0#L}3AwzIVkqZq4b*!|JPF z2^p7YkL(Q}jDa+9WV z!^k~x5-(HLTw3QcOSAw-r+?kI`D@EINEhdl2P8Tw+Q-isK-&T-xkZin^?aLGdTFMh z3ZV-g@;GEzfT8b_S~XKdskN?+P6~I7er9OeWcpHF7PpipP~&YtI*b8C&OP1ZI0i8Sehla(?y^9%Hvn?dJs^sfY2+fpj=r zwr_KJ%tgN>hu$+NWuvsYhs;LKQ4ji!Wj~>~+$l<4!a?2+$*xKQDrQ3q%XO; zXL*Fq{xAuu>8VrvqCDzJw$PmMIO_iS>PJ@w={xK5?aN=*4L9XvU0ubsGs6V!dSUNi zr7WYX9H72%+gku4$>8<-gVxdA@9OBCq3FA&w2=cc#@p3zxXq^WDI#q`Z>a<>FrGn} z80!_v6&~AR^{vQ1Ro^{Ot6-B$|KM3Zbbg_N6g8mr+qya1+1gg)4wAI`tqS&MsOVp|;(Lgs9H936JBVkt#^el%wtVqt}#%A&Mttxq!EZ#WW7Irs3D6@m{Cq_0k?o@%dnW<~KO9$R+}eD8WzfF$mG~GIXixtKzym#tRbK8szspf-IM}cW z7Y)03)p)Q~G@c;rnw>mhX2U8{mMP479%^FiUn6o@j*s3}v?ZD?%@W2M|3pye=_rwh z^C;x&j90i)B=;ZpN}LnYbi(wfO6QT;(aBDJ zVaC#lsn7Pcs+C%mBi>JeeB{1_8O}q&D;cA^gM?!l|IR;nToI&mwP{2b*$Szr$*9u+ ze_P>a4eh;V!l_jQrAaqt72n}zs6MBCDJ&nxxY-A>X6g0%@w=ZJ#4fkw7DXl$;I=M3)F9iV9hm9s1tr`Zt+v-vdT*R@b_u)TAeB zg6G`F7j)c1+ZYb^ZB?-l#NNdSHqHBj-SOt=mjh_K14YL-$nNA~`$!LE#{8CLPZpu` z8BDdl>7GNvtd7P}cR!C7#g{uIpQ^06xzuSlE7PgQXEiE4L@#wdx#gv z6iJh6Fs#jHZD!fBd4D(NwI)7$ryqg3t_ta=?)ULfdCa8SO`lKsG2y9|F24Id-}S%7 z87v*+l4n{no=}eP;;>@53yKMaCbXG78wg3Eq|a?OH$sJMIa0vmErS$;mz1tZgxG=_=hkpQ;mHfKH8i@=55WfFmiF*13^mNwUtpk^Dr1l3aePgKd`ZF|12b5b= zlmR@YUlWGyLx9WCl-qAHq4A2gLXdNzzOh2O-WC-C`i=n>VTn$IiDYwLK0&My@$@h1&yXD-)G^$ z{QimQJ3+pgZ|Cp33HY-Rv;BxMs;^63J7F&74tmw6-M_nDk5cNKj>3g~;eY5)E zYHZ7ydHSkGzH67tNm4fGXi2nFxhg0Pbdq9pqkZ|2q?;g9&}Jm5!_aPSHpwafSjFy~ z2>h^ILwfz$Q0RO10Z)n;(*4NCTr-2V;|+t^ru{M8;Bk>tTeQCW)Ud{#WM4366dS@~ zf0wSN_0%w8<_~`+0&?${2zP&#eXT6dd(Sw>x0wKrV75Q|prC`y{O6PKBlzXVLp94D z`jDlr8Igxqz=X?jFAco>hFP&D49DlZrL!1ftH%B7o&A84Gk{kAnWW!^^rq{T2Z2N2 z`0a!lDk(dh*{jAuM-{@;r*z+sR`a1WyhAN%_as{lqoBoUerXP+L4$q)ZEzF5?Kj*B zJj6skLefbIB_?T;gCxrLoe%CWI^&AB+??*bB{HPU-p;I+>n?V+U+svB-X+3@q3 zk70PXU_M_hmJnkbK-VU_pUk)V3e2BKoDnY{pUw&PYO6#9FGgO7 zG|pArrH4DT89cM zhxaPMyoILKfcT{V>$1r7dtzFL*7^>Cp9E{69&0OI?U1iE3U#$Bt1Vr8ujl7mV$E)8 zt$R9+9bV**Wbrz*aAcLvw(kbUH@m=?nL4MwJ*|{+--Br8;iy+=oX_=HzRRe6HrIw! z5ZOyUZctX(Y3ysx!EY!$fdbVlExIx#aEGmOpOms+f@i@`S(>j_%3g~%#Vli;)e}km zb+7E+c)RH--C|4NPP7oLpA9-l{gRKl^W$vz?;jzl_Oc)hH{7S-uv$KA{ZVO)_~t(R zUB_;4y^>v@kJ84=vsiyorDW4t`?=-{rBJQdN?gXZYP$;Qe)}7IvgLU0uVB3xf$l3P*$eMHdDB#Ver6!%lb%ME}ZmQS@=xCc(Vj26_svay7(2`lk zMkiv?nhM~ZV1DyYfwwn*R>u=CgJ$<#8PW$kU|N)%e-#4r>q)_7DFf_#_w7LMN2KZM zJ+(&-TGCbEHyEUe-cZ?g{VlV^xYS$h#PyGy&l&sd^g%NqoCJXXQOl)}h#+7%^5M_N zdMS$+NDn2MblnnBi3di{r5zThyhocq9oUpF+59#V zS)-Bm$n{X$98;tVLrul(vjh@+E$^bn*fyVrsuo*|&))TM-$eFTwQCWKaR6c@?M9GC z{~lYjD<%?#Z&yFZ?Lnx7TeD*i^Wy+@mVJjQpTtPX-A*i`jOl+#wp*dW zF**95pJgJ<@+bA&JnVUEzD*q9)b#>QsDq|w(RD}V_BlhXiB&XD9Iu}|cuHYK45ces zdW9#G=C8S}3F527xbPU=>ij}~2ha>3gK9)C=!$tp)K?j1j;{K&MGZCtNz0aeP+-|l zgvU;l^`nr}4*afGvN^*=3;bk9Ew+E}A*~R$cg-j~F$lDYddHT@JdKJvlHuJV^;W6% zq-K3RH`+fD%C3N3YE0e>Q>yHq=d@rb@Jxx&4`;9wE4l%yU zpmUU*XIdQL`DZqhAb4l2UsQXod?F;ur-VjE`{f*U@J?J!DdHrz`SN(bP;1f z`JMXJuq`H?PQ|&SfUWBL0ONqpK9X(cJd9o_RGc6o#9!h1RoQPeTDfZMcG+_8U&LB# z=SQ8nRe+Q>JIFVW|6~|PJ^giCbPW)4U!2rO9x&A6UpCb;Atac}F!!CJb|;2-puIz* zbx6IvNBLA6R@ddicJb+4)Q5JE0ZivRw#;!parC8*fDRi4d;3bh;a15Q=T=1eb+)7@ zin)P9es>6_>erm&P0YJ9XZUtg_23QvZ|tx?!SqJ@J9G_c_ydrP7fh6oJX~s(wn=TH ze5y%9{MjAf5 zy8h|vRc1WPWI2_aWhYs)^u95VEPYJS32xrMt-bsdhxk|el+!FJXI9v4T z<-)j~h>nM;m2zrB5ov03DOOXKZ|dl72Q0l*QqWX2Im3!F+ThurR&u4i8qMj_3;)PD zTOo2+3Qp=V+4e2epsI&Eri^3v&jHl0BaV`0M_5%GtU?-Cgt-WSPchXyH_ZK~{PqUR zzYw6)%bTG5=}?FyQ4qR8#(#~;#paMLniV)>u2yN}b*nP;ZB-drDTM200`GFWv!P2?emrgzb30O{{l%e{IR$$ESsFV+e0*dqM^;7LgHQnbKFo z%6NKtt22zl2^|y)o^7K?Dx{i5-T(~B?YkJ`p7vTn)LLky5*$b zF@B_4o|y{yCjzPXYVo9e(#iKqe-P1>PwRE0`SG?$#<`PgHD#h5Us7gdH0E(GXn}?) z2F3ClO{8NOv6y`Nal$oP$g{u~#au_s4L`-(BZsVM_yvd81E%jziX{K2EwNOZYQ1Z7jBz=i+>FJ811;GOnJqwMMt2$o`7XP81w(;$p4 z;zC;yJ6QAdC{=_jRX7vFg`Enpm#F=|td_+TgFLCBSr)UuT_I^8C zV^P`ccE|G@WnfrbM~@IDHYpr?lSNVJlJjnU2g&2Jgw@f6THwLdt^qxnRjQ$yzb#dWVzqe*Cw}(i3N) z8;euMUkc((5JZdwd_ZJ}Cz+RrwZ{~6Ar{lokA%D%9q0U;FRL=^EA2C{E@jdVDRdIs-=wCs&uTv| zutr6k$3K#3vV>#J((fk?Ft+Vn%NSHMth9F7eJ<8{ND?n+_F5PCI z4edFm3I>{+AY*Ud2xnr}!Ij}b-c}@BZ05ab_WaaPkUnJcq%@e#__f+ZoOc|fNskw4YwL9$}f5L{C z^nA6kLxITs2^c;}eDiZRP8tY2MycQf2I_h5Vr`WLa@_b|XPyeP#T&2$n=H@4&^;l& zNKs(YYT$^cR8Gi?|Iw=7ofTl-`Puosd>ZKRD~|Z_#&2@)a3zfnn;;)`YNw4_(o(@O z;6Nh9H%xJ)N#3PLb)T;6oXZb)gK8}{t*NcZDTLg)# z8?~cgFd(WVer3yP?obMAd{A(qh;@ty5iuu7AuBlVUieW(`ex_K@1)k^#~Yn!H_=+d zMCa5IJ}ayKW*`2!u;#*vExoCk2Fn3siK$|$V{B?gcd_bcEsNTxX-AL%YK-ZVFjF{J z^(o!TH(XT|S5UDm1PoY+c7+Q9057xvter0D4Im`i=&Ev855AA5{mdLP_@R#cnI`8J z{cq~=z=F+5HvKQ9u1b`MsuQ5A99#$;bP?b9xY0aCleC5I@JNO>+w8>coN^Bl5L)h$ zsJuA3s2Oa9ysY<4dF+GNL(+1g)WCW46#?^gBh%{?PPJu(r@u!s?GH~ams)6d?H@;u z2-$V!%CO;INpe$t_OMTA-s*=>Ztk1>qeYGJCl=x)cIfq;rr5o*GthIBTf2JAM zXY+4QQ{Cf@&?~OfCu03*2C#2ZTJa!CImRKYbMu$!0~Mn0n5~ix7lrKV>6atz<0R?r zoHaWdewg2wvA5r~y9uwdxlhdY76q;IXN;GT@m3MD@v&y*F$ibHUObS@%A&Uu&jr8D zOPwZ{+Z8&Smhix-%1SSqIXl0)s99xTFEy$%7G01eCvUIyJ{J!s>o-1?oYfChB!d?R zqi0-!qw%4k_hF)OxrRw>Q=;fhZencco`<}jr_?tgGzT<4BquC#7IBoGM!}b0Y^TFh ztJ=&ReDbT!Y(1U+*wBFJU0^kfBTeprd7NenV-)yO$^2t5-v_1w^uf#5r@c^R`=$zF z4}Bx_M&A``l-@J5qFITvo6ZQW=C@29+lY>Ts5A_NJd1}zH{NUOxg-5K9VMbyuX}cG zv*GBq<5cW&hZ3D@x1E{0n48LzKev?L|FYNrcJ>NgU zFVJt}^|#+5zsH78b#h>*f37sI^50~0%jRB8%xdB4e!_M6Xu@aH)HFn}JFZSH1y1Ic zt(<e(H_aM-Gnuv!~UKpdE^f`qF#Pps=6hbM^`r z6csf=$pEf3js3}?+{s39Sqg2tqsj9@wrI;DGxykI!SdnUmvxzwv0-I`^v|QVii-A% z>+28dI3#`s=d~VFmhXw}b|E9Fxl3Xbw!PG4&KsURP88zW1S7UYUmH=}fO-jXhd>On z#+42Sox4f#PYBUZxGhX^Dp1bOTK%L--FLrf(OObN$kP6TZ}*`6S3jS9C#^9EgfNYUJ?FmZI2Y-^zNHtv|wQ?y2LgMYG{ahMK#VZkl)&K$c zx8t%%!0Ox=UEg^nzOsz1t02_3w9;00TpK>2S>_~eR zv6xSNTn80wk5{C2dH2et@e<#^y@CND5Bb>X&!qL@I7?V|-}p@*eNfXxn%Lxk68!Jz%FJd7K5Lt>Dt=@BK$ z(FU8hRd++1J@Tok&Ot7gg+#R+%wm06MPtJEn>Xy#`Wws2y%N#j-xj?xCp0W%{h5J< z)##qvul7}(F6tfqAm5}|)J16@?90fV?9^lC;B30kt<{m-mWCzfU)_306=*mEdLt!D zYo(jq``NJ#VFw6qR3s3fN0RqUQ14fGLFIO?6`cXakMLyZe7(EEFv_(5Up&Q`R-Eq7 z@07cSu&+qvbS`tNDpN4RyvQ8!r-FY4#dy8zRDb9^Ap3qO-+Z029#z^QjNTmh+uxTW zALh{49a%|K*>Dqw6k52Hw;pa!4gXr%!aT39j1GDl{k?7%-{16*w8?tqMWjNfGdt&e zu1Rmh6Q=}z${sM@=y`1!%g4FbAf5NxZsyl!NZl&Qg5AKZv7 zN&opcTzl6%pf56$evN(q%ycI~K)zl?z3w{dISI~3s5!0)nZc(k^fIxuA%QLegkKnm zb%jI-oBZ!SLK1o!y6D9u9wO7HJRK@EAKc*sPBvbDv%sYP%3w-i(mQVehqSkUZvQmk z80!9-k-~etH9ZLWK&tfX6T=F*TAhQTz>J9z3q%Fx8^3O+IK@gPL+^9eVUoSTX$c!hWYX*kMO(Y<-<@HAsEd&=5+my5 zOER%yNJ#7(XC^u)g~1s}&%8YC2z0-jNAkLBToHu=#qhLt|2p#(_*q`Z;s;j)FCrRv zF}>P1E2^AR1aJNU9|gD*dPCDz4^Vt@-yK`xX%A@UGfrBnz{!zFj*}~{aJnYA;S!-; zh1`?;Os9DjUA3&J{dL^2+L}cy6+PjH9-&&*2zzW&Ph7t8cq^9vT%T>7>CH;nc65iZ z$MuFbU}i)x*A>rSYo?aXx4G0ZE5c_>L{7JP1=l)U3qfcUlfI~bmQe@9pzB%p$Xnup zxZV{3D(`!#>L6Au|BlNo%(-f;kAc`Uq_JrYfX74+L4pRj+Yro~-UY-n??Vi)_lHvW z!ECrZ{aCEg`{uOFOLE!(0rXd%C z{GMV506PLZw*6O$y@4m2*%a?gZ)fN%Azy$rQ#t%=WWb|XoL+R!tw)#RoJqI5}64wN(Lc~UzU842r&mI z>+Y@O1+qbcUO?l~#|`3MOL17_5LgCH&4X4do8P*bHekd~seB6<+LhnOJkplhcmE#GPjZFS`|w0?lu%my$$MId)skSiGm zB;p74V(g;+TuzGEwRKX#WI>o^dj@bG9~Ddvh)hQx(+ec5cRg>s>dFhpE|&V#o1D{0 z2bi~9uP;LD(Bua4&5F#MHz+7DZs66-gBvsC)yL%OM;zJQ-*9X7=A#>5X_W+TM|T3P zRp4lD%B<}{PQW~_&aszER|-; z6L|RVxUgU1a}$unzx=sA#j%dsoBSs0akB2L9cjGzvPIo9^LhjG#-M;@TI-Yh4hIyf zBoFl65}t73l29qQy9@4ele4`}nqNT=l7ZYe#gp)m&I`y4UWq_V`Tzl=>FAx7SK(js z2sajJ8V6aM#hRdNMvDg$+6s@kfAHTpP!ZPr?fS9B=S7m;K-2DrMG^Jas((2JVDqcN ze+m_Awi5YBMDpUre=o}Yf)<*_l=m5r82$GWG{~O_(R6wAAFk0ORi#trk!>J+?|Jce z67u*G0sI6z6fVpcw7&l-#<6(;%#(Wm_jHx+e=l{C=Y)zA@SjD1{qlE+5>t+))J4q$v;5dyV==4%HNE>r@V1i&v?2M)6P-$m;Cm)w3AdjmFknzm;m^% zk0fXU$KI6FgGJk;e?PZ5(mxC>2pDY`16?slE{451y!7+`AKXwqs!_zz*1YGIDAkL1 zq%!H1LxWo)r8~&{dr{6I{*O%XTq@yuKep0g$vHP1ST31YL-RsP5&!ZMsWIV&%n0BS z5s?ijE`jjCuRoXEKL}DePM5gGvi{{Hb|XH1j7Gi^gHO}DtylJE>U(G8kXIjvQas9S zOBDXOv*e`Y%UE6HK;#|Lvp_t(3QPU_7Iz4&6tQIW&8py^TZF0o_tOv%px?c-R`6|s%RGTf79HV#R2XO&_+mlc z*C+Bl$x+Xs)Bdln@W2I~Y>gbfd^W!L?@a3o{_(m2b%cuUjpvc5h_l8l()2$c*ZAe| z-``d){P71W1RfkF@4Rn`8ol;BCA!Dhh6&AsI3&L6l%yG-=?fP9bNS1LkC$&Tm=puCepEyxVEX^v!UYes zlX6a24I9+}b!=yMr>lCuX*#2(z{A-ergwEWl}Zc98|(s7KFOI_`eXkTT--4}ypSz{ z*uXoWq?te|jXZnWr*-3XqI(}G*?h3I6yN&gaoC<>Vz1>Ou!vrhmGXDzk&3r}4u$mu zCKDWwQhvbpA$;oY3hA%F7N);xt%J88Ab8bbC120g=DnmxDs2m0Q5Kto>o(TE)*mr3MCfrlYTna%^^a8nJ)nh^Z z&F-&)Jfd1^yQ%t4}*Ap-6)Q#JKD6*SxGX1g>#YO~Iu1K)9|D&qfK-1ZZ!2LA1 zhUJLTq@f+Kyjjm?UqHmg{LGOoa$4NelI$2``#eya-AQK?{yV?H%$fi|O@&Ykb^blB za-dgS;M}k0@N}xsn`d?)$(8>1T*ifckP<_Kdm!OEsQK^xm`otpU^124=KU8({QW2a zo5C+D{o;QSDf}r2E#Xh~YBc_R@TJ>DLD*;)?NjzD`RA0$fp#N~E~*Z&=Us%P%l86>2Jh(45fc?z}kP_%vVqU_f^D-AH!X7``5&OY47xq`}bgN zmEHqj$&8(9DcfLq`YfCNGl**^;l61-v&XQYXUbf*O`6y|^5D-@PDWg*$_ zqD-R^9T5Kwg7F6sqWNdc2RlW0kPSLN3;z4F{2_onwJjip3ln$U;8Al7fKyXxeZj1H zE+Nn%TZJ0{&Zf4C6w1OrL9i?GC(M_jQP+n9k1W8Tm`9k+BOan#_OU+dD17dTHt`Y@ zRximAZ%|Vh5zoL?6YCfkY_U_^xEIml;983M+WlAe$HyMu4^&RG{`sxMyd}hh5o15* z|0c>wDU}L`FAi&BNh?1-z9yBcVdGP51 z3@h&kA@^f{K<{~4x@(o~!)rjw2`q@Dfetb-hGKl~yb2E})nhgd^+VMLCSZ4Mh*{75 z#sf?B%;iQ_;ZzxDf){7#h3v0x&i4{%mDAW4+F?3OoRUD)Q32uNGq9x^1zPFWpkx~U z&|{PJ_pw)zl^~8TdpyiqqwME1lQ+_SY9k$@chv}1DB=rS4U>3;2TJ@Jqc8W(7I;I8 zMkX@9;9&P(pqD0BfYQ@c5<3~TK2>mJYn8nu>n?RRIT*ORy(|LQ^aS45F9u>L;5sy& z00C%sri#wzW~X54Q{(?06n9iu!^CC81kKuof@Q^AZa+sTj|cNxa}#QR}hue^#Hu^KZ&kAJz`4Y8xQ&UhRA5`SnE&V5$2D1LWzSx z57OH9b}`6CrF`3;6O`BU^|3%H+Xe`TXnoaUKwIZp-Y)q26|u-+Mi^6Uu`=$)WXZ71 z>Ybw95`i?9gt6Zp&m%z$=&>k+qRLI1TYTN_qd0t5^U*xqi#PoHyZ#ML65E~1BRxcV zl;T}y@Pkh|5@Q%NX+2j$@GWRM{bAuc6aMAx(?d+L_+8e+nb&;xEBdTQvVjJ72`(t<}$GSKL ziOXZn`Wrii{B`ke;HBI8_t( zsxUHr8Q!)8&|N14^+cO!eG=R8qDO)YnJGVt$g(hU=65DnR#C|Z5%R~$hGBjRNt1^@ zZh0a9<=`T;NP*<5g$3SGYMu30+@9wz9mU@K_D#dA9oFW%Kbc z3!Kh(wdqQFj+iqQoH$z*F@i_y_A z2!_!De!0_M?oE%dM5e{lsSd^ovpX$_NeV> zIM>&(_wRw|Ono$uk@x;36(6$Ge7)a1)7Gz0-+xOcr$`vHuRy0=2>}_G{GAXq{E78= zK0qKBo&%wsr)!j7WniOTFErLHDEfP1rekJ$swKD4`YgB+G%Q^Nk6x#vr?R#l3g9d3 zMb&4yI60@h`Zvne2lzLEqmZih^_-5a6wGS0=so@T69;arQs|W#P(7i!2Kqoa(LGCk z56?;syoX1N;KRmVbFHDX$+~|3xNNs$|9*R~vA;91yxy|&U>xE}%3zhjH0Ef-%UYSb$9ucGb|y z`@*cxTX*U6i$!hWw7-WsDCFJXf#r}GNb+m?cv%b^xn*QvJUL8|C0y>&6a9SaIk+@Lq4jU)N9gr zBSyPgB1H=dZiO;!{{=owSOR#=XhER3<8%6hPeqqr>?NXw6K$ScY^S}S? zA@WOJbeZORreIy>HKxpCMo;bBy?qOjhEUmnz ze=`;{q<~~2Px;`u`@2hHn_M80uLYP{>@I_c+-RX)8-vLaCzQQBAg^%m zql=5-fYYe_>9Y4zeN7@eorI9<%tW?cq*!J^pB^PJMDDLm)oObC<#6yR43I zGpb$^0SSo`^pzA5r$u--A-ChAP-WNJf-ks8!k>Q#u{BF1cvD^^C`j1E6LV3-!MWA_ z6CeGjF|DUdpP5QSERti{S;}2D6o~kp$Uzn!^)p|YxRgzAHv9pq2VbP#>V5qMH8^3> z`&1c3>g;{-@D=o^KEh3gK8emR7Tm0eH}jEdo?gEViSE2Pk(F%8->B&3sI$RN#eaGDG~p z$1;NdDezi50VT)%XqfW70o>i8G`$bI}hO#x|L7Yz>H$K*A=93AFU&*gU5o149| zBI7pSMS+*ErT?p7)Zi(l+P`Tc=>cQK7HshplR5B5vPV}@)J&o0rjE&rn zRo?GTN#;h6{#TtyNVI%NVb3mp{n&N?M<^?RYFWE02lN;wzUi`g0++4zT-33M zFY>Re2-RvDJx=pc`+6eqElYNQsL?iX|BOq4XV>UR@vlb+r_YH+qgnxc%P)^^Ai(k= z7!hZ~Sty@r(Q}U_4Hy#^=Y@&&f;g)x8%2_<{Y~e6eJ`2cAMxcL#IX=oX{F^hcwwJ^ zFGL*Nh7OSHN@uL@&s05Tyo{RpsKD_=fxo0=&6M@`e<)=coQwx z!+Cunv?my(xIrc$Db;FlvE+aOnVSsQc=={MAI5N0g(zeYKSqN~{~!x-3;2zkg+MiF za}eh6zd92M4YrI3F+~D2mk|zt|0n4bh{E;FMO2tr;|PLp_hX6>3DD%+b0k-g#XmSb zNNT(}oNtK3pn^q&&!;SJgk{tlUB6!r!q_fryZ;0_E8ktaiuJ23JYjp~KpttC2GK+> z#9-Fj#tG)l>CO9J_f!qu9xBEZkX==g{_C7Xu{5&t zvxg!3zEx!3Q(5^dMS!<#0 z-+nB--yFIVx~aN!yZ?38#<_w0!tBn4efa1LUDI8z3&*90aT%&()D~yhd2e;a^g6Tg z$~GnsT%9Wc}PY&Tk4mqyk<@7%uD7HUmZi7Y~G=*Cq zGC-#vr^E}FDCt6@pkO1a<2a-cYLn<|^DNo4k!=}hxkooefEcz>`nUkWsQ zOTog4dnn28C`wnN>hfE$qYV^aJo217r+Gt`@uxvRzcyM|^R-L=H9%XyQ2T4j-pXFY zEIXu0yOqd16D2s~n(Ga|Z8$gAG~D8zeg>3-XGVHtF5^q_VguY#&Jo36IN_qtm*)?Sgkc@78y>=NYa`1I zA`TISWk%+(c#XU*zZoLR^ve2mLG5&kP3P37M86QE)yeybN0o027!Y!Eat|#z9`GxM zU82f3TR{$UG9V{l218XMYH;It(1}z3l=*GTN?xAfFra{`v(-YUl%w^4U?~M8c-$6j z*&(aMc_0U!Z}n}%oU8wkN>_6-Ua;D;d(00+M!EY@;KtxxwA{9A6C&U90aCK$6DdC@cZ0W4S zwu($)npl`7>Jp+`absz0taClJw)}WEUbHxCE-M&BBU@D?O900omo7RSIP+)%W90iqIJJH|ARu8kYhlT8^Nju5P`|9H^pw zpgAh|`9v5a24zJDz@@J~RZZwywVA1vat@_{=fcorm0PR%{HZ)_M}pmhZdboNciL#0 zlnz|5lE3-|qa3OGp*#cqo)I^;Bj?(Bk?rn6PLYz<(RDY_mEA4@JdpbdRIEy-OeVUR z<>xrZptSib(_8|-`w8w-OjqAWC<^~JIuSP7-wn^_z#^JouH2-p zHauUZ@c`&b^I@C@Tux#GGENT>1f2lRbr%K-Eeo%^E@w)7+^cAAbo$B_Mq?#o>XZ7x zvDUfySgot5I8bt_m?iM*#C=PKrVvNigyA*&uz=7bJ0rWmp6a|5{auh}LX`Rrcqflc zIsb)i>Txp@#2xKHLz+q-%20B|PbF;qS!e+}M{Z%$OJZknwfAtp#(>NYFqg_tttOdD zUkhlWqLptL#a^Rl$OPtsQVa{Hc62ewF|d)4z!}D z-JXo@Fu$++p{3j`+LK*1^!PMvmE?QeLd|J@cIv(31xMZ*FLRceDKk034Ifgw3Y-KVcw$HX?ZT5EERDj|{QBTm9gs!+zzu82DgXGsCnY{!ymGT>%jse$UGx5y5N z2+hXMp87=v+C%y}3t_R}Hmt3vN3`Sk7fA**=Hm%Jn#HB)aXmUrWHfZ=fg2Oq>p9#F z5@}Fz@RVcRl~4l~4vJ|CWr6-aN8!96~?^ zGIL;US1;Xk?>n~=Gy2ZFNj8}LDZH$bC!qjlQwC))-KTxx0aXf126h$ zW8<}$!-qP`83XqBO+_8N9;f@^n>yJB8Pt>P89wM{)D*GoOH-i-gQ8a}hMx&?w6Jv3 zskpsBDaU&jt(Ro=!vUz~8VD}vP&6e4zDVxwuFtwWWNchTm}c!n8DI_ZAkDI|Ca{

}xfA{Qn*g^@k;iHk*gBWEU*|CV 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 diff --git a/status/71/images/registration.png b/status/71/images/registration.png deleted file mode 100644 index e3eca23c376ec8925232b36534df056d47be4046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25264 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�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 P&jxZ*$}bBg;J*I{tN3XE diff --git a/status/71/push-notification-server.md b/status/71/push-notification-server.md deleted file mode 100644 index 11720c5cd..000000000 --- a/status/71/push-notification-server.md +++ /dev/null @@ -1,571 +0,0 @@ ---- -title: 71/STATUS-PUSH-NOTIFICATION-SERVER -name: Push Notification Server -status: draft -category: Standards Track -description: A set of methods to allow Status clients to use push notification services in mobile environments. -editor: Jimmy Debe <jimmy@status.im> -contributors: - - Andrea Maria Piana <andreap@status.im> ---- -- Status: draft -- Category: Standards Track -- Editor: Jimmy Debe <jimmy@status.im> -- Contributors: - - Andrea Maria Piana <andreap@status.im> - - -## Abstract -A push notification server implementation for IOS devices and Android devices. -This specification provides a set of methods that allow clients to use push notification services in mobile environments. - -## Background -Push notification for iOS and Android devices can only be implemented by relying on -[APN](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW1), -Apple Push Notification, service for iOS or -[Firebase](https://firebase.google.com/) for Android. - -For some Android devices, foreground services are restricted, requiring a user to grant authorization to applications to use foreground notifications. -Apple iOS devices restrict notifications to a few internal functions that every application can not use. -Applications on iOS can request execution time when they are in the background. This has a limited set of use cases for example, -it will not schedule any time if the application was closed with force quit. -Requesting execution time is not responsive enough to implement a push notification system. -Status provides a set of methods to acheive push notification services. - -Since this can not be safely implemented in a privacy-preserving manner, clients need to be given an option to opt-in to receive and send push notifications. -They are disabled by default. - -## Specification -The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [2119](https://www.ietf.org/rfc/rfc2119.txt). - -### Definitions - -| Terminology | Description | -| --------------- | --------- | -| client | A node that implements the Status specifications. | -| user | The owner of a device that runs a client. | -| server | A service that performs push notifications. | -| Waku-Store | A Waku node that decides to provide functionality to store messages permanently and deliver the messages to requesting clients. As described in [13/WAKU-STORE](../../waku/standards/core/13/store) specification.| - - -### Server Components - -| Components | Description | -| --------------- | --------- | -| gorush Instance | Only used by push notification servers and MUST be publicly available.| -| Push Notification Server | Used by clients to register for receiving and sending notifications. | -| Registering Client | A client that wants to receive push notifications. | -| Sending Client | A client that wants to send push notifications. | - - -### Requirements: - -The party releasing the app MUST possess a certificate for the Apple Push Notification service and it MUST run a -[gorush](https://github.com/appleboy/gorush) publicly accessible server for sending the actual notification. -The party releasing the app MUST run its own [gorush](https://github.com/appleboy/gorush). - -### Push Notification Server Flow -#### Registration Process: - -![registration](./images/registration.png) - -#### Sending and Receiving Notification Process: - -![notification](./images/notification.png) - - -### Registering Client -Registering a client with a push notification service. - -- A client MAY register with one or more push notification services in order to increase availability. - -- A client SHOULD make sure that all the notification services they registered with have the same information about their tokens. - -- A `PNR message` (Push Notification Registration) MUST be sent to the -[partitioned topic](../../waku/standards/application/54/x3dh-sessions) for the public key of the node, encrypted with this key. - -- The message MUST be wrapped in a [`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_REGISTRATION`. - -- The marshaled protobuf payload MUST also be encrypted with AES-GCM using the Diffie–Hellman key generated from the client and server identity. -This is done in order to ensure that the extracted key from the signature will be considered invalid if it can’t decrypt the payload. - -The content of the message MUST contain the following [protobuf record](https://developers.google.com/protocol-buffers/): - -```protobuf -message PushNotificationRegistration { - enum TokenType { - UNKNOWN_TOKEN_TYPE = 0; - APN_TOKEN = 1; - FIREBASE_TOKEN = 2; - } - TokenType token_type = 1; - string device_token = 2; - string installation_id = 3; - string access_token = 4; - bool enabled = 5; - uint64 version = 6; - repeated bytes allowed_key_list = 7; - repeated bytes blocked_chat_list = 8; - bool unregister = 9; - bytes grant = 10; - bool allow_from_contacts_only = 11; - string apn_topic = 12; - bool block_mentions = 13; - repeated bytes allowed_mentions_chat_list = 14; -} -``` - -A push notification server will handle the message according to the following rules: -- it MUST extract the public key of the sender from the signature and verify that the payload can be decrypted successfully. - -- it MUST verify that `token_type` is supported. - -- it MUST verify that `device_token` is non empty. - -- it MUST verify that `installation_id` is non empty. - -- it MUST verify that `version` is non-zero and greater than the currently stored version for the public key and `installation_id` of the sender, if any. - -- it MUST verify that `grant` is non empty and according to the Grant Server specs. - -- it MUST verify that `access_token` is a valid uuid. - -- it MUST verify that `apn_topic` is set if token_type is APN_TOKEN. - -- The message MUST be wrapped in a [`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_REGISTRATION_RESPONSE`. - -The payload of the response is: - -```protobuf -message PushNotificationRegistrationResponse { - bool success = 1; - ErrorType error = 2; - bytes request_id = 3; - - enum ErrorType { - UNKNOWN_ERROR_TYPE = 0; - MALFORMED_MESSAGE = 1; - VERSION_MISMATCH = 2; - UNSUPPORTED_TOKEN_TYPE = 3; - INTERNAL_ERROR = 4; - } -} - -``` - -A client SHOULD listen for a response sent on the [partitioned topic](../../waku/standards/application/54/x3dh-sessions) that the key used to register. -If success is true the client has registered successfully. - -If `success` is `false`: - > If `MALFORMED_MESSAGE` is returned, the request SHOULD NOT be retried without ensuring that it is correctly formed. - > If `INTERNAL_ERROR` is returned, the request MAY be retried, but the client MUST backoff exponentially. - -#### Handle Errors: -- If the message can’t be decrypted, the message MUST be discarded. - -- If `token_type` is not supported, a response MUST be sent with `error` set to `UNSUPPORTED_TOKEN_TYPE`. - -- If `token`, `installation_id`, `device_tokens`, `version` are empty, a response MUST be sent with `error` set to `MALFORMED_MESSAGE`. - -- If the `version` is equal or less than the currently stored `version`, a response MUST be sent with `error` set to `VERSION_MISMATCH`. - -- If any other error occurs the `error` SHOULD be set to `INTERNAL_ERROR`. - -- If the response is successful `success` MUST be set to `true` otherwise a response MUST be sent with `success` set to `false`. - -- `request_id` SHOULD be set to the [`SHAKE-256`](https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.202.pdf) of the encrypted payload. - -- The response MUST be sent on the [partitioned topic](../../waku/standards/application/54/x3dh-sessions) of the sender and -MUST not be encrypted using the secure transport to facilitate the usage of ephemeral keys. - -- If no response is returned, the request SHOULD be considered failed and -MAY be retried with the same server or a different one, but clients -MUST exponentially backoff after each trial. - -## Push Notification Server -A node that handles receiving and sending push notifications for clients. - -### Query Topic: -On successful registration the server MUST be listening to the topic derived from: - > `0x` + HexEncode(Shake256(CompressedClientPublicKey)) - -Using the topic derivation algorithm described here and listen for client queries. - -#### Server Grant: -A client MUST authorize a push notification server to send them push notifications. -This is done by building a grant which is specific to a given client-server pair. -When receiving a grant, the server MUST validate that the signature matches the registering client. - -The grant is built as:<br /> -`Signature(Keccak256(CompressedPublicKeyOfClient . CompressedPublicKeyOfServer . AccessToken), PrivateKeyOfClient)` - -#### Unregistering with a Server: -- To unregister a client MUST send a `PushNotificationRegistration` request as described above with `unregister` set -to `true`, or removing their device information. -- The server MUST remove all data about this user if `unregistering` is `true`, apart from the `hash` of the public key and -the `version` of the last options, in order to make sure that old messages are not processed. -- A client MAY unregister from a server on explicit logout if multiple chat keys are used on a single device. - -#### Re-registering with a Server: -- A client SHOULD re-register with the node if the APN or FIREBASE token changes. -- When re-registering a client SHOULD ensure that it has the most up-to-date `PushNotificationRegistration` and -increment `version` if necessary. -- Once re-registered, a client SHOULD advertise the changes. -Changing options is handled the same as re-registering. - -#### Advertising a Server: -Each user registered with one or more push notification servers -SHOULD advertise periodically the push notification services they have registered with for each device they own. - -```protobuf -message PushNotificationQueryInfo { - string access_token = 1; - string installation_id = 2; - bytes public_key = 3; - repeated bytes allowed_user_list = 4; - bytes grant = 5; - uint64 version = 6; - bytes server_public_key = 7; -} - -message ContactCodeAdvertisement { - repeated PushNotificationQueryInfo push_notification_info = 1; -} - -``` - -#### Handle Advertisement Message: -- The message MUST be wrapped in a [`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_QUERY_INFO`. -- If no filtering is done based on public keys, the access token SHOULD be included in the advertisement. - Otherwise it SHOULD be left empty. -- This SHOULD be advertised on the [contact code topic](../../waku/standards/application/53/x3dh) and -SHOULD be coupled with normal contact-code advertisement. -- When a user register or re-register with a push notification service, their contact-code SHOULD be re-advertised. -- Multiple servers MAY be advertised for the same installation_id for redundancy reasons. - -#### Discovering a Server: -To discover a push notification service for a given user, their  -[contact code topic](../../waku/standards/application/53/x3dh) SHOULD be listened to. -A Waku-Store node can be queried for the specific topic to retrieve the most up-to-date contact code. - -#### Querying a Server: -If a token is not present in the latest advertisement for a user, the server SHOULD be queried directly. - -To query a server a message: - -```protobuf -message PushNotificationQuery { - repeated bytes public_keys = 1; -} - -``` - -#### Handle Query Message: -- The message MUST be wrapped in a [`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_QUERY`. -- it MUST be sent to the server on the topic derived from the hashed public key of the key we are querying, -[as described above](#query-topic). -- An ephemeral key SHOULD be used and SHOULD NOT be encrypted using the [secure transport](../../waku/standards/application/53/x3dh). - -If the server has information about the client a response MUST be sent: - -```protobuf -message PushNotificationQueryInfo { - string access_token = 1; - string installation_id = 2; - bytes public_key = 3; - repeated bytes allowed_user_list = 4; - bytes grant = 5; - uint64 version = 6; - bytes server_public_key = 7; -} - -message PushNotificationQueryResponse { - repeated PushNotificationQueryInfo info = 1; - bytes message_id = 2; - bool success = 3; -} - -``` - -#### Handle Query Response: -- A `PushNotificationQueryResponse` message MUST be wrapped in a -[`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_QUERY_RESPONSE`. -Otherwise a response MUST NOT be sent. - -- If `allowed_key_list` is not set `access_token` MUST be set and `allowed_key_list` MUST NOT be set. - -- If `allowed_key_list` is set `allowed_key_list` MUST be set and `access_token` MUST NOT be set. - -- If `access_token` is returned, the `access_token` SHOULD be used to send push notifications. - -- If `allowed_key_list` are returned, the client SHOULD decrypt each token by generating an `AES-GCM` symmetric key from the Diffie–Hellman between the target client and itself. -If AES decryption succeeds it will return a valid `uuid` which is what is used for access_token. -The token SHOULD be used to send push notifications. - -- The response MUST be sent on the [partitioned topic](../../waku/standards/application/54/x3dh-sessions) of the sender and -MUST NOT be encrypted using the [secure transport](../../waku/standards/application/53/x3dh) to facilitate the usage of ephemeral keys. - -- On receiving a response a client MUST verify `grant` to ensure that the server has been authorized to send push notification to a given client. - -### Sending Client -Sending a push notification - -- When sending a push notification, only the `installation_id` for the devices targeted by the message SHOULD be used. - -- If a message is for all the user devices, all the `installation_id` known to the client MAY be used. - -- The number of devices MAY be capped in order to reduce resource consumption. - -- At least 3 devices SHOULD be targeted, ordered by last activity. - -- For any device that a token is available, or that -a token is successfully queried, -a push notification message SHOULD be sent to the corresponding push notification server. - -```protobuf -message PushNotification { - string access_token = 1; - string chat_id = 2; - bytes public_key = 3; - string installation_id = 4; - bytes message = 5; - PushNotificationType type = 6; - enum PushNotificationType { - UNKNOWN_PUSH_NOTIFICATION_TYPE = 0; - MESSAGE = 1; - MENTION = 2; - } - bytes author = 7; -} - -message PushNotificationRequest { - repeated PushNotification requests = 1; - bytes message_id = 2; -} - -``` -#### Handle Notification Request: -- A `PushNotificationRequest` message MUST be wrapped in a -[`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_REQUEST`. - -- Where `message` is the encrypted payload of the message and `chat_id` is the `SHAKE-256` of the `chat_id`. -`message_id` is the id of the message `author` is the `SHAKE-256` of the public key of the sender. - -- If multiple server are available for a given push notification, only one notification MUST be sent. - -- If no response is received a client SHOULD wait at least 3 seconds, -after which the request MAY be retried against a different server. - -- This message SHOULD be sent using an ephemeral key. - -On receiving the message, the push notification server MUST validate the access token. -If the access token is valid, a notification MUST be sent to the -[gorush](https://github.com/appleboy/gorush) instance with the following data: - -```yaml -{ - "notifications": [ - { - "tokens": ["token_a", "token_b"], - "platform": 1, - "message": "You have a new message", - "data": { - "chat_id": chat_id, - "message": message, - "installation_ids": [installation_id_1, installation_id_2] - } - } - ] -} - -``` - -Where platform is 1 for iOS and 2 for Firebase, according to the [gorush documentation](https://github.com/appleboy/gorush). - -A server MUST return a response message: - -```protobuf -message PushNotificationReport { - bool success = 1; - ErrorType error = 2; - enum ErrorType { - UNKNOWN_ERROR_TYPE = 0; - WRONG_TOKEN = 1; - INTERNAL_ERROR = 2; - NOT_REGISTERED = 3; - } - bytes public_key = 3; - string installation_id = 4; -} - -``` - -```protobuf -message PushNotificationResponse { - bytes message_id = 1; - repeated PushNotificationReport reports = 2; -} - -``` - -Where `message_id` is the `message_id` sent by the client. - -#### Handle Notification Response: -- A `PushNotificationResponse` message MUST be wrapped in a [`ApplicationMetadataMessage`](../62/payloads) with type set to `PUSH_NOTIFICATION_RESPONSE`. - -- The response MUST be sent on the [partitioned topic](../../waku/standards/application/54/x3dh-sessions) of the sender and -MUST not be encrypted using the [secure transport](../../waku/standards/application/53/x3dh) to facilitate the usage of ephemeral keys. - -- If the request is accepted `success` MUST be set to `true`. Otherwise `success` MUST be set to `false`. - -- If `error` is `BAD_TOKEN` the client MAY query again the server for the token and retry the request. - -- If `error` is `INTERNAL_ERROR` the client MAY retry the request. - -### Protobuf Description - -#### PushNotificationRegistration: -`token_type`: the type of token. Currently supported is `APN_TOKEN` for Apple Push.<br /> -`device_token`: the actual push notification token sent by `Firebase` or `APN` and `FIREBASE_TOKEN` for firebase.<br /> -`installation_id`: the `installation_id` of the device.<br /> -`access_token`: the access token that will be given to clients to send push notifications.<br /> -`enabled`: whether the device wants to be sent push notifications.<br /> -`version`: a monotonically increasing number identifying the current `PushNotificationRegistration`. -Any time anything is changed in the record it MUST be increased by the client, otherwise the request will not be accepted.<br /> -`allowed_key_list`: a list of `access_token` encrypted with the AES key generated by Diffie–Hellman between the publisher and the -allowed contact.<br /> -`blocked_chat_list`: a list of `SHA2-256` hashes of chat ids. Any chat id in this list will not trigger a notification.<br /> -`unregister`: whether the account should be unregistered.<br /> -`grant`: the grant for this specific server.<br /> -`allow_from_contacts_only`: whether the client only wants push notifications from contacts.<br /> -`apn_topic`: the APN topic for the push notification.<br /> -`block_mentions`: whether the client does not want to be notified on mentions.<br /> -`allowed_mentions_chat_list`: a list of SHA2-256 hashes of chat ids where we want to receive mentions.<br /> - -DATA DISCLOSED -- Type of device owned by a given user. - -- The `FIREBASE` or `APN` push notification token, - -- Hash of the `chat_id` a user is not interested in for notifications, - -- The number of times a push notification record has been modified by the user, - -- The number of contacts a client has, in case `allowed_key_list` is set. - -#### PushNotificationRegistrationResponse: -`success`: whether the registration was successful<br /> -`error`: the error type, if any<br /> -`request_id`: the `SHAKE-256` hash of the `signature` of the request<br /> -`preferences`: the server stored preferences in case of an error<br /> - -#### ContactCodeAdvertisement: -`push_notification_info`: the information for each device advertised - -DATA DISCLOSED -- The chat key of the sender - -#### PushNotificationQuery: -`public_keys`: the `SHAKE-256` of the public keys the client is interested in - -DATA DISCLOSED -- The hash of the public keys the client is interested in - -#### PushNotificationQueryInfo: -`access_token`: the access token used to send a push notification<br /> -`installation_id`: the `installation_id` of the device associated with the `access_token`<br /> -`public_key`: the `SHAKE-256` of the public key associated with this `access_token` and `installation_id`.<br /> -`allowed_key_list`: a list of encrypted access tokens to be returned to the client in case there’s any filtering on public keys in place.<br /> -`grant`: the grant used to register with this server.<br /> -`version`: the version of the registration on the server.<br /> -`server_public_key`: the compressed public key of the server.<br /> - -#### PushNotificationQueryResponse: -`info`: a list of `PushNotificationQueryInfo`.<br /> -`message_id`: the message id of the `PushNotificationQueryInfo` the server is replying to.<br /> -`success`: whether the query was successful.<br /> - -#### PushNotification: -`access_token`: the access token used to send a push notification.<br /> -`chat_id`: the `SHAKE-256` of the `chat_id`.<br /> -`public_key`: the `SHAKE-256` of the compressed public key of the receiving client.<br /> -`installation_id`: the `installation_id` of the receiving client.<br /> -`message`: the encrypted message that is being notified on.<br /> -`type`: the type of the push notification, either `MESSAGE` or `MENTION`<br /> -`author`: the `SHAKE-256` of the public key of the sender - -Data disclosed -- The `SHAKE-256` hash of the `chat_id` the notification is to be sent for - -- The cypher text of the message - -- The `SHAKE-256` hash of the public key of the sender - -- The type of notification - -#### PushNotificationRequest: -`requests`: a list of PushNotification<br /> -`message_id`: the [Status message id](../62/payloads) - -Data disclosed -- The status `message_id` for which the notification is for - -#### PushNotificationResponse: -`message_id`: the `message_id` being notified on.<br /> -`reports`: a list of `PushNotificationReport` - -#### PushNotificationReport: -`success`: whether the push notification was successful.<br /> -`error`: the type of the error in case of failure.<br /> -`public_key`: the public key of the user being notified.<br /> -`installation_id`: the `installation_id` of the user being notified. - -### Anonymous Mode -In order to preserve privacy, the client MAY provide anonymous mode of operations to propagate information about the user. -A client in anonymous mode can register with the server using a key that is different from their chat key. -This will hide their real chat key. This public key is effectively a secret and -SHOULD only be disclosed to clients approved to notify a user. - -- A client MAY advertise the access token on the [contact-code topic](../../waku/standards/application/53/x3dh) of the key generated. - -- A client MAY share their public key contact updates in the [protobuf record](https://developers.google.com/protocol-buffers/). - -- A client receiving a push notification public key SHOULD listen to the contact code topic of the push notification public key for updates. - -The method described above effectively does not share the identity of the sender nor the receiver to the server, but -MAY result in missing push notifications as the propagation of the secret is left to the client. -This can be mitigated by [device syncing](../62/payloads), but not completely addressed. - -## Security/Privacy Considerations -If anonymous mode is not used, when registering with a push notification service a client will disclose: -- The devices that will receive notifications. - -- The chat key. - -A client MAY disclose: -- The hash of the `chat_id` they want to filter out. - -When running in anonymous mode, the client’s chat key is not disclosed. - -When querying a push notification server a client will disclose: -- That it is interested in sending push notification to another client, but -querying client’s chat key is not disclosed. - -When sending a push notification a client will disclose: -- The `shake-256` of the `chat_id`. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References -1. [PUSH-NOTIFICATION-SERVER, Initial Specification](https://github.com/status-im/specs/blob/master/docs/raw/push-notification-server) -2. [Push Notification, Apple Developer](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW1) -3. [Firebase](https://firebase.google.com) -4. [13/WAKU2-STORE](../../waku/standards/core/13/store) -5. [gorush](https://github.com/appleboy/gorush) -6. [54/WAKU2-X3DH-SESSIONS](../../waku/standards/application/54/x3dh-sessions) -7. [62/PAYLOAD](../62/payloads) -8. [SHAKE-256](https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.202.pdf) -9. [Protocol Buffers](https://developers.google.com/protocol-buffers) -10. [53/WAKU2-X3DH](../../waku/standards/application/53/x3dh) diff --git a/status/README.md b/status/README.md deleted file mode 100644 index 1a06f6b87..000000000 --- a/status/README.md +++ /dev/null @@ -1,5 +0,0 @@ - -# Status RFCs - -Status is a communitication tool providing privacy features for the user. -Specifcations can also be viewd at [Status](https://status.app/specs). diff --git a/status/raw/simple-scaling.md b/status/raw/simple-scaling.md deleted file mode 100644 index 04dfeb22f..000000000 --- a/status/raw/simple-scaling.md +++ /dev/null @@ -1,505 +0,0 @@ ---- - -title: 57/STATUS-Simple-Scaling -name: Status Simple Scaling -status: raw -category: Informational -description: Describes how to scale Status Communities and Status 1-to-1 chats using Waku v2 protocol and components. -editor: Daniel Kaiser <danielkaiser@status.im> -contributors: -- Alvaro Revuelta <alrevuelta@status.im> ---- -- Status: raw -- Category: Informational -- Editor: Daniel Kaiser <danielkaiser@status.im> -- Contributors: - - Alvaro Revuelta <alrevuelta@status.im> - - -## Abstract - -This document describes how to scale [56/STATUS-COMMUNITIES](../56/communities) as well as [55/STATUS-1TO1-CHAT](../55/1to1-chat) -using Waku v2 protocol and components. -It also adds a few new aspects, where more sophisticated components are not yet researched and evaluated. - -> *Note:* (Parts of) this RFC will be deprecated in the future as we continue research to scale specific components -in a way that aligns better with our principles of decentralization and protecting anonymity. -This document informs about scaling at the current stage of research and shows it is practically possible. -Practical feasibility is also a core goal for us. -We believe in incremental improvement, i.e. having a working decentralized scaling solution with trade-offs is better than a fully centralized solution. - -## Background and Motivation - -[56/STATUS-COMMUNITIES](../56/communities) as well as [55/STATUS-1TO1-CHAT](../55/1to1-chat) use Waku v2 protocols. -Both use Waku content topics (see [23/WAKU2-TOPICS](../../waku/informational/23/topics)) for content based filtering. - -Waku v2 currently has scaling limitations in two dimensions: - -1) Messages that are part of a specific content topic have to be disseminated in a single mesh network (i.e. pubsub topic). -This limits scaling the number of messages disseminated in a specific content topic, -and by extension, the number of active nodes that are part of this content topic. - -2) Scaling a large set of content topics requires distributing these over several mesh networks (which this document refers to as pubsub topic shards). - -This document focuses on the second scaling dimension. -With the scaling solutions discussed in this document, -each content topics can have a large set of active users, but still has to fit in a single pubsub mesh. - -> *Note:* While it is possible to use the same content topic name on several shards, -each node that is interested in this content topic has to be subscribed to all respective shards, which does not scale. -Splitting content topics in a more sophisticated and efficient way will be part of a future document. - -## Relay Shards - -Sharding the [11/WAKU2-RELAY](../../waku/standards/core/11/relay) network is an integral part of scaling the Status app. - -[51/WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding) specifies shards clusters, which are sets of `1024` shards (separate pubsub mesh networks). -Content topics specified by application protocols can be distributed over these shards. -The Status app protocols are assigned to shard cluster `16`, -as defined in [WAKU2-RELAY-STATIC-SHARD-ALLOC](https://github.com/waku-org/specs/blob/waku-RFC/informational/relay-static-shard-alloc). - -[WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding) specifies three sharding methods. -This document uses *static sharding*, which leaves the distribution of content topics to application protocols, -but takes care of shard discovery. - -The 1024 shards within the main Status shard cluster are allocated as follows. - -### Shard Allocation - -| shard index | usage | -| --- | --- | -| 0 - 15 | reserved | -| 16 - 127 | specific (large) communities | -| 128 - 767 | communities | -| 768 - 895 | 1:1 chat | -| 896 - 1023 | media and control msgs | - -Shard indices are mapped to pubsub topic names as follows (specified in [WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding)). - -`/waku/2/rs//` - -an example for the shard with index `18` in the Status shard cluster: - -`/waku/2/rs/16/18` - -In other words, the mesh network with the pubsub topic name `/waku/2/rs/16/18` carries messages associated with shard `18` in the Status shard cluster. - -#### Implementation Suggestion - -The Waku implementation should offer an interface that allows Status nodes to subscribe to Status specific content topics like - -``` -subscribe("/status/xyz", 16, 18) -``` - -The shard cluster index `16` can be kept in the Status app configuration, -so that Status nodes can simply use - -``` -subscribe("/status/xyz", 18) -``` - -which means: connect to the `"status/xyz"` content topic on shard `18` within the Status shard cluster. - -### Status Communities - -In order to associate a community with a shard, -the community description protobuf is extended by the field -`uint16 relay_shard_index = 15`: - -```protobuf - -syntax = "proto3"; - -message CommunityDescription { - // The Lamport timestamp of the message - uint64 clock = 1; - // A mapping of members in the community to their roles - map members = 2; - // The permissions of the Community - CommunityPermissions permissions = 3; - // The metadata of the Community - ChatIdentity identity = 5; - // A mapping of chats to their details - map chats = 6; - // A list of banned members - repeated string ban_list = 7; - // A mapping of categories to their details - map categories = 8; - // The admin settings of the Community - CommunityAdminSettings admin_settings = 10; - // If the community is encrypted - bool encrypted = 13; - // The list of tags - repeated string tags = 14; - // index of the community's shard within the Status shard cluster - uint16 relay_shard_index = 15 -} -``` - -> *Note*: Currently, Status app has allocated shared cluster `16` in [52/WAKU2-RELAY-STATIC-SHARD-ALLOC](https://github.com/waku-org/specs/blob/waku-RFC/informational/relay-static-shard-alloc). -Status app could allocate more shard clusters, for instance to establish a test net. -We could add the shard cluster index to the community description as well. -The recommendation for now is to keep it as a configuration option of the Status app. - -> *Note*: Once this RFC moves forward, the new community description protobuf fields should be mentioned in [56/STATUS-COMMUNITIES](../56/communities). - -Status communities can be mapped to shards in two ways: static, and owner-based. - -#### Static Mapping - -With static mapping, communities are assigned a specific shard index within the Status shard cluster. -This mapping is similar in nature to the shard cluster allocation in [WAKU2-RELAY-STATIC-SHARD-ALLOC](https://github.com/waku-org/specs/blob/waku-RFC/informational/relay-static-shard-alloc). -Shard indices allocated in that way are in the range `16 - 127`. -The Status CC community uses index `16` (not to confuse with shard cluster index `16`, which is the Status shard cluster). - -#### Owner Mapping - -> *Note*: This way of mapping will be specified post-MVP. - -Community owners can choose to map their communities to any shard within the index range `128 - 767`. - -### 1:1 Chat - -[55/STATUS-1TO1-CHAT](../55/1to1-chat) uses partitioned topics to map 1:1 chats to a set of 5000 content topics. -This document extends this mapping to 8192 content topics that are, in turn, mapped to 128 shards in the index range of `768 - 895`. - -``` -contentPartitionsNum = 8192 -contentPartition = mod(publicKey, contentPartitionsNum) -partitionContentTopic = "contact-discovery-" + contentPartition - -partitionContentTopic = keccak256(partitionContentTopic) - -shardNum = 128 -shardIndex = 768 + mod(publicKey, shardNum) - -``` - -## Infrastructure Nodes - -As described in [30/ADAPTIVE-NODES](../../waku/informational/30/adaptive-nodes), -Waku supports a continuum of node types with respect to available resources. -Infrastructure nodes are powerful nodes that have a high bandwidth connection and a high up-time. - -This document, which informs about simple ways of scaling Status over Waku, -assumes the presence of a set of such infrastructure nodes in each shard. -Infrastructure nodes are especially important for providing connectivity in the roll-out phase. - -Infrastructure nodes are not limited to Status fleets, or nodes run by community owners. -Anybody can run infrastructure nodes. - -### Statically-Mapped Communities - -Infrastructure nodes are provided by the community owner, or by members of the respective community. - -### Owner-Mapped Communities - -Infrastructure nodes are part of a subset of the shards in the range `128 - 767`. -Recommendations on choosing this subset will be added in a future version of this document. - -Status fleet nodes make up a part of these infrastructure nodes. - -### 1:1 chat - -Infrastructure nodes are part of a subset of the shards in the range `768 - 985` (similar to owner-mapped communities). -Recommendations on choosing this subset will be added in a future version of this document. - -Desktop clients can choose to only use filter and lightpush. - -> *Note*: Discussion: I'd suggest to set this as the default for the MVP. -The load on infrastructure nodes would not be higher, because they have to receive and relay each message anyways. -This comes as a trade-off to anonymity and decentralization, -but can significantly improve scaling. -We still have k-anonymity because several chat pairs are mapped into one content topic. -We could improve on this in the future, and research the applicability of PIR (private information retrieval) techniques in the future. - -## Infrastructure Shards - -Waku messages are typically relayed in larger mesh networks comprised of nodes with varying resource profiles (see [30/ADAPTIVE-NODES](../../waku/informational/30/adaptive-nodes). -To maximise scaling, relaying of specific message types can be dedicated to shards where only infrastructure nodes with very strong resource profiles relay messages. -This comes as a trade-off to decentralization. - -## Control Message Shards - -To get the maximum scaling for select large communities for the Status scaling MVP, -specific control messages that cause significant load (at a high user number) SHOULD be moved to a separate control message shard. -These control messages comprise: - -* community description -* membership update -* backup -* community request to join response -* sync profile picture - -The relay functionality of control messages shards SHOULD be provided by infrastructure nodes. -Desktop clients should use light protocols as the default for control message shards. -Strong Desktop clients MAY opt in to support the relay network. - -Each large community (in the index range of `16 - 127`) can get its dedicated control message shard (in the index range `896 - 1023`) if deemed necessary. -The Status CC community uses shard `896` as its control message shard. -This comes with trade-offs to decentralization and anonymity (see *Security Considerations* section). - -## Media Shards - -Similar to control messages, media-heavy communities should use separate media shards (in the index range `896 - 1023`) for disseminating messages with large media data. -The Status CC community uses shard `897` as its media shard. - -## Infrastructure-focused Community - -Large communities MAY choose to mainly rely on infrastructure nodes for *all* message transfers (not limited to control, and media messages). -Desktop clients of such communities should use light protocols as the default. -Strong Desktop clients MAY opt in to support the relay network. - -> *Note*: This is not planned for the MVP. - -## Light Protocols - -Light protocols may be used to save bandwidth, -at the (global) cost of not contributing to the network. -Using light protocols is RECOMMENDED for resource restricted nodes, -e.g. browsers, -and devices that (temporarily) have a low bandwidth connection or a connection with usage-based billing. - -Light protocols comprise - -* [19/WAKU2-LIGHTPUSH](../../waku/standards/core/19/lightpush) for sending messages -* [12/WAKU2-FILTER](../../waku/standards/core/12/filter) for requesting messages with specific attributes -* [WAKU2-PEER-EXCHANGE](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/peer-exchange/peer-exchange) for discovering peers - -## Waku Archive - -Archive nodes are Waku nodes that offer the Waku archive service via the Waku store protocol ([13/WAKU2-STORE](../../waku/standards/core/13/store)). -They are part of a set of shards and store all messages disseminated in these shards. -Nodes can request history messages via the [13/WAKU2-STORE](../../waku/standards/core/13/store). - -The store service is not limited to a Status fleet. -Anybody can run a Waku Archive node in the Status shards. - -> *Note*: There is no specification for discovering archive nodes associated with specific shards yet. -Nodes expect archive nodes to store all messages, regardless of shard association. - -The recommendation for the allocation of archive nodes to shards is similar to the -allocation of infrastructure nodes to shards described above. -In fact, the archive service can be offered by infrastructure nodes. - -## Discovery - -Shard discovery is covered by [WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding). -This allows the Status app to abstract from the discovery process and simply address shards by their index. - -### Libp2p Rendezvous and Circuit-Relay - -To make nodes behind restrictive NATs discoverable, -this document suggests using [libp2p rendezvous](https://github.com/libp2p/specs/blob/master/rendezvous/README). -Nodes can check whether they are behind a restrictive NAT using the [libp2p AutoNAT protocol](https://github.com/libp2p/specs/blob/master/autonat/README). - -> *Note:* The following will move into [WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding), or [33/WAKU2-DISCV5](../../waku/standards/core/33/discv5): -Nodes behind restrictive NATs SHOULD not announce their publicly unreachable address via [33/WAKU2-DISCV5](../../waku/standards/core/33/discv5) discovery. - -It is RECOMMENDED that nodes that are part of the relay network also act as rendezvous points. -This includes accepting register queries from peers, as well as answering rendezvous discover queries. -Nodes MAY opt-out of the rendezvous functionality. - -To allow nodes to initiate connections to peers behind restrictive NATs (after discovery via rendezvous), -it is RECOMMENDED that nodes that are part of the Waku relay network also offer -[libp2p circuit relay](https://github.com/libp2p/specs/blob/6634ca7abb2f955645243d48d1cd2fd02a8e8880/relay/circuit-v2) functionality. - -To minimize the load on circuit-relay nodes, nodes SHOULD - -1) make use of the [limiting](https://github.com/libp2p/specs/blob/6634ca7abb2f955645243d48d1cd2fd02a8e8880/relay/circuit-v2##reservation) -functionality offered by the libp2p circuit relay protocols, and -2) use [DCUtR](https://github.com/libp2p/specs/blob/master/relay/DCUtR) to upgrade to a direct connection. - -Nodes that do not announce themselves at all and only plan to use light protocols, -MAY use rendezvous discovery instead of or along-side [WAKU2-PEER-EXCHANGE](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/peer-exchange/peer-exchange). -For these nodes, rendezvous and [WAKU2-PEER-EXCHANGE](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/peer-exchange/peer-exchange) offer the same functionality, -but return node sets sampled in different ways. -Using both can help increasing connectivity. - -Nodes that are not behind restrictive NATs MAY register at rendezvous points, too; -this helps increasing discoverability, and by extension connectivity. -Such nodes SHOULD, however, not register at circuit relays. - -### Announcing Shard Participation - -Registering a namespace via [lib-p2p rendezvous](https://github.com/libp2p/specs/blob/master/rendezvous/README##interaction) -is done via a register query: - -``` -REGISTER{my-app, {QmA, AddrA}} -``` - -The app name, `my-app` contains the encoding of a single shard in string form: - -``` -"rs/"| to_string(<2-byte shard cluster index>) | "/" | to_string(<2-byte shard index>) -``` -The string conversion SHOULD remove leading zeros. - -> *Note:* Since the [ns](https://github.com/libp2p/specs/blob/master/rendezvous/README##protobuf) field is of type string, -a more efficient byte encoding is not utilized. - -Registering shard 2 in the Status shard cluster (with shard cluster index 16, see [WAKU2-RELAY-STATIC-SHARD-ALLOC](https://github.com/waku-org/specs/blob/waku-RFC/informational/relay-static-shard-alloc), -the register query would look like - -``` -REGISTER{"rs/16/2", {QmA, AddrA}} -``` - -Participation in further shards is registered with further queries; one register query per shard. - -A discovery query for nodes that are part of this shard would look like - -``` -DISCOVER{ns: "rs/16/2"} -``` - -## DoS Protection - -Hereunder we describe the "opt-in message signing for DoS prevention" solution, designed *ad hoc* for Status MVP. - -Since publishing messages to pubsub topics has no limits, anyone can publish messages at a very high rate and DoS the network. -This would elevate the bandwidth consumption of all nodes subscribed to said pubsub topic, making it prohibitive (in terms of bandwidth) to be subscribed to it. -In order to scale, we need some mechanism to prevent this from happening, otherwise all scaling efforts will be in vain. -Since RLN is not ready yet, hereunder we describe a simpler approach designed *ad hoc* for Status use case, feasible to implement for the MVP and that validates some of the ideas that will evolve to solutions such as RLN. - -With this approach, certain pubsub topics can be optionally configured to only accept messages signed with a given key, that only trusted entities know. -This key can be pre-shared among a set of participants, that are trusted to make fair usage of the network, publishing messages at a reasonable rate/size. -Note that this key can be shared/reused among multiple participants, and only one key is whitelisted per pubsub topic. -This is an opt-in solution that operators can choose to deploy in their shards (i.e. pubsub topics), but it's not enforced in the default one. -Operators can freely choose how they want to generate, and distribute the public keys. It's also their responsibility to handle the private key, sharing it with only trusted parties and keeping proper custody of it. - -The following concepts are introduced: -* `private-key-topic`: A private key of 32 bytes, that allows the holder to sign messages and it's mapped to a `protected-pubsub-topic`. -* `app-message-hash`: Application `WakuMessage` hash, calculated as `sha256(concat(pubsubTopic, payload, contentTopic))` with all elements in bytes. -* `message-signature`: ECDSA signature of `application-message-hash` using a given `private-key-topic`, 64 bytes. -* `public-key-topic`: The equivalent public key of `private-key-topic`. -* `protected-pubsub-topic`: Pubsub topic that only accepts messages that were signed with `private-key-topic`, where `verify(message-signature, app-message-hash, public-key-topic)` is only correct if the `message-signature` was produced by `private-key-topic`. See ECDSA signature verification algorithm. - -This solution introduces two roles: -* Publisher: A node that knows the `private-key-topic` associated to `public-key-topic`, that can publish messages with a valid `message-signature` that are accepted and relayed by the nodes implementing this feature. -* Relayer: A node that knows the `public-key-topic`, which can be used to verify if the messages were signed with the equivalent `private-key-topic`. It allows distinguishing valid from invalid messages which protect the node against DoS attacks, assuming that the users of the key send messages of a reasonable size and rate. Note that a node can validate messages and relay them or not without knowing the private key. - -### Design requirements (publisher) - -A publisher that wants to send messages that are relayed in the network for a given `protected-pubsub-topic` shall: -* be able to sign messages with the `private-key-topic` configured for that topic, producing a ECDSA signature of 64 bytes using deterministic signing complying with RFC 6979. -* include the signature of the `app-message-hash` (`message-signature`) that wishes to send in the `WakuMessage` `meta` field. - -The `app-message-hash` of the message shall be calculated as the `sha256` hash of the following fields of the message: - -``` -sha256(concat(pubsubTopic, payload, contentTopic, timestamp, ephemeral)) -``` - -Where fields are serialized into bytes using little-endian. Note that `ephemeral` is a boolean that is serialized to `0` if `false` and `1` if `true`. - -### Design requirements (relay) - -Requirements for the relay are listed below: - -* A valid `protected-pubsub-topic` shall be configured with a `public-key-topic`, (derived from a `private-key-topic`). Note that the relay does not need to know the private key. -For simplicity, there is just one key per topic. Since this approach has clear privacy implications, this configuration is not part of the waku protocol, but of the application. - -Requirements on the gossipsub validator: -* Relay nodes should use the existing gossipsub validators that allow to `Accept` or `Reject` messages, according to the following criteria: -* If `timestamp` is not set (equals to 0) then `Reject` the message. -* If the `timestamp` is `abs(current_timestamp-timestamp) > MessageWindowInSec` then `Reject` the message. -* If `meta` is empty, `Reject` the message. -* If `meta` exists but its size is different than 64 bytes, `Reject` the message. -* If `meta` does not successfully verifies according to the ECDSA signature verification algorithm using `public-key-topic` and `app-message-hash`, then `Reject` the message. -* If and only if all above conditions are met then `Accept` the message. - -Other requirements: -* The node shall keep metrics on the messages validation output, `Accept` or `Reject`. -* (Optional). To further strengthen DoS protection, gossipsub [scoring](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##extended-validators) can be used to trigger disconnections from peers sending multiple invalid messages. See `P4` penalty. -This protects each peer from DoS, since this score is used to trigger disconnections from nodes attempting to DoS them. - - -### Required changes - -This solution is designed to be backward compatible so that nodes validating messages can coexist in the same topic with other nodes that don't perform validation. But note that only nodes that perform message validation will be protected against DoS. Nodes wishing to opt-in this DoS protection feature shall: -* Generate a `private-key-topic` and distribute it to a curated list of users, that are trusted to send messages at a reasonable rate. -* Redeploy the nodes, adding a new configuration where a `protected-pubsub-topic` is configured with a `public-key-topic`, used to verify the messages being relayed. - - -### Test vectors - -Relay nodes complying with this specification shall accept the following message in the configured pubsub topic. - -Given the following key pair: - -``` -private-key-topic = 5526a8990317c9b7b58d07843d270f9cd1d9aaee129294c1c478abf7261dd9e6 -public-key-topic = 049c5fac802da41e07e6cdf51c3b9a6351ad5e65921527f2df5b7d59fd9b56ab02bab736cdcfc37f25095e78127500da371947217a8cd5186ab890ea866211c3f6 -``` - - -And the following message to send: - -``` -protected-pubsub-topic = pubsub-topic -contentTopic = content-topic -payload = 1A12E077D0E89F9CAC11FBBB6A676C86120B5AD3E248B1F180E98F15EE43D2DFCF62F00C92737B2FF6F59B3ABA02773314B991C41DC19ADB0AD8C17C8E26757B -timestamp = 1683208172339052800 -ephemeral = true -``` - -The message hash and meta (aka signature) are calculated as follows. - -``` -app-message-hash = 662F8C20A335F170BD60ABC1F02AD66F0C6A6EE285DA2A53C95259E7937C0AE9 -message.meta = 127FA211B2514F0E974A055392946DC1A14052182A6ABEFB8A6CD7C51DA1BF2E40595D28EF1A9488797C297EED3AAC45430005FB3A7F037BDD9FC4BD99F59E63 -``` - -Using `message.meta`, the relay node shall calculate the `app-message-hash` of the received message using `public-key-topic`, and with the values above, the signature should be verified, making the node `Accept` the message and relaying it to other nodes in the network. - -## Owner-Mapped Communities - -Basic idea: -Tokenized load. - -### 1:1 Chat - -An idea we plan to explore in the future: -Map 1:1 chats to community shards, if both A and B are part of the respective community. -This increases k-anonymity and benefits from community DoS protection. -It could be rate-limited with RLN. - -## Security/Privacy Considerations - -This document makes several trade-offs to privacy and anonymity. -Todo: elaborate. -See [WAKU2-ADVERSARIAL-MODELS](https://github.com/waku-org/specs/blob/waku-RFC/informational/adversarial-models) for information on Waku Anonymity. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -* [56/STATUS-COMMUNITIES](../56/communities) -* [55/STATUS-1TO1-CHAT](.../55/1to1-chat) -* [23/WAKU2-TOPICS](../../waku/informational/23/) -* [11/WAKU2-RELAY](../../waku/standards/core/11/relay) -* [WAKU2-RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding) -* [WAKU2-RELAY-STATIC-SHARD-ALLOC](https://github.com/waku-org/specs/blob/waku-RFC/informational/relay-static-shard-alloc) -* [30/ADAPTIVE-NODES](../../waku/informational/30/adaptive-nodes) -* [19/WAKU2-LIGHTPUSH](../../waku/standards/core/19/lightpush) -* [12/WAKU2-FILTER](../../waku/standards/core/12/filter) -* [WAKU2-PEER-EXCHANGE](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/peer-exchange/peer-exchange) -* [13/WAKU2-STORE](../../waku/standards/core/13/store) -* [libp2p rendezvous](https://github.com/libp2p/specs/blob/master/rendezvous/README) -* [libp2p AutoNAT protocol](https://github.com/libp2p/specs/blob/master/autonat/README) -* [33/WAKU2-DISCV5](../../waku/standards/core/33/discv5) -* [libp2p circuit relay](https://github.com/libp2p/specs/blob/6634ca7abb2f955645243d48d1cd2fd02a8e8880/relay/circuit-v2) -* [limiting](https://github.com/libp2p/specs/blob/6634ca7abb2f955645243d48d1cd2fd02a8e8880/relay/circuit-v2##reservation) -* [DCUtR](https://github.com/libp2p/specs/blob/master/relay/DCUtR) -* [scoring](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##extended-validators) -* [Circuit Relay](https://docs.libp2p.io/concepts/nat/circuit-relay/) -* [WAKU2-ADVERSARIAL-MODELS](https://github.com/waku-org/specs/blob/waku-RFC/informational/adversarial-models) - -## Informative -* [Circuit Relay](https://docs.libp2p.io/concepts/nat/circuit-relay/) -* [WAKU2-ENR](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/enr) diff --git a/status/raw/status-waku-usage.md b/status/raw/status-waku-usage.md deleted file mode 100644 index 77d5e7764..000000000 --- a/status/raw/status-waku-usage.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: STATUS-WAKU2-USAGE -name: Status Waku2 Usage -status: raw -category: Best Current Practice -description: Defines how the Status application uses the Waku protocols. -editor: Aaryamann Challani <aaryamann@status.im> -contributors: -- Jimmy Debe <jimmy@status.im> - ---- -- Status: raw -- Category: Best Current Practice -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Jimmy Debe <jimmy@status.im> - - -## Abstract - -Status is a chat application which has several features, including, but not limited to - -- Private 1:1 chats, described by [55/STATUS-1TO1-CHAT](/spec/55) -- Large scale group chats, described by [56/STATUS-COMMUNITIES](/spec/56) - -This specification describes how a Status implementation will make use of the underlying infrastructure, -Waku, which is described in [10/WAKU2](/spec/10). - -## Background - -The Status application aspires to achieve censorship resistance and incorporates specific privacy features, -leveraging the comprehensive set of protocols offered by Waku to enhance these attributes. -Waku protocols provide secure communication capabilities over decentralized networks. -Once integrated, an application will benefit from privacy-preserving, -censorship resistance and spam protected communcation. - -Since Status uses a large set of Waku protocols, -it is imperative to describe how each are used. - -## Terminology - -| Name | Description | -| --------------- | --------- | -| `RELAY`| This refers to the Waku Relay protocol, described in [11/WAKU2-RELAY](/spec/11) | -| `FILTER` | This refers to the Waku Filter protocol, described in [12/WAKU2-FILTER](/spec/12) | -| `STORE` | This refers to the Waku Store protocol, described in [13/WAKU2-STORE](/spec/13) | -| `MESSAGE` | This refers to the Waku Message format, described in [14/WAKU2-MESSAGE](/spec/14) | -| `LIGHTPUSH` | This refers to the Waku Lightpush protocol, described in [19/WAKU2-LIGHTPUSH](/spec/19) | -| Discovery | This refers to a peer discovery method used by a Waku node. | -| `Pubsub Topic` / `Content Topic` | This refers to the routing of messages within the Waku network, described in [23/WAKU2-TOPICS](/spec/23/) | - -### Waku Node: - -Software that is configured with a set of Waku protocols. -A Status client comprises of a Waku node that is a `RELAY` node or a non-relay node. - - -### Light Client: - -A Status client that operates within resource constrained environments is a node configured as light client. -Light clients do not run a `RELAY`. -Instead, Status light clients, -can request services from other `RELAY` node that provide `LIGHTPUSH` service. - -## Protocol Usage - -The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, -“NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). - -The following is a list of Waku Protocols used by a Status application. - -### 1. `RELAY` - -The `RELAY` MUST NOT be used by Status light clients. -The `RELAY` is used to broadcast messages between Status clients. -All Status messages are transformed into [14/WAKU2-MESSAGE](/spec/14), which are sent over the wire. - -All Status message types are described in [62/STATUS-PAYLOAD](/spec/62). -Status Clients MUST transform the following object into a `MESSAGE` as described below - - -```go - -type StatusMessage struct { - SymKey[] []byte // [optional] The symmetric key used to encrypt the message - PublicKey []byte // [optional] The public key to use for asymmetric encryption - Sig string // [optional] The private key used to sign the message - PubsubTopic string // The Pubsub topic to publish the message to - ContentTopic string // The Content topic to publish the message to - Payload []byte // A serialized representation of a Status message to be sent - Padding []byte // Padding that must be applied to the Payload - TargetPeer string // [optional] The target recipient of the message - Ephemeral bool // If the message is not to be stored, this is set to `true` -} - -``` - -1. A user MUST only provide either a Symmetric key OR an Asymmetric keypair to encrypt the message. -If both are received, the implementation MUST throw an error. -2. `WakuMessage.Payload` MUST be set to `StatusMessage.Payload` -3. `WakuMessage.Key` MUST be set to `StatusMessage.SymKey` -4. `WakuMessage.Version` MUST be set to `1` -5. `WakuMessage.Ephemeral` MUST be set to `StatusMessage.Ephemeral` -6. `WakuMessage.ContentTopic` MUST be set to `StatusMessage.ContentTopic` -7. `WakuMessage.Timestamp` MUST be set to the current Unix epoch timestamp (in nanosecond precision) - -### 2. `STORE` - -This protocol MUST remain optional according to the user's preferences, -it MAY be enabled on Light clients as well. - -Messages received via [11/WAKU2-RELAY](/spec/11), are stored in a database. -When Waku node running this protocol is service node, -it MUST provide the complete list of network messages. -Status clients SHOULD request historical messages from this service node. - -The messages that have the `WakuMessage.Ephemeral` flag set to true will not be stored. - -The Status client MAY provide a method to prune the database of older records to save storage. - -### 3. `FILTER` - -This protocol SHOULD be enabled on Light clients. - -This protocol SHOULD be used to filter messages based on a given criteria, such as the `Content Topic` of a `MESSAGE`. -This allows a reduction in bandwidth consumption by the Status client. - -#### Content filtering protocol identifers: -The `filter-subcribe` SHOULD be implemented on `RELAY` nodes to provide `FILTER` services. - -`filter-subscribe`: - - /vac/waku/filter-subscribe/2.0.0-beta1 - -The `filter-push` SHOULD be implemented on light clients to receive messages. - -`filter-push`: - - /vac/waku/filter-push/2.0.0-beta1 - -Status clients SHOULD apply a filter for all the `Content Topic` they are interested in, -such as `Content Topic` derived from - -1. 1:1 chats with other users, described in [55/STATUS-1TO1-CHAT](/spec/55) -2. Group chats -3. Community Channels, described in [56/STATUS-COMMUNITIES](/spec/56) - -### 4. `LIGHTPUSH` - -The `LIGHTPUSH` protocol MUST be enabled on Status light clients. -A Status `RELAY` node MAY implement `LIGHTPUSH` to support light clients. -Peers will be able to publish messages, -without running a full-fledged [11/WAKU2-RELAY](/spec/11) protocol. - -When a Status client is publishing a message, -it MUST check if Light mode is enabled, -and if so, it MUST publish the message via this protocol. - -### 5. Discovery - -A discovery method MUST be supported by Light clients and Full clients - -Status clients SHOULD make use of the following peer discovery methods that are provided by Waku, -such as - - -1. [EIP-1459: DNS-Based Discovery](https://eips.ethereum.org/EIPS/eip-1459) -2. [33/WAKU2-DISCV5](/spec/33): -A node discovery protocol to create decentralized network of interconnected Waku nodes. -3. [34/WAKU2-PEER-EXCHANGE](/spec/34): -A peer discovery protocol for resource restricted devices. - -Status clients MAY use any combination of the above peer discovery methods, -which is suited best for their implementation. - -## Security/Privacy Considerations - -This specification inherits the security and privacy considerations from the following specifications - - -1. [10/WAKU2](/spec/10) -2. [11/WAKU2-RELAY](/spec/11) -3. [12/WAKU2-FILTER](/spec/12) -4. [13/WAKU2-STORE](/spec/13) -5. [14/WAKU2-MESSAGE](/spec/14) -6. [23/WAKU2-TOPICS](/spec/23) -7. [19/WAKU2-LIGHTPUSH](/spec/19) -8. [55/STATUS-1TO1-CHAT](/spec/55) -9. [56/STATUS-COMMUNITIES](/spec/56) -10. [62/STATUS-PAYLOAD](/spec/62) -11. [EIP-1459: DNS-Based Discovery](https://eips.ethereum.org/EIPS/eip-1459) -12. [33/WAKU2-DISCV5](/spec/33) -13. [34/WAKU2-PEER-EXCHANGE](/spec/34) - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - - -1. [55/STATUS-1TO1-CHAT](/spec/55) -2. [56/STATUS-COMMUNITIES](/spec/56) -3. [10/WAKU2](/spec/10) -4. [11/WAKU2-RELAY](/spec/11) -5. [12/WAKU2-FILTER](/spec/12) -6. [13/WAKU2-STORE](/spec/13) -7. [14/WAKU2-MESSAGE](/spec/14) -8. [23/WAKU2-TOPICS](/spec/23) -9. [19/WAKU2-LIGHTPUSH](/spec/19) -10. [64/WAKU2-NETWORK](/spec/64) -11. [62/STATUS-PAYLOAD](/spec/62) -12. [EIP-1459: DNS-Based Discovery](https://eips.ethereum.org/EIPS/eip-1459) -13. [33/WAKU2-DISCV5](/spec/33) -14. [34/WAKU2-PEER-EXCHANGE](/spec/34) diff --git a/vac/1/coss.md b/vac/1/coss.md deleted file mode 100644 index 452608cb0..000000000 --- a/vac/1/coss.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: 1/COSS -name: Consensus-Oriented Specification System -status: draft -category: Best Current Practice -editor: Oskar Thoren <oskarth@titanproxy.com> -contributors: - - Pieter Hintjens <ph@imatix.com> - - André Rebentisch <andre@openstandards.de> - - Alberto Barrionuevo <abarrio@opentia.es> - - Chris Puttick <chris.puttick@thehumanjourney.net> - - Yurii Rashkovskii <yrashk@gmail.com> - - Daniel Kaiser <danielkaiser@status.im> ---- -- Status: draft -- Category: Best Current Practice -- Editor: Oskar Thoren <oskarth@titanproxy.com> -- Contributors: - - Pieter Hintjens <ph@imatix.com> - - André Rebentisch <andre@openstandards.de> - - Alberto Barrionuevo <abarrio@opentia.es> - - Chris Puttick <chris.puttick@thehumanjourney.net> - - Yurii Rashkovskii <yrashk@gmail.com> - - Daniel Kaiser <danielkaiser@status.im> - - -This document describes a consensus-oriented specification system (COSS) for building interoperable technical specifications. -COSS is based on a lightweight editorial process that seeks to engage the widest possible range of interested parties and move rapidly to consensus through working code. - -This specification is based on [Unprotocols 2/COSS](https://github.com/unprotocols/rfc/blob/master/2/README), used by the [ZeromMQ](https://rfc.zeromq.org/) project. -It is equivalent except for some areas: - -- recommending the use of a permissive licenses, such as CC0 (with the exception of this document); -- miscellaneous metadata, editor, and format/link updates; -- more inheritance from the [IETF Standards Process][https://www.rfc-editor.org/rfc/rfc2026.txt], - e.g. using RFC categories: Standards Track, Informational, and Best Common Practice; -- standards track specifications SHOULD follow a specific structure that both streamlines editing, - and helps implementers to quickly comprehend the specification -- specifications MUST feature a header providing specific meta information - -## License - -Copyright (c) 2008-22 the Editor and Contributors. - -This Specification is free software; -you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; -either version 3 of the License, or (at your option) any later version. - -This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with this program; -if not, see http://www.gnu.org/licenses. - -## Change Process - -This document is governed by the [1/COSS](./coss) (COSS). - -## Language - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in -[RFC 2119](http://tools.ietf.org/html/rfc2119). - -## Goals - -The primary goal of COSS is to facilitate the process of writing, proving, and improving new technical specifications. -A "technical specification" defines a protocol, a process, an API, a use of language, a methodology, -or any other aspect of a technical environment that can usefully be documented for the purposes of technical or social interoperability. - -COSS is intended to above all be economical and rapid, so that it is useful to small teams with little time to spend on more formal processes. - -Principles: - -* We aim for rough consensus and running code; [inspired by the IETF Tao](https://www.ietf.org/about/participate/tao/). -* Specifications are small pieces, made by small teams. -* Specifications should have a clearly responsible editor. -* The process should be visible, objective, and accessible to anyone. -* The process should clearly separate experiments from solutions. -* The process should allow deprecation of old specifications. - -Specifications should take minutes to explain, hours to design, days to write, weeks to prove, months to become mature, and years to replace. - -Specifications have no special status except that accorded by the community. - -## Architecture - -COSS is designed around fast, easy to use communications tools. -Primarily, COSS uses a wiki model for editing and publishing specifications texts. - -* The *domain* is the conservancy for a set of specifications in a certain area. -* Each domain is implemented as an Internet domain, hosting a wiki and optionally other communications tools. -* Each specification is a set of wiki pages, together with comments, attached files, and other resources. -* Important specifications may also exist as subdomains, i.e. child wikis. - -Individuals can become members of the domain by completing the necessary legal clearance. -The copyright, patent, and trademark policies of the domain must be clarified in an Intellectual Property policy that applies to the domain. - -Specifications exist as multiple pages, one page per version of the specification (see "Branching and Merging", below), which may be assigned URIs that include an incremental number. -Thus, we refer to a specification by specifying its domain, number, and short name. -New versions of the same specification will have new numbers. -The syntax for a specification reference is: - - <domain>/spec/<number>/<shortname> - -For example, this specification is **rfc.vac.dev/spec/1/COSS**. -The short form **1/COSS** may be used when referring to the specification from other specifications in the same domain. - -Every specification (including branches) carries a different number. - -## COSS Lifecycle - -Every specification has an independent lifecycle that documents clearly its current status. - -A specification has six possible states that reflect its maturity and contractual weight: - -![Lifecycle diagram](./images/lifecycle.png) - -### Raw Specifications - -All new specifications are **raw** specifications. -Changes to raw specifications can be unilateral and arbitrary. -Those seeking to implement a raw specification should ask for it to be made a draft specification. -Raw specifications have no contractual weight. - -### Draft Specifications - -When raw specifications can be demonstrated, they become **draft** specifications. -Changes to draft specifications should be done in consultation with users. -Draft specifications are contracts between the editors and implementers. - -### Stable Specifications - -When draft specifications are used by third parties, they become **stable** specifications. -Changes to stable specifications should be restricted to cosmetic ones, errata and clarifications. -Stable specifications are contracts between editors, implementers, and end-users. - -### Deprecated Specifications - -When stable specifications are replaced by newer draft specifications, they become **deprecated** specifications. -Deprecated specifications should not be changed except to indicate their replacements, if any. -Deprecated specifications are contracts between editors, implementers and end-users. - -### Retired Specifications - -When deprecated specifications are no longer used in products, they become **retired** specifications. -Retired specifications are part of the historical record. -They should not be changed except to indicate their replacements, if any. -Retired specifications have no contractual weight. - -### Deleted Specifications - -Deleted specifications are those that have not reached maturity (stable) and were discarded. -They should not be used and are only kept for their historical value. -Only Raw and Draft specifications can be deleted. - -## Editorial control - -A specification MUST have a single responsible editor, -the only person who SHALL change the status of the specification through the lifecycle stages. - -A specification MAY also have additional contributors who contribute changes to it. -It is RECOMMENDED to use a process similar to [C4 process](https://github.com/unprotocols/rfc/blob/master/1/README) -to maximize the scale and diversity of contributions. - -Unlike the original C4 process however, it is RECOMMENDED to use CC0 as a more permissive license alternative. -We SHOULD NOT use GPL or GPL-like license. -One exception is this specification, as this was the original license for this specification. - -The editor is responsible for accurately maintaining the state of specifications and for handling all comments on the specification. - -## Branching and Merging - -Any member of the domain MAY branch a specification at any point. -This is done by copying the existing text, and creating a new specification with the same name and content, but a new number. -The ability to branch a specification is necessary in these circumstances: - -* To change the responsible editor for a specification, with or without the cooperation of the current responsible editor. -* To rejuvenate a specification that is stable but needs functional changes. - This is the proper way to make a new version of a specification that is in stable or deprecated status. -* To resolve disputes between different technical opinions. - -The responsible editor of a branched specification is the person who makes the branch. - -Branches, including added contributions, are derived works and thus licensed under the same terms as the original specification. -This means that contributors are guaranteed the right to merge changes made in branches back into their original specifications. - -Technically speaking, a branch is a *different* specification, even if it carries the same name. -Branches have no special status except that accorded by the community. - -## Conflict resolution - -COSS resolves natural conflicts between teams and vendors by allowing anyone to define a new specification. -There is no editorial control process except that practised by the editor of a new specification. -The administrators of a domain (moderators) may choose to interfere in editorial conflicts, -and may suspend or ban individuals for behaviour they consider inappropriate. - -## Specification Structure - -### Meta Information - -Specifications MUST contain the following metadata. -It is RECOMMENDED that specification metadata is specified as a YAML header (where possible). -This will enable programmatic access to specification metadata. - -| Key | Value | Type | Example | -|------------------|----------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **shortname** | short name | string | 1/COSS | -| **title** | full name | string | Consensus-Oriented Specification System | -| **status** | status | string | draft | -| **category** | category | string | Best Current Practice | -| **tags** | 0 or several tags | list | waku-application, waku-core-protocol | -| **editor** | editor name/email | string | Oskar Thoren <oskarth@titanproxy.com> | -| **contributors** | contributors | list | - Pieter Hintjens <ph@imatix.com><br/> - André Rebentisch <andre@openstandards.de><br/> - Alberto Barrionuevo <abarrio@opentia.es><br/> - Chris Puttick <chris.puttick@thehumanjourney.net><br/> - Yurii Rashkovskii <yrashk@gmail.com> | - -### Specification Template - -Standards Track specifications SHOULD be based on the [Vac RFC template](./images/template). - -## Conventions - -Where possible editors and contributors are encouraged to: - -* Refer to and build on existing work when possible, especially IETF specifications. -* Contribute to existing specifications rather than reinvent their own. -* Use collaborative branching and merging as a tool for experimentation. -* Use Semantic Line Breaks: https://sembr.org/. - -## Appendix A. Color Coding - -It is RECOMMENDED to use color coding to indicate specification's status. Color coded specifications SHOULD use the following color scheme: - -* ![raw](https://raw.githubusercontent.com/unprotocols/rfc/master/2/raw.svg) -* ![draft](https://raw.githubusercontent.com/unprotocols/rfc/master/2/draft.svg) -* ![stable](https://raw.githubusercontent.com/unprotocols/rfc/master/2/stable.svg) -* ![deprecated](https://raw.githubusercontent.com/unprotocols/rfc/master/2/deprecated.svg) -* ![retired](https://raw.githubusercontent.com/unprotocols/rfc/master/2/retired.svg) -* ![deleted](https://raw.githubusercontent.com/unprotocols/rfc/master/2/deleted.svg) diff --git a/vac/1/images/lifecycle.png b/vac/1/images/lifecycle.png deleted file mode 100644 index 9ee9380453db27fffecc4cf32097a4989782fe26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43402 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 F{|hw6K@$J~ diff --git a/vac/2/mvds.md b/vac/2/mvds.md deleted file mode 100644 index d83d20b89..000000000 --- a/vac/2/mvds.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: 2/MVDS -name: Minimum Viable Data Synchronization -status: stable -editor: Sanaz Taheri <sanaz@status.im> -contributors: - - Dean Eigenmann <dean@status.im> - - Oskar Thorén <oskarth@titanproxy.com> ---- -- Status: stable -- Editor: Sanaz Taheri <sanaz@status.im> -- Contributors: - - Dean Eigenmann <dean@status.im> - - Oskar Thorén <oskarth@titanproxy.com> - - -In this specification, we describe a minimum viable protocol for data synchronization inspired by the Bramble Synchronization Protocol[^1]. This protocol is designed to ensure reliable messaging between peers across an unreliable peer-to-peer (P2P) network where they may be unreachable or unresponsive. - -We present a reference implementation[^2] including a simulation to demonstrate its performance. - -## Definitions - -| Term | Description | -|------------|-------------------------------------------------------------------------------------| -| **Peer** | The other nodes that a node is connected to. | -| **Record** | Defines a payload element of either the type `OFFER`, `REQUEST`, `MESSAGE` or `ACK` | -| **Node** | Some process that is able to store data, do processing and communicate for MVDS. | - -## Wire Protocol - -### Secure Transport - -This specification does not define anything related to the transport of packets. It is assumed that this is abstracted in such a way that any secure transport protocol could be easily implemented. Likewise, properties such as confidentiality, integrity, authenticity and forward secrecy are assumed to be provided by a layer below. - -### Payloads - -Payloads are implemented using [protocol buffers v3](https://developers.google.com/protocol-buffers/). - -```protobuf -syntax = "proto3"; - -package vac.mvds; - -message Payload { - repeated bytes acks = 5001; - repeated bytes offers = 5002; - repeated bytes requests = 5003; - repeated Message messages = 5004; -} - -message Message { - bytes group_id = 6001; - int64 timestamp = 6002; - bytes body = 6003; -} -``` - -*The payload field numbers are kept more "unique" to ensure no overlap with other protocol buffers.* - -Each payload contains the following fields: - -- **Acks:** This field contains a list (can be empty) of `message identifiers` informing the recipient that sender holds a specific message. -- **Offers:** This field contains a list (can be empty) of `message identifiers` that the sender would like to give to the recipient. -- **Requests:** This field contains a list (can be empty) of `message identifiers` that the sender would like to receive from the recipient. -- **Messages:** This field contains a list of messages (can be empty). - -**Message Identifiers:** Each `message` has a message identifier calculated by hashing the `group_id`, `timestamp` and `body` fields as follows: - -``` -HASH("MESSAGE_ID", group_id, timestamp, body); -``` - -**Group Identifiers:** Each `message` is assigned into a **group** using the `group_id` field, groups are independent synchronization contexts between peers. - -The current `HASH` function used is `sha256`. - -## Synchronization - -### State - -We refer to `state` as set of records for the types `OFFER`, `REQUEST` and `MESSAGE` that every node SHOULD store per peer. `state` MUST NOT contain `ACK` records as we do not retransmit those periodically. The following information is stored for records: - - - **Type** - Either `OFFER`, `REQUEST` or `MESSAGE` - - **Send Count** - The amount of times a record has been sent to a peer. - - **Send Epoch** - The next epoch at which a record can be sent to a peer. - -### Flow - -A maximum of one payload SHOULD be sent to peers per epoch, this payload contains all `ACK`, `OFFER`, `REQUEST` and `MESSAGE` records for the specific peer. Payloads are created every epoch, containing reactions to previously received records by peers or new records being sent out by nodes. - -Nodes MAY have two modes with which they can send records: `BATCH` and `INTERACTIVE` mode. The following rules dictate how nodes construct payloads every epoch for any given peer for both modes. - -> ***NOTE:** A node may send messages both in interactive and in batch mode.* - -#### Interactive Mode - - - A node initially offers a `MESSAGE` when attempting to send it to a peer. This means an `OFFER` is added to the next payload and state for the given peer. - - When a node receives an `OFFER`, a `REQUEST` is added to the next payload and state for the given peer. - - When a node receives a `REQUEST` for a previously sent `OFFER`, the `OFFER` is removed from the state and the corresponding `MESSAGE` is added to the next payload and state for the given peer. - - When a node receives a `MESSAGE`, the `REQUEST` is removed from the state and an `ACK` is added to the next payload for the given peer. - - When a node receives an `ACK`, the `MESSAGE` is removed from the state for the given peer. - - All records that require retransmission are added to the payload, given `Send Epoch` has been reached. - -<p align="center"> - <img src="../assets/mvds/interactive.png" /> - <br /> - Figure 1: Delivery without retransmissions in interactive mode. -</p> - -#### Batch Mode - - 1. When a node sends a `MESSAGE`, it is added to the next payload and the state for the given peer. - 2. When a node receives a `MESSAGE`, an `ACK` is added to the next payload for the corresponding peer. - 3. When a node receives an `ACK`, the `MESSAGE` is removed from the state for the given peer. - 4. All records that require retransmission are added to the payload, given `Send Epoch` has been reached. - - - - - -<p align="center"> - <img src="../assets/mvds/batch.png" /> - <br /> - Figure 2: Delivery without retransmissions in batch mode. -</p> - - -> ***NOTE:** Batch mode is higher bandwidth whereas interactive mode is higher latency.* - - - - - -### Retransmission - -The record of the type `Type` SHOULD be retransmitted every time `Send Epoch` is smaller than or equal to the current epoch. - -`Send Epoch` and `Send Count` MUST be increased every time a record is retransmitted. Although no function is defined on how to increase `Send Epoch`, it SHOULD be exponentially increased until reaching an upper bound where it then goes back to a lower epoch in order to prevent a record's `Send Epoch`'s from becoming too large. - -> ***NOTE:** We do not retransmission `ACK`s as we do not know when they have arrived, therefore we simply resend them every time we receive a `MESSAGE`.* - -## Formal Specification - -MVDS has been formally specified using TLA+: <https://github.com/vacp2p/formalities/tree/master/MVDS>. - -## Acknowledgments - - Preston van Loon - - Greg Markou - - Rene Nayman - - Jacek Sieka - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## Footnotes - -[^1]: akwizgran et al. [BSP](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP). Briar. -[^2]: <https://github.com/vacp2p/mvds> diff --git a/vac/25/libp2p-dns-discovery.md b/vac/25/libp2p-dns-discovery.md deleted file mode 100644 index a6fa7d8aa..000000000 --- a/vac/25/libp2p-dns-discovery.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: 25/LIBP2P-DNS-DISCOVERY -name: Libp2p Peer Discovery via DNS -status: deleted -editor: Hanno Cornelius <hanno@status.im> -contributors: ---- -- Status: deleted -- Editor: Hanno Cornelius <hanno@status.im> - -`25/LIBP2P-DNS-DISCOVERY` specifies a scheme to implement [`libp2p`](https://libp2p.io/) peer discovery via DNS for Waku v2. -The generalised purpose is to retrieve an arbitrarily long, authenticated, updateable list of [`libp2p` peers](https://docs.libp2p.io/concepts/peer-id/) to bootstrap connection to a `libp2p` network. -Since [`10/WAKU2`](../../waku/standards/core/10/waku2) currently specifies use of [`libp2p` peer identities](https://docs.libp2p.io/concepts/peer-id/), -this method is suitable for a new Waku v2 node to discover other Waku v2 nodes to connect to. - -This specification is largely based on [EIP-1459](https://eips.ethereum.org/EIPS/eip-1459), -with the only deviation being the type of address being encoded (`multiaddr` vs `enr`). -Also see [this earlier explainer](https://vac.dev/dns-based-discovery) for more background on the suitability of DNS based discovery for Waku v2. - -# List encoding - -The peer list MUST be encoded as a [Merkle tree](https://www.wikiwand.com/en/Merkle_tree). -EIP-1459 specifies [the URL scheme](https://eips.ethereum.org/EIPS/eip-1459#specification) to refer to such a DNS node list. -This specification uses the same approach, but with a `matree` scheme: - -``` -matree://@ -``` - -where -- `matree` is the selected `multiaddr` Merkle tree scheme -- `` is the fully qualified domain name on which the list can be found -- `` is the base32 encoding of the compressed 32-byte binary public key that signed the list. - -The example URL from EIP-1459, adapted to the above scheme becomes: - -``` -matree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@peers.example.org -``` - -Each entry within the Merkle tree MUST be contained within a [DNS TXT record](https://www.rfc-editor.org/rfc/rfc1035.txt) -and stored in a subdomain (except for the base URL `matree` entry). -The content of any TXT record MUST be small enough to fit into the 512-byte limit imposed on UDP DNS packets, -which limits the number of hashes that can be contained within a branch entry. -The subdomain name for each entry is the base32 encoding of the abbreviated keccak256 hash of its text content. -See [this example](https://eips.ethereum.org/EIPS/eip-1459#dns-record-structure) of a fully populated tree for more information. - -# Entry types - -The following entry types are derived from [EIP-1459](https://eips.ethereum.org/EIPS/eip-1459) -and adapted for use with `multiaddrs`: - -## Root entry - -The tree root entry MUST use the following format: - -``` -matree-root:v1 m= l= seq= sig= -``` - -where -- `ma-root` and `link-root` refer to the root hashes of subtrees -containing `multiaddrs` and links to other subtrees, respectively -- `sequence-number` is the tree's update sequence number. -This number SHOULD increase with each update to the tree. -- `signature` is a 65-byte secp256k1 EC signature -over the keccak256 hash of the root record content, -excluding the `sig=` part, -encoded as URL-safe base64 - -## Branch entry - -Branch entries MUST take the format: - -``` -matree-branch:,,..., -``` - -where -- `,,...,` are the hashes of other subtree entries - -## Leaf entries - -There are two types of leaf entries: - -### Link entries - -For the subtree pointed to by `link-root`, -leaf entries MUST take the format: - -``` -matree://@ -``` - -which links to a different list located in another domain. - -### `multiaddr` entries - -For the subtree pointed to by `ma-root`, -leaf entries MUST take the format: - -``` -ma: -``` - -which contains the `multiaddr` of a `libp2p` peer. - -# Client protocol - -A client MUST adhere to the [client protocol](https://eips.ethereum.org/EIPS/eip-1459#client-protocol) as specified in EIP-1459, -and adapted for usage with `multiaddr` entry types below: - -To find nodes at a given DNS name a client MUST perform the following steps: -1. Resolve the TXT record of the DNS name and check whether it contains a valid `matree-root:v1` entry. -2. Verify the signature on the root against the known public key -and check whether the sequence number is larger than or equal to any previous number seen for that name. -3. Resolve the TXT record of a hash subdomain indicated in the record -and verify that the content matches the hash. -4. If the resolved entry is of type: - - `matree-branch`: parse the list of hashes and continue resolving them (step 3). - - `ma`: import the `multiaddr` and add it to a local list of discovered nodes. - -# Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -# References - -1. [`10/WAKU2`](../../waku/standards/core/10/waku2) -1. [EIP-1459: Client Protocol](https://eips.ethereum.org/EIPS/eip-1459#client-protocol) -1. [EIP-1459: Node Discovery via DNS ](https://eips.ethereum.org/EIPS/eip-1459) -1. [`libp2p`](https://libp2p.io/) -1. [`libp2p` peer identity](https://docs.libp2p.io/concepts/peer-id/) -1. [Merkle trees](https://www.wikiwand.com/en/Merkle_tree) diff --git a/vac/3/images/remote-log.msc b/vac/3/images/remote-log.msc deleted file mode 100644 index 3e1baff4e..000000000 --- a/vac/3/images/remote-log.msc +++ /dev/null @@ -1,21 +0,0 @@ -# Alice and Bob: remote log data sync -msc { - hscale="2", wordwraparcs=on; - - alice [label="Alice"], - cas [label="CAS"], - ns [label="NS"], - bob [label="Bob"]; - - --- [label="Alice replicates data to a remote log"]; - alice => cas [label="Add content"]; - cas => alice [label="Address"]; - alice => ns [label="Update NameUpdate"]; - ns => alice [label="Response"]; - - --- [label="Bob comes online"]; - bob => ns [label="Fetch"]; - ns => bob [label="Content"]; - bob => cas [label="Fetch Query"]; - cas => bob [label="Content"]; -} diff --git a/vac/3/images/remote-log.png b/vac/3/images/remote-log.png deleted file mode 100644 index 89266024299929f217bc099d4fd375a81fd9a73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17444 zcmch92{@H|zxL87DH@5;Dj^jTDRV0+4Me8QnKKqb=AtA!EEkv+DChKYtmBCU}*E~P*sEqg^G zQAtuS!QbrYUeAFqt1cctXH6ol%_n|Q`R!iIOd@R~$w(bmv=8cQaz3M|5;D0^S@M3{ zcF$#}W4Wk(wpF%1+a~_<+4du4GOyhCM9AK~_x_qf)kEQjy)o@fx_esrGNm?z8*AK5 zit>`Vx4r%S=5;IN$yBvbhp!#yTG#3}x$K!v@7&xa*CPKRcJ7P)0~5Uo)^eea1D(y| zU+2252afKP@xg(SNUCh96;zAAdw7^aP5egrjt4#Q_2tG@Wa6vpuJsh+>njCz58|s% z#BpkE&Fbpv0|yQ;dA>+bKNo*xr0w>J2ySlf^%Maip;*P3!Q2I{az?6?HI0o~7EKv$ zZf;kXu5@s8W5rrC+Q?+&+zQ;a?9bf?NhB@NK8(4{8=I-F*jOiQO~exQ?z1?%WAsp zYaT<@1_DgMK|xH+%-*bG^}|Z)>J4peZBLKf9Cy`m6SSWkI)CQO{c_`bckdQ`{;Za1 zYp$iGrK+mhFc_}6rUIXG@xz@>`}Xa-a^=cOI@ZzA(V#=tFJ{lKbz@LIcP{-xcinHgZRca=OTbC|f%B%6_TX*-=RA=aF za){^^T~kwaRn>zRD%c~!m+onF9L#=g*^*=3`DG2OsA_z4Z0ygGkrO9R&a|>EaMjvu zea>%bIr#YT?8?F~_uogh9?wr;5->lB&;x9mjHpKQb?0zPz(Elug9;r3P`C zmapDC+mJiQ?7p^ZhhBk~=bbwa3v(0drc3Zzy40?}zWTzD!BJku~vf(Ay%2;oYp-p}P0o^@4OzYP_tL+VZ@+2uKDdWP{&6{l}2AW>J zeEIOuT*(7rs z=e{uhI@hnLiMGO^=#hb;;e3Zs?o_Y#0=FxD&QwR>!l>LrmF4i#M#K>SXx;kJ(`WHj87Y^b{(7J$PJM;@Vd{N$1C1jiR^jE30|L%zX^G>HHJXojG&2lK zp7iyZ9XnPKu-|B8)2I^XcfZk(%$E5dJ`}d^)B7kTC3W0KpFhBZ{`&RnKI~!+qsOT) z&CgDSAM+MIbf_uYQN=xv=@}Uri8$#$P?yZf%^f2lNA*gvu&_`q?!ci#>6&81>hG;huq@dM zK#JGQd{Ntb^5jV|F|lJ_TX(%49vWg4G*P^8Av)`jb;qf6KAk+b=(CZJ{QP#UKjd)B zV@OF~fayB@@bIwS$9r4$8=jJumOgp12oNG{ZpI&g>(QVjEFxl>T3=v(+$Y7V{j)e7 z%PVT2m6w;7(U+hLDr^i449v{CGgzKW%nrTJoh`~0b(vLd{!mcR`JPUqG0nVTxV3

GF8KioiQL3Q`MCL`tWT9=+f&W@zt-2+ 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 r=ZCg*WYepFBH - - -### Payloads - -Payloads are implemented using [protocol buffers v3](https://developers.google.com/protocol-buffers/). - -**CAS service**: - -```protobuf -syntax = "proto3"; - -package vac.cas; - -service CAS { - rpc Add(Content) returns (Address) {} - rpc Get(Address) returns (Content) {} -} - -message Address { - bytes id = 1; -} - -message Content { - bytes data = 1; -} -``` - - - - - -**NS service**: - -```protobuf -syntax = "proto3"; - -package vac.cas; - -service NS { - rpc Update(NameUpdate) returns (Response) {} - rpc Fetch(Query) returns (Content) {} -} - -message NameUpdate { - string name = 1; - bytes content = 2; -} - -message Query { - string name = 1; -} - -message Content { - bytes data = 1; -} - -message Response { - bytes data = 1; -} -``` - - - - - - - - -**Remote log:** - -```protobuf -syntax = "proto3"; - -package vac.cas; - -message RemoteLog { - repeated Pair pair = 1; - bytes tail = 2; - - message Pair { - bytes remoteHash = 1; - bytes localHash = 2; - bytes data = 3; - } -} -``` - - - - - - - - - -## Synchronization - -### Roles - -There are four fundamental roles: - -1. Alice -2. Bob -2. Name system (NS) -3. Content-addressed storage (CAS) - -The *remote log* protobuf is what is stored in the name system. - -"Bob" can represent anything from 0 to N participants. Unlike Alice, Bob only needs read-only access to NS and CAS. - - - - - - - - -### Flow - - - - - -<p align="center"> - <img src="./images/remote-log.png" /> - <br /> - Figure 1: Remote log data synchronization. -</p> - - - - - -### Remote log - -The remote log lets receiving nodes know what data they are missing. Depending -on the specific requirements and capabilities of the nodes and name system, the -information can be referred to differently. We distinguish between three rough -modes: - -1. Fully replicated log -2. Normal sized page with CAS mapping -3. "Linked list" mode - minimally sized page with CAS mapping - -**Data format:** - -``` -| H1_3 | H2_3 | -| H1_2 | H2_2 | -| H1_1 | H2_1 | -| ------------| -| next_page | -``` - -Here the upper section indicates a list of ordered pairs, and the lower section -contains the address for the next page chunk. `H1` is the native hash function, -and `H2` is the one used by the CAS. The numbers corresponds to the messages. - -To indicate which CAS is used, a remote log SHOULD use a multiaddr. - -**Embedded data:** - -A remote log MAY also choose to embed the wire payloads that corresponds to the -native hash. This bypasses the need for a dedicated CAS and additional -round-trips, with a trade-off in bandwidth usage. - -``` -| H1_3 | | C_3 | -| H1_2 | | C_2 | -| H1_1 | | C_1 | -| -------------| -| next_page | -``` - -Here `C` stands for the content that would be stored at the CAS. - -Both patterns can be used in parallel, e,g. by storing the last `k` messages -directly and use CAS pointers for the rest. Together with the `next_page` page -semantics, this gives users flexibility in terms of bandwidth and -latency/indirection, all the way from a simple linked list to a fully replicated -log. The latter is useful for things like backups on durable storage. - -### Next page semantics - -The pointer to the 'next page' is another remote log entry, at a previous point -in time. - - - - - - - - - -### Interaction with MVDS - -[vac.mvds.Message](../2/mvds#payloads) payloads are the only payloads that MUST be uploaded. Other messages types MAY be uploaded, depending on the implementation. - -## Acknowledgments - -TBD. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## Footnotes - -[^1]: <https://github.com/vacp2p/research/tree/master/remote_log> diff --git a/vac/32/rln-v1.md b/vac/32/rln-v1.md deleted file mode 100644 index 451910cdb..000000000 --- a/vac/32/rln-v1.md +++ /dev/null @@ -1,660 +0,0 @@ ---- -title: 32/RLN-V1 -name: Rate Limit Nullifier -status: raw -editor: Rasul Ibragimov <curryrasul@gmail.com> -contributors: -- Barry Whitehat <barrywhitehat@protonmail.com> -- Sanaz Taheri <sanaz@status.im> -- Oskar Thorén <oskarth@titanproxy.com> -- Onur Kilic <onurkilic1004@gmail.com> -- Blagoj Dimovski <blagoj.dimovski@yandex.com> ---- -- Status: raw -- Editor: Rasul Ibragimov <curryrasul@gmail.com> -- Contributors: - - Barry Whitehat <barrywhitehat@protonmail.com> - - Sanaz Taheri <sanaz@status.im> - - Oskar Thorén <oskarth@titanproxy.com> - - Onur Kilic <onurkilic1004@gmail.com> - - Blagoj Dimovski <blagoj.dimovski@yandex.com> - - -## Abstract - -The following specification covers the RLN construct as well as some auxiliary libraries useful for interacting with it. -Rate limiting nullifier (RLN) is a construct based on zero-knowledge proofs that provides an anonymous rate-limited signaling/messaging framework suitable for decentralized (and centralized) environments. -Anonymity refers to the unlinkability of messages to their owner. - -## Motivation - -RLN guarantees a messaging rate is enforced cryptographically while preserving the anonymity of the message owners. -A wide range of applications can benefit from RLN and provide desirable security features. -For example, an e-voting system can integrate RLN to contain the voting rate while protecting the voters-vote unlinkability. -Another use case is to protect an anonymous messaging system against DDoS and spam attacks by containing messaging rate of users. -This latter use case is explained in [17/WAKU2-RLN-RELAY RFC](../../waku/standards/core/17/rln-relay). - - -## Flow - -The users participate in the protocol by first registering to an application-defined group referred by the _membership group_. -Registration to the group is mandatory for signaling in the application. -After registration, group members can generate Zero-knowledge Proof of membership for their signals and can participate in the application. -Usually, the membership requires a financial or social stake which -is beneficial for the prevention of Sybil attacks and double-signaling. -Group members are allowed to send one signal per external nullifier (an identifier that groups signals and can be thought of as a voting booth). -If a user generates more signals than allowed, -the user risks being slashed - by revealing his membership secret credentials. -If the financial stake is put in place, the user also risks his stake being taken. - -Generally the flow can be described by the following steps: - -1. Registration -2. Signaling -3. Verification and slashing - - -## Registration - -Depending on the application requirements, the registration can be implemented in different ways, for example: -- centralized registrations, by using a central server -- decentralized registrations, by using a smart contract - -What is important is that the users' identity commitments (explained in section [User Identity](#user-identity)) are stored in a Merkle tree, -and the users can obtain a Merkle proof proving that they are part of the group. - -Also depending on the application requirements, -usually a financial or social stake is introduced. - -An example for financial stake is: For each registration a certain amount of ETH is required. -An example for social stake is using InterRep as a registry - -users need to prove that they have a highly reputable social media account. - -### Implementation notes - -#### User identity - -The user's identity is composed of: - -``` -{ - identity_secret: [identity_nullifier, identity_trapdoor], - identity_secret_hash: poseidonHash(identity_secret), - identity_commitment: poseidonHash([identity_secret_hash]) -} -``` - -For registration, the user needs to submit their `identity_commitment` (along with any additional registration requirements) to the registry. -Upon registration, they should receive `leaf_index` value which represents their position in the Merkle tree. -Receiving a `leaf_index` is not a hard requirement and is application specific. -The other way around is the users calculating the `leaf_index` themselves upon successful registration. - -## Signaling - -After registration, -the users can participate in the application by sending signals to the other participants in a decentralised manner or to a centralised server. -Along with their signal, -they need to generate a ZK-Proof by using the circuit with the specification described above. - -For generating a proof, -the users need to obtain the required parameters or compute them themselves, -depending on the application implementation and client libraries supported by the application. -For example the users can store the membership Merkle tree on their end and -generate a Merkle proof whenever they want to generate a signal. - -### Implementation notes - -#### Signal hash - -The signal hash can be generated by hashing the raw signal (or content) using the `keccak256` hash function. - -#### External nullifier - -The external nullifier MUST be computed as the Poseidon hash of the current epoch (e.g. a value equal to or derived from the current UNIX timestamp divided by the epoch length) and the RLN identifier. - -``` -external_nullifier = poseidonHash([epoch, rln_identifier]) -``` - -#### Obtaining Merkle proof - -The Merkle proof should be obtained locally or from a trusted third party. -By using the [incremental Merkle tree algorithm](https://github.com/appliedzkp/incrementalquintree/blob/master/ts/IncrementalQuinTree.ts), -the Merkle can be obtained by providing the `leaf_index` of the `identity_commitment`. -The proof (`Merkle_proof`) is composed of the following fields: - -``` -{ - root: bigint - indices: number[] - path_elements: bigint[][] -} -``` - -1. **root** - The root of membership group Merkle tree at the time of publishing the message -2. **indices** - The index fields of the leafs in the Merkle tree - used by the Merkle tree algorithm for verification -3. **path_elements** - Auxiliary data structure used for storing the path to the leaf - used by the Merkle proof algorithm for verificaton - - -#### Generating proof - -For proof generation, -the user need to submit the following fields to the circuit: - -``` -{ - identity_secret: identity_secret_hash, - path_elements: Merkle_proof.path_elements, - identity_path_index: Merkle_proof.indices, - x: signal_hash, - external_nullifier: external_nullifier -} -``` - - -#### Calculating output - -The proof output is calculated locally, -in order for the required fields for proof verification to be sent along with the proof. -The proof output is composed of the `y` share of the secret equation and the `internal_nullifier`. -The `internal_nullifier` represents a unique fingerprint of a user for a given `epoch` and app. -The following fields are needed for proof output calculation: - -``` -{ - identity_secret_hash: bigint, - external_nullifier: bigint, - x: bigint, -} -``` - -The output `[y, internal_nullifier]` is calculated in the following way: - -``` -a_0 = identity_secret_hash -a_1 = poseidonHash([a0, external_nullifier]) - -y = a_0 + x * a_1 - -internal_nullifier = poseidonHash([a_1]) -``` - -It relies on the properties of the [Shamir's Secret sharing scheme](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing). - -#### Sending the output message - -The user's output message (`output_message`), -containing the signal should contain the following fields at minimum: - -``` -{ - signal: signal, # non-hashed signal - proof: zk_proof, - internal_nullifier: internal_nullifier, - x: x, # signal_hash - y: y, - rln_identifier: rln_identifier -} -``` - -Additionally depending on the application, -the following fields might be required: - -``` -{ - root: Merkle_proof.root, - epoch: epoch -} -``` - - -## Verification and slashing - -The slashing implementation is dependent on the type of application. -If the application is implemented in a centralised manner, -and everything is stored on a single server, -the slashing will be implemented only on the server. -Otherwise if the application is distributed, -the slashing will be implemented on each user's client. - -### Implementation notes - -Each user of the protocol (server or otherwise) will need to store metadata for each message received by each user, -for the given `epoch`. -The data can be deleted when the `epoch` passes. -Storing metadata is required, so that if a user sends more than one unique signal per `epoch`, -they can be slashed and removed from the protocol. -The metadata stored contains the `x`, `y` shares and the `internal_nullifier` for the user for each message. -If enough such shares are present, the user's secret can be retreived. - -One way of storing received metadata (`messaging_metadata`) is the following format: - -``` -{ - [external_nullifier]: { - [internal_nullifier]: { - x_shares: [], - y_shares: [] - } - } -} -``` - -#### Verification - -The output message verification consists of the following steps: -- `external_nullifier` correctness -- non-duplicate message check -- `zk_proof` verification -- spam verification - -**1. `external_nullifier` correctness** -Upon received `output_message`, first the `epoch` and `rln_identifier` fields are checked, -to ensure that the message matches the current `external_nullifier`. -If the `external_nullifier` is correct the verification continues, otherwise, the message is discarded. - -**2. non-duplicate message check** -The received message is checked to ensure it is not duplicate. -The duplicate message check is performed by verifying that the `x` and `y` fields do not exist in the `messaging_metadata` object. -If the `x` and `y` fields exist in the `x_shares` and `y_shares` array for the `external_nullifier` and -the `internal_nullifier` the message can be considered as a duplicate. -Duplicate messages are discarded. - -**3. `zk_proof` verification** - -The `zk_proof` should be verified by providing the `zk_proof` field to the circuit verifier along with the `public_signal`: - -``` -[ - y, - Merkle_proof.root, - internal_nullifier, - x, # signal_hash - external_nullifier -] -``` - -If the proof verification is correct, -the verification continues, otherwise the message is discarded. - -**4. Double signaling verification** - -After the proof is verified the `x`, and `y` fields are added to the `x_shares` and `y_shares` arrays of the `messaging_metadata` `external_nullifier` and `internal_nullifier` object. -If the length of the arrays is equal to the signaling threshold (`limit`), the user can be slashed. - -#### Slashing - -After the verification, the user can be slashed if two different shares are present to reconstruct their `identity_secret_hash` from `x_shares` and `y_shares` fields, -for their `internal_nullifier`. -The secret can be retreived by the properties of the Shamir's secret sharing scheme. -In particular the secret (`a_0`) can be retrieved by computing [Lagrange polynomials](https://en.wikipedia.org/wiki/Lagrange_polynomial). - -After the secret is retreived, -the user's `identity_commitment` can be generated from the secret and it can be used for removing the user from the membership Merkle tree (zeroing out the leaf that contains the user's `identity_commitment`). -Additionally, depending on the application the `identity_secret_hash` can be used for taking the user's provided stake. - -## Technical overview - -The main RLN construct is implemented using a [ZK-SNARK](https://z.cash/technology/zksnarks/) circuit. -However, it is helpful to describe the other necessary outside components for interaction with the circuit, -which together with the ZK-SNARK circuit enable the above mentioned features. - - -### Terminology - -| Term | Description | -|---------------------------|-------------------------------------------------------------------------------------| -| **ZK-SNARK** | https://z.cash/technology/zksnarks/ | -| **Stake** | Financial or social stake required for registering in the RLN applications. Common stake examples are: locking cryptocurrency (financial), linking reputable social identity. | -| **Identity secret** | An array of two unique random components (identity nullifier and identity trapdoor), which must be kept private by the user. Secret hash and identity commitment are derived from this array. | -| **Identity nullifier** | Random 32 byte value used as component for identity secret generation. | -| **Identity trapdoor** | Random 32 byte value used as component for identity secret generation. | -| **Identity secret hash** | The hash of the identity secret, obtained using the Poseidon hash function. It is used for deriving the identity commitment of the user, and as a private input for zk proof generation. The secret hash should be kept private by the user. | -| **Identity commitment** | Hash obtained from the `Identity secret hash` by using the poseidon hash function. It is used by the users for registering in the protocol. | -| **Signal** | The message generated by a user. It is an arbitrary bit string that may represent a chat message, a URL request, protobuf message, etc. | -| **Signal hash** | Keccak256 hash of the signal modulo circuit's field characteristic, used as an input in the RLN circuit. | -| **RLN Identifier** | Random finite field value unique per RLN app. It is used for additional cross-application security. The role of the RLN identifier is protection of the user secrets from being compromised when signals are being generated with the same credentials in different apps. | -| **RLN membership tree** | Merkle tree data structure, filled with identity commitments of the users. Serves as a data structure that ensures user registrations. | -| **Merkle proof** | Proof that a user is member of the RLN membership tree. | - - -### RLN ZK-Circuit specific terms - -| Term | Description | -|---------------------------|-------------------------------------------------------------------------------------| -| **x** | Keccak hash of the signal, same as signal hash (Defined above). | -| **A0** | The identity secret hash. | -| **A1** | Poseidon hash of [A0, External nullifier] (see about External nullifier below). | -| **y** | The result of the polynomial equation (y = a0 + a1*x). The public output of the circuit. | -| **External nullifier** | Poseidon hash of [Epoch, RLN Identifier]. An identifier that groups signals and can be thought of as a voting booth. | -| **Internal nullifier** | Poseidon hash of [A1]. This field ensures that a user can send only one valid signal per external nullifier without risking being slashed. Public input of the circuit. | - - - -### ZK Circuits specification - -Anonymous signaling with a controlled rate limit is enabled by proving that the user is part of a group which has high barriers to entry (form of stake) and -enabling secret reveal if more than 1 unique signal is produced per external nullifier. -The membership part is implemented using membership [Merkle trees](https://en.wikipedia.org/wiki/Merkle_tree) and Merkle proofs, -while the secret reveal part is enabled by using the Shamir's Secret Sharing scheme. -Essentially the protocol requires the users to generate zero-knowledge proof to be able to send signals and participate in the application. -The zero knowledge proof proves that the user is member of a group, -but also enforces the user to share part of their secret for each signal in an external nullifier. -The external nullifier is usually represented by timestamp or a time interval. -It can also be thought of as a voting booth in voting applications. - -The ZK Circuit is implemented using a [Groth-16 ZK-SNARK](https://eprint.iacr.org/2016/260.pdf), -using the [circomlib](https://docs.circom.io/) library. - - -#### System parameters - -- `DEPTH` - Merkle tree depth - - -#### Circuit parameters - -**Public Inputs** -- `x` -- `external_nullifier` - -**Private Inputs** -* `identity_secret_hash` -* `path_elements` - rln membership proof component -* `identity_path_index` - rln membership proof component - -**Outputs** -- `y` -- `root` - the rln membership tree root -- `internal_nullifier` - -#### Hash function - -Canonical [Poseidon hash implementation](https://eprint.iacr.org/2019/458.pdf) is used, -as implemented in the [circomlib library](https://github.com/iden3/circomlib/blob/master/circuits/poseidon.circom), according to the Poseidon paper. -This Poseidon hash version (canonical implementation) uses the following parameters: - -| Hash inputs | `t` | `RF` | `RP`| -|:---:|:---:|:---:|:---:| -|1 | 2 | 8 | 56| -|2 | 3 | 8 | 57| -|3 | 4 | 8 | 56| -|4 | 5 | 8 | 60| -|5 | 6 | 8 | 60| -|6 | 7 | 8 | 63| -|7 | 8 | 8 | 64| -|8 | 9 | 8 | 63| - - -#### Membership implementation - -For a valid signal, a user's `identity_commitment` (more on identity commitments below) must exist in identity membership tree. -Membership is proven by providing a membership proof (witness). -The fields from the membership proof required for the verification are: -`path_elements` and `identity_path_index`. - -[IncrementalQuinTree](https://github.com/appliedzkp/incrementalquintree) algorithm is used for constructing the Membership Merkle tree. -The circuits are reused from this repository. -You can find out more details about the IncrementalQuinTree algorithm [here](https://ethresear.ch/t/gas-and-circuit-constraint-benchmarks-of-binary-and-quinary-incremental-Merkle-trees-using-the-poseidon-hash-function/7446). - -### Slashing and Shamir's Secret Sharing - -Slashing is enabled by using polynomials and [Shamir's Secret sharing](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing). -In order to produce a valid proof, `identity_secret_hash` as a private input to the circuit. -Then a secret equation is created in the form of: - -``` -y = a_0 + x * a_1, -``` - -where `a_0` is the `identity_secret_hash` and `a_1 = hash(a_0, external nullifier)`. -Along with the generated proof, -the users need to provide a `(x, y)` share which satisfies the line equation, -in order for their proof to be verified. -`x` is the hashed signal, while the `y` is the circuit output. -With more than one pair of unique shares, anyone can derive `a_0`, i.e. the `identity_secret_hash` . -The hash of a signal will be the evaluation point `x`. -In this way, a member who sends more than one unique signal per `external_nullifier` risks their identity secret being revealed. - -Note that shares used in different epochs and different RLN apps cannot be used to derive the identity secret hash. - -Thanks to the `external_nullifier` definition, also shares computed from same secret within same epoch but in different RLN apps cannot be used to derive the identity secret hash. - -The `rln_identifier` is a random value from a finite field, -unique per RLN app, -and is used for additional cross-application security - to protect the user secrets being compromised if they use the same credentials accross different RLN apps. -If `rln_identifier` is not present, -the user uses the same credentials and sends a different message for two different RLN apps using the same `external_nullifier`, -then their user signals can be grouped by the `internal_nullifier` which could lead the user's secret revealed. -This is because two separate signals under the same `internal_nullifier` can be treated as rate limiting violation. -With adding the `rln_identifier` field we obscure the `internal_nullifier`, -so this kind of attack can be hardened because we don't have the same `internal_nullifier` anymore. - -### Identity credentials generation - -In order to be able to generate valid proofs, the users need to be part of the identity membership Merkle tree. -They are part of the identity membership Merkle tree if their `identity_commitment` is placed in a leaf in the tree. - -The identity credentials of a user are composed of: - -- `identity_secret` -- `identity_secret_hash` -- `identity_commitment` - -#### `identity_secret` - -The `identity_secret` is generated in the following way: - -``` -identity_nullifier = random_32_byte_buffer -identity_trapdoor = random_32_byte_buffer -identity_secret = [identity_nullifier, identity_trapdoor] -``` - -The same secret should not be used accross different protocols, -because revealing the secret at one protocol could break privacy for the user in the other protocols. - -#### `identity_secret_hash` - -The `identity_secret_hash` is generated by obtaining a Poseidon hash of the `identity_secret` array: - -``` -identity_secret_hash = poseidonHash(identity_secret) -``` - -#### `identity_commitment` - -The `identity_commitment` is generated by obtaining a Poseidon hash of the `identity_secret_hash`: - -``` -identity_commitment = poseidonHash([identity_secret_hash]) -``` - - -## Appendix A: Security considerations - -RLN is an experimental and still un-audited technology. This means that the circuits have not been yet audited. -Another consideration is the security of the underlying primitives. -zk-SNARKS require a trusted setup for generating a prover and verifier keys. -The standard for this is to use trusted [Multi-Party Computation (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) ceremony, -which requires two phases. -Trusted MPC ceremony has not yet been performed for the RLN circuits. - -### SSS security assumptions - -Shamir-Secret Sharing requires polynomial coefficients to be independent of each other. -However, `a_1` depends on `a_0` through the Poseidon hash algorithm. -Due to the design of Poseidon, it is possible to [attack](https://github.com/Rate-Limiting-Nullifier/rln-circuits/pull/7#issuecomment-1416085627) the protocol. -It was decided *not* to change the circuits design, since at the moment the attack is infeasible. Therefore, implementers must be aware that the current version provides approximately 160-bit security and not 254. -Possible improvements: -* [change the circuit](https://github.com/Rate-Limiting-Nullifier/rln-circuits/pull/7#issuecomment-1416085627) to make coefficients independent; -* switch to other hash function (Keccak, SHA); - -## Appendix B: Identity scheme choice - -The hashing scheme used is based on the design decisions which also include the Semaphore circuits. -Our goal was to ensure compatibility of the secrets for apps that use Semaphore and -RLN circuits while also not compromising on security because of using the same secrets. - -For example let's say there is a voting app that uses Semaphore, -and also a chat app that uses RLN. -The UX would be better if the users would not need to care about complicated identity management (secrets and commitments) t -hey use for each app, and it would be much better if they could use a single id commitment for this. -Also in some cases these kind of dependency is required - -RLN chat app using Interep as a registry (instead of using financial stake). -One potential concern about this interoperability is a slashed user on the RLN app side -having their security compromised on the semaphore side apps as well. -I.e obtaining the user's secret, anyone would be able to generate valid semaphore proofs as the slashed user. -We don't want that, and we should keep user's app specific security threats in the domain of that app alone. - -To achieve the above interoperability UX while preventing the shared app security model -(i.e slashing user on an RLN app having impact on Semaphore apps), -we had to do the follow in regard the identity secret and identity commitment: - -``` -identity_secret = [identity_nullifier, identity_trapdoor] -identity_secret_hash = poseidonHash(identity_secret) -identity_commitment = poseidonHash([identity_secret_hash]) -``` - -Secret components for generating Semaphore proof: - -``` -identity_nullifier -identity_trapdoor -``` - -Secret components for generting RLN proof: - -``` -identity_secret_hash -``` - -When a user is slashed on the RLN app side, their identity secret hash is revealed. -However a semaphore proof can't be generated because we do not know the user's nullifier and trapdoor. - -With this design we achieve: - -identity commitment (Semaphore) == identity commitment (RLN) -secret (semaphore) != secret (RLN). - -This is the only option we had for the scheme in order to satisfy the properties described above. - -Also for RLN we do a single secret component input for the circuit. -Thus we need to hash the secret array (two components) to a secret hash, -and we use that as a secret component input. - -## Appendix C: Auxiliary tooling - -There are few additional tools implemented for easier integrations and usage of the RLN protocol. - -[`zerokit`](https://github.com/vacp2p/zerokit) is a set of Zero Knowledge modules, written in Rust and designed to be used in many different environments. -Among different modules, it supports `Semaphore` and `RLN`. - -[`zk-kit`](https://github.com/appliedzkp/zk-kit) is a typescript library which exposes APIs for identity credentials generation, -as well as proof generation. -It supports various protocols (`Semaphore`, `RLN`). - -[`zk-keeper`](https://github.com/akinovak/zk-keeper) is a browser plugin which allows for safe credential storing and proof generation. -You can think of MetaMask for ZK-Proofs. -It uses `zk-kit` under the hood. - -## Appendix D: Example usage - -The following examples are code snippets using the `zerokit` RLN module. -The examples are written in [rust](https://www.rust-lang.org/). - -### Creating a RLN object - -```rust -use rln::protocol::*; -use rln::public::*; -use std::io::Cursor; -// We set the RLN parameters: -// - the tree height; -// - the circuit resource folder (requires a trailing "/"). -let tree_height = 20; -let resources = Cursor::new("../zerokit/rln/resources/tree_height_20/"); -// We create a new RLN instance -let mut rln = RLN::new(tree_height, resources); -``` - -### Generating identity credentials - -```rust -// We generate an identity tuple -let mut buffer = Cursor::new(Vec::::new()); -rln.extended_key_gen(&mut buffer).unwrap(); -// We deserialize the keygen output to obtain -// the identiy_secret and id_commitment -let (identity_trapdoor, identity_nullifier, identity_secret_hash, id_commitment) = deserialize_identity_tuple(buffer.into_inner()); -``` - -### Adding ID commitment to the RLN Merkle tree - -```rust -// We define the tree index where id_commitment will be added -let id_index = 10; -// We serialize id_commitment and pass it to set_leaf -let mut buffer = Cursor::new(serialize_field_element(id_commitment)); -rln.set_leaf(id_index, &mut buffer).unwrap(); -``` - -### Setting epoch and signal - -```rust -// We generate epoch from a date seed and we ensure is -// mapped to a field element by hashing-to-field its content -let epoch = hash_to_field(b"Today at noon, this year"); -// We set our signal -let signal = b"RLN is awesome"; -``` - -### Generating proof - -```rust -// We prepare input to the proof generation routine -let proof_input = prepare_prove_input(identity_secret, id_index, epoch, signal); -// We generate a RLN proof for proof_input -let mut in_buffer = Cursor::new(proof_input); -let mut out_buffer = Cursor::new(Vec::::new()); -rln.generate_rln_proof(&mut in_buffer, &mut out_buffer) - .unwrap(); -// We get the public outputs returned by the circuit evaluation -let proof_data = out_buffer.into_inner(); -``` - -### Verifiying proof - -```rust -// We prepare input to the proof verification routine -let verify_data = prepare_verify_input(proof_data, signal); -// We verify the zk-proof against the provided proof values -let mut in_buffer = Cursor::new(verify_data); -let verified = rln.verify(&mut in_buffer).unwrap(); -// We ensure the proof is valid -assert!(verified); -``` - -For more details please visit the [`zerokit`](https://github.com/vacp2p/zerokit) library. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/) - -## References - -- [1] https://medium.com/privacy-scaling-explorations/rate-limiting-nullifier-a-spam-protection-mechanism-for-anonymous-environments-bbe4006a57d -- [2] https://github.com/appliedzkp/zk-kit -- [3] https://github.com/akinovak/zk-keeper -- [4] https://z.cash/technology/zksnarks/ -- [5] https://en.wikipedia.org/wiki/Merkle_tree -- [6] https://eprint.iacr.org/2016/260.pdf -- [7] https://docs.circom.io/ -- [8] https://eprint.iacr.org/2019/458.pdf -- [9] https://github.com/appliedzkp/incrementalquintree -- [10] https://ethresear.ch/t/gas-and-circuit-constraint-benchmarks-of-binary-and-quinary-incremental-merkle-trees-using-the-poseidon-hash-function/7446 -- [11] https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing -- [12] https://research.nccgroup.com/2020/06/24/security-considerations-of-zk-snark-parameter-multi-party-computation/ -- [13] https://github.com/Rate-Limiting-Nullifier/rln-circuits/ -- [14] https://rate-limiting-nullifier.github.io/rln-docs/ diff --git a/vac/4/mvds-meta.md b/vac/4/mvds-meta.md deleted file mode 100644 index 9c58d54a9..000000000 --- a/vac/4/mvds-meta.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: 4/MVDS-META -name: MVDS Metadata Field -status: draft -editor: Sanaz Taheri <sanaz@status.im> -contributors: - - Dean Eigenmann <dean@status.im> - - Andrea Maria Piana <andreap@status.im> - - Oskar Thorén <oskarth@titanproxy.com> ---- -- Status: draft -- Editor: Sanaz Taheri <sanaz@status.im> -- Contributors: - - Dean Eigenmann <dean@status.im> - - Andrea Maria Piana <andreap@status.im> - - Oskar Thorén <oskarth@titanproxy.com> - - -In this specification, we describe a method to construct message history that will aid the consistency guarantees of [2/MVDS](../2/mvds). Additionally, we explain how data sync can be used for more lightweight messages that do not require full synchronization. - -## Motivation - -In order for more efficient synchronization of conversational messages, information should be provided allowing a node to more effectively synchronize the dependencies for any given message. - -## Format - -We introduce the metadata message which is used to convey information about a message and how it SHOULD be handled. - -```protobuf -package vac.mvds; - -message Metadata { - repeated bytes parents = 1; - bool ephemeral = 2; -} -``` - -Nodes MAY transmit a `Metadata` message by extending the MVDS [message](../2/mvds#payloads) with a `metadata` field. - -```diff -message Message { - bytes group_id = 6001; - int64 timestamp = 6002; - bytes body = 6003; -+ Metadata metadata = 6004; -} -``` - -### Fields - -| Name | Description | -| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `parents` | list of parent [`message identifier`s](../2/mvds#payloads) for the specific message. | -| `ephemeral` | indicates whether a message is ephemeral or not. | - -## Usage - -### `parents` - -This field contains a list of parent [`message identifier`s](../2/mvds#payloads) for the specific message. It MUST NOT contain any messages as parent whose `ack` flag was set to `false`. This establishes a directed acyclic graph (DAG)[^2] of persistent messages. - -Nodes MAY buffer messages until dependencies are satisfied for causal consistency[^3], they MAY also pass the messages straight away for eventual consistency[^4]. - -A parent is any message before a new message that a node is aware of that has no children. - -The number of parents for a given message is bound by [0, N], where N is the number of nodes participating in the conversation, therefore the space requirements for the `parents` field is O(N). - -If a message has no parents it is considered a root. There can be multiple roots, which might be disconnected, giving rise to multiple DAGs. - -### `ephemeral` - -When the `ephemeral` flag is set to `false`, a node MUST send an acknowledgment when they have received and processed a message. If it is set to `true`, it SHOULD NOT send any acknowledgment. The flag is `false` by default. - -Nodes MAY decide to not persist ephemeral messages, however they MUST NOT be shared as part of the message history. - -Nodes SHOULD send ephemeral messages in batch mode. As their delivery is not needed to be guaranteed. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## Footnotes -[^1]: [2/MVDS](../2/mvds) -[^2]: <https://en.wikipedia.org/wiki/Directed_acyclic_graph> -[^3]: Jepsen. [Causal Consistency](https://jepsen.io/consistency/models/causal). Jepsen, LLC. -[^4]: <https://en.wikipedia.org/wiki/Eventual_consistency> diff --git a/vac/46/gossipsub-tor-push.md b/vac/46/gossipsub-tor-push.md deleted file mode 100644 index f9e33afc4..000000000 --- a/vac/46/gossipsub-tor-push.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: 46/GOSSIPSUB-TOR-PUSH -name: Gossipsub Tor Push -status: raw -category: Standards Track -editor: Daniel Kaiser <danielkaiser@status.im> -contributors: ---- -- Status: raw -- Category: Standards Track -- Editor: Daniel Kaiser <danielkaiser@status.im> - -## Abstract - -This document extends the [libp2p gossipsub specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README) -specifying gossipsub Tor Push, -a gossipsub-internal way of pushing messages into a gossipsub network via Tor. -Tor Push adds sender identity protection to gossipsub. - -**Protocol identifier**: /meshsub/1.1.0 - -Note: Gossipsub Tor Push does not have a dedicated protocol identifier. -It uses the same identifier as gossipsub and works with all [pubsub](https://github.com/libp2p/specs/tree/master/pubsub) based protocols. -This allows nodes that are oblivious to Tor Push to process messages received via Tor Push. - -## Background - -Without extensions, [libp2p gossipsub](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README) -does not protect sender identities. - -A possible design of an anonymity extension to gossipsub is pushing messages through an anonymization network before they enter the gossipsub network. -[Tor](https://www.torproject.org/) is currently the largest anonymization network. -It is well researched and works reliably. -Basing our solution on Tor both inherits existing security research, as well as allows for a quick deployment. - -Using the anonymization network approach, even the first gossipsub node that relays a given message cannot link the message to its sender (within a relatively strong adversarial model). -Taking the low bandwidth overhead and the low latency overhead into consideration, Tor offers very good anonymity properties. - -## Functional Operation - -Tor Push allows nodes to push messages over Tor into the gossipsub network. -The approach specified in this document is fully backwards compatible. -Gossipsub nodes that do not support Tor Push can receive and relay Tor Push messages, -because Tor Push uses the same Protocol ID as gossipsub. - -Messages are sent over Tor via [SOCKS5](https://www.rfc-editor.org/rfc/rfc1928). -Tor Push uses a dedicated libp2p context to prevent information leakage. -To significantly increase resilience and mitigate circuit failures, -Tor Push establishes several connections, each to a different randomly selected gossipsub node. - -## Specification - -This section specifies the format of Tor Push messages, as well as how Tor Push messages are received and sent, respectively. - -### Wire Format - -The wire format of a Tor Push message corresponds verbatim to a typical [libp2p pubsub message](https://github.com/libp2p/specs/tree/master/pubsub#the-message). - -``` -message Message { - optional string from = 1; - optional bytes data = 2; - optional bytes seqno = 3; - required string topic = 4; - optional bytes signature = 5; - optional bytes key = 6; -} -``` - -### Receiving Tor Push Messages - -Any node supporting a protocol with ID `/meshsub/1.1.0` (e.g. gossipsub), can receive Tor Push messages. -Receiving nodes are oblivious to Tor Push and will process incoming messages according to the respective `meshsub/1.1.0` specification. - -### Sending Tor Push Messages - -In the following, we refer to nodes sending Tor Push messages as Tp-nodes (Tor Push nodes). - -Tp-nodes MUST setup a separate libp2p context, i.e. [libp2p switch](https://docs.libp2p.io/concepts/multiplex/switch/), -which MUST NOT be used for any purpose other than Tor Push. -We refer to this context as Tp-context. -The Tp-context MUST NOT share any data, e.g. peer lists, with the default context. - -Tp-peers are peers a Tp-node plans to send Tp-messages to. -Tp-peers MUST support `/meshsub/1.1.0`. -For retrieving Tp-peers, Tp-nodes SHOULD use an ambient peer discovery method that retrieves a random peer sample (from the set of all peers), e.g. [33/WAKU2-DISCV5](../../waku/standards/core/33/discv5). - -Tp-nodes MUST establish a connection as described in sub-section [Tor Push Connection Establishment](#connection-establishment) to at least one Tp-peer. -To significantly increase resilience, Tp-nodes SHOULD establish Tp-connections to `D` peers, -where `D` is the [desired gossipsub out-degree](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0##parameters), -with a default value of `8`. - -Each Tp-message MUST be sent via the Tp-context over at least one Tp-connection. -To increase resilience, Tp-messages SHOULD be sent via the Tp-context over all available Tp-connections. - -Control messages of any kind, e.g. gossipsub graft, MUST NOT be sent via Tor Push. - -#### Connection Establishment - -Tp-nodes establish a `/meshsub/1.1.0` connection to tp-peers via [SOCKS5](https://www.rfc-editor.org/rfc/rfc1928) over [Tor](https://www.torproject.org/). - -Establishing connections, which in turn establishes the respective Tor circuits, can be done ahead of time. - -#### Epochs - -Tor Push introduces epochs. -The default epoch duration is 10 minutes. -(We might adjust this default value based on experiments and evaluation in future versions of this document. -It seems a good trade-off between traceablity and circuit building overhead.) - -For each epoch, the Tp-context SHOULD be refreshed, which includes - -* libp2p peer-ID -* Tp-peer list -* connections to Tp-peers - -Both Tp-peer selection for the next epoch and establishing connections to the newly selected peers SHOULD be done during the current epoch -and be completed before the new epoch starts. -This avoids adding latency to message transmission. - -## Security/Privacy Considerations - -### Fingerprinting Attacks - -Protocols that feature distinct patterns are prone to fingerprinting attacks when using them over Tor Push. -Both malicious guards and exit nodes could detect these patterns -and link the sender and receiver, respectively, to transmitted traffic. -As a mitigation, such protocols can introduce dummy messages and/or padding to hide patterns. - -### DoS - -#### General DoS against Tor - -Using untargeted DoS to prevent Tor Push messages from entering the gossipsub network would cost vast resources, -because Tor Push transmits messages over several circuits and the Tor network is well established. - -#### Targeting the Guard - -Denying the service of a specific guard node blocks Tp-nodes using the respective guard. -Tor guard selection will replace this guard [TODO elaborate]. -Still, messages might be delayed during this window which might be critical to certain applications. - -#### Targeting the Gossipsub Network - -Without sophisticated rate limiting (for example using [17/WAKU2-RLN-RELAY](../../waku/standards/core/17/rln-relay)), -attackers can spam the gossipsub network. -It is not enough to just block peers that send too many messages, -because these messages might actually come from a Tor exit node that many honest Tp-nodes use. -Without Tor Push, protocols on top of gossipsub could block peers if they exceed a certain message rate. -With Tor Push, this would allow the reputation-based DoS attack described in -[Bitcoin over Tor isn't a Good Idea](https://ieeexplore.ieee.org/abstract/document/7163022). - -#### Peer Discovery - -The discovery mechanism could be abused to link requesting nodes to their Tor connections to discovered nodes. -An attacker that controls both the node that responds to a discovery query, -and the node who’s ENR the response contains, -can link the requester to a Tor connection that is expected to be opened to the node represented by the returned ENR soon after. - -Further, the discovery mechanism (e.g. discv5) could be abused to distribute disproportionately many malicious nodes. -For instance if p% of the nodes in the network are malicious, -an attacker could manipulate the discovery to return malicious nodes with 2p% probability. -The discovery mechanism needs to be resilient against this attack. - -### Roll-out Phase - -During the roll-out phase of Tor Push, during which only a few nodes use Tor Push, -attackers can narrow down the senders of Tor messages to the set of gossipsub nodes that do not originate messages. -Nodes who want anonymity guarantees even during the roll-out phase can use separate network interfaces for their default context and Tp-context, respectively. -For the best protection, these contexts should run on separate physical machines. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -* [libp2p gossipsub](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README) -* [libp2p pubsub](https://github.com/libp2p/specs/tree/master/pubsub) -* [libp2p pubsub message](https://github.com/libp2p/specs/tree/master/pubsub#the-message) -* [libp2p switch](https://docs.libp2p.io/concepts/multiplex/switch) -* [SOCKS5](https://www.rfc-editor.org/rfc/rfc1928) -* [Tor](https://www.torproject.org/) -* [33/WAKU2-DISCV5](../../waku/standards/core/33/discv5) -* [Bitcoin over Tor isn't a Good Idea](https://ieeexplore.ieee.org/abstract/document/7163022) -* [17/WAKU2-RLN-RELAY](../../waku/standards/core/17/rln-relay) diff --git a/vac/48/rln-interep-spec.md b/vac/48/rln-interep-spec.md deleted file mode 100644 index ee5285c35..000000000 --- a/vac/48/rln-interep-spec.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: 48/RLN-INTEREP-SPEC -name: Interep as group management for RLN -status: raw -category: -editor: Aaryamann Challani <aaryamann@status.im> -contributors: ---- -- Status: raw -- Category: -- Editor: Aaryamann Challani <aaryamann@status.im> - -## Abstract - -This spec integrates [Interep](https://interep.link) into the [RLN](../32/rln-v1) spec. -Interep is a group management protocol that allows for the creation of groups of users and the management of their membership. -It is used to manage the membership of the RLN group. - -Interep ties in web2 identities with reputation, and sorts the users into groups based on their reputation score. -For example, a GitHub user with over 100 followers is considered to have "gold" reputation. - -Interep uses [Semaphore](https://semaphore.appliedzkp.org/) under the hood to allow anonymous signaling of membership in a group. -Therefore, a user with a "gold" reputation can prove the existence of their membership without revealing their identity. - -RLN is used for spam prevention, and Interep is used for group management. - -By using Interep with RLN, we allow users to join RLN membership groups without the need for on-chain financial stake. - -## Motivation - -To have Sybil-Resistant group management, there are [implementations](https://github.com/vacp2p/rln-contract) of RLN which make use of financial stake on-chain. -However, this is not ideal because it reduces the barrier of entry for honest participants. - -In this case, honest participants will most likely have a web2 identity accessible to them, which can be used for joining an Interep reputation group. -By modifying the RLN spec to use Interep, we can have Sybil-Resistant group management without the need for on-chain financial stake. - -Since RLN and Interep both use Semaphore-style credentials, it is possible to use the same set of credentials for both. - -## Functional Operation - -Using Interep with RLN involves the following steps - - -1. Generate Semaphore credentials -2. Verify reputation and join Interep group -3. Join RLN membership group via interaction with Smart Contract, by passing a proof of membership to the Interep group - -### 1. Generate Semaphore credentials - -Semaphore credentials are generated in a standard way, depicted in the [Semaphore documentation](https://semaphore.appliedzkp.org/docs/guides/identities#create-deterministic-identities). - -### 2. Verify reputation and join Interep group - -Using the Interep app deployed on [Goerli](https://goerli.interep.link/), the user can check their reputation tier and join the corresponding group. -This results in a transaction to the Interep contract, which adds them to the group. - -### 3. Join RLN membership group - -Instead of sending funds to the RLN contract to join the membership group, the user can send a proof of membership to the Interep group. -This proof is generated by the user, and is verified by the contract. -The contract ensures that the user is a member of the Interep group, and then adds them to the RLN membership group. - -Following is the modified signature of the register function in the RLN contract - - -```solidity - /// @param groupId: Id of the group. - /// @param signal: Semaphore signal. - /// @param nullifierHash: Nullifier hash. - /// @param externalNullifier: External nullifier. - /// @param proof: Zero-knowledge proof. - /// @param idCommitment: ID Commitment of the member. - function register( - uint256 groupId, - bytes32 signal, - uint256 nullifierHash, - uint256 externalNullifier, - uint256[8] calldata proof, - uint256 idCommitment - ) -``` - -## Verification of messages - -Messages are verified the same way as in the [RLN spec](../32/rln-v1#verification). - -## Slashing - -The slashing mechanism is the same as in the [RLN spec](../32/rln-v1#slashing). -It is important to note that the slashing may not have the intended effect on the user, since the only consequence is that they cannot send messages. -This is due to the fact that the user can send a identity commitment in the registration to the RLN contract, which is different than the one used in the Interep group. - -## Proof of Concept - -A proof of concept is available at [vacp2p/rln-interp-contract](https://github.com/vacp2p/rln-interep-contract) which integrates Interep with RLN. - -## Security Considerations - -1. As mentioned in [Slashing](#slashing), the slashing mechanism may not have the intended effect on the user. -2. This spec inherits the security considerations of the [RLN spec](../32/rln-v1#security-considerations). -3. This spec inherits the security considerations of [Interep](https://docs.interep.link/). -4. A user may make multiple registrations using the same Interep proofs but different identity commitments. The way to mitigate this is to check if the nullifier hash has been detected previously in proof verification. - -## References - -1. [RLN spec](../32/rln-v1) -2. [Interep](https://interep.link) -3. [Semaphore](https://semaphore.appliedzkp.org/) -4. [Decentralized cloudflare using Interep](https://ethresear.ch/t/decentralised-cloudflare-using-rln-and-rich-user-identities/10774) -5. [Interep contracts](https://github.com/interep-project/contracts) -6. [RLN contract](https://github.com/vacp2p/rln-contract) -7. [RLNP2P](https://rlnp2p.vac.dev/) diff --git a/vac/58/rln-v2.md b/vac/58/rln-v2.md deleted file mode 100644 index 67975ea52..000000000 --- a/vac/58/rln-v2.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: 58/RLN-V2 -name: Rate Limit Nullifier V2 -status: raw -editor: Rasul Ibragimov <curryrasul@gmail.com> -contributors: -- Lev Soukhanov <0xdeadfae@gmail.com> ---- -- Status: raw -- Editor: Rasul Ibragimov <curryrasul@gmail.com> -- Contributors: - - Lev Soukhanov <0xdeadfae@gmail.com> - - -## Abstract - -The protocol specified in this document is an improvement of [32/RLN-V1](../32/rln-v1), being more general construct, that allows to set various limits for an epoch (it's 1 message per epoch in [32/RLN-V1](../32/rln-v1)) while remaining almost as simple as it predecessor. -Moreover, it allows to set different rate-limits for different RLN app users based on some public data, e.g. stake or reputation. - -## Motivation - -The main goal of this RFC is to generalize [32/RLN-V1](../32/rln-v1) and expand its applications. -There are two different subprotocols based on this protocol: -* RLN-Same - RLN with the same rate-limit for all users; -* RLN-Diff - RLN that allows to set different rate-limits for different users. - -It is important to note that by using a large epoch limit value, users will be able to remain anonymous, because their `internal_nullifiers` will not be repeated until they exceed the limit. - -## Flow - -As in [32/RLN-V1](../32/rln-v1), the general flow can be described by three steps: - -1. Registration -2. Signaling -3. Verification and slashing - -The two sub-protocols have different flows, and hence are defined separately. - -### Important note - -All terms and parameters used remain the same as in [32/RLN-V1](../32/rln-v1), more details [here](../32/rln-v1#technical-overview) - -## RLN-Same flow - -### Registration - -The registration process in the RLN-Same subprotocol does not differ from [32/RLN-V1](../32/rln-v1). - -### Signalling - -#### Proof generation - -For proof generation, the user needs to submit the following fields to the circuit: - -``` -{ - identity_secret: identity_secret_hash, - path_elements: Merkle_proof.path_elements, - identity_path_index: Merkle_proof.indices, - x: signal_hash, - message_id: message_id, - external_nullifier: external_nullifier, - message_limit: message_limit -} -``` - -#### Calculating output - -The following fields are needed for proof output calculation: - -``` -{ - identity_secret_hash: bigint, - external_nullifier: bigint, - message_id: bigint, - x: bigint, -} -``` - -The output `[y, internal_nullifier]` is calculated in the following way: - -``` -a_0 = identity_secret_hash -a_1 = poseidonHash([a0, external_nullifier, message_id]) - -y = a_0 + x * a_1 - -internal_nullifier = poseidonHash([a_1]) -``` - -## RLN-Diff flow - -### Registration - -**id_commitment** in [32/RLN-V1](../32/rln-v1) is equal to `poseidonHash(identity_secret)`. -The goal of RLN-Diff is to set different rate-limits for different users. -It follows that **id_commitment** must somehow depend on the `user_message_limit` parameter, where 0 <= `user_message_limit` <= `message_limit`. -There are few ways to do that: -1. Sending `identity_secret_hash` = `poseidonHash(identity_secret, userMessageLimit)` and zk proof that `user_message_limit` is valid (is in the right range). -This approach requires zkSNARK verification, which is an expensive operation on the blockchain. -2. Sending the same `identity_secret_hash` as in [32/RLN-V1](../32/rln-v1) (`poseidonHash(identity_secret)`) and a user_message_limit publicly to a server or smart-contract where `rate_commitment` = `poseidonHash(identity_secret_hash, userMessageLimit)` is calculated. -The leaves in the membership Merkle tree would be the rate_commitments of the users. -This approach requires additional hashing in the Circuit, but it eliminates the need for zk proof verification for the registration. - -Both methods are correct, and the choice of the method is left to the implementer. -It is recommended to use second method for the reasons already described. -The following flow description will also be based on the second method. - -### Signalling - -#### Proof generation - -For proof generation, the user need to submit the following fields to the circuit: - -``` -{ - identity_secret: identity_secret_hash, - path_elements: Merkle_proof.path_elements, - identity_path_index: Merkle_proof.indices, - x: signal_hash, - message_id: message_id, - external_nullifier: external_nullifier, - user_message_limit: message_limit -} -``` - -#### Calculating output - -The Output is calculated in the same way as the RLN-Same sub-protocol. - -### Verification and slashing - -Verification and slashing in both subprotocols remain the same as in [32/RLN-V1](../32/rln-v1). -The only difference that may arise is the `message_limit` check in RLN-Same, since it is now a public input of the Circuit. - -### ZK Circuits specification - -The design of the [32/RLN-V1](../32/rln-v1) circuits is different from the circuits of this protocol. -RLN-v2 requires additional algebraic constraints. -The membership proof and Shamir's Secret Sharing constraints remain unchanged. - -The ZK Circuit is implemented using a [Groth-16 ZK-SNARK](https://eprint.iacr.org/2016/260.pdf), -using the [circomlib](https://docs.circom.io/) library. -Both schemes contain compile-time constants/system parameters: -* DEPTH - depth of membership Merkle tree -* LIMIT_BIT_SIZE - bit size of `limit` numbers, e.g. for the 16 - maximum `limit` number is 65535. - -The main difference of the protocol is that instead of a new polynomial (a new value `a_1`) for a new epoch, a new polynomial is generated for each message. -The user assigns an identifier to each message; the main requirement is that this identifier be in the range from 1 to `limit`. -This is proven using range constraints. - -### RLN-Same circuit - -#### Circuit parameters - -**Public Inputs** -- `x` -- `external_nullifier` -- `message_limit` - limit per epoch - -**Private Inputs** -- `identity_secret_hash` -- `path_elements` -- `identity_path_index` -- `message_id` - -**Outputs** -- `y` -- `root` -- `internal_nullifier` - -### RLN-Diff circuit - -In the RLN-Diff scheme, instead of the public parameter `message_limit`, a parameter is used that is set for each user during registration (`user_message_limit`); the `message_id` value is compared to it in the same way as it is compared to `message_limit` in the case of RLN-Same. - -#### Circuit parameters - -**Public Inputs** -- `x` -- `external_nullifier` - -**Private Inputs** -- `identity_secret_hash` -- `path_elements` -- `identity_path_index` -- `message_id` -- `user_message_limit` - -**Outputs** -- `y` -- `root` -- `internal_nullifier` - -## Appendix A: Security considerations - -Although there are changes in the circuits, this spec inherits all the security considerations of [32/RLN-V1](../32/rln-v1). - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [1](https://zkresear.ch/t/rate-limit-nullifier-v2-circuits/102) -- [2](https://github.com/Rate-Limiting-Nullifier/rln-circuits-v2) -- [3](../32/rln-v1#technical-overview) diff --git a/vac/70/eth-secpm.md b/vac/70/eth-secpm.md deleted file mode 100644 index e6329ebbe..000000000 --- a/vac/70/eth-secpm.md +++ /dev/null @@ -1,811 +0,0 @@ ---- -title: 70/ETH-SECPM -name: Secure channel setup using Ethereum accounts -status: raw -category: Standards Track -editor: Ramses Fernandez <ramses@status.im> -contributors: ---- -- Status: raw -- Category: Standards Track -- Editor: Ramses Fernandez <ramses@status.im> - -## Motivation -The need for secure communications has become paramount. -Traditional centralized messaging protocols are susceptible to various security threats, -including unauthorized access, data breaches, and single points of failure. -Therefore a decentralized approach to secure communication becomes increasingly relevant, -offering a robust solution to address these challenges. - -This specification outlines a private messaging service using the Ethereum blockchain as authentication service. -Rooted in the existing [model](../../waku/standards/application/20/toy-eth-pm), -this proposal addresses the deficiencies related to forward privacy and authentication inherent in the current framework. -The specification is divided into 3 sections: - -- Private 1-to-1 communications protocol, based on [Signal's double ratchet](https://signal.org/docs/specifications/doubleratchet/). -- Private group messaging protocol, based on the [MLS protocol](https://datatracker.ietf.org/doc/rfc9420/). -- Description of an Ethereum-based authentication protocol, based on [SIWE](https://eips.ethereum.org/EIPS/eip-4361). - - -## Private 1-to-1 communications protocol - -### Theory -The specification is based on the noise protocol framework. -It corresponds to the double ratchet scheme combined with the X3DH algorithm, which will be used to initialize the former. -We chose to express the protocol in noise to be be able to use the noise streamlined implementation and proving features. -The X3DH algorithm provides both authentication and forward secrecy, as stated in the [X3DH specification](https://signal.org/docs/specifications/x3dh/). - -This protocol will consist of several stages: - -1. Key setting for X3DH: this step will produce prekey bundles for Bob which will be fed into X3DH. It will also allow Alice to generate the keys required to run the X3DH algorithm correctly. -2. Execution of X3DH: This step will output a common secret key `SK` together with an additional data vector `AD`. Both will be used in the double ratchet algorithm initialization. -3. Execution of the double ratchet algorithm for forward secure, authenticated communications, using the common secret key `SK`, obtained from X3DH, as a root key. - -The protocol assumes the following requirements: -- Alice knows Bob’s Ethereum address. -- Bob is willing to participate in the protocol, and publishes his public key. -- Bob’s ownership of his public key is verifiable, -- Alice wants to send message M to Bob. -- An eavesdropper cannot read M’s content even if she is storing it or relaying it. - -### Syntax -#### Cryptographic suite -The following cryptographic functions MUST be used: -- `X488` as Diffie-Hellman function `DH`. -- `SHA256` as KDF. -- `AES256-GCM` as AEAD algorithm. -- `SHA512` as hash function. -- `XEd448` for digital signatures. - -#### X3DH initialization -This scheme MUST work on the curve curve448. -The X3DH algorithm corresponds to the IX pattern in Noise. - -Bob and Alice MUST define personal key pairs `(ik_B, IK_B)` and `(ik_A, IK_A)` respectively where: -- The key `ik` must be kept secret, -- and the key `IK` is public. - -Bob MUST generate new keys using `(ik_B, IK_B) = GENERATE_KEYPAIR(curve = curve448)`. - -Bob MUST also generate a public key pair `(spk_B, SPK_B) = GENERATE_KEYPAIR(curve = curve448)`. - -`SPK` is a public key generated and stored at medium-term. -Both signed prekey and the certificate MUST undergo periodic replacement. -After replacing the key, -Bob keeps the old private key of `SPK` for some interval, dependant on the implementation. -This allows Bob to decrypt delayed messages. - -Bob MUST sign `SPK` for authentication: `SigSPK = XEd448(ik, Encode(SPK))` - -A final step requires the definition of `prekey_bundle = (IK, SPK, SigSPK, OPK_i)` - -One-time keys `OPK` MUST be generated as `(opk_B, OPK_B) = GENERATE_KEYPAIR(curve = curve448)`. - -Before sending an initial message to Bob, Alice MUST generate an AD: `AD = Encode(IK_A) || Encode(IK_B)`. - -Alice MUST generate ephemeral key pairs `(ek, EK) = GENERATE_KEYPAIR(curve = curve448)`. - -The function `Encode()` transforms an curve448 public key into a byte sequence. -This is specified in the [RFC 7748](http://www.ietf.org/rfc/rfc7748.txt) on elliptic curves for security. - -One MUST consider `q = 2^446 - 13818066809895115352007386748515426880336692474882178609894547503885` for digital signatures with `(XEd448_sign, XEd448_verify)`: -``` -XEd448_sign((ik, IK), message): - Z = randbytes(64) - r = SHA512(2^456 - 2 || ik || message || Z ) - R = (r * convert_mont(5)) % q - h = SHA512(R || IK || M) - s = (r + h * ik) % q - return (R || s) -``` -``` -XEd448_verify(u, message, (R || s)): - if (R.y >= 2^448) or (s >= 2^446): return FALSE - h = (SHA512(R || 156326 || message)) % q - R_check = s * convert_mont(5) - h * 156326 - if R == R_check: return TRUE - return FALSE -``` -``` -convert_mont(u): - u_masked = u % mod 2^448 - inv = ((1 - u_masked)^(2^448 - 2^224 - 3)) % (2^448 - 2^224 - 1) - P.y = ((1 + u_masked) * inv)) % (2^448 - 2^224 - 1) - P.s = 0 - return P -``` - -#### Use of X3DH -This specification combines the double ratchet with X3DH using the following data as initialization for the former: - -- The `SK` output from X3DH becomes the `SK` input of the double ratchet. See section 3.3 of [Signal Specification](https://signal.org/docs/specifications/doubleratchet/) for a detailed description. -- The `AD` output from X3DH becomes the `AD` input of the double ratchet. See sections 3.4 and 3.5 of [Signal Specification](https://signal.org/docs/specifications/doubleratchet/) for a detailed description. -- Bob’s signed prekey `SigSPKB` from X3DH is used as Bob’s initial ratchet public key of the double ratchet. - -X3DH has three phases: - -1. Bob publishes his identity key and prekeys to a server, a network, or dedicated smart contract. -2. Alice fetches a prekey bundle from the server, and uses it to send an initial message to Bob. -3. Bob receives and processes Alice's initial message. - -Alice MUST perform the following computations: -``` -dh1 = DH(IK_A, SPK_B, curve = curve448) -dh2 = DH(EK_A, IK_B, curve = curve448) -dh3 = DH(EK_A, SPK_B) -SK = KDF(dh1 || dh2 || dh3) -``` -Alice MUST send to Bob a message containing: - -- `IK_A, EK_A`. -- An identifier to Bob's prekeys used. -- A message encrypted with AES256-GCM using `AD` and `SK`. - -Upon reception of the initial message, Bob MUST: -1. Perform the same computations above with the `DH()` function. -2. Derive `SK` and construct `AD`. -3. Decrypt the initial message encrypted with `AES256-GCM`. -4. If decryption fails, abort the protocol. - -#### Initialization of the double datchet -In this stage Bob and Alice have generated key pairs and agreed a shared secret `SK` using X3DH. - -Alice calls `RatchetInitAlice()` defined below: -``` -RatchetInitAlice(SK, IK_B): - state.DHs = GENERATE_KEYPAIR(curve = curve448) - state.DHr = IK_B - state.RK, state.CKs = HKDF(SK, DH(state.DHs, state.DHr)) - state.CKr = None - state.Ns, state.Nr, state.PN = 0 - state.MKSKIPPED = {} -``` -The HKDF function MUST be the proposal by [Krawczyk and Eronen](http://www.ietf.org/rfc/rfc5869.txt). -In this proposal `chaining_key` and `input_key_material` MUST be replaced with `SK` and the output of `DH` respectively. - -Similarly, Bob calls the function `RatchetInitBob()` defined below: -``` -RatchetInitBob(SK, (ik_B,IK_B)): - state.DHs = (ik_B, IK_B) - state.Dhr = None - state.RK = SK - state.CKs, state.CKr = None - state.Ns, state.Nr, state.PN = 0 - state.MKSKIPPED = {} -``` -#### Encryption -This function performs the symmetric key ratchet. - -``` -RatchetEncrypt(state, plaintext, AD): - state.CKs, mk = HMAC-SHA256(state.CKs) - header = HEADER(state.DHs, state.PN, state.Ns) - state.Ns = state.Ns + 1 - return header, AES256-GCM_Enc(mk, plaintext, AD || header) -``` -The `HEADER` function creates a new message header containing the public key from the key pair output of the `DH`function. -It outputs the previous chain length `pn`, and the message number `n`. -The returned header object contains ratchet public key `dh` and integers `pn` and `n`. - -#### Decryption -The function `RatchetDecrypt()` decrypts incoming messages: -``` -RatchetDecrypt(state, header, ciphertext, AD): - plaintext = TrySkippedMessageKeys(state, header, ciphertext, AD) - if plaintext != None: - return plaintext - if header.dh != state.DHr: - SkipMessageKeys(state, header.pn) - DHRatchet(state, header) - SkipMessageKeys(state, header.n) - state.CKr, mk = HMAC-SHA256(state.CKr) - state.Nr = state.Nr + 1 - return AES256-GCM_Dec(mk, ciphertext, AD || header) -``` -Auxiliary functions follow: - -``` -DHRatchet(state, header): - state.PN = state.Ns - state.Ns = state.Nr = 0 - state.DHr = header.dh - state.RK, state.CKr = HKDF(state.RK, DH(state.DHs, state.DHr)) - state.DHs = GENERATE_KEYPAIR(curve = curve448) - state.RK, state.CKs = HKDF(state.RK, DH(state.DHs, state.DHr)) -``` -``` -SkipMessageKeys(state, until): - if state.NR + MAX_SKIP < until: - raise Error - if state.CKr != none: - while state.Nr < until: - state.CKr, mk = HMAC-SHA256(state.CKr) - state.MKSKIPPED[state.DHr, state.Nr] = mk - state.Nr = state.Nr + 1 -``` -``` -TrySkippedMessageKey(state, header, ciphertext, AD): - if (header.dh, header.n) in state.MKSKIPPED: - mk = state.MKSKIPPED[header.dh, header.n] - delete state.MKSKIPPED[header.dh, header.n] - return AES256-GCM_Dec(mk, ciphertext, AD || header) - else: return None -``` - -## Information retrieval - -### Static data -Some data, such as the key pairs `(ik, IK)` for Alice and Bob, MAY NOT be regenerated after a period of time. -Therefore the prekey bundle MAY be stored in long-term storage solutions, such as a dedicated smart contract which outputs such a key pair when receiving an Ethereum wallet address. - -Storing static data is done using a dedicated smart contract `PublicKeyStorage` which associates the Ethereum wallet address of a user with his public key. -This mapping is done by `PublicKeyStorage` using a `publicKeys` function, or a `setPublicKey` function. -This mapping is done if the user passed an authorization process. -A user who wants to retrieve a public key associated with a specific wallet address calls a function `getPublicKey`. -The user provides the wallet address as the only input parameter for `getPublicKey`. -The function outputs the associated public key from the smart contract. - -### Ephemeral data -Storing ephemeral data on Ethereum MAY be done using a combination of on-chain and off-chain solutions. -This approach provides an efficient solution to the problem of storing updatable data in Ethereum. -1. Ethereum stores a reference or a hash that points to the off-chain data. -2. Off-chain solutions can include systems like IPFS, traditional cloud storage solutions, or decentralized storage networks such as a [Swarm](https://www.ethswarm.org). -In any case, the user stores the associated IPFS hash, URL or reference in Ethereum. - -The fact of a user not updating the ephemeral information can be understood as Bob not willing to participate in any communication. - -This applies to `KeyPackage`, which in the MLS specification are meant to be stored in a directory provided by the delivery service. -If such an element does not exist, `KeyPackage` MUST be stored according to one of the two options outlined above. - -## Private group messaging protocol -### Theory -The [Messaging Layer Security](https://datatracker.ietf.org/doc/rfc9420/)(MLS) protocol aims at providing a group of users with end-to-end encryption in an authenticated and asynchronous way. -The main security characteristics of the protocol are: Message confidentiality and authentication, sender authentication, -membership agreement, post-remove and post-update security, and forward secrecy and post-compromise security. -The MLS protocol achieves: low-complexity, group integrity, synchronization and extensibility. - -The extension to group chat described in forthcoming sections is built upon the [MLS](https://datatracker.ietf.org/doc/rfc9420/) protocol. - -### Syntax -Each MLS session uses a single cipher suite that specifies the primitives to be used in group key computations. The cipher suite MUST use: -- `X488` as Diffie-Hellman function. -- `SHA256` as KDF. -- `AES256-GCM` as AEAD algorithm. -- `SHA512` as hash function. -- `XEd448` for digital signatures. - -Formats for public keys, signatures and public-key encryption MUST follow Section 5.1 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Hash-based identifiers -Some MLS messages refer to other MLS objects by hash. -These identifiers MUST be computed according to Section 5.2 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Credentials -Each member of a group presents a credential that provides one or more identities for the member and associates them with the member's signing key. -The identities and signing key are verified by the Authentication Service in use for a group. - -Credentials MUST follow the specifications of section 5.3 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Message framing -Handshake and application messages use a common framing structure providing encryption to ensure confidentiality within the group, and signing to authenticate the sender. - -The structure is: -- `PublicMessage`: represents a message that is only signed, and not encrypted. -The definition and the encoding/decoding of a `PublicMessage` MUST follow the specification in section 6.2 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). -- `PrivateMessage`: represents a signed and encrypted message, with protections for both the content of the message and related metadata. -The definition, and the encoding/decoding of a `PrivateMessage` MUST follow the specification in section 6.3 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -Applications MUST use `PrivateMessage` to encrypt application messages. - -Applications SHOULD use `PrivateMessage` to encode handshake messages. - -Each encrypted MLS message carries a "generation" number which is a per-sender incrementing counter. -If a group member observes a gap in the generation sequence for a sender, -then they know that they have missed a message from that sender. - -### Nodes contents -The nodes of a ratchet tree contain several types of data: - -- Leaf nodes describe individual members. -- Parent nodes describe subgroups. - -Contents of each kind of node, and its structure MUST follow the indications described in sections 7.1 and 7.2 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Leaf node validation -`KeyPackage` objects describe the client's capabilities and provides keys that can be used to add the client to a group. - -The validity of a leaf node needs to be verified at the following stages: -- When a leaf node is downloaded in a `KeyPackage`, before it is used to add the client to the group. -- When a leaf node is received by a group member in an Add, Update, or Commit message. -- When a client validates a ratchet tree. - -A client MUST verify the validity of a leaf node following the instructions of section 7.3 in [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Ratchet tree evolution -Whenever a member initiates an epoch change, they MAY need to refresh the key pairs of their leaf and of the nodes on their direct path. This is done to keep forward secrecy and post-compromise security. -The member initiating the epoch change MUST follow this procedure procedure. -A member updates the nodes along its direct path as follows: -- Blank all the nodes on the direct path from the leaf to the root. -- Generate a fresh HPKE key pair for the leaf. -- Generate a sequence of path secrets, one for each node on the leaf's filtered direct path. -It MUST follow the procedure described in section 7.4 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). -- Compute the sequence of HPKE key pairs `(node_priv,node_pub)`, one for each node on the leaf's direct path. -It MUST follow the procedure described in section 7.4 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Views of the tree synchronization -After generating fresh key material and applying it to update their local tree state, the generator broadcasts this update to other members of the group. -This operation MUST be done according to section 7.5 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Leaf synchronization -Changes to group memberships MUST be represented by adding and removing leaves of the tree. -This corresponds to increasing or decreasing the depth of the tree, resulting in the number of leaves being doubled or halved. -These operations MUST be done as described in section 7.7 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Tree and parent hashing -Group members can agree on the cryptographic state of the group by generating a hash value that represents the contents of the group ratchet tree and the member’s credentials. -The hash of the tree is the hash of its root node, defined recursively from the leaves. -Tree hashes summarize the state of a tree at point in time. -The hash of a leaf is the hash of the `LeafNodeHashInput` object. -At the same time, the hash of a parent node including the root, is the hash of a `ParentNodeHashInput` object. -Parent hashes capture information about how keys in the tree were populated. - -Tree and parent hashing MUST follow the directions in Sections 7.8 and 7.9 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Key schedule -Group keys are derived using the `Extract` and `Expand` functions from the KDF for the group's cipher suite, as well as the functions defined below: - -``` -ExpandWithLabel(Secret, Label, Context, Length) = KDF.Expand(Secret, KDFLabel, Length) -DeriveSecret(Secret, Label) = ExpandWithLabel(Secret, Label, "", KDF.Nh) -``` -`KDFLabel` MUST be specified as: -``` -struct { - uint16 length; - opaque label; - opaque context; -} KDFLabel; -``` -The fields of `KDFLabel` MUST be: -``` -length = Length; -label = "MLS 1.0 " + Label; -context = Context; -``` - -Each member of the group MUST maintaint a `GroupContext` object summarizing the state of the group. -The sturcture of such object MUST be: - -``` -struct { -ProtocolVersion version = mls10; -CipherSuite cipher_suite; -opaque group_id; -uint64 epoch; -opaque tree_hash; -opaque confirmed_trasncript_hash; -Extension extension; -} GroupContext; -``` - -The use of key scheduling MUST follow the indications in sections 8.1 - 8.7 in [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Secret trees -For the generation of encryption keys and nonces, the key schedule begins with the `encryption_secret` at the root and derives a tree of secrets with the same structure as the group's ratchet tree. -Each leaf in the secret tree is associated with the same group member as the corresponding leaf in the ratchet tree. - -If `N` is a parent node in the secret tree, the secrets of the children of `N` MUST be defined following section 9 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -#### Encryption keys - -MLS encrypts three different types of information: -- Metadata (sender information). -- Handshake messages (Proposal and Commit). -- Application messages. - -For handshake and application messages, a sequence of keys is derived via a sender ratchet. -Each sender has their own sender ratchet, and each step along the ratchet is called a generation. These procedures MUST follow section 9.1 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -#### Deletion schedule - -All security-sensitive values MUST be deleted as soon as they are consumed. -A sensitive value S is consumed if: - -- S was used to encrypt or (successfully) decrypt a message. -- A key, nonce, or secret derived from S has been consumed. - -The deletion procedure MUST follow the instruction described in section 9.2 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Key packages -KeyPackage objects are used to ease the addition of clients to a group asynchronously. -A KeyPackage object specifies: - -- Protocol version and cipher suite supported by the client. -- Public keys that can be used to encrypt Welcome messages. Welcome messages provide new members with the information to initialize their state for the epoch in which they were added or in which they want to add themselves to the group -- The content of the leaf node that should be added to the tree to represent this client. - -KeyPackages are intended to be used only once and SHOULD NOT be reused. - -Clients MAY generate and publish multiple KeyPackages to support multiple cipher suites. - -The structure of the object MUST be: -``` -struct { -ProtocolVersion version; -CipherSuite cipher_suite; -HPKEPublicKey init_key; -LeafNode leaf_node; -Extension extensions; -/* SignWithLabel(., "KeyPackageTBS", KeyPackageTBS) */ -opaque signature; -} -``` -``` -struct { -ProtocolVersion version; -CipheSuite cipher_suite; -HPKEPublicKey init_key; -LeafNode leaf_node; -Extension extensions; -} -``` -`KeyPackage` object MUST be verified when: -- A `KeyPackage` is downloaded by a group member, before it is used to add the client to the group. -- When a `KeyPackage` is received by a group member in an `Add` message. - -Verification MUST be done as follows: -- Verify that the cipher suite and protocol version of the `KeyPackage` match those in the `GroupContext`. -- Verify that the `leaf_node` of the `KeyPackage` is valid for a `KeyPackage`. -- Verify that the signature on the `KeyPackage` is valid. -- Verify that the value of `leaf_node.encryption_key` is different from the value of the `init_key field`. - -HPKE public keys are opaque values in a format defined by Section 4 of [RFC9180](https://datatracker.ietf.org/doc/rfc9180/). - -Signature public keys are represented as opaque values in a format defined by the cipher suite's signature scheme. - -### Group creation -A group is always created with a single member. -Other members are then added to the group using the usual Add/Commit mechanism. -The creator of a group MUST set: -- the group ID. -- cipher suite. -- initial extensions for the group. - -If the creator intends to add other members at the time of creation, then it SHOULD fetch `KeyPackages` for those members, and select a cipher suite and extensions according to their capabilities. - -The creator MUST use the capabilities information in these `KeyPackages` to verify that the chosen version and cipher suite is the best option supported by all members. - -Group IDs SHOULD be constructed so they are unique with high probability. - -To initialize a group, the creator of the group MUST initialize a one-member group with the following initial values: -- Ratchet tree: A tree with a single node, a leaf node containing an HPKE public key and credential for the creator. -- Group ID: A value set by the creator. -- Epoch: `0`. -- Tree hash: The root hash of the above ratchet tree. -- Confirmed transcript hash: The zero-length octet string. -- Epoch secret: A fresh random value of size `KDF.Nh`. -- Extensions: Any values of the creator's choosing. - -The creator MUST also calculate the interim transcript hash: -- Derive the `confirmation_key` for the epoch according to Section 8 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). -- Compute a `confirmation_tag` over the empty `confirmed_transcript_hash` using the `confirmation_key` as described in Section 8.1 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). -- Compute the updated `interim_transcript_hash` from the `confirmed_transcript_hash` and the `confirmation_tag` as described in Section 8.2 [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -All members of a group MUST support the cipher suite and protocol version in use. Additional requirements MAY be imposed by including a `required_capabilities` extension in the `GroupContext`. - -``` -struct { -ExtensionType extension_types; -ProposalType proposal_types; -CredentialType credential_types; -} -``` - -### Group evolution -Group membership can change, and existing members can change their keys in order to achieve post-compromise security. -In MLS, each such change is accomplished by a two-step process: -- A proposal to make the change is broadcast to the group in a Proposal message. -- A member of the group or a new member broadcasts a Commit message that causes one or more proposed changes to enter into effect. - -The group evolves from one cryptographic state to another each time a Commit message is sent and processed. -These states are called epochs and are uniquely identified among states of the group by eight-octet epoch values. - -Proposals are included in a `FramedContent` by way of a `Proposal` structure that indicates their type: - -``` -struct { -ProposalType proposal_type; -select (Proposal.proposal_type) { -case add: Add: -case update: Update; -case remove: Remove; -case psk: PreSharedKey; -case reinit: ReInit; -case external_init: ExternalInit; -case group_context_extensions: GroupContextExtensions; -} -``` -On receiving a `FramedContent` containing a `Proposal`, a client MUST verify the signature inside `FramedContentAuthData` and that the epoch field of the enclosing FramedContent is equal to the epoch field of the current GroupContext object. -If the verification is successful, then the Proposal SHOULD be cached in such a way that it can be retrieved by hash in a later Commit message. - -Proposals are organized as follows: -- `Add`: requests that a client with a specified KeyPackage be added to the group. -- `Update`: similar to Add, it replaces the sender's LeafNode in the tree instead of adding a new leaf to the tree. -- `Remove`: requests that the member with the leaf index removed be removed from the group. -- `ReInit`: requests to reinitialize the group with different parameters. -- `ExternalInit`: used by new members that want to join a group by using an external commit. -- `GroupContentExtensions`: it is used to update the list of extensions in the GroupContext for the group. - -Proposals structure and semantics MUST follow sections 12.1.1 - 12.1.7 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -Any list of commited proposals MUST be validated either by a the group member who created the commit, or any group member processing such commit. -The validation MUST be done according to one of the procedures described in Section 12.2 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -When creating or processing a Commit, a client applies a list of proposals to the ratchet tree and `GroupContext`. -The client MUST apply the proposals in the list in the order described in Section 12.3 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Commit messages -Commit messages initiate new group epochs. -It informs group members to update their representation of the state of the group by applying the proposals and advancing the key schedule. - -Each proposal covered by the Commit is included by a `ProposalOrRef` value. -`ProposalOrRef` identify the proposal to be applied by value or by reference. -Commits that refer to new Proposals from the committer can be included by value. -Commits for previously sent proposals from anyone can be sent by reference. -Proposals sent by reference are specified by including the hash of the `AuthenticatedContent`. - -Group members that have observed one or more valid proposals within an epoch MUST send a Commit message before sending application data. -A sender and a receiver of a Commit MUST verify that the committed list of proposals is valid. -The sender of a Commit SHOULD include all valid proposals received during the current epoch. - -Functioning of commits MUST follow the instructions of Section 12.4 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Application messages -Handshake messages provide an authenticated group key exchange to clients. -To protect application messages sent among the members of a group, the `encryption_secret` provided by the key schedule is used to derive a sequence of nonces and keys for message encryption. - -Each client MUST maintain their local copy of the key schedule for each epoch during which they are a group member. -They derive new keys, nonces, and secrets as needed. This data MUST be deleted as soon as they have been used. - -Group members MUST use the AEAD algorithm associated with the negotiated MLS ciphersuite to encrypt and decrypt Application messages according to the Message Framing section. -The group identifier and epoch allow a device to know which group secrets should be used and from which Epoch secret to start computing other secrets and keys. -Application messages SHOULD be padded to provide resistance against traffic analysis techniques. -This avoids additional information to be provided to an attacker in order to guess the length of the encrypted message. -Padding SHOULD be used on messages with zero-valued bytes before AEAD encryption. - -Functioning of application messages MUST follow the instructions of Section 15 of [RFC9420](https://datatracker.ietf.org/doc/rfc9420/). - -### Considerations with respect to decentralization -The MLS protocol assumes the existence on a (central, untrusted) *delivery service*, whose responsabilites include: - -- Acting as a directory service providing the initial keying material for clients to use. -- Routing MLS messages among clients. - -The central delivery service can be avoided in protocols using the publish/gossip approach, such as [gossipsub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub). - -Concerning keys, each node can generate and disseminate their encryption key among the other nodes, so they can create a local version of the tree that allows for the generation of the group key. - -Another important component is the *authentication service*, which is replaced with SIWE in this specification. - -## Ethereum-based authentication protocol -### Theory -Sign-in with Ethereum describes how Ethereum accounts authenticate with off-chain services by signing a standard message format -parameterized by scope, session details, and security mechanisms. -Sign-in with Ethereum (SIWE), which is described in the [EIP 4361](https://eips.ethereum.org/EIPS/eip-4361), MUST be the authentication method required. - -### Syntax -#### Message format (ABNF) -A SIWE Message MUST conform with the following Augmented Backus–Naur Form ([RFC 5234](https://datatracker.ietf.org/doc/html/rfc5234)) expression. - -``` -sign-in-with-ethereum = - [ scheme "://" ] domain %s" wants you to sign in with your Ethereum account:" LF - address LF - LF - [ statement LF ] - LF - %s"URI: " uri LF - %s"Version: " version LF - %s"Chain ID: " chain-id LF - %s"Nonce: " nonce LF - %s"Issued At: " issued-at - [ LF %s"Expiration Time: " expiration-time ] - [ LF %s"Not Before: " not-before ] - [ LF %s"Request ID: " request-id ] - [ LF %s"Resources:" - resources ] - -scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - ; See RFC 3986 for the fully contextualized - ; definition of "scheme". - -domain = authority - ; From RFC 3986: - ; authority = [ userinfo "@" ] host [ ":" port ] - ; See RFC 3986 for the fully contextualized - ; definition of "authority". - -address = "0x" 40*40HEXDIG - ; Must also conform to captilization - ; checksum encoding specified in EIP-55 - ; where applicable (EOAs). - -statement = *( reserved / unreserved / " " ) - ; See RFC 3986 for the definition - ; of "reserved" and "unreserved". - ; The purpose is to exclude LF (line break). - -uri = URI - ; See RFC 3986 for the definition of "URI". - -version = "1" - -chain-id = 1*DIGIT - ; See EIP-155 for valid CHAIN_IDs. - -nonce = 8*( ALPHA / DIGIT ) - ; See RFC 5234 for the definition - ; of "ALPHA" and "DIGIT". - -issued-at = date-time -expiration-time = date-time -not-before = date-time - ; See RFC 3339 (ISO 8601) for the - ; definition of "date-time". - -request-id = *pchar - ; See RFC 3986 for the definition of "pchar". - -resources = *( LF resource ) - -resource = "- " URI -``` - -This specification defines the following SIWE Message fields that can be parsed from a SIWE Message by following the rules in ABNF Message Format: - -- `scheme` OPTIONAL. The URI scheme of the origin of the request. -Its value MUST be a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) URI scheme. - -- `domain` REQUIRED. The domain that is requesting the signing. -Its value MUST be a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) authority. The authority includes an OPTIONAL port. -If the port is not specified, the default port for the provided scheme is assumed. - -If scheme is not specified, HTTPS is assumed by default. -- `address` REQUIRED. The Ethereum address performing the signing. -Its value SHOULD be conformant to mixed-case checksum address encoding specified in ERC-55 where applicable. - -- `statement` OPTIONAL. A human-readable ASCII assertion that the user will sign which MUST NOT include '\n' (the byte 0x0a). -- `uri` REQUIRED. An [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) URI referring to the resource that is the subject of the signing. - -- `version` REQUIRED. The current version of the SIWE Message, which MUST be 1 for this specification. - -- `chain-id` REQUIRED. The EIP-155 Chain ID to which the session is bound, and the network where Contract Accounts MUST be resolved. - -- `nonce` REQUIRED. A random string (minimum 8 alphanumeric characters) chosen by the relying party and used to prevent replay attacks. - -- `issued-at` REQUIRED. The time when the message was generated, typically the current time. -Its value MUST be an ISO 8601 datetime string. - -- `expiration-time` OPTIONAL. The time when the signed authentication message is no longer valid. -Its value MUST be an ISO 8601 datetime string. - -- `not-before` OPTIONAL. The time when the signed authentication message will become valid. -Its value MUST be an ISO 8601 datetime string. - -- `request-id` OPTIONAL. An system-specific identifier that MAY be used to uniquely refer to the sign-in request. - -- `resources` OPTIONAL. A list of information or references to information the user wishes to have resolved as part of authentication by the relying party. -Every resource MUST be a RFC 3986 URI separated by "\n- " where \n is the byte 0x0a. - -#### Signing and Verifying Messages with Ethereum Accounts -- For Externally Owned Accounts, the verification method specified in [ERC-191](https://eips.ethereum.org/EIPS/eip-191) MUST be used. - -- For Contract Accounts, - - - The verification method specified in [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271) SHOULD be used. -Otherwise, the implementer MUST clearly define the verification method to attain security and interoperability for both wallets and relying parties. - - - When performing [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271) signature verification, the contract performing the verification MUST be resolved from the specified `chain-id`. - - - Implementers SHOULD take into consideration that [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271) implementations are not required to be pure functions. -They can return different results for the same inputs depending on blockchain state. -This can affect the security model and session validation rules. - -#### Resolving Ethereum Name Service (ENS) Data -- The relying party or wallet MAY additionally perform resolution of ENS data, as this can improve the user experience by displaying human-friendly information that is related to the `address`. -Resolvable ENS data include: - - The primary ENS name. - - The ENS avatar. - - Any other resolvable resources specified in the ENS documentation. - -- If resolution of ENS data is performed, implementers SHOULD take precautions to preserve user privacy and consent. -Their `address` could be forwarded to third party services as part of the resolution process. - -#### Implementer steps: specifying the request origin -The `domain` and, if present, the `scheme`, in the SIWE Message MUST correspond to the origin from where the signing request was made. - -#### Implementer steps: verifying a signed message -The SIWE Message MUST be checked for conformance to the ABNF Message Format and its signature MUST be checked as defined in Signing and Verifying Messages with Ethereum Accounts. - -#### Implementer steps: creating sessions -Sessions MUST be bound to the address and not to further resolved resources that can change. - -#### Implementer steps: interpreting and resolving resources -Implementers SHOULD ensure that that URIs in the listed resources are human-friendly when expressed in plaintext form. - -#### Wallet implementer steps: verifying the message format -The full SIWE message MUST be checked for conformance to the ABNF defined in ABNF Message Format. - -Wallet implementers SHOULD warn users if the substring `"wants you to sign in with your Ethereum account"` appears anywhere in an [ERC-191](https://eips.ethereum.org/EIPS/eip-191) message signing request unless the message fully conforms to the format defined ABNF Message Format. - -#### Wallet implementer steps: verifying the request origin -Wallet implementers MUST prevent phishing attacks by verifying the origin of the request against the `scheme` and `domain` fields in the SIWE Message. - -The origin SHOULD be read from a trusted data source such as the browser window or over WalletConnect [ERC-1328](https://eips.ethereum.org/EIPS/eip-1328) sessions for comparison against the signing message contents. - -Wallet implementers MAY warn instead of rejecting the verification if the origin is pointing to localhost. - -The following is a RECOMMENDED algorithm for Wallets to conform with the requirements on request origin verification defined by this specification. - -The algorithm takes the following input variables: - -- fields from the SIWE message. -- `origin` of the signing request: the origin of the page which requested the signin via the provider. -- `allowedSchemes`: a list of schemes allowed by the Wallet. -- `defaultScheme`: a scheme to assume when none was provided. Wallet implementers in the browser SHOULD use https. -- developer mode indication: a setting deciding if certain risks should be a warning instead of rejection. Can be manually configured or derived from `origin` being localhost. - -The algorithm is described as follows: - -- If `scheme` was not provided, then assign `defaultScheme` as scheme. -- If `scheme` is not contained in `allowedSchemes`, then the `scheme` is not expected and the Wallet MUST reject the request. -Wallet implementers in the browser SHOULD limit the list of allowedSchemes to just 'https' unless a developer mode is activated. -- If `scheme` does not match the scheme of origin, the Wallet SHOULD reject the request. -Wallet implementers MAY show a warning instead of rejecting the request if a developer mode is activated. -In that case the Wallet continues processing the request. -- If the `host` part of the `domain` and `origin` do not match, the Wallet MUST reject the request unless the Wallet is in developer mode. -In developer mode the Wallet MAY show a warning instead and continues procesing the request. -- If `domain` and `origin` have mismatching subdomains, the Wallet SHOULD reject the request unless the Wallet is in developer mode. -In developer mode the Wallet MAY show a warning instead and continues procesing the request. -- Let `port` be the port component of `domain`, and if no port is contained in domain, assign port the default port specified for the scheme. -- If `port` is not empty, then the Wallet SHOULD show a warning if the `port` does not match the port of `origin`. -- If `port` is empty, then the Wallet MAY show a warning if `origin` contains a specific port. -- Return request origin verification completed. - -#### Wallet implementer steps: creating SIWE interfaces -Wallet implementers MUST display to the user the following fields from the SIWE Message request by default and prior to signing, if they are present: `scheme`, `domain`, `address`, `statement`, and `resources`. -Other present fields MUST also be made available to the user prior to signing either by default or through an extended interface. - -Wallet implementers displaying a plaintext SIWE Message to the user SHOULD require the user to scroll to the bottom of the text area prior to signing. - -Wallet implementers MAY construct a custom SIWE user interface by parsing the ABNF terms into data elements for use in the interface. -The display rules above still apply to custom interfaces. - -#### Wallet implementer steps: supporting internationalization (i18n) -After successfully parsing the message into ABNF terms, translation MAY happen at the UX level per human language. - -## Privacy and Security Considerations -- The double ratchet "recommends" using AES in CBC mode. Since encryption must be with an AEAD encryption scheme, we will use AES in GCM mode instead (supported by Noise). -- For the information retrieval, the algorithm MUST include a access control mechanisms to restrict who can call the set and get functions. -- One SHOULD include event logs to track changes in public keys. -- The curve vurve448 MUST be chosen due to its higher security level: 224-bit security instead of the 128-bit security provided by X25519. -- It is important that Bob MUST NOT reuse `SPK`. - -## Copyright -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -# References -- [Augmented BNF for Syntax Specifications](https://datatracker.ietf.org/doc/html/rfc5234) -- [Gossipsub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub) -- [HMAC-based Extract-and-Expand Key Derivation Function](https://www.ietf.org/rfc/rfc5869.txt) -- [Hybrid Public Key Encryption](https://datatracker.ietf.org/doc/rfc9180/) -- [Security Analysis and Improvements for the IETF MLS Standard for Group Messaging](https://eprint.iacr.org/2019/1189.pdf) -- [Signed Data Standard](https://eips.ethereum.org/EIPS/eip-191) -- [Sign-In with Ethereum](https://eips.ethereum.org/EIPS/eip-4361) -- [Standard Signature Validation Method for Contracts](https://eips.ethereum.org/EIPS/eip-1271) -- [The Double Ratchet Algorithm](https://signal.org/docs/specifications/doubleratchet/) -- [The Messaging Layer Security Protocol](https://datatracker.ietf.org/doc/rfc9420/) -- [The X3DH Key Agreement Protocol](https://signal.org/docs/specifications/x3dh/) -- [Toy Ethereum Private Messaging Protocol](https://rfc.vac.dev/spec/20/) -- [Uniform Resource Identifier](https://datatracker.ietf.org/doc/html/rfc3986) -- [WalletConnect URI Format](https://eips.ethereum.org/EIPS/eip-1328) diff --git a/vac/README.md b/vac/README.md deleted file mode 100644 index 18a123be1..000000000 --- a/vac/README.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Vac RFCs - -Vac builds public good protocols for the decentralise web. -Vac acts as a custodian for the protocols that live in the RFC-Index repository. -With the goal of widespread adoption, -Vac will make sure the protocols adhere to the set of principles, -including but not limited to liberty, security, privacy, decentralisation, and inclusivity. - -To learn more, visit [Vac Research](https://vac.dev/) diff --git a/vac/raw/README.md b/vac/raw/README.md deleted file mode 100644 index a8cbe7561..000000000 --- a/vac/raw/README.md +++ /dev/null @@ -1,5 +0,0 @@ - -# Vac Raw Specifications - -All Vac specifications that have not reached **draft** status will live in this repository. -To learn more about **raw** specifications, take a look at [1/COSS](../1/coss). diff --git a/vac/raw/rln-stealth-commitments.md b/vac/raw/rln-stealth-commitments.md deleted file mode 100644 index d37629b3f..000000000 --- a/vac/raw/rln-stealth-commitments.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: RLN-STEALTH-COMMITMENTS -name: RLN Stealth Commitment Usage -category: Standards Track -editor: Aaryamann Challani <aaryamann@status.im> -contributors: -- Jimmy Debe <jimmy@status.im> ---- -- Category: Standards Track -- Editor: Aaryamann Challani <aaryamann@status.im> -- Contributors: - - Jimmy Debe <jimmy@status.im> - - -## Abstract - -This specification describes the usage of stealth commitments to add prospective users to a network-governed [32/RLN-V1](./32/rln-v1) membership set. - -## Motivation - -When [32/RLN-V1](./32/rln-v1) is enforced in [10/Waku2](../waku/standards/core/10/waku2), -all users are required to register to a membership set. -The membership set will store user identities allowing the secure interaction within an application. -Forcing a user to do an on-chain transaction to join a membership set is an onboarding friction, -and some projects may be opposed to this method. -To improve the user experience, -stealth commitments can be used by a counterparty to register identities on the user's behalf, -while maintaining the user's anonymity. - -This document specifies a privacy-preserving mechanism, -allowing a counterparty to utilize [32/RLN-V1](./32/rln-v1) to register an `identityCommitment` on-chain. -Counterparties will be able to register members to a RLN membership set without exposing the user's private keys. - -## Background -The [32/RLN-V1](./32/rln-v1) protocol, -consists of a smart contract that stores a `idenitityCommitment` in a membership set. -In order for a user to join the membership set, -the user is required to make a transaction on the blockchain. -A set of public keys is used to compute a stealth commitment for a user, -as described in [ERC-5564](https://eips.ethereum.org/EIPS/eip-5564). -This specification is an implementation of the [ERC-5564](https://eips.ethereum.org/EIPS/eip-5564) scheme, -tailored to the curve that is used in the [32/RLN-V1](./32/rln-v1) protocol. - -This can be used in a couple of ways in applications: -1. Applications can add users to the [32/RLN-V1](./32/rln-v1) membership set in a batch. -2. Users of the application can register other users to the [32/RLN-V1](./32/rln-v1) membership set. - -This is useful when the prospective user does not have access to funds on the network that [32/RLN-V1](./32/rln-v1) is deployed on. - -## Wire Format Specification - -The two parties, the requester and the receiver, MUST exchange the following information: - -```protobuf - -message Request { - // The spending public key of the requester - bytes spending_public_key = 1; - - // The viewing public key of the requester - bytes viewing_public_key = 2; -} - -``` -### Generate Stealth Commitment - -The application or user SHOULD generate a `stealth_commitment` after a request to do so is received. -This commitment MAY be inserted into the corresponding application membership set. - -Once the membership set is updated, the receiver SHOULD exchange the following as a response to the request: - -```protobuf - -message Response { - - // The used to check if the stealth_commitment belongs to the requester - bytes view_tag = 2; - - // The stealth commitment for the requester - bytes stealth_commitment = 3; - - // The ephemeral public key used to generate the commitment - bytes ephemeral_public_key = 4; - -} - -``` - -The receiver MUST generate an `ephemeral_public_key`, `view_tag` and `stealth_commitment`. -This will be used to check the stealth commitment used to register to the membership set, -and the user MUST be able to check ownership with their `viewing_public_key`. - -## Implementation Suggestions - -An implementation of the Stealth Address scheme is available in the [erc-5564-bn254](https://github.com/rymnc/erc-5564-bn254) repository, -which also includes a test to generate a stealth commitment for a given user. - -## Security/Privacy Considerations - -This specification inherits the security and privacy considerations of the [Stealth Address](https://eips.ethereum.org/EIPS/eip-5564) scheme. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [10/Waku2](../waku/standards/core/10/waku2) -- [32/RLN-V1](./32/rln-v1) -- [ERC-5564](https://eips.ethereum.org/EIPS/eip-5564) diff --git a/vac/template.md b/vac/template.md deleted file mode 100644 index b23a44bea..000000000 --- a/vac/template.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: XX/(WAKU2|LOGOS|CODEX|*)-TEMPLATE -name: (Waku v2 | Logos | Codex) RFC Template -status: (raw|draft|stable) -category: (Standards Track|Informational|Best Current Practice) -editor: Daniel Kaiser <danielkaiser@status.im> -contributors: ---- -- Status: (raw|draft|stable) -- Category: (Standards Track|Informational|Best Current Practice) -- Editor: Daniel Kaiser <danielkaiser@status.im> - -# (Info, remove this section) - -This section contains meta info about writing RFCs. -This section (including its subsections) MUST be removed. - -[COSS](https://rfc.vac.dev/spec/1/) explains the Vac RFC process. - -## Tags - -The `tags` metadata SHOULD contain a list of tags if applicable. - -Currently identified tags comprise - -* `waku/core-protocol` for Waku protocol definitions (e.g. store, relay, light push), -* `waku/application` for applications built on top of Waku protocol (e.g. eth-dm, toy-chat), - - -# Abstract - - -# Background / Rationale / Motivation - -This section serves as an introduction providing background information and a motivation/rationale for why the specified protocol is useful. - -# Theory / Semantics - -A standard track RFC in `stable` status MUST feature this section. -A standard track RFC in `raw` or `draft` status SHOULD feature this section. -This section SHOULD explain in detail how the proposed protocol works. -It may touch on the wire format where necessary for the explanation. -This section MAY also specify endpoint behaviour when receiving specific messages, e.g. the behaviour of certain caches etc. - -# Wire Format Specification / Syntax - -A standard track RFC in `stable` status MUST feature this section. -A standard track RFC in `raw` or `draft` status SHOULD feature this section. -This section SHOULD not contain explanations of semantics and focus on concisely defining the wire format. -Implementations MUST adhere to these exact formats to interoperate with other implementations. -It is fine, if parts of the previous section that touch on the wire format are repeated. -The purpose of this section is having a concise definition of what an implementation sends and accepts. -Parts that are not specified here are considered implementation details. Implementors are free to decide on how to implement these details. -An optional *implementation suggestions* section may provide suggestions on how to approach implementation details, and, if available, point to existing implementations for reference. - -# Implementation Suggestions (optional) - - -# (Further Optional Sections) - - -# Security/Privacy Considerations - -A standard track RFC in `stable` status MUST feature this section. -A standard track RFC in `raw` or `draft` status SHOULD feature this section. -Informational RFCs (in any state) may feature this section. -If there are none, this section MUST explicitly state that fact. -This section MAY contain additional relevant information, e.g. an explanation as to why there are no security consideration for the respective document. - -# Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -# References - -References MAY be subdivided into normative and informative. - -## normative -A list of references that MUST be read to fully understand and/or implement this protocol. -See [RFC3967 Section 1.1](https://datatracker.ietf.org/doc/html/rfc3967#section-1.1). - -## informative -A list of additional references. diff --git a/waku/README.md b/waku/README.md deleted file mode 100644 index 18caa945f..000000000 --- a/waku/README.md +++ /dev/null @@ -1,6 +0,0 @@ - -# Waku RFCs - -Waku builds a family of privacy-preserving, censorship-resistant communication protocols for web3 applications. - -Contributors can visit [Waku RFCs](https://github.com/waku-org/specs) for new Waku specifications under discussion. diff --git a/waku/deprecated/16/rpc.md b/waku/deprecated/16/rpc.md deleted file mode 100644 index 5f715689f..000000000 --- a/waku/deprecated/16/rpc.md +++ /dev/null @@ -1,639 +0,0 @@ ---- -title: 16/WAKU2-RPC -name: Waku v2 RPC API -status: deprecated -editor: Hanno Cornelius <hanno@status.im> ---- -- Status: deprecated -- Editor: Hanno Cornelius <hanno@status.im> - -## Introduction - -This specification describes the JSON-RPC API that Waku v2 nodes MAY adhere to. Refer to the [Waku v2 specification](../10/waku2) for more information on Waku v2. - -## Wire Protocol - -### Transport - -Nodes SHOULD expose an accessible [JSON-RPC](https://www.jsonrpc.org/specification) API. The JSON-RPC version SHOULD be `2.0`. Below is an example request: - -```json -{ - "jsonrpc":"2.0", - "method":"get_waku_v2_debug_info", - "params":[], - "id":1 -} -``` - -#### Fields - -| Field | Description | -| --------- | --------------------------------------------------- | -| `jsonrpc` | Contains the used JSON-RPC version (`Default: 2.0`) | -| `method` | Contains the JSON-RPC method that is being called | -| `params` | An array of parameters for the request | -| `id` | The request ID | - -### Types - -In this specification, the primitive types `Boolean`, `String`, `Number` and `Null`, as well as the structured types `Array` and `Object`, are to be interpreted according to the [JSON-RPC specification](https://www.jsonrpc.org/specification#conventions). It also adopts the same capitalisation conventions. - -The following structured types are defined for use throughout the document: - -### WakuMessage - -Refer to [`Waku Message` specification](../14/message) for more information. - -`WakuMessage` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ---: | :---: | :---: | --- | -| `payload` | `String` | mandatory | The message payload as a [base64 (with padding)](https://datatracker.ietf.org/doc/html/rfc4648) encoded data string | -| `contentTopic` | `String` | optional | Message content topic for optional content-based filtering | -| `version` | `Number` | optional | Message version. Used to indicate type of payload encryption. Default version is 0 (no payload encryption). | -| `timestamp` | `Number` | optional | The time at which the message is generated by its sender. This field holds the Unix epoch time in nanoseconds as a 64-bits integer value. | -| `ephemeral` | `Boolean` | optional | This flag indicates the transient nature of the message. Indicates if the message is eligible to be stored by the `store` protocol, [13/WAKU2-STORE](../13/store). | - -## Method naming - -The JSON-RPC methods in this document are designed to be mappable to HTTP REST endpoints. Method names follow the pattern `_waku____` - -- ``: prefix of the HTTP method type that most closely matches the JSON-RPC function. Supported `method_type` values are `get`, `post`, `put`, `delete` or `patch`. -- ``: Waku version. Currently **v2**. -- ``: one of the listed APIs below, e.g. `store`, `debug`, or `relay`. -- ``: API definition version. Currently **v1** for all APIs. -- ``: the resource or resource path being addressed - -The method `post_waku_v2_relay_v1_message`, for example, would map to the HTTP REST endpoint `POST /waku/v2/relay/v1/message`. - -## Debug API - -### Types - -The following structured types are defined for use on the Debug API: - -#### WakuInfo - -`WakuInfo` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `listenAddresses` | `Array`[`String`] | mandatory | Listening addresses of the node | -| `enrUri` | `String` | optional | ENR URI of the node | - -#### WakuInfo - -### `get_waku_v2_debug_v1_info` - -The `get_waku_v2_debug_v1_info` method retrieves information about a Waku v2 node - -#### Parameters - -none - -#### Response - -- [**`WakuInfo`**](#wakuinfo) - information about a Waku v2 node - - -### `get_waku_v2_debug_v1_version` - -The `get_waku_v2_debug_v1_version` method retrieves the version of a Waku v2 node as a string. -The version SHOULD follow [semantic versioning](https://semver.org/). -In case the node's current build is based on a git commit between semantic versions, -the retrieved version string MAY contain the git commit hash alone or in combination with the latest semantic version. - -#### Parameters - -none - -#### Response - -- **`string`** - represents the version of a Waku v2 node - - -## Relay API - -Refer to the [Waku Relay specification](../11/relay) for more information on the relaying of messages. - -### `post_waku_v2_relay_v1_message` - -The `post_waku_v2_relay_v1_message` method publishes a message to be relayed on a [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) being published on | -| `message` | [`WakuMessage`](#wakumessage) | mandatory | The `message` being relayed | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `post_waku_v2_relay_v1_subscriptions` - -The `post_waku_v2_relay_v1_subscriptions` method subscribes a node to an array of [PubSub `topics`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topics` | `Array`[`String`] | mandatory | The [PubSub `topics`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) being subscribed to | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `delete_waku_v2_relay_v1_subscriptions` - -The `delete_waku_v2_relay_v1_subscriptions` method unsubscribes a node from an array of [PubSub `topics`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topics` | `Array`[`String`] | mandatory | The [PubSub `topics`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) being unsubscribed from | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `get_waku_v2_relay_v1_messages` - -The `get_waku_v2_relay_v1_messages` method returns a list of messages that were received on a subscribed [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) after the last time this method was called. The server MUST respond with an [error](https://www.jsonrpc.org/specification#error_object) if no subscription exists for the polled `topic`. If no message has yet been received on the polled `topic`, the server SHOULD return an empty list. This method can be used to poll a `topic` for new messages. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) to poll for the latest messages | - -#### Response - -- **`Array`[[`WakuMessage`](#wakumessage)]** - the latest `messages` on the polled `topic` or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -## Relay Private API - -The Private API provides functionality to encrypt/decrypt `WakuMessage` payloads using either symmetric or asymmetric cryptography. This allows backwards compatibility with [Waku v1 nodes](../../legacy/6/waku1). -It is the API client's responsibility to keep track of the keys used for encrypted communication. Since keys must be cached by the client and provided to the node to encrypt/decrypt payloads, a Private API SHOULD NOT be exposed on non-local or untrusted nodes. - -### Types - -The following structured types are defined for use on the Private API: - -#### KeyPair - -`KeyPair` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `privateKey` | `String` | mandatory | Private key as hex encoded data string | -| `publicKey` | `String` | mandatory | Public key as hex encoded data string | - -### `get_waku_v2_private_v1_symmetric_key` - -Generates and returns a symmetric key that can be used for message encryption and decryption. - -#### Parameters - -none - -#### Response -- **`String`** - A new symmetric key as hex encoded data string - -### `get_waku_v2_private_v1_asymmetric_keypair` - -Generates and returns a public/private key pair that can be used for asymmetric message encryption and decryption. - -#### Parameters - -none - -#### Response -- **[`KeyPair`](#keypair)** - A new public/private key pair as hex encoded data strings - -### `post_waku_v2_private_v1_symmetric_message` - -The `post_waku_v2_private_v1_symmetric_message` method publishes a message to be relayed on a [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -Before being relayed, the message payload is encrypted using the supplied symmetric key. The client MUST provide a symmetric key. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) being published on | -| `message` | [`WakuMessage`](#wakumessage) | mandatory | The (unencrypted) `message` being relayed | -| `symkey` | `String` | mandatory | The hex encoded symmetric key to use for payload encryption. This field MUST be included if symmetric key cryptography is selected | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `post_waku_v2_private_v1_asymmetric_message` - -The `post_waku_v2_private_v1_asymmetric_message` method publishes a message to be relayed on a [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -Before being relayed, the message payload is encrypted using the supplied public key. The client MUST provide a public key. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) being published on | -| `message` | [`WakuMessage`](#wakumessage) | mandatory | The (unencrypted) `message` being relayed | -| `publicKey` | `String` | mandatory | The hex encoded public key to use for payload encryption. This field MUST be included if asymmetric key cryptography is selected | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `get_waku_v2_private_v1_symmetric_messages` - -The `get_waku_v2_private_v1_symmetric_messages` method decrypts and returns a list of messages that were received on a subscribed [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) after the last time this method was called. The server MUST respond with an [error](https://www.jsonrpc.org/specification#error_object) if no subscription exists for the polled `topic`. If no message has yet been received on the polled `topic`, the server SHOULD return an empty list. This method can be used to poll a `topic` for new messages. - -Before returning the messages, the server decrypts the message payloads using the supplied symmetric key. The client MUST provide a symmetric key. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) to poll for the latest messages | -| `symkey` | `String` | mandatory | The hex encoded symmetric key to use for payload decryption. This field MUST be included if symmetric key cryptography is selected | - -#### Response - -- **`Array`[[`WakuMessage`](#wakumessage)]** - the latest `messages` on the polled `topic` or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `get_waku_v2_private_v1_asymmetric_messages` - -The `get_waku_v2_private_v1_asymmetric_messages` method decrypts and returns a list of messages that were received on a subscribed [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) after the last time this method was called. The server MUST respond with an [error](https://www.jsonrpc.org/specification#error_object) if no subscription exists for the polled `topic`. If no message has yet been received on the polled `topic`, the server SHOULD return an empty list. This method can be used to poll a `topic` for new messages. - -Before returning the messages, the server decrypts the message payloads using the supplied private key. The client MUST provide a private key. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `topic` | `String` | mandatory | The [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor) to poll for the latest messages | -| `privateKey` | `String` | mandatory | The hex encoded private key to use for payload decryption. This field MUST be included if asymmetric key cryptography is selected | - -#### Response - -- **`Array`[[`WakuMessage`](#wakumessage)]** - the latest `messages` on the polled `topic` or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - - -## Store API - -Refer to the [Waku Store specification](../13/store) for more information on message history retrieval. - -### Types - -The following structured types are defined for use on the Store API: - -#### StoreResponse - -`StoreResponse` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `messages` | `Array`[[`WakuMessage`](#wakumessage)] | mandatory | Array of retrieved historical messages | -| `pagingOptions` | [`PagingOptions`](#pagingOptions) | [conditional](#get_waku_v2_store_v1_messages) | Paging information from which to resume further historical queries | - - -#### PagingOptions - -`PagingOptions` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: |:-----------------:| :---: |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `pageSize` | `Number` | mandatory | Number of messages to retrieve per page | -| `cursor` | [`Index`](#index) | optional | Message [`Index`](#index) from which to perform pagination. If not included and `forward` is set to `true`, paging will be performed from the beginning of the list. If not included and `forward` is set to `false`, paging will be performed from the end of the list. | -| `forward` | `Bool` | mandatory | `true` if paging forward, `false` if paging backward | - -#### Index - -`Index` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |-------------------------------------------------------------------------------------------| -| `digest` | `String` | mandatory | A hash for the message at this [`Index`](#index) | -| `receivedTime` | `Number` | mandatory | UNIX timestamp in nanoseconds at which the message at this [`Index`](#index) was received | - -#### ContentFilter - -`ContentFilter` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `contentTopic` | `String` | mandatory | The content topic of a [`WakuMessage`](#wakumessage) | - -### `get_waku_v2_store_v1_messages` - -The `get_waku_v2_store_v1_messages` method retrieves historical messages on specific content topics. This method MAY be called with [`PagingOptions`](#pagingoptions), to retrieve historical messages on a per-page basis. If the request included [`PagingOptions`](#pagingoptions), the node MUST return messages on a per-page basis and include [`PagingOptions`](#pagingoptions) in the response. These [`PagingOptions`](#pagingoptions) MUST contain a `cursor` pointing to the [`Index`](#index) from which a new page can be requested. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `pubsubTopic` | `String` | optional | The pubsub topic on which a [`WakuMessage`](#wakumessage) is published | -| `contentFilters` | `Array`[[`ContentFilter`](#contentfilter)] | optional | Array of content filters to query for historical messages | -| `startTime` | `Number`| optional | The inclusive lower bound on the [`timestamp`](../14/message#message-attributes) of queried [`WakuMessage`s](#wakumessage). This field holds the Unix epoch time in nanoseconds as a 64-bits integer value. | -| `endTime` | `Number` | optional | The inclusive upper bound on the [`timestamp`](../14/message#message-attributes) of queried [`WakuMessage`s](#wakumessage). This field holds the Unix epoch time in nanoseconds as a 64-bits integer value. | -| `pagingOptions` | [`PagingOptions`](#pagingoptions) | optional | Pagination information | - -#### Response - -- [**`StoreResponse`**](#storeresponse) - the response to a `query` for historical messages. - -## Filter API - -Refer to the [Waku Filter specification](../12/filter) for more information on content filtering. - -### Types - -The following structured types are defined for use on the Filter API: - -#### ContentFilter - -`ContentFilter` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `contentTopic` | `String` | mandatory | message content topic | - -### `post_waku_v2_filter_v1_subscription` - -The `post_waku_v2_filter_v1_subscription` method creates a subscription in a [light node](../12/filter#rationale) for messages that matches a content filter and, optionally, a [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `contentFilters` | `Array`[[`ContentFilter`](#contentfilter)] | mandatory | Array of content filters being subscribed to | -| `topic` | `String` | optional | Message topic | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `delete_waku_v2_filter_v1_subscription` - -The `delete_waku_v2_filter_v1_subscription` method removes subscriptions in a [light node](../12/filter#rationale) matching a content filter and, optionally, a [PubSub `topic`](https://github.com/libp2p/specs/blob/master/pubsub/README##the-topic-descriptor). - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `contentFilters` | `Array`[[`ContentFilter`](#contentfilter)] | mandatory | Array of content filters being unsubscribed from | -| `topic` | `String` | optional | Message topic | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -### `get_waku_v2_filter_v1_messages` - -The `get_waku_v2_filter_v1_messages` method returns a list of messages that were received on a subscribed content `topic` after the last time this method was called. The server MUST respond with an [error](https://www.jsonrpc.org/specification#error_object) if no subscription exists for the polled content `topic`. If no message has yet been received on the polled content `topic`, the server SHOULD respond with an empty list. This method can be used to poll a content `topic` for new messages. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `contentTopic` | `String` | mandatory | The content topic to poll for the latest messages | - -#### Response - -- **`Array`[[`WakuMessage`](#wakumessage)]** - the latest `messages` on the polled content `topic` or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - -## Admin API - -The Admin API provides privileged accesses to the internal operations of a Waku v2 node. - -### Types - -The following structured types are defined for use on the Admin API: - -#### WakuPeer - -`WakuPeer` is an `Object` containing the following fields: - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `multiaddr` | `String` | mandatory | Multiaddress containing this peer's location and identity | -| `protocol` | `String` | mandatory | Protocol that this peer is registered for | -| `connected` | `bool` | mandatory | `true` if peer has active connection for this `protocol`, `false` if not | - -### `get_waku_v2_admin_v1_peers` - -The `get_waku_v2_admin_v1_peers` method returns an array of peers registered on this node. Since a Waku v2 node may open either continuous or ad hoc connections, depending on the negotiated protocol, these peers may have different connected states. The same peer MAY appear twice in the returned array, if it is registered for more than one protocol. - -#### Parameters - -none - -#### Response - -- **`Array`[[`WakuPeer`](#wakupeer)]** - Array of peers registered on this node - -### `post_waku_v2_admin_v1_peers` - -The `post_waku_v2_admin_v1_peers` method connects a node to a list of peers. - -#### Parameters - -| Field | Type | Inclusion | Description | -| ----: | :---: | :---: |----------- | -| `peers` | `Array`[`String`] | mandatory | Array of peer `multiaddrs` to connect to. Each `multiaddr` must contain the [location and identity addresses](https://docs.libp2p.io/concepts/addressing/) of a peer. | - -#### Response - -- **`Bool`** - `true` on success or an [error](https://www.jsonrpc.org/specification#error_object) on failure. - - -## Example usage - -### Store API - -#### `get_waku_v2_store_v1_messages` - -This method is part of the `store` API and the specific resources to retrieve are (historical) `messages`. The protocol (`waku`) is on `v2`, whereas the Store API definition is on `v1`. - -1. `get` *all* the historical messages for content topic **"/waku/2/default-content/proto"**; no paging required - -#### Request - -```curl -d '{"jsonrpc":"2.0","id":"id","method":"get_waku_v2_store_v1_messages", "params":["", [{"contentTopic":"/waku/2/default-content/proto"}]]}' --header "Content-Type: application/json" http://localhost:8545``` - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "method": "get_waku_v2_store_v1_messages", - "params": [ - "", - [ - {"contentTopic": "/waku/2/default-content/proto"} - ] - ] -} -``` - -#### Response - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "result": { - "messages": [ - { - "payload": dGVzdDE, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - }, - { - "payload": dGVzdDI, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - }, - { - "payload": dGVzdDM, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - } - ], - "pagingInfo": null - }, - "error": null -} -``` - ---- - -2. `get` a single page of historical messages for content topic **"/waku/2/default-content/proto"**; 2 messages per page, backward direction. Since this is the initial query, no `cursor` is provided, so paging will be performed from the end of the list. - -#### Request - -```curl -d '{"jsonrpc":"2.0","id":"id","method":"get_waku_v2_store_v1_messages", "params":[ "", [{"contentTopic":"/waku/2/default-content/proto"}],{"pageSize":2,"forward":false}]}' --header "Content-Type: application/json" http://localhost:8545``` - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "method": "get_waku_v2_store_v1_messages", - "params": [ - "", - [ - {"contentTopic": "/waku/2/default-content/proto"} - ], - { - "pageSize": 2, - "forward": false - } - ] -} -``` - -#### Response - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "result": { - "messages": [ - { - "payload": dGVzdDI, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - }, - { - "payload": dGVzdDM, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - } - ], - "pagingInfo": { - "pageSize": 2, - "cursor": { - "digest": "abcdef", - "receivedTime": 1605887187000000000 - }, - "forward": false - } - }, - "error": null -} -``` - ---- - -3. `get` the next page of historical messages for content topic **"/waku/2/default-content/proto"**, using the cursor received above; 2 messages per page, backward direction. - -#### Request - -```curl -d '{"jsonrpc":"2.0","id":"id","method":"get_waku_v2_store_v1_messages", "params":[ "", [{"contentTopic":"/waku/2/default-content/proto"}],{"pageSize":2,"cursor":{"digest":"abcdef","receivedTime":1605887187000000000},"forward":false}]}' --header "Content-Type: application/json" http://localhost:8545``` - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "method": "get_waku_v2_store_v1_messages", - "params": [ - "", - [ - {"contentTopic": "/waku/2/default-content/proto"} - ], - { - "pageSize": 2, - "cursor": { - "digest": "abcdef", - "receivedTime": 1605887187000000000 - }, - "forward": false - } - ] -} -``` - -#### Response - -```jsonrpc -{ - "jsonrpc": "2.0", - "id": "id", - "result": { - "messages": [ - { - "payload": dGVzdDE, - "contentTopic": "/waku/2/default-content/proto", - "version": 0 - }, - ], - "pagingInfo": { - "pageSize": 2, - "cursor": { - "digest": "123abc", - "receivedTime": 1605866187000000000 - }, - "forward": false - } - }, - "error": null -} -``` - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -1. [JSON-RPC specification](https://www.jsonrpc.org/specification) -1. [LibP2P Addressing](https://docs.libp2p.io/concepts/addressing/) -1. [LibP2P PubSub specification - topic descriptor](https://github.com/libp2p/specs/tree/master/pubsub#the-topic-descriptor) -1. [Waku v2 specification](../10/waku2) -1. [IETF RFC 4648 - The Base16, Base32, and Base64 Data Encodings](https://datatracker.ietf.org/doc/html/rfc4648) diff --git a/waku/deprecated/18/swap.md b/waku/deprecated/18/swap.md deleted file mode 100644 index 2dc396207..000000000 --- a/waku/deprecated/18/swap.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: 18/WAKU2-SWAP -name: Waku SWAP Accounting -status: deprecated -editor: Oskar Thorén <oskarth@titanproxy.com> -contributor: Ebube Ud <ebube@status.im> ---- -- Status: deprecated -- Editor: Oskar Thorén <oskarth@titanproxy.com> - -## Abstract - -This specification outlines how we do accounting and settlement based on the provision and usage of resources, most immediately bandwidth usage and/or storing and retrieving of Waku message. This enables nodes to cooperate and efficiently share resources, and in the case of unequal nodes to settle the difference through a relaxed payment mechanism in the form of sending cheques. - -**Protocol identifier***: `/vac/waku/swap/2.0.0-beta1` - -## Motivation - -The Waku network makes up a service network, and some nodes provide a useful service to other nodes. We want to account for that, and when imbalances arise, settle this. The core of this approach has some theoretical backing in game theory, and variants of it have practically been proven to work in systems such as Bittorrent. The specific model use was developed by the Swarm project (previously part of Ethereum), and we re-use contracts that were written for this purpose. - -By using a delayed payment mechanism in the form of cheques, a barter-like mechanism can arise, and nodes can decide on their own policy as opposed to be strictly tied to a specific payment scheme. Additionally, this delayed settlement eases requirements on the underlying network in terms of transaction speed or costs. - -Theoretically, nodes providing and using resources over a long, indefinite, period of time can be seen as an iterated form of [Prisoner's Dilemma (PD)](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma). Specifically, and more intuitively, since we have a cost and benefit profile for each provision/usage (of Waku Message's, e.g.), and the pricing can be set such that mutual cooperation is incentivized, this can be analyzed as a form of donations game. - -## Game Theory - Iterated prisoner's dilemma / donation game - -What follows is a sketch of what the game looks like between two nodes. We can look at it as a special case of iterated prisoner's dilemma called a [Donation game](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma#Special_case:_donation_game) where each node can cooperate with some benefit `b` at a personal cost `c`, where `b>c`. - -From A's point of view: - -A/B | Cooperate | Defect ------|----------|------- -Cooperate | b-c | -c -Defect | b | 0 - -What this means is that if A and B cooperates, A gets some benefit `b` minus a cost `c`. If A cooperates and B defects she only gets the cost, and if she defects and B cooperates A only gets the benefit. If both defect they get neither benefit nor cost. - -The generalized form of PD is: - -A/B | Cooperate | Defect ------|----------|------- -Cooperate | R | S -Defect | T | P - -With R=reward, S=Sucker's payoff, T=temptation, P=punishment - -And the following holds: - -- `T>R>P>S` -- `2R>T+S` - -In our case, this means `b>b-c>0>-c` and `2(b-c)> b-c` which is trivially true. - -As this is an iterated game with no clear finishing point in most circumstances, a tit-for-tat strategy is simple, elegant and functional. To be more theoretically precise, this also requires reasonable assumptions on error rate and discount parameter. This captures notions such as "does the perceived action reflect the intended action" and "how much do you value future (uncertain) actions compared to previous actions". See [Axelrod - Evolution of Cooperation (book)](https://en.wikipedia.org/wiki/The_Evolution_of_Cooperation) for more details. In specific circumstances, nodes can choose slightly different policies if there's a strong need for it. A policy is simply how a node chooses to act given a set of circumstances. - -A tit-for-tat strategy basically means: -- cooperate first (perform service/beneficial action to other node) -- defect when node stops cooperating (disconnect and similar actions), i.e. when it stops performing according to set parameters re settlement -- resume cooperation if other node does so - -This can be complemented with node selection mechanisms. - -## SWAP protocol overview - -We use SWAP for accounting and settlement in conjunction with other request/reply protocols in Waku v2, -where accounting is done in a pairwise manner. -It is an acronym with several possible meanings (as defined in the Book -of Swarm), for example: - -- service wanted and provided -- settle with automated payments -- send waiver as payment -- start without a penny - -This approach is based on communicating payment thresholds and sending cheques as indications of later payments. -Communicating payment thresholds MAY be done out-of-band or as part of the handshake. -Sending cheques is done once payment threshold is hit. - -See [Book of Swarm](https://web.archive.org/web/20210126130038/https://gateway.ethswarm.org/bzz/latest.bookofswarm.eth) section 3.2. on Peer-to-peer accounting etc., for more context and details. - -### Accounting - -Nodes perform their own accounting for each relevant peer based on some "volume"/bandwidth metric. For now we take this to mean the number of `WakuMessage`s exchanged. - -Additionally, a price is attached to each unit. Currently, this is simply a "karma counter" and equal to 1 per message. - -Each accounting balance SHOULD be w.r.t. to a given protocol it is accounting for. - -NOTE: This may later be complemented with other metrics, either as part of SWAP or more likely outside of it. For example, online time can be communicated and attested to as a form of enhanced quality of service to inform peer selection. - -### Flow - -Assuming we have two store nodes, one operating mostly as a client (A) and another as server (B). - -1. Node A performs a handshake with B node. B node responds and both nodes communicate their payment threshold. -2. Node A and B creates an accounting entry for the other peer, keep track of peer and current balance. -3. Node A issues a `HistoryRequest`, and B responds with a `HistoryResponse`. Based on the number of WakuMessages in the response, both nodes update their accounting records. -4. When payment threshold is reached, Node A sends over a cheque to reach a neutral balance. Settlement of this is currently out of scope, but would occur through a SWAP contract (to be specified). (mock and hard phase). -5. If disconnect threshold is reached, Node B disconnects Node A (mock and hard phase). - -Note that not all of these steps are mandatory in initial stages, see below for more details. For example, the payment threshold MAY initially be set out of bounds, and policy is only activated in the mock and hard phase. - -### Protobufs - -We use protobuf to specify the handshake and signature. This current protobuf is a work in progress. This is needed for mock and hard phase. - -A handshake gives initial information about payment thresholds and possibly other information. A cheque is best thought of as a promise to pay at a later date. - -```protobuf - -message Handshake { - bytes payment_threshold = 1; -} - -// TODO Signature? -// Should probably be over the whole Cheque type -message Cheque { - bytes beneficiary = 1; - // TODO epoch time or block time? - uint32 date = 2; - // TODO ERC20 extension? - // For now karma counter - uint32 amount = 3; -} - -``` - -## Incremental integration and roll-out - -To incrementally integrate this into Waku v2, we have divided up the roll-out into three phases: - -- Soft - accounting only -- Mock - send mock cheques and take word for it -- Hard Test - blockchain integration and deployed to public testnet (Goerli, Optimism testnet or similar) -- Hard Main - deployed to a public mainnet - -An implementation MAY support any of these phases. - -### Soft phase - -In the soft phase only accounting is performed, without consequence for the -peers. No disconnect or sending of cheques is performed at this tage. - -SWAP protocol is performed in conjunction with another request-reply protocol to account for its usage. -It SHOULD be done for [13/WAKU2-STORE](../../core/13/store) -and it MAY be done for other request/reply protocols. - -A client SHOULD log accounting state per peer -and SHOULD indicate when a peer is out of bounds (either of its thresholds met). - -### Mock phase - -In the mock phase, we send mock cheques and send cheques/disconnect peers as appropriate. - -- If a node reaches a disconnect threshold, which MUST be outside the payment threshold, it SHOULD disconnect the other peer. -- If a node is within payment balance, the other node SHOULD stay connected to it. -- If a node receives a valid Cheque it SHOULD update its internal accounting records. -- If any node behaves badly, the other node is free to disconnect and pick another node. - - Peer rating is out of scope of this specification. - -### Hard phase - -In the hard phase, in addition to sending cheques and activating policy, this is -done with blockchain integration on a public testnet. More details TBD. - -This also includes settlements where cheques can be redeemed. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -1. [Prisoner's Dilemma](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma) -2. [Axelrod - Evolution of Cooperation (book)](https://en.wikipedia.org/wiki/The_Evolution_of_Cooperation) -3. [Book of Swarm](https://web.archive.org/web/20210126130038/https://gateway.ethswarm.org/bzz/latest.bookofswarm.eth) -4. [13/WAKU2-STORE](../../core/13/store) - - - - diff --git a/waku/deprecated/5/waku0.md b/waku/deprecated/5/waku0.md deleted file mode 100644 index 43544141f..000000000 --- a/waku/deprecated/5/waku0.md +++ /dev/null @@ -1,562 +0,0 @@ ---- -title: 5/WAKU0 -name: Waku v0 -status: deprecated -editor: Oskar Thorén <oskarth@titanproxy.com> -contributors: - - Adam Babik <adam@status.im> - - Andrea Maria Piana <andreap@status.im> - - Dean Eigenmann <dean@status.im> - - Kim De Mey <kimdemey@status.im> ---- -- Status: deprecated -- Editor: Oskar Thorén <oskarth@titanproxy.com> -- Contributors: - - Adam Babik <adam@status.im> - - Andrea Maria Piana <andreap@status.im> - - Dean Eigenmann <dean@status.im> - - Kim De Mey <kimdemey@status.im> - - -This specification describes the format of Waku messages within the ÐΞVp2p Wire Protocol. This spec substitutes [EIP-627](https://eips.ethereum.org/EIPS/eip-627). Waku is a fork of the original Whisper protocol that enables better usability for resource restricted devices, such as mostly-offline bandwidth-constrained smartphones. It does this through (a) light node support, (b) historic messages (with a mailserver) (c) expressing topic interest for better bandwidth usage and (d) basic rate limiting. - -## Motivation - -Waku was created to incrementally improve in areas that Whisper is lacking in, with special attention to resource restricted devices. We specify the standard for Waku messages in order to ensure forward compatibility of different Waku clients, backwards compatibility with Whisper clients, as well as to allow multiple implementations of Waku and its capabilities. We also modify the language to be more unambiguous, concise and consistent. - -## Definitions - -| Term | Definition | -| --------------- | ----------------------------------------------------- | -| **Light node** | A Waku node that does not forward any messages. | -| **Envelope** | Messages sent and received by Waku nodes. | -| **Node** | Some process that is able to communicate for Waku. | - -## Underlying Transports and Prerequisites - -### Use of DevP2P - -For nodes to communicate, they MUST implement devp2p and run RLPx. They MUST have some way of connecting to other nodes. Node discovery is largely out of scope for this spec, but see the appendix for some suggestions on how to do this. - -### Gossip based routing - -In Whisper, messages are gossiped between peers. Whisper is a form of rumor-mongering protocol that works by flooding to its connected peers based on some factors. Messages are eligible for retransmission until their TTL expires. A node SHOULD relay messages to all connected nodes if an envelope matches their PoW and bloom filter settings. If a node works in light mode, it MAY choose not to forward envelopes. A node MUST NOT send expired envelopes, unless the envelopes are sent as a [mailserver](./mailserver) response. A node SHOULD NOT send a message to a peer that it has already sent before. - -## Wire Specification - -### Use of RLPx transport protocol - -All Waku messages are sent as devp2p RLPx transport protocol, version 5[^1] packets. These packets MUST be RLP-encoded arrays of data containing two objects: packet code followed by another object (whose type depends on the packet code). See [informal RLP spec](https://github.com/ethereum/wiki/wiki/RLP) and the [Ethereum Yellow Paper, appendix B](https://ethereum.github.io/yellowpaper/paper.pdf) for more details on RLP. - -Waku is a RLPx subprotocol called `waku` with version `0`. The version number corresponds to the major version in the header spec. Minor versions should not break compatibility of `waku`, this would result in a new major. (Some exceptions to this apply in the Draft stage of where client implementation is rapidly change). - -### ABNF specification - -Using [Augmented Backus-Naur form (ABNF)](https://tools.ietf.org/html/rfc5234) we have the following format: - -```abnf -; Packet codes 0 - 127 are reserved for Waku protocol -packet-code = 1*3DIGIT - -; rate limits -limit-ip = 1*DIGIT -limit-peerid = 1*DIGIT -limit-topic = 1*DIGIT - -rate-limits = "[" limit-ip limit-peerid limit-topic "]" - -pow-requirement-key = 48 -bloom-filter-key = 49 -light-node-key = 50 -confirmations-enabled-key = 51 -rate-limits-key = 52 -topic-interest-key = 53 - -status-options = "[" - [ 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 ] -"]" - -status = "[" version status-options "]" - -status-update = status-options - -; version is "an integer (as specified in RLP)" -version = DIGIT - -confirmations-enabled = BIT - -light-node = BIT - -; pow is "a single floating point value of PoW. -; This value is the IEEE 754 binary representation -; of a 64-bit floating point number. -; Values of qNAN, sNAN, INF and -INF are not allowed. -; Negative values are also not allowed." -pow = 1*DIGIT "." 1*DIGIT -pow-requirement = pow - -; bloom filter is "a byte array" -bloom-filter = *OCTET - -waku-envelope = "[" expiry ttl topic data nonce "]" - -; List of topics interested in -topic-interest = "[" *10000topic "]" - -; 4 bytes (UNIX time in seconds) -expiry = 4OCTET - -; 4 bytes (time-to-live in seconds) -ttl = 4OCTET - -; 4 bytes of arbitrary data -topic = 4OCTET - -; byte array of arbitrary size -; (contains encrypted message) -data = OCTET - -; 8 bytes of arbitrary data -; (used for PoW calculation) -nonce = 8OCTET - -messages = 1*waku-envelope - -; mail server / client specific -p2p-request = waku-envelope -p2p-message = 1*waku-envelope - -; packet-format needs to be paired with its -; corresponding packet-format -packet-format = "[" packet-code packet-format "]" - -required-packet = 0 status / - 1 messages / - 22 status-update / - -optional-packet = 126 p2p-request / 127 p2p-message - -packet = "[" required-packet [ optional-packet ] "]" -``` - -All primitive types are RLP encoded. Note that, per RLP specification, integers are encoded starting from `0x00`. - -### Packet Codes - -The message codes reserved for Waku protocol: 0 - 127. - -Messages with unknown codes MUST be ignored without generating any error, for forward compatibility of future versions. - -The Waku sub-protocol MUST support the following packet codes: - -| Name | Int Value | -| -------------------------- | ------------- | -| Status | 0 | -| Messages | 1 | -| Status Update | 22 | - -The following message codes are optional, but they are reserved for specific purpose. - -| Name | Int Value | Comment | -|----------------------------|-----------|---------| -| Batch Ack | 11 | | -| Message Response | 12 | | -| P2P Request | 126 | | -| P2P Message | 127 | | - -### Packet usage - -#### Status - -The Status message serves as a Waku handshake and peers MUST exchange this -message upon connection. It MUST be sent after the RLPx handshake and prior to -any other Waku messages. - -A Waku node MUST await the Status message from a peer before engaging in other Waku protocol activity with that peer. -When a node does not receive the Status message from a peer, before a configurable timeout, it SHOULD disconnect from that peer. - -Upon retrieval of the Status message, the node SHOULD validate the message -received and validated the Status message. Note that its peer might not be in -the same state. - -When a node is receiving other Waku messages from a peer before a Status -message is received, the node MUST ignore these messages and SHOULD disconnect from that peer. Status messages received after the handshake is completed MUST also be ignored. - -The status message MUST contain an association list containing various options. All options within this association list are OPTIONAL, ordering of the key-value pairs is not guaranteed and therefore MUST NOT be relied on. Unknown keys in the association list SHOULD be ignored. - -#### Messages - -This packet is used for sending the standard Waku envelopes. - -#### Status Update - -The Status Update message is used to communicate an update of the settings of the node. -The format is the same as the Status message, all fields are optional. -If none of the options are specified the message MUST be ignored and considered a noop. -Fields that are omitted are considered unchanged, fields that haven't changed SHOULD not -be transmitted. - -**PoW Requirement update** - -When PoW is updated, peers MUST NOT deliver the sender envelopes with PoW lower than specified in this message. - -PoW is defined as average number of iterations, required to find the current BestBit (the number of leading zero bits in the hash), divided by message size and TTL: - - PoW = (2**BestBit) / (size * TTL) - -PoW calculation: - - fn short_rlp(envelope) = rlp of envelope, excluding env_nonce field. - fn pow_hash(envelope, env_nonce) = sha3(short_rlp(envelope) ++ env_nonce) - fn pow(pow_hash, size, ttl) = 2**leading_zeros(pow_hash) / (size * ttl) - -where size is the size of the RLP-encoded envelope, excluding `env_nonce` field (size of `short_rlp(envelope)`). - -**Bloom filter update** - -The bloom filter is used to identify a number of topics to a peer without compromising (too much) privacy over precisely what topics are of interest. Precise control over the information content (and thus efficiency of the filter) may be maintained through the addition of bits. - -Blooms are formed by the bitwise OR operation on a number of bloomed topics. The bloom function takes the topic and projects them onto a 512-bit slice. At most, three bits are marked for each bloomed topic. - -The projection function is defined as a mapping from a 4-byte slice S to a 512-bit slice D; for ease of explanation, S will dereference to bytes, whereas D will dereference to bits. - - LET D[*] = 0 - FOREACH i IN { 0, 1, 2 } DO - LET n = S[i] - IF S[3] & (2 ** i) THEN n += 256 - D[n] = 1 - END FOR - -A full bloom filter (all the bits set to 1) means that the node is to be considered a `Full Node` and it will accept any topic. - -If both Topic Interest and bloom filter are specified, Topic Interest always takes precedence and bloom filter MUST be ignored. - -If only bloom filter is specified, the current Topic Interest MUST be discarded and only the updated bloom filter MUST be used when forwarding or posting envelopes. - -A bloom filter with all bits set to 0 signals that the node is not currently interested in receiving any envelope. - -**Topic Interest update** - -This packet is used by Waku nodes for sharing their interest in messages 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. - - -It is currently bounded to a maximum of 10000 topics. If you are interested in more topics than that, this is currently underspecified and likely requires updating it. The constant is subject to change. - -If only Topic Interest is specified, the current bloom filter MUST be discarded and only the updated Topic Interest MUST be used when forwarding or posting envelopes. - -An empty array signals that the node is not currently interested in receiving any envelope. - -**Rate Limits update** - -This packet is used for informing other nodes of their self defined rate limits. - -In order to provide 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. - -Each node MAY decide to whitelist, i.e. do not rate limit, selected IPs or peer IDs. - -If a peer exceeds node's rate limits, the connection between them MAY be dropped. - -Each node SHOULD broadcast its rate limits to its peers using the rate limits packet. The rate limits MAY also be sent as an optional parameter in the handshake. - -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. - -**Message Confirmations update** - -Message confirmations tell a node that a message originating from it has been received by its peers, allowing a node to know whether a message has or has not been received. - -A node MAY send a message confirmation for any batch of messages received with a packet Messages Code. - -A message confirmation is sent using Batch Acknowledge packet or Message Response packet. The Batch Acknowledge packet is followed by a keccak256 hash of the envelopes batch data. - -The current `version` of the message response is `1`. - -Using [Augmented Backus-Naur form (ABNF)](https://tools.ietf.org/html/rfc5234) we have the following format: - -```abnf -; a version of the Message Response -version = 1*DIGIT - -; keccak256 hash of the envelopes batch data (raw bytes) for which the confirmation is sent -hash = *OCTET - -hasherror = *OCTET - -; error code -code = 1*DIGIT - -; a descriptive error message -description = *ALPHA - -error = "[" hasherror code description "]" -errors = *error - -response = "[" hash errors "]" - -confirmation = "[" version response "]" -``` - -The supported codes: -`1`: 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). - -The drawback of sending message confirmations is that it increases the noise in the network because for each sent message, a corresponding confirmation is broadcast by one or more peers. - - -#### P2P Request - -This packet is used for sending Dapp-level peer-to-peer requests, e.g. Waku Mail Client requesting old messages from the [Waku Mail Server](./mailserver). - -#### P2P Message - -This packet is used for sending the peer-to-peer messages, which are not supposed to be forwarded any further. E.g. it might be used by the Waku Mail Server for delivery of old (expired) messages, which is otherwise not allowed. - - -### Payload Encryption - -Asymmetric encryption uses the standard Elliptic Curve Integrated Encryption Scheme with SECP-256k1 public key. - -Symmetric encryption uses AES GCM algorithm with random 96-bit nonce. - -### Packet code Rationale - -Packet codes `0x00` and `0x01` are already used in all Waku / Whisper versions. Packet code `0x02` and `0x03` were previously used in Whisper but are deprecated as of Waku v0.4 - -Packet code `0x22` is used to dynamically change the settings of a node. - -Packet codes `0x7E` and `0x7F` may be used to implement Waku Mail Server and Client. Without P2P messages it would be impossible to deliver the old messages, since they will be recognized as expired, and the peer will be disconnected for violating the Whisper protocol. They might be useful for other purposes when it is not possible to spend time on PoW, e.g. if a stock exchange will want to provide live feed about the latest trades. - -## Additional capabilities - -Waku supports multiple capabilities. These include light node, rate limiting and bridging of traffic. Here we list these capabilities, how they are identified, what properties they have and what invariants they must maintain. - -Additionally there is the capability of a mailserver which is documented in its on [specification](mailserver). - -### Light node - -The rationale for light nodes is to allow for interaction with waku on resource restricted devices as bandwidth can often be an issue. - -Light nodes MUST NOT forward any incoming messages, they MUST only send their own messages. When light nodes happen to connect to each other, they SHOULD disconnect. As this would result in messages being dropped between the two. - -Light nodes are identified by the `light_node` value in the status message. - -### Accounting for resources (experimental) - -Nodes MAY implement accounting, keeping track of resource usage. It is heavily inspired by Swarm's [SWAP protocol](https://www.bokconsulting.com.au/wp-content/uploads/2016/09/tron-fischer-sw3.pdf), and works by doing pairwise accounting for resources. - -Each node keeps track of resource usage with all other nodes. Whenever an envelope is received from a node that is expected (fits bloom filter or topic interest, is legal, etc) this is tracked. - -Every epoch (say, every minute or every time an event happens) statistics SHOULD be aggregated and saved by the client: - -| peer | sent | received | -|-------|------|----------| -| peer1 | 0 | 123 | -| peer2 | 10 | 40 | - -In later versions this will be amended by nodes communication thresholds, settlements and disconnect logic. - -## Upgradability and Compatibility - -### General principles and policy - -These are policies that guide how we make decisions when it comes to upgradability, compatibility, and extensibility: - -1. Waku aims to be compatible with previous and future versions. - -2. In cases where we want to break this compatibility, we do so gracefully and as a single decision point. - -3. To achieve this, we employ the following two general strategies: -- a) Accretion (including protocol negotiation) over changing data -- b) When we want to change things, we give it a new name (for example, a version number). - -Examples: - -- We enable bridging between `shh/6` and `waku/0` until such a time as when we are ready to gracefully drop support for `shh/6` (1, 2, 3). -- When we add parameter fields, we (currently) do so by accreting them in a list, so old clients can ignore new fields (dynamic list) and new clients can use new capabilities (1, 3). -- To better support (2) and (3) in the future, we will likely release a new version that gives better support for open, growable maps (association lists or native map type) (3) -- When we we want to provide a new set of messages that have different requirements, we do so under a new protocol version and employ protocol versioning. This is a form of accretion at a level above - it ensures a client can support both protocols at once and drop support for legacy versions gracefully. (1,2,3) - -### Backwards Compatibility - -Waku is a different subprotocol from Whisper so it isn't directly compatible. However, the data format is the same, so compatibility can be achieved by the use of a bridging mode as described below. Any client which does not implement certain packet codes should gracefully ignore the packets with those codes. This will ensure the forward compatibility. - -### Waku-Whisper bridging - -`waku/0` and `shh/6` are different DevP2P subprotocols, however they share the same data format making their envelopes compatible. This means we can bridge the protocols naively, this works as follows. - -**Roles:** -- Waku client A, only Waku capability -- Whisper client B, only Whisper capability -- WakuWhisper bridge C, both Waku and Whisper capability - -**Flow:** -1. A posts message; B posts message. -2. C picks up message from A and B and relays them both to Waku and Whisper. -3. A receives message on Waku; B on Whisper. - -**Note**: This flow means if another bridge C1 is active, we might get duplicate relaying for a message between C1 and C2. I.e. Whisper(<>Waku<>Whisper)<>Waku, A-C1-C2-B. Theoretically this bridging chain can get as long as TTL permits. - -### Forward Compatibility - -It is desirable to have a strategy for maintaining forward compatibility between `waku/0` and future version of waku. Here we outline some concerns and strategy for this. - -- **Connecting to nodes with multiple versions:** The way this SHOULD be accomplished in the future is by negotiating the versions of subprotocols, within the `hello` message nodes transmit their capabilities along with a version. As suggested in [EIP-8](https://eips.ethereum.org/EIPS/eip-8), if a node connects that has a higher version number for a specific capability, the node with a lower number SHOULD assume backwards compatibility. The node with the higher version will decide if compatibility can be assured between versions, if this is not the case it MUST disconnect. -- **Adding new packet codes:** New packet codes can be added easily due to the available packet codes. Unknown packet codes SHOULD be ignored. Upgrades that add new packet codes SHOULD implement some fallback mechanism if no response was received for nodes that do not yet understand this packet. -- **Adding new options in `status-options`:** New options can be added to the `status-options` association list in the `status` and `status-update` packet as options are OPTIONAL and unknown option keys SHOULD be ignored. A node SHOULD NOT disconnect from a peer when receiving `status-options` with unknown option keys. - -## Appendix A: Security considerations - -There are several security considerations to take into account when running Waku. Chief among them are: scalability, DDoS-resistance and privacy. These also vary depending on what capabilities are used. The security considerations for extra capabilities such as [mailservers](./mailserver##security-considerations) can be found in their respective specifications. - -### Scalability and UX - -**Bandwidth usage:** - -In version 0 of Waku, bandwidth usage is likely to be an issue. For more investigation into this, see the theoretical scaling model described [here](https://github.com/vacp2p/research/tree/dcc71f4779be832d3b5ece9c4e11f1f7ec24aac2/whisper_scalability). - -**Gossip-based routing:** - -Use of gossip-based routing doesn't necessarily scale. It means each node can see a message multiple times, and having too many light nodes can cause propagation probability that is too low. See [Whisper vs PSS](https://our.status.im/whisper-pss-comparison/) for more and a possible Kademlia based alternative. - -**Lack of incentives:** - -Waku currently lacks incentives to run nodes, which means node operators are more likely to create centralized choke points. - -### Privacy - -**Light node privacy:** - -The main privacy concern with light nodes is that directly connected peers will know that a message originates from them (as it are the only ones it sends). This means nodes can make assumptions about what messages (topics) their peers are interested in. - -**Bloom filter privacy:** - -By having a bloom filter where only the topics you are interested in are set, you reveal which messages you are interested in. This is a fundamental tradeoff between bandwidth usage and privacy, though the tradeoff space is likely suboptimal in terms of the [Anonymity](https://eprint.iacr.org/2017/954.pdf) [trilemma](https://petsymposium.org/2019/files/hotpets/slides/coordination-helps-anonymity-slides.pdf). - -**Privacy guarantees not rigorous:** - -Privacy for Whisper / Waku haven't been studied rigorously for various threat models like global passive adversary, local active attacker, etc. This is unlike e.g. Tor and mixnets. - -**Topic hygiene:** - -Similar to bloom filter privacy, if you use a very specific topic you reveal more information. See scalability model linked above. - -### Spam resistance - -**PoW bad for heterogeneous devices:** - -Proof of work is a poor spam prevention mechanism. A mobile device can only have a very low PoW in order not to use too much CPU / burn up its phone battery. This means someone can spin up a powerful node and overwhelm the network. - -### Censorship resistance - -**Devp2p TCP port blockable:** - -By default Devp2p runs on port `30303`, which is not commonly used for any other service. This means it is easy to censor, e.g. airport WiFi. This can be mitigated somewhat by running on e.g. port `80` or `443`, but there are still outstanding issues. See libp2p and Tor's Pluggable Transport for how this can be improved. - -## Appendix B: Implementation Notes - -### Implementation Matrix - -| Client | Spec supported | Details | -|--------|----------------|---------| -| **Status-go** | 0.5 | [details](https://github.com/status-im/status-go/blob/develop/WAKU) | -| **Nimbus** | 0.4 | [details](https://github.com/status-im/nimbus/tree/8747fe1ecd36fe778bb92b97634db84d364fede8/waku) | - -### Recommendations for clients - -Notes useful for implementing Waku mode. - - 1. Avoid duplicate envelopes - - To avoid duplicate envelopes, only connect to one Waku node. Benign duplicate envelopes is an intrinsic property of Whisper which often leads to a N factor increase in traffic, where N is the number of peers you are connected to. - - 2. Topic specific recommendations - - Consider partition topics based on some usage, to avoid too much traffic on a single topic. - -### Node discovery - -Resource restricted devices SHOULD use [EIP-1459](https://eips.ethereum.org/EIPS/eip-1459) to discover nodes. - -Known static nodes MAY also be used. - -## Changelog - -### Version 0.6 - -Released [April 21,2020](https://github.com/vacp2p/specs/commit/9e650995f24179844857520c68fa3e8f6018b125) - -- Mark spec as Deprecated mode in terms of its lifecycle. - -### Version 0.5 - -Released [March 17,2020](https://github.com/vacp2p/specs/commit/7b9dc562bc50c6bb844ac575cb221ec9cda2530a) - -- Clarify the preferred way of handling unknown keys in the `status-options` association list. -- Correct spec/implementation mismatch: Change RLP keys to be the their int values in order to reflect production behavior - -### Version 0.4 - -Released [February 21, 2020](https://github.com/vacp2p/specs/commit/17bd066e317bbe33af07146b721d73f24de47e88). - -- Simplify implementation matrix with latest state -- Introduces a new required packet code Status Code (`0x22`) for communicating option changes -- Deprecates the following packet codes: PoW Requirement (`0x02`), Bloom Filter (`0x03`), Rate limits (`0x20`), Topic interest (`0x21`) - all superseded by the new Status Code (`0x22`) -- Increased `topic-interest` capacity from 1000 to 10000 - -### Version 0.3 - -Released [February 13, 2020](https://github.com/vacp2p/specs/commit/73138d6ba954ab4c315e1b8d210ac7631b6d1428). - -- Recommend DNS based node discovery over other Discovery methods. -- Mark spec as Draft mode in terms of its lifecycle. -- Simplify Changelog and misc formatting. -- Handshake/Status message not compatible with shh/6 nodes; specifying options as association list. -- Include topic-interest in Status handshake. -- Upgradability policy. -- `topic-interest` packet code. - -### Version 0.2 - -Released [December 10, 2019](https://github.com/vacp2p/specs/blob/waku-0.2.0/waku). - -- General style improvements. -- Fix ABNF grammar. -- Mailserver requesting/receiving. -- New packet codes: topic-interest (experimental), rate limits (experimental). -- More details on handshake modifications. -- Accounting for resources mode (experimental) -- Appendix with security considerations: scalability and UX, privacy, and spam resistance. -- Appendix with implementation notes and implementation matrix across various clients with breakdown per capability. -- More details on handshake and parameters. -- Describe rate limits in more detail. -- More details on mailserver and mail client API. -- Accounting for resources mode (very experimental). -- Clarify differences with Whisper. - -### Version 0.1 - -Initial version. Released [November 21, 2019](https://github.com/vacp2p/specs/blob/b59b9247f2ac1bf45c75bd3227a2e5dd87b6d7b0/waku). - -### Differences between shh/6 and waku/0 - -Summary of main differences between this spec and Whisper v6, as described in [EIP-627](https://eips.ethereum.org/EIPS/eip-627): - -- RLPx subprotocol is changed from `shh/6` to `waku/0`. -- Light node capability is added. -- Optional rate limiting is added. -- Status packet has following additional parameters: light-node, -confirmations-enabled and rate-limits -- Mail Server and Mail Client functionality is now part of the specification. -- P2P Message packet contains a list of envelopes instead of a single envelope. - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - - -## Footnotes - -[^1]: Felix Lange et al. [The RLPx Transport Protocol](https://github.com/ethereum/devp2p/blob/master/rlpx). Ethereum. diff --git a/waku/deprecated/README.md b/waku/deprecated/README.md deleted file mode 100644 index 06ae459d8..000000000 --- a/waku/deprecated/README.md +++ /dev/null @@ -1,7 +0,0 @@ - -# Deprecated RFCs - -Deprecated specifications are no longer used in Waku products. -This subdirectory is for achrive purpose and -should not be used in production ready implementations. -Visit [Waku RFCs](https://github.com/waku-org/specs) for new Waku specifications under discussion. diff --git a/waku/informational/22/toy-chat.md b/waku/informational/22/toy-chat.md deleted file mode 100644 index c45926235..000000000 --- a/waku/informational/22/toy-chat.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: 22/TOY-CHAT -name: Waku v2 Toy Chat -status: draft -editor: Franck Royer <franck@status.im> -contributors: - - Hanno Cornelius <hanno@status.im> ---- -- Status: draft -- Editor: Franck Royer <franck@status.im> -- Contributors: - - Hanno Cornelius <hanno@status.im> - - -**Content Topic**: `/toy-chat/2/huilong/proto`. - -This specification explains a toy chat example using Waku v2. -This protocol is mainly used to: - -1. Dogfood Waku v2, -2. Show an example of how to use Waku v2. - -Currently, all main Waku v2 implementations support the toy chat protocol: -[nim-waku](https://github.com/status-im/nim-waku/blob/master/examples/v2/chat2.nim), -js-waku ([NodeJS](https://github.com/status-im/js-waku/tree/main/examples/cli-chat) and [web](https://github.com/status-im/js-waku/tree/main/examples/web-chat)) -and [go-waku](https://github.com/status-im/go-waku/tree/master/examples/chat2). - -Note that this is completely separate from the protocol the Status app is using for its chat functionality. - -# Design - -The chat protocol enables sending and receiving messages in a chat room. -There is currently only one chat room, which is tied to the content topic. -The messages SHOULD NOT be encrypted. - -The `contentTopic` MUST be set to `/toy-chat/2/huilong/proto`. - -# Payloads - -```protobuf -syntax = "proto3"; - -message Chat2Message { - uint64 timestamp = 1; - string nick = 2; - bytes payload = 3; -} -``` - -- `timestamp`: The time at which the message was sent, in Unix Epoch seconds, -- `nick`: The nickname of the user sending the message, -- `payload`: The text of the messages, UTF-8 encoded. - -# Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/waku/informational/23/topics.md b/waku/informational/23/topics.md deleted file mode 100644 index c754bfc6f..000000000 --- a/waku/informational/23/topics.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: 23/WAKU2-TOPICS -name: Waku v2 Topic Usage Recommendations -status: draft -category: Informational -editor: Oskar Thoren <oskarth@titanproxy.com> -contributors: - - Hanno Cornelius <hanno@status.im> - - Daniel Kaiser <danielkaiser@status.im> ---- -- Status: draft -- Category: Informational -- Editor: Oskar Thoren <oskarth@titanproxy.com> -- Contributors: - - Hanno Cornelius <hanno@status.im> - - Daniel Kaiser <danielkaiser@status.im> - - -This document outlines recommended usage of topic names in Waku v2. -In [10/WAKU2 spec](../../standards/core/10/waku2) there are two types of topics: - -- pubsub topics, used for routing -- Content topics, used for content-based filtering - - -## Pubsub Topics - -Pubsub topics are used for routing of messages (see [11/WAKU2-RELAY](../../standards/core/11/relay)), -and can be named implicitly by Waku sharding (see [RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding)). -This document comprises recommendations for explicitly naming pubsub topics (e.g. when choosing *named sharding* as specified in [RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding)). - -### Pubsub Topic Format - -Pubsub topics SHOULD follow the following structure: - -`/waku/2/{topic-name}` - -This namespaced structure makes compatibility, discoverability, and automatic handling of new topics easier. - -The first two parts indicate - -1) it relates to the Waku protocol domain, and -2) the version is 2. - -If applicable, it is RECOMMENDED to structure `{topic-name}` in a hierarchical way as well. - -> *Note*: In previous versions of this document, the structure was `/waku/2/{topic-name}/{encoding}`. -The now deprecated `/{encoding}` was always set to `/proto`, -which indicated that the [data field](../../standards/core/11/RELAY#protobuf-definition) in pubsub is serialized/encoded as protobuf. -The inspiration for this format was taken from -[Ethereum 2 P2P spec](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/p2p-interface##topics-and-messages). -However, because the payload of messages transmitted over [11/WAKU2-RELAY](../../standards/core/11/relay) must be a [14/WAKU2-MESSAGE](../../standards/core/14/message), -which specifies the wire format as protobuf,`/proto` is the only valid encoding. -This makes the `/proto` indication obsolete. -The encoding of the `payload` field of a Waku Message is indicated by the `/{encoding}` part of the content topic name. -Specifying an encoding is only significant for the actual payload/data field. -Waku preserves this option by allowing to specify an encoding for the WakuMessage payload field as part of the content topic name. - -### Default PubSub Topic - -The Waku v2 default pubsub topic is: - -`/waku/2/default-waku/proto` - -The `{topic name}` part is `default-waku/proto`, which indicates it is default topic for exchanging WakuMessages; -`/proto` remains for backwards compatibility. - -### Application Specific Names - -Larger apps can segregate their pubsub meshes using topics named like: - -``` -/waku/2/status/ -/waku/2/walletconnect/ -``` - -This indicates that these networks carry WakuMessages, but for different domains completely. - -### Named Topic Sharding Example - -The following is an example of named sharding, as specified in [RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding). - -``` -waku/2/waku-9_shard-0/ -... -waku/2/waku-9_shard-9/ -``` - -This indicates explicitly that the network traffic has been partitioned into 10 buckets. - -## Content Topics - -The other type of topic that exists in Waku v2 is a content topic. -This is used for content based filtering. -See [14/WAKU2-MESSAGE spec](../../standards/core/14/message) for where this is specified. -Note that this doesn't impact routing of messages between relaying nodes, -but it does impact how request/reply protocols such as -[12/WAKU2-FILTER](../../standards/core/12/filter) and [13/WAKU2-STORE](../../standards/core/13/store) are used. - -This is especially useful for nodes that have limited bandwidth, -and only want to pull down messages that match this given content topic. - -Since all messages are relayed using the relay protocol regardless of content topic, -you MAY use any content topic you wish without impacting how messages are relayed. - -### Content Topic Format - -The format for content topics is as follows: - -`/{application-name}/{version-of-the-application}/{content-topic-name}/{encoding}` - -The name of a content topic is application-specific. -As an example, here's the content topic used for an upcoming testnet: - -`/toychat/2/huilong/proto` - -### Content Topic Naming Recommendations - -Application names should be unique to avoid conflicting issues with other protocols. -Applications should specify their version (if applicable) in the version field. -The `{content-topic-name}` portion of the content topic is up to the application, -and depends on the problem domain. -It can be hierarchical, for instance to separate content, or to indicate different bandwidth and privacy guarantees. -The encoding field indicates the serialization/encoding scheme for the [WakuMessage payload](../../standards/core/14/message#payloads) field. - -## Differences with Waku v1 - -In [5/WAKU1](../../deprecated/5/waku0) there is no actual routing. -All messages are sent to all other nodes. -This means that we are implicitly using the same pubsub topic that would be something like: - -``` -/waku/1/default-waku/rlp -``` - -Topics in Waku v1 correspond to Content Topics in Waku v2. - -### Bridging Waku v1 and Waku v2 - -To bridge Waku v1 and Waku v2 we have a [15/WAKU-BRIDGE](../../standards/core/15/bridge). -For mapping Waku v1 topics to Waku v2 content topics, -the following structure for the content topic SHOULD be used: - -``` -/waku/1/<4bytes-waku-v1-topic>/rfc26 -``` - -The `<4bytes-waku-v1-topic>` SHOULD be the lowercase hex representation of the 4-byte Waku v1 topic. -A `0x` prefix SHOULD be used. -`/rfc26` indicates that the bridged content is encoded according to RFC [26/WAKU2-PAYLOAD](../../standards/application/26/payload). -See [15/WAKU-BRIDGE](../../standards/core/15/bridge) for a description of the bridged fields. - -This creates a direct mapping between the two protocols. -For example: - -``` -/waku/1/0x007f80ff/rfc26 -``` - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -* [10/WAKU2 spec](../../standards/core/10/waku2) -* [11/WAKU2-RELAY](../../standards/core/11/relay) -* [RELAY-SHARDING](https://github.com/waku-org/specs/blob/waku-RFC/standards/core/relay-sharding) -* [Ethereum 2 P2P spec](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/p2p-interface##topics-and-messages) -* [14/WAKU2-MESSAGE](../../standards/core/14/message) -* [12/WAKU2-FILTER](../../standards/core/12/filter) -* [13/WAKU2-STORE](../../standards/core/13/store) -* [6/WAKU1](../../deprecated/5/waku0) -* [15/WAKU-BRIDGE](../../standards/core/15/bridge) -* [26/WAKU-PAYLOAD](../../standards/application/26/payload) diff --git a/waku/informational/27/peers.md b/waku/informational/27/peers.md deleted file mode 100644 index 8825e1393..000000000 --- a/waku/informational/27/peers.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: 27/WAKU2-PEERS -name: Waku v2 Client Peer Management Recommendations -status: draft -editor: Hanno Cornelius <hanno@status.im> -contributors: ---- -- Status: draft -- Editor: Hanno Cornelius <hanno@status.im> - -`27/WAKU2-PEERS` describes a recommended minimal set of peer storage and peer management features to be implemented by Waku v2 clients. - -In this context, peer _storage_ refers to a client's ability to keep track of discovered or statically-configured peers and their metadata. -It also deals with matters of peer _persistence_, -or the ability to store peer data on disk to resume state after a client restart. - -Peer _management_ is a closely related concept and refers to the set of actions a client MAY choose to perform based on its knowledge of its connected peers, -e.g. triggering reconnects/disconnects, keeping certain connections alive, etc. - -## Peer store - -The peer store SHOULD be an in-memory data structure where information about discovered or configured peers are stored. -It SHOULD be considered the main source of truth for peer-related information in a Waku v2 client. -Clients MAY choose to persist this store on-disk. - -### Tracked peer metadata - -It is RECOMMENDED that a Waku v2 client tracks at least the following information about each of its peers in a peer store: - -| Metadata | Description | -| --- | --- | -| _Public key_ | The public key for this peer. This is related to the libp2p [`Peer ID`](https://docs.libp2p.io/concepts/peer-id/). | -| _Addresses_ | Known transport layer [`multiaddrs`](https://docs.libp2p.io/concepts/addressing/) for this peer. | -| _Protocols_ | The libp2p [`protocol IDs`](https://docs.libp2p.io/concepts/protocols/#protocol-ids) supported by this peer. This can be used to track the client's connectivity to peers supporting different Waku v2 protocols, e.g. [`11/WAKU2-RELAY`](../../standards/core/11/relay) or [`13/WAKU2-STORE`](../../standards/core/13/store). | -| _Connectivity_ | Tracks the peer's current connectedness state. See [**Peer connectivity**](#peer-connectivity) below. | -| _Disconnect time_ | The timestamp at which this peer last disconnected. This becomes important when managing [peer reconnections](#reconnecting-peers) | - -### Peer connectivity - -A Waku v2 client SHOULD track _at least_ the following connectivity states for each of its peers: - - **`NotConnected`**: The peer has been discovered or configured on this client, - but no attempt has yet been made to connect to this peer. - This is the default state for a new peer. - - **`CannotConnect`**: The client attempted to connect to this peer, but failed. - - **`CanConnect`**: The client was recently connected to this peer and disconnected gracefully. - - **`Connected`**: The client is actively connected to this peer. - -This list does not preclude clients from tracking more advanced connectivity metadata, -such as a peer's blacklist status (see [`18/WAKU2-SWAP`](../../standards/application/18/swap)). - -### Persistence - -A Waku v2 client MAY choose to persist peers across restarts, -using any offline storage technology, such as an on-disk database. -Peer persistence MAY be used to resume peer connections after a client restart. - -## Peer management - -Waku v2 clients will have different requirements when it comes to managing the peers tracked in the [**peer store**](#peer-store). -It is RECOMMENDED that clients support: -- [automatic reconnection](#reconnecting-peers) to peers under certain conditions -- [connection keep-alive](#connection-keep-alive) - -### Reconnecting peers - -A Waku v2 client MAY choose to reconnect to previously connected, managed peers under certain conditions. -Such conditions include, but are not limited to: -- Reconnecting to all `relay`-capable peers after a client restart. This will require [persistent peer storage](#persistence). - -If a client chooses to automatically reconnect to previous peers, -it MUST respect the [backing off period](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##prune-backoff-and-peer-exchange) specified for GossipSub v1.1 before attempting to reconnect. -This requires keeping track of the [last time each peer was disconnected](#tracked-peer-metadata). - -### Connection keep-alive - -A Waku v2 client MAY choose to implement a keep-alive mechanism to certain peers. -If a client chooses to implement keep-alive on a connection, -it SHOULD do so by sending periodic [libp2p pings](https://docs.libp2p.io/concepts/protocols/#ping) as per `10/WAKU2` [client recommendations](../../standards/core/10/waku2#recommendations-for-clients). -The recommended period between pings SHOULD be _at most_ 50% of the shortest idle connection timeout for the specific client and transport. -For example, idle TCP connections often times out after 10 to 15 minutes. - -> **Implementation note:** the `nim-waku` client currently implements a keep-alive mechanism every `5 minutes`, -in response to a TCP connection timeout of `10 minutes`. - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [`Peer ID`](https://docs.libp2p.io/concepts/peer-id/) -- [`multiaddrs`](https://docs.libp2p.io/concepts/addressing/) -- [`protocol IDs`](https://docs.libp2p.io/concepts/protocols/#protocol-ids) -- [`11/WAKU2-RELAY`](../../standards/core/11/relay) -- [`13/WAKU2-STORE`](../../standards/core/13/store) -- [`18/WAKU2-SWAP`](../../standards/application/18/swap) -- [backing off period](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##prune-backoff-and-peer-exchange) -- [libp2p pings](https://docs.libp2p.io/concepts/protocols/#ping) -- [`10/WAKU2` client recommendations](../../standards/core/10/waku2#recommendations-for-clients) diff --git a/waku/informational/29/config.md b/waku/informational/29/config.md deleted file mode 100644 index b643dec81..000000000 --- a/waku/informational/29/config.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: 29/WAKU2-CONFIG -name: Waku v2 Client Parameter Configuration Recommendations -status: draft -editor: Hanno Cornelius <hanno@status.im> -contributors: ---- -- Status: draft -- Editor: Hanno Cornelius <hanno@status.im> - -`29/WAKU2-CONFIG` describes the RECOMMENDED values to assign to configurable parameters for Waku v2 clients. -Since Waku v2 is built on [libp2p](https://github.com/libp2p/specs), -most of the parameters and reasonable defaults are derived from there. - -Waku v2 relay messaging is specified in [`11/WAKU2-RELAY`](../../standards/core/11/relay), -a minor extension of the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README). -GossipSub behaviour is controlled by a series of adjustable parameters. -Waku v2 clients SHOULD configure these parameters to the recommended values below. - -## GossipSub v1.0 parameters - -GossipSub v1.0 parameters are defined in the [corresponding libp2p specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0##parameters). -We repeat them here with RECOMMMENDED values for `11/WAKU2-RELAY` implementations. - -| Parameter | Purpose | RECOMMENDED value | -|----------------------|-------------------------------------------------------|-------------------| -| `D` | The desired outbound degree of the network | 6 | -| `D_low` | Lower bound for outbound degree | 4 | -| `D_high` | Upper bound for outbound degree | 8 | -| `D_lazy` | (Optional) the outbound degree for gossip emission | `D` | -| `heartbeat_interval` | Time between heartbeats | 1 second | -| `fanout_ttl` | Time-to-live for each topic's fanout state | 60 seconds | -| `mcache_len` | Number of history windows in message cache | 5 | -| `mcache_gossip` | Number of history windows to use when emitting gossip | 3 | -| `seen_ttl` | Expiry time for cache of seen message ids | 2 minutes | - -## GossipSub v1.1 parameters - -GossipSub v1.1 extended GossipSub v1.0 and introduced [several new parameters](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##overview-of-new-parameters). -We repeat the global parameters here with RECOMMMENDED values for `11/WAKU2-RELAY` implementations. - -| Parameter | Description | RECOMMENDED value | -|----------------|------------------------------------------------------------------------|-------------------| -| `PruneBackoff` | Time after pruning a mesh peer before we consider grafting them again. | 1 minute | -| `FloodPublish` | Whether to enable flood publishing | true | -| `GossipFactor` | % of peers to send gossip to, if we have more than `D_lazy` available | 0.25 | -| `D_score` | Number of peers to retain by score when pruning from oversubscription | `D_low` | -| `D_out` | Number of outbound connections to keep in the mesh. | `D_low` - 1 | - -`11/WAKU2-RELAY` clients SHOULD implement a peer scoring mechanism with the parameter constraints as [specified by libp2p](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##overview-of-new-parameters). - -## Other configuration - -The following behavioural parameters are not specified by `libp2p`, -but nevertheless describes constraints that `11/WAKU2-RELAY` clients MAY choose to implement. - -| Parameter | Description | RECOMMENDED value | -|--------------------|---------------------------------------------------------------------------|-------------------| -| `BackoffSlackTime` | Slack time to add to prune backoff before attempting to graft again | 2 seconds | -| `IWantPeerBudget` | Maximum number of IWANT messages to accept from a peer within a heartbeat | 25 | -| `IHavePeerBudget` | Maximum number of IHAVE messages to accept from a peer within a heartbeat | 10 | -| `IHaveMaxLength` | Maximum number of messages to include in an IHAVE message | 5000 | - -## Copyright - -Copyright and related rights waived via -[CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [libp2p](https://github.com/libp2p/specs) -- [11/WAKU2-RELAY](../../standards/core/11/relay) -- [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README) -- [corresponding libp2p specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0##parameters) -- [several new parameters](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1##overview-of-new-parameters) diff --git a/waku/informational/30/adaptive-nodes.md b/waku/informational/30/adaptive-nodes.md deleted file mode 100644 index 2566a8170..000000000 --- a/waku/informational/30/adaptive-nodes.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: 30/ADAPTIVE-NODES -name: Adaptive nodes -status: draft -editor: Oskar Thorén <oskarth@titanproxy.com> -contributors: ---- -- Status: draft -- Editor: Oskar Thorén <oskarth@titanproxy.com> - -This is an informational spec that show cases the concept of adaptive nodes. - -## Node types - a continuum - -We can look at node types as a continuum, from more restricted to less restricted, fewer resources to more resources. - -![Node types - a continuum](./images/adaptive_node_continuum2.png) - -### Possible limitations - -- Connectivity: Not publicly connectable vs static IP and DNS -- Connectivity: Mostly offline to mostly online to always online -- Resources: Storage, CPU, Memory, Bandwidth - -### Accessibility and motivation - -Some examples: - -- Opening browser window: costs nothing, but contribute nothing -- Desktop: download, leave in background, contribute somewhat -- Cluster: expensive, upkeep, but can contribute a lot - -These are also illustrative, so a node in a browser in certain environment might contribute similarly to Desktop. - -### Adaptive nodes - -We call these nodes *adaptive nodes* to highlights different modes of contributing, such as: - -- Only leeching from the network -- Relaying messages for one or more topics -- Providing services for lighter nodes such as lightpush and filter -- Storing historical messages to various degrees -- Ensuring relay network can't be spammed with RLN - -### Planned incentives - -Incentives to run a node is currently planned around: - -- SWAP for accounting and settlement of services provided -- RLN RELAY for spam protection -- Other incentivization schemes are likely to follow and is an area of active research - -## Node protocol selection - -Each node can choose which protocols to support, depending on its resources and goals. - -![Protocol selection](./images/adaptive_node_protocol_selection2.png) - -In the case of protocols like [11/WAKU2-RELAY](../../standards/core/11/relay) etc (12, 13, 19, 21) these correspond to Libp2p protocols. - -However, other protocols like 16/WAKU2-RPC (local HTTP JSON-RPC), 25/LIBP2P-DNS-DISCOVERY, Discovery v5 (DevP2P) or interfacing with distributed storage, are running on different network stacks. - -This is in addition to protocols that specify payloads, such as 14/WAKU2-MESSAGE, 26/WAKU2-PAYLOAD, or application specific ones. As well as specs that act more as recommendations, such as 23/WAKU2-TOPICS or 27/WAKU2-PEERS. - -## Waku network visualization - -We can better visualize the network with some illustrative examples. - -### Topology and topics - -The first one shows an example topology with different PubSub topics for the relay protocol. - -![Waku Network visualization](./images/adaptive_node_network_topology_protocols2.png) - -### Legend - -![Waku Network visualization legend](./images/adaptive_node_network_topology_protocols_legend.png) - -The dotted box shows what content topics (application-specific) a node is interested in. - -A node that is purely providing a service to the network might not care. - -In this example, we see support for toy chat, a topic in Waku v1 (Status chat), WalletConnect, and SuperRare community. - -### Auxiliary network - -This is a separate component with its own topology. - -Behavior and interaction with other protocols specified in Vac RFCs, e.g. 25/LIBP2P-DNS-DISCOVERY, 15/WAKU-BRIDGE, etc. - -### Node Cross Section - -This one shows a cross-section of nodes in different dimensions and shows how the connections look different for different protocols. - -![Node Cross Section](./images/adaptive_node_cross_section2.png) - -## Copyright - -Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). - -## References - -- [11/WAKU2-RELAY](../../standards/core/11/relay) diff --git a/waku/informational/30/images/adaptive_network_topology_protocols.jpg b/waku/informational/30/images/adaptive_network_topology_protocols.jpg deleted file mode 100644 index 4bd0f7dfe60e3af9a07130680a0df6911f688f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632861 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�|yHderdC!Bv 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%0A7z5nm89?%`x4m!_}zw2VftxSYH!dJ(K8r_Sklf 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

{+Qi^RH6Sae1vaLL@W%# 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 P&=52P4gc2={dMF&5_S)* diff --git a/waku/informational/30/images/adaptive_node_continuum.jpg b/waku/informational/30/images/adaptive_node_continuum.jpg deleted file mode 100644 index 5e5c00a92ca3ca9f7f25d571d0ecc27bd4e86182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673930 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

a|k7 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

M9@kG5aC?mm2S|ZJ zoT&`6e8f5co$0qNx#%!KI%rVv$O)_Q7B21kRSp&--XGf?w`r00_w59#0ZDF! z)nMPKc0aXfgz#$Z$>JwnZ`{R6Hy;8^is#RBTu@7oyFbB#W~cCMkT$s}tWaNeN=;zI z%~msVIr!^W`N#142BUEoznF`3DE4q}fE!rDFUQci@l98uniD`aUBwbQjW0en)X#`p zLRAKgCS~GQ%T8CWI_*Z;!br?$Foh*T&R(b%D+Hw&Pd*ItmsC%)%0DpYpztNu$
    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
    `O1RSP3!yl6m?SrHrLBoaNAU11JIO# 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

    07Z!rNq*3E8l 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

    YZ3Ga=^iLBcSf{dNC2&zvb&N^W~ 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 z'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

    c`g>UyW72Lb%{p7v~@_XwBU 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

    nvK8Ez|3LcH#2I2 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�J|xVG!Bgf+GLDHM1nPa4Kl91RtfBB%)dK0ZD| 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

    Y;@A#?X+Lw4^VO4Jrzcb{k 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