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

Hardware Wallet Integration to Wasabi Wallet #1341

Merged
merged 52 commits into from Apr 16, 2019

Conversation

Projects
None yet
@nopara73
Copy link
Collaborator

commented Apr 15, 2019

Closes #1325
Closes zkSNACKs/Meta#42
Closes zkSNACKs/Meta#31
Closes zkSNACKs/Meta#30
Closes zkSNACKs/Meta#38

This is hardware wallet integration to Wasabi Wallet.
This PR is using @achow101's HWI Python helper software: https://github.com/bitcoin-core/HWI/

image

Caveats

CoinJoins had to be disabled for hardware wallets.

image

Hardware Wallet Interface

The communication between the hardware wallet and Wasabi is facilitated by the HwiProcessManager class. I am currently using the following calls across all hardware wallets:

  • enumerate hardware wallets on USB
  • get xpub from hardware wallets
  • send transaction to hardware wallets

Alternatives: HWI vs Hardwarewallet.Net

I only have access to a ColdCard, so I couldn't try @MelbourneDeveloper's libraries, but in case some blocker comes up we could easily switch.
While I would love to stay inside .NET, I decided on using HWI, because this is the reference hardware wallet interface implementation, where hardware wallet vendors and Bitcoin Core developers are working on, so its its bus factor is better and its continuous improvement is guaranteed. It also supports more hardware wallets.

ToDo

  • Install udev rules for Linux.
  • Fix wallet naming: using fingerprint in it is problematic?
  • Sending transactions to hardware wallets don't yet properly work. PSBT creation seems to be problematic.
  • Somehow give feedback if there's no hardware wallet is detected. Tell the user to "Make sure you have a hardware wallet plugged into one of your USB ports and you have already created an existing wallet on it."
  • Hardware wallet enumeration may take some time. Right now the software doesn't open until it explored the USB ports so if hardware wallet is found the software will open on that tab by default. Maybe let's open on the default tab by default and enumerate in the background and then take the user to the hardware wallet tab automatically instead?
  • Right now hardware wallets are detected (enumerated) only when the tab is clicked. When the we are on the tab and the user plugs in its hardware wallet we should autodetect it.
  • Maybe add some animation when trying to detect (enumerate) hardware wallets?
  • At one point I'm enumerating through all the wallet files searching for extpubkeys and I am parsing the whole file with the KeyManager, this is suboptimal and must be slow on HDD.
  • Try it on RegTest (I didn't try.)
  • When communicating with HWI, the UI is unresponsive. I think we have to delegate this communication to another thread somehow? @molnard @danwalmsley
  • Test from inside Ubuntu VM (seems to cannot fetch extpubkey from coldcard)
  • Update Meta repo after this is merged: https://github.com/zkSNACKs/Meta
  • Update https://github.com/bitcoin-dot-org/bitcoin.org and other sites that Wasabi now supports hardware wallets.

Testing

https://github.com/zkSNACKs/WalletWasabi/blob/master/WalletWasabi.Documentation/Guides/20190416HardwareWalletTestingGuide.md

nopara73 added some commits Apr 13, 2019

@nopara73 nopara73 changed the title HW HWI Apr 15, 2019

nopara73 added some commits Apr 15, 2019

@nopara73 nopara73 changed the title HWI Hardware Wallet Integration to Wasabi Wallet Apr 15, 2019

@molnard

This comment has been minimized.

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 15, 2019

You can try ObserveOn to syncronize the threads.

I don't see how that's useful, could you make a PR?

nopara73 and others added some commits Apr 15, 2019

@Kortik7

This comment has been minimized.

Copy link

commented Apr 17, 2019

OS Version: Win7 Ultimate 64bit Service Pack 1 up to date
HW Wallet: Ledger Nano S

  1. Does Wasabi recognizes your hardware wallet?
    No
  2. Does Wasabi loads your hardware wallet?
    NO
  3. Can you send transaction using Wasabi and your hardware wallet?
    NO

Python36.dll is missing

photo_2019-04-17_15-01-45

photo_2019-04-16_21-37-30

opened issue here as well: bitcoin-core/HWI#150

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 17, 2019

@Kortik7 Could you try hwi.exe enumerate?

@lontivero

This comment has been minimized.

Copy link
Contributor

commented Apr 17, 2019

We know what happens when he tries to enumerate. I opened an issue yesterday for this: bitcoin-core/HWI#150

I couldn't build the docker today because the connection was timing out again and again but tonight i will try to build the cli tool using an older python version and try with that.

@Kortik7

This comment has been minimized.

Copy link

commented Apr 17, 2019

@Kortik7 Could you try hwi.exe enumerate?

Adam same message missing python36.dll

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 18, 2019

Trezor Model T should be working now properly for everyone on Windows 10, OSX and Linux.

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 18, 2019

@tkijewski, @kravens or someone could do a quick test with Ledger again? (any OS except win7)

Do a git pull before you try.

@kravens No funds confirmed on bech32 derived addresses yet... need mempool to empty and I'll try sending!

No need to be confirmed, you can spend unconfirmed coins.

@tkijewski

This comment has been minimized.

Copy link

commented Apr 18, 2019

OS Version: MacOS Mojave 10.14.4
HW Wallet: Ledger Nano S

Trying to send transaction:

On Ledger:
Confirm Output #1
Confirm Output #2
Confirm Transaction

Wasabi Wallet 2019-04-18 13-31-23

@kravens

This comment has been minimized.

Copy link

commented Apr 18, 2019

@tkijewski, @kravens or someone could do a quick test with Ledger again? (any OS except win7)

Do a git pull before you try.

@kravens No funds confirmed on bech32 derived addresses yet... need mempool to empty and I'll try sending!

No need to be confirmed, you can spend unconfirmed coins.

Let me try that!
image
HW Device:
image

Result:
image
Success! 💯

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 19, 2019

@kravens Success is bad in this case, because that means @tkijewski's bug will be a tricky one :(

@tkijewski How did you build that transactions? It may not be Ledger-specific at all.

1 input, 2 outputs, of which one if it is going out of the wallet?

@kravens

This comment has been minimized.

Copy link

commented Apr 19, 2019

@nopara73
Maybe there are some OS-sensitive dependencies in the HWI scripts used?

@tkijewski

This comment has been minimized.

Copy link

commented Apr 19, 2019

I pulled down latest commits and it works now. It only asks me to confirm whichever output is leaving the wallet. This is great! Nice work

@tkijewski

This comment has been minimized.

Copy link

commented Apr 19, 2019

OS Version: Ubuntu Desktop 18.04
HW Wallet: Ledger Nano S

Wasabi does not recognize Ledger. When plugged in via USB this keeps popping up in console:

2019-04-19 17:58:23 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /home/bandit/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /home/bandit/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 83
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /home/redact/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 118
@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 19, 2019

@tkijewski It explains your previous issue. I actually didn't touch the transaction broadcasting code, I just put a nullcheck to the fingerprint. So transaction broadcasting always worked, it was just sometimes the fingerprint was not given to us by Ledger thus we fall back to an incorrect fingerprint that NBitcoin gave us and so Ledger incorrectly signed the transaction, but when you got Fingerprint and loaded it right away it worked for you.

I noticed Coldcard also refuses to give us fingerprint when I'm sending HWI enumerate requests simultaneously. I'm not sure what condition makes Ledger not giving me the fingerprint but I have a strong suspicion. I keep enumerating the devices even if I find them, because then I would notice if someone plugs them off. I had to turned this off for Coldcard and Trezor for various reasons, but now I turned it off for everything else too. Can you try it again now after a git pull?

@Kortik7

This comment has been minimized.

Copy link

commented Apr 20, 2019

@nopara73 @lontivero Installed new hwi.exe into the folder in %appData%Roaming etc..

per Anderew request here: bitcoin-core/HWI#150

now I get his message looks like wasabi is ready and connected but cannot recognize Ledger on Win7 64bit.
photo_2019-04-19_21-30-07

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 20, 2019

@Kortik7 Wasabi makes sure of the digests, so you were still using the old one. You can git pull now and should work.

@Kortik7

This comment has been minimized.

Copy link

commented Apr 20, 2019

@nopara73 I was able to connect but my ledger shows zero balance. But I have balance on it. my addresses on Ledger aren't bech32 , they start with 3 instead of bc1.

Untitled

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 20, 2019

Now your Ledger does use it bech32 keypaths: )

@Kortik7

This comment has been minimized.

Copy link

commented Apr 20, 2019

Now your Ledger does use it bech32 keypaths: )

what does it tell me? I can see balance on ledger?

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 20, 2019

@Kortik7 your wallet is the same. (Same backup and everything.) The only difference is that Wasabi is looking at different keypaths than the Ledger application or whatever other application you are using.

@bitofdon

This comment has been minimized.

Copy link

commented Apr 20, 2019

OS: Ubuntu 18.04
Trezor One

1. Does Wasabi recognizes your hardware wallet?
Yes

2. Does Wasabi load your hardware wallet?
Yes

3. Can you send transaction using Wasabi and your hardware wallet?
Yes. BUT - When signing & approving the transaction on Trezor One, you have to do it quickly otherwise it freezes and gives you errors. If you are attempting to send a transaction using Wasabi & Hardware wallet, you device itself may freeze before you get a chance to sign & send it. After a few tries, doing it quickly allowed me to send.

edit:
Trezor One on Linux (Ubuntu 18.04) works great. Turns out, the issue with the device freezing was due to it not being given enough power since the hardware wallet was being connected through a USB hub, not giving it enough power to the device itself. Using the device directly from the computers USB ports doesn't cause any freezing of the device.

@nopara73 nopara73 referenced this pull request Apr 20, 2019

Open

Hardware Wallet ToDo #1344

9 of 13 tasks complete
@dustinec

This comment has been minimized.

Copy link

commented Apr 21, 2019

OS: MacOS Mojave 10.14.4
Device: Trezor One

  • Does Wasabi recognizes your hardware wallet?
    No.

  • Does Wasabi loads your hardware wallet?
    No.

  • Can you send transaction using Wasabi and your hardware wallet?
    No.

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 21, 2019

@d-childers Thanks. I just tried Trezor T on a macOS High Sierra just in case I ruined something, but no, it works properly, so I cannot go further with it until I got a Trezor. One question: Is your Trezor recognized by Electrum or the Trezor app?

@dustinec

This comment has been minimized.

Copy link

commented Apr 21, 2019

@nopara73 It is recognized by Electrum and the Trezor wallet. On Electrum it showed two options during setup for the trezor, one was a bridge and the other was webusb. I believe I could only get it to work using the bridge.

Wasabi Wallet 2019-04-21 11-42-13

Terminal Output:

dchilders@Neptune:~/Projects/WalletWasabi/WalletWasabi.Gui|master
⇒  dotnet run
2019-04-21 11:40:47 INFO 8b55c8dd-c13a-4a7b-b934-d9c00b2002e1: Wasabi GUI is starting...
2019-04-21 11:40:51 INFO Config: Config is successfully initialized.
2019-04-21 11:40:51 INFO HwiProcessManager: HWI instance NOT found at /Users/dchilders/.walletwasabi/client/hwi/hwi. Attempting to acquire it...
2019-04-21 11:40:51 INFO HwiProcessManager: Extracted /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/bin/Debug/netcoreapp2.2/Hwi/Software/hwi-osx64.zip to /Users/dchilders/.walletwasabi/client/hwi.
2019-04-21 11:40:51 INFO HwiProcessManager: Shell command executed: chmod -R 750 /Users/dchilders/.walletwasabi/client/hwi.
2019-04-21 11:40:51 INFO TorProcessManager: Starting Tor monitor...
2019-04-21 11:40:51 INFO TorProcessManager: TorProcessManager is initialized.
2019-04-21 11:40:51 INFO TorProcessManager: Tor is already running.
2019-04-21 11:40:51 INFO AddressManager: Loaded AddressManager from `/Users/dchilders/.walletwasabi/client/AddressManager/AddressManagerMain.dat`.
2019-04-21 11:40:53 INFO: Start connecting to nodes...
2019-04-21 11:40:53 INFO: Start synchronizing filters...
2019-04-21 11:40:53 INFO UiConfig: UiConfig is successfully initialized.
2019-04-21 11:40:54 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:40:58 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:40:59 INFO WasabiSynchronizer: Downloaded filters for blocks from 572522 to 572631.
2019-04-21 11:41:01 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:04 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:08 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:11 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:15 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:18 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:21 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:25 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:28 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:32 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:35 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:39 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:42 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:45 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:49 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:52 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:56 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:41:59 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:03 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:06 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:10 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:13 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:17 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:20 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:24 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:27 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:30 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:34 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:37 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:41 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:44 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:47 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:51 WARNING WalletManagerViewModel: System.ArgumentNullException: Value cannot be null.
Parameter name: bytes
   at NBitcoin.HDFingerprint..ctor(Byte[] bytes)
   at WalletWasabi.Hwi.Models.HardwareWalletInfo..ctor(String fingerprint, String serialNumber, HardwareWalletType type, String path, String error) in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/Models/HardwareWalletInfo.cs:line 12
   at WalletWasabi.Hwi.HwiProcessManager.EnumerateAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi/Hwi/HwiProcessManager.cs:line 78
   at WalletWasabi.Gui.Tabs.WalletManager.WalletManagerViewModel.RefreshHardwareWalletListAsync() in /Users/dchilders/Projects/WalletWasabi/WalletWasabi.Gui/Tabs/WalletManager/WalletManagerViewModel.cs:line 121
2019-04-21 11:42:52 INFO UiConfig: UiConfig is saved.
2019-04-21 11:42:52 INFO Global: UpdateChecker is stopped.
2019-04-21 11:42:53 INFO Global: Synchronizer is stopped.
2019-04-21 11:42:53 INFO Global: AddressManager is saved to `/Users/dchilders/.walletwasabi/client/AddressManager/AddressManagerMain.dat`.
2019-04-21 11:42:53 INFO Global: Nodes are disposed.
2019-04-21 11:42:53 INFO Global: TorManager is stopped.
2019-04-21 11:42:53 INFO 8b55c8dd-c13a-4a7b-b934-d9c00b2002e1: Wasabi GUI stopped gracefully.
@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 21, 2019

@d-childers I know the issue. Wasabi recognizes your Trezor, but your Trezor doesn't give Wasabi the HDFingerprint so Wasabi is failing.

I think it's because your Trezor needs a PIN or a passphrase from Wasabi and it's not yet implemented, because I don't have a hardware wallet that's working that way, so I cannot test it. But I'll have a Trezor One the end of next week so I will be able to figure out what exception to catch exactly and when to show up the PIN/Password boxes for the user.

@NicolasDorier

This comment has been minimized.

Copy link

commented Apr 22, 2019

@nopara73 it is possible that actually Hardware wallets don't care about fingerprint.
If that's the case, you should try with default HDFingerprint.

@NicolasDorier

This comment has been minimized.

Copy link

commented Apr 22, 2019

I know that ledger does not care about fingerprint. I think fingerprint only became a thing because of PSBT.
HWI probably does not care either as they can't get it from Trezor either...

@lontivero

This comment has been minimized.

Copy link
Contributor

commented Apr 22, 2019

I will be able to figure out what exception to catch exactly and when to show up the PIN/Password boxes for the user.

For Ledger Nano I am adding a "Locked or invalid access right" message and error code in this commit: lontivero/HWI@e4c4be6
This will let Wasabi know that it has to get the PIN from the user. However this error is new (I've just added it) and it is not used for the rest of the HWW clients. Once I finish with this we could ask achow101 if he thinks it is a good idea to implement the same error in the other HWW clients.

Screenshot from 2019-04-22 02-24-48

@achow101

This comment has been minimized.

Copy link

commented Apr 22, 2019

Once I finish with this we could ask achow101 if he thinks it is a good idea to implement the same error in the other HWW clients.

We currently use DEVICE_NOT_READY for Trezors that need PINs, so I think that could be used here as well. I believe it's the same issue for both devices too - the user needs to enter a pin.

@nopara73

This comment has been minimized.

Copy link
Collaborator Author

commented Apr 22, 2019

@nopara73 it is possible that actually Hardware wallets don't care about fingerprint.
If that's the case, you should try with default HDFingerprint.

Actually it doesn't matter, because if it doesn't fail here, then it'd fail later, because the PIN is expected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.