Over the last couple of years, it has been amazing to see the ThreeFold Grid (the TFGrid) expanding. The TFGrid is currently live in 57 countries, with 26.16 PB of capacity, 36.484 cores, and a total of 1782 ThreeFold nodes.
Coming into this next chapter, we need to focus on the stability of the TFGrid. The goal for the TFGrid is for users to be able to easily deploy on a node of their choosing, without being worried about the stability and availability of their deployments.
Minting goes out from that standpoint. A general question to be asked would thus be: is this given node available for deployments so users can rely on it? If the answer is yes, then the TFGrid mints the ThreeFold Tokens.
It has come to our attention that there are some nodes on the TFGrid that unfortunately do not measure up to these standards. We see it as our responsibility to bring this out to the community and propose a stricter set of minting rules so that we all collectively can make sure that the TFGrid is reliable, stable, and fair.
-
Reduce allowed uptime out of bounds from 5 minutes to 1 minute (see diff in https://github.com/threefoldtech/minting_v3/commit/5c99834adb1ca6f477ee06b8e6766459078c3fca for reasoning).
-
Reduce allowed downtime from power-managed nodes from 25 hours to 24 hours (25 was an accidental leftover commit after testing purposes).
-
Add violation for nodes if uptime increased less than time increased (accounting for 1 minute of skew as per point 1). This was part of the original implementation but was later allowed in the early days of V3 since we were still figuring out how infrastructure was handled, and manual validation at that time showed no issues.
-
Enforce max delay between uptime reports of 41 minutes (40 minutes zos interval + 1 minute of skew as per point 1). See https://github.com/threefoldtech/minting_v3/issues/22 for reasoning.
-
Add a violation for nodes if the twin does not have a relay set (node is essentially not usable for the grid).
-
Add violation for nodes if the twin has a public key in an invalid format (as that won’t work for sure. The node is thus unreachable similar to the previous point).
-
Improve decoding of twin information to avoid cases where the decoding strategy selects the wrong format leading to invalid decoded data.
-
Add a violation for the case where a node twin does not exist (This should also be checked by the chain), as these nodes will also not be usable similar to points 5 and 6.
-
Add violation for long-term clock skew (cfr. https://github.com/threefoldtech/zos/issues/1914)
-
Miscellaneous code improvements that aren’t directly related to payout (e.g. remove dead code, small performance improvement, better wording of violations for easy debugging, …)
-
Add a max delay of half an hour between the node power target rising edge and the node uptime event of reboot. Farmerbot v0.2.0 introduced random wakeups to combat potential fraud. Since periodic wakeups continue as normal, a node could just ignore this (as currently nodes are only required to post uptime every 24/25 hours, see point 2, while Farmerbot is running). The idea here is that since a random wakeup is unpredictable, this check essentially makes sure the hardware is still there. This check will also apply to regular wakeups. If the threshold is passed, the node gets stuck with a violation (and it doesn’t mint for the month). 30 minutes is debatable but should be sufficient for even heavy-duty servers to fully boot. Notice that this (time between rising edge power target and node boot) is also the delay a user has to wait for a node to come online if he deploys on a power-managed node.
While we understand that points 5, 6, and 8 are not really user errors, the goal of the minting is to mint tokens for usable capacity. If any of these conditions are true, then the node is not usable, and therefore it should not get tokens rewarded. This also means that even though we do our hardest to avoid any mistakes or bugs that would cause a farmer to miss out on tokens, in reality, it is a possibility and the ThreeFold Foundation can not be held responsible for this loss. It also means that any issues or bugs get high priority from our teams to resolve these and that we would like to invite anyone from the community to help in reporting or fixing any possible issues.
A new GEP proposal will be launched for this on our platforms after which these new minting rules will be applied to the minting code to make sure we have a more fair, honest, and stable ThreeFold Grid.
We thank you for your understanding.
Sabrina on behalf of the ThreeFold Team