a5c137002f | ||
---|---|---|
.github | ||
_includes | ||
_layouts | ||
assets | ||
content/docs/rfcs/1 | ||
specs | ||
.gitignore | ||
.pyspelling.yml | ||
.remarkrc | ||
.textlintrc | ||
404.html | ||
CNAME | ||
CONTRIBUTING.md | ||
Gemfile | ||
Gemfile.lock | ||
README.md | ||
_config.yml | ||
package-lock.json | ||
package.json | ||
wordlist.txt |
README.md
This repository contains the specs for vac, a modular peer-to-peer messaging stack, with a focus on secure messaging. A detailed explanation of the vac and its design goals can be found here.
Status
The entire vac protocol is under active development, each specification has its own status
which is reflected through the version number at the top of every document. We use semver to version these specifications.
Protocols
These protocols define various components of the vac stack.
Waku
Waku is a protocol that replaces Whisper (EIP-627). Waku v2 is an upgrade of Waku v1 that is in active development and offer significant improvements. You can read more about the plan for it and an update.
Version 2
- waku/2 specs for
waku/2
version, current draft version - waku/2 relay spec for WakuRelay, current draft version
- waku/2 filter spec for WakuFilter, current draft version
- waku/2 store spec for WakuStore, current draft version
- waku/2 message spec for Waku Message, current draft version
- waku/2 bridge spec for Waku bridge with v1, alpha
- waku/2 rln relay spec for Waku Relay with RLN, alpha
- waku/2 swap spec for Waku Swap Accounting, alpha
- waku/2 rpc api - Waku RPC API for Waku v2 nodes, alpha
Version 0 and 1
- waku/0 specs for
waku/0
version, now deprecated - waku/1 specs for
waku/1
version, current stable version - envelope data format waku envelope data field specification.
- mailserver - Mailserver specification for archiving and delivering historical waku envelopes on demand.
- rpc api - Waku RPC API for Waku v1 nodes.
Data sync
- mvds - Data Synchronization protocol for unreliable transports.
- remote log - Remote replication of local logs.
- mvds metadata - Metadata field for MVDS messages.
Style guide
Sequence diagrams are generated using Mscgen like this: mscgen -T png -i input.msc -o output.png
. Both the source and generated image should be in source control. For ease of readability, the generated image is embedded inside the main spec document.
Alternatively, mscgenjs can be used to generate sequence diagrams (mscgenjs produces better quality figures especially concerning lines' spaces and figures' margins). Once installed, the following command can be used to generate the sequence diagrams mscgenjs -T png -i input.msc -o output.png
. More details on the installation and compilation are given in mscgenjs repository. You may try the online playground https://mscgen.js.org/ as well to get a sense of the output figures.
The lifecycle of the specs follows the COSS Lifecycle
Meta
The keywords “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.
Linting
Spellcheck
To run the spellchecker locally, you must install pyspelling.
It can then be run with the following command:
pyspelling -c .pyspelling.yml
Words that should be ignored or are unrecognized must be added to the wordlist.
Markdown Verification
We use remark to verify our markdown. You can easily run this tool simply by using our npm
package:
npm install
npm run lint
Textlint
We use textlint for extra markdown verification. You can easily run this tool simply by using our npm
package:
npm install
npm run textlint