Posts

Developing a Steem hardware wallet application on BOLOS [Proposal]

avatar of @techcoderx
25
@techcoderx
·
0 views
·
3 min read

Introduction

Hardware wallets are one of the most well-known ways to securely store your crypto assets, where transactions are signed securely on the device, and the private keys never leaves the device which is never connected to the internet. As there are many reported cases where people lost their coins for various reasons (malware, exchange hacks etc.), people in the crypto world have been promoting the use of such wallets to securely store crypto assets.

I was researching on a Steem supported hardware wallet, and discovered that there are no hardware wallets that officially supports STEEM. There was an attempt to add support for STEEM on Trezor 3 years ago, however it never got officially supported (and it will probably never unless STEEM becomes a top 30 coin, as outlined in their listing policies here).

I have found that Ledger hardware wallets are the most developer and open source friendly, therefore I bought a Nano S (here), with the main purpose of developing a Steem hardware wallet app on BOLOS, the operating system used by Ledger hardware wallets.

Proposal funding details

Funding period: 1 October 2019 to 31 December 2019 (91 days) Funding requested: 50 SBD daily (totaling 4,550 SBD)

Funding allocation

70% of the received funding (3,185 SBD maximum) will be used to fund the development of the hardware wallet application itself, which may include:

  • Cost of purchasing test devices (I may need a Nano X for further testing as I do not currently own one)
  • Rewarding code contributions to the project (as @utopian-io vanished from Steem, therefore SPS funding is now an alternative source of dev funding)
  • Hundreds of hours spent on writing code, debugging etc.

30% of the received funding (1,365 SBD maximum) will be used to incentivize community contributions (other than code contributions), such as:

  • Bug bounties
  • Reviewers

More details about the bounty rewards will be announced as development progresses.

Resulting benefits for Steem ecosystem

Support of Steem on hardware wallets will improve the user friendliness of the Steem blockchain, as there is no need to manage 4 separate private keys (plus a master password). It results in an easier onboarding of new users onto the Steem ecosystem.

In addition, having the ability to store STEEM and Steem based tokens in a hardware wallet could result in a reduction of the number of STEEM stored on exchanges.

Deliverables

As outlined in the application listing requirements in Ledger's developer documentation:

  • Main BOLOS application written in the C programming language, with its open source repository
  • Companion desktop app (I will also integrate hardware wallet signing on Steem Keychain, and possibly SteemConnect and other Steem applications)
  • Tutorial on using the application (according to Ledger team, it must be a video demonstration, therefore it will be posted on DTube)

In addition, I will be producing the following:

  • JavaScript API library for easy integration on Steem applications
  • Documentation on app integration
  • Web based, offline private key derivation tool for account recovery
  • Offline address index finder to recover forgotten address index of public key

The application will support storage of native STEEM and SBD tokens, as well as Steem Engine tokens and SMTs (if it will ever be released). The first release will not have support for DTC tokens to speed up the development and app approval process.

Current progress

Some work have been completed as a proof of technical viability of the application development, which may be found in the GitHub repository here. Currently the BOLOS app is able to generate Steem public keys from a BIP44 derivation path, which is m/44'/135'/0'/0/address_index_requested, as shown in the GIF below.

For some reason the GIF does not animate on steemit.com. Click here for the direct link to animation on IPFS.

EDIT: I just noticed that right after 3 days from the initial commit to the GitHub repository, 5 people have already found this project. That's 10 days before the first project announcement post (aka this one).

Huge shoutouts to @heimindanger, @mkt, @ausbitbank, @followbtcnews, and @roadscape for showing your early interest in this project!

Programming experience

This is the first time I'm writing a real world application in C programming language, however I have built tools for Steem blockchain DApps (DTube in particular), mainly in JavaScript.

These are the following tools I developed (hyperlinked to the latest update of the respective projects):

I have also contributed to the main DTube source code, as outlined here.

Final words

If you are with me who is also looking to store STEEM and Steem related tokens on a hardware wallet, or find that this project adds value to the Steem ecosystem, please consider voting for this proposal by clicking the button below.