Free and Open-Source Software (FOSS) is at the heart of innovation. By making source code freely available for anyone to review, modify, and improve, FOSS ensures that progress is driven by collaboration and transparency rather than gatekeeping. At Foundation, this ethos is woven into everything we do. From our earliest products to those on the horizon, our commitment has always been (and always will be) to release all of our work under free open licenses.
But our dedication to FOSS doesn’t end with our own tools. We actively contribute to other Bitcoin & FOSS projects, fix bugs upstream, propose & implement new features, and share improvements that can benefit the entire ecosystem. This collective approach not only strengthens the software we rely on but also helps advance the broader community as a whole. Over the past year, we’ve continued to champion FOSS by enhancing our products and supporting our peers’ efforts.
Below are some of the highlights of our 2024 contributions:
Moved Our Tor Library to an MIT License
We re-licensed our Tor library under MIT to make it more accessible to other wallets. This Rust-based library simplifies Tor implementation, and wallets like Cake Wallet and Stack Wallet are already integrating. We hope to encourage even more projects to adopt privacy-preserving technologies like Tor.
Enhancements to BIP329
We proposed and added a new key called spendable
to the BIP329 standard to represent “blocked” or “frozen” coins. Multiple wallets, including Envoy and Sparrow, have implemented this enhancement, helping standardize how wallets handle coin states.
PR here.
Bug Fixes for Sparrow Wallet’s Hummingbird UR
We addressed a bug in Sparrow Wallet’s hummingbird Java UR implementation that prevented scans of the latest QR format. This fix also aided Casa in resolving a related issue with Passport, underscoring how upstream contributions can ripple through multiple projects.
PR here.
Major Cleanup in Xous-Core’s Cargo-xtask
We contributed significant bug fixes and cleanup to xous-core
‘s cargo-xtask
code, addressing clippy
warnings and simplifying the code. cargo-xtask
allows Rust developers to script various tasks beyond standard cargo
commands, improving developer productivity and code quality and is used by Xous to streamline the OS building, running and testing process.
PR here.
Rust-Bitcoin Minimal Version Fix
We fixed a version mismatch in the rust-bitcoin
ecosystem that caused compilation failures when using cargo build -Z minimal-versions
. Ensuring compatibility with minimal-versions helps maintain a healthy and robust library dependency chain.
PR here.
Upstream Bug Fix in ‘ffi.rs’
Fixed a bug in the Xous version of Rust stdlib ffi.rs
, a thin layer for making Xous
system calls from the rust standard library.
PR here.
Compilation Fixes for ‘nrf-softdevice’
Fixed a compilation error for nrf52805
in the nrf-softdevice repository for embassy-rs. This library allows to access Nordic’s SoftDevice library with C API from Rust.
PR here.
ARM-v7A CRC Intrinsics in ‘stdarch’
Added missing ARM-v7A CRC intrinsics to the stdarch library of rust-lang. This now allows access to some of the SIMD instructions from the Rust code, without using inline assembly.
PR here.
Corrections to ‘rust-fatfs’
Fixed an issue with the rust-fatfs library, that was effectively creating malformed filesystem images. rust-fatfs
is a library that can parse, read and write FAT32 filesystem images.
PR here.
Feature Requests and Issues Opened
- Sparrow Wallet: We opened an issue that led to adding SD card message signing support. This feature was crucial for our own Passport hardware wallet but will also benefit other Sparrow users.
- BTCPayServer: We identified a bug in the PSBT implementation for taproot addresses, which the BTCPay team promptly fixed. Their update ensures smoother compatibility for hardware wallets using Taproot and the PSBT standard.
Contributions to GNU Guix
Several contributions were made to the GNU Guix Linux distribution and package manager. This software emphasizes reproducibility and is built to ensure that any given package matches its definition and source code at all times. It is completely free software (as in freedom), so it doesn’t contain any binary blobs. Bitcoin Core uses GNU Guix for reproducible builds, and the Foundation is exploring it for reproducible firmware builds by creating a complete reproducible toolchain for embedded software development.
This year we:
- Refactored the GNU Guix code base to make
xtensa-ath9k-elf
an official target, which is used to build the firmware forath9k
Wi-Fi adapters. See here. - Refactored GNU Guix to add the
or1k-elf
-embedded target to build the firmware of some Allwinner Sunix SoCs. See here. These refactorings are in preparation to add a completearm-none-eabi
withnewlib
toolchain in the future for embedded development. See here. - Applied a fix for the compilation of cross-compiler packages, part of the ongoing work to improve embedded firmware development in GNU Guix. See here.
- Some modules from arguments were removed as a result of the addition of the AVR target to GNU Guix. See here.
- Fixed the podman and distrobox packages for GNU Guix. These are packages we use to create reproducible environments for Passport firmware compilation. Distrobox allows us to create the same development environment used in Docker and Podman. See here and here.
- Added a patch set that improves the reliability of Rust crates in GNU Guix by compiling and testing some of the crates. See here.
- Applied a small fix to make a package visible in GNU Guix, as part of the refactoring for embedded development. See here.
- Applied a small patch to fix the compilation of python-pyside-2, the Python Qt library. We don’t directly use this, but another program we were using was not compiling because of this failure, so we fixed it upstream. See here.
- Added the latest version of ocaml-sedlex to GNU Guix and removed some bundled unicode files to use the distribution provided ones. See here.
We also updated multiple libraries multiple times. Most notably:
- libsecp256k to 0.5.0 and later to 0.6.0
- make-minigw-w64 to 12.0.0, pushing it one step closer to being able to use the UCRT runtime for Bitcoin Core on Windows
- distrobox to 1.7.2.1
- frama-c to 28.1 and later to 29.0
- crypto+ to 8.8.0
- soqt to 1.6.2
- coin3d to 4.0.2
- coq-gappa to 1.5.5
- coq-interval to 4.10.0
- coq-mathcomp to 1.19.0
- coq-stdpp to 1.10.0
Partnership with Slint
We teamed up with the Slint UI team to implement 9-slice image support for their Image
element, a feature we needed for our Passport Prime UI. Even though we funded this effort, we chose to open-source it, benefiting the broader Slint community and developers who rely on this powerful UI toolkit. So, it was released in Slint version 1.5.
Partnership with Blockchain Commons
Foundation is an ongoing sponsor of Blockchain Commons, an organization that works with developer communities to design, build, and maintain secure & compassionate decentralized architectures & tools for digital assets & digital identity.
We’ve been working with them for several years now, and we have actively contributed to the adoption of standards such as the Uniform Resources (animated QR codes) standard.
In addition to our ongoing support, we funded some important work on the Gordian Sealed Transport Protocol (GSTP). This is the protocol on which our QuantumLink secure Bluetooth technology is based. We are planning a separate blog post on this topic, where we will dive into the technical details of how this protocol works, and more about the Blockchain Commons team, so stay tuned for that.
Conclusion
As we close out 2024, we’re incredibly proud of all the hard work our team has poured into these FOSS initiatives. From fixing bugs and upstreaming improvements to actively collaborating on new features, we’ve shown that our commitment to free and open-source software goes far beyond our own products. It’s a pledge to support the broader ecosystem, the developers, projects, and communities that power it.
Our focus remains the same as we step into the future: keep every product and tool we create fully open source, contribute wherever we can, and champion the ideals of transparency, security, and collaboration that FOSS embodies. Thank you for following along on our journey. We’ll continue making open-source innovation a reality for everyone.