Wallet Logo

Stepan Snigirev Micro-Bitcoin for Arduino

Latest release: 0.1.3 ( 23rd December 2021 ) 🔍 Last analysed 20th May 2022 . Do-It-Yourself Project
5th January 2021

Jump to verdict 

Help spread awareness for build reproducibility

Please help us spread the word discussing build reproducibility with Stepan Snigirev Micro-Bitcoin for Arduino  via their Twitter!

Do your own research!

Try out searching for "lost bitcoins", "stole my money" or "scammers" together with the wallet's name, even if you think the wallet is generally trustworthy. For all the bigger wallets you will find accusations. Make sure you understand why they were made and if you are comfortable with the provider's reaction.

If you find something we should include, you can create an issue or edit this analysis yourself and create a merge request for your changes.

The Analysis 

Background

From the Arduino Micro-Bitcoin page:

Brings Bitcoin to embedded devices

Write your own hardware wallet, vending machine or any other bitcoin-powered device. Supports public and private keys, HD wallets, transactions and scripts. Everything required to start working with Bitcoin on microcontrollers.

Taken from Micro-Bitcoin’s GitHub repository:

Micro-Bitcoin

C++ Bitcoin library for 32-bit microcontrollers. The library supports Arduino IDE, ARM MBED and bare metal.

It provides a collection of convenient classes for Bitcoin: private and public keys, HD wallets, generation of the recovery phrases, PSBT transaction formats, scripts — everything required for a hardware wallet or other bitcoin-powered device.

The library should work on any decent 32-bit microcontroller, like esp32, riscV, stm32 series and others. It doesn’t work on 8-bit microcontrollers like a classic Arduino as these microcontrollers are not powerful enough to run complicated crypto algorithms.

We use elliptic curve implementation from trezor-crypto. API is inspired by Jimmy Song’s Programming Blockchain class and the book.

Snippet from Micro-bitcoin’s tutorial page:

In the tutorial we will to the following:

  • Generate a recovery phrase from entropy
  • Derive root key from mnemonic and password
  • Derive an account and print the master public key
  • Print first 5 receiving addresses
  • Parse PSBT transaction and outputs
  • Check if we have a change output and hide it
  • Sign PSBT transaction and print it

Analysis

There is an active community on Telegram focusing specifically on Arduino-Bitcoin implementations. The principal author for this project is Stepan Snigirev and he gives out a lot of resources and links to libraries that potential users can use.

Anyone who’s looking to understand Bitcoin better would benefit from partaking in this active do-it-yourself project.

(dg)

Verdict Explained

This project is not meant for non-technical end users.

As part of our Methodology, we ask:

Is the product meant to be ready for use "out of the box"?

If the answer is "no", we mark it as "Do-It-Yourself Project".

Many hardware wallet projects aim to be as transparent as possible by using only off-the-shelf hardware with an open design and open code. If the product reviewed is not available in an assembled form - if the user has to source his own hardware to then maybe solder and compile software to install on the device it falls into this category.