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"
shows0.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?