From 1b64cb42b049335a0fcd4a38034ecc951f819bc7 Mon Sep 17 00:00:00 2001
From: import this <97586125+serinko@users.noreply.github.com>
Date: Thu, 16 Jan 2025 15:23:58 +0000
Subject: [PATCH] [DOCs/operators]: Guides, changes and release-notes for
v2025.1-reeses (#5340)
* create ToC snippet
* fund node client account
* revamp node guide
* finish setup page revamp
* add new update to changelog
* fix wallet dowload uls
* fix operator steps urls
* fix operator steps urls
* fix operator steps urls
* finish release notes
* finish changelog
* debug build
* correct links syntax
* add remote mnemonic pull command
---
.../sdk/typescript/mixfetch-example-code.mdx | 2 +-
.../components/operators/snippets/tc-info.mdx | 9 +
.../outputs/api-scraping-outputs/time-now.md | 2 +-
.../docs/pages/operators/changelog.mdx | 242 +++++++++++++++++-
.../docs/pages/operators/faq/general-faq.mdx | 6 +-
documentation/docs/pages/operators/nodes.mdx | 19 +-
.../docs/pages/operators/nodes/nym-node.mdx | 4 +-
.../operators/nodes/nym-node/bonding.mdx | 49 ++++
.../pages/operators/nodes/nym-node/setup.mdx | 118 ++++-----
.../operators/nodes/preliminary-steps.mdx | 2 +-
.../preliminary-steps/wallet-preparation.mdx | 2 +-
.../docs/pages/operators/sandbox.mdx | 2 +-
12 files changed, 378 insertions(+), 79 deletions(-)
create mode 100644 documentation/docs/components/operators/snippets/tc-info.mdx
diff --git a/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx b/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx
index d0fc84f514..c9e9320462 100644
--- a/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx
+++ b/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx
@@ -10,7 +10,7 @@ import Stack from '@mui/material/Stack';
import Paper from '@mui/material/Paper';
import type { SetupMixFetchOps } from '@nymproject/mix-fetch';
-const defaultUrl = 'https://nymtech.net/favicon.svg';
+const defaultUrl = 'https://nym.com/favicon.svg';
const args = { mode: 'unsafe-ignore-cors' };
const mixFetchOptions: SetupMixFetchOps = {
diff --git a/documentation/docs/components/operators/snippets/tc-info.mdx b/documentation/docs/components/operators/snippets/tc-info.mdx
new file mode 100644
index 0000000000..33d4dfdb6e
--- /dev/null
+++ b/documentation/docs/components/operators/snippets/tc-info.mdx
@@ -0,0 +1,9 @@
+import { Callout } from 'nextra/components';
+
+### Terms & Conditions
+
+
+From `nym-node` version `1.1.3` onward is required to accept [**Operators Terms & Conditions**](https://nymtech.net/terms-and-conditions/operators/v1.0.0) in order to be part of the active set. Make sure to read them before you add the flag.
+
+
+There has been a long ongoing discussion whether and how to apply Terms and Conditions for Nym network operators, with an aim to stay aligned with the philosophy of Free Software and provide legal defense for both node operators and Nym developers. To understand better the reasoning behind this decision, you can listen to the first [Nym Operator Town Hall](https://www.youtube.com/live/7hwb8bAZIuc?si=3mQ2ed7AyUA1SsCp&t=915) introducing the T&Cs or to [Operator AMA with CEO Harry Halpin](https://www.youtube.com/watch?v=yIN-zYQw0I0) from June 4th, 2024, explaining pros and cons of T&Cs implementation.
diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
index 1b6e7b9050..c568fec333 100644
--- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
+++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
@@ -1 +1 @@
-Wednesday, January 8th 2025, 15:01:28 UTC
+Thursday, January 16th 2025, 09:57:52 UTC
diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx
index 1aa52d4f8d..7d69a4ab76 100644
--- a/documentation/docs/pages/operators/changelog.mdx
+++ b/documentation/docs/pages/operators/changelog.mdx
@@ -5,8 +5,6 @@ import { VarInfo } from 'components/variable-info.tsx';
import { AccordionTemplate } from 'components/accordion-template.tsx';
import { Steps } from 'nextra/components';
-
-
export const TestingSteps = () => (
Testing steps performed
@@ -32,15 +30,251 @@ export const TunnelManagerCommands = () => (
);
-
# Changelog
This page displays a full list of all the changes during our release cycle from `v2024.3-eclipse` onward. Operators can find here the newest updates together with links to relevant documentation. The list is sorted so that the newest changes appear first.
-**Note:** Any information shared on this page was up to date at the time of writing. We do *not* maintain changelog retrospectively.
+**Note:** Any information published on this page was up to date at the time of writing. We do *not* maintain changelog retrospectively.
+## `v2025.1-reeses`
+
+- [Release Binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.1-reeses)
+- [`nym-node`](nodes/nym-node.mdx) version `1.3.0`
+
+```
+nym-node
+Binary Name: nym-node
+Build Timestamp: 2025-01-15T09:50:54.404428047Z
+Build Version: 1.3.0
+Commit SHA: c202e2d598fabda5fc16a6c1e110255857a2b1ca
+Commit Date: 2025-01-15T10:27:39.000000000+01:00
+Commit Branch: HEAD
+rustc Version: 1.84.0
+rustc Channel: stable
+cargo Profile: release
+```
+
+### Operators Updates & Tools
+
+
+From `nym-node v1.3.0` operators can choose multiple functionalities for their `nym-node` binary (flagged as `--mode`).
+
+**However, the clients are yet to be developed to be able to make a proper selection for multi-mode nodes and therefore we ask operators to sign only one functionality to `--mode` option at a time. Please chose out of: `mixnode` or `entry-gateway` or `exit-gateway`.**
+
+We are developing a design where operators can enable multiple modes, and let the Nym API to position the node according the network's needs in the beginning of each epoch.
+
+
+- [Node functionality info updated](nodes/nym-node/setup#functionality-mode)
+- [Fund your `nym-node` inbuilt Nyx account](nodes/nym-node/bonding#fund-nym-node-client-nyx-account) to prepare for gateway ticket rewarding
+- `config.toml` changes:
+ - Replaced `mode` with `modes` to allow setting the node to run with say, `entry` + `mixnode` roles simultaneously
+ - Added `maximum_forward_packet_delay` to `mixnet.debug` section
+ - Moved `verloc` section from `mixnode.verloc` to top level
+ - Removed `mixnode` section
+ - Removed `entry_gateway` section to `gateway_tasks`
+ - Moved `authenticator` section from `gateway_tasks` (`entry_gateway`) to `service_providers` (`exit_gateway`)
+ - Renamed `exit_gateway` section to `service_providers`
+ - Moved top level `authenticator` section to `service_providers` so that it'd live alongside NR and IPR
+ - Added general `debug` section
+ - Added `metrics` section
+- All documentation migrated to a new URL [nym.com/docs](https://nym.com/docs) alongside the rebranding of Nym organisation.
+ - Updated [network architecture diagrams](https://nym.com/docs/network/architecture)
+ - New blow-by-blow mixnet [traffic flow](https://nym.com/docs/network/architecture) section
+- [Winter Nym Squad League started](https://forum.nym.com/t/nym-squad-league-farewell-fall-welcome-winter/977)
+- From this release onward (New Year) Operators Updates & Tools will be on top of each release changelog followed by features, cryptography and bugfix parts.
+- All 2024 release notes were moved to the bottom section called [Archived changelog](#archived-changelog)
+
+### Features
+
+- [build(deps): bump micromatch from `4.0.4` to `4.0.8` in `/testnet-faucet`](https://github.com/nymtech/nym/pull/4813): Bumps [micromatch](https://github.com/micromatch/micromatch) from `4.0.4` to `4.0.8`.
+- [Move NS client to separate package under NS API](https://github.com/nymtech/nym/pull/5171):
+ - Moving NS API client code to separate package outside NS Agent makes the code cleaner & more modular
+ - NS agent now imports NS API client that it uses
+ - No functionality change in NS API or NS agent
+- [Introduced initial internal commands for nym-cli: ecash key and request generation](https://github.com/nymtech/nym/pull/5174)
+- [NS API - Gateway stats scraping](https://github.com/nymtech/nym/pull/5180): This PR adds a metrics scraper that fetches metrics from the `metrics/sessions` endpoint on gateway. The entries are stored and served on the API for one year
+- [Remove explorer dependency](https://github.com/nymtech/nym/pull/5190)
+- [Hopefully final steps of the smoosh™️](https://github.com/nymtech/nym/pull/5201): this PR is a bit more extensive than initially planned because of all the spaghetti that had to be untangled to make it all happen. The general idea is that now it's possible to run your node simultaneously in multiple modes. for example `mixnode` + `entry` or `entry` + `exit`, etc. The modes do the following:
+ - `mixnode`: allows the node to handle **forward** sphinx packets
+ - `entry-gateway`: allows the node to accepts websocket connections from incoming clients and to handle **final hop** sphinx packets
+ - `exit-gateway`: allows the node to handle **final hop** sphinx packets as well as starts NR and IPR service providers
+ Furthermore, if node runs with `wireguard` enabled, it will start local `authenticator` service provider which will also implicitly enable final hop packet handling regardless of the underlying mode. There are also various of other smaller (and bigger) changes:
+ - Upon receiving a forward packet, its delay is now clamped so that one could not dos the node by asking it to delay it for, for example, a year
+ - As mentioned above, node can now run in multiple modes at the same time,
+ - `/metrics/mixing` endpoint got deprecated (it still provides the same information, however) and might be removed in future release
+ - Introduced `/metrics/packet-stats` endpoint that provides more extensive information about packets received/sent
+ - It is now possible to control whether the node should log its statistics to console
+ - The console logs are also updated with the current packet rates
+ - All nodes now run the "verloc" protocol and measure every other node on the network
+ - Metrics got revamped and unified:
+ - All running metrics are stored in a single `NymNodeMetrics` struct
+ - There exists a `MetricsAggregator` that listens to any metrics events that might require additional processing
+ - Any new metrics event types can be easily added by registering a new handler via `register_handler`. the type must implement `MetricsHandler` trait and use unique variant of `MetricsEvent` enum. for example `GatewaySessionStatsHandler`. It is, however, possible to have opaque handlers, such as the already implemented `LegacyMixingStatsUpdater` and `MixnetMetricsCleaner`
+ - Everything in `mixnode` directory has been removed because there was nothing really left there. The mixing socket listener was unified in `nym-node` and similarly `verloc` was also moved there
+ - `gateway` directory was similarly reduced in size. Now it also creates appropriate tasks as opposed to the whole gateway process. eventually it might also be further stripped, but today is not that day.
+ - Removed the generic parameter on the `GatewayStorage` to simplify all the generics down the stack. it wasn't used anyway
+
+CLI:
+ - Added `--modes` argument to specify all node modes with a single command (or `env` variable). for example: `--modes="mixnode,entry"`. Can't be used alongside `--modes`
+ - Extended `--mode` argument to allow specifying it multiple times, for example: `--mode mixnode --mode entry`. can't be used alongside `--mode`
+
+Config changes:
+ - Replaced `mode` with `modes` to allow setting the node to run with say, `entry` + `mixnode` roles simultaneously
+ - Added `maximum_forward_packet_delay` to `mixnet.debug` section
+ - Moved `verloc` section from `mixnode.verloc` to top level
+ - Removed `mixnode` section
+ - Removed `entry_gateway` section to `gateway_tasks`
+ - Moved `authenticator` section from `gateway_tasks` (`entry_gateway`) to `service_providers` (`exit_gateway`)
+ - Renamed `exit_gateway` section to `service_providers`
+ - Moved top level `authenticator` section to `service_providers` so that it'd live alongside NR and IPR
+ - Added general `debug` section
+ - Added `metrics` section
+- [Better date serialization](https://github.com/nymtech/nym/pull/5207): Proper date serialization for NS API session stats
+- [Restore Location fields](https://github.com/nymtech/nym/pull/5208): restore `latitude` and `longitude` fields
+- [Derive serialize for UserAgent](https://github.com/nymtech/nym/pull/5210)
+- [Change sqlite journal mode to WAL](https://github.com/nymtech/nym/pull/5213)
+- [Shipping raw metrics to PG](https://github.com/nymtech/nym/pull/5216)
+- [Extend raw ws fd for gateway client](https://github.com/nymtech/nym/pull/5218)
+- [Add fd callback to client core](https://github.com/nymtech/nym/pull/5230)
+- [TicketType derive Hash and Eq](https://github.com/nymtech/nym/pull/5233): It's useful to keep `TicketType` in maps, which require `Hash`. Also derive `Eq` since it's useful.
+- [Extend swagger docs](https://github.com/nymtech/nym/pull/5235)
+- [Add FromStr impl for UserAgent](https://github.com/nymtech/nym/pull/5236): Add `FromStr` implementation for `UserAgent` to make it easier to pass in custom user agent in vpn clients as a CLI argument.
+- [Remove unneeded async function annotation](https://github.com/nymtech/nym/pull/5246)
+- [Add control messages to `GatewayTransciver`](https://github.com/nymtech/nym/pull/5247)
+
}>
+**Review and Testing: Forget Me Implementation**
+
+- Validated the encryption and delivery of `ForgetMe` control messages to the gateway
+
+**Testing: MixTrafficController Integration**
+
+- Verified that the `MixTrafficController` invokes `ForgetMe` logic correctly during shutdown
+- Tested behaviour for gateway transceiver failures while sending control messages
+
+**Testing: Gateway Storage Updates**
+- Confirmed successful deletion of client data (e.g., inbox messages, bandwidth allocations) from persistent storage
+
+
+- [Add conversion unit tests for auth msg](https://github.com/nymtech/nym/pull/5251)
+- [Update TS bindings](https://github.com/nymtech/nym/pull/5255)
+- [Removed legacy socks5 listener](https://github.com/nymtech/nym/pull/5259)
+- [Add PATCH support to `nym-http-api-client`](https://github.com/nymtech/nym/pull/5260): Add `PATCH` support to `nym-http-api-client` crate
+- [Wireguard metrics](https://github.com/nymtech/nym/pull/5278): With this PR on each peer controller update the following global metrics information are also updated:
+ - total bytes tx
+ - total bytes rx
+ - current active peers
+ - total peers registered
+ - The former two are exposed with REST endpoints `/api/v1/metrics/wireguard-stats`, while the rest will be accessible via prometheus (soon ™️ ). The wireguard stats are also logged to the console (assuming they're non-zero)
+- [Add close to credential storage](https://github.com/nymtech/nym/pull/5283): Add close method to credential storage
+
}>
+1. **Review File: `common/credential-storage/src/backends/sqlite.rs`**
+- Verified addition of `close` method for the SQLite backend
+
+2. **Review File: `common/credential-storage/src/ephemeral_storage.rs`**
+- Confirmed addition of `close` method for ephemeral storage with no action required
+
+3. **Review File: `common/credential-storage/src/persistent_storage/mod.rs`**
+- Ensured `close` method integration for persistent storage
+
+4. **Review File: `common/credential-storage/src/storage.rs`**
+- Verified updates to the `Storage` trait to include `close` and `cleanup_expired` methods
+
+
+- [Cherry picked \#5286](https://github.com/nymtech/nym/pull/5287)
+
}>
+1. **Review File: `common/network-defaults/src/constants.rs`**
+- Confirmed updated `mixnet_vpn` constants were added.
+
+2. **Review File: `service-providers/ip-packet-router/src/constants.rs`**
+- Checked replacement of legacy `TUN_*` constants with new `mixnet_vpn` constants.
+- Validated alignment of routing traffic configurations.
+
+3. **Review File: `service-providers/ip-packet-router/src/ip_packet_router.rs`**
+- Ensured new `nym_network_defaults::constants::mixnet_vpn` constants replaced old references.
+- Verified `TunDeviceConfig` consistency.
+
+4. **Review File: `service-providers/ip-packet-router/src/util/generate_new_ip.rs`**
+- Confirmed substitution of `TUN_DEVICE_*` constants with `NYM_TUN_DEVICE_*` constants.
+- Tested functionality for generating random IPs within subnet.
+
+
+- [Expand `nym-node` prometheus metrics](https://github.com/nymtech/nym/pull/5298): This PR undusts the `/api/v1/metrics/prometheus` and introduces the following **37** new data points:
+
+ - mixnet:
+ - ingress:
+ - `nym_node_mixnet_ingress_forward_hop_packets_received`
+ - `nym_node_mixnet_ingress_final_hop_packets_received`
+ - `nym_node_mixnet_ingress_malformed_packets_received`
+ - `nym_node_mixnet_ingress_excessive_delay_packets`
+ - `nym_node_mixnet_ingress_forward_hop_packets_dropped`
+ - `nym_node_mixnet_ingress_final_hop_packets_dropped`
+
+ - `nym_node_mixnet_ingress_forward_hop_packets_received_rate`
+ - `nym_node_mixnet_ingress_final_hop_packets_received_rate`
+ - `nym_node_mixnet_ingress_malformed_packets_received_rate`
+ - `nym_node_mixnet_ingress_excessive_delay_packets_rate`
+ - `nym_node_mixnet_ingress_forward_hop_packets_dropped_rate`
+ - `nym_node_mixnet_ingress_final_hop_packets_dropped_rate`
+
+ - egress:
+ - `nym_node_mixnet_egress_stored_on_disk_final_hop_packets`
+ - `nym_node_mixnet_egress_forward_hop_packets_sent`
+ - `nym_node_mixnet_egress_ack_packets_sent`
+ - `nym_node_mixnet_egress_forward_hop_packets_dropped`
+
+ - `nym_node_mixnet_egress_forward_hop_packets_sent_rate`
+ - `nym_node_mixnet_egress_ack_packets_sent_rate`
+ - `nym_node_mixnet_egress_forward_hop_packets_dropped_rate`
+
+ - client sessions
+ - `nym_node_entry_client_sessions_unique_users`
+ - `nym_node_entry_client_sessions_sessions_started`
+ - `nym_node_entry_client_sessions_finished_sessions`
+ - `nym_node_entry_client_sessions_durations_{TYP}` (histogram), for example `nym_node_entry_client_sessions_durations_vpn`
+
+ - wireguard:
+ - `nym_node_wireguard_bytes_rx`
+ - `nym_node_wireguard_bytes_tx`
+ - `nym_node_wireguard_bytes_total_peers`
+ - `nym_node_wireguard_bytes_active_peers`
+
+ - `nym_node_wireguard_bytes_rx_rate`
+ - `nym_node_wireguard_bytes_tx_rate`
+
+
+ - network
+ - `nym_node_network_active_ingress_mixnet_connections`
+ - `nym_node_network_active_ingress_web_socket_connections`
+ - `nym_node_network_active_egress_mixnet_connections`
+
+ - process
+ - `nym_node_process_forward_hop_packets_being_delayed`
+ - `nym_node_process_packet_forwarder_queue_size`
+ - `nym_node_process_topology_query_resolution_latency` (histogram)
+ - `nym_node_process_final_hop_packets_pending_delivery`
+ - `nym_node_process_forward_hop_packets_pending_delivery`
+
+
+- [Amend 250gb limit](https://github.com/nymtech/nym/pull/5313): Change bandwidth cap to 250gb
+- [Warn users if node is run in exit mode only](https://github.com/nymtech/nym/pull/5320): Throws a warning if node is run in "exit" mode only as by default, this will **NOT** enable entry capabilities, i.e. opening the websocket. thus making it ineligible for rewarded set selection (and rewards)
+- [Reduce log severity for number of packets being delayed](https://github.com/nymtech/nym/pull/5321)
+- [Apply 1.84 linter suggestions](https://github.com/nymtech/nym/pull/5330)
+- [Readjusted --mode behaviour to fix the regression](https://github.com/nymtech/nym/pull/5331)
+- [Legacy alert](https://github.com/nymtech/nym/pull/5346): alert moved into `nav` components
+
+
+### Bugfix
+
+- [Fix overflow](https://github.com/nymtech/nym/pull/5184)
+- [Fix overflow again](https://github.com/nymtech/nym/pull/5204)
+- [Make sure to update timestamp of last batch verification to prevent double redemption](https://github.com/nymtech/nym/pull/5239)
+- [Make sure to apply gateway score filtering when choosing initial node](https://github.com/nymtech/nym/pull/5256)
+- [Fixed client session histogram buckets](https://github.com/nymtech/nym/pull/5316)
+- [Contract version assignment](https://github.com/nymtech/nym/pull/5318): This PR fixes updates to current nym-node version as well as introduces migration to fix the existing state of the mainnet contract
+ - [Make sure refresh data key matches bond info](https://github.com/nymtech/nym/pull/5329): This is to forbid operators from reusing the same underlying identity key for multiple nodes by overwriting the describe data. the reported key has to always match what the node has bonded with (and the contract enforces uniqueness)
+
## Archived Changelog
To allow reading through older changelogs, we store them below sorted by years.
diff --git a/documentation/docs/pages/operators/faq/general-faq.mdx b/documentation/docs/pages/operators/faq/general-faq.mdx
index 2859798ac5..a95a8b7496 100644
--- a/documentation/docs/pages/operators/faq/general-faq.mdx
+++ b/documentation/docs/pages/operators/faq/general-faq.mdx
@@ -2,7 +2,7 @@
## Nym Network
-To see different stats about Nym Network live, we recommend you to visit [Nym Harbourmaster](https://harbourmaster.nymtech.net) and dynamic [Nym token page](https://nymtech.net/about/token.
+To see different stats about Nym Network live, we recommend you to visit [Nym Harbourmaster](https://harbourmaster.nymtech.net) and dynamic [Nym token page](https://nymtech.net/about/token).
### Is there an explorer for Nym Mixnet?
@@ -12,7 +12,7 @@ Yes, there are..
* [Nym Explorer](https://explorer.nymtech.net/)
* [Sandbox testnet](https://sandbox-explorer.nymtech.net/)
-* [Nym Harbourmaster](https://harbourmaster.nymtech.net)
+* [Nym Harbourmaster](https://harbourmaster.nymtech.net)
**Built by community**
@@ -43,5 +43,3 @@ At this point the most crucial component needed are [Exit Gateways](../nodes/nym
### Are Nym Nodes whitelisted?
Nope, anyone can run a Nym Node. whether your node is chosen to mix is purely reliant on the node's performance and reputation (self stake + delegations).
-
-
diff --git a/documentation/docs/pages/operators/nodes.mdx b/documentation/docs/pages/operators/nodes.mdx
index a0da0408e2..49cae361f9 100644
--- a/documentation/docs/pages/operators/nodes.mdx
+++ b/documentation/docs/pages/operators/nodes.mdx
@@ -2,6 +2,7 @@ import { Callout } from 'nextra/components';
import { Steps } from 'nextra/components';
import { Tabs } from 'nextra/components';
import NymNodeSpecs from 'components/operators/snippets/nym-node-specs.mdx';
+import TermsConditions from 'components/operators/snippets/tc-info.mdx';
# Nym Nodes Operator Guides
@@ -25,21 +26,25 @@ Reserve 45-120 minutes for the initial setup and configuration (depends on your
Outdated nodes are never selected for routing/mixing packets, resulting in not receiving any rewards. You can read more on our [Tokenomics page](tokenomics/mixnet-rewards.mdx) to understand the selection and rewards logic.
+
+
+Accepting T&Cs is done via a flag `--accept-operator-terms-and-conditions` added explicitly to `nym-node run` command every time. Detailed info and proper syntax is provided on the [setup page](nodes/nym-node/setup#terms--conditions).
+
## Steps for Nym Node Operators
This is a summary of all needed steps for node operators to setup and configure a `nym-node` and register it to Nym Network:
-1. **Start with [Preliminary Steps](preliminary-steps.mdx), preparing:**
-- [VPS](preliminary-steps/vps-setup.mdx)
-- [Nym wallet](preliminary-steps/wallet-preparation/mdx)
+1. **Start with [Preliminary Steps](nodes/preliminary-steps.mdx), preparing:**
+- [VPS](nodes/preliminary-steps/vps-setup.mdx)
+- [Nym wallet](nodes/preliminary-steps/wallet-preparation)
-2. **[Setup](nym-node/setup.mdx) the node**
+2. **[Setup](nodes/nym-node/setup.mdx) the node**
-3. **[Configure](nym-node/configuration.mdx) the node and (optionally) automation, Wireguard, WSS, reverse proxy ...**
+3. **[Configure](nodes/nym-node/configuration.mdx) the node and (optionally) automation, Wireguard, WSS, reverse proxy ...**
-4. **[Run](nym-node/setup.mdx#initialise--run) the node or [the service](nym-node/configuration.md#systemd)**
+4. **[Run](nodes/nym-node/setup.mdx#initialise--run) the node or [the service](nodes/nym-node/configuration.md#systemd)**
-5. **[Bond](nym-node/bonding.mdx) the node to the Nym API, using Nym wallet**
+5. **[Bond](nodes/nym-node/bonding.mdx) the node to the Nym API, using Nym wallet**
Make sure to follow the steps thoroughly, in case you find any point difficult don't hesitate to ask in our [Operators channel](https://matrix.to/#/#operators:nymtech.chat).
diff --git a/documentation/docs/pages/operators/nodes/nym-node.mdx b/documentation/docs/pages/operators/nodes/nym-node.mdx
index 77082f7b50..95fe262d33 100644
--- a/documentation/docs/pages/operators/nodes/nym-node.mdx
+++ b/documentation/docs/pages/operators/nodes/nym-node.mdx
@@ -1,8 +1,8 @@
-import { VarInfo } from 'components/variable-info.tsx'
+import { VarInfo } from 'components/variable-info.tsx';
+import {Callout} from 'nextra/components';
# Nym Node
-
NYM NODE is a tool for running a node within the Nym network. Nym Nodes containing functionality such as `mixnode`, `entry-gateway` and `exit-gateway` are fundamental components of Nym Mixnet architecture. Nym Nodes are ran by decentralised node operators.
To setup any type of Nym Node, start with either building [Nym's platform](../binaries/building-nym.mdx) from source or download [pre-compiled binaries](../binaries/pre-built-binaries.mdx) on the [configured server (VPS)](preliminary-steps/vps-setup.mdx) where you want to run the node. Your Nym Node will need to be bonded before it can be run. We recommend most users use the [Nym desktop wallet](preliminary-steps/wallet-preparation.mdx) for this.
diff --git a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx
index 50dc8f400f..2681b4de9f 100644
--- a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx
+++ b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx
@@ -30,6 +30,10 @@ Any new bonded node will provide only the bare minimum information: host, identi
**Every operator has to make sure that their nodes [self-described endpoint works](nodes/performance-and-testing/node-api-check#basic-api-usage), otherwise the node will be un-routable and thus won't get any rewards!**
+
+**Reveal your menominc phrase only in areas out of surveillance of other people and never share it with others. Nym team will never ask you for your mnemonic phrase - in case you were asked by someone it's a scam, do *not* reply to it!**
+
+
## Bond via the Desktop wallet (recommended)
You can bond your `nym-node` via the Desktop wallet.
@@ -150,3 +154,48 @@ Versions older than `nym-wallet v 1.2.15` will not allow bonding new nodes.
## Bond via the CLI (power users)
If you want to bond your Mix Node via the CLI, then check out the [relevant section in the Nym CLI](../../../developers/tools/nym-cli/usage#usage) docs.
+
+## Fund `nym-node` Client Nyx Account
+
+
+This is not relevant for operators running exclusively `mixnode` functionality. For any type of gateway functionality this is a preparation requirement for the upcoming [ticket rewarding](../../tokenomics/mixnet-rewards#roadmap).
+ Callout>
+
+Every `nym-node` client contains a mnemonic of a Nyx account, generated with node initialisation (first `run` command creating all configuration and data files). This mnemonic is located in `$HOME/.nym/nym-nodes//data/cosmos_mnemonic`. **This is *not* the same account as the one used for bondng!**
+
+This client account will be used for the process of redemption of tickets collected by nodes running as `entry-gateway` and `exit-gateway` as the redemption requires gateway to create a multisig proposal on the chain for which the client (node) needs to pay transaction fee.
+
+Giving the low transaction cost on Cosmos, funding your client Nyx account with 25 NYM tokens should be more than enough. To do so, follow these steps:
+
+
+
+###### 1. Get your `nym-node` client Nyx account mnemonic phrase
+- Make sure your screen is not exposed to other people or recording devices
+- To store sensitive credentials use audited and open source password managers, like [KeePassXC](https://keepassxc.org/)
+- To print out your node client mnemonic phrase, run:
+```sh
+cat $HOME/.nym/nym-nodes//data/cosmos_mnemonic
+```
+```sh
+# for example
+# cat $HOME/.nym/nym-nodes/default-nym-node/data/cosmos_mnemonic
+```
+- **Alternatively:** You can use `scp` command to copy the file `cosmos_mnemonic` remotely. If this is your preference, use this command:
+```sh
+scp @:.nym/nym-nodes//data/cosmos_mnemonic
+```
+- Copy this phrase and save it to your password manager
+
+
+###### 2. Get the address of your client Nyx account using desktop wallet
+- Open desktop wallet and choose to sign in with mnemonic
+- Use the phrase from step 1
+- Open `Receive` tab and copy Nym account address
+- We recommend operators to store this address for future funding
+
+###### 3. Fund the client Nyx account
+- Open wallet with Nym tokens and send a minimum of 25 NYM to the address copied in the previous step
+- In case you don't have any spare NYM, you can send tokens from any exchange directly to the address copied in the previous step
+ Steps>
+
+Now your `nym-node` client can use inbuilt Nyx account to create a multisig proposal on chain and redeem user tickets.
diff --git a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
index 0f1e9dc71b..1bd496fe10 100644
--- a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
+++ b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
@@ -7,22 +7,25 @@ import BuildInfo from 'components/outputs/command-outputs/nym-node-build-info.md
import NymNodeHelp from 'components/outputs/command-outputs/nym-node-help.md';
import NymNodeRunHelp from 'components/outputs/command-outputs/nym-node-run-help.md';
import { AccordionTemplate } from 'components/accordion-template.tsx';
+import TermsConditions from 'components/operators/snippets/tc-info.mdx';
# Nym Node Setup & Run
This documentation page provides a guide on how to set up and run a [NYM NODE](../nym-node.mdx), along with explanations of available flags, commands, and examples.
+
+
## Current version
```sh
nym-node
Binary Name: nym-node
-Build Timestamp: 2024-12-18T10:18:42.978852430Z
-Build Version: 1.2.1
-Commit SHA: 8d5a41a790e96ae5e821964865affaa7d3343eab
-Commit Date: 2024-12-18T11:07:49.000000000+01:00
+Build Timestamp: 2025-01-15T09:50:54.404428047Z
+Build Version: 1.3.0
+Commit SHA: c202e2d598fabda5fc16a6c1e110255857a2b1ca
+Commit Date: 2025-01-15T10:27:39.000000000+01:00
Commit Branch: HEAD
-rustc Version: 1.83.0
+rustc Version: 1.84.0
rustc Channel: stable
cargo Profile: release
```
@@ -31,52 +34,39 @@ cargo Profile: release
*/}
-## Summary
+## Functionality (mode)
+
+From `nym-node v1.3.0` operators can choose multiple functionalities for their `nym-node` binary (flagged as `--mode`).
-
+**However, the clients are yet to be developed to be able to make a proper selection for multi-mode nodes and therefore we ask operators to sign only one functionality to `--mode` option at a time. Please chose out of: `mixnode` or `entry-gateway` or `exit-gateway`.**
-To run a new node, you can simply execute the `nym-node` command without any flags. By default, the node will set necessary configurations. If you later decide to change a setting, you can use the `-w` flag.
+We are developing a design where operators can enable multiple modes, and let the Nym API to position the node according the network's needs in the beginning of each epoch.
+
-The most crucial aspect of running the node is specifying the `--mode`. At the moment it can be only one of three: `mixnode`, `entry-gateway`, and `exit-gateway`.
+Nym Node has three functionalities in the network: `entry-gateway`, `mixnode` and `exit-gateway`.
-Currently the `nym-node` binary can only be run in a single `--mode` at any one time. In the future however, operators will be able to specify multiple modes that a single `nym-node` binary can run. Our goal is to have as many nodes as possible enabling multiple modes, and allow the Nym API to position the node according the network's needs in the beginning of each epoch.
+- **Entry Gateway (`--mode entry-gateway`)**: A the node to which local client connects. It checks the bandwidth allowance, using [zk-nyms](../../../network/cryptography/zk-nym) and either sends [Sphinx packets](../../../network/cryptography/sphinx) through the mixnet or directly to Exit Gateway in case of dVPN (2-hop) routing. This node also recieves replies and sends them back to users local client.
-Every `exit-gateway` mode is basically an `entry-gateway` with NR (Network Requester) and IPR (IP Packet Router) enabled. This means that every `exit-gateway` is automatically seen as an `entry-gateway` but not the opposite.
+- **Mixnode (`--mode mixnode`)**: Nodes organized in three layers, randmoly selected every epoch (60 minutes), mixing Sphinx packets, adding a slight latency to defend users agains time correlation attacks and sending them further to the next layer or to the Exit Gateway
-Gateway operators can check out the node performance, connectivity and much more in our new tool [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net/).
+- **Exit Gateway (`--mode exit-gateway`)**: The final node in the mixnet. It puts all packets together and using inbuilt Network requester and IP packet router, it sends traffic to the open internet. This node also recieves replies and sends them back to the user client.
-To determine which mode your node is running, you can check the `:8080/api/v1/roles` endpoint. For example:
-```sh
-# sustitude or with the one corresponding to your node
-# for http
-http://:8080/api/v1/roles
-# or
-http:///api/v1/roles
+
+Exit Gateway is the only node routing data directly to the open internet. Therefore it exposes IP of operators server (VPS) to abuse complains. Before you decide to run an Exit Gateway, please read our [Community Counsel pages](../../community-counsel/exit-gateway) containing more information and some legal content.
+
-# for reversed proxy/WSS
-https:///api/v1/roles
-```
+Everything essential for each mode exists on `nym-node` by default. For instance, if you run a Mixnode, you'll find that a NR (Network Requester) and IPR (IP Packet Router) addresses exist, but they will be ignored in `mixnode` mode.
-Everything necessary will exist on your node by default. For instance, if you're running a mixnode, you'll find that a NR (Network Requester) and IPR (IP Packet Router) address exist, but they will be ignored in `mixnode` mode.
+Note that every `exit-gateway` mode is basically an `entry-gateway` with NR (Network Requester) and IPR (IP Packet Router) enabled. This means that every `exit-gateway` can work as an `entry-gateway` but not the opposite.
-For more information about available endpoints and their status, you can refer to:
-```sh
-# sustitude or with the one corresponding to your node
-# for http
-http://:8080/api/v1/swagger/#/
-# or
-http:///api/v1/swagger/#/
+## Command & Examples
-# for reversed proxy/WSS
-https:///api/v1/swagger/#/
-```
-
-## Usage
+**`nym-node` introduces a default human readible ID (local only) `default-nym-node`, which is used if there is not an explicit custom `--id ` specified. All configuration is stored in `~/.nym/nym-nodes/default-nym-node/config/config.toml` or `~/.nym/nym-nodes//config/config.toml` respectively.**
### Help Command
-There are a few changes from the individual binaries used in the past. For example by default `run` command does `init` function as well, local node `--id` will be set by default unless specified otherwise etcetera.
+There are a few changes from the individual binaries used in the past. For example by default `run` command does initialisation function as well, local node `--id` will be set by default (1default-nym-node`) unless specified otherwise.
You can always use `--help` flag to see the commands or arguments associated with a given command.
@@ -96,13 +86,7 @@ To list all available flags for each command, run `./nym-node --help`
The Wireguard flags currently have limited functionality. From version `1.1.6` ([`v2024.9-topdeck`](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2024.9-topdeck)) wireguard is available and recommended to be switched on for nodes running as Gateways. Keep in mind that this option needs a bit of a special [configuration](configuration.md#wireguard-setup).
-### Terms & Conditions
-
-
-From `nym-node` version `1.1.3` onward is required to accept [**Operators Terms & Conditions**](https://nymtech.net/terms-and-conditions/operators/v1.0.0) in order to be part of the active set. Make sure to read them before you add the flag.
-
-
-There has been a long ongoing discussion whether and how to apply Terms and Conditions for Nym network operators, with an aim to stay aligned with the philosophy of Free Software and provide legal defense for both node operators and Nym developers. To understand better the reasoning behind this decision, you can listen to the first [Nym Operator Town Hall](https://www.youtube.com/live/7hwb8bAZIuc?si=3mQ2ed7AyUA1SsCp&t=915) introducing the T&Cs or to [Operator AMA with CEO Harry Halpin](https://www.youtube.com/watch?v=yIN-zYQw0I0) from June 4th, 2024, explaining pros and cons of T&Cs implementation.
+
Accepting T&Cs is done via a flag `--accept-operator-terms-and-conditions` added explicitly to `nym-node run` command every time. If you use [systemd](configuration.md#systemd) automation, add the flag to your service file's `ExecStart` line.
@@ -126,14 +110,6 @@ curl -X 'GET' \
}
```
-### Commands & Examples
-
-**`nym-node` introduces a default human readible ID (local only) `default-nym-node`, which is used if there is not an explicit custom `--id ` specified. All configuration is stored in `~/.nym/nym-nodes/default-nym-node/config/config.toml` or `~/.nym/nym-nodes//config/config.toml` respectively.**
-
-
-All commands with more options listed below include `--accept-operator-terms-and-conditions` flag, read [Terms & Conditions](#terms--conditions) chapter above before executing these commands.
-
-
#### Essential Parameters & Variables
Running a `nym-node` in a `mixnode` mode requires less configuration than a full `exit-gateway` setup, we recommend operators to still follow through with all documented [configuration](configuration.md). Before you scroll down to syntax examples for the mode of your choice please familiarise yourself with the essential [paramters and variables](../../variables.mdx) convention we use in the guide.
@@ -143,13 +119,13 @@ To prevent over-flooding of our documentation we cannot provide with every singl
-### Initialise & Run
+## Setup & Run
-When we use `run` command the node will do `init` as well, unless we specify with a flag `--deny-init`. Below are some examples of initialising and running `nym-node` with different modes (`--mode`) like `mixnode`, `entry-gateway`, `exit-gateway`.
+When we use `run` command for the first time the node will initialise all essential configuration and data files (unless specified with a flag `--deny-init`) stored at `$HOME/.nym/nym-nodes/
` where the most important is the `config.toml` file stored at `$HOME/.nym/nym-nodes//config/`. Below are some examples of initialising and running `nym-node` with different modes (`--mode`) like `mixnode`, `entry-gateway`, `exit-gateway`.
-Please keep in mind that currently you can run only one functionality (`--mode`) per a `nym-node` instance. We are yet to finalise implement the multi-functionality solution under one node bonded to one Nyx account. Every `exit-gateway` can function as `entry-gateway` by default, not vice versa.
+Please keep in mind that currently we ask operators to run only one functionality (`--mode`) at a time.
-There is a simple default command to initialise and run your node: `./nym-node run --mode `, however there quite a few parameters to be configured. When `nym-node` gets to be `run`, these parameters are read by the binary from the configuration file located at `.nym/nym-nodes//config/config.toml`.
+There is a simple default command to initialise and run your node: `./nym-node run --mode `, however there quite a few parameters to be configured.
If an operator specifies any paramteres with optional flags alongside `run` command, these parameters passed in the option will take place over the ones in `config.toml` but they will not overwrite them by default. To overwrite them with the values passed with `run` command, a flag `-w` (`--write-changes`) must be added.
@@ -165,7 +141,7 @@ Alternatively operators can just open a text editor and change these values manu
In such case, you can `run` a node to initalise it or try if everything works, but then stop the proces and paste your entire `run` command syntax (below) to the `ExecStart` line of your `/etc/systemd/system/nym-node.service` and start the node as a [service](configuration.md#following-steps-for-nym-nodes-running-as-systemd-service).
-### Migrate
+## Migrate
**Legacy binaries `nym-mixnode` and `nym-gateway` had been deprecated, [`nym-node`](../nym-node.mdx) is the only binary to use for `gateway` or `mixnode` functionalities!**
@@ -186,7 +162,35 @@ Make sure to use `--deny-init` flag to prevent initialisation of a new node.
**After you upgraded your node to the latest release of `nym-node`, make sure that you also follow [the steps to migrate your node in the Mixnet smart contract](bonding#migrate-to-nym-node-in-mixnet-smart-contract), othewise your node will never receive any rewards.**
-### Next steps
+## Functionality & Performance Check
+
+We have a chapter called [Performance Monitoring & Testing](../nodes/performance-and-testing) including much more information and tooling. If you want to just quickly check your nodes performance, connectivity and much more, visit [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net/).
+
+For more information about available endpoints and their status, you can refer to:
+```sh
+# sustitude or with the one corresponding to your node
+# for http
+http://:8080/api/v1/swagger/#/
+# or
+http:///api/v1/swagger/#/
+
+# for reversed proxy/WSS
+https:///api/v1/swagger/#/
+```
+
+For example to determine which mode your node is running, you can check the `:8080/api/v1/roles` endpoint. For example:
+```sh
+# sustitude or with the one corresponding to your node
+# for http
+http://:8080/api/v1/roles
+# or
+http:///api/v1/roles
+
+# for reversed proxy/WSS
+https:///api/v1/roles
+```
+
+## Next steps
If there are any problems checkout the troubleshooting section or report an issue.
diff --git a/documentation/docs/pages/operators/nodes/preliminary-steps.mdx b/documentation/docs/pages/operators/nodes/preliminary-steps.mdx
index 4f0e737052..9a628d5810 100644
--- a/documentation/docs/pages/operators/nodes/preliminary-steps.mdx
+++ b/documentation/docs/pages/operators/nodes/preliminary-steps.mdx
@@ -4,7 +4,7 @@
There are a couple of steps that need completing before starting to set up your `nym-node`:
-1. **[Prepare your wallet](preliminary-steps/wallet-preparation.mdx):** [desktop](https://nym.com/download/wallet) or [CLI](../../developers/tools/nym-cli/commands.mdx).
+1. **[Prepare your wallet](preliminary-steps/wallet-preparation.mdx):** [desktop](https://nym.com/wallet) or [CLI](../../developers/tools/nym-cli/commands.mdx).
2. **[Requisition and setup a VPS](preliminary-steps/vps-setup.mdx)** (Virtual Private Server)
Make sure to follow these steps carefully as it prevents a lot of troubleshooting later on.
diff --git a/documentation/docs/pages/operators/nodes/preliminary-steps/wallet-preparation.mdx b/documentation/docs/pages/operators/nodes/preliminary-steps/wallet-preparation.mdx
index d6aa2bb45d..8f9f9e312a 100644
--- a/documentation/docs/pages/operators/nodes/preliminary-steps/wallet-preparation.mdx
+++ b/documentation/docs/pages/operators/nodes/preliminary-steps/wallet-preparation.mdx
@@ -2,7 +2,7 @@
## Mainnet
-Head to our [website](https://nym.com/download/wallet) and download Nym wallet for your operating system.
+Head to our [website](https://nym.com/wallet) and download Nym wallet for your operating system.
{/*
diff --git a/documentation/docs/pages/operators/sandbox.mdx b/documentation/docs/pages/operators/sandbox.mdx
index 76a0f5ac06..188c42541b 100644
--- a/documentation/docs/pages/operators/sandbox.mdx
+++ b/documentation/docs/pages/operators/sandbox.mdx
@@ -47,7 +47,7 @@ curl -o sandbox.env -L https://raw.githubusercontent.com/nymtech/nym/develop/env
- In case you downloaded `sandbox.env` to same directory, `` is not needed
###### 3. Bond your node to Nym Sandbox environment
-- Open [Nym Wallet](https://nym.com/download/wallet) and switch to testnet
+- Open [Nym Wallet](https://nym.com/wallet) and switch to testnet
- Go to [faucet.nymtech.net](https://faucet.nymtech.net) and aquire 101 testnet NYM tokens
- Follow the steps on the [bonding page](nodes/nym-node/bonding.mdx)