0

Context

I would like to verify being A has access to a wallet and hence would like to ask them to pay a minimum amount to a particular wallet address owned by someone other than me, e.g. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, with a signature ThisIsUnexpected that I gave to the being A.

The basic concept I believe is quite simple, if being A agrees, they share with me their bitcoin wallet address:being_A_bitcoin_wallet_address. Next, I would share the expected signature, and selected recipient address (e.g. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa) with being A. Being A then pays a minimal amount of bitcoin to 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa. After the transaction is completed, I look at the transaction history of the received donations to 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa and find the transaction made by being_A_bitcoin_wallet_address. Next, I look at the signature of that particular transaction and verify it reads: ThisIsUnexpected. If the transaction indeed has that signature I have a high certainty being A has access to being_A_bitcoin_wallet_address and I can verify their amount of funds.

Challenge

Though the idea may be relatively simple, I am experiencing some challenges in the execution.

To test the verification procedure, I thought I would look up the signatures of past transactions to that address. Hence I went to: https://www.blockchain.com/btc/address/1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa and looked at the list of transactions. At the moment of writing, this is the most recent transaction, so I thought I could perhaps take the Sigscript of the transaction (with index 1) and put it into this signature verification tool to get a human-readable signature. However that tool does not seem to provide a human-readable signature, nor do I know whether the arbitrary transaction I selected contains a "Thank you Satoshi"-like signature.

Question

How could I practically verify the signature of a bitcoin transaction (if it has one)?

Subquestions

I think this question could be segmented in the following sub-questions:

  • How can I verify that an arbitrary transaction contains a human-readable signature?
  • Which information of the transaction data should I use to obtain a human readable form of the transaction signature?
  • Which online resources could be used to verify a signature?
  • Is there a python script that provides a function: being_has_access_to_wallet(claimed_wallet_access_address, recipient_wallet_address,human_readable_signature, amount=0.0001) that returns True or False using something like a block explorer?
1
  • 1
    I am not sure what exactly you mean with the ThisIsUnexpected bit but the fact that he can send coins from claimed_wallet_access_address to recipient_wallet_address proves that he owns the address.
    – Mike D
    May 8 at 17:24
1

How can I verify that an arbitrary transaction contains a human-readable signature?

There is no such thing as "human-readable signature". The signature is just a very big number. Or we can treat it as a pair of very big numbers. Usually we encode it in hex, so it looks like 3044022007ae5e36b79303f992e153798061458b435d34285c5fddc20655451ac71b49f6022079421d162cad51db0daa0a934cbf5261d4b53f185604e9790094a49145f3812f01

Which information of the transaction data should I use to obtain a human readable form of the transaction signature?

Input scripts

Which online resources could be used to verify a signature?

Google for "ecdsa verify signature online". But I am not sure that these resources are suitable to verify bitcoin signatures.

0

The question was based on an invalid assumption. I incorrectly thought/assumed that it was possible to include a public message in a bitcoin transaction. The accepted answer to this question indicates that it is possible to include a message in a transaction, but that those messages are private (between sender and recipient).

Instead, from sources like this it seems possible to prove one is the owner of a wallet without having to do a transaction. I initially was not in favor of entering ones private key in someone else's website, but that is not necessary as one can download the source code of the website that can be used to generate such proofs here. So to answer the XY-problem of the question:

  1. Being A could download that code, or got to: https://reinproject.org/bitcoin-signature-tool/#sign
  2. Fill in its private key in Private Key.
  3. Fill in its own Bitcoin wallet address.
  4. Fill in the ThisIsUnexpected signature in the Message field.
  5. Click Sign Message
  6. Share that Signed Message with me.
  7. Then I could download the code of that website or go https://reinproject.org/bitcoin-signature-tool/#verify
  8. I could copy that Signed Message and click verify/see if the code/website says the Signed Message is verified.

This allows being A to prove ownership of a wallet (without for example paying money to scammers that ask it to prove ownership to get the minimal transaction amount, and without losing transaction costs.

Not the answer you're looking for? Browse other questions tagged or ask your own question.