Be sure to have your environment correctly set up (see Getting Started) and ledgerblue installed.
If you want to benefit from vscode integration, it's recommended to move the toolchain in /opt
and set BOLOS_ENV
environment variable as follows
BOLOS_ENV=/opt/bolos-devenv
and do the same with BOLOS_SDK
environment variable
BOLOS_SDK=/opt/nanos-secure-sdk
make DEBUG=1 # compile optionally with PRINTF
make load # load the app on the Nano using ledgerblue
High level documentation on the architecture and interface of the app:
- qtum.md: specifications of application commands.
- wallet.md: supported wallet signing policies.
- merkle.md: rationale and specifications for the usage of Merkle trees.
Additional documentation can be generated with doxygen
doxygen .doxygen/Doxyfile
the process outputs HTML and LaTeX documentations in doc/html
and doc/latex
folders.
A Python client library and a TypeScript client library are available in this repository.
The flow processed in GitHub Actions is the following:
- Code formatting with clang-format
- Compilation of the application for Ledger Nano S in ledger-app-builder
- Unit tests of C functions with cmocka (see unit-tests/)
- End-to-end tests with Speculos emulator (see tests/)
- Code coverage with gcov/lcov and upload to codecov.io
- Documentation generation with doxygen
It outputs 4 artifacts:
qtum-app-debug
within output files of the compilation process in debug modecode-coverage
within HTML details of code coveragedocumentation
within HTML auto-generated documentation
This is a quick start script for developing app-qtum on Ubuntu.
# Install docker
sudo apt update
sudo apt install snapd
sudo snap refresh snapd
sudo snap install docker
sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
sudo snap disable docker
sudo snap enable docker
# Pull the latest dev tool
sudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest
# Clone app-qtum
sudo apt install git -y
git clone https://github.com/qtumproject/app-qtum
# Add rules for the supported devices
sudo app-qtum/script/add_udev_rules.sh
# Add ledger_env with command line to ~/.bashrc
app-qtum/script/ledger_ubuntu_env.sh
source ~/.bashrc
# Build the ledger app
cd app-qtum
ledger_env
make
make load
exit