Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

PP-Betrag

Was ist der PP-Betrag?
Der PP-Betrag war das in Satoshi angegebene Feld innerhalb einer BIP70-Ausgabe; er wurde auf null gesetzt, wenn der Händler wollte, dass der Zahler selbst wählt, wie viel er sendet.

Spezifiziert im BIP-70.

Einheiten sind die Quelle von Zahlungsfehlern. Der BIP70-Betrag war eine 64-Bit-Zählung von Satoshi, während der Parameter amount in einem BIP21-URI als Dezimalzahl in Bitcoin angegeben wird, sodass dieselbe Zahlung im ersten Format als 250000 und im zweiten als 0,0025 geschrieben wird. Wer Geld zwischen Systemen bewegt, sollte prüfen, welche Einheit ein Feld erwartet, bevor er einer Summe vertraut.

So funktioniert es

Status: historisch. Das Feld gehörte zu BIP70, das Bitcoin Core in 0.19 als veraltet einstufte und am 3. Juni 2020 in 0.20.0 entfernte.

Zwei Felder bildeten eine Ausgabe innerhalb einer PaymentDetails-Nachricht: ein Skript, das angibt, wohin das Geld geht, und ein Betrag, der angibt, wie viel. Der Betrag war eine vorzeichenlose 64-Bit-Ganzzahl in Satoshi mit dem Standardwert null, und null hatte eine bestimmte Bedeutung. Es bedeutete nicht, nichts zu zahlen. Es bedeutete, dass der Händler darauf verzichtete, eine Zahl zu nennen, und die Wallet den Kunden fragen sollte, so funktionierten Spenden-Seiten.

In einer Anfrage konnten mehrere Ausgaben erscheinen, jede mit ihrem eigenen Betrag, und eine zahlende Wallet musste jede davon in einer einzigen Transaktion erfüllen. Das ist nützlicher, als es klingt. Ein Händler konnte einen Teil eines Verkaufs direkt in Cold Storage leiten, einen Teil in eine Hot Wallet für Rückerstattungen und einen Teil an einen Partner, alles ohne dass der Kunde drei Zahlungen senden oder von der Aufteilung wissen musste.

Der Bereich war nie eine Beschränkung. Eine vorzeichenlose 64-Bit-Ganzzahl erreicht höchstens 18.446.744.073.709.551.615 Satoshi, ungefähr das 8.800-Fache der 2.100.000.000.000.000 Satoshi, die jemals existieren werden. Die interessante Grenze lag am anderen Ende. Ein Betrag unterhalb der Staubgrenze erzeugte eine Ausgabe, die das Netzwerk nicht weiterleiten würde, und die Richtlinie von Bitcoin Core setzt diese Grenze bei 546 Satoshi für eine Legacy-pay-to-public-key-hash-Ausgabe und bei 294 für eine SegWit-Ausgabe mit einem einzigen Schlüssel.

Wo Sie es sehen

Heute implementiert nichts das amount-Feld von BIP70, aber die Einheitenverwechslung dahinter ist nach wie vor lebendig.

Drei Spezifikationen, drei Einheiten. BIP21-URIs geben Beträge in Bitcoin an. BIP70 gab sie in Satoshi an. Lightning-BOLT11-Rechnungen gehen noch feiner und geben sie in Millisatoshi an, einem Tausendstel eines Satoshi. Wallet-Oberflächen fügen dann noch eine Anzeigeeinstellung hinzu, sodass dasselbe Guthaben je nach einer einmal gesetzten und vergessenen Präferenz als 0,00250000 oder als 250.000 erscheint.

Die praktischen Kosten eines Fehlers hier sind echtes Geld. Gebührenschätzungen kommen in Satoshi pro virtuelles Byte, sodass eine SegWit-Ausgabe mit einer Eingabe und zwei Ausgaben von etwa 141 vbytes bei 5 Sat/vB 705 Satoshi kostet. Lesen Sie diese Zahl stattdessen als Bitcoin, würden Sie glauben, eine Routinetransaktion koste mehr, als die meisten Menschen in einem Jahr überhaupt an Gebühren ausgeben.

Zwei Gewohnheiten beheben das. Wählen Sie eine Einheit in den Einstellungen Ihrer Wallet und lassen Sie sie dort, damit sich die Anzahl der Ziffern, die Sie erwarten, nie ändert. Und lesen Sie das Einheiten-Label auf jedem Auszahlungsbildschirm, bevor Sie die Zahl lesen, denn Börsen-Mindestbeträge, Netzwerkgebühren und Ihr Guthaben werden auf derselben Seite häufig in verschiedenen Einheiten angegeben.

PP-Betrag vs. Betrag im Bitcoin-URI

Ein BIP70-Betrag war eine Ganzzahl in Satoshi; ein BIP21-Betrag ist eine Dezimalzahl in Bitcoin, und der Faktor zwischen ihnen ist 100.000.000. Das ist der ganze Unterschied, und er reicht aus, um Bedeutung zu haben. Ein Feld, das im einen Format 0,0025 enthält, enthält im anderen 250000, und Software, die zwischen beiden wechselt ohne umzurechnen, erzeugt einen Fehler von acht Größenordnungen in die Richtung, in die sie zufällig tendiert. Das moderne Format hat gewonnen, die Zahl, die Sie heute in einem Zahlungslink finden, ist also Bitcoin, sofern nicht ausdrücklich etwas sats sagt.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum gab eine Zahlungsanforderung manchmal einen Betrag von null an?

Null bedeutete, dass der Händler keinen Preis nannte und die Wallet den Kunden fragen sollte, wie viel er senden möchte. Spenden-Seiten nutzten das. Es bedeutete nie eine Zahlung von nichts.

Werden Bitcoin-Beträge in Bitcoin oder in Satoshi angegeben?

Das hängt vom Format ab. BIP21-Zahlungslinks verwenden dezimale Bitcoin, BIP70 verwendete Satoshi und Lightning-BOLT11-Rechnungen verwenden Millisatoshi. Gebührenschätzungen werden in Satoshi pro virtuelles Byte angegeben, lesen Sie also immer zuerst die Einheit und dann die Zahl.

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen