Was ist ZCash Names?
Kurz gefasst
ZCash Names ist ein Namensprotokoll für ZCash, das on-chain arbeitet und auf privaten Memos beruht. Damit lassen sich menschenlesbare Namen wie richard.zcash registrieren und auf ZCash-Adressen abbilden. Die Korrektheit jeder Registrierung wird mit einem Zero-Knowledge-Beweis nachgewiesen.
Das Problem
ZCash-Adressen sind zu lang. Sie sehen so aus:
u1zk30kje24v9n08lxq6ja9lfd8q3q54g7uawra7hwa05k4r56nkzzu62cy2apdungu4ehws95vjflw2lakt62j5wynwcje6t6yjcg9v5sp7r7048lgsprukv8r70pmpsk4tsqrqy58aglywh23grvs7kq75zk4c3zy57267u34vecm35yuexkrsmzphcu2dzph4r8rk0h0rlh5su7yhs
Die Lösung
Einen Namen registrieren Sie mit einer einzigen ZCash-Transaktion. Ein Indexer beobachtet die Blockchain, prüft jede Registrierung und baut daraus ein Register auf. Ein Zero-Knowledge-Prover erzeugt anschließend einen mathematischen Beweis dafür, dass jede Registrierung korrekt ist.
Jeder kann richard.zcash auflösen und Richards Adresse erhalten. Jeder kann den Beweis prüfen. Vertrauen ist nicht nötig.
Namensregeln
| Regel | Wert |
|---|---|
| Erlaubte Zeichen | a-z, 0-9, Bindestriche |
| Länge | 1 - 64 Zeichen |
| Groß-/Kleinschreibung | Wird ignoriert (Speicherung in Kleinbuchstaben) |
| Bindestriche | Nicht am Anfang, nicht am Ende, nie doppelt |
| Top-Level-Zone | .zcash, .zec, .private, .secure, .safe |
Registrierungspreise
Siehe Namensregistrierung
| Namenslänge | Gebühr |
|---|---|
| 1 Zeichen | 5.5 ZEC |
| 2 Zeichen | 4 ZEC |
| 3 Zeichen | 2.45 ZEC |
| 4 Zeichen | 1.2 ZEC |
| 5 Zeichen | 0.65 ZEC |
| 6 Zeichen | 0.35 ZEC |
| 7+ Zeichen | 0.15 ZEC |
Änderungspreise
Siehe Namensverwaltung, Marktplatz
| Namenslänge | Gebühr |
|---|---|
| 1 Zeichen | 0.006 ZEC |
| 2 Zeichen | 0.004 ZEC |
| 3 Zeichen | 0.002 ZEC |
| 4 Zeichen | 0.0011 ZEC |
| 5 Zeichen | 0.0008 ZEC |
| 6 Zeichen | 0.0005 ZEC |
| 7+ Zeichen | 0.00025 ZEC |
Die Registrierungsstelle
Die Protokolladresse der Registrierungsstelle, ihr Viewing Key und der Anchor-Vertrag sind alle drei veröffentlicht. Das ist Absicht: Der Viewing Key erlaubt es jedem, den Dienst ohne Erlaubnis zu prüfen, und der Vertrag ist das, wogegen man das eigene Ergebnis abgleicht.
Protokolladresse — hierhin gehen alle Befehle:
u1nlded5cat3n9r4m0tpxr5a7sy3emccvaun7n4x9w848qa7ncl4eg5v2zyat4kevaa4fwfq0unwj3vnczfax3s9rutma43dckgqss8qrg
Viewing Key — entschlüsselt alles, was diese Adresse je empfangen hat:
uview1uxy3j27qhwkh8peq8k6g0vldalgqm4lyfxwuc2r95jelk458gmx6elc4e92t9g75x655vd7nxrtv3gllvajt3n8v0x36224ma3hrtvvtps7ejxysx8puelggt86vfuslxvdvjq7a778chqtcg626lcsr0ht26v3wgyfu5u04sn2qsle9k7faakg479tqf
Anchor-Vertrag — hier wird jeder Zustands-Root veröffentlicht, auf der BNB Smart Chain (Chain-ID 56):
0x6c01003716b0a74933325be1baf34fe34cf3e0d3
Eine Wiedergabe der Historie muss an einem bekannten Punkt beginnen, deshalb sind auch beide Enden der Kette festgeschrieben. Dies sind die Checkpoints, von denen ein unabhängiger Indexer startet:
| Checkpoint | Wert |
|---|---|
| ZCash-Startblock | 3438108 — der Geburtstag der Protokoll-Wallet; davor kann keine Diensttransaktion existieren |
| Genesis-Zustands-Root | 0x0000…0000 — 32 Nullbytes, der Root eines leeren Registers |
| Block der Vertragsbereitstellung | 114326974 |
| Bereitstellungstransaktion | 0x9a4b9a22…e6a5bd6c |
Der Genesis-Root besteht aus lauter Nullen, weil im kompakten Sparse Merkle Tree ein leerer
Teilbaum auf jeder Höhe 32 Nullbytes ist — ein leeres Register hasht also auf null, und genau
mit diesem Wert wurde der Vertrag bereitgestellt. Wer ab Block 3438108 wiedergibt, gelangt
zum selben Ausgangszustand, ohne dass man ihn ihm sagen müsste.
Mit diesen Werten können Sie ZCash ab dem Startblock scannen, jeden Befehl und jede Zahlung
entschlüsseln, die der Dienst je erhalten hat, sie durch den
quelloffenen Indexer wiedergeben, den
Zustands-Root selbst berechnen und ihn per isRootValid(bytes32) gegen den Vertrag prüfen —
siehe Beweise prüfen. Hätte die Registrierungsstelle je eine
Operation unterschlagen, umsortiert oder erfunden, wiche Ihr Root von dem on-chain ab.
Der Indexer bringt seine eigene Auflösungs-API mit, sodass Sie nie von einem öffentlichen Endpunkt abhängig sind — auch nicht von unserem.
Prüfen Sie diese Werte, bevor Sie sich darauf verlassen
Gleichen Sie Adresse, Viewing Key und Vertragsadresse mit dem GitHub-Repository und der App selbst ab; Vertrag und Bereitstellungstransaktion lassen sich außerdem direkt auf BscScan nachlesen. Eine Dokumentationsseite ist genau das, was ein Angreifer verändern wollen würde.
Links
| Ressource | Adresse |
|---|---|
| App | zcashnames.co/app |
| App über Tor | zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion/app |
| Indexer über Tor | indexer.zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion |
| GitHub | github.com/ZCashNames |
| API | Zur Seite |
| Dokumentation | docs.zcashnames.co |