How to check ownership of wallet with segwit address So .. this seems like a simple question.

If i have a wallet and someone wants to send me BTC. I want to make sure they own the wallet they claim to be sending funds from. Usually people do something like a satoshi test do confirm this.

Before segwit one could sign a message and with address given, you could decrypt the message to confirm they actually own the wallet containing that address.

After segwit that functionality is broken.

Furthermore, i can't take the getrawtransaction &lt;trans&gt; 1 command to find the vin of the transaction and the to extract the txid and vout of the vin. Then using that txid and again run getrawtransaction &lt;trans&gt; 1 and look at the coorepsonding vout and the "n" that matches the previous vout not longer works after segwit. (all of this makes sense as the way transactions are formed is completely different).

Therefore: If someone is supposed to send me 0.00001 BTC, how do i verify what wallet that came from.

In Simpler terms: How can i verify that someone owns a wallet with segwit addresses?
Before segwit one could sign a message and with address given, you could decrypt the message to confirm they actually own the wallet containing that address.


As you discovered, the signmessage and verifymessage RPCs in Bitcoin Core don't currently work with segwit.  There have been discussions about the best way to fix that, but as of this writing, updated code is not yet available.


  Furthermore, i can't take the getrawtransaction  1 command to


The getrawtransaction RPC now takes true instead of 1 for detailed JSON output.  The txid, vout, and vin fields in the JSON output all the same for the way you're using them (they just have a few extra fields now for segwit outputs and inputs).


  How can i verify that someone owns a wallet with segwit addresses?


There is no easy way at the moment using Bitcoin Core or any other software I'm aware of.  If possible, you may want to change your workflow so that you don't need to verify wallet ownership.  For example, if you currently receive all payments to the same address, you can start using separate addresses for each customer, so Alice pays $ADDRESS_1, Bob pays $ADDRESS_2, and you can tell the difference between their payments by which address they paid.

Alternatively, if you need to verify address ownership for refunds, you can have users provide a refund address at checkout.