Jump to the how-to:
A wallet signature is a way to prove that you are a high net worth individual. As such, this ownership verification is sometimes required as an entrance ticket to investment platforms.
Address signature verification is also sometimes requested when you lose access to an exchange account where you were not KYC’d.
Last but not least, some regulated exchanges may also ask for wallet signature along with your documents for KYC verification.
Use Electrum or send a small transaction to yourself
Sadly, signing & verifying a message is no longer possible in the most popular wallets - Ledger wallet discarded this function years ago.
If you need to verify your ownership or prove that you are HNW, you have the option of loading your keys into an Electrum wallet, or sending a small transaction out of any wallet that you use.
Both proves that you have access to the private key, which in bitcoinland means a rightful ownership. You know what they say: Not your keys, not your bitcoin.
If you have your addresses monitored for transactions, use the signature
Sending a transaction out has the disadvantage that (depending on your wallet) the rest of your balance might get moved to a different address, too. (Most wallets utilize the concept of change addresses for enhanced privacy.)
The “change” transaction will be delivered into an address you still own, you do not lose any money other than the transaction fee. The annoying thing is that if you have a watch-only wallet set up, or use any other bitcoin address monitoring system, the change transaction will trigger all the alerts. You will then have to set up new monitoring.
If you want to carry on and learn how to sign and verify a message in Bitcoin Electrum, keep reading.
How to Sign Message in Bitcoin Electrum
If you do not use Electrum for the address you need to sign, find the seed phrase of your wallet and restore it in Electrum:
- Open the Electrum wallet and in the File menu, select “New/Restore”
- Select “Standard wallet”
-
Select “Already have a seed”
If you need to verify ownership of a Legacy address starting with
1
:- Type in your seed phrase
- Choose legacy
If you need to verify ownership of a P2SH Segwit address starting with
3
:- Type in your seed phrase and click “Options”
- Select BIP39 (ignore any warnings) (is that scary?)
- Select derivation path “p2sh-segwit”
If you need to verify ownership of a native Segwit address starting with
bc1
:- Type in your seed phrase
- Choose segwit
Then proceed with the following steps:
- Open the Electrum wallet. If you have multiple wallets, choose the one which has the address you are verifying.
- Go to Addresses and find the concerned address
- Right-click the address and choose Sign/Verify Message
- Copypaste the message to sign into its box and click Sign. You will be asked for the wallet password.
- The signature string is in the bottom box.
How to Verify Bitcoin Signature in Electrum
- Open the Electrum wallet.
- Go to Addresses and find the address you need to use.
- Right-click the address and choose Sign/Verify Message
- Paste the message that was meant to be signed into its box.
- Paste the signature string into its box and click Verify.
Why do we use Bitcoin signatures
Message Signature as a proof
For obvious reasons, you cannot show the private key to anyone.
Showing it would prove your ownership, but at the same time it would make you lose said ownership.
One of the established ways to prove the ownership of a private key is to sign a message with it. To sign a message you only work with the public address associated with your private keys, but you need to do it from the wallet that holds it.
That requires your physical access to your wallet device or laptop, and a password that decrypts the wallet and lets you use it.
Wallet Support
Message signing has become an advanced function. Most new crypto wallets that are user friendly do not support it.
- Electrum: SUPPORTS MESSAGE SIGNING
- Electrum supports message signatures for all address formats: legacy, P2SH segwit and bech32 native segwit.
- Trezor: SUPPORTS MESSAGE SIGNING
- Trezor wallet’s Chrome extension lets you sign a message with an address belonging to your wallet.
- Ledger: NO SUPPORT
- Ledger wallet did support message signature and verification in its old web interface. The web UI us now deprecated. Ledger Live does NOT support message signing.
Exchange says your message signature could not be verified?
Sadly, a lot of crypto software that deals with bitcoin message verifications still will not validate bech32 signatures. The format is too new and most software libraries that deal with BTC were not yet updated to recognize bech32.
If you genuinely signed a message, the address was bc1
but the exchange customer support tells you the signature could not be verified, do point this out.
There is an alternative way to prove your ownership of that address: Move an arbitrary (but pre-defined) amount of crypto from the address in question to any other address you own.
By broadcasting a transaction from an address you prove you have the private keys to it. If it is a random specific amount, there is practically zero chance that the transaction out of the wallet could be coincidental. Any exchange should accept that as the proof of ownership.
The downside is you lose the transaction fees, especially if you need to first transfer some money to the address you’re verifying as well.