MetaMask / metamask-extension

:globe_with_meridians: :electric_plug: The MetaMask browser extension enables browsing Ethereum blockchain enabled websites
https://metamask.io
Other
11.94k stars 4.88k forks source link

Support multiple hardware wallets connected at once #6649

Open MicahZoltu opened 5 years ago

MicahZoltu commented 5 years ago

What problem are you trying to solve? I have multiple hardware wallets, and use multiple derivation paths within each hardware wallet. I want to be able to connect each of the hardware wallets/derivation paths to MetaMask and label them appropriately, without them getting deleted.

Describe the solution you'd like When I connect a new hardware wallet, the previous one doesn't get deleted.

Additional context Beyond just being able to sign with multiple hardware wallets without having to go through the connect process each time, retaining them with labels means I can transfer assets between them using the MetaMask UI without having to write down the address of each and manually verify. I can just choose destination from my list of wallets.

danfinlay commented 5 years ago

These features would be added via changes to our Trezor Keyring and Ledger Keyring, which both implement our Keyring Protocol.

danfinlay commented 5 years ago

The full feature request also requires design for how to represent "groups" of accounts.

pstehlik commented 5 years ago

One part of the feature could be implemented quite simply by persisting the label of the wallet. That would already help a lot. Right now, whenever I re-connect a ledger, the name shows up as Ledger 4 or Ledger 2 - which is super unhelpful... It would be great if it simply would retain the association of name -> address as a start. Additionally, it would be also helpful to have the option to still have the addresses/accounts in the Metamask list of accounts. That would allow visiting pages that only view information based on the "connected" web3 account. Rith now I have to connect the hardware wallet even if I just want to view some information, e.g. data in Compound. If the account would stay in the Metamask list and would provide the correct address to the page then it would solve a lot of extra work and hassle.

gitcoinbot commented 4 years ago

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


This issue now has a funding of 20.0 DAI (20.0 USD @ $1.0/DAI) attached to it.

gitcoinbot commented 4 years ago

💰 A crowdfund contribution worth 10.00000 DAI (10.0 USD @ $1.0/DAI) has been attached to this funded issue from @coinyon.💰

Want to chip in also? Add your own contribution here.

edsonayllon commented 4 years ago

I would like to try this, doesn't seem difficult. However, I do not have a hardware wallet. Is there a way to test simulating a hardware wallet your team is aware of? Otherwise, I wouldn't be able to verify any progress.

derekgeisler commented 4 years ago

What problem are you trying to solve? I have multiple hardware wallets, and use multiple derivation paths within each hardware wallet. I want to be able to connect each of the hardware wallets/derivation paths to MetaMask and label them appropriately, without them getting deleted.

Describe the solution you'd like When I connect a new hardware wallet, the previous one doesn't get deleted.

Additional context Beyond just being able to sign with multiple hardware wallets without having to go through the connect process each time, retaining them with labels means I can transfer assets between them using the MetaMask UI without having to write down the address of each and manually verify. I can just choose destination from my list of wallets.

If you import your hardware wallet key to Coinomi application it will force segwit it and I think it will put them on same derivation path and then you may be able to use all of the wallets.

gitcoinbot commented 4 years ago

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


The funding of this issue was increased to 21.0 DAI (21.0 USD @ $1.0/DAI) (plus a crowdfund of 10.0 DAI worth 10.0 USD).

gitcoinbot commented 4 years ago

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


The funding of this issue was increased to 26.0 DAI (26.0 USD @ $1.0/DAI) (plus a crowdfund of 10.0 DAI worth 10.0 USD).

gitcoinbot commented 4 years ago

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


The funding of this issue was increased to 30.0 DAI (30.0 USD @ $1.0/DAI) (plus a crowdfund of 10.0 DAI worth 10.0 USD).

gitcoinbot commented 4 years ago

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


Work has been started.

These users each claimed they can complete the work by 1 year, 6 months ago. Please review their action plans below:

1) furydoge has started work.

You need to make a custom build of MetaMask adjusting the eth-hd-keyring value to support multiple Hardware Wallet Derivations https://github.com/MetaMask/eth-hd-keyring/blob/master/index.js#L8 It's relatively easy to do the README file provides the syntax required and then you can build from source after modifying the keyring values 2) esjhay1993 has started work.

Be more

  1. Cooperative
  2. Productive 3) zech564 has started work.

Research multiple wallets and try to configure them all together. Multiple assets on the same network. Also, provide needed feedback 4) mhowerton91 has started work.

