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.)
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:
- 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
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?