Zcash Shielded & Transparent Addresses Explained
Last Updated: 1st November 2018
The Zcash protocol currently supports two types of addresses: “t-addr”, or transparent addresses and “z-addr”, or shielded addresses.
Transparent addresses on the Zcash protocol are equivalent to public addresses on the Bitcoin protocol, and thus, function in much same way. All transparent addresses, during a transaction, interact with what is known as the Transparent Value Pool, or TVP for short. The TVP is what publicly reveals transaction data, allowing it to be viewed on the Zcash blockchain by anyone.
Shielded addresses on the other hand, encrypts transaction data and requires the generation of zk-SNARKs in order to verify the transaction’s validity. Shielded addresses bring an increased level of privacy and security compared to transparent addresses.
There can be only 4 permutations of transactions between addresses on the Zcash protocol, each will result in a shielded or deshielded transaction. These permutations are as follows:
- Transparent address to transparent address = A deshielded transaction
- Transparent address to shielded address = A shielded transaction
- Shielded address to shielded address = A shielded transaction
- Shielded address to transparent address = A deshielded transaction
To illustrate, consider that Alice wants to send 5 ZEC to Bob. She decides to send this transaction from her transparent Zcash address to Bob’s shielded Zcash address. Using the information described above, the resulting transaction will therefore be shielded.
It is important to note that regardless of which type of address used to conduct a transaction, the transaction fee will always be visible.
The use of a shielded address permits a user to break the link between transactions that would otherwise be traceable if a transparent address has been used used. For example, if a repeat payment of 1 ZEC was made between two transparent addresses on the same day every month, it would be simple to infer that the payments may be some sort of subscription service. If there were multiple inbound payments of 1 ZEC to that one address from several addresses, this notion would further be corroborated. A link has therefore been established between any transparent address that transacts with the address of the subscription service.
However, such linking is made more difficult through the use of shielded addresses. Because transactions between two shielded address results in the obfuscation of the transaction data, It becomes difficult to discern the nature of relationship between any two shielded addresses. Although, it is important to note that shielded transactions do not entirely remove the possibility of linkability between transactions.
As of this writing, 14.5% of all transaction on the Zcash protocol are shielded transactions. Because this number is not closer to 100%, an individual can still deduce the amount of funds a shielded address may have transacted with, particularly if a shielded address transacts with a transparent address, resulting in the deshielding of the transaction.
For example, consider the earlier example in which Alice sends 5 ZEC from her transparent address to Bob’s shielded address, resulting in the transaction itself being shielded. If Bob were then to send 4 ZEC to Carol’s transparent address from the same shielded address, resulting in the deshielding of the transaction, an individual would be able to deduce that Alice initially sent Bob 5 ZEC.
This issue is further compounded if the transactions occurred at similar block numbers. For example, if Alice sends Bob 5 ZEC in block 45012 and Bob sends Carol 4 ZEC in block 45015, it makes it more likely that the two transactions are linked.
To conclude, there exists two types of addresses on the Zcash protocol: transparent and shielded addresses.
Transparent addresses operate in much the same way as a Bitcoin address, where as shielded addresses provide an increased level of transactional privacy through the use of zk-SNARKs.