github radixdlt/babylon-node rcnet-v3.1-r4
RCnet v3.1 - Revision 4

latest releases: v1.2.3, v1.2.3-rc1, v1.2.2...
12 months ago

Overview

This is the fourth release candidate of the Radix Babylon mainnet.

The network which will run our public RCnet v3.1 network will be zabanet(it will replace RCnet v3 running on Zabanet with a ledger wipe, when we publish later this week). As such you may see zabanet in some docs - particularly where we want to differentiate between this network, and other networks running an RCnet v3.1 build (such as migrated stokenet).

IMPORTANT: If you were running a node for RCnet v2 or RCnet v3, please delete your ledger during your update to the v3.1 node.

Node Runners

Running with the Node Runner CLI

Our recommended approach. See the docs here and the relevant release can be obtained from here: https://github.com/radixdlt/babylon-nodecli/releases/tag/2.0.rcnet-v3-rc5

Please let us know in #node-runners in Discord if you encounter problems.

Running via docker

RADIXDLT_NETWORK_ID: 14
RADIXDLT_NETWORK_SEEDS_REMOTE: radix://node_tdx_e_1q0gm3fwqh8ggl09g7l8ru96krzlxdyrc694mqw8cf227v62vjyrmccv8md5@13.126.65.118,radix://node_tdx_e_1q0juzf2gnhfhy2aj6x88x4f459tf2a2mdk56jm3ffhzp94fn8k0q5lkse34@52.64.209.45,radix://node_tdx_e_1qdzlwtjn9wcmcyt3mp3g4qaerr6fgrl86ze6t20427tf4rmnu670y0cgszc@54.72.0.65,radix://node_tdx_e_1qfz9r8xp95vuzjq503l856ywukrdnukcz4232tr4nsx7ff2efvfnwvaq080@35.168.132.18
RADIXDLT_GENESIS_DATA: /wYAAHNOYVBwWQDRAgBo6NIQvgoUXCEGCgEACQEABQkHKAAAIQoJZAAAAAr0DRoICrgLCRsMCuCTBAUKFTQkoOyCkOtRDo+1mgUYGQEgoAAAZKeztuANGRMJARU7FQkgoAAAEGMtXsdrFYENAeAgIgMEASAhAQKA0fJ+apHv10KbZw/zq1+awjGS4SYu/i7pxk+BCLnNoAAAAGCKph7+xG3S1QgAAAAVArABICEEBiAHIQPRuKXAudCPvKj3zj4XVhi+ZpB40WuwOPhKleZpTJEHvAEBAQFiswDwkCAhAgIMBG5hbWUiAAEME0RlZmF1bHQgdmFsaWRhdG9yIDECDAN1cmwiDQEMGGh0dHBzOi8vd3d3LnJhZGl4ZGx0LmNvbYDRk4ZR64ZKF0UXY8UqyV6ghwcOhTBATZMlYRUFrK8GIAchA+XBJUid03IrstGOc1U1oVaVdVttqaluKU3EEtUzPZ4KAQEBAaAAAGRSWQGCpgAEMgKOpgBw6qD7P5CmKE5Vw2wD57719pXjLq07Mg+HaguVWgMlTHxF9y5TK7G8EXHYYoqDuRj0lA/n0LOlqfVXlpqPc+a88vZMAQAzkqYAcKvDUcvEhfpU9zJiX0WLTYhldkUKzZWgKxkIj7BjAaaAAkRRnMEtGcFIFHx+emiO5YbZ8tgVVRUsdZwN5KVZSxM39qYAADSSpgCQ4Bhb5cGHtROfCGYqZsBNXyin+4PMPOq2HReDCj0BAiCAAdHyfmrZAgwgIQQCjr4CECAhAQIJQfUwoAAAAOg8gNCfPC47AwEREQEFRxDlwSVInWpfAppHAH4AApZHAIKhAYZHAAHuJEDq7XRG0JwsnwwR60wAAAAgDAYMdHJhbnNmZXJfeHJkCGGJkHN3YXAIbWV0YWRhdGERZnVuZ2libGVfcmVzb3VyY2UVbm9uX2Y+FgB0HWFjY291bnRfYXV0aG9yaXplZF9kZXBvc2l0b3Jz

Running natively

The main change to Olympia is that the node now has its core written in Rust, but still uses java as the system orchestrator.

To run the node, you will need both:

  • The attached JAR (in babylon-node-rcnet-v3.1-r4.zip)
  • The native library, compiled for your node's system architecture. This will have a name like libcorerust.so / corerust.dll / libcorerust.dylib depending on the platform.
    • We prebuild this for many platforms - see the attached zip files. EG the contents of babylon-node-rust-arch-linux-x86_64-release-rcnet-v3.1-r4.zip can be used for x86_64 linux deployments. Note they need to use a version of libc at least as recent as Ubuntu 22.04.2.0 LTS (Jammy Jellyfish).
    • If you need another architecture, you will need to compile it yourself on the desired target - see section below.

You will then need to run the JAR, but make the native library available for java to connect via JNI. This can be done in one of multiple ways:

  • On Linux:
    • Put the native library in /usr/lib/jni or /usr/lib - be sure it's named libcorerust.so
    • Start the jar with an environment variable LD_PRELOAD=/path/to/native_library.so.
  • General:
    • Put the library at one of the java.library.paths (on Ubuntu: e.g. /usr/lib/jni, on OSX: e.g. ~/Library/Java/Extensions/)
    • Run the jar with -Djava.library.path=<path_to_library_directory> and put the library there. EG on windows, the library will need to be called corerust.dll.

Configuration to use with your RCnet v3 / zabanet node is as follows. This can be specified in a file called "default.config" alongside the home directory of the node, or put in another file and referenced via a --config=path/to/config-file command line parameter.

network.id=14
network.p2p.seed_nodes=radix://node_tdx_e_1q0gm3fwqh8ggl09g7l8ru96krzlxdyrc694mqw8cf227v62vjyrmccv8md5@13.126.65.118,radix://node_tdx_e_1q0juzf2gnhfhy2aj6x88x4f459tf2a2mdk56jm3ffhzp94fn8k0q5lkse34@52.64.209.45,radix://node_tdx_e_1qdzlwtjn9wcmcyt3mp3g4qaerr6fgrl86ze6t20427tf4rmnu670y0cgszc@54.72.0.65,radix://node_tdx_e_1qfz9r8xp95vuzjq503l856ywukrdnukcz4232tr4nsx7ff2efvfnwvaq080@35.168.132.18
network.genesis_data=/wYAAHNOYVBwWQDRAgBo6NIQvgoUXCEGCgEACQEABQkHKAAAIQoJZAAAAAr0DRoICrgLCRsMCuCTBAUKFTQkoOyCkOtRDo+1mgUYGQEgoAAAZKeztuANGRMJARU7FQkgoAAAEGMtXsdrFYENAeAgIgMEASAhAQKA0fJ+apHv10KbZw/zq1+awjGS4SYu/i7pxk+BCLnNoAAAAGCKph7+xG3S1QgAAAAVArABICEEBiAHIQPRuKXAudCPvKj3zj4XVhi+ZpB40WuwOPhKleZpTJEHvAEBAQFiswDwkCAhAgIMBG5hbWUiAAEME0RlZmF1bHQgdmFsaWRhdG9yIDECDAN1cmwiDQEMGGh0dHBzOi8vd3d3LnJhZGl4ZGx0LmNvbYDRk4ZR64ZKF0UXY8UqyV6ghwcOhTBATZMlYRUFrK8GIAchA+XBJUid03IrstGOc1U1oVaVdVttqaluKU3EEtUzPZ4KAQEBAaAAAGRSWQGCpgAEMgKOpgBw6qD7P5CmKE5Vw2wD57719pXjLq07Mg+HaguVWgMlTHxF9y5TK7G8EXHYYoqDuRj0lA/n0LOlqfVXlpqPc+a88vZMAQAzkqYAcKvDUcvEhfpU9zJiX0WLTYhldkUKzZWgKxkIj7BjAaaAAkRRnMEtGcFIFHx+emiO5YbZ8tgVVRUsdZwN5KVZSxM39qYAADSSpgCQ4Bhb5cGHtROfCGYqZsBNXyin+4PMPOq2HReDCj0BAiCAAdHyfmrZAgwgIQQCjr4CECAhAQIJQfUwoAAAAOg8gNCfPC47AwEREQEFRxDlwSVInWpfAppHAH4AApZHAIKhAYZHAAHuJEDq7XRG0JwsnwwR60wAAAAgDAYMdHJhbnNmZXJfeHJkCGGJkHN3YXAIbWV0YWRhdGERZnVuZ2libGVfcmVzb3VyY2UVbm9uX2Y+FgB0HWFjY291bnRfYXV0aG9yaXplZF9kZXBvc2l0b3Jz

Compiling the native library for your architecture

If you need an architecture other than those offered in the attached zip files, you will need to compile it yourself on the desired target.

Pre-requisites
  • clang
  • git
  • openjdk-17-jdk-headless
  • rustup (e.g. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - note: the prepackaged rust-1.62-all on Ubuntu is insufficient
Build steps

On your node:

  1. Clone the repository git clone https://github.com/radixdlt/babylon-node.git, change directory to babylon-node, and checkout the branch release/rcnet-v3.1
  2. Run ./gradlew installDist in babylon-node
  3. Run cargo build --release in babylon-node/core-rust
  4. Copy the created rust library found in babylon-node/core-rust/target/release/libcorerust.so (libcorerust.dylib on OSX, corerust.dll on Windows) to one of the java.library.paths (on Ubuntu: e.g. /usr/lib/jni, on OSX: e.g. ~/Library/Java/Extensions/)

You can then start your node as normal, eg with env RADIX_NODE_KEYSTORE_PASSWORD=[validator.ks passphrase] ./core/build/install/core/bin/core

Note: ./core/build/install/ directory can be safely moved to a directory under /opt, e.g. /opt/radixdlt.

Service files for Debian

A .deb for the node containing a useful base .service can be created as follows:

  1. Clone the repository and cd babylon-node
  2. Run ./gradlew deb4Docker
  3. Install the package that was created with dpkg -i
  4. Fine-tune the installed service file - e.g. by adding the RADIX_NODE_KEYSTORE_PASSWORD environment variable.

APIs/Monitoring:

APIs now live here:

  • Core (bound to localhost:3333) - Core API docs here
  • System (bound to localhost:3334) - System API docs here
  • Prometheus (bound to localhost:3335) - they have been rehashed a lot to be a lot more consistent and powerful, although we don't have a great guide for these just yet.

Validator Registration:

Details are available here: https://docs-babylon.radixdlt.com/main/node-and-gateway/register-as-validator.html

Don't miss a new babylon-node release

NewReleases is sending notifications on new releases.