1

It would seem the answer is no, because the hardware wallet is not a full node and cannot know the total value represented by the input transactions. It must trust the host software for this. Am I correct, or did I miss something?

Basically, the concern is that a malicious host software could trick the user+wallet into signing a transaction that has a low amount of output value but a high total amount of input value. This would convert the user's Bitcoins into a miner reward. Though admittedly the motivation behind such an attack would be low because the attacker can't profit from it.

5

That is correct, a hardware wallet does not have access to any information from the blockchain except that provided by the host computer. So it does not know anything about the amounts unless the host provides it to them.

Because of this, hardware wallets have some extra requirements for signing. Many devices, for non-segwit inputs, require the entire previous transaction to be sent to the device. This way they can compute its txid and compare that to the txid specified for that input. In this way they can be sure of the amounts being sent as they can look at the output amount(s) in the previous transaction.

However Segwit actually fixes this issue for them. In Segwit, the amount for the input being signed is part of the data that is signed. So it directly commits to the amount being sent and therefore the host cannot lie about that amount or it will receive an invalid signature.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.