SKALE Consensus is an ultra-high-performance blockchain consensus engine written in C++.
- Over 10,000 TPS
- Byzantine fault tolerant — no block gaps, and stable performance even with up to 1/3 of nodes offline
- Provably secure
- Forkless
- Single-block finality — blocks are immediately finalized upon commitment
- Resilient to arbitrarily long network disruptions and delays through an asynchronous network model
- Multiple block proposers per block — ensures protocol stability even when some proposers are offline
- Secure against MEV and front-running — provably resistant to manipulation
Read the spec for more exciting features https://docs.skale.network/technology/consensus-spec
See visualization of live conseneus https://www.youtube.com/watch?v=0NGCSRjjPkk
The preferred build and execution environment is Ubuntu 22.04.
Later versions of Ubuntu may work, but they are not officially tested.
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install -yq libprocps-dev gcc-11 g++-11 valgrind gawk sed libffi-dev ccache \
libgoogle-perftools-dev yasm texinfo autotools-dev automake \
python3 python3-pip cmake libtool build-essential pkg-config autoconf wget \
git libargtable2-dev libmicrohttpd-dev libhiredis-dev redis-server openssl \
libssl-dev doxygen libgcrypt20-dev
git clone --recurse-submodules https://github.com/skalenetwork/skale-consensus.git
cd skale-consensus/deps && ./build.sh DEBUG=1
cd .. && cmake . -Bbuild -DCMAKE_BUILD_TYPE=Debug
cmake --build build -- -j$(nproc)
After the build completes, the build directory contains a test binary named consensust,
which can run a number of consensus tests.
The test subdirectories are located in the tests directory.
To run a specific test, navigate to its corresponding subdirectory.
Examples:
To run one node
cd test/onenode
sudo NO_ULIMIT_CHECK=1 TEST_TIME_S=180 TEST_TRANSACTIONS_PER_BLOCK=10 ../../build/consensust [consensus-basic]
If you have any questions please ask our development community on Discord.
Copyright (C) 2018-present SKALE Labs