Proving ownership of Bitcoin (BTC) and Ethereum (ETH)?
“Not Your Keys, Not Your Bitcoin”. “Not Your keys, Not Your coins / crypto”. This is a common phrase mostly tweeted by the Bitcoin community. It not only applies to Bitcoin but also for Ethereum, Cardano, Litecoin and basically every other cryptocurrencies.
What it means is that if you don’t control the private keys you don’t control the cryptocurrency.
To prove that you own Bitcoin or Ethereum held in a particular address you need to prove that you own the private keys of that specific address. Private keys is what allows you to spend the coins. By proving a specific address you are proving that own whatever BTC or ETH is available on that address.
Best way to prove ownership of an address
To prove ownership of Bitcoin or Ethereum address you don’t actually have to spend coins from it. There is a feature called sign message that allows you to prove that you possess BTC without actually spending it and by never exposing your private keys.
What is message signing?
Message signing is a way for you to prove that you own a particular address. By proving ownership of an address you are demonstrating that you are in control of the coins held in that particular BTC address.
Many wallets including the hardware ones support the function of signing and verifying messages. It has proven to be a reliable feature and this is how it works.
You pick an address and type in a custom message to prove ownership. Upon signing, the wallet will hash your message into a single number and produces a signature using your private key.
Now by providing the custom message, signature and public key anyone can decode it and verify the sign message.
This way you never reveled your private key yet you’ve proved that you are in control of the private key of that particular Bitcoin address.
Now how do you sign / verify messages to prove ownership?
Prove ownership by signing messages
We’ve already made a guide explaining how to sign / verify messages. Here is how to sign messages on Bitcoin core and electrum wallet and here is a guide to signing messages on ledger devices. The same guide also explains signing a message to ETH address using My Ether Wallet.
Its pretty straight forward and you can basically sign any custom message. There is no cost to sign a message so you can sign any number of message you wish. Each messages associated with a BTC address produces an unique signature.
Pick the address that you wish to sign and the input your message something like “I (your name), am the owner of this particular Bitcoin address”. After signing send the signature, custom message and the address used to the interested party and they’ll be able to verify your private key ownership.
Just make the message more relevant like “This is Dan, at 2022-3-15, I claim ownership of address bc1234567890.”
Also not just the intended party but anybody can verify your ownership with your signature, public key and the message. The person who verified your ownership of a given address can then check your balance using block explorer.
This way you’ve proven that you are the owner and only you have access to that money.
Alright! But is there a way to sign message without private key?
Proving ownership without private key
Only way you control your Bitcoins is through your private key. To prove ownership of Bitcoin or Ethereum address you’ll have to use the underlying private key in some way. That is you either have to move coins or sign messages.
Without using the private key and other than message signing there is no proper way or alternate solutions to prove ownership.
Only users who are in control of the private key associated with an address can sign message and prove they are the owner of the particular address.
Alright! So I cannot prove the ownership of coins held in my exchange account?
True, you cannot prove ownership of coins in your exchange account as the exchange holds the private keys of your account. The only way to prove is by withdrawing and moving coins to the intended party.
Other than signing text message is it possible to attach a document such as passport, driving license to prove ownership of a specific address?
Sure, but wallets currently do not have the option to digitally sign a document. You’ll have to use IPFS (InterPlanetary File System) and some third party services to achieve this.
What you can do is generate a hash for the image file or document and then sign a message stating “This is my license / passport. My document is attached at https://filelocation/xxx/. The hash is 134f67d48c7f11afb85729790ef74c3h”
The intended party can then verify the hash of the file and confirm the same.
Don’t worry about the confidentiality of the document because Hash functions are one way functions. You can hash any document of any size. One can verify it but the document cannot be recovered from the given hash.