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
| Rule | Value |
|---|---|
| Allowed characters | a-z, 0-9, hyphens |
| Length | 1 - 64 characters |
| Case sensitivity | Case-insensitive (stored lowercase) |
| Hyphens | No leading, trailing, or consecutive |
| TLD | .zcash, .zec, .private, .secure, .safe |
Registration Prices
| Name Length | Fee |
|---|---|
| 1 character | 5.5 ZEC |
| 2 characters | 4 ZEC |
| 3 characters | 2.45 ZEC |
| 4 characters | 1.2 ZEC |
| 5 characters | 0.65 ZEC |
| 6 characters | 0.35 ZEC |
| 7+ characters | 0.15 ZEC |
Update Prices
See Name Managing, Marketplace
| Name Length | Fee |
|---|---|
| 1 character | 0.006 ZEC |
| 2 characters | 0.004 ZEC |
| 3 characters | 0.002 ZEC |
| 4 characters | 0.0011 ZEC |
| 5 characters | 0.0008 ZEC |
| 6 characters | 0.0005 ZEC |
| 7+ characters | 0.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:
| Checkpoint | Value |
|---|---|
| ZCash start block | 3438108 — the protocol wallet's birthday; no service transaction can exist before it |
| Genesis state root | 0x0000…0000 — 32 zero bytes, the root of an empty registry |
| Contract deployment block | 114326974 |
| Deployment transaction | 0x9a4b9a22…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.
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.
Links
| Resource | URL |
|---|---|
| App | zcashnames.co/app |
| App Tor | zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion/app |
| Indexer Tor | indexer.zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion |
| GitHub | github.com/ZCashNames |
| API | Go to page |
| Documentation | docs.zcashnames.co |