Awesome
Ledger Bitcoin Application
Prerequisite
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
Compilation
make DEBUG=1 # compile optionally with PRINTF
make load # load the app on the Nano using ledgerblue
Documentation
High level documentation on the architecture and interface of the app:
- bitcoin.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.
Client libraries
A Python client library, a TypeScript client library and a Rust client library are available in this repository.
Tests & Continuous Integration
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:
bitcoin-app-debug
within output files of the compilation process in debug modecode-coverage
within HTML details of code coveragedocumentation
within HTML auto-generated documentation