V20 — A Look at Lydia

Zach Hyatt
Sep 20 · 6 min read

2019 has already brought substantial updates to the Nano protocol: V18.0 Dolphin was able to glide in with key optimizations that reinforced the speedy transactions that Nano is renowned for. V19.0 Solidus introduced block cementing and Dynamic PoW, which strengthened the node and made it even easier for services to integrate.

And our upcoming release, V20.0 Lydia, is now primed to add increased resilience to the network with some key changes.


Introducing Nano PoW


UPDATE: Since this original announcement of Nano PoW we have decided to not include the algorithm in the V20 release to further improve the design, but will be putting in infrastructure for supporting a new PoW algorithm in the future. More details can be found in:


We’ve been working hard the past few months on putting this release together and are proud to announce the upcoming availability of Nano PoW, an open-source, memory-hard Proof-of-Work algorithm. After development and verification from various industry experts, Nano PoW will be added as an optional PoW method in V20.0RC1 and included in the final V20.0 release.

Check out our comprehensive preview of Nano Pow here:

Why Nano PoW?

Without transaction fees, Nano relies on a small Proof-of-Work to provide spam resistance. The concept is simple: using computational resources, the PoW value provided for a block must be above a threshold, or the block will be immediately discarded as invalid.

The current PoW algorithm and threshold was established in Nano in 2017, and since then, the need to change the required resources to produce a transaction has increased. After evaluating existing solutions, it became clear that the unique requirements of Nano meant something entirely new had to be designed. So we set off to create just that: a new memory-hard algorithm that was trivial to verify, had a small proof size, took minimal energy, and had a simple specification.

When will it go into effect?

Plans for transitioning the entire network to use Nano PoW are being laid, which will involve the distribution of epoch blocks at a later date. More information on this transition to come.

Nano PoW — The Essentials will be supported by a complete technical explanation of the design from Colin LeMahieu, once it is made available in the first V20 Release Candidate. With lots of questions and discussions to be had, we invite everyone to join the discussions across our many channels, including Reddit and our Discord server.


And as if a new PoW algorithm wasn’t enough for this release, we also have other significant updates coming with Lydia:

Config management made easy

Configuration management is something we have been eager to improve for a while. Existing .json config files are challenging to maintain and don’t allow commenting. Additionally, both the node and user have been writing to the same file, which can cause confusion and overwriting of values over time.

With Lydia, we are moving to a .toml format for better legibility and to allow commenting. We will also have defaults in the node so users can override only the values they wish to change. This setup will make things easier to read, maintain, and understand going forward.

Beta net brings better optimizations

The extensive beta testing performed on the Solidus release over the last 2 months revealed various areas for improvement both in the node and in our testing and release processes. Various team members helped implement some fundamental advances in the beta network setup and have been using those to drive even more understanding of network behaviors.

We would like to give a huge thanks to our fantastic community of beta-testers for all their help!

Lydia is taking the lessons learned on beta and optimizing various node operations, including block propagation, vote caching and rebroadcasting, bootstrap behavior, and disk I/O operations. This version continues the trend of optimizing and streamlining the node for lower, more efficient resource usage across the board.

Dynamic PoW from outside the wallet

When Dynamic Proof-of-Work and Prioritization was implemented, it was done so within the architecture of the node wallet, resulting in the node only requesting rework when using wallet-based RPC calls. As the node wallet is only for testing and development use, this left external, production integrations on their own for implementing the tracking and rework requests to give their users higher Proof-of-Work during heavy traffic times.

With V20.0, it will be possible to signal to the node that it should watch a published block for any delays that would warrant rework, and then handle those work requests. This will happen by default with process RPC calls (but can be disabled), so anyone gets to enjoy these benefits. Go Lydia!

Experimental support for RocksDB

Please note: The current implementation of RockDB is not recommended for production systems. It is currently experimental and suggested for testing and development use only.

Since the beginning, the Nano node has used the Lightning Memory-Mapped Database (LMDB) to manage the ledger. Despite many useful advantages of LMDB, it remains aggressive in the amount of disk I/O operations it executes. Exploration of other alternative databases highlighted RocksDB as a good candidate in providing better performance for disk I/O, so we’ve included an optional implementation for experimentation.

Early tests indicate disk I/O will likely be lower with default configurations, and additional tuning should allow us to optimize further as we work to tweak and validate RocksDB as a potential option for use in future production nodes.


Changes to scope for V20.0

During the V19.0 development process, we started early planning for future releases. As part of this, we identified a few items for inclusion in V20.0 such as Dual-phase Voting, Durable Snapshots (depends on Dual-phase Voting) and moving the Wallet out of process. But as development ramped up for this version, we had opportunities to shift these features around to include Nano PoW and some other significant updates outlined above.

These changes have been updated on our Upcoming Features documentation as we look forward to getting V20.0 in the hands of node operators and start moving towards V21.0.

A solid upgrade after Solidus

Following in the footsteps of V19.0 Solidus was going to be hard, but the improvements Lydia is bringing to the table are enough to get excited about the future of the Nano network. To keep up to date on progress with this release, check out the V20.0 GitHub Milestone.

If you wish to join us for some beta testing, please hit up the Beta Network documentation and join us on Discord in the #beta-net channel.

Nano

The best place for all of the latest Nano updates, developments and interviews. Brought to you by the Nano Foundation.

Thanks to Guilherme Lawless

Zach Hyatt

Written by

Bending tech for good

Nano

Nano

The best place for all of the latest Nano updates, developments and interviews. Brought to you by the Nano Foundation.