A lot of great use-cases for this came to my mind and inspired me to do the integration:
- alternative to ether.cards where you do not need scratch off something to enter mnemonic words on your phone - just tap (and even have a hardware wallet for further use afterwards instead of plastic trash which even has a private key printed on it that you might want to keep secret) - these can then also be sold in shops with ether or (e.g. DAI) tokens preloaded and provide great UX for onboarding humans. In volume these cards get dirt cheap and we might get huge amounts of hardware wallets to use for other use cases ..
- alternative to using WallETH with a TREZOR (e.g. when traveling with a TREZOR you migh get asked questions at borders.) A card could slip through more easily and cause less trouble. Also it is much smaller/lighter/cheaper. That said the TREZOR still has the advantage of the display - but as an option for different use-cases it is great to have
- you can do really cool things in the future with it - e.g. when paying with your status-im hardware wallet to rent a room - you could then potentially use this very card to open the room (needs linking from a PIN protected path to a pin-less path) - you might also be able to use this library for the door opening IoT part by using it on an Android things device
- nicely transfer keys from phone to phone
- convince iOS users to switch to Android (as these cards do not work on iOS)
- great option for key-backups (writing down mnemonics which is the most commonly done thing currently for backups has the drawback that it often exposes the key) This way you can just buy a card and even give it to someone untrusted to keep for you.
What it does
It is a library and a demo app that allows you to interface with the status.im hardware wallet.
How I built it
first extracted the demo app that was presented at the workshop to a library: https://github.com/status-im/hardwallet-lite-android/pull/1
than build a more high level Kotlin library on top: https://github.com/walleth/khardwarewallet
made the first transaction with the demo app for this library https://peepeth.com/ligi/peeps/QmavQqt4CtE5xtu8G9yBRnsXzo3KSWisFGKdTG145WMWrT
struggled with making excursions off from the happy path. E.g. using "install secure" to do PIN (apart from 000000) support: https://github.com/status-im/smartcard-cap-installer-test/pull/5
Challenges I ran into
Lots of them - but no deal-breaker so far. Also as the team of the hardware-wallet was at the event: most challenges where easy to overcome with their help as I could just ask to fill my knowledge gaps.
Accomplishments that I'm proud of
E.g. that I was able to make a transaction signed by the card triggered by my phone.
What I learned
The status-im hardware wallet is great and integration in WallETH is feasible.
What's next for KHardwareWallet
PIN support, Saving the pairings, release a WallETH version where this lib is used, provisioning of cards, ..