BlockchainCommons / Community

Discussions & shared documents for stakeholders in Blockchain Commons
Other
68 stars 10 forks source link

2020 Summer Internship Project: Upgrade LetheKit #4

Closed ChristopherA closed 3 years ago

ChristopherA commented 4 years ago

On Fri, Jun 5, 2020 at 7:06 AM @ ksedgwic wrote:

I think we've outlined 4 different project areas:

  • bc-lethekit - export XPUB as QR

I think the addition of export XPUB as QR on bc-lethekit looks pretty straightforward:

  • An initial version likely doesn't need animated QRs etc because simple XPUB should fit in single QR.
  • I think the most challenging  part of the project is the "editor" where the user specifies the desire HD path (eg: m/84'/0'/0')

I think the first priority should be:

Chris - are we missing any?  Which would you like to see?

I'd like to see along the way to XPUB that seeds can be export as QR encoded UR format as well, for the purpose of reference implementation as some wallet vendors would like to interchange/backup seeds, not that LetheKit's user model needs it (LetheKit's user model is keep master key forever secret).  But adding QR seed export doesn't hurt LetheKit's model.

Though I feel that XPUB is the first priority, the ability to export a Shamir shard  (note that our bc-shamir >= slip-39 as it can support encoding private metadata) as a QR  encoded UR format is my second in priority. This is because this feature DOES fit into LetheKit's user model — you can bring 5 mobile phones or other QR readers into a vault, give each one a different shard, and the master key never leaves the original LetheKit.

I think this XPUB project would be a great 8-12 week internship project, and quite doable, with some extra credit if the seed QR and shard QR export can also be added.

  • bc-lethekit - add camera

Thoughts about the bc-lethekit camera:

Adding a camera to LetheKit (aka v1) is obviously really important longer-term, but I think it could exceed the scope of an good internship project. 

  • Overall size of the lethekit is not critical.  It's important that it fits in a safe-deposit box, briefcase, small shipping box etc.  But it is not a "pocket carry" kind of use case.

For LetheKit the compatibility with small safe deposit box size is my highest priority, plus maybe an optional 9-volt battery adapter so you can bring power in and not charge from USB. I eventually might like to see USB locked just behind the screws in the case.

  • lightning-pos - config API via phone
  • lightning-pos - touch-to-pay invoices

I am quite interested in these as well, but they also feel more long term (Fall?).

First off, adding NFC and any network go beyond the LetheKit model (i.e. it's a LetheKit because it forget the keys), so the compatibility with LetheKit form factor and feature set is less important. Larger transaction sizes and requirements for Lightning metadata are also more important for Lightning Network, so animated QR support may be required, which is still evolving.

I also would like to first see Bitcoin Standup support Lightning (a possible other summer internship project) along with some mobile phone talking to Bitcoin Standup Lightning first (another possible summer internship project). 

All of these additional projects I can see us doing, but I'd like to focus on the initial LetheKit QR ones first as they approachable, doable, and supportable this summer in the internship program.

— Christopher Allen

gorazdko commented 4 years ago

Scoping

I'll take the lead for this project.

Abstract

In LetheKit (samd51/esp32): export extended public keys, seed and shamir shards in different formats.

Status

WIP:

Tasks

---- MILESTONE 1: project established ----

---- MILESTONE 2: the fun part / programming bitcoin ----

--- MILESTONE 3: bonus features and documentation ---

ChristopherA commented 4 years ago

@gorazdko wrote:

I'll take the lead for this project.

Great!

Export extended public keys, seed and shamir shards in different formats.

I presume the target is the current LetheKit? Are you able to build this yourself or do we need to send you one?

weekly deliverables

I would suggest start with 2 or 3 critical milestones, with the last one including a wrap up details, document, and publicize the additions to LetheKit.

read relevant parts of documentation:

@wolfmcnally has been working on defining CBOR targets for the various binary objects that we would then encode in bc-32, then encode as UR and then encode as QR. You should add "watch" to that repository. You should review this as you learn more.

Find corresponding well vetted open source libraries

Hopefully these are the ones that we are also using in seedtool-cli https://github.com/BlockchainCommons/bc-seedtool-cli. This is another repository you should add to your "watch" subscriptions. You should definitely consider help @wolfmcnally build this for more platforms, it is our reference input. He is working now on requirements for key tool-cli.

I also have some small wishlist items when we open up the hood on the LetheKit code. For instance, leveraging the TRNG to add 64 (or 128) bits to the randomness. https://github.com/BlockchainCommons/bc-lethekit/issues/30

-- Christopher Allen

gorazdko commented 4 years ago

I presume the target is the current LetheKit? Are you able to build this yourself or do we need to send you one?

I will build it myself. I have ordered the parts and should come any day now.

I agree with your points and have subscribed to relevant projects.

I also have some small wishlist items...

i have updated my scoping post with status, tasks and milestones

shannona commented 3 years ago

Closing out summer, 2020 Issues. Thanks to @gorazdko for support in LetheKit, keytool, seedtool, and other projects! We recently announced our Feature-Kit LetheKit release.