From daa680d6b8d7386d231da1d1a40a26aea654a785 Mon Sep 17 00:00:00 2001 From: import this <97586125+serinko@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:49:22 +0000 Subject: [PATCH] [DOCs/operators]: Release notes v2024.14-crunch & config score updates (#5222) * initialise tokenomics graph * generate reward version config graph * update tokenomics * edit typo * initialise release crunch release notes * operators update * add points to changelog * update version graph and selection * update iptables configuration * add features to changelog * comment redundant * address review comments * PR finish --- .../nyx-outputs/circulating-supply.md | 2 +- .../nyx-outputs/stake-saturation.md | 2 +- .../nyx-outputs/staking-target.md | 2 +- .../nyx-outputs/token-table.md | 6 +- .../outputs/api-scraping-outputs/time-now.md | 2 +- .../outputs/command-outputs/nym-api-help.md | 4 +- .../command-outputs/nym-node-run-help.md | 4 + .../docs/pages/operators/changelog.mdx | 273 +++++++++++++++++- .../nodes/nym-node/configuration.mdx | 19 +- .../nodes/nym-node/configuration/_meta.json | 2 +- .../pages/operators/nodes/nym-node/setup.mdx | 9 +- .../operators/tokenomics/mixnet-rewards.mdx | 89 +++++- .../tokenomics/reward_version_graph.png | Bin 0 -> 103951 bytes .../scripts/rewards_version_graph.py | 67 +++++ 14 files changed, 450 insertions(+), 31 deletions(-) create mode 100644 documentation/docs/public/images/operators/tokenomics/reward_version_graph.png create mode 100644 documentation/scripts/rewards_version_graph.py diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md index 0d7c399aa9a..7f5aad7cd4f 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md @@ -1 +1 @@ -803_103_234 +804_560_131 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md index 8bc02c386eb..b2ed9e28efd 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md @@ -1 +1 @@ -1_016_987 +1_020_023 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md index af97e1d3119..49bf2c6564a 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md @@ -1 +1 @@ -401_551_617 +402_280_065 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md index b1f5c4dea30..413c6d0177f 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md @@ -1,7 +1,7 @@ | **Item** | **Description** | **Amount in NYM** | |:-------------------|:------------------------------------------------------|--------------------:| | Total Supply | Maximum amount of NYM token in existence | 1_000_000_000 | -| Mixmining Reserve | Tokens releasing for operators rewards | 196_896_265 | +| Mixmining Reserve | Tokens releasing for operators rewards | 195_439_368 | | Vesting Tokens | Tokens locked outside of cicrulation for future claim | 500 | -| Circulating Supply | Amount of unlocked tokens | 803_103_234 | -| Stake Saturation | Optimal size of node self-bond + delegation | 1_016_987 | +| Circulating Supply | Amount of unlocked tokens | 804_560_131 | +| Stake Saturation | Optimal size of node self-bond + delegation | 1_020_023 | 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 1d7a6e3d3b5..2710b013a7c 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 @@ -Monday, November 25th 2024, 13:24:04 UTC +Friday, December 6th 2024, 10:16:06 UTC diff --git a/documentation/docs/components/outputs/command-outputs/nym-api-help.md b/documentation/docs/components/outputs/command-outputs/nym-api-help.md index fcaf94ce6ba..1ba192c6e85 100644 --- a/documentation/docs/components/outputs/command-outputs/nym-api-help.md +++ b/documentation/docs/components/outputs/command-outputs/nym-api-help.md @@ -9,9 +9,9 @@ Commands: Options: -c, --config-env-file - Path pointing to an env file that configures the Nym API + Path pointing to an env file that configures the Nym API [env: NYMAPI_CONFIG_ENV_FILE_ARG=] --no-banner - A no-op flag included for consistency with other binaries (and compatibility with nymvisor, oops) + A no-op flag included for consistency with other binaries (and compatibility with nymvisor, oops) [env: NYMAPI_NO_BANNER_ARG=] -h, --help Print help -V, --version diff --git a/documentation/docs/components/outputs/command-outputs/nym-node-run-help.md b/documentation/docs/components/outputs/command-outputs/nym-node-run-help.md index 0a5070b615a..29da832b97b 100644 --- a/documentation/docs/components/outputs/command-outputs/nym-node-run-help.md +++ b/documentation/docs/components/outputs/command-outputs/nym-node-run-help.md @@ -44,6 +44,8 @@ Options: Specify whether detailed system crypto hardware information should be exposed. default: true [env: NYMNODE_HTTP_EXPOSE_CRYPTO_HARDWARE=] [possible values: true, false] --mixnet-bind-address Address this node will bind to for listening for mixnet packets default: `0.0.0.0:1789` [env: NYMNODE_MIXNET_BIND_ADDRESS=] + --mixnet-announce-port + If applicable, custom port announced in the self-described API that other clients and nodes will use. Useful when the node is behind a proxy [env: NYMNODE_MIXNET_ANNOUNCE_PORT=] --nym-api-urls Addresses to nym APIs from which the node gets the view of the network [env: NYMNODE_NYM_APIS=] --nyxd-urls @@ -60,6 +62,8 @@ Options: The prefix denoting the maximum number of the clients that can be connected via Wireguard. The maximum value for IPv4 is 32 and for IPv6 is 128 [env: NYMNODE_WG_PRIVATE_NETWORK_PREFIX=] --verloc-bind-address Socket address this node will use for binding its verloc API. default: `0.0.0.0:1790` [env: NYMNODE_VERLOC_BIND_ADDRESS=] + --verloc-announce-port + If applicable, custom port announced in the self-described API that other clients and nodes will use. Useful when the node is behind a proxy [env: NYMNODE_VERLOC_ANNOUNCE_PORT=] --entry-bind-address Socket address this node will use for binding its client websocket API. default: `0.0.0.0:9000` [env: NYMNODE_ENTRY_BIND_ADDRESS=] --announce-ws-port diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx index 06ac73d2dcf..6c156b5f229 100644 --- a/documentation/docs/pages/operators/changelog.mdx +++ b/documentation/docs/pages/operators/changelog.mdx @@ -25,14 +25,285 @@ export const CiConfig = () => ( ); +export const TunnelManagerCommands = () => ( +
+ Commands to update IP tables rules with a new network_tunnel_manager.sh +
+); + # Changelog -This page displays a full list of all the changes during our release cycle from `v2024.3-eclipse` onwards. Operators can find here the newest updates together with links to relevant documentation. The list is sorted so that the newest changes appear first. +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. +## `v2024.14-crunch` + +- [Release binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2024.14-crunch) +- [`nym-node`](nodes/nym-node.mdx) version `1.2.0` +- [Releae operators updates and tools](changelog#operators-updates--tools) +- [Github CHANGELOG.md](https://github.com/nymtech/nym/blob/nym-binaries-v2024.14-crunch/CHANGELOG.md) + +```sh +nym-node +Binary Name: nym-node +Build Timestamp: 2024-12-11T13:49:11.974104790Z +Build Version: 1.2.0 +Commit SHA: a491e6a71a8cf862d77defd740a4ee8d65d8292a +Commit Date: 2024-12-11T10:28:47.000000000+01:00 +Commit Branch: HEAD +rustc Version: 1.83.0 +rustc Channel: stable +cargo Profile: release +``` + +### Features + +- [Bump elliptic from `6.5.4` to `6.5.7` in /testnet-faucet](https://github.com/nymtech/nym/pull/4768): Bumps [elliptic](https://github.com/indutny/elliptic) from `6.5.4` to `6.5.7`. + +- [build(deps): bump micromatch from `4.0.4` to `4.0.8` in /nym-wallet/webdriver](https://github.com/nymtech/nym/pull/4789): Bumps [micromatch](https://github.com/micromatch/micromatch) from `4.0.4` to `4.0.8`. + +- [build(deps): bump axios from 1.6.0 to 1.7.5 in /nym-api/tests](https://github.com/nymtech/nym/pull/4790) Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.7.5. + +- [Sync code with `.env` in build.rs](https://github.com/nymtech/nym/pull/4876): Keep `dotenv` file always up to date + +- [build(deps): bump lazy_static from `1.4.0` to `1.5.0`](https://github.com/nymtech/nym/pull/4913): Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from `1.4.0` to `1.5.0`. + +- [Create TaskStatusEvent trait instead of piggybacking on Error](https://github.com/nymtech/nym/pull/4919) + +- [build(deps): bump once_cell from `1.19.0` to `1.20.2`](https://github.com/nymtech/nym/pull/4952): Bumps [`once_cell`](https://github.com/matklad/once_cell) from `1.19.0` to `1.20.2` + +- [Bump the patch-updates group across 1 directory with 10 updates](https://github.com/nymtech/nym/pull/5011): Bumps the patch-updates group with 9 updates in the / directory: + +| Package | From | To | +| --- | --- | --- | +| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.89` | `1.0.90` | +| [clap](https://github.com/clap-rs/clap) | `4.5.18` | `4.5.20` | +| [clap_complete](https://github.com/clap-rs/clap) | `4.5.29` | `4.5.33` | +| [pin-project](https://github.com/taiki-e/pin-project) | `1.1.5` | `1.1.6` | +| [serde](https://github.com/serde-rs/serde) | `1.0.210` | `1.0.211` | +| [serde_json](https://github.com/serde-rs/json) | `1.0.128` | `1.0.132` | +| [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) | `0.2.93` | `0.2.95` | +| [wasm-bindgen-futures](https://github.com/rustwasm/wasm-bindgen) | `0.4.43` | `0.4.45` | +| [web-sys](https://github.com/rustwasm/wasm-bindgen) | `0.3.70` | `0.3.72` | +| Updates `anyhow` | `1.0.89` | `1.0.90` | + +- [[Product Data] Introduce data persistence on gateways](https://github.com/nymtech/nym/pull/5022): This PR builds on top of [\#4974](https://github.com/nymtech/nym/pull/4974), not changing the behavior of the data collection, but persisting them in a sqlite database so they can be kept across restarts and crashes. It also leave the door open for other stats module to use that storage if needed. Here are some points of interest: + - New [`gateway_stats_storage`](https://github.com/nymtech/nym/tree/simon/gateway_stats_persistence/common/gateway-stats-storage) crate + - [Config migration](https://github.com/nymtech/nym/blob/simon/gateway_stats_persistence/nym-node/src/config/old_configs/old_config_v4.rs) resulting from the added database. + - Resulting changes in the [`statistics`](https://github.com/nymtech/nym/tree/simon/gateway_stats_persistence/gateway/src/node/statistics) module to account the new storage system + +- [Integrate nym-credential-proxy into workspace](https://github.com/nymtech/nym/pull/5027): Integrate `nym-credential-proxy` into the main workspace + +- [Authenticator CLI client mode](https://github.com/nymtech/nym/pull/5044) + +- [Node Status API](https://github.com/nymtech/nym/pull/5050): merging a long-diverged feature branch - all commits here were their own merge requests + +- [IPv6 support for wireguard](https://github.com/nymtech/nym/pull/5059) + +- [Add nym node GH workflow](https://github.com/nymtech/nym/pull/5080) + +- [[Product Data] Better unique user count on gateways](https://github.com/nymtech/nym/pull/5084): To avoid double counting clients across gateways, we add a user ID to the gateway session data. + +- [chore: ecash contract migration to remove unused 'redemption_gateway_share'](https://github.com/nymtech/nym/pull/5104) + +- [[Product Data] Client-side stats collection ](https://github.com/nymtech/nym/pull/5107): The goal is to anonymously gather stats from nym-clients. These stats will be sent through the mixnet to a Nym run service provider that will gather them. This PR sets the scene to send stats in a mixnet message to an address. The address can be set when the client is created. Current stats include some infos on sent packets along with platform information. If a receiving address is set, the client will send a mixnet packet every 5min to this address. Otherwise, nothing happens and the client runs as usual. + +- [Send mixnet packet stats using task client](https://github.com/nymtech/nym/pull/5109) + +- [Add granular log on nym-node](https://github.com/nymtech/nym/pull/5111) and make use of it for `defguard_wireguard_rs` big info logs + +- [Rewarding for ticketbook issuance](https://github.com/nymtech/nym/pull/5112): Revamps the current validator rewarder to allow for rewards for issuing the zk-nym ticketbooks. + +- [[Product Data] Add stats reporting configuration in client config ](https://github.com/nymtech/nym/pull/5115): Adds the stats reporting address to client configs. It can be set in the config file, as a CLI argument and as an env var in a `.env` file. As the stats reporting config in now in the `DebugConfig`, the `StatsReportingConfig` is no longer required, making the propagation of these changes more readable + +- [config score](https://github.com/nymtech/nym/pull/5117): introduces a concept of a `config_score` to a nym node which influences performance and thus rewarding amounts and chances of being in the rewarded set. Currently it's influenced by the following factors: + - Accepting terms and conditions (not accepted: 0) + - Exposing self-described API (not exposed: 0) + - Running "nym-node" binary (legacy binary: 0) + - Number of versions behind the core (`score = 0.995 ^ (X * versions_behind ^ 1.65)`) + - The old performance is now treated as `routing_score` + - the "new" performance = `routing_score * config_score` + +- [Add Dockerfile and add env vars for clap arguments](https://github.com/nymtech/nym/pull/5118) + +- [Aadd GH workflow for nym-validator-rewarder](https://github.com/nymtech/nym/pull/5119) + +- [[Product data] Data consumption with ecash ticket](https://github.com/nymtech/nym/pull/5120): Send an event each time an ecash ticket get successfully spent. This allows to approximate how much data each client is using. + +- [[Product Data] Config deserialization bug fix](https://github.com/nymtech/nym/pull/5126): Fixes a bug where a `None` value was serialized into an empty string, and incorrectly deserialized into a `Some` variant. + +- [NS Agent auth with NS API](https://github.com/nymtech/nym/pull/5127): NS Agent authenticates with key that was registered with NS API + - Added flag to Agent to generate keypairs + - Agent requests are signed by agent + - Server-side requests are checked for authentication + +- [CI: reduce jobs running on cluster](https://github.com/nymtech/nym/pull/5132) + +- [Removed ci-nym-api-tests.yml which was running outdated (and broken) tests](https://github.com/nymtech/nym/pull/5133) + +- [[Product Data] Set up country reporting from vpn-client](https://github.com/nymtech/nym/pull/5134): Add the ability to report exit country, along with a small refactoring of a module. + +- [chore: remove standalone legacy mixnode/gateway binaries](https://github.com/nymtech/nym/pull/5135) + +- [Update `serde_json_path` due to compilation issue](https://github.com/nymtech/nym/pull/5144) + +- [Add version to clientStatsReport](https://github.com/nymtech/nym/pull/5147): Add a `kind` and `api_version` field for `ClientStatsReport` + +- [Start session collection for exit gateways](https://github.com/nymtech/nym/pull/5148): Apparently, exit gateways are also entry gateways so we need to start session stats for them as well + +- [build(deps): bump mikefarah/yq from `4.44.3` to `4.44.5`](https://github.com/nymtech/nym/pull/5149): Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from `4.44.3` to `4.44.5`. + +- [build(deps): bump cross-spawn from `7.0.3` to `7.0.6` in /testnet-faucet](https://github.com/nymtech/nym/pull/5150): Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from `7.0.3` to `7.0.6`. + +- [Add export_to_env to NymNetworkDetails](https://github.com/nymtech/nym/pull/5162): In `nym-vpn-core` we've started to read the network environment from a json file and then try to pass around `NymNetworkDetails` directly instead of relying on the exported environment. However we still need to bridge with old code so we need to export the network details instance to the environment. + +- [Add strum::EnumIter for TicketType](https://github.com/nymtech/nym/pull/5164) + +- [Fix env var name](https://github.com/nymtech/nym/pull/5165) + +- [Add support for DELETE to nym-http-api-client](https://github.com/nymtech/nym/pull/5166): Add delete support to `http-api-client` + +- [Add derive_extended_private_key to DirectSecp256k1HdWallet](https://github.com/nymtech/nym/pull/5167): Add `derive_extended_private_key` to `DirectSectp256k1HdWallet` to support seeding ecash keys + +- [Move two minor jobs to free tier github hosted runners](https://github.com/nymtech/nym/pull/5169): In an attempt to easy the load on the self-hosted runners, move two minor workflows over to GH hosted free tier runners. + +- [Remove peers with no allowed ip from storage](https://github.com/nymtech/nym/pull/5175) + +- [Add indexes to monitor run and testing route](https://github.com/nymtech/nym/pull/5181) + +- [Add `monitor_run` and testing_route indexes](https://github.com/nymtech/nym/pull/5182) + +- [`explorer-api`: add nym node endpoints + UI to show nym-nodes and account balances](https://github.com/nymtech/nym/pull/5183): Explorer API: + - Existing endpoints stay identical + - Adds new endpoints to get: + - `nym-nodes` (list + by id) + - account balance + delegations + rewarding + vesting + + - Explorer UI (NextJS) + - List of nym-nodes + - Remove service providers routes (Harbour Master shows these) + - Updates summary page to show nym-nodes + - Adds legacy markers to old gateway and mixnode bond lists + +- [Add `monitor_run` and testing_route indexes](https://github.com/nymtech/nym/pull/5182) + +- [Bugfix/credential proxy sequencing](https://github.com/nymtech/nym/pull/5187) + +- [improvement: make internal gateway clients use the same topology cache](https://github.com/nymtech/nym/pull/5191): This should result in 66% reduction in queries for topology within `nym-node` as all the clients should rely on the same cache + +- [chore: apply 1.84 linter suggestions](https://github.com/nymtech/nym/pull/5192) + +- [Guard storage access with cache](https://github.com/nymtech/nym/pull/5193) + +- [Update Security disclosure email, public key and policy](https://github.com/nymtech/nym/pull/5195) + +- [merge crunch into develop](https://github.com/nymtech/nym/pull/5199) + +- [Fix backwards compat mac generation](https://github.com/nymtech/nym/pull/5202) + +- [adjusted config score penalty calculation](https://github.com/nymtech/nym/pull/5206) + +- [`nym-api` NMv1 adjustments](https://github.com/nymtech/nym/pull/5209) + +- [Nmv2 add debug config](https://github.com/nymtech/nym/pull/5212): Adds debug config to disable poisson process, cover traffic and min performance filtering + +- [introduce UNSTABLE endpoints for returning network monitor run details](https://github.com/nymtech/nym/pull/5214) + +- [Don't consider legacy nodes for rewarded set selection](https://github.com/nymtech/nym/pull/5215) + +- [Derive serialize for UserAgent (#5210)](https://github.com/nymtech/nym/pull/5217): Cherry-pick PR [\#5210](https://github.com/nymtech/nym/pull/5210) + +- [Backport \#5218](https://github.com/nymtech/nym/pull/5220) + +- [Remove any filtering on node semver](https://github.com/nymtech/nym/pull/5224): Removed any filtering on version of nodes. however, the parameters can still be passed to `nym-api` queries to not break existing clients, but they will happily ignore them + +- [Further config score adjustments](https://github.com/nymtech/nym/pull/5225): I still want to add helper endpoints on `nym-api` to expose some of this data. but for now, I'll let this PR bake over the weekend. + +### Bugfix + +- [Correct IPv6 address generation](https://github.com/nymtech/nym/pull/5113) + +- [bugfix: don't send empty BankMsg in ecash contract](https://github.com/nymtech/nym/pull/5121): If ticketbook prices were to be set so low the resultant redemption would have created `BankMsg` with value of 0, that message is no longer going to be sent + +- [fix: validator-rewarder GH job](https://github.com/nymtech/nym/pull/5151) + +- [bugfix: correctly expose ecash-related data on nym-api](https://github.com/nymtech/nym/pull/5155): This PR makes fixes to ecash-related endpoints on `nym-api` + - global data (such as aggregated signatures and keys) are actually always available by all apis + - global data (such as aggregated signatures and keys) are actually always available by all apis + +- [bugfix: use default value for verloc config when deserialising missing values](https://github.com/nymtech/nym/pull/5177) + +- [bugfix: fixed nym-node config migrations (again)](https://github.com/nymtech/nym/pull/5179) + +- [bugfix: added explicit openapi servers to account for route prefixes](https://github.com/nymtech/nym/pull/5237) + +### Operators Updates & Tools + + +**Nym Network will now only allow nodes which [migrated](nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract) their node in Nym mixnet smart contract to Nym Node. All nodes which are still bonded as a legacy one (Mixnode or Gateway) in the wallet will have no chance to take part in the [Rewarded set selection](tokenomics/mixnet-rewards#rewarded-set-selection).** + +**Operators taking part in Delegation program or Service Grant program must migrate their nodes latest by December 16th, 08:00 UTC.** + + +#### Updates + +- [Version count as a part of config score](tokenomics/mixnet-rewards#config-score-calculation) has been introduced. To familiarize yourself with Nym Node operator rewards calculation, read [this page](tokenomics/mixnet-rewards). +- Nym nodes running as Exit Gateway in Service Grant program received delegation. Nym team is now delegating total of **64,800,000 NYM on top 241 Nym Nodes** (137 in Mixnode mode and 104 as Gateways). Our delegation aims to incentivise committed operators who support bootstrapping of Nym network before paying users come. + +
+ + +- 250k NYM - Upgrading to magura in time - 2 nodes +- 300k NYM - Upgrading to magura + bonus for a quick patch upgrade - 102 nodes +- No delegation - not upgrading in time - 2 nodes + + +- `nym-node` has now implemented [IPv6 support for wireguard](https://github.com/nymtech/nym/pull/5059) + +- [`network_tunnel_manager.sh` updated](network): run the commands below to make sure + +
+ +}> +These commands can be run one by one or copy-pasted and run as a block. +```sh +mkdir $HOME/nym-binaries; \ + +curl -L https://raw.githubusercontent.com/nymtech/nym/refs/heads/develop/scripts/network_tunnel_manager.sh -o $HOME/nym-binaries/network_tunnel_manager.sh && \ +chmod +x $HOME/nym-binaries/network_tunnel_manager.sh; \ + +$HOME/nym-binaries/network_tunnel_manager.sh check_nymtun_iptables ; \ +$HOME/nym-binaries/network_tunnel_manager.sh remove_duplicate_rules nymtun0 ;\ +$HOME/nym-binaries/network_tunnel_manager.sh remove_duplicate_rules nymwg;\ +$HOME/nym-binaries/network_tunnel_manager.sh check_nymtun_iptables ; \ +$HOME/nym-binaries/network_tunnel_manager.sh adjust_ip_forwarding ; \ +$HOME/nym-binaries/network_tunnel_manager.sh apply_iptables_rules ; \ +$HOME/nym-binaries/network_tunnel_manager.sh check_nymtun_iptables ; \ +$HOME/nym-binaries/network_tunnel_manager.sh apply_iptables_rules_wg ; \ +$HOME/nym-binaries/network_tunnel_manager.sh configure_dns_and_icmp_wg ; \ +$HOME/nym-binaries/network_tunnel_manager.sh adjust_ip_forwarding ; \ +$HOME/nym-binaries/network_tunnel_manager.sh check_ipv6_ipv4_forwarding; \ + +systemctl daemon-reload && service nym-node restart && journalctl -u nym-node -f +``` + +Then run the jokes in a new window for control +```sh +$HOME/nym-binaries/network_tunnel_manager.sh joke_through_the_mixnet +$HOME/nym-binaries/network_tunnel_manager.sh joke_through_wg_tunnel +``` + + +#### Tools + +- **[New APIs documentation](../apis/introduction)** with interactive APIs generated from the OpenAPI specs of various API endpoints offered by bits of Nym infrastructure run both by Nym and community operators for both Mainnet and the Sandbox testnet. +- [Nym Harbourmaster](https://harbourmaster.nymtech.net/) has a new tab called `CONTRACT EXPLORER` querying data from Nym mixnet contract in real time. +- [Nym Explorer](https://explorer.nymtech.net) is updated to read migrated nodes correctly +- [New community explorer by SpectreDAO](https://explorer.nym.spectredao.net/dashboard) offers Nym Network dashboard, Node overview and Account stats view functions for operators and delegators. +- [`nym-vpnc`](../developers/nymvpncli) build and run documentation, for those who don't want to use the Nym VPN GUIs. ## `magura-drift` diff --git a/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx b/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx index 63ba5b3f0d6..9a82c0081f6 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx @@ -301,8 +301,10 @@ chmod +x network_tunnel_manager.sh && \ ###### 3. Setup IP tables rules -- Apply the rules for IPv4 and IPv6: +- Delete IP tables rules for IPv4 and IPv6 and apply new ones: ```sh +./network_tunnel_manager.sh remove_duplicate_rules nymtun0 + ./network_tunnel_manager.sh apply_iptables_rules ``` @@ -363,9 +365,11 @@ operation check_nymtun_iptables completed successfully. ``` -###### 5. Apply rules for wireguad routing +###### 5. Remove old and apply new rules for wireguad routing ```sh +/network_tunnel_manager.sh remove_duplicate_rules nymwg + ./network_tunnel_manager.sh apply_iptables_rules_wg ``` @@ -374,8 +378,15 @@ operation check_nymtun_iptables completed successfully. ```sh ./network_tunnel_manager.sh configure_dns_and_icmp_wg ``` +###### 7. Adjust and validate IP forwarding + +```sh +./network_tunnel_manager.sh adjust_ip_forwarding + +./network_tunnel_manager.sh check_ipv6_ipv4_forwarding +``` -###### 7. Check `nymtun0` interface and test routing configuration +###### 8. Check `nymtun0` interface and test routing configuration ```sh ip addr show nymtun0 @@ -409,7 +420,7 @@ ip addr show nymtun0 - **Note:** WireGuard will return only IPv4 joke, not IPv6. WG IPv6 is under development. Running IPR joke through the mixnet with `./network_tunnel_manager.sh joke_through_the_mixnet` should work with both IPv4 and IPv6! -###### 8. Enable wireguard +###### 9. Enable wireguard Now you can run your node with the `--wireguard-enabled true` flag or add it to your [systemd service config](#systemd). Restart your `nym-node` or [systemd](#2-following-steps-for-nym-nodes-running-as-systemd-service) service (recommended): diff --git a/documentation/docs/pages/operators/nodes/nym-node/configuration/_meta.json b/documentation/docs/pages/operators/nodes/nym-node/configuration/_meta.json index 3d0ff2819e7..a48b50f426a 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/configuration/_meta.json +++ b/documentation/docs/pages/operators/nodes/nym-node/configuration/_meta.json @@ -1,3 +1,3 @@ { - "proxy-configuration": "WSS & Reverese Proxy" + "proxy-configuration": "WSS & Reverse Proxy" } diff --git a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx index f2d6197fee8..33e7e3f6c34 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx @@ -17,10 +17,10 @@ This documentation page provides a guide on how to set up and run a [NYM NODE](. ```sh nym-node Binary Name: nym-node -Build Timestamp: 2024-11-29T13:10:51.813092288Z -Build Version: 1.1.12 -Commit SHA: 4a9a5579c40ad956163ea02e01d7b53aef2ac8ef -Commit Date: 2024-11-29T14:06:32.000000000+01:00 +Build Timestamp: 2024-12-11T13:49:11.974104790Z +Build Version: 1.2.0 +Commit SHA: a491e6a71a8cf862d77defd740a4ee8d65d8292a +Commit Date: 2024-12-11T10:28:47.000000000+01:00 Commit Branch: HEAD rustc Version: 1.83.0 rustc Channel: stable @@ -33,6 +33,7 @@ cargo Profile: release ## Summary + 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. diff --git a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx index facd3860f30..569cd12e089 100644 --- a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx +++ b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx @@ -12,6 +12,10 @@ import { Clt } from 'components/callout-custom/CalloutCustom.jsx'; # Nym Operators Rewards + +**Nym Network Rewarded set selection had been upgraded recently. Make sure to read the chapter *[Rewarded Set Selection](#rewarded-set-selection)* below carefully to fully understand all requirements to be rewarded!** + + * Nym tokenomics are based on the research paper [*Reward Sharing for Mixnets*](https://nymtech.net/nym-cryptoecon-paper.pdf) @@ -42,6 +46,7 @@ To make it easier for the reader, we use a highlighting line on the left side, w Nodes bonded with vesting tokens are [not allowed to join rewarded set](https://github.com/nymtech/nym/pull/5129) - read more on [Nym operators forum](https://forum.nymtech.net/t/vesting-accounts-are-no-longer-supported/827). + ## Overview This is a quick summary, to understand the full picture, please see detailed [*Rewards Logic & Calculation*](#rewards-logic--calculation) chapter below. @@ -126,34 +131,94 @@ This is a quick summary, to understand the full picture, please see detailed [*R -### Active Set Selection - -*Performance matters!* +### Rewarded Set Selection For a node to be rewarded, the node must be part of a [Rewarded set](https://validator.nymtech.net/api/v1/epoch/reward_params) (which currently = active set) in the first place. The active set is selected in the beginning of each epoch (every 60min) where total of 240 Nym nodes - represented by 120 mixnodes and 120 gateways, are randomly allocated across the layers. -The algorithm choosing nodes into the active set takes into account node's performance and [stake saturation](../tolkenomics.mdx#stake-saturation), both values being between 0 and 1 and config score which is either 0 or 1. +The algorithm choosing nodes into the active set takes into account these parameters: + +1. [Config score](#config-score-calculation) +2. [Performance](#performance-calculation) +3. [Stake saturation](../tokenomics.mdx#stake-saturation) + +Besides these values, the API is also looking whther the node is bonded in Mixnet smart contract as a Nym Node or legacy node (Mixnode or Gateway). **Only nodes bonded as Nym Node in Mixnet smart contract can be selected to the Rewrded set, if you haven't migrated your node yet, please [follow these steps](../nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract)!** + +**The Rewarded set selection probablity formula:** + + +> **active_set_selection_probability = config_score \* ( node_performance ^ 20 ) \* stake_saturation** + + +#### Config Score Calculation + +The nodes selection to the active set has a new parameter - `config_score`. Config score currently looks into three paramteres: -**Config score is introduced:** The nodes selection to the active set has a new parameter - `config_score`. Config score currently looks if the node binary is `nym-node` (not legacy `nym-mixnode` or `nym-gateway`) **AND** if [Terms & Conditions](nodes/nym-node/setup.mdx#terms--conditions) are accepted. Config score has binary values of either 0 or 1, with a following logic: +1. If the node binary is `nym-node` (not legacy `nym-mixnode` or `nym-gateway`) +2. If [Terms & Conditions](../nodes/nym-node/setup.mdx#terms--conditions) are accepted. +3. Version of `nym-node` binary + +**The `config_score` parameter calculation formula:** + + +> **config_score = is_tc_accepted \* is_nym-node_binary \* ( 0.995 ^ ( ( X * versions_behind) ^ 1.65 ) )** + -| **Run `nym-node` binary** | **T&C's accepted** | **`config_score`** | +First two points have binary values of either 0 or 1, with a following logic: + +| **Run `nym-node` binary** | **T&C's accepted** | **Value** | | :-- | :-- | ---: | +| True | True | 1 | | True | False | 0 | | False | True | 0 | | False | False | 0 | -| True | True | 1 | +Only if both conditions above are `True` the node can have any chance to be selected, as otherwise the probability will always be 0. + +**The `version_behind` parameter in `config_score` calculation** -The entire active set selection probablity: +From release `2024.14-crunch` (`nym-node v1.2.0`), the `config_score` parameter takes into account also nodes version. Current version is the +one marked as `Latest` in our repository. From that one we count the parameter `version_behind`, where every version back the number of `versions_behind` increases by 1 in this formula: -> **active_set_selection_probability = config_score \* stake_saturation \* node_performance ^ 20** +> **0.995 ^ ( ( X * versions_behind ) ^ 1.65 )** +> +> where:
+> **X = 1; for patches**
+> **X = 10; for minor versions**
+> **X = 100; for major versions**
-For a comparison we made an example with 5 nodes, where first number is node performance and second stake saturation (assuming all of them `config_score` = 1 and not 0): +> The exact parameters are live accessible on [`/v1/status/config-score-details`](https://validator.nymtech.net/api/swagger/index.html#/Status/config_score_details). + +Our versioning convention is: `major_version . minor_version . patch` + +For example `nym-node` on version `1.2.0` is on 1st major version, 2nd minor and 0 patches. See the the table and graph below: + +| **Version behind** | **Patches (X = 1)** | **Minor versions (X = 10)** | **Major versions (X = 100)** | +| :-- | --: | --: | --: | +| 0 (current version) | 1.0 | 1.0 | 1.0 | +| 1 | 0.995 | 0.7994 | 0.0000 | +| 2 | 0.9844 | 0.4953 | 0.0000 | +| 3 | 0.9698 | 0.2536 | 0.0000 | +| 4 | 0.9518 | 0.1102 | 0.0000 | +| 5 | 0.9311 | 0.0413 | 0.0000 | + + +![](/images/operators/tokenomics/reward_version_graph.png) + +As you can see on above, the algorithm is designed to give maximum probability (`1`) to the latest version and exponentialy dicrease the probability to non-upgraded nodes where the more important version the node is behind, the faster the cliff. This eliminates any older nodes despite their saturation and performance to take place in the Rewarded set and gives a priority to the operators running up-to-date nodes, ensuring as strong network as possible. + + +#### Performance Calculation + +Performance is measured by Nym Network Monitor which sends thousands of packages through different routes every 15 minutes and measures how many were dropped on the way. Test result represents percentage of packets succesfully returned (can be anything between 0 and 1). Performance value is nodes average of these tests in last 24h. + +Good performance is much more essential than [stake saturation](../tokenomics.mdx#stake-saturation), because it's lifted to 20th power in the selection formula. + +For a comparison we made an example with 5 nodes, where first number is node performance and second stake saturation (assuming all of them `config_score` = 1):
- + > node_1 = 1.00 ^ 20 \* 1.0 = 1
> node_2 = 1.00 ^ 20 \* 0.5 = 0.5
> node_3 = 0.99 ^ 20 \* 1.0 = 0.818
@@ -201,7 +266,7 @@ $33\% - 67\%$ ## Roadmap -We are working on the final architecture of [*Fair Mixnet*](#fair-mixnet) tokenomics implementation. The current design is called [*Naive rewarding*](#naive-rewarding). This is an intermediate step, allowing operators to migrate to `nym-node` in Mixnet smart contract and for the first time recieve delegations and earn rewards for any `nym-node` functionality, in opposite to the past system, where only Mixnodes were able to recieve delegations and rewards. +We are working on the final architecture of [*Fair Mixnet*](#fair-mixnet) tokenomics implementation. The current design is called [*Naive rewarding*](#naive-rewarding). This is an intermediate step, expecting operators to migrate to `nym-node` in Mixnet smart contract and be able to recieve delegations and earn rewards for any `nym-node` functionality, in opposite to the past system, where only Mixnodes were able to recieve delegations and rewards. On November 5th, we presented a release roadmap in live [Operators Townhall](https://www.youtube.com/watch?v=3G1pJqvO2VM) where we explained in detail the steps of Nym node and tokenomics development and the effect it will have on node operators and put it into a rough timeline. diff --git a/documentation/docs/public/images/operators/tokenomics/reward_version_graph.png b/documentation/docs/public/images/operators/tokenomics/reward_version_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..57948742702e50ff96e9701be5a00c3cbe9e37d1 GIT binary patch literal 103951 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
    HqJWUdu=4{O1w&$e?~+L{Yi&C& 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�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 ZJiqv_>WvQPgBAR5!Z-`l_%U