Sometimes I want to sign a transaction on a device withouth network access to later publish it over a blockchain website.
But when the device has no internet permission, it can’t load the balances and therefore don’t allow me to sign any transaction because it always thinks that I don’t have enough money.
Unfortunately I have the same issue with other wallets like Exodus.
Can someone explain me why there is no wallet software that allows me to sign transactions always if I want to?
I would be very grateful if the Trezor devs could implement an option to disable the balance check for signing transaction or just remove this useless limitation completely.
It’s not a matter of “balance”, and neither it is a simple one-liner “IF not_enough_money() THEN print(don’t sign transactions, stupid user)”.
To construct a proper transaction, the wallet needs to know the current state of the blockchain. In case of Bitcoin and derived coins, that’s the UTXO set. In case of Ethereum, the last nonce and possibly some other metadata. Without this knowledge, the transaction can’t be created.
Sure, technically any wallet could download this info and store it at home, and just hope that it’s not outdated if you’re signing offline. In practice wallets mostly don’t bother because they don’t really work offline anyway.
You may be able to use Electrum Wallet to do the thing you want to do.
This was the part I was missing.
Of course the wallets not only needs to know the private and the public key but also which UTXO are in the address.
I did some research on what a nonce is, and it seems that it is just a transaction counter of an Ethereum Account. Couldn’t the Wallet keep track of this offline?
Can Electrum sign offline? I thought this was not possible without knowing the UTXOs.
I have two reasons to try to do offline signing:
Trezor Suite is not loading for some reason. I test the connection of the device through other applications and they have internet access, but Trezor Suite has not.
I think it would be better for privacy anyway to make a transaction and only broadcast that specific transaction instead of requesting all my addresses every time I open Trezor Suite.
I couldn’t find an option to disable auto loading of the crypto account’s but I don’t want all my crypto get linked together because they are requested together.
Even if I use Tor (which is my plan anyway) it would still not help because if all accounts get requested at the same time, they all go over the same (Tor) IP and are therefore linked.
And there are API Keys as well, I am not sure if Trezor Suite is using one, but I heard that many Wallets use the same API Key for every account.
Yes, Electrum can sign offline, but you can’t prepare such transaction on offline computer. When i was playing with MultiSig, i done exactly this. You prepare the transaction on View-only online Electrum wallet, transfer it over USB, sign it on offline computer. Transfer back the signed transaction over USB to online computer and broadcast. Sure in case of 2-of-2 MultiSig you can sign it on first offline computer and send PSBT (Partially Signed Bitcoin Transactions) to your company partner/friend on the other side of world, he adds second signature and broadcast the final transaction. Search for Electrum’s readthedocs:
Although i have some USB barcode reader (like Zebra DS2208) i didn’t test it over the QR. In mentioned doc portal screenshot there is “QR button” next to “Save button”. Also in “Multisig Wallets” part of Electrum’s “Read the doc”, there is:
For this you have multiple options:
you can transfer the file on a usb stick
you can use QR codes
you can use a remote server, with the CosignerPool plugin.
But this is Trezor forum, you should ask such question on some Electrum portal/support/elsewhere.
The transaction will be broadcasted publicly anyway. Also if you sign on offline machine, that one can’t be hacked - it is OFFLINE Trezor HW device is also offline device by itself (it is sign-only part of the wallet, it is not networked-part of the wallet - the separation of wallet roles is on purpose).
And in case of SW hot wallet? Well, if you think about that, you can’t be trusted anymore. The other party will not be able to differentiate between you vs. hacker, because he will be probably able to mimic all the things like you. Maybe some other validation channel - by SMS, phone call can the other party verify it is legit. But there also a scenario, that you handle all the signatures yourself for higher security