Dolphin V18 Deep Dive
Details of the upcoming, streamlined Nano node release
We’ve been getting many questions about the upcoming release from our excited community members, so today we are taking a deep dive into Dolphin to explore this fast and friendly update to the Nano node.
Clean and sleek
A big goal for this release was to not only clean our backlog and tracking systems up, but also make all the small tweaks and optimizations set aside during the launch of larger features in previous updates like Boulton. This release will glide onto the network like our intelligent, oceanic friends.
Some of the more significant updates in Dolphin were mentioned in a previous update so head there for more details on local account priority bootstrapping (EDIT 2/15/19: This feature will not be included in the Dolphin V18.0 release and is instead being considered for implementation in the future), local timestamp tracking, and more.
Although some of our community members have been following these in Github, we have some new features to highlight for this release:
Cached Representatives and Peers
The node will hold a cache of representatives to reference their weights for faster voting on all accounts across a wallet, instead of getting representative weights for each account individually. This provides node performance improvements especially for exchanges and services with heavy wallet usage. It will also cache nodes it has peered with to help reduce discovery times and related network traffic.
Support for additional local data
The upgrade process mentioned further below will update the database by adding new columns and denormalizing parts of the data structure. This “sideband” update will consolidate most of the block-related data into a single table to help reduce CPU usage when performing certain actions on blocks and provide better management of legacy blocks.
This commit adds block-type-specific sideband information which eliminates expensive value computations. This…github.com
The new pieces of data added include a local timestamp and height. The height is the current count of blocks on the account chain at that block, which sets the foundation for future changes leading up to block cementing.
Various other notable updates
Many additional updates have been made, and the following list includes some of the more noteworthy items:
- New config option to allow peering of local nodes
- Confirming of any active transactions that are dependent on an existing confirmed transaction
- Option to disable automatic wallet backups
- New RPC “sign” command for signing hashes and blocks (better offline signing support)
- Newly generated node configs will disable voting by default
- Splitting wallet data from main database for easier wallet backup/restore/replace
For the many other updates please follow along with in our V18 Github milestone tracker.
A few items on their way out of the node or further back in the schedule:
Deprecation of rai/lib (renamed to nano/lib)
The API within the rai/lib folder is being deprecated in this release and will be removed in a future release.
Confirmation height moved to a future release
Although the groundwork for this awesome feature is being included in Dolphin through the database updates and block height addition, storage and use of confirmation height to cement blocks has been moved out to a future release to allow further testing.
When upgrading a node to Dolphin there will be automatic upgrades executed in the background. We highly recommend performing a backup of all your node data prior to the upgrade.
Automatic database upgrade
To support key features the update process for existing nodes will involve heavy CPU and IO usage while the database is upgraded and rewrites all block entries in that process (this includes the desktop wallets). This will be done in the background while allowing proper syncing of blocks across the network but will consume a larger amount of system resources during the process.
Due to the database upgrade any ledgers updated to V18 will no longer be compatible with prior node versions. Please keep this in mind when planning any upgrades and managing any ledger backups.
Raiblocks > Nano renaming
All areas of the code which previously used rai/raiblocks and similar values have been updated to nano. The most notable change with the rename is updating the default data directory from RaiBlocks, RaiBlocksBeta, or RaiBlocksTest to Nano, NanoBeta, or NanoTest respectively.
We recommend any services upgrading should test out external scripts on our betanet prior to use in production. Join us on the Discord #beta-net channel for more info on getting a beta node set up.
We do not support non-release versions of the node including the creation of builds directly from Git tags or branches including master. Please use official pre-release builds for limited testing periods and only official release builds on mainnet. Once Dolphin is finalized you can upgrade at your convenience to receive the new features and optimizations V18 brings.
Dolphin coming soon
There are many updates coming with Dolphin and we have our noses down getting this ready for release. Keep your eyes out for more updates on the first release candidate making a splash on the network soon!