Ghhhhhhhhhhhhhdddfthjjjjjkkkkkkjjbbbkkjhh 5) ebubekirsan has started work.

Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir 6) bpetermore23 has started work.

the steps required to make it possible to get funds to my wallet 7) myphuong776 has started work.

okkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 8) yakychan009 has started work.

graci<aas x ayudarme lkjjnjjbnjjm, 9) hasanrasoli1076025 has started work.

من برای هرکاری هر کجا همیشه برای همه با یک هدف در زنگی همیشه همراه شمتا را دا راه زندگی خواهم کرد برای تو چرا 10) kampoz18 has started work.

Support for internet explorer and products in the future 11) alphasonic2020 has started work.

bounty is a multi-worker cooperative bounty. Other bounty hunters may be working in parallel with me, but the funder has indicated they will pay the bounty to multiple of us.

Learn more on the Gitcoin Issue Details page.

sudoaptgetdoge commented 4 years ago

You need to make a custom build of MetaMask adjusting the eth-hd-keyring value to support multiple Hardware Wallet Derivations https://github.com/MetaMask/eth-hd-keyring/blob/master/index.js#L8 It's relatively easy to do the README file provides the syntax required and then you can build from source after modifying the keyring values in terms of how you name them in MetaMask that should be easy enough to do by just modifying the Wallet's Nickname as needed I doubt the name would change unless the wallet is using a single BIP32 Phrase for every wallet and if they are multiple different Hardware Wallets they would have completely seperated BIP32 Phrases

gitcoinbot commented 4 years ago

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


Work for 50.0 DAI (50.0 USD @ $1.0/DAI) has been submitted by:

  1. @furydoge
  2. @conghieucntt
  3. @conghieucntt

@bakkdoor please take a look at the submitted work:


sudoaptgetdoge commented 4 years ago

Also if you are unaware of how to build the MetaMask Extension here's the guide

Building locally Install Node.js version 10 If you are using nvm (recommended) running nvm use will automatically choose the right node version for you. Install Yarn Install dependencies: yarn Build the project to the ./dist/ folder with yarn dist. Optionally, to start a development build (e.g. with logging and file watching) run yarn start instead. To start the React DevTools and Redux DevTools Extension alongside the app, use yarn start:dev. React DevTools will open in a separate window; no browser extension is required Redux DevTools will need to be installed as a browser extension. Open the Redux Remote Devtools to access Redux state logs. This can be done by either right clicking within the web browser to bring up the context menu, expanding the Redux DevTools panel and clicking Open Remote DevTools OR clicking the Redux DevTools extension icon and clicking Open Remote DevTools. You will also need to check the "Use custom (local) server" checkbox in the Remote DevTools Settings, using the default server configuration (host localhost, port 8000, secure connection checkbox unchecked) Uncompressed builds can be found in /dist, compressed builds can be found in /builds once they're built.

rishanb commented 4 years ago

Just bumping this as a request - this feature would be awesome.

gitcoinbot commented 4 years ago

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


The funding of this issue was increased to 50.0 DAI (50.0 USD @ $1.0/DAI) (plus a crowdfund of 10.0 DAI worth 10.140501 USD).

marcelo-mason commented 4 years ago

Oof one year wait for such a basic feature. MetaMask needs a competitor with a real dev like Andre Cronje that can test in prod and get shit out.

fer662 commented 4 years ago

Yeah it seems like it's an obvious feature. It already supports multiple non hardware wallets. is there a tricky complication to this? @danfinlay if you can lay out how you'd do it being familiar with the codebase I'll implement it.

guifel commented 3 years ago

My current alternative: Having several web browsers...

coinyon commented 3 years ago

When using Chromium/Brave, you can set up multiple browser profiles. Each can have a metamask installation with a specific account. This is currently my way to go.

dsldsl commented 3 years ago

@marcelo-mason I definitely don't want my metamask software being tested in production.

That said, what's the current status of this? /sparkle

nyeates commented 3 years ago

IMO this is basic plumbing work before adding the hottub and high-flow toilet. We shouldn't complain though, as this sw is free. Thx devs. Genuienly.

I agree that there needs to be competition here. Also, a clear-cut path to sustainable cash-flow for development. Integrating heavily with defi would be legit. Slick access to zero-day defi stuff, new projects, every week, proper tracking of defi and LP resources... I would be ok constantly sending pennies to the wallet team. But in order to do that stuff, you need the basic plumbing.

