Fireblocks-MPC
July 30, 2026 ยท View on GitHub
This repository contains Fireblocks' C++ implementation of Secure Multi Party Computation (MPC) algorithms for digital signatures. Covered algorithms include MPC CMP for ECDSA signatures (online and offline variants), online EdDSA signatures and offline asymmetric EdDSA.
It takes the form of a library (libcosigner) containing the algorithms and supporting cryptographic routines, as well as an extensive test suite also serving as an integration example.
Quick Start
Prerequisites
This version of the code targets Ubuntu Linux 20.04 LTS release. The libraries and headers of the following dependencies are required:
- OpenSSL version 1.1.1 or higher
- libuuid (for tests)
- libsecp256k1 (for tests, optional)
All required dependencies can be installed with the command:
apt install build-essential libssl-dev uuid-dev libsecp256k1-dev
Building and Testing
Build the library and tests by running:
mkdir build; cd build; cmake ..; make
To execute the test suite, run the command from the same build folder:
make test
Benchmarks and Profiling
Build the BAM signing benchmark by enabling the benchmark option during configuration:
cmake -S . -B build -DMPC_LIB_BUILD_BENCHMARKS=ON
cmake --build build --target bam_sign_benchmark
Run the benchmark executable to measure bam_key_sign throughput (use --benchmark_filter to focus on a specific algorithm):
./build/benchmarks/bam_sign_benchmark --benchmark_filter=stark
To profile the benchmark and visualize the results:
- Record samples with Linux
perf(installhotspotor another viewer once):perf record -F 999 -g ./build/benchmarks/bam_sign_benchmark --benchmark_filter=secp256k1_default - Open the generated
perf.datain a graphical viewer, e.g.:hotspot perf.data # Qt GUI with flame graphs # or convert to Speedscope perf script | speedscope
Usage
A few examples for running a full signing process can be found in the tests section
Security
Please see our dedicated security policy, which also links to the security model and submission contract and the researcher and AI-tooling notes.
Contributing
Contributions of code and ideas are welcome. Prior to opening a pull request, please carefully review our contribution guidelines.
License
The code in this repository is offered under the terms of the GNU General Public License, as described in the LICENSE file.