Hardware Bitcoin wallet - a minimal Bitcoin wallet for embedded devices

Hardware Bitcoin wallet is a project which aims to implement a minimal dedicated Bitcoin wallet. Its main difference with every other Bitcoin client/wallet out there is its low resource requirements: the binary is currently 25 kilobytes large, it uses less than 2 kilobytes of RAM and requires only 160 bytes of non-volatile storage per wallet. With such low requirements, I reckon a production device would be smaller, more robust and cheaper than any other Bitcoin wallet.

The wallet stores private keys (actually, it only stores a seed for the deterministic key generator), parses transactions and signs transactions. It essentially doesn’t do anything else. This is by design - simpler means a smaller attack surface. Private keys are generated on the device and never leave the device, except when doing a wallet backup. Even then, the seed is only displayed - it is never sent over the serial port. My intention is that physical access to a device is required in order to obtain private keys or to spend anything. As an additional layer of security, wallets can be encrypted. An encrypted wallet offers pseudo-two-factor authentication: in order to spend BTC, you need to know the wallet passphrase and you need to have the hardware Bitcoin wallet.

1 Like

Could you link this wallet, possibly the data sheet? I’d be very curious to see the internals and what MCU they are using.

1 Like

Could it be this? Opendime

Atleast you get something to start research into as it seems very similar what EmmaLee describes.

1 Like

Yes, more researched is required. I’ll let you know if ever get anywhere with it :slight_smile: . I think something like this could definitely be made.

1 Like

alten maybe you can help Smiley i also want to see this project become a real product, but i dont have those skills …

It looks like you are making great progress on your hardware wallet.

I ask as I am sure you are aware of the Slush/ Stick wallet and I wonder if you could consolidate your ‘wire protocol’ so that desktop clients only have one API to work against.

By ‘wire protocol’ I mean the message format and the method calls between the hardware device and a host computer that gives it the transactions to sign.

I do see the merit of this, in that it increases interoperability with the existing Bitcoin infrastructure. I’ve considered allowing a few (maybe 4?) imported private keys per wallet. However, I see this feature to be slightly beyond the scope I had in mind for this project, so it’s quite low on my feature priority list. We have been looking through your project and your github. We are going to take on the task of Building our Own Hardware wallet for our Coin XcelR.

great, I’d be happy to follow the progress. make sure to update us :wink:

1 Like

the hardware device and a host computer that gives it the transactions to sign.

Oh! It’s not my project! Just referring to it.

1 Like

Trezor has ported (or whatever) Ed25519 crypto lib to C (that is required for NEM and Trezor supports NEM), can be found from their github. I think that would be nice start. And I studied opendime a bit more and apparently it is using Atmel MCU’s and programming is done with C & MicroPython. It shouldn’t be too difficult to marry those two to make Atmel MCU that would support NEM.

I hope this helps in someway.

2 Likes

yes! due to some recent events, development has been near impossible. I made decent progress on a library written in C++ last night, I am looking to most likely use that Ed25519 library. This library will enable me to upload to code to many different MCUs and enable all sorts of crazy things. @EmmaLee and @SirNembalot maybe we could make a group on Telegram for all of this embedded device + NEM stuff. Would love to bounce more ideas off of you guys!

2 Likes

Oh Thanks
Have you considered if/ how your users can hook up to their desktop wallets ?

Of course it is not always easy to get something that works both across devices and across desktop clients but it would be a great result if we could do it.

Yes, I am agreed with you … Thanks for great ideas

Well done @crackTheCode! I hope you consider publishing your works in open source manner to benefit community and humanity. I am always happy to bounce ideas but I don’t like Telegram and this forum needs tad more traffic/posts, thus I’d like to stay here :slight_smile:

2 Likes
  • Multiple wallets. A single device can hold many wallets. Each of these wallets are independent - they can have different addresses and different encryption keys.