Waku node and protocol.
Go to file
Sanaz Taheri Boshrooyeh 4895be61ec
Off-chain group construction and management (#718)
* WIP

* WIP: fixes a bug

* adds test for static group formation

* adds static group creation when rln-relay is enabled

* adds createStatic group

* wip: adds group formation to mount rlnrelay

* adds createMembershipList utility function

* adds doc strings and todos

* cleans up the code and add comments

* defaults createRLNInstance depth argument to 32

* renames Depth

* distinguishes between onchain and offchain modes

* updates index boundaries

* updates log levels

* updates docstring

* updates log level of displayed membership keys

* relocates a todo

* activates all the tests

* fixes some comments and todos

* extracts some utils procs for better debugging

* adds todo

* moves calculateMerkleRoot and toMembersipKeyPairs to the rln utils

* makes calls to the utils functions

* adds unit test for createMembershipList

* adds unittest for toMembershipKeyPairs and calcMerkleRoot

* cleans up the code and fixes tree root value

* reverts an unwanted change

* minor

* adds comments and cleans up the code

* updates config message

* adds more comments

* fixes a minor value mismatch

* edits the size of group

* minor rewording

* defines a const var for the group keys

* replaces the sequence literal with the StaticGroupKeys const

* converts var to let when applicable

* replaces hardcoded value with well-defined constants

* moves createMembershipList to the rln relay utils module

* renames HashSize to HashHexSize

* minor updates on the comments

* reorganizes the consts

* indicates that rlnRelayMemIndex is an experimental option

* fixes a type conversion bug

* revises the unittest of "mount waku rln-relay off-chain"

* clarifies the use of index

* updates a docstring

* removes redundant constants and capitalize all of them

* deletes the ETH_CLIENT const from the test file

* renames a few vars for the sake of clarity

* reorganizes unittest into blocks of execution, debug messages, and checks

* adds more comments

* more comments and clarifications

* cleans up the tests

* minor

* adds a minor fix

* replaces a var usage with let

* fixes a bug
2021-09-17 10:31:25 -07:00
.github/workflows Add GH project board automation (#666) 2021-07-15 13:49:50 +08:00
ci ci: build and test only what changed 2021-07-02 11:09:09 +02:00
docs Add basic tutorial for Waku v2 DNS-based discovery (#711) 2021-08-30 11:08:00 +02:00
examples Fix announced addresses (#710) 2021-08-30 11:01:28 +02:00
metrics Added waku fleet dashboard (#704) 2021-08-19 09:57:53 +02:00
tests Off-chain group construction and management (#718) 2021-09-17 10:31:25 -07:00
vendor Integrate DNS resolution (#709) 2021-08-25 13:57:35 +02:00
waku Off-chain group construction and management (#718) 2021-09-17 10:31:25 -07:00
wrappers Refactor wakunode2.nim (#664) 2021-07-14 19:58:46 +02:00
.dockerignore add a Dockerfile for creating nim-waku images 2020-05-27 12:51:20 +02:00
.gitignore Improve libwaku and C wrappers (#613) 2021-06-13 20:50:10 +08:00
.gitmodules Integrate DNS resolution (#709) 2021-08-25 13:57:35 +02:00
CHANGELOG.md Add basic tutorial for Waku v2 DNS-based discovery (#711) 2021-08-30 11:08:00 +02:00
Dockerfile Fix: Remove rln file from Docker image (#606) 2021-06-10 09:18:52 +02:00
LICENSE-APACHEv2 Fix name in licence (#517) 2021-04-28 20:00:45 +10:00
LICENSE-MIT Fix name in licence (#517) 2021-04-28 20:00:45 +10:00
Makefile Whisper tests (#678) 2021-07-19 17:54:36 +08:00
README.md Remove PCRE dependency from general Waku Prerequisites 2021-06-17 14:43:10 +02:00
config.nims Remove the need for pcre (#623) 2021-06-15 09:51:09 +02:00
env.sh Set up repo to make use of nimbus-build-system 2020-05-01 11:29:16 +02:00
waku.nimble Whisper tests (#678) 2021-07-19 17:54:36 +08:00

README.md

nim-waku

Introduction

The nim-waku repository implements Waku v1 and v2, and provides tools related to it.

  • A Nim implementation of the Waku v1 protocol.
  • A Nim implementation of the Waku v2 protocol.
  • CLI applications wakunode and wakunode2 that allows you to run a Waku v1 or v2 node.
  • Examples of Waku v1 and v2 usage.
  • Various tests of above.

For more details on Waku v1 and v2, see their respective home folders:

How to Build & Run

These instructions are generic and apply to both Waku v1 and v2. For more detailed instructions, see Waku v1 and v2 home above.

Prerequisites

  • GNU Make, Bash and the usual POSIX utilities. Git 2.9.4 or newer.
  • Rust

More information on the installation of these can be found here.

Wakunode

# The first `make` invocation will update all Git submodules.
# You'll run `make update` after each `git pull`, in the future, to keep those submodules up to date.
make wakunode1 wakunode2

# See available command line options
./build/wakunode --help
./build/wakunode2 --help

# Connect the client directly with the Status test fleet
./build/wakunode --log-level:debug --discovery:off --fleet:test --log-metrics
# TODO Equivalent for v2 

Waku Protocol Test Suite

# Run all the Waku v1 and v2 tests
make test

Examples

Examples can be found in the examples folder. For Waku v2, there is a fully featured chat example.