The ways to mess up are growing over time. For example, is it really self custody if you don’t also run your own node? I’d argue it’s not ideal because your hardware wallet has no idea about anything other than addresses and keys. The node you connect to in order to find out how much value is at each utxo is a potential attack vector.
Suppose you want to buy a coffee for $1. A maliciously node might report a value of 0.001BTC for the value of a utxo to use as an input and your transaction creation software will compute 0.00001 for the spend, 0.00099 for the change address (or less, allowing for tx fee). This would all be fine to sign with your hardware wallet if and only if the input value really is 0.001BTC…what if it really was 1 BTC? What happens then? Is the transaction still valid? Yes, it’s still valid, but your tx fee is now almost 1 entire BTC.
Remember, the tx fee is merely the difference between outputs and inputs. Anything not spent is by default a transaction fee. So, know your utxo! The only way to do that is for your transaction creation software to query your own node before constructing a transaction for your hardware wallet to sign.
Might even want to double check input utxo value on a few nodes if you don’t run your own!
Absolutely! This is a great point. Running your own node should be the defacto for true self-custody.
Thread collapsed
Wow. I had no idea.
Sounds like it's safer to use USD for everyday spending unless I'm willing to invest lots of time and resources into all this self-custody. Maybe a lightning wallet for everyday TXs?
for every day spending, I convert as much fiat as I was already going to spend on something to bitcoin as possible for my purchases (if the entity takes Bitcoin of course) so that I’m still invigorating the network without touching my cold storage
Thread collapsed
Bitcoin and convenience don’t mix. While I would never pay for bitcoin self sovereignty as a service, for most people it actually makes sense to reintroduce trust relationships in to bitcoin. Does this necessarily mean some people will be screwed? Of course. But these are people incapable of or unwilling to be fully responsible for their own bitcoin.
Thread collapsed
Thread collapsed
thats why you should only trust the values your hardware wallet shows you before signing.
Except that’s incorrect. Your hardware wallet only knows with certainty the value of the assigned outputs. It believes the value of the input it is told by the software used to create the transaction.
Just because your hardware wallet says the fee is 500 sats doesn’t make it so. Hardware wallets require a node to tell it the balance of a utxo…hardware wallets can’t know this automatically.
Lying about utxo value isn’t a common attack vector because the only party standing to gain is a miner…and such an attack ruins the value of their primary product: block space.
A trusted but malicious attacker could easily screw an individual by lying about utxo value. This is why running your own node and connecting your wallet to it very much matters.
Thanks for making me think twice. I see the problem now. You trust the node for the value of a utxo.
Not your node, not your utxo.
Bitcoin understanding is like an onion…
The split node, transaction creation software, and signing device paradigm is tricky to navigate well.
For my setup, I have a satellite connection 📡 🛰️ Blockstream Bitcoin data service to keep my otherwise airgapped nodes in sync. While it’s possible Blockstream could be lying to my node, it would be very expensive to do and it’s easy to check a few block explorers to make sure they all agree.
Thread collapsed
Thread collapsed
Thread collapsed
Thread collapsed
I might also add that a wallet containing utxos and public keys should be added to the list. Not just the public keys because you have to sync with other nodes to reclaim that history. If bitcoin is to live for thousands of years, you have to assume pruned nodes will dominate the network at some point. Either combine utxos to be less than a decade old or keep them in a watch only wallet file. Mayne that's overkill but that's my two sats.
Thread collapsed