Z address length

A Sapling z-address contains a 32-byte public key and an 11-byte diversifier, which are concatenated and then encoded using Bech32 to get a 78-character address.

  • The public key is 32 bytes because that is the size of encoded Jubjub group elements, and is necessary to target the 128-bit security level.
  • The diversifier enables diversified addresses. An 11-byte diversifier enables 287 addresses to be generated corresponding to a single spending key, which is a large enough domain to support almost any use case. We picked 11 bytes because that was the largest diversifier space we could have while keeping the Bech32-encoded z-address under 80 characters.

If we had not included diversified addresses in the protocol, the addresses would be around 61 characters long instead of 78. We did include it because for many-to-one use cases (such as large exchanges), diversified addresses provide a huge performance improvement. But even without that feature, the addresses would still be pretty long, much more so than in a petname or registered name system like above (which has its own set of problems).

7 Likes