No hardware wallet manufacturer officially supports Bitcoin SV, but you can use your existing hardware wallets if you choose to work within the limitations.
The subject of hardware wallets came up frequently at the 2022 BSV blockchain conference in Dubai, so this article is intended to try and paint the whole picture of hardware wallet support on Bitcoin SV. ElectrumSV is the only application I know of that supports hardware wallet usage, please let me know if you know of others.
What is supported?
There are many distinctions to make here.
- Does the vendor that makes a given hardware wallet support Bitcoin SV?
- Does the vendor that makes a given hardware wallet support ElectrumSV?
- Does ElectrumSV support a given hardware wallet?
The first relates to whether the vendor actively supports and recognises Bitcoin SV in their product. The second relates to whether they contribute code to ElectrumSV to allow it to detect and operate connected hardware wallets. The third relates to whether the ElectrumSV developers work to keep existing hardware wallet support working as much as they can.
ElectrumSV inherited support for the Digitalbitbox (aka Bitbox01) hardware wallet from Electrum Core. This is no longer sold or really supported by the manufacturer. I would be suprised if anyone other than myself ever even connected one of these devices to ElectrumSV.
It is unclear what incompatibilities these have with Bitcoin SV as they have not had any real usage, nor error reports from users.
This is the only vendor that has a Bitcoin SV currency mode on their device. The difference this support makes is that cash addresses are not enabled and the “Bitcoin SV” name and “BSV” currency are shown where applicable. There is no support for BSV features which will be elaborated on later as it applies to all vendors.
ElectrumSV maintains the support for the Keepkey device we inherited from the Electrum Core wallet. This was likely contributed by the Keepkey team originally to Electrum Core, although they have never contributed fixes or changes to the ElectrumSV.
There is something weird going on with the vendor libraries we use to communicate and control the device. We use a PyPI package because it is what Electrum Core use, however Keepkey (or rather their owning company Shapeshift) do not publish this and recommend we use their Github library. We have never been able to allocate the time to switch over, and it is not published as a Python (PyPI) package which makes it hard to integrate.
When Bitcoin Cash forked away from Bitcoin SV, Ledger decided to side with Bitcoin Cash and reasoned that this prevented them from supporting Bitcoin SV. The reasons they gave for not supporting Bitcoin SV were technical and non-political, which is perhaps reasonable in a sense. ElectrumSV has done all the work to maintain the source code inherited from Electrum Core.
Ledger devices can still be used for the same set of simple known uses they were always usable for in ElectrumSV, for now. In order to use them, the user needs to install and run the Bitcoin Cash application on their Ledger device. This means that they see the currency as “BCH” and may have to opt to not see cash addresses.
An update to Ledger’s firmware introduced a bug fix where a complicated and arcane exploit that would ring warning bells with the user could allow the attacker to give higher fees to miners. Why someone would subvert a user’s computer and modify their ElectrumSV to do this, is unclear. However, the solution for this is that wallets are expected to provide the parent transactions that include the transaction outputs being spent to the hardware wallet. If a wallet does not provide these the user gets an alarming message about “unverified inputs”. ElectrumSV supports providing these, but currently does not because the cure is worse than the disease. If we correctly enabled this then our users would get errors when Bitcoin SV transaction outputs that are incompatible with Bitcoin Cash or Bitcoin Core were encountered by the Ledger. We have seen this with the Trezor hardware wallet and it is a mess.
Another recent update to the Bitcoin Cash application (2.0.4) broke the ability of ElectrumSV to locate connected Ledger devices. It is not possible to downgrade Ledger firmware, so these devices were now unusable with ElectrumSV. However, Ledger did do a new update (2.0.5) which fixed this accompanied by a note suggesting that ElectrumSV was using undocumented/unsupported functionality! The only problem is that we never wrote any of the code we maintain, we inherited it from Electrum Core, and it was likely originally written by the Ledger team.
How long will Ledger maintain support for these legacy features? No idea.
Do not buy a Trezor. The only way to use them is to downgrade the firmware to an earlier version. Unfortunately, working out what the risks are in doing so is complicated and it is unlikely any user will ever really understand those risks.
- Updates 1.6.2 for Trezor One and 2.0.7 for Trezor Model T only support “cash address” style address display. This is a useless Bitcoin Cash thing that is unusable on Bitcoin SV.
- Updates 1.9.1 for Trezor One and 2.3.1 for Trezor Model T introduce incomprehensible technical error messages in certain circumstances that are hard to avoid unless you really know what you are doing.
So at this point if you have an updated Trezor wallet it shows unusable “cash address” style addresses and can error in unpredictable and incomprehensible ways when signing transactions depending on what coins are selected. There is a good argument that ElectrumSV should remove Trezor support.
Again ElectrumSV has done all the work to maintain the source code inherited from Electrum Core.
Hardware wallets and BSV features
The way that hardware wallets work is that they generally verify the structure of the transaction they are being asked to sign, and act to prevent spending of coins in ways they do not understand. This means:
- They may require that they have access to the transactions that provide the transaction outputs (aka UTXOs or coins) the hardware wallet is asked to sign off on the spending of.
- If they allow the transaction being signed to have
OP_RETURNoutputs it is the old form no longer supported on Bitcoin SV where
OP_RETURNis the first opcode and the length of the output is limited to something like 130 bytes.
- They only support P2SH for multi-signature payments. New P2SH outputs are no longer supported on Bitcoin SV after the Genesis upgrade, which means that multi-signature transactions cannot be done with the assistance and protection of hardware wallets.
- They only support standard transaction scripts. This means that they can now only do simple payments, and this means P2PKH outputs.
- Users may be asked to approve payments to addresses they do not recognise, and this is not necessarily evidence of an attack. It might be that we are making more than one piece of change and for some reason the hardware wallet only detects the first.
ElectrumSV allows users to continue to use all four vendors hardware wallets, however the user needs to be technically capable and able to avoid potholes and even revert firmware. They can no longer do things they used to do, like be used for signing multi-signature transactions. None of the devices really support Bitcoin SV in any way that prevents incompatibility problems for a user, and the closest is Keepkey which just cosmetically shows the Bitcoin SV currency.
Any user putting coins into cold storage needs to be sure the coins they put into cold storage are compatible with the given hardware wallet they are putting them into. If coins that are not compatible are put into the hardware wallet, the user may have to create a wallet using the seed words in order to spend those coins — and this defeats the purpose of using the hardware wallet. This has implications that if the coins are coming from a source that creates Bitcoin SV transactions that are incompatible with Bitcoin Cash, the user needs to deposit them into a non-hardware wallet then send them onto the hardware wallet in the compatible form.
It is possible that all hardware wallets are really good for now is cold storage using P2PKH outputs.
Are future hardware wallets useful outside of cold storage?
Let’s consider some of the interesting things you can do on Bitcoin SV:
- If someone asks you to pay an invoice and gets you to scan a QR code, you have no addresses to compare to the ones shown on your hardware wallet.
- If someone gives you a Paymail address and asks you to send them some BSV, you have no address to compare to the one shown on your hardware wallet.
- If someone sends you a STAS token the hardware wallet has no idea what to do with it. If someone sends you a Tokenized token the hardware wallet has no idea what to do with it.
It goes on. The key point is that a simple device that shows you an address is not relevant outside of a very simple scenario like cold storage. It is also extremely complicated to try and engage in only receiving P2PKH payments into your hardware wallet as that is all it can spend. As Bitcoin SV and the developers building on it employs more and more useful and interesting applications the usefulness of hardware wallets that only do P2PKH decreases.
A future device that air gaps key holding, access and transaction signing from the device ElectrumSV is running on will likely handle all of the above and more. This might require an extremely active developer in charge of it, and perhaps even a subscription model where they are paid enough to fix any problems with the device and update it with new functionality.
What about threshold signature multi-signature P2PKH payments?
No. Just no. Go and stand in the corner, facing the corner.