Glossar / Entwicklerreferenz
PP-Memo
- Was ist das PP-Memo?
- Das PP-Memo war die UTF-8-Freitextnotiz, die BIP70 einen Händler, einen Zahler oder einen bestätigenden Server an eine Zahlung anhängen ließ, damit ein Mensch sie liest.
Spezifiziert im BIP-70.
Drei der vier BIP70-Nachrichten trugen ein Memo, was es zum einzigen Feld des Protokolls macht, das in beide Richtungen lief. Es war reiner Anzeigetext: Keine Wallet wertete es aus, keine Signatur schützte die Kopie, die der Zahler zurückschickte, und nichts davon erreichte die Blockchain. Zahlungsnotizen funktionieren bis heute so, weshalb sie ein schlechter Ort für alles sind, was zählt.
So funktioniert es
Status: historisch. Das Memo erschien als Feld 5 von PaymentDetails, als Feld 4 der Nachricht Payment und als Feld 2 von PaymentACK, die alle aus Bitcoin Core verschwanden, als die BIP70-Unterstützung in 0.20.0 am 3. Juni 2020 entfernt wurde.
Jedes der drei hatte einen anderen Verfasser und einen anderen Leser.
Der Händler schrieb das erste, und eine Wallet zeigte es auf dem Bestätigungsbildschirm neben dem Betrag an: eine Bestellnummer, einen Produktnamen, eine Zeile mit Bedingungen. Weil es in den serialisierten Details stand, deckte die Signatur des Händlers es ab, sodass es wenigstens unterwegs nicht umgeschrieben werden konnte.
Der Zahler schrieb das zweite und schickte es mit der gesendeten Transaktion zurück. Rückerstattungshinweise und Notizen an den Support gehörten hierher, und nichts signierte sie.
Der Händler schrieb das dritte in die Bestätigung, meist ein Dankeschön oder eine Versandschätzung. Auch das signierte nichts.
BIP70 setzte keine Längenbegrenzung, also kürzten Wallets dort, wo ihr Layout endete. Diese kleine Lücke hat es in sich. Von einem Angreifer stammender Text, der neben einem geprüften Firmennamen angezeigt wird, ist eine Phishing-Fläche, und eine Notiz, die wie eine offizielle Anweisung klingt, noch eine Zahlung zu senden, überzeugt genau dort, wo ein Kunde am wenigsten skeptisch ist.
Wo Sie es sehen
An Zahlungen angehängte Freitextnotizen sind lebendig wie eh und je, und jede moderne Version hat ihre eigene Eigenheit.
BIP21-Zahlungslinks tragen einen Parameter message, prozentkodiert, von der Wallet angezeigt und danach vergessen. Lightning geht weiter: Eine BOLT11-Rechnung legt ihre Beschreibung in das Feld d, und weil ein getaggtes Feld höchstens 1.023 Gruppen zu fünf Bits, also rund 639 Bytes, fasst, muss alles Längere durch seinen 256-Bit-Hash im Feld h ersetzt werden. Börsen bieten auf Auszahlungsformularen ein Referenzfeld, dessen Inhalt ihre eigene Datenbank nie verlässt.
Die einzige Notiz, die wirklich auf der Chain mitfährt, ist ein OP_RETURN-Output. Die Weiterleitungsrichtlinie von Bitcoin Core erlaubte eine Nutzlast von 40 Bytes, als dieser Output-Typ in 0.9.0 Standard wurde, und 80 Bytes ab 0.11.0. Für diese Bytes zahlen Sie eine Gebühr, und sie sind für immer öffentlich, weshalb es ein Fehler ist, den niemand zweimal macht, einen solchen Output als private Notiz zu verwenden.
Alles andere ist lokal bei Ihnen. Eine in Ihre eigene Wallet getippte Notiz liegt in der Wallet-Datei und nicht in der Seed-Phrase, sodass die Wiederherstellung auf einem neuen Gerät die Bitcoin zurückbringt und keines der Wörter, die Sie darüber geschrieben haben. Exportieren Sie vor dem Umzug.
PP-Memo vs. Label
Ein Memo beschreibt eine Zahlung; ein Label benennt eine Partei oder eine Adresse. BIP70-Memos wurden für eine Transaktion geschrieben und einmal angezeigt, im Moment des Bezahlens. Ein BIP21-Label benennt, wer bezahlt wird, und ein Wallet-Label ist die private Ablagenotiz, die Sie an eine Adresse oder eine Transaktion hängen und auf Ihrem eigenen Gerät behalten. Keines der drei ist von jemandem signiert, dessen Wort Sie prüfen können, und keines ist für das Netzwerk sichtbar.