Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add KeepKey hardware wallet support #889

Open
danfinlay opened this issue Nov 23, 2016 · 48 comments
Open

Add KeepKey hardware wallet support #889

danfinlay opened this issue Nov 23, 2016 · 48 comments

Comments

@danfinlay
Copy link
Contributor

A new contender in the ethereum hardware wallet space:

http://ethnews.com/keepkey-hard-wallet-supports-ethereum

Blocked by #328

@danfinlay danfinlay added this to the Public Release milestone Nov 23, 2016
@SCBuergel
Copy link

#328 is closed and references https://github.com/MetaMask/metamask-plugin/milestone/14 which is also closed. Does that mean this issue is basically ready to progress?

@danfinlay
Copy link
Contributor Author

This is now blocked by UI work that we're doing, for how we're going to fit extra account types into MetaMask.

@danfinlay danfinlay removed this from the New UI Public Release milestone Mar 2, 2018
@keepkeyjon
Copy link

Is this still blocked?

We've published https://github.com/keepkey/keepkey.js, which should make it reasonably straightforward. I'm also happy to provide a couple of development devices to help with integration / testing, if you're interested.

@danfinlay
Copy link
Contributor Author

Feel free to email me dan [at] metamask.io to continue the discussion. Some development devices would help, but you could also make some headway by following the lead of some of our other hardware wallet integrations.

https://github.com/MetaMask/metamask-extension/pulls?q=is%3Apr+Trezor+is%3Aclosed
https://github.com/MetaMask/metamask-extension/pulls?utf8=%E2%9C%93&q=is%3Apr+Ledger+is%3Aclosed+

Right now this is a bit lower priority than our mobile client, so it might be another quarter or two before we have the bandwidth to fully pursue this, but you could help us line up the effort.

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 0.3 ETH (62.2 USD @ $207.33/ETH) attached to it.

@frankchen07
Copy link

@Abrahamh08 - frank from gitcoin here - any progress on this task, or should we release it to the general public?

@keepkeyjon
Copy link

"Fun" thing I learned over the weekend: it turns out that the chrome.hid and chrome.usb APIs are only available to Chrome Apps, but not Chrome Extensions. That means you can't talk to a KeepKey from the background page in Metamask, since you need access to window.navigator.usb to make it work.

@keepkeyjon
Copy link

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 4 months, 2 weeks from now.
Please review their action plans below:

1) deepsi43 has started work.

Hi,
I am interested in working on this project .

Learn more on the Gitcoin Issue Details page.

@deepsi43
Copy link

Is this issue still open ??

@danfinlay danfinlay removed the blocked label Jun 25, 2019
@danfinlay
Copy link
Contributor Author

It appears so!

@deepsi43
Copy link

I have been looking at the trezor integration but couldnt find any trace of keepkey modules added !!
Did check with the keepkey installation process and modules.

@keepkeyjon
Copy link

Any KeepKey integration with Metamask will be a wildly different beast than the Trezor integration, since we don't integrate with TrezorConnect. Don't expect it to be a simple copy-paste level of effort.

@Abrahamh08
Copy link

Abrahamh08 commented Jun 28, 2019

@FrankChen Sorry I didn't see you mention me earlier, but no I decided way too late that I didn't have time to work on it, sorry to put a hold on it

@roncoejr
Copy link

Good to see that there is an open feature request on this one. Understand that the mobile client is taking priority. Looking forward to seeing Keepkey support in MetaMask sometime in September.

All the best to the team.

@step21
Copy link

step21 commented Aug 21, 2019

It appears this is still blocked by chrome not allowing use of usb by extensions, right?

@keepkeyjon
Copy link

I believe extensions have access to window.navigator.usb, but not chrome.usb, which means device communication has to happen from the popup, and not the background page.

@revonoc
Copy link

revonoc commented Nov 2, 2019

Any updates? Would love this integration but sadly don’t have the skills to help out

@frankchen07
Copy link

@deepsi43, frank from gitcoin here, it looks like you've started work. Do you have updated results? if not, I'll release this bounty back to the public.

@deepsi43
Copy link

deepsi43 commented Nov 3, 2019

Will get the update by the today evening@Frank

@revonoc
Copy link

revonoc commented Nov 6, 2019

Good to hear this is still being worked on!

@revonoc
Copy link

revonoc commented Nov 9, 2019

Bumping this again to see if it's still open - would love the Keepkey support for sure, but not sure how hard it is to integrate!

@danfinlay
Copy link
Contributor Author

danfinlay commented Nov 10, 2019

I have a feeling if you wrote a module like eth-trezor-keyring for KeepKey, you could model it into a plugin for MetaMask using our newly released plugin branch beta.

You'd need to use this branch until it's merged (to add custom account type), but this could be the model for future hardware wallet integrations on MetaMask to be more easily contributed.

@deepsi43
Copy link

deepsi43 commented Nov 13, 2019 via email

@keepkeyjon
Copy link

FYI, we've replaced keepkey.js with the more general https://github.com/shapeshift/hdwallet

@deepsi43
Copy link

deepsi43 commented Nov 13, 2019 via email

@keepkeyjon
Copy link

keepkey.js is a dead project. I wouldn't recommend building new things on it.

@keepkeyjon
Copy link

I highly recommend building this on top of @shapeshiftoss/hdwallet-keepkey-webusb and the other related packages.

@revonoc
Copy link

revonoc commented Nov 16, 2019

@deepsi43 so glad you're working on it! Thanks man

@deepsi43
Copy link

deepsi43 commented Dec 7, 2019 via email

@keepkeyjon
Copy link

You'll need some small MetaMask UI tweaks, since PIN/Passphrase on Trezor are handled through TrezorConnect UI, which is not provided by @shapeshiftoss/hdwallet-keepkey nor keepkey.js.

@walidmujahid
Copy link

walidmujahid commented Dec 12, 2019

If webusb is the way to go, would it be more worthwhile to re-implement things using packages from shapeshift/hdwallet?

@keepkeyjon
Copy link

@walidmujahid yes

@walidmujahid
Copy link

I thought so. I am not very comfortable with the quick dev solution of making a "fake" keyring and hardcoding the pin.

Perhaps more discussion can illuminate on different but still actionable solution paths.

I think it is worth discussing whether avoiding design changes would be counterproductive in both the short term and long term, or just the long term.

It might be worth discussing whether shifting to building on shapeshift/hadwallet packages could lead to value that could be added to design discussions at #731 and help in part in achieving the idea of multiple keychains.

@keepkeyjon
Copy link

Using @shapeshiftoss/hdwallet-keepkey{-webusb} for this is absolutely the correct decision... there is no better library for communicating with a keepkey. However, moving metamask's ledger or trezor support over to hdwallet-{ledger,trezor} is probably not the way to go through, since metamask already has support for those, and that would tightly couple metamask to the design decisions we made in hdwallet, which is probably not helpful for this project.

This cannot be do as side-projects based on $50 bounties

Yeah, not sure what Virgil was aiming for there. It's pretty clear to me that this is not a quick/easy project, which is why I haven't taken it on as a hobby-thing over some weekend.

@walidmujahid
Copy link

walidmujahid commented Dec 13, 2019

I assume that the @shapeshiftoss/hdwallet-keepkey-webusb has the potential to build cross browser support unlike the hdwallet-keepkey-chromeusb package.

I personally am convinced by @keepkeyjon about going with using shapeshift hadwallet-keepkey-{*} packages. That and I had read through all their code, so I feel a bit biased towards them.

Regarding design needs, I assume the main and perhaps only thing would be in regards to handling the pin matrix. So, on UI/UX side, perhaps something similar to how shapeshift.com handles it?

shapeshift-pin

Something for the design team?

@keepkeyjon
Copy link

hdwallet-keepkey-chromeusb is meant for use in a chrome app. hdwallet-keepkey-webusb is meant for browsers (requires webusb support, which currently only exists in chrome/brave).

@keepkeyjon
Copy link

perhaps only thing would be in regards to handling the pin matrix

Also bip39 passphrases, the input of which gets triggered by a similar event.

@walidmujahid
Copy link

walidmujahid commented Dec 13, 2019 via email

@keepkeyjon
Copy link

off-topic meta-discussion

Enough talk, me out here

I delete my messages usually myself after a weak, sometimes faster. Different reasons, here it is mainly that it hurts my brain to discuss stuff which is "obvious grade" for me.

Github leaves no trace if the original author deletes messages (only if the repo-owner deletes them).

So, I deleted my messages myself, so there is no need for you to reproduce them.

( And now I really really out )

@lazaridiscom IMO that revisionist attitude is detrimental to open source projects such as this one. It may be "obvious grade" to you, but not to others... and deleting messages hurts those who come to look at these threads after the fact.

@walidmujahid
Copy link

walidmujahid commented Dec 18, 2019 via email

@keepkeyjon
Copy link

Was there a method in mind when the idea was proposed as to how to provide
that mock-functionality when comes to the Keepkey pin/passphrase?

Mocking passphrase input is possible, but doing so for the PIN is not (because of the cipher pad).

I don't think it makes sense to cut corners the way lazaridiscom was suggesting, though you could use the command-line tools for KeepKey [1] to turn off the PIN for testing.

Another question, perhaps for @keepkeyjon:
Would I be correct to assume that hdwallet packages could be used within an
implementation of MM's Keyring interface and still use hdwallet's webusb
functionality? Or does MM have to use the hdwallet's keyring in order to
use @shapeshiftoss/hdwallet-keepkey-webusb?

You'll need to use both. To make MM happy, it needs a package that exposes the same interface as eth-trezor-keyring, and that should be implemented on top of hdwallet-keepkey-webbusb + hdwallet-core + hdwallet-keepkey through hdwallet's keyring.

In hdwallet, the keyring is a global singleton for managing all connected wallets (that hdwallet knows about). If you do not register other transports with it, it won't pay attention to the other kinds of devices that hdwallet supports... which is great for this use case, since in MM we don't want hdwallet's keyring to try to manage Trezors/Ledgers, but we do want that where we use it in the ShapeShift platform.

Would MM would have to make our own version of hdwallet-keepkey-webusb and any relevant packages?

No, don't duplicate the functionality of that... just import it and use it.... that's what it's there for.

1: www.github.com/solipsis/go-keepkey, www.github.com/keepkey/python-keepkey

@walidmujahid
Copy link

walidmujahid commented Dec 18, 2019 via email

@greatwolf
Copy link

What's the current situation of this request? I would have though KeepKey integration should have happened by now. What are the roadblocks that's stopping this from happening?

@deepsi43
Copy link

deepsi43 commented Mar 15, 2021

There`s some one else who came up on working on it .Hence did not check on anything further.
I guess the keyring controller and shapeshift methods are used in order to get the integration done!

@BitHighlander
Copy link

id like to bump* this. https://github.com/shapeshift/hdwallet should have everything needed to get this done. i'm looking into organizing a sizable bounty for this getting into a release.

@raj-shekhar1
Copy link

Is this still worked on ?

@BitHighlander
Copy link

yes, We have identified a limitation with webusb in bex's in general. working on the best way to get around this and landed on a bridge application. After this proposed bridge application is released and popular/tested you can expect a large gitcoin bounty to be posted for this integration work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

16 participants