The xx team introduced the MainNet Transition Program with the intention of addressing a shortcoming in many proof of stake, and even proof of work networks – namely, the centralization of node power by whales and staking/mining pools. In this program, the team’s coins are staked, without any rewards, on up to 350 geographically diverse community members that have supported the network during the BetaNet period by running their nodes reliably and engaging with the team and the rest of the community.
In the latter part of 2021 and the early part of 2022, we selected and onboarded all ~350 nodes with the MainNet Transition Program. Application and admission to the MainNet Transition Program is now closed.
This page contains the current mechanisms, rules, and requirements for the MainNet Transition Program. The team reserves the right to change these at any time.
This page was last modified on 7/20/2021
The team will stake its own coins on members of the team multiplier program as long as they follow the rules of the program.
The program member is able to select the amount of stake they want up to a cap which is limited by the lower of the following:
- Team Multiplier – The computed team multiplier stake based upon the node operator’s accumulated BetaNet stake
- Network Average Cap – The network maximum cap based upon current total stake in the network
Node operators who participate in the MainNet Transition program are able to have their earned stake multiplied up to 8 times. Based upon the amount of xx coins a node stakes, the team multiplier will be different. At the start of MainNet, the multiplier is as follows:
multiplied stake = 1.1987348546×10-10 × nodeStake3 − 5.1693111455×10-5 × nodeStake2 + 7.6850567834 × nodeStake − 1223.0356324078
As the network matures, the team’s tokens will vest and return to the ownership of respective team members; removing them from the BetaNet Staking pool. As the pool shrinks, the multipliers will shrink with it and disappear after 3 years. The multipliers are expected to stay constant for the first year. As the pool shrinks below the necessary size to stake all nodes, every node’s additional team stake will maintain its fraction of all multiplied stake.
Staking Adjustment Over the Life of the MainNet Transition Program
A node’s maximum multiplier is bounded by the lowest amount of eligible stake they have ever posted, as well as a maximum multiplied value of the amount they earned in the BetaNet Program. For example, if a node earned 49k xx (spent 7 months in the BetaNet) the maximum stake that can be multiplied is 49kxx. If they reduce their stake to 20kxx, then their maximum multiplied stake will forever drop to 20kxx – even if they increase it again.
Network Average Cap
Due to the fact that the amount of team stake is counted when computing staking rewards, leading to its reduction, the team is limiting the amount of team stake that a node can select. Essentially, the cap is computed to be the average amount of stake in the network, excluding the xx foundation, from all non MaiNnet transition program wallets. By selecting this amount of stake, it should be possible for all MainNet Transitions Program members to maintain their position in the network without unfairly impacting network compensation. An in depth analysis of this can be found here and the initial proposal can be found here.
Within the xx network, all nodes must set a “commission rate” that determines the percent of rewards generated by their node – specifically, the percent the node keeps and the percent that go to their nominators. All Nodes in the MainNet transition Program can set their commission to a maximum of 18.00%.
Network Average Cap
Team Stake Auto Calculate
When selecting your stake, you will have the option to have the team auto calculate a team stake for you which will ensure that you will be able to stay in the network while minimizing the reduction in global rewards. The details for this system can be found here: https://xxnetwork.wiki/Team_Stake_Auto_Calculate. This system assumes your are nominating or validating your own node.
This was introduced on 7/20/2022. Any node who has not opted out will automatically receive this option.
There are some cases in the MainNet Transition Program that can give a participant too high of an advantage. The team has put rules and monitoring in place in order to ensure that participation in the MainNet Transition Program is equitable for nomination and non-participants.
Important: The rules of the MainNet Transition Program apply while you are enrolled in the program. You are expected to follow all rules, even during times the Team Multiplier is not applied to your node.
At 6:30 PM UTC every day, the team’s scripts will evaluate every MainNet Transition Participant’s eligibility. Depending on the various factors described below, the script will either decide to grant or refuse the team multiplier for each participant and send them an email containing the reason.
If it refuses, it may issue a strike. If a node receives 3 strikes over the lifetime of the program then it will be permanently terminated from the program.
Strikes come in two types – Standard and Severe.
A Standard Strike will remove the team multiplier until the issue is resolved for a minimum of the 1 era from when the issue is detected.
A Severe Strike carries a 7 era (1 week) penalty wherein the node will not receive the Team Multiplier. The node operator must reverse the offending change to regain the Team Multiplier.
Severe strikes are generally reserved for actions that are deliberately malicious. Generally, these involve Sneaky Modification, such as changing relevant parameters between the team multiplier being granted at 6:30PM UTC and the application of the election at 11PM UTC. This can result in the change being included in the next era without proper evaluation by the team multiplier script or nominators.
The team reserves the right to change the rules of this program, both in general form and specific requirements, at any time.
All decisions are based upon chain data which can be presented in the event of a strike.
While participating in the Team Multiplier, a node has a maximum commission of 18.00%. Normally, setting commission to be higher than 18% will result in a Standard Strike. However, as a Sneaky Modification it will result in a Severe Strike.
Node operators may not kick nominations without team permission. Any unauthorized kick will result in a Standard Strike. You can request permission to kick a nominator by emailing [email protected]
Members of the MainNet Transition Program must run cMix and maintain a minimum uptime of 80% over the last 7 days. When a node’s uptime over this period dips below 80%, the operator will receive an email saying they have 7 days to improve their uptime above 80%. If the uptime remains low, they will lose Team Multiplier. Operators may contact the team once the issue is resolved to get it back. Additionally, issues with cMix uptime cannot cause a strike.
Two nodes may not have the same IP address. Any node at the same IP will be rejected when registering with the network. Paired Nodes and Gateways can have the same IP, but no two Nodes or two Gateways. The first node or gateway with an IP address will be given the priority.
If any nodes or gateways have duplicate IPs at the time of this rule going into effect, one will be chosen randomly with the other removed
This cannot cause a strike directly, but will cause cMix downtime which will eventually get a node shut off.
Keying Material Secrecy
It is the responsibility of each node operator to maintain the secrecy of their keying material. If a node leaks any keying material, either from BetaNet or MainNet, the team will remove them from the MainNet Transition program permanently. This includes Gateway or Node Private Keys, Wallet Mnemonics, blockchain validator session keys
Participants in the MainNet transition program may not block nominations. Doing so will cause a severe strike..
Participants can configure and sign for their node using the commitment applet, which can be found here: https://xx.network/mainnet-transition-program-configuration-and-commitment-applet-instructions/