Komut biçimi
Her zNS işlemi, kayıt operatörünün protokol adresine gönderilen korumalı bir ZCash işlemidir; burada tutar ödemeyi, memo ise imzalı komutu oluşturur. İkisi de aynı notta yolculuk eder, böylece niyet ve ödeme ayrılmaz biçimde bağlanır — eşleştirilecek ayrı bir referans ya da fatura yoktur.
Bu sayfa, tam aktarım biçimini anlatır. Buna göre kurulmuş bir komutu hem kayıt operatörü hem de sıfır bilgi devresi kabul eder.
Yapı
Tüm komutlar iki nokta üst üste ile ayrılmış ASCII'dir ve protokol işaretçisi ile sürümle başlar:
zNS:1:{OP}:{name}:…:{ed25519_pubkey_hex}:…:{nonce}:{signature_hex}
Aradaki alanlar işleme göre değişir:
| İşlem | Memo yapısı | Ödenen tutar |
|---|---|---|
REG kaydet | zNS:1:REG:{name}:{address}:{pubkey}:{nonce}:{sig} | isim uzunluğuna göre kayıt ücreti |
UPD adres değiştir | zNS:1:UPD:{name}:{address}:{pubkey}:{nonce}:{sig} | değişiklik ücreti |
CHG sahibi devret | zNS:1:CHG:{name}:{new_pubkey}:{nonce}:{sig} | değişiklik ücreti |
LST satışa çıkar | zNS:1:LST:{name}:{pubkey}:{price}:{nonce}:{sig} | değişiklik ücreti |
ULT satıştan kaldır | zNS:1:ULT:{name}:{pubkey}:{nonce}:{sig} | değişiklik ücreti |
BUY satın al | zNS:1:BUY:{name}:{address}:{pubkey}:{nonce}:{sig} | tam olarak ilan fiyatı |
CHG için {new_pubkey}, devralan sahibin anahtarıdır; imza ise devreden sahip
tarafından atılır — bir devri yetkilendiren, mevcut sahiptir.
İmzalanan mesaj
İmza, komutu sondaki :{signature} olmadan kapsar; yani işaretçiden nonce dâhil olmak üzere
her şeyi:
zNS:1:REG:richard.zcash:u1…:0101…0101:1780000001
Kurallar kesindir ve bunlardan herhangi birini yanlış uygulayan bir istemci, devrenin reddettiği bir imza üretir:
pubkeyküçük harf hex'tir, 64 karakter.priceyalnızcaLSTiçin bulunur.addressyalnızcaREG,UPDveBUYiçin bulunur.pricevenonceondalıktır; başında sıfır, işaret veya dolgu olmaz.- İmza, tam olarak bu baytlar üzerinde Ed25519'dur; hex kodlu, 128 karakter.
Doğrulama katıdır: kanonik olmayan imzalar ve küçük mertebeli anahtarlar reddedilir.
Alan kuralları
İsim
| Kural | Değer |
|---|---|
| Karakterler | a-z, 0-9, tire |
| Uzunluk | bölge dâhil 1–64 karakter |
| Büyük/küçük harf | yalnızca küçük harf — isim küçük harfle saklanır ve hash'lenir |
| Tireler | başta olmaz, sonda olmaz, asla çift olmaz |
| Bölgeler | .zcash, .zec, .private, .secure, .safe |
Etiketi bölgeden ayıran tam olarak bir noktaya izin verilir.
Hedef adres
Bir ismin çözümlendiği adres, Orchard alıcısı taşıyan bir mainnet Unified Address olmalıdır. Bu alıcıya sahip olmayan adresler kabul edilmez.
Nedeni keyfî değil, pratiktir: kayıt operatörü tahsilat ve ödemelerini Orchard anahtar materyali üzerinden yapar; bu materyal ZIP 229 uyarınca Ironwood havuzunu da kapsar. Orchard alıcısı olmayan bir adrese ödeme yapılamaz, dolayısıyla ne iadeler ne de satış gelirleri için kullanılabilir.
Ironwood yeni bir alıcı eklemez
Ironwood yeni bir değer havuzudur, yeni bir adres biçimi değil. Cüzdanlar notları oraya taşır, alım adresi ise bir Orchard adresi olarak kalır. Güncel bir cüzdanın Unified Address'i olduğu gibi çalışır.
Nonce
Nonce, imzaladığınız andaki saniye cinsinden Unix zaman damgasıdır.
- O isim için hâlihazırda kayıtlı olan nonce'tan kesin olarak büyük olmalıdır. Eski bir imzalı komutun yeniden kullanılmasını önleyen budur.
- Kendisini taşıyan bloğun 300 saniyeden fazla önüne geçemez; bu pay, olağan saat kaymasını soğurur ama bir nonce'un çok ileri bir tarihe park edilmesine izin vermez.
İlk kayıt için güncel herhangi bir zaman damgası yeterlidir.
Fiyat
Fiyatı yalnızca LST taşır. Tam sayı zatoshi cinsindendir (1 ZEC = 100.000.000 zatoshi) ve
sıfırdan büyük olmalıdır.
Hâlihazırda listelenmiş bir ismi yeni bir fiyatla yeniden listelemek serbesttir — başka bir LST
gönderin. En sonuncusu geçerlidir.
Boyut sınırı
Bir ZCash memo'su tam olarak 512 bayttır ve komutun tamamı buraya sığmalıdır. Sabit kısımlar öngörülebilir bir yer tutar:
zNS:1:{OP}: … marker, version, operation 11 bytes
{pubkey} 64 hex characters 65 bytes with separator
{nonce} 10 digits today 11 bytes with separator
{signature} 128 hex characters 128 bytes
Geriye isim ile hedef adresin paylaşacağı yaklaşık 295 bayt kalır. Birden çok alıcısı olan bir Unified Address uzun olabilir; dolayısıyla çok uzun bir isimle çok uzun bir adres sığmayabilir. İstemciler bu bütçeyi hesaplayıp kullanıcı ödeme yapmadan önce uyarmalı, işlemin sonradan başarısız olmasına izin vermemelidir.
Ödeme
Geçerliliği memo kadar tutar da belirler:
REG, isim uzunluğuna karşılık gelen kayıt ücretini tam olarak ödemelidir.UPD,CHG,LST,ULT, değişiklik ücretini tam olarak ödemelidir.BUY, ilan fiyatını tam olarak ödemelidir.
Uzunluk, bölge hariç etiket üzerinden ölçülür: ab.zcash, 2 karakterlik bir isimdir.
Eksik ya da fazla ödenmiş bir komut işlenmez. İşlem ve açık anahtar okunabiliyorsa tutar iç bakiyenize yazılır ve çekilebilir — bkz. Soru & Cevap.
Sıralama
Komutlar, ZCash'in ürettiği sırayla işlenir: blok yüksekliği, sonra blok içindeki işlem indeksi, sonra girdi indeksi. Kayıt operatörü sırayı seçmez ve her bağımsız indeksleyicinin farklı bir kök hesaplamasına yol açmadan sırayı değiştiremez.
Çekişmeli işlemlerde — aynı isim için iki REG ya da aynı ilan için iki BUY — bu sıradaki ilk
işlem kazanır, diğerlerine tutar iç bakiyeye iade edilir.
Adım adım örnek
richard.zcash kaydı:
1. Generate an Ed25519 keypair. The public key is your identity across all your names.
2. Build the message to sign (note: no trailing signature field):
zNS:1:REG:richard.zcash:u1mvnsq85wane…:3757ee1a…a53:1780000001
3. Sign it with the private key; hex-encode the 64-byte signature.
4. Append it to form the memo:
zNS:1:REG:richard.zcash:u1mvnsq85wane…:3757ee1a…a53:1780000001:cfec7a58…04
5. Send a shielded transaction to the registrar address, with that memo, paying the
registration fee for a 7-character name.
Birkaç dakika içinde komut toplu işe alınır, ispatlanır ve çıpalanır. Bundan sonra
richard.zcash, kendiniz denetleyebileceğiniz bir Merkle ispatıyla birlikte herhangi bir
indeksleyici üzerinden çözümlenir.