Zum Hauptinhalt springen

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:

OperationMemo-AufbauGezahlter Betrag
REG registrierenPiNS:1:REG:{name}:{address}:{pubkey}:{nonce}:{sig}Registrierungsgebühr für die Namenslänge
UPD Adresse ändernPiNS:1:UPD:{name}:{address}:{pubkey}:{nonce}:{sig}Änderungsgebühr
CHG Inhaber übertragenPiNS:1:CHG:{name}:{new_pubkey}:{nonce}:{sig}Änderungsgebühr
LST zum Verkauf anbietenPiNS:1:LST:{name}:{pubkey}:{price}:{nonce}:{sig}Änderungsgebühr
ULT vom Markt nehmenPiNS:1:ULT:{name}:{pubkey}:{nonce}:{sig}Änderungsgebühr
BUY kaufenPiNS: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:

  • pubkey ist Kleinbuchstaben-Hex, 64 Zeichen.
  • price erscheint nur bei LST.
  • address erscheint nur bei REG, UPD und BUY.
  • price und nonce sind 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

RegelWert
Zeichena-z, 0-9, Bindestrich
Länge1–64 Zeichen einschließlich der Zone
Schreibweisenur Kleinbuchstaben — ein Name wird kleingeschrieben gespeichert und gehasht
Bindestrichenicht 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.

tipp

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:

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.