OTP Verification
Admin actions — list, delist, and update — require one-time password (OTP) verification to prove you control the registered address. This is powered by ZVS (Zcash Verification Service).
How it works
- The interface generates a verification memo containing a unique session ID and your registered address
- You send this memo to yourself as a shielded Zcash transaction (minimum 0.002 ZEC)
- ZVS detects the transaction in the mempool and generates a 6-digit OTP using HMAC-SHA256
- ZVS sends the OTP back to your address as a shielded memo
- You enter the OTP in the interface to authorize your action
Why this exists
ZNS has no accounts or passwords. The only way to prove you own a name is to prove you control the Zcash address it's registered to. OTP verification does this by requiring you to send a transaction from that address and receive a response at it.
Memo format
The verification memo follows this format:
DO NOT MODIFY:{zvs/<session_id>,<your_address>}
session_id— 48-digit random number that seeds the OTPyour_address— the unified address registered to your name
Security properties
- Stateless — the OTP is deterministic (HMAC-SHA256 of the session ID), so both ZVS and the web interface can compute the same code independently
- Shielded — all verification transactions use Orchard shielded notes, so the OTP is never visible on-chain
- No login — there is no account to compromise; verification is per-action