Ebubekirsan commented 3 years ago

Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir Bekir

dankrad commented 3 years ago

I really hope some work on this is done soon. This is a huge limitation on the current Metamask UX. In practice, every user will have several accounts in their hardware wallets at the very minimum for privacy reasons, and switching between them is currently very unintuitive to say the least and a major hassle.

pedrosimao commented 3 years ago

@dankrad agreed. I don't understand why this feature is not prioritized...

airflow2010 commented 3 years ago

I would like to clarify that this problem even exists when you use only one (1) hardware wallet with multiple addresses (the title is a bit misleading because it says "multiple hardware wallets"). Which is quite a standard usecase I would say.

I have a hardware wallet which I use for storing and using my crypto. For different areas of investment I use different addresses on the same hardware wallet (using derivation paths), to keep things separate and in order. This is not possible with Metamask. I can only use one of those addresses (at the same time).

This is really a pity, as Metamask is one of the leading wallets in the field and otherwise well supported. If I read the history of this issue correctly, this was already assigned but has been unassigned again?

brandoncurtis commented 3 years ago

Switching between different hardware wallet addresses, and keeping track of which is which when Metamask fails to persist the labels, wastes an inordinate amount of my time. This is a must-have feature and I'll switch to any alternative wallet that supports this properly.

mitche50 commented 3 years ago

This feature is a must, IMO. Having ledger support for multiple addresses would greatly increase security focus of users as well as the user experience.

troublesprouter commented 3 years ago

PLEASE do something about this. This is BASIC and is making things unsafe for everyone by virtually forcing users to use unsafe accounts if more than one address is needed. How can I help make this happen urgently?

dsldsl commented 3 years ago

It’s done and released sir

On Tue, Mar 30, 2021 at 12:58 AM troublesprouter @.***> wrote:

PLEASE do something about this. This is BASIC and is making things unsafe for everyone by virtually forcing users to use unsafe accounts if more than one address is needed. How can I help make this happen urgently?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MetaMask/metamask-extension/issues/6649#issuecomment-809908431, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMGXYG2XCCLK5NXBD5OX3TGFLADANCNFSM4HO2LJXA .

troublesprouter commented 3 years ago

Thank you. I hadn't realised! I suggest we close this issue.

airflow2010 commented 3 years ago

Great news, thanks! I just tested this and confirm it is now possible to manage multiple addresses from the same hardware-wallet.

However I think there is a bug with the implementation. Is it just me, or is the "Activity"-listing (with the transactions etc) only shown correctly for the first address, not for the others? At least that's how it behaves here. Can anybody confirm? Should I file a bug?

pedrosimao commented 3 years ago

@dsldsl Great news! How can I switch from one address to the other? My Metamask says I can still only add one address at a time...

airflow2010 commented 3 years ago

@pedrosimao After you have added all your hardware-adresses, they are all listed under your accounts. You can easily switch between them by clicking on them.

pedrosimao commented 3 years ago

@airflow2010 great! I managed to do it. Thanks a bunch! But I still have one limitation, for instance, I would like to connect Metamask to the public key that is used within the Ledger Live app. Metamask only shows 4/5 addresses (public keys) per page, and every time I change a page it takes some 5 seconds. So I could not find the address which is associated with Live Ledger App. I have seen 100s of addresses, but none of them were the same as in Live Ledger. Maybe a good new feature would be to scroll through different addresses faster...

ghost commented 2 years ago

Is there any progress on the issue this thread started with, allowing multiple different hardware wallets to connect at the same time? I mean trezor + ledger at the same time, not multiple addresses from the same device.

cchen408 commented 2 years ago

this is definitely needed!! I had 50 accounts on my trezor all with different labels but now are gone because i needed to access an account on my ledger... such a pain

ahjkd8 commented 2 years ago

How do we get the account back that was replaced by new hardware wallet account?

martinkrung commented 1 year ago

I neeeeed this.

How should people have a good security with hardware wallets if they can't use them?

I have 4 different hardware wallet I use regularly. My current work around is to use XDEFI Wallet in the same browser and switch between that and Metamask. That's what happens: people try out other wallets and puff they are gone.

AJolly commented 1 year ago

I just go use multiple browser profiles

seaona commented 5 months ago

Whenever trying to use Trezor after using Ledger, I get the error Transaction NaN failed. Error: forbidden key path

https://github.com/MetaMask/metamask-extension/assets/54408225/d49a11f9-a837-41ca-9814-c3c7fc44de59