Skip to main content

What is ZCash Names?

Briefly

ZCash Names is a naming protocol for ZCash working on-chain and based on Private Memo. It lets you register human-readable names like richard.zcash and map them to ZCash addresses. Every registration is proven correct with a Zero-Knowledge Proof.

The Problem

ZCash addresses are too long. They look like this:

u1zk30kje24v9n08lxq6ja9lfd8q3q54g7uawra7hwa05k4r56nkzzu62cy2apdungu4ehws95vjflw2lakt62j5wynwcje6t6yjcg9v5sp7r7048lgsprukv8r70pmpsk4tsqrqy58aglywh23grvs7kq75zk4c3zy57267u34vecm35yuexkrsmzphcu2dzph4r8rk0h0rlh5su7yhs

The Solution

Register a name by sending a single ZCash transaction. An Indexer watches the blockchain, validates each registration, and builds a registry. A Zero-Knowledge Prover then generates a mathematical proof that every registration is correct.

Anyone can resolve richard.zcash to get Richard's address. Anyone can verify the proof. No trust required.

Name Rules

RuleValue
Allowed charactersa-z, 0-9, hyphens
Length1 - 64 characters
Case sensitivityCase-insensitive (stored lowercase)
HyphensNo leading, trailing, or consecutive
TLD.zcash, .zec, .private, .secure, .safe

Registration Prices

See Name Registration

Name LengthFee
1 character5.5 ZEC
2 characters4 ZEC
3 characters2.45 ZEC
4 characters1.2 ZEC
5 characters0.65 ZEC
6 characters0.35 ZEC
7+ characters0.15 ZEC

Update Prices

See Name Managing, Marketplace

Name LengthFee
1 character0.006 ZEC
2 characters0.004 ZEC
3 characters0.002 ZEC
4 characters0.0011 ZEC
5 characters0.0008 ZEC
6 characters0.0005 ZEC
7+ characters0.00025 ZEC

The Registrar

The registrar's protocol address, its viewing key and the anchor contract are all published. This is deliberate: the viewing key is what lets anyone audit the service without asking permission, and the contract is what they check their own result against.

Protocol address — send every command here:

u1nlded5cat3n9r4m0tpxr5a7sy3emccvaun7n4x9w848qa7ncl4eg5v2zyat4kevaa4fwfq0unwj3vnczfax3s9rutma43dckgqss8qrg

Viewing key — decrypts everything that address has ever received:

uview1uxy3j27qhwkh8peq8k6g0vldalgqm4lyfxwuc2r95jelk458gmx6elc4e92t9g75x655vd7nxrtv3gllvajt3n8v0x36224ma3hrtvvtps7ejxysx8puelggt86vfuslxvdvjq7a778chqtcg626lcsr0ht26v3wgyfu5u04sn2qsle9k7faakg479tqf

Anchor contract — where every state root is published, on BNB Smart Chain (chain ID 56):

0x6c01003716b0a74933325be1baf34fe34cf3e0d3

A replay has to start from a known point, so the two ends of the chain are pinned as well. These are the checkpoints an independent indexer begins from:

CheckpointValue
ZCash start block3438108 — the protocol wallet's birthday; no service transaction can exist before it
Genesis state root0x0000…0000 — 32 zero bytes, the root of an empty registry
Contract deployment block114326974
Deployment transaction0x9a4b9a22…e6a5bd6c

The genesis root is all zeros because in the compact Sparse Merkle Tree an empty subtree is 32 zero bytes at every height — so an empty registry hashes to zero, and that is the value the contract was deployed with. Anyone replaying from block 3438108 arrives at the same starting state without being told what it is.

With these values you can scan ZCash from the start block, decrypt every command and payment the service has ever received, replay them through the open-source indexer, compute the state root yourself, and compare it against the contract with isRootValid(bytes32) — see Verifying Proofs. If the registrar ever censored, reordered or invented an operation, your root would differ from the one on-chain.

The indexer ships with its own resolution API, so you never have to depend on a public endpoint — including ours.

warning

Verify these values before relying on them

Cross-check the address, viewing key and contract address against the GitHub repository and the app itself; the contract and its deployment transaction can also be read straight off BscScan. A documentation site is exactly the thing an attacker would want to alter.

ResourceURL
Appzcashnames.co/app
App Torzns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion/app
Indexer Torindexer.zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion
GitHubgithub.com/ZCashNames
APIGo to page
Documentationdocs.zcashnames.co