TurboJAM is a C++ implementation of the JAM paper by Gavin Wood.
The code is regularly tested in the following build environments for the x86-64 architecture:
- Microsoft Visual C++ (included with Visual Studio Community 2022 on Windows)
- Clang 19 on Ubuntu 24.04
- GCC 13 on Ubuntu 24.04
If you encounter compilation issues in a different environment, please check whether the issue also occurs in one of the supported environments above. When reporting a problem, include details about your build setup to help with troubleshooting.
- Install the necessary dependencies:
sudo apt update sudo apt install -y git ninja-build cmake build-essential curl libboost-all-dev libfmt-dev libsodium-dev libssl-dev libspdlog-dev pkgconf libzstd-dev curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y . $HOME/.cargo/env - Clone the repository including all submodules:
git clone --recursive https://github.com/r2rationality/turbojam.git cd turbojam - Configure the build with CMake
cmake -B build-gcc-rel -G Ninja - Prepare the binaries:
cmake --build build-gcc-rel -j -t all
- Set up the necessary Visual Studio environment variables for a command line build
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" - Use vcpkg to install the required packages specified in vcpkg.json
vcpkg install - Configure the build with CMake
cmake -B build-win-rel -G Ninja -DCMAKE_BUILD_TYPE=Release --toolchain="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" - Prepare the binaries:
cmake --build build-win-rel --config Release -j -t all
The project uses the following test-vector sets and tools to verify its conformance:
- W3F Test Vectors
- Test Vectors by Davide Galassi
- JAM Conformance Testing Materials
- PVM Test Vectors by Jan Bujak
- PolkaJam binary releases
- JAM paper
- JAM Simple Networking Protocol
- JIP-1: Debug message host call
- JIP-2: Node RPC
- JIP-3: Structured Logging
- JIP-4 Chainspec file
- JIP-5: Secret key derivation
- JIP-6: Program metadata
- JAM community-generated documentation
- ark-vrf - Elliptic Curve VRF
- boost::ut - C++ single header/single module, macro-free μ(micro)/Unit Testing Framework
- ed25519-consensus - Ed25519 for consensus-critical contexts
- hash-library - Portable C++ Hashing Library
- ngtcp2 - an implementation of the IETF QUIC protocol
- reed-solomon-simd - Reed-Solomon erasure coding based on Leopard-RS
- DOT: 14Gnp9cpb4mrXrpbCVNQSEPyL3QhoccGB9qpTRxqKWWMWSxn
- KSM: Fr7L8hdMeXJqydX1Z8TC2vpd1hHuysJZ2x5goFSFDhL5Ay8