Most Bitcoin addresses are derived using public key cryptography, so in the same way that our wallet can use a private key to sign a transaction that spends some BTC, it can also use a private key to sign an arbitrary message (in this case, a message that says “I own this address!”).

As example: By using the private key that controls a funded bitcoin address, you can prove that you own the coins stored at that address (or at least, you can prove that you have knowledge of the private key that can spend them). Lets say Address X has 1 BTC, and so you create a message that reads Address X is controlled by Takwon’, and then sign that message using the private key for Address X. You can now pass this signed message to someone, and they can verify that you do indeed have knowledge of that private key.

This post has info about how to create a signed message using bitcoin-cli:
How to sign a message using Bitcoin private key?

This post has info about how to verify a signed message using bitcoin-cli:
How can I verify a signed message?

This post has info about the nature of the signed message – to be absolutely sure that someone owns the address in question, you should provide a message that they will sign.
If someone wanted to pretend to be Satoshi by posting a fake signature to defraud people how could they?

And is/could this be done without actually revealing which coins/parts of coins you control? Only that you have X amount of BTC in your wallet.dat?

The method above reveals which address(es) you control to anyone that is verifying the signed message(s). I am unaware of any method that would allow you to prove ownership of some amount of coin, without revealing which specific UTXOs constitute those funds. Perhaps there is some fancy ZKP math which could be done on a UTXO set commitment to accomplish this, but as far as I know no such thing has been developed for Bitcoin at this time (and, perhaps it is not possible, I’ll leave that to the cryptographic experts to explain in more detail).


Source link

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *