Befehlsformat
Jede PiNS-Operation ist eine abgeschirmte PIVX-Transaktion an die Protokolladresse der Registrierungsstelle, wobei der Betrag die Zahlung und das Memo der signierte Befehl ist. Beides reist in derselben Note, sodass Absicht und Zahlung untrennbar verbunden sind — es gibt keine separate Referenz oder Rechnung, die zugeordnet werden müsste.
Diese Seite beschreibt das exakte Wire-Format. Ein danach gebauter Befehl wird sowohl von der Registrierungsstelle als auch von der Zero-Knowledge-Schaltung akzeptiert.
Aufbau
Alle Befehle sind ASCII mit Doppelpunkten als Trennzeichen und beginnen mit Protokollmarker und Version:
PiNS:1:{OP}:{name}:…:{ed25519_pubkey_hex}:…:{nonce}:{signature_hex}
Die Felder dazwischen hängen von der Operation ab:
| Operation | Memo-Aufbau | Gezahlter Betrag |
|---|---|---|
REG registrieren | PiNS:1:REG:{name}:{address}:{pubkey}:{nonce}:{sig} | Registrierungsgebühr für die Namenslänge |
UPD Adresse ändern | PiNS:1:UPD:{name}:{address}:{pubkey}:{nonce}:{sig} | Änderungsgebühr |
CHG Inhaber übertragen | PiNS:1:CHG:{name}:{new_pubkey}:{nonce}:{sig} | Änderungsgebühr |
LST zum Verkauf anbieten | PiNS:1:LST:{name}:{pubkey}:{price}:{nonce}:{sig} | Änderungsgebühr |
ULT vom Markt nehmen | PiNS:1:ULT:{name}:{pubkey}:{nonce}:{sig} | Änderungsgebühr |
BUY kaufen | PiNS:1:BUY:{name}:{address}:{pubkey}:{nonce}:{sig} | exakt der Angebotspreis |
Bei CHG ist {new_pubkey} der Schlüssel des übernehmenden Inhabers, und die Signatur
stammt vom abgebenden Inhaber — die Übertragung autorisiert der aktuelle Inhaber.
Die signierte Nachricht
Die Signatur deckt den Befehl ohne das abschließende :{signature} ab — also alles vom
Marker bis einschließlich der Nonce:
PiNS:1:REG:richard.pivx:ps1f84lvgj…:0101…0101:1780000001
Die Regeln sind exakt; ein Client, der eine davon verletzt, erzeugt eine Signatur, die die Schaltung zurückweist:
pubkeyist Kleinbuchstaben-Hex, 64 Zeichen.priceerscheint nur beiLST.addresserscheint nur beiREG,UPDundBUY.priceundnoncesind dezimal, ohne führende Nullen, ohne Vorzeichen, ohne Auffüllen.- Die Signatur ist Ed25519 über genau diese Bytes, hex-kodiert, 128 Zeichen.
Die Prüfung ist streng: nicht-kanonische Signaturen und Schlüssel kleiner Ordnung werden abgelehnt.
Feldregeln
Name
| Regel | Wert |
|---|---|
| Zeichen | a-z, 0-9, Bindestrich |
| Länge | 1–64 Zeichen einschließlich der Zone |
| Schreibweise | nur Kleinbuchstaben — ein Name wird kleingeschrieben gespeichert und gehasht |
| Bindestriche | nicht am Anfang, nicht am Ende, nie doppelt |
| Zonen | .pivx, .private, .secure, .safe |
Genau ein Punkt ist erlaubt; er trennt das Label von der Zone.
Zieladresse
Die Adresse, auf die ein Name aufgelöst wird, muss eine abgeschirmte PIVX-Sapling-Zahlungs-
adresse im Mainnet sein — bech32, menschenlesbares Präfix ps, genau 78 Zeichen.
Transparente und alle sonstigen Adressen werden abgelehnt.
Die Länge ist nicht willkürlich. Eine Sapling-Zahlungsadresse ist eine 43-Byte-Nutzlast — ein
11-Byte-Diversifier plus ein 32-Byte-pk_d —, die bech32 als 69 Datenzeichen plus 6 Zeichen
Prüfsumme kodiert, also ps + Trenner + 69 + 6 = 78.
Dass eine abgeschirmte Adresse verlangt wird, ist praktisch und nicht willkürlich: Die Registrierungsstelle empfängt und zahlt über Sapling-Schlüsselmaterial, eine Adresse, an die sie nicht zahlen kann, taugt daher weder für Rückerstattungen noch für Verkaufserlöse.
Nur die moderne bech32-Form wird akzeptiert
Die alte Testnet-Form ptestsapling… (88 Zeichen) wird auf beiden Netzen abgelehnt, und die
Schaltung erzwingt dieselbe Regel wie die Registrierungsstelle. Jede aktuelle PIVX-Wallet
erzeugt im Mainnet die ps…-Form.
Nonce
Die Nonce ist ein Unix-Zeitstempel in Sekunden zum Zeitpunkt der Signatur.
- Sie muss strikt größer sein als die aktuell für diesen Namen gespeicherte Nonce. Das verhindert das Wiedereinspielen eines alten signierten Befehls.
- Sie darf dem Block, der sie trägt, um höchstens 300 Sekunden vorauslaufen; das fängt übliche Uhrabweichungen ab, ohne dass eine Nonce weit in der Zukunft geparkt werden kann.
Für eine Erstregistrierung genügt ein beliebiger aktueller Zeitstempel.
Preis
Nur LST trägt einen Preis. Er ist eine ganze Zahl in Satoshi (1 PIVX = 100.000.000
Satoshi) und muss größer als null sein.
Einen bereits angebotenen Namen zu einem neuen Preis erneut anzubieten ist erlaubt — senden Sie
ein weiteres LST. Das jüngste gewinnt.
Größenbeschränkung
Ein PIVX-Memo umfasst genau 512 Bytes, und der ganze Befehl muss hineinpassen. Die festen Teile verbrauchen einen vorhersehbaren Anteil:
PiNS: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
{address} 78 characters 79 bytes with separator
Eine Sapling-Adresse hat feste 78 Zeichen, daher lässt sich das Budget anders als bei einem variabel langen Adressformat leicht überschauen: Für den Namen bleiben rund 218 Byte — weit mehr als die höchstens 64 Zeichen, die ein Name belegen kann. In der Praxis passt ein Befehl immer. Clients sollten das Budget dennoch berechnen statt es anzunehmen, damit ein künftiges Feld das Memo nie unbemerkt überlaufen lässt.
Zahlung
Der Betrag entscheidet ebenso über die Gültigkeit wie das Memo:
REGmuss exakt die Registrierungsgebühr für die Namenslänge zahlen.UPD,CHG,LST,ULTmüssen exakt die Änderungsgebühr zahlen.BUYmuss exakt den Angebotspreis zahlen.
Die Länge wird am Label gemessen, ohne die Zone: ab.pivx ist ein Name mit 2 Zeichen.
Ein zu niedrig oder zu hoch bezahlter Befehl wird nicht verarbeitet. Sind Operation und öffentlicher Schlüssel lesbar, wird der Betrag Ihrem internen Guthaben gutgeschrieben und kann ausgezahlt werden — siehe Fragen & Antworten.
Reihenfolge
Befehle werden in der Reihenfolge verarbeitet, in der PIVX sie erzeugt hat: Blockhöhe, dann Transaktionsindex innerhalb des Blocks, dann Eingabeindex. Die Registrierungsstelle wählt die Reihenfolge nicht und kann sie nicht ändern, ohne dass jeder unabhängige Indexer einen anderen Root berechnet.
Bei konkurrierenden Operationen — zwei REG für denselben Namen oder zwei BUY für dasselbe
Angebot — gewinnt die in dieser Reihenfolge erste, den übrigen wird der Betrag auf das interne
Guthaben erstattet.
Durchgerechnetes Beispiel
Registrierung von richard.pivx:
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):
PiNS:1:REG:richard.pivx:ps1f84lvgj0awz…:3757ee1a…a53:1780000001
3. Sign it with the private key; hex-encode the 64-byte signature.
4. Append it to form the memo:
PiNS:1:REG:richard.pivx:ps1f84lvgj0awz…: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.
Innerhalb weniger Minuten wird der Befehl gebündelt, bewiesen und verankert. Von da an löst
sich richard.pivx über jeden Indexer auf, mit einem Merkle-Beweis, den Sie selbst prüfen
können.