github radixdlt/babylon-node v1.0.4
Babylon (v1.0.4)

latest releases: v1.2.4, v1.2.4-rc1, v1.2.3...
13 months ago

Summary

This is the v1.0.4 node, with a number of high-priority fixes.

This is a required update. All mainnet nodes require updating to this version to sync through state version 11584503. We recommend that all node runners, particularly validators, update as soon as practicable. Please read the key changes and important note below before starting to update.

Details for node set-up are on the docs site here. There should be no need for configuration changes as part of updating to this release. For those running natively, you should update both jar and native library from the attached assets.

License

The Babylon node code is released under the Radix License. Executable components are licensed under the Radix Node EULA.

Details

Key changes

  • Ledger size pruning - includes a pruner of stale state tree nodes which reduces ledger disk usage by over ~50% (and state tree nodes specifically by ~80%). The remainder is mostly ledger proofs, for which we will be working on a pruner as a next priority.
  • CVE Fixes in the docker image for CVE-2023-4911 and CVE-2023-38545
  • Consensus tweaks to better cap timeout delays
  • Metrics Improvements:
    • Various metrics for database size and record count (eg ng_raw_db_size by category label).
    • The ledger_recent_self_proposal_miss_count metric now requires a match on both validator address and public key to increment, so will no longer fire on your backup nodes.
    • There is a new rn_ledger_self_consensus_rounds_committed counter metric with round_resolution label of Successful, MissedByGap or MissedByFallback which may be easier to use for monitoring than the windowed ledger_recent_self_proposal_miss_count.
  • Core API addition to add non fungible balance changes to LTS transaction outcomes.
  • Key store fixes - We have updated to bouncy-castle 0.80, which fixes some of the issues we saw where certain re-created keystores could not be loaded by the node. As part of this change, we now permit an empty keystore password. If you previously ran with an empty keystore password, this was previously turned into the password "radix". In that case, to run your v1.0.4 node, you will need to run with RADIX_NODE_KEYSTORE_PASSWORD=radix.
  • Bug fixes as part of this release:
    • Updating the key of an active validator to a wholly invalid key could cause errors interpreting the end of epoch event.
    • A global call made by an owned but unattached child component would be associated with an incorrect auth zone.
    • If a payload contained an Array<i128> or Map involving an i128 then it was not possible to re-encode it as a ScryptoValue.

Important note

The state pruner will take around 40 minutes to catch up / reduce disk space usage, and in this time will use a lot of IO. This may cause some delays in other parts of the node, and may cause your node to miss some proposals. You may wish to swap to a back-up node, or unregister for this hour or two, to mitigate this.

This process will be nearing its end when your node first outputs a log containing "Flushing the last buffer". This should correspond with state_manager::store::gc logs moving from every second or so to every minute. Note these logs are in the Rust part of the node, so you may not see them if you are only explicitly streaming your Java logs.

There may still be some async compaction / IO churn for a few minutes after this point, whilst RocksDB continues to clear up disk space, but your node should be okay to pick back up its main duties at this point.

Debugging

If your node fails to boot up with a log message of PKCS12 key store mac invalid - wrong password or corrupted file, this is likely because your previous keystore password was empty, which was previously implicitly replaced by the password "radix". Please update your keystore environment variable to RADIX_NODE_KEYSTORE_PASSWORD="radix" to run the node with this keystore, or regenerate the keystore with an empty password.

Don't miss a new babylon-node release

NewReleases is sending notifications on new releases.