Bitshares-core: Ledger Nano S Hardware Wallet Support

Created on 26 Sep 2018  Â·  22Comments  Â·  Source: bitshares/bitshares-core

User Story
As a Ledger Nano S user I want an implementation to support BitShares accounts so that I may safely store my private keys, sign transactions and submit them to the network.

Additional Context

  • [ ] #1339 Hardware Wallet Support (General)
  • [ ] [EOS Implementation](https://github.com/LedgerHQ/ledger-app-eos)
  • [ ] [Fairy Wallet Implementation](https://github.com/tarassh/fairy-wallet)
  • [ ] DasCoin Validator (white lable) Implementation [Cite]

CORE TEAM TASK LIST

  • [x] Evaluate / Prioritize Feature Request
  • [x] Refine User Stories / Requirements
  • [ ] Define Test Cases
  • [ ] Design / Develop Solution

    • [x] Initial Research:

    • [x] Assigned: @christophersanborn @MarcialVieira

    • [x] Estimated: 10 & 6 hours

    • [x] Remittance: Weeks 46-47

    • [ ] Phase I: Implementation of Nano app and basic developer utilities

    • [ ] Device side: Nano app



      • [x] Assigned: @christophersanborn


      • [x] Estimated: between 40 and 80 hours for this component


      • [x] Remittance: 10 hours in Weeks 48-49


      • [x] Remittance: 15 hours in Weeks 50-51


      • [x] Remittance: 36.5 hours in Weeks 1-5


      • [ ] Remittance: ?? hours in Weeks 6


      • [ ] Remittance: ?? hours in Weeks 7-8



    • [ ] Host side: Nano App



      • [x] Assigned: @marcialvieira


      • [x] Estimated: between 40 and 60 hours for this component


      • [x] Remittance: 24 hours in Weeks 1-5


      • [ ] Remittance: ?? hours in Weeks 6


      • [ ] Remittance: ?? hours in Weeks 7-8



    • [ ] Phase II: User interface



      • [ ] Primary Goal: A connector for Beet support.


      • [ ] Primary Goal: A standalone GUI app for the Ledger app store providing basic wallet functionality


      • [ ] Secondary: Integration into cli_wallet


      • [ ] Secondary: Documentation and initial interface code for bitshares-ui team to use



  • [ ] Perform QA/Testing
  • [ ] Update Documentation
1b User Story 2a Discussion Needed 3a Request 6 Security 6 UX

Most helpful comment

@marcialvieira and I would like to take a crack at this one. @ryanRfox

fuck yeah!

It shouldn't be TOO hard if you use the EOS one as a starting point...I would've tried it myself but i'm not a C/C++ coder.

All 22 comments

@marcialvieira and I would like to take a crack at this one. @ryanRfox

@marcialvieira and I would like to take a crack at this one. @ryanRfox

fuck yeah!

It shouldn't be TOO hard if you use the EOS one as a starting point...I would've tried it myself but i'm not a C/C++ coder.

It shouldn't be TOO hard if you use the EOS one as a starting point...I would've tried it myself but i'm not a C/C++ coder.

Nice! I actually didn't realize there was progress already being made on the EOS front. Yes, that should definitely help ensure smooth sailing!

Adding a task for myself:

  • [ ] Do ten hours of immersive background research on the Ledger Nano S libraries and developer docs, to include, if possible compiling and loading the device components of one or both of the two wallets linked above, in order to identify which problems remain to be solved to get a BitShares app running.

@christophersanborn I think that is reasonable.

Declaring the first task, "Do ten hours of immersive research" to be complete. Specific products of this research are:

  • Various discussions and information posted to the Telegram group dedicated to the developers on this task.
  • Transcripts of successful interaction between host and Nano S using ledger-app-eos as an example.
  • Familiarity with codebase in ledger-app-eos, (a logical starting point for the Bitshares Ledger app).
  • Forked repository in christophersanborn/ledger-app-bitshares (forked from ledger-app-eos)
  • Five initial issues in that repository to guide initial development efforts of ledger-app-bitshares.

Tagging: @ryanRfox

Overall Roadmap:

Goal is to have both a Nano S app that runs on the device, allowing any wallet developer to add support, and, at minimum, a simple GUI App to submit to the Ledger App Store to facilitate safe storage and transfer of assets. (I.e. basic "wallet" functionality). Beyond that, we may also work on adding support to the cli_wallet and/or providing the bitshares-ui team with the resources that they would need to add support to the reference GUI wallet.

  • [ ] Phase I: Implementation of Nano app and basic developer utilities

    • [ ] Device side: Nano app — @christophersanborn

      _Estimating between 40 and 80 hours for this component_

    • [ ] Host side: Python scripts — @marcialvieira

  • [ ] Phase II: User interface

    • [ ] Primary Goal: A connector for Beet support.

    • This should be a simple matter of adding an AppBitShares.js module as suggested by ledgerjs

    • [ ] Primary Goal: A standalone GUI app for the Ledger app store providing basic wallet functionality

    • _(I'm assuming this is needed to get ledger-app-bitshares accepted into the Ledger app store... but it might not be. They might accept the Nano app without a corresponding GUI, in which case this goal may be of lower priority than Beet support.)_

    • [ ] Secondary: Integration into cli_wallet

    • Write a C++ connector module

    • [ ] Secondary: Documentation and maybe some initial interface code to allow bitshares-ui team to integrate into Bitshares GUI

    • _(The AppBitShares.js module mentioned for Beet support might be all that's needed for this.)_

For the time being, work is being done in christophersanborn/ledger-app-bitshares, and detailed task management in christophersanborn/ledger-app-bitshares/issues.

Overall Roadmap:

Goal is to have both a Nano S app that runs on the device, allowing any wallet developer to add support, and, at minimum, a simple GUI App to submit to the Ledger App Store to facilitate safe storage and transfer of assets. (I.e. basic "wallet" functionality). Beyond that, we may also work on adding support to the cli_wallet and/or providing the bitshares-ui team with the resources that they would need to add support to the reference GUI wallet.

  • [ ] Phase I: Implementation of Nano app and basic developer utilities

    • [ ] Device side: Nano app — @christophersanborn
    • [ ] Host side: Python scripts — @marcialvieira
  • [ ] Phase II: User interface

    • [ ] Primary Goal: A standalone GUI app for the Ledger app store providing basic wallet functionality
    • [ ] Secondary: Integration into cli_wallet
    • [ ] Secondary: Documentation and maybe some initial interface code to allow bitshares-ui team to integrate into Bitshares GUI

For the time being, work is being done in christophersanborn/ledger-app-bitshares, and detailed task management in christophersanborn/ledger-app-bitshares/issues.

as far as GUI app is concerned, I plan to be adding support for it to Beet once you have the device side working using https://github.com/LedgerHQ/ledgerjs

Yes, you are cordially invited to use Beet as your standalone GUI app Christopher

Nice! @clockworkgr and @sschiessl-bcp; I love the idea of Beet support, and this looks very easy to achieve and opens up so many possibilities. I've added it to the roadmap above.

Nice. To be honest, if you finish the on-device work I should be able to handle the JS side myself. ofcourse, any help would be greatly appreciated :)

  • [ ] Host side: Python scripts — @marcialvieira

Estimating between 10 and 20 hours for this component, but may be less because of the similarities.

Thanks @christophersanborn and @marcialvieira for your estimates and roadmap. I'v updated the Core Team Task List to reflect them. Please continue with your design and development efforts.

  • [ ] Device side: Nano app — @christophersanborn

Estimating between 40 and 80 hours for this component. This is based on the complexity and general inscrutability of code written for BOLOS devices. It also accounts for things like constructing test data packets to use during the dev process and other supporting tasks.

As user of Nano Ledger, would love to see BTS supported on it. Keep up the great work and ideas!

Logging 10 hours complete towards target "Device Side: Nano app" within the Week 48–49 period.

Would love to see this come to Trezor also, given it is open hardware aswell as open software.

Logging 15 hours toward target "Device Side: Nano app" within the Week 50–51 time period. (Bringing total thus far toward the target to 25 hours.) Tagging: @ryanRfox

Thanks @christophersanborn for the update.

Logging 30 hours toward target "Device Side: Nano app" in the time period from 1/1/2019 to 1/27/2019. This covers 21 commits by me from b41063b up through e9f572c.

This brings total thus far toward the target to 55 hours.

Tagging: @ryanRfox

Logging 24 hours toward target "Host Side: Nano app" in the time period from 1/18/2019 to 2/4/2019. This covers 8 commits by me from d4e2ece up through 5cfbf3b.

Estimating between 40 and 60 hours for this component, including the 24 hours already done, depending on the need of operations, I'm expecting that the complexity decreases a lot by similarities between operations, already implemented operations: transfer, limit_order_create, limit_order_cancel and account_update.

Tagging: @ryanRfox

I'm adding this to our Feature Release project board for visual reference. This does not have any impact on the release nor is it held the schedule. It's just may way to show the Community "we are working on it".

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bitcoiners picture bitcoiners  Â·  7Comments

wmbutler picture wmbutler  Â·  8Comments

abitmore picture abitmore  Â·  4Comments

vikramrajkumar picture vikramrajkumar  Â·  7Comments

M-Zeeshan-Haider picture M-Zeeshan-Haider  Â·  7Comments