bitshares / bitshares-core

BitShares Blockchain node and command-line wallet
https://bitshares.github.io/
Other
1.17k stars 647 forks source link

Ledger Nano S Hardware Wallet Support #1340

Open ryanRfox opened 6 years ago

ryanRfox commented 6 years ago

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

CORE TEAM TASK LIST

christophersanborn commented 5 years ago

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

clockworkgr commented 5 years ago

@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.

christophersanborn commented 5 years ago

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!

christophersanborn commented 5 years ago

Adding a task for myself:

oxarbitrage commented 5 years ago

@christophersanborn I think that is reasonable.

christophersanborn commented 5 years ago

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

Tagging: @ryanRfox

christophersanborn commented 5 years ago

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.

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

clockworkgr commented 5 years ago

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

sschiessl-bcp commented 5 years ago

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

christophersanborn commented 5 years ago

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.

clockworkgr commented 5 years ago

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 :)

marcialvieira commented 5 years ago
  • [ ] Host side: Python scripts — @marcialvieira

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

ryanRfox commented 5 years ago

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.

christophersanborn commented 5 years ago
  • [ ] 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.

dls-cipher commented 5 years ago

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

christophersanborn commented 5 years ago

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

cloud-8 commented 5 years ago

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

christophersanborn commented 5 years ago

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

ryanRfox commented 5 years ago

Thanks @christophersanborn for the update.

christophersanborn commented 5 years ago

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

marcialvieira commented 5 years ago

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

ryanRfox commented 5 years ago

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".