V25 Daric is LIVE!
It is with great excitement that we announce the official release of V25.0 Daric! As mentioned in the previous development update, V25 is a complementary update to the recently released V24 Siglos and completes this two-pronged update to the nano node software. It includes several great improvements to the node software that increase performance and security.
With this full release, we recommend all node operators to upgrade to V25.0 of the nano node software.
What's in V25?
So, what has changed with V25? And what do we expect to see? Let’s dive in!
One of the significant features added in V25 is the Ascending Bootstrapper which reduces the time it takes for new nodes to join and sync with the network. The bootstrap process of the node has largely been unchanged from the original design and bringing it up to date required an overhaul of multiple parts of the node.
Of significance, the new ascending bootstrapper:
- No longer uses the disk (unchecked table) for storing blocks while working
- Communicates blocks through existing realtime sockets rather than needing to open separate bootstrap sockets. This makes the bootstrap process firewall and NAT friendly.
- Scores bootstrap peers and prioritises requests to the most responsive nodes
- Makes smaller requests to more nodes rather than larger requests to a few
- Improves general performance of the bootstrap process as a whole
The new mechanism uses stateless bootstrap messages to send bootstrap query/response through the node's real-time socket, allowing nodes behind a firewall to participate in bootstrapping. Additionally, the Ascending Bootstrap mechanism reduces the consumption disk resources by lightening the burden on the data structure that holds the "unchecked" blocks, resulting in improved efficiency.
Optimistic elections are another major feature that speeds up the cementing process, especially during the bootstrapping phase. The feature introduces a new type of election scheduler, the optimistic scheduler, that operates alongside the default election scheduler. The optimistic scheduler randomly samples accounts with unconfirmed blocks and activates an election for the account head block, reducing the time required to confirm all blocks in an account chain.
Continuous Backlog Population
The Continuous Backlog Population feature improves the scanning process of all accounts in the ledger for uncemented blocks by queuing and prioritising them in proper buckets. This reduces the consumption of node resources and improves efficiency.
The node handshake, responsible for establishing a connection between two nodes, has been upgraded to add an additional layer of security to the network by including salt and genesis block hash fields in the node ID handshake exchange process. The upgrade is backward compatible, and legacy handshake support will be phased out gradually over time.
Over the past few months, our team has continued to enhance the nano network's testing infrastructure. These improvements aim to enable faster development by catching bugs early and facilitating proactive tweaking. Special thanks to Gr0vity and Ricki for volunteering to write and run this testing framework.
To evaluate new features going forward, we have introduced new tools that spin up an arbitrary number of nodes on the beta network. These nodes serve as bootstrapping nodes, putting pressure on the network and allowing us to observe its performance under various conditions. To evaluate the impact, we perform CPS throughput tests against the Beta network, both with and without the bootstrapping nodes.
Another component of the test infrastructure is a series of automated tests that spin up nano networks on GitHub runners. These tests run automatically for each new commit and pull request, ensuring our code is rigorously tested and potential issues are promptly identified and addressed.
Finally, over the past few weeks, we have developed a new tool that enables the creation of configurable nano networks in the cloud. This advancement allows us to better understand network performance under various real-world conditions and ensures more accurate testing.
The benefits of this tool include:
- Gaining more reliable test results due to real resource limitations, such as CPU and bandwidth constraints.
- Refining and enhancing local test parameters by running our existing test cases against the cloud network and comparing the results for improved accuracy.
- Simulating our live network to better understand its behaviour under different scenarios and conditions.
We have designed a cloud network consisting of 30 representative nodes with vote weight and geographical location according to nodes on our live network. This tool enables us to simulate live network behaviour in various situations, such as the impact of network throughput when nodes upgrade to a specific version. This helps us understand the implications of fine-grained changes and upgrading individual nodes.
The following shows a simulation to test network recovery performance with different percentages of nodes running on V25:
As we move forward, our goal is to further integrate these tools into our automated testing pipeline, ensuring a more robust and reliable testing process.
We’ve improved several parts of the node build process: The code has been upgraded to C++20 and the docker image has been upgraded to Ubuntu 22.04 LTS. Boost was upgraded to 1.81 and is now pulled in directly as a submodule rather than needing to be built externally. A lot of work has been done splitting files and documenting classes.
What to expect in V26.0
Plans for V26 are already underway. Subject to change, current V26 plans include: refactoring of the network code, splitting the block table, improving election scheduler bucket bounding, and refactoring of the block processing pipeline. These changes will improve the network’s flow control and response under heavy load.
We want to thank everyone on the dev team as well as all of nano’s community contributors for their commitment and hard work. Remember, there are many ways to help maintain and improve the nano network with C++ and non C++ contributions.
If you have the skills and drive to help, join our development Discord!
Nano Foundation does not endorse or approve products and/or services used or developed by third parties. Any links to third party software or sites are for informational purposes only. Nano Foundation bears no responsibility for the operability, accuracy, legality or content of third party products and/or services. Any questions regarding third party material should be directed to that party.