MOD Note: For clarification this appears to be a separate naming service from the ZNS at zcashnames.com which received a Zcash Community Grant
…
Unified Addresses solved a real problem, and created a smaller one. A
single-receiver Orchard address is 106 characters. Add a Sapling receiver and
it’s 178. Add a transparent one and it’s 213. Those are measured lengths from
our own test vectors, not estimates.
Nobody verifies a string like that. In practice people check the first four
characters and the last four — eight out of 213 — and hope the clipboard was
honest. ZCashNames replaces it with something you can actually read out loud:
bob.zcash.
It went live on mainnet today.
How a command reaches the protocol
Registering, updating, listing or buying a name is a single shielded ZCash
transaction sent to the protocol address. The amount is the payment and the
ZIP-302 memo is the signed command. Both in the same note.
That matters more than it sounds. Because intent and payment travel together,
they can’t be separated, reordered, or invented after the fact — and block
height, index within the block and input index give every command a
deterministic total order. There is no separate “reference number” step, and no
window where you’ve paid but the instruction is still in flight.
Why you don’t have to trust us
This is the part worth reading carefully, because it’s the part most name
services get to skip.
We publish the protocol address and its viewing key. With those, anyone can:
- scan the chain and recover every command ever issued, from genesis, in the
exact order the blockchain fixed; - replay them through the open-source indexer, which implements the same rules;
- compute the registry’s state root independently;
- compare it against the root anchored on-chain.
If we ever censored a paid command, invented a transfer, mis-credited a balance
or reordered history, every independent indexer computes a different root and
contradicts us — without permission, without asking, and without any special
access. The indexer ships as a Docker image; running one is a single command.
The state root is anchored with a zero-knowledge proof (SP1, Groth16) that the
transition rules were followed. To be clear about what that proof does and
doesn’t do: it lets the anchor contract accept a root without scanning ZCash
itself. It does not prove the inputs were the real chain command stream —
replication does that job, and does it better, because an indexer sees the
decrypted amount and memo while a circuit would only see a note commitment. The
anchor lives on BNB Smart Chain purely because anchoring needs to be cheap and
frequent; none of your data or funds go there.
The honest framing: this is fraud-evident, not fraud-preventing. A bad
batch could reach the chain and be contradicted afterwards. Nothing in the
design stops it being published in the first place. What the design guarantees
is that it cannot be hidden, and that you never needed our cooperation to find
out. We’d rather say that plainly than call it “trustless” and have you discover
the nuance later.
A fair start
- No pre-registration. No waitlist, no invite codes, no referral ladder, no
block of premium names reserved for insiders or investors. The registry opened
empty and every unclaimed name goes to whoever asks first — where “first” is
decided by block height and position, not by us. - No renewals. There is no expiry date in the protocol, no annual fee, no
check-in window to miss. A name leaves your control only when you sign a
command transferring or selling it. There is no mechanism — for us or anyone —
to reclaim it. - No custody. Names bind to your Ed25519 key and every change is a command
you sign. We never hold your keys and can’t move a name on your behalf.
Pricing
One-time, by name length, identical for every zone and every registrant — they
are protocol constants, not a policy we can quietly change per customer:
| Length | Register (once) |
|---|---|
| 1 char | 5.5 ZEC |
| 2 | 4 ZEC |
| 3 | 2.45 ZEC |
| 4 | 1.2 ZEC |
| 5 | 0.65 ZEC |
| 6 | 0.35 ZEC |
| 7+ | 0.15 ZEC |
Re-pointing a name at a different address later costs between 0.00025 and 0.006
ZEC, and you can do it as often as you like. Marketplace sales carry a flat 5%
service fee. Five zones are available: .zcash, .zec, .private, .secure,
.safe.
Labels are restricted to lowercase a–z, digits and hyphens — no Unicode, so
the homograph tricks that plague other naming systems aren’t possible here.
On privacy
Commands travel as shielded transactions, so amounts and addresses stay off the
public ledger. A name is a way for someone to reach you, not a window into your
balance or history — closer to publishing an email address than a bank
statement.
Roadmap
- A names explorer (in development) — a block explorer shows transactions;
this one shows names. Every registration, address change, ownership transfer,
listing and sale as one searchable history, without running a node yourself. - Wallet integration (next) — see below.
- Whatever you ask for. Past those two the roadmap is deliberately
unwritten, and we’d rather it were shaped by this forum than by us guessing.
Wallet developers — we’d like to work with you
The point of a name is that you never touch the address. That’s only fully true
once the wallet resolves names itself. Resolution is a plain HTTP call to any
indexer — including one you run — and returns the target address with a Merkle
proof against the anchored root, so your users don’t have to trust our server
either.
If you build a ZCash wallet, we would much rather do this with you than around
you. Reach us at info@zcashnames.co and we’ll work to whatever shape suits
your codebase.
Links
- Site: https://zcashnames.co
- Register a name: ZCashNames - Decentralized Domain Name Service for ZCash (.zcash & .zec)
- Documentation: https://docs.zcashnames.co
- Source: ZCashNames (ZCash Names) · GitHub
- Telegram: Telegram: View @zcash_names
Also reachable over Tor — the app and a public indexer, addresses in the docs.
Happy to answer anything, including the awkward questions. If you find a way to
make the registry disagree with itself, we’d genuinely like to hear about it.
