radixdlt-core icon indicating copy to clipboard operation
radixdlt-core copied to clipboard

Radix core consensus and networking layer

IMPORTANT

This repository has been archived as part of our move to a monorepo.

  • Monorepo is here
  • The code for this repo is available in the radixdlt-core subdirectory of the monorepo.

radixdlt-core

radixdlt-core is Radix's core consensus and networking module for the Radix Distributed Ledger. It includes a variant implementation of the HotStuff BFT-style consensus.

Table of contents

  • Building
  • Launching
  • Contribute
  • Links
  • License

Building

Clone the required repository:

git clone https://github.com/radixdlt/radixdlt-core.git

Checkout the required branch:

cd radixdlt-core && git checkout release/1.0-beta.21

Run tests (note that integration tests take several minutes to run):

./gradlew test integrationTest

Unfortunately the integration tests currently use hardcoded TCP/UDP port numbers 12345 and 23456, and may fail if these ports are not available on your machine. We plan to fix this.

Launching

You will need docker and docker-compose installed to launch a node. We use Docker Desktop for Mac.

We generate initial validator keys and genesis/universe at launch time, so the easiest way to launch a set of nodes is to use the startup script provided.

./docker/scripts/rundocker.sh 2

The number indicates the count of nodes to include in the configuration. Configuration files are provided for node counts between 1 and 5 inclusive. Note that each node requires approximately 1GiB of RAM.

If you need to run docker-compose using sudo, this can be specified on the command line as well:

DOCKER_COMPOSE_LAUNCH="sudo -E docker-compose" ./docker/scripts/rundocker.sh 2

Note that the -E flag is required here, as startup information such as keys and universe configuration generated by the script is provided in environment variables.

API interface can be accessed via localhost:8080, eg:

curl localhost:8080/api/universe

See also radixdlt-java for a Java client library and radixdlt-js for Javascript.

Contribute

Contributions are welcome, we simply ask to:

  • Fork the codebase
  • Make changes
  • Submit a pull request for review

When contributing to this repository, we recommend discussing with the development team the change you wish to make using a GitHub issue before making changes.

Please follow our Code of Conduct in all your interactions with the project.

Links

Link Description
radixdlt.com Radix DLT Homepage
documentation Radix Knowledge Base
forum Radix Technical Forum
@radixdlt Follow Radix DLT on Twitter

License

The radixdlt-core code is released under the Apache 2.0 License.