Skip to content

Latest commit

 

History

History
81 lines (51 loc) · 3.15 KB

README.md

File metadata and controls

81 lines (51 loc) · 3.15 KB

SKALE Consensus: a BFT Consensus engine in C++

Discord Build and test skale-consensus

Skale-consensus is an implementation of SKALE provable consensus spec as described here https://docs.skale.network/technology/consensus-spec

Key features of of SKALE consensus

  • provably secure
  • forkless
  • single block finality - blocks become immediately finalized once committed.
  • survives under arbitrarily long network distruptions and delays by implementing asynchronous network model
  • multiple block proposers per block provide protocol stability even if some block proposers are down

Read the spec for more exciting features.

The consensus is under active improvement and research.

Installation Requirements

SKALE consensus has been built and tested on Ubuntu 18.04 and later.

The preferred build and execution environment is currenty Ubuntu 22.04.

Ensure that the required packages are installed by executing:

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

Building from source on Ubuntu (Development)

Steps to build from source:

# clone repo
git clone --recurse-submodules https://github.com/skalenetwork/skale-consensus.git
# build dependencies
cd scripts && ./build_deps.sh 
 # Configure the Cmake build.
cd .. && cmake . -Bbuild
# now run hunter bug workaround
mkdir -p "${HOME}"/.hunter/_Base/Download/crc32c/1.0.5/dc7fa8c/ && wget -O "${HOME}"/.hunter/_Base/Download/crc32c/1.0.5/dc7fa8c/hunter-1.0.5.tar.gz https://github.com/hunter-packages/crc32c/archive/refs/tags/hunter-1.0.5.tar.gz
#  now build all targets using all available CPU cores
cmake --build build -- -j$(nproc) 

Running tests

Navigate to the testing directories and run ./consensusd .

Libraries

An important note about production readiness:

The SKALE consensus is still in active development and contains bugs. This software should be regarded as alpha software. Development is still subject to competing the specification, security hardening, further testing, and breaking changes. This consensus engine has not yet been reviewed or audited for security. Please see SECURITY.md for reporting policies.

Contributing

If you have any questions please ask our development community on Discord.

Discord

License

License

Copyright (C) 2018-present SKALE Labs