Developer resources

If you want to integrate the BitBox02 into your project or contribute to the codebase, please find the necessary resources below.

Architecture

The BitBox02 hardware wallet is a USB device which securely stores cryptographic keys (such as bitcoin private keys) and signs transactions/messages with that key. Signing with the key requires physical interaction with the device (i.e. no automatic or remote signing possible). The BitBoxApp is the native app that communicates with the BitBox02. However the BitBox02 can integrate with various third party applications. It can communicate with applications running in a browser (or browser extensions) using WebHID or using the BitBoxBridge. The BitBox02 can also communicate with third-party bitcoin wallets using the Bitcoin Hardware Wallet Interface (HWI).

BitBox02 architecture diagram

The main components of the BitBox02 are:

OLED display: displays important information to the user. Such as bitcoin transaction details or a private key.

microSD card connector: used to backup private keys onto a microSD card.

Touch sensors: Used to interact with the device. Interaction with the device is required for important tasks, such as signing a bitcoin transaction.

Secure chip (ATECC608B): hardens the user-chosen password by combining it with a key stored on the secure chip. Also limits the number of key derivations using a monotonic counter enforced by the secure chip.

Microcontoller (ATSAMD51J20A): runs the open source firmware of the BitBox02 and communicates with the other on-board components.

GitHub

Main code repositories

Our open source code is hosted on Github. There you can find our three main repositories:

BitBox02 firmware

The code that runs on the BitBox02 hardware wallet. Written in C and Rust.

BitBoxApp

Native desktop/mobile app for the BitBox02. Written with a Go backend and TypeScript/JavaScript frontend.

BitBoxBridge

Application that allows the BitBox02 to communicate with web wallets. Written in Rust.

Libraries

Native integration

If you want to integrate the BitBox02 into your native desktop/mobile client, please see our Rust, Python and Go libraries:

Go logo

Rust

For Rust projects, please check out our Rust library:

Rust logo

Python

The BitBox02 also supports HWI, which is a python library and command line tool for interacting with hardware wallets.

Python logo

Web wallet integration

If you want to integrate the BitBox02 into a web wallet, please see our TypeScript NPM library:

API playground:

JavaScript logo

Example integrations

Here are some examples of previous integrations with web wallets.

Rabby

Browser extension wallet (MetaMask fork) which allows you to connect to Ethereum based Dapps

Rabby Logo

Contribute

Individual contributions to the code base are also welcome. If you want to contribute to the BitBox codebase, please read our contribution guidelines

BitBox02 logo
BitBox02 welcome screen

Get a developers BitBox02

Whether you are integrating the BitBox02 into your wallet or making a contribution, it may be useful to have a developers version of BitBox02 for testing.

The developers version of the BitBox02 can load unsigned firmware, which is particularly useful if you plan on making modifications to the firmware so you can test your changes.

If you would like one, please reach out to us

Read more