I was playing with the zcash testnet and figured there are two different types of addresses available: z
and t
. Is this a privacy feature?
What's the difference between z-addr
and t-addr
type addresses?
This is now explained in the current Beta Guide:
Zcash has two kinds of address: a z-addr is a fully private address that uses the zero-knowledge proving system to shield a transaction and balance privacy. A t-addr (aka "transparent address") is similar to a Bitcoin address.
An address can be created using:
zcash-cli getnewaddress # t-addr, or
zcash-cli z_getnewaddress # z-addr
t-addr
is a 36 characters long string beginning with t
.
z-addr
has 96 characters and starts with z
.
In addition to what is said above, the creators of zcash wanted an anonymous payment system. Bitcoin addresses are visible publicly in the blockchain. Zcash wanted to give the users the option of hiding the address to provide anonymity, hence the z-addr. The t-addr is a public address that can be viewed publicly. If the user chooses to be anonymous, they can use a z-addr. This address cannot be viewed by the miners verifying the transaction.
This is the current explorer for the zcash blockchain. If you look at block 3706, the 3rd transaction from the top, you can see the input addresses are t-addresses but the output is blank because the output address is a z-address. Similarly, this transaction shows the output addresses but not the input addresses.
So in short, both addresses are the same, i.e. both are addresses to your zcash wallet. The only difference being that you can choose which address to use to accept or to pay zcash and as a result let others see your address on the blockchain or not.