The following article explains the Znode payment queue and the qualification mechanisms used so Znode owners can better understand the system and when to expect payments.
In general, the queue is organized by last paid block time. Znodes which got paid recently are put at the bottom while the ones that got paid the longest time ago, will be at the top. That being said, the queue is not a strict queue but contains a dynamic portion at the top.
This dynamic portion is made up of the top 10% of enabled nodes in the list. For example, if there are 2,000 Znodes, the 200 nodes that got paid the longest time ago make up the top 10%.
It is within this pool that Znodes are selected for payment at random. This means that in the best case, you could get paid immediately upon entering the pool and in the worst case rise to position number 1 and still wait for your turn.
The reasoning for this randomization of payments is security. If payments were made sequentially, an adversary could just run a DDoS attack on a few nodes before his own and get his “opponents” out of the way to get paid quicker.
Qualified and Unqualified Znodes
The Znode system rewards supporting the network and a person’s commitment and loyalty to the project. The flip side of rewarding this longer-term commitment is that newcomers and nodes that violate the uptime requirement are being penalized.
Qualification by Collateral Age
In order to first become a qualified Znode, the owner must send his 1,000 XZC collateral to a separate address in his own wallet. This is where the process of qualification begins. While the payment matures, i.e. the block accrues confirmations, the owner of a Znode must wait until the transaction has reached a number of confirmations higher than the number of enabled Znodes.
With a hypothetical 4,000 Znodes on the network and an average of 288 blocks per day, this would mean that the initial wait period to become a qualified Znode is about 14 days. Once this criterion is fulfilled, the Znode will enter the top 10% pool immediately and is ready to receive its first payment.
Qualification by Availability
Another criterion that decides over qualification for payments is a Znode’s uptime or the time it spends in the ENABLED state to be precise. Should the node exceed a downtime of 180 minutes (or 3 hours), it will be penalized for violating this requirement. This means that the node will have to sit on the sidelines for a certain amount of time.
This amount of time is calculated by multiplying the factor 2.6 minutes with the number of enabled Znodes. For example, if we stick with our 4,000 Znode example, the time would be 2.6 min. x 4,000 Znodes / 60 minutes / 24 hours ≈ 7.2 days.
On Violating the Uptime Requirement and Estimating Your Queue Position
It is important to understand that violating the uptime requirement does not put you at the back of the queue. As mentioned at the beginning of this article, the queue is based on the last paid block number, which is something that does not change unless you’re being paid. Once the Znode “served its time”, it is put back in the queue where it left off. With the queue being based on last paid block number, the penalized node is even moving with the queue while it is sidelined. Violating the uptime requirement thus only delays a payment if it occurs in or close to the top 10% pool.
Please also note that while several services exist to help you estimate your node’s queue position, the results these sites show are merely estimates. While we greatly appreciate these services as part of the growing Zcoin ecosystem, we do not endorse one of these in particular.