github radixdlt/babylon-node rcnet-v1-c6360105d
RCnet-V1.0

latest releases: v1.3.0.2, v1.3.0.1, v1.3.0...
21 months ago

Overview

This is the first release candidate of the Radix Babylon mainnet. The network which runs RCnet-v1 has a logical name of kisharnet- which you will see in some places.

Integrators

Integrators looking to prepare for the Radix Babylon launch should start by considering if running their own node and using the Core API would work instead of running a Gateway and using the Gateway API, as they would have in Olympia.

Running just a node is simpler than running a node and Gateway, and the Core API has a "long term support" section of the API, designed for tracking fungible balances and accounts, which is guaranteed to be compatible with mainnet launch - enabling integrators to prepare for mainnet launch immediately.

Node Runners

Better docs are coming shortly, but for now, details on configuration for different versions are below - and please ask any questions in the node-runners channel on our discord server.

In general, the configuration is as-per Olympia nodes, except with the following differences:

Running with the Node Runner CLI

Our recommended approach. See the docs here and the latest release can be obtained from here: Node Runner CLI.

Running via docker

RADIXDLT_NETWORK_ID=12
RADIXDLT_NETWORK_SEEDS_REMOTE=radix://node_tdx_c_1qvmhdlpvu3ym369ehjcmnmuam79vhs03gv0nqwhusewmvnjlfth3jpgr5ga@54.229.1.127,radix://node_tdx_c_1qfz58amtc2x8jz33uzfj9ymn8t2thhuatrt9w67he2w9x2f6eve4g20qctn@15.206.142.82,radix://node_tdx_c_1qtvxv7259j0l48gycv0zdze6he56c5sx4vjhljc7jsgkxaamnf3kccv4k4w@3.234.147.175,radix://node_tdx_c_1q2axr7xr4utg3a7hxstxdfjd7udqxzp5dqf6vgg0d0krmyrvzw775xa6nu4@3.24.207.200
RADIXDLT_GENESIS_TXN=02d86679542c9ffa9d04c31e268b3abe69ac5206ab257fcb1e94116377bb9a636c033776fc2ce449b8e8b9bcb1b9ef9ddf8acbc1f1431f303afc865db64e5f4aef19024543f76bc28c790a31e0932293733ad4bbdf9d58d6576bd7ca9c53293acb335402ba61f8c3af1688f7d7341666a64df71a0308346813a6210f6bec3d906c13bdea

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-v1-c6360105d.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 some platforms - eg the contents of babylon-node-rust-arch-linux-x86_64-release-rcnet-v1-c6360105d.zip.
    • If you need an architecture other than linux x86-64, for now 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 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=12
network.p2p.seed_nodes=radix://node_tdx_c_1qvmhdlpvu3ym369ehjcmnmuam79vhs03gv0nqwhusewmvnjlfth3jpgr5ga@54.229.1.127,radix://node_tdx_c_1qfz58amtc2x8jz33uzfj9ymn8t2thhuatrt9w67he2w9x2f6eve4g20qctn@15.206.142.82,radix://node_tdx_c_1qtvxv7259j0l48gycv0zdze6he56c5sx4vjhljc7jsgkxaamnf3kccv4k4w@3.234.147.175,radix://node_tdx_c_1q2axr7xr4utg3a7hxstxdfjd7udqxzp5dqf6vgg0d0krmyrvzw775xa6nu4@3.24.207.200
network.genesis_txn=02d86679542c9ffa9d04c31e268b3abe69ac5206ab257fcb1e94116377bb9a636c033776fc2ce449b8e8b9bcb1b9ef9ddf8acbc1f1431f303afc865db64e5f4aef19024543f76bc28c790a31e0932293733ad4bbdf9d58d6576bd7ca9c53293acb335402ba61f8c3af1688f7d7341666a64df71a0308346813a6210f6bec3d906c13bdea

Compiling the native library for your architecture

If you need an architecture other than linux x86-64, for now 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)
    (for example, the prepackaged rust-1.62-all on Ubuntu is insufficient, yet)
Build steps

On your node:

  1. Clone the repository https://github.com/radixdlt/babylon-node.git
  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.

New 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:

See this guide for how to set up as a validator. Everyone is welcome to try to run an RCNet node, but due to bandwidth, the RDX Works team can't promise to support or stake to people outside of the initial validator alpha programme at this stage

If you don't want to use a phone, you can use the Kotlin Client to generating a keypair on your machine and send transactions programmatically via your Core API or the RCnet Gateway API.

Related software releases

Don't miss a new babylon-node release

NewReleases is sending notifications on new releases.