Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

PP-Skript

Was ist PP-Skript?
PP-Skript war das Pflichtfeld in einer Ausgabe nach BIP70, das das rohe Sperrskript enthielt, das der Zahler reproduzieren musste, dieselben Bytes, die in einer Transaktionsausgabe landen.

Spezifiziert im BIP-70.

Von allem, was BIP70 über die Leitung schickte, ist das Skript der einzige Teil, der bis auf die Blockchain gelangt ist. Zertifikate, Notizen und Ablaufzeiten blieben alle außerhalb der Chain, während das Sperrskript wortgetreu in die Transaktion einging und heute in der Menge der nicht ausgegebenen Ausgaben steht. Diese Bytes, und nichts anderes in der Anfrage, entscheiden darüber, wer die Coins ausgeben kann.

So funktioniert es

Status: historisch. Das Skript war Feld 2 der Output-Nachricht und der einzige Teil davon, den ein Händler nicht weglassen konnte, da der Betrag standardmäßig null war. Bitcoin Core hat die Auswertung davon in 0.20.0 eingestellt, veröffentlicht am 3. Juni 2020.

Ein Skript statt einer Adresse zu senden war eine bewusste Entscheidung. Eine Adresse ist ein Transportformat für Menschen: base58check oder bech32, mit einem Präfix, einer Prüfsumme und einem Zeichensatz, der dafür gewählt wurde, das Aufschreiben und Vorlesen zu überstehen. Eine Wallet, die eine erhält, muss sie erst in ein Skript dekodieren, bevor sie etwas bauen kann. BIP70 übersprang diesen Umweg und benannte das Ziel in der Form, die das Netzwerk tatsächlich verwendet.

Die Standardformen haben feste Größen, und wer sie kennt, kann einen Block-Explorer deutlich leichter lesen:

  • Pay-to-Public-Key-Hash, 25 Bytes: duplizieren, hashen, 20 Bytes pushen, Gleichheit prüfen, Signatur prüfen.
  • Pay-to-Script-Hash, 23 Bytes: hashen, 20 Bytes pushen, Gleichheit prüfen.
  • Single-Key-Segwit, 22 Bytes: ein Versionsbyte null und ein 20-Byte-Hash.
  • Script-Hash-Segwit, 34 Bytes: Version null und ein 32-Byte-Hash.
  • Taproot, 34 Bytes: Version eins und ein 32-Byte-Schlüssel.

Was das Format aufgab, war die Fehlererkennung. Bech32 garantiert, dass bei einer Adresse mit bis zu 89 Zeichen jedes Austauschen von vier Zeichen erkannt wird, und base58check erkennt Verfälschungen mit einem Vier-Byte-Hash. Rohe Skript-Bytes tragen keines von beidem. Ein gekipptes Bit in einer Adresse erzeugt eine Zeichenkette, die Ihre Wallet ablehnt; ein gekipptes Bit in einem Skript erzeugt eine gültige Ausgabe, die niemand jemals ausgeben kann.

Wo Sie es sehen

Skripttypen sind der Grund, warum zwei Auszahlungen derselben Größe unterschiedliche Gebühren kosten können.

Eine Börse, die Sie ein Adressformat wählen lässt, wählt damit ein Skript für Sie. Eine Single-Key-Segwit-Ausgabe braucht 22 Bytes gegenüber 25 bei der Legacy-Form, was unbedeutend ist, aber sie später auszugeben ist es nicht: Dieser Input kostet ungefähr 68 virtuelle Bytes, während ein Legacy-Input etwa 148 kostet, sodass Coins, die Sie heute erhalten, einen Teil Ihrer Gebührenrechnung für den Rest ihres Lebens festlegen. Bei 20 sat/vB beträgt die Differenz etwa 1.600 Satoshis für jeden Input, den Sie schließlich ausgeben.

Explorer nennen den Typ jeder Ausgabe, die sie anzeigen, und so können Sie prüfen, auf welchen Typ Sie tatsächlich bezahlt wurden. Neuere Software beschreibt Ziele mit Output-Deskriptoren, einer kompakten Textform, die eine ganze Familie von Skripten und ihre Ableitung abdeckt statt jeweils nur eines Skripts.

Die Gewohnheit, die sich aus all dem zu behalten lohnt, ist einfach. Bestätigen Sie das Ziel auf einem Gerät mit eigenem Bildschirm, denn Malware, die eine Adresse in Ihrer Zwischenablage austauscht, ist verbreitet, und eine Hardware-Wallet, die den echten Empfänger anzeigt, ist die Prüfung, die das erkennt.

PP-Skript vs. Pubkey-Skript

Das BIP70-Feld war ein Container; ein Pubkey-Skript ist die Sache selbst. Ein Pubkey-Skript, auch scriptPubKey oder Sperrskript genannt, erscheint in jeder jemals erstellten Transaktionsausgabe und legt die Bedingung fest, die ein Ausgebender erfüllen muss. PP-Skript war ein bestimmter Ort, an den eine Kopie eines solchen gelangte, innerhalb eines Protokolls, das niemand ausführt. Verwenden Sie den Feldnamen nur beim Lesen von BIP70-Dokumentation und den allgemeinen Namen überall sonst.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum sendete BIP70 ein Skript statt einer Bitcoin-Adresse?

Weil das Skript das ist, was eine Transaktion tatsächlich enthält. Eine Adresse ist eine Kodierung desselben Ziels mit einer Prüfsumme darum herum, sodass das Senden des Skripts einen Dekodierungsschritt ersparte, auf Kosten der Prüfsumme, die Tippfehler erkennt.

Ändert das Adressformat, auf das Sie auszahlen, Ihre Gebühren?

Ja, vor allem, wenn Sie die Coins später ausgeben. Ein Single-Key-Segwit-Input kostet rund 68 virtuelle Bytes gegenüber etwa 148 bei einem Legacy-Input, sodass Sie bei 20 sat/vB etwa 1.600 Satoshis pro Input sparen.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen