IntroductionA lot of people are asking how to prove or claim the ownership of bitcoin belonging to a certain public address.
Say your name is Jane Doe, and you want to make business with a John Doe, who claims his public address is 19Ho6eA4hBtb7hkN1S6GdmHD611Egd7gtC and that he had exactly 2.04531538 BTC on October 15, 2015. How can John prove without doubt that he indeed owns this address, so that Jane can be absolutely confident that it is the case?
In this short tutorial we will show you how you can accomplish all this using our favorite wallet,
Electrum. You don't need any coding skills at all, but you should be familiar with the concept of private and public keys, and not the least, the importance of NEVER SHARING YOUR PRIVATE KEY with anyone or send it online in any form.
All private and public keys inhere are for educational purposes and should never be recycled - or you will be robbed in the blink of an eye.The blockchain is not enough - A screenshot is not enoughJohn sends Jane the following link to the blockchain
https://blockchain.info/address/19Ho6eA4hBtb7hkN1S6GdmHD611Egd7gtCSure, the public address is there, the amount and the date too. But pretty soon Jane realizes that John could have picked
any random address on the blockchain and sent her as "proof".
Jane asks John for better evidence, and John replies with two screenshots of his wallet:
Alright, so it certainly looks like John is telling the truth. But - images are very easily manipulated. John could have used Photoshop to create these images.
Jane is therefore still not convinced. And she shouldn't be. She requires definitive proof. The best part is that she can have it!
Signing and verifying messages - a perfect proofA bitcoin address consists of a private key - which you should keep REALLY private - and a public key, which is the same as your public address. Here is the sweet part: A cryptographic keypair can be used to sign messages. Without even involving the blockchain.
If John truly owns the public address that he claims, he also owns its private key. And it can be used to sign messages.
In this example, John indeed owns the bitcoin address he claims. Specifically, his credentials are:
Private key: 5KSFWJRuCuTFFsPQgokmLuKbY84f8e9pcWaJX2C7r8jsLi2RuJF
Public key: 19Ho6eA4hBtb7hkN1S6GdmHD611Egd7gtC
BEWARE - NEVER USE THESE - SIMPLY AN ILLUSTRATIVE EXAMPLEJane now realizes that if John is honest, he has access to his keypair and thus able to sign messages for Jane.
Now, Jane asks John to sign a specific message, using his keypair. Jane wants John to sign his public key, i.e. his bitcoin address, with the message "I own this address, Jane!"
And this can be swiftly done in Electrum. John simply imports his private key into a fresh wallet, selects Tools/Sign/verify message, and...
The wallet spits out the following code...
I own this address, Jane!
19Ho6eA4hBtb7hkN1S6GdmHD611Egd7gtC
GxHVqiSW+WxEA+IlNB5oqDpzLba7MJxYJl5Gr3ijm1SQYb9xEukrvnoXPbfi1k+wa54k0F/0tQ0hdsEjw1paa5w=
... which he sends Jane. Note especially that he could NOT have signed this message without his private key. And even more important, John never sends Jane his private key.
Jane is now able to use Electrum on her own computer. Without importing any specific wallet details at all, Jane can now use the same function and paste in her own EXACT message, John's bitcoin address, the signed code, and press "Verify". And she gets...
ConclusionMission accomplished! Jane can now be 100% confident that John owns the address he claims he does. John has proven beyond all doubt that he controls the bitcoin address he says he does.
If you're considering dealing bitcoins with people you are unsure about, simply ask them to sign a message for you. It is really easy, and it makes the whole crypto ecosystem significantly safer and more credible. Win-win!