From 8a9ee15a2657e217fd1b0bdad7d28027b99efc35 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Mon, 19 Jun 2023 18:07:45 +0100 Subject: [PATCH] reorg nwaku binary acquisition --- .cspell.json | 3 +- docs/contribute.md | 2 +- docs/guides/nodes-and-sdks.md | 2 +- docs/guides/nwaku/build-source.md | 5 +-- docs/guides/nwaku/run-docker.md | 2 +- docs/guides/reference/node-config-options.md | 6 ++-- docs/guides/run-nwaku-node.md | 34 ++++++++++++-------- docs/overview/reference/glossary.md | 4 +++ scripts/config-table-generator.py | 4 ++- 9 files changed, 38 insertions(+), 24 deletions(-) diff --git a/.cspell.json b/.cspell.json index 7ccdf05..90fea11 100644 --- a/.cspell.json +++ b/.cspell.json @@ -47,7 +47,8 @@ "myaddr", "extip", "staticnode", - "permissioned" + "permissioned", + "Secp" ], "flagWords": [], "ignorePaths": [ diff --git a/docs/contribute.md b/docs/contribute.md index 507a7c7..cbb8f54 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -4,7 +4,7 @@ title: Contribute to Waku Get involved in Waku's open-source initiatives to improve the protocols, SDKs, developer tools and examples, and documentation. You can contribute by: -- [Operating a node](/guides/nodes-and-sdks#run-a-waku-node) within your application. +- [Running a node](/guides/nodes-and-sdks#run-a-waku-node) within your application. - [Reporting bugs](#report-a-bug) and [suggesting missing features](#suggest-a-feature) to the development team. - Inspiring other developers to explore and use Waku for [various use cases](/overview/use-cases). diff --git a/docs/guides/nodes-and-sdks.md b/docs/guides/nodes-and-sdks.md index a40cdd5..4e28dfd 100644 --- a/docs/guides/nodes-and-sdks.md +++ b/docs/guides/nodes-and-sdks.md @@ -6,7 +6,7 @@ title: Nodes and SDKs Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by [powering various applications](/powered-by-waku). [Join our community](/community) to stay updated on our progress. ::: -Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by operating a node. +Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by running a node. ## Run a Waku Node diff --git a/docs/guides/nwaku/build-source.md b/docs/guides/nwaku/build-source.md index 728a104..f0b8bc4 100644 --- a/docs/guides/nwaku/build-source.md +++ b/docs/guides/nwaku/build-source.md @@ -5,12 +5,13 @@ title: Build Nwaku from Source This guide provides detailed steps to build a `nwaku` node from the source to access the latest development version or a specific commit or tag of `nwaku`. If you prefer a more stable version, [download a pre-compiled binary](https://github.com/waku-org/nwaku/tags) instead. :::info -A minimum of 2GB of RAM is required to build `nwaku`. +- A minimum of 2GB of RAM is required to build `nwaku`. +- Nwaku is available for Linux and macOS, with experimental Windows support. ::: ## Install Dependencies -To clone and build nwaku, you will need the standard developer tools, including a C compiler, Make, Bash, and Git. +To build nwaku, you will need the standard developer tools, including a C compiler, Make, Bash, and Git. #### Linux diff --git a/docs/guides/nwaku/run-docker.md b/docs/guides/nwaku/run-docker.md index 3717000..18813ab 100644 --- a/docs/guides/nwaku/run-docker.md +++ b/docs/guides/nwaku/run-docker.md @@ -68,5 +68,5 @@ To find your public IP, use: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}' ``` -We recommend using explicit port mappings (`-p`) when exposing ports accessible from outside the host (libp2p listening ports, discovery, HTTP server). +We recommend using explicit port mappings (`-p`) when exposing ports accessible from outside the host (listening and discovery ports, API servers). ::: \ No newline at end of file diff --git a/docs/guides/reference/node-config-options.md b/docs/guides/reference/node-config-options.md index 9128597..642414b 100644 --- a/docs/guides/reference/node-config-options.md +++ b/docs/guides/reference/node-config-options.md @@ -38,7 +38,7 @@ Here are the available node configuration options, along with their default valu | Name | Default Value | Description | | - | - | - | | `dns-addrs` | `true` | Enable resolution of `dnsaddr`, `dns4` or `dns6` multiaddrs | -| `dns-addrs-name-server` | `@[1.1.1.1, 1.0.0.1]` | DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated | +| `dns-addrs-name-server` | `["1.1.1.1", "1.0.0.1"]` | DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated | | `dns4-domain-name` | | The domain name resolving to the node's public IPv4 address | ## Relay Config @@ -64,7 +64,7 @@ Here are the available node configuration options, along with their default valu | `rln-relay-tree-path` | | Path to the RLN merkle tree sled db (https://github.com/spacejam/sled) | | `staticnode` | | Peer multiaddr to directly connect with. Argument may be repeated | | `keep-alive` | `false` | Enable keep-alive for idle connections: true\|false | -| `topic` | `@[/waku/2/default-waku/proto]` | Default topic to subscribe to. Argument may be repeated | +| `topic` | `["/waku/2/default-waku/proto"]` | Default topic to subscribe to. Argument may be repeated | ## Store and Message Store Config @@ -129,7 +129,7 @@ Here are the available node configuration options, along with their default valu | - | - | - | | `dns-discovery` | `false` | Enable discovering nodes via DNS | | `dns-discovery-url` | | URL for DNS node list in format 'enrtree://@' | -| `dns-discovery-name-server` | `@[1.1.1.1, 1.0.0.1]` | DNS name server IPs to query. Argument may be repeated | +| `dns-discovery-name-server` | `["1.1.1.1", "1.0.0.1"]` | DNS name server IPs to query. Argument may be repeated | ## Discv5 Config diff --git a/docs/guides/run-nwaku-node.md b/docs/guides/run-nwaku-node.md index 62af264..dbcd2f4 100644 --- a/docs/guides/run-nwaku-node.md +++ b/docs/guides/run-nwaku-node.md @@ -4,31 +4,37 @@ title: Run a Nwaku Node Nwaku (formerly `nim-waku`) is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the [protocols](/overview/concepts/protocols) they want to support based on their needs, motivations, and available resources. -This guide provides detailed steps to build, configure, and connect a `nwaku` node to the Waku Network. It also includes interacting with the node and finding its addresses. +This guide provides detailed steps to download, build, configure, and connect a `nwaku` node to the Waku Network. It also includes interacting with the node and finding its addresses. -:::info -Nwaku can be built and run on Linux and macOS, while Windows support is currently experimental. -::: +## Get the Node Binary -## Build the Node +To run a node, you must have the `nwaku` binary. Nwaku provides multiple options for acquiring the node binary: -Before running a `nwaku` node, it is necessary to build it. Nwaku provides multiple options for building a node: +#### Download the Binary | | Description | Documentation | | - | - | - | | Precompiled Binary | Download a precompiled binary of the `nwaku` node | [Download Nwaku Binary](https://github.com/waku-org/nwaku/tags) | -| Build Source | Build a `nwaku` node directly from the source code | [Build Nwaku from Source](/guides/nwaku/build-source) | -| Docker Container | Build and run a `nwaku` node in a Docker Container | [Run Nwaku in a Docker Container](/guides/nwaku/run-docker) | -| Docker Compose | Build and run a `nwaku` node with Docker Compose | [Run Nwaku with Docker Compose](/guides/nwaku/run-docker-compose) | +| Nightly Release | Try the latest `nwaku` updates without compiling the binaries | [Download Nightly Release](https://github.com/waku-org/nwaku/releases/tag/nightly) | + +#### Build the Binary + +You can build the node binary directly from the [nwaku source code](https://github.com/waku-org/nwaku). To learn more, please refer to the [Build Nwaku from Source](/guides/nwaku/build-source) guide. + +#### Run the Binary in Docker + +| | Description | Documentation | +| - | - | - | +| Docker Container | Run a `nwaku` node in a Docker Container | [Run Nwaku in a Docker Container](/guides/nwaku/run-docker) | +| Docker Compose | Run a `nwaku` node with Docker Compose | [Run Nwaku with Docker Compose](/guides/nwaku/run-docker-compose) | :::tip -- If you want to try the latest `nwaku` updates without compiling the binaries, [download the nightly release](https://github.com/waku-org/nwaku/releases/tag/nightly). -- You can run `nwaku` binaries and Docker images on cloud service providers like [Google Cloud](https://cloud.google.com/), [Microsoft Azure](https://azure.microsoft.com/), [Amazon Web Services](https://aws.amazon.com/), and [DigitalOcean](https://www.digitalocean.com/). +You can run the `nwaku` binaries and Docker images on cloud service providers like [Google Cloud](https://cloud.google.com/), [Microsoft Azure](https://azure.microsoft.com/), [Amazon Web Services](https://aws.amazon.com/), and [DigitalOcean](https://www.digitalocean.com/). ::: ## Run the Node -Once you have built the `nwaku` node, run it using the [default configuration](/guides/reference/node-config-methods#default-configuration-values): +Once you have gotten the `nwaku` binary, run it using the [default configuration](/guides/reference/node-config-methods#default-configuration-values): ```bash # Run with default configuration @@ -110,7 +116,7 @@ You can find the addresses of a running node through its logs or by calling the When starting the node, `nwaku` will display all the public listening and discovery addresses at the `INFO` log level. ::: -### Listening Address(es) +### Listening Addresses Look for the log entry that begins with `Listening on`, for example: @@ -126,7 +132,7 @@ INF 2023-06-15 16:09:54.448+01:00 Listening on top /ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn ``` -### Discoverable ENR Address(es) +### Discoverable ENR Addresses A `nwaku` node can encode its addressing information in an [Ethereum Node Record (ENR)](https://eips.ethereum.org/EIPS/eip-778) following the [WAKU2-ENR](https://rfc.vac.dev/spec/31/) specification, primarily for peer discovery. diff --git a/docs/overview/reference/glossary.md b/docs/overview/reference/glossary.md index 7fc3acc..29973d0 100644 --- a/docs/overview/reference/glossary.md +++ b/docs/overview/reference/glossary.md @@ -58,6 +58,10 @@ Mostly offline devices refer to clients who spend most of their time offline or A node is a device or client that implements Waku [protocols](#protocol) and leverages the [Waku Network](#waku) to enable secure and private peer-to-peer Web3 communication. +### Node Key + +A node key is a [Secp256k1](https://en.bitcoin.it/wiki/Secp256k1) (64 char hex string) private key for generating a Waku node public [listening](#transport) and [discovery](#peer-discovery) address. + ### Payload The payload field in a [Waku Message](#waku-message) contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in [Waku Message Payload Encryption](#waku-message-payload-encryption). diff --git a/scripts/config-table-generator.py b/scripts/config-table-generator.py index c412938..90c9121 100644 --- a/scripts/config-table-generator.py +++ b/scripts/config-table-generator.py @@ -63,7 +63,9 @@ def extract_config(config_path: str) -> str: if line.startswith("defaultValue:"): default_value = re.split("defaultValue: ", line)[1].strip() if '""' not in default_value: - default_value = f"`{remove_extra_char(default_value, ',')}`".replace('"', "") + default_value = f"`{remove_extra_char(default_value, ',')}`".replace("@", "") + if "[" not in default_value: + default_value = default_value.replace('"', "") if "ValidIpAddress.init" in default_value: default_value = default_value.replace("ValidIpAddress.init(", "").replace(")", "") row["default"] = default_value