The zkBob account doesn't contain any fixed address. Instead if you want to receive funds you should generate and provide private addresses. In general a new private address can be generated for every incoming transaction. It is not possible to link different private addresses derived from the single account to one another or to the primary account. Only the account owner can confirm a private address belongs to the account.
Prepare address data buffer (buf, 42 bytes): join 10 byte of the diversifier with 32 bytes of the Pd.x
Get address checksum: checksum=keccak256(buf)
Attach checksum first 4 bytes to the buf
Encode buf with Base58 to the string
Thus the address string contains the diversifier public key (d,Pd) protected with checksum to avoid typos. Checking any private addresses for ownership is very straightforward. You decode the address string and extract d and Pd values. Next you derive Pd′ with the your η key. The private address belongs to your account only if Pd′=Pd.
Address derivation example
Let's imagine you have an account with the intermediate key:
All big numbers on this page are presented in the hexadecimal form to reduce line width. If you want to convert them to the decimal form please use a third-party tool (example)
To derive a private address we should generate a random diversifier d and calculate the Poseidon hash for it: