We have been blown away by the interest in joining our Rolling ITN! A huge thank you to everyone who has been involved and joined us in our mission to launch a blockchain that is private, compliant, and capable of realizing the big vision of crypto and RegDeFi! Our goal was to have 100 nodes for this iteration and we reached that goal within the first 24 hours. So a huge thank you to you all.
It’s been amazing to see the community collaborating and supporting each other and we’re grateful for all the feedback we’ve received and how communicative the community has been. We’ve also seen huge growth within our Discord and Telegram communities, so a big welcome to everyone who has just joined us. Achieving the goal of having 100+ node operators has made Dusk Network TestNet more decentralized than 50% of all current up-and-running networks in the world. This marks another big step towards the decentralization of Dusk Network.
We wanted to share some of the most exciting statistics with you, so with no further ado…
- 1600+ people signed up to run a node
- 600+ people were whitelisted
- 250+ people are actually running a node
You’re already improving the network
The purpose of a testnet is to test it under all circumstances. We need to find out now - before mainnet - what works, what doesn’t, what could be a vulnerability, and what could be improved.
You have certainly given us vitally useful feedback and rewards haven’t even started yet. This is what a testnet is for. To stress test as many things as possible so that when it really matters the blockchain works in all circumstances, under all edge cases, and is robust and battle-tested.
So, we wanted to share with you more about the first challenge to our blockchain, why it happened, and what we’re doing to fix and improve it.
From the devs: what happened?
With the growing number of applicants, and the growing number of people preparing to launch their node, the first difficulties started to emerge.
Many people have found it difficult to set up the node correctly, and this has led to the following problems:
1) Some people have successfully staked their tokens, thus becoming active participants in the consensus, but have not been able to configure their node correctly. This impacted consensus performance as some of the provisioners selected to produce blocks were offline, and even when blocks were produced by active provisioners, the validity of the blocks was not voted on promptly.
2) Some people did not properly configure their `Dusk’ node password. This caused the node to be connected to the network (via `Rusk’) but not processing messages correctly, leading to the failed propagation of messages.
3) Some blocks (especially those with multiple transactions inside) found it difficult to be produced within the time limit, probably due to too low hardware specs (remember that cloud providers, with the same selected plan, can assign CPUs with significantly different performance)
All of these factors combined meant that the actual active percentage of stakers was around 75% (of which 58% were operated by Dusk), while the remainder were ghost provisioners.
Seeing this, we tried to rebalance the voting power of the network by making a large stake from one of our nodes, with the aim of bringing the percentage of active stakes to 83%, of which 65% would be operated by Dusk. We wanted to do this exactly to prevent the halting issue that occurred.
The large stake was activated at block 49.680.
The problem was that the node that held the keys to this stake was not configured properly.
As a result, instead of increasing the active stake from 75% to 83%, we got the opposite effect. We decreased the active stake from 75% to 62%.
Our consensus algorithm requires at least 67% of the votes to produce a block. Given that the active stake was now below that threshold and the node in question was being picked a lot, after less than 100 blocks, the node stopped at block 49,760.
From the devs: how did we fix it?
Realizing this, we immediately proceeded to correctly reconfigure the node in question. Unfortunately, the network was already stalled by then. This meant that consensus was not reached and many nodes were no longer in sync. They did not re-propagate the messages generated by the active nodes. (see also https://github.com/dusk-network/dusk-blockchain/issues/1440)
We, therefore, decided to isolate the nodes owned by Dusk (which held 65% of the votes for the block in question) in order to start producing blocks again.
However, due to the non-majority of votes (which is 67%), these nodes managed to produce only one block.
We inserted additional nodes with voting power (these are nodes that are operated by Dusk, but are not inside the isolated cluster), in order to be able to create blocks in the isolated environment.
Once at least 2 blocks were produced, we reopened the cluster to the community nodes, which were notified of the new blocks and restarted the consensus. (https://github.com/dusk-network/dusk-blockchain/pull/1472)
To speed up getting a majority share of the vote again, and to reduce the number of adversarial nodes, we requested the community to temporarily unstake. This request was honored quickly by our community and participants are as of now again able to restake.
Updated step-by-step guide
Expect an updated guide in the coming days that will make it easier to check if your node is running. We will also make sure it doesn’t rely on our centralized infrastructure anymore to send transactions, further increasing our decentralization and knowledge sharing drive.
We’re pleased to have had this early stress test, and thank you both for your support in running nodes, the valuable information we’ve received, and your patience as we build this new technology.
We’re looking forward to the next challenges and building the Dusk Network with you.
About Dusk Network
Dusk Network is the privacy blockchain for financial applications. A new standard for compliance, control, and collaboration. Our mission is to enable enterprises of any size to collaborate at scale, meet compliance requirements and ensure that personal and transaction data remains confidential.