Operators
Nym Mixnet Rewards

Nym Operators Rewards

⚠️

Nym Network Rewarded set selection had been upgraded recently. Make sure to read the chapter Rewarded Set Selection below carefully to fully understand all requirements to be rewarded!

ℹ️

The data on this page were last time updated on

Thursday, January 16th 2025, 09:57:52 UTC

.

We are working on the final architecture of Fair Mixnet tokenomics implementation and its detailed documentation. The current design is called Naive rewarding. It 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.

Please read the roadmap section below to see the planned development.

Overview

This is a quick summary, to understand the full picture, please see detailed Rewards Logic & Calculation chapter below.

  • The operators of nym-node get rewarded from Mixmining pool, which emits around 6000 NYM per hour.
  • A rewarded set of nym-nodes selected for Nym network routing and mixing can be is currently 240 nodes in total and it's selected for each new epoch (60 min). The number can be adjusted - look here for the current value: validator.nymtech.net/api/v1/epoch/reward_params (opens in a new tab)
  • nym-nodes can run in mode entry-gateway, exit-gateway and mixnode, which are positioned into layers
  • NymVPN users can chose to route through Nym Network in two ways:
    • Mixnet: 5 layers routing and mixing - full privacy
    • Wireguard: 2 layers routing, skipping 3 mixing layers - fast mode
  • The current reward system is Native rewarding - an intermediate step - where each layer get's rewarded the same
  • In the final model, nodes will get rewarded based on their layer position and the work they do (collected user tickets), where and the reward distribution per layer will be according to a decision made by the operators (opens in a new tab) as follows:
    • 5-hop: 16%-16%-16%-16%-36%
    • 2-hop: 33%-67%
  • Currently Gateways earn rewards only from taking a part in the rewarded set. The operators can sign up to a grant program as a substitution for 2-hop routing.
  • To read more about the final design and future implementation, see Roadmap chapter for more details.

Rewards Logic & Calculation

Note that in the current intermediate model we use one active set to reward all nodes and they are asign same (naive) work factor of 1 / 240, whether they work as Mixnode or Gateway of any kind, in both 2-hop and 5-hop mode. In reality it means that all nodes are rewarded within 5-hop reward scheme only.

However NymVPN client can chose any nym-node --mode entry-gateway and --mode exit-gateway in the network to route through the mixnet and as well as any of those which passed wireguard probing test (opens in a new tab) to route as dVPN nodes.

Nym Network rewarded set distribution

Rewarded Set Selection

For a node to be rewarded, the node must be part of a Rewarded set (opens in a new tab) (which currently = active set) in the first place. The Rewarded set is freshly selected at the start of each epoch (every 60 min), and it consists of 240 Nym nodes that are probabilistically chosen from all the available nodes. These 240 nodes include 120 gateways and 120 mixnodes (40 for each of 3 mixnet layers).

Rewarded set nodes are randomly selected, and their selection chances increase with a node score that includes three parameters:

  1. Config score: highest (1) when the node is running the latest version of the software with T&C's accepted
  2. Performance: highest (1) when the node is consistently online and correctly processes all the received traffic
  3. Stake saturation: including bond and delegated stake

Besides these values, the API is also looking whether 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!

The node score is calculated with this formula:

📌

active_set_selection_probability = total_stake * ( config_score * node_performance ) ^ 20 )

Note that the score helps prioritize some nodes over others. If all available nodes have the same score, then the selection is done uniformly at random. By raising the config and performance components to 20, values of these parameters that are below one incur a heavy penalization for the node’s selection chances.

Besides these values, the API is also checks whether 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. Thus, if you haven't migrated your node yet, please follow these steps!

Config Score Calculation

The nodes selection to the active set has a new parameter - config_score. Config score currently looks into three paramteres:

  1. If the node binary is nym-node (not legacy nym-mixnode or nym-gateway): 1 if True, 0 if False
  2. If Terms & Conditions are accepted: 1 if True, 0 if False
  3. Version of nym-node binary: decreasing weight for outdated versions, as explained below

The config_score parameter calculation formula:

📌

config_score = is_tc_accepted * is_nym-node_binary * ( 0.995 ^ ( ( X * versions_behind) ^ 1.65 ) )

First two points have binary values of either 0 or 1, with a following logic:

Run nym-node binaryT&C's acceptedValue
TrueTrue1
TrueFalse0
FalseTrue0
FalseFalse0

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 versions_behind parameter in config_score calculation

From release 2024.14-crunch (nym-node v1.2.0), the config_score parameter takes into account also nodes version. The "current version" is the one marked as Latest in our repository. The parameter versions_behind indicates the number of versions between the Latest version and the version run by the node, and it is factored into the config score with the formula:

📌

0.995 ^ ( ( X * versions_behind ) ^ 1.65 )

where:
X = 1; for patches
X = 10; for minor versions
X = 100; for major versions

The exact parameters are live accessible on /v1/status/config-score-details (opens in a new tab).

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.

Note that the X multiplier heavily lowers the config_score when nodes are outdated with respect to more significant updates. See the the table and graph below:

Version behindPatches (X = 1)Minor versions (X = 10)Major versions (X = 100)
0 (current version)1.01.01.0
10.9950.79940.0000
20.98440.49530.0000
30.96980.25360.0000
40.95180.11020.0000
50.93110.04130.0000

As you can see above, the algorithm is designed to give maximum selection score (1) to the latest version, while non-upgraded nodes receive a lower score. The score decreases faster when the node has failed to make a major version upgrade, and slower when the node is behind only with minor updates. This scoring de-prioritizes the selection of outdated nodes, even if their saturation and performance are high. Nodes are selected probabilistically in each epoch (60 min), according to their scores, to be part of the Rewarded set. This scoring mechanism gives priority to the operators running up-to-date nodes, ensuring that the network is as updated 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 total stake, 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 for simplification):


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
node_4 = 0.95 ^ 20 * 1.0 = 0.358
node_5 = 0.90 ^ 20 * 1.0 = 0.122

As you can see the performance (also known as Routing score) is much more important during the Rewarded set selection. A node with 100% performance but only 50% stake saturation has much bigger chance to be chosen than a node with 95% performance but full stake saturation and incomparably bigger chance than 90% performing node with 100% stake saturation.

The nodes are chosen probababilistically in each epoch (60 min), so even nodes with lower performance will eventually be chosen, just much less often, as their chances decrease.

Layer Distribution

Once the rewarded set (currently 120 Mixnodes and 120 Gateways) is selected, the nodes can start to route and mix packets in the Nym Network. Each hour a total of 6000 NYM is distributed between the layers from Mixmining pool. Currently in our Naive rewarding intermediate design, all layers get a same portion, therefore each node is naively assigned same working factor and therefore earns 1/240 of the rewards per epoch.

We are working on the final design with the ratio implementing a decision made by the operators (opens in a new tab) as follows:

📌

5-hop mixnet mode:
16%; 16%; 16%; 16%; 36%


2-hop dVPN mode:
33%; 67%

Roadmap

We are working on the final architecture of Fair Mixnet tokenomics implementation. The current design is called 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 (opens in a new tab) 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.

Naive Rewarding

Naive rewarding is the current tokenomics design. The table below lists features and logic of this design.

Fair Mixnet

Fair Mixnet is the final architecture model that we work towards. The table below lists features and logic of the design once implemented.