How to check if a Tx received in wallet is "shielding" or "fully shielded"?

When I sell ZEC, I can securely avoid deshielding my funds by refusing to pay taddrs, and only ever paying to zaddrs. Good.

But on the way in, when I buy some ZEC and give someone my zaddr, I can’t stop them from using a transparent taddr as the sender address. What I receive could have the sender taddr and transaction amount exposed. In that case, it will need a fully shielded ‘churn’ (or other shielding command) to make the funds fully private.

(I wish there was a way to generate an address such that consensus rules disallowed anything other than zaddrs to send it money, but I don’t know of one.)

Using zcash-cli, how do I check that one of my transactions is one type or the other? (Would be easiest way and most private, certainly compared to checking an external blockchain explorer.)

Let’s see if I got it right (documenting steps in case helps others):

  • First obtain your zaddr: zcash-cli z_listaddresses
  • Then obtain the zaddr’s tx id: zcash-cli z_listreceivedbyaddress <zaddr>
  • Then inspect what the tx looks like in public: zcash-cli gettransaction <txid> - if "amount" shows 0.00000000, it’s fully shielded.
  • Then compare how it looks like secretly to you (and the other party in their wallet): zcash-cli z_viewtransaction <txid> - you will see the shielded, actual amount, and your own recipient address. (Sender address still hidden from you, good!)

If it’s shielding, I would see a non-zero ZEC "amount" and the sender address too.

Did I get it right? :slight_smile:

Zaddys are not exposed on the blockchain, that t2z you postulate would be a taddy and value that goes to a question mark → ? :shield: (something like that). I guess you can churn it but I’m not sure it’s absolutely necessary.