Metamask-extension: Unable to use derivation paths for connected hardware wallets

Created on 15 Feb 2019  路  13Comments  路  Source: MetaMask/metamask-extension

MetaMask Version 6.0.1

When using a derivation path such as m/44'/60'/0'/0, everything works, but if I choose an account with a derivation path like m/44'/60'/0'/2, transactions fail to send because of insufficient funds. I believe this is because it is signing transactions with the wrong account. I would expect those derivation paths to be supported because they are listed as options when connecting the hardware wallet.

Separately, I am unable to connect more than one hardware account at a time.

We are using Ledgers.

cc @brunobar79

Thanks

L17-hardware N02-needsReproduction

Most helpful comment

Just got another report of this from an Augur user. They are unable to use MetaMask to sign transactions with their ledger. As above, MM appears to be running gas estimation with the wrong derivation path.

This issue is quite frustrating because it renders the ledger unusable from within MetaMask.

All 13 comments

Our wallet at m/44'/60'/0'/0 had no funds, while our wallet at m/44'/60'/0'/2 had 0.25. We got the received insufficient funds JSON error after confirming the transaction on the device.

The RPC error was "insufficient funds for gas * price + value"

I cannot reproduce this issue with the steps provided. Please keep an eye out for more reports.

I just ran into this, can we re-open? Alternatively, what did you do to try to repro that made it work?

My steps were:

  1. Install Brave.
  2. Install MetaMask extension.
  3. Import account via seed phrase + password.
  4. Name my accounts.
  5. Add ledger, choose MEW/MyCrypto for HD Path, first item in the list.
  6. Notice that MetaMask correctly shows me my balance.
  7. Notice that the dapp I'm using correctly shows me my address and balance.
  8. Notice that the dapp correctly sets the from address.
  9. Submit a transaction for signing.
  10. Receive transaction prompt in MetaMask.
  11. Notice that While MetaMask shows the correct named account in the top, it shows as having 0 ETH (incorrect) in the signing prompt.
  12. Sign the transaction, receive an error message saying that the transaction failed due to not enough gas (same error as OP).

This didn't happen to me the other day, now it happened to me again today. I don't know what makes it happen vs not, but at the moment I have no way to sign a transaction with my ledger as I cannot get it to prompt me with the correct address.

Note: The correct address is presented in the signing UI, but that is not the address that is being signed with. Everything _except_ the address used for signing is correct.

Just got another report of this from an Augur user. They are unable to use MetaMask to sign transactions with their ledger. As above, MM appears to be running gas estimation with the wrong derivation path.

This issue is quite frustrating because it renders the ledger unusable from within MetaMask.

@MicahZoltu I don't think it's related to the gas estimation since we use the public key already imported (and visible in the UI for that).

I believe there's something else going on since with the steps described no one would be able to sign a TX with ledger using the first account of the Legacy HD path and I've verified that's not the case.
I believe I followed a very similar path here and signed a tx proposed by a dapp which worked correctly: http://recordit.co/UNeBMHi6F8

The transaction failed due to not enough gas would be also happening if you're signing a tx with an account that has no balance, which it's likely to happen if there's a bug with the HD path / index of the selected account.

A couple of questions:

  • Can you reproduce the issue while sending a transaction from the MM UI (instead of a dApp) ?
  • Can you tell us which network are you using?

It would be even better if you can share the dApp where you're able to reproduce this issue.

It may be hard to reproduce because current versions of Chrome do not work with Ledger: https://support.ledger.com/hc/en-us/articles/360018810413-U2F-timeout-in-Chrome-browser

We have also seen the issue with Brave.

We were on mainnet.

@wjmelements if you upgrade the firmware to 1.5.5 and the ETH app to 1.2.4 via the ledger live app it should work.

Unfortunately, today is a "cannot reproduce" day. 馃槩 Some days I am able to reproduce this 100% of the time (meaning my ledger is useless from MetaMask) and some days I cannot reproduce it at all. I have no idea what triggers whether it can be reproduced.

I vaguely remember that on reproducing days I have the same problem sending ETH via MetaMask UI, it isn't a problem specific to using dapps. Trying to sign _anything_ with the Ledger would have this problem where it was trying to sign with the wrong derivation path.

It may be worth noting, my Ledger has pretty old firmware on it.
Brave: Version 0.62.50 Chromium: 73.0.3683.86 (Official Build) (64-bit)

@MicahZoltu That鈥檚 unfortunate...
I encourage you to upgrade your ledger firmware and ETH app and keep us posted.

Wouldn鈥檛 be surprised if that鈥檚 related.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bdresser picture bdresser  路  3Comments

whyrusleeping picture whyrusleeping  路  3Comments

MarkOSullivan94 picture MarkOSullivan94  路  3Comments

danfinlay picture danfinlay  路  3Comments

kumavis picture kumavis  路  3Comments