I recently received a Ledger Nano S Bitcoin hardware wallet as a gift and had a chance to set it up last night. This post is a raw account of my first impressions of the product and the wallet apps I tried it with. I plan on doing a full review for my BYOB blog later.
I had to run a script to get the wallet to work on my Linux computer. Found the script in the Knowledge Base (this should perhaps be included in the main setup instructions for better visibility).
wget -q -O - https://www.ledgerwallet.com/support/add_udev_rules.sh | sudo bash
Ledger hardware review
Setup, backup, and restore process was pretty easy. Everything was either intuitive or simply explained on the Ledger setup website.
– Ability to see P2SH transaction details on the screen before signing (currently just says “Confirm P2SH”)
Ledger Wallet Bitcoin app review
Somewhat limited/ basic functionality.
– Ability to create multisignature accounts using either the same Ledger for each signature (for testing purposes, mainly) or multiple different Ledgers (for a legit setup). Not totally necessary since other wallets offer this, but would be a “nice to have”.
– Ability to create addresses on the fly and specify which addresses to spend from
– Ability to create multiple new accounts without having to add bitcoins to each of them
– Ability to mix coins with each transaction to preserve coin fungibility
– Eliminate reliance on centralized Ledger API. Apparently if Ledger goes away, I can’t make a payment without importing my private keys into another wallet. Why can’t I just point my Ledger wallet app at another UTXO provider to fetch current balance information? Or even point it at my own fully indexed full node?
– How do I determine which “account number” corresponds to each account in my Ledger wallet? i.e. when CoPay asks me to pick an account number to work with. I can see the root path in my account settings, but this seems to be offset by one for each account number i.e. account number 2 has a chain path of /1′. It would be nice if this nomenclature was standard across wallets, or at least less confusing if it’s already standardized.
CoPay Wallet review
– Ability to use Ledger for single signature “personal” accounts. I can only choose Ledger on multisignature “shared” accounts. This might be a CoPay bug, or intentional if they figure you’ll just use the Ledger app for single signature accounts. (I plan to file a GitHub issue later if this hasn’t already been reported)
– After failing to create a 2-of-4 multisig account (CoPay would not let me use multiple accounts within CoPay to manage the same shared wallet, or would not let me use the same Ledger to do multiple signatures on the same multisignature account, I could not tell which), and then deleting the failed 2-of-4 shared wallet, I attempted to create a new 2-of-2 shared account. After attempting to use the same ExPubKey (“account number 3”) in the new wallet as I had tried in the failed wallet, I received an error in CoPay when attempting to create the new wallet: “Key already associated with an existing wallet.” CoPay does not seem to recognize that I deleted the failed wallet. This might be a CoPay issue, not a Ledger issue (I plan to file a GitHub issue later if this hasn’t already been reported).
– CoPay mobile wallet does not seem to support Ledger (?). Only options for Wallet Key are “Random” and “Specify Recovery Phrase…” This might be a CoPay issue, not a Ledger issue (“”).
– My desktop wallet and my mobile wallet show two different addresses on the “Receive” tab for my 2-of-2 shared account. This is confusing, it should show the same address. Again, this might be a CoPay issue, not a Ledger issue (“”).
Electrum wallet review
– At first, this failed because Electrum did not recognize that my Ledger was plugged in. Then I saw at the bottom of the instructions that Ubuntu requires other software to be installed for Ledger to work with Electrum. This should probably be at the top of the instructions, not the bottom, so that it is more visible.
– Ubuntu special software install failed on the first step:
E: Unable to locate package libusb
Continued with other steps, got a bunch of errors. Printed out a long log:
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_bitcoiner/btchip-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-jR4huT-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_bitcoiner/btchip-python Storing debug log for failure in /home/bitcoiner/.pip/pip.log
I’ll send Ledger a support request to figure out what’s going on with this error and update this post when I hear back.
Overall, a solid product. I could do 80% of what I wanted to do. Will have to check back after solving some of the above errors to see if I can get that to 100%. What I’d really like to be able to do is use multiple Ledgers to sign multisignature transactions, ideally from any device, desktop or mobile. For example, have a 2-of-3 account with 3 Ledgers, one for each signature. I might need to actually have three physical Ledgers to test this. I’d also like more granular control over my addresses and change control in my wallet accounts, and to have a built in mixer to preserve coin fungibility (I don’t think any wallet other than JoinMarket has this yet, but I might as well mention it here while we’re talking about things I want). I will share updates here once I have answers to the questions and issues raised in this post.
Email is probably the most popular decentralized messaging protocol. Add yourself to my email contacts if you would like to stay in touch!