Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

Zahlungsprotokoll (BIP70)

Auch bekannt als Zahlungsprotokoll, BIP70.

Was ist das Zahlungsprotokoll (BIP70)?
Das Zahlungsprotokoll (BIP70) war der Versuch von Bitcoin, reine Adressen durch signierte, zertifikatsgestützte Zahlungsanforderungen zu ersetzen, und Bitcoin Core entfernte die letzte Unterstützung dafür in Version 0.20.0.

Spezifiziert im BIP-70.

Ambition, dann Aufgabe. Gavin Andresen und Mike Hearn veröffentlichten BIP70 am 29. Juli 2013, Bitcoin Core lieferte es in 0.9.0 im März 2014 aus, stufte es in 0.19 im November 2019 als veraltet ein und löschte es in 0.20.0 am 3. Juni 2020. Wenn eine Bezahlseite Ihre Wallet noch dazu auffordert, es zu sprechen, werten Sie das als Zeichen dafür, dass diese Integration seit Jahren nicht angefasst wurde.

So funktioniert es

Status: in Bitcoin Core 0.19 als veraltet eingestuft und in 0.20.0 am 3. Juni 2020 vollständig entfernt. Keine gepflegte Wallet implementiert es. Stattdessen verwendet man einen einfachen BIP21-URI für On-Chain-Zahlungen, BOLT11- oder BOLT12-Rechnungen im Lightning-Netzwerk und BIP352 Silent Payments, wenn ein wiederverwendbares Ziel gewünscht ist.

Das Design war eine Familie aus vier BIPs. BIP70 definierte die Nachrichten, BIP71 registrierte einen MIME-Typ für jede der drei, die über die Leitung gingen, BIP72 ergänzte den Parameter r=, damit ein URI auf eine Anforderung zeigen konnte, und BIP73 regelte die Inhaltsaushandlung für Wallets, die das Protokoll nicht auswerten konnten.

Der Ablauf funktionierte wie ein Kartenterminal. Ein Händler stellte über HTTPS eine signierte PaymentRequest bereit. Die Wallet des Kunden rief sie ab, ging die beigefügte X.509-Zertifikatskette bis zu einer bereits vertrauten Wurzel hoch und zeigte einen Firmennamen statt einer Zeichenkette an. Der Kunde stimmte zu, die Wallet sendete die Transaktion und schickte zusätzlich eine Payment-Nachricht mit den Rohdaten der Transaktion und einer Rückerstattungsadresse an den Händler zurück. Der Händler antwortete mit einem PaymentACK, das als Beleg diente.

Vier Gründe für das Scheitern, und sie sind es wert, verstanden zu werden, weil jeder einzelne wiederkehrt, sobald jemand Identität auf Bitcoin aufsetzen will.

Es borgte sein Vertrauen von Zertifizierungsstellen. Jede der Hunderte von Zertifizierungsstellen in einem typischen Wurzelspeicher kann ein Zertifikat für jeden Namen ausstellen, und genau dieser Fehlerfall war es, den Bitcoin umgehen sollte. BIP70 erlaubte zudem einen Signaturtyp x509+sha1, und am 23. Februar 2017 wurde eine praktische SHA-1-Kollision veröffentlicht.

Es erforderte den Händler online. Eine Zahlung ließ sich nicht erstellen, wenn der HTTPS-Endpunkt des Händlers nicht antwortete, sodass ein Ausfall Zahlungen stoppte, die allein mit einer Adresse sonst funktioniert hätten.

Es gab Daten preis. Die Wallet stellte eine ausgehende Anfrage an den Server des Händlers und gab damit die IP-Adresse des Kunden preis, und das Feld für die Rückerstattung lieferte eine neue Adresse des Zahlers.

Es brachte sehr wenig. Das Zertifikat bewies, dass jemand einen Domainnamen steuerte, nicht dass die Rechnung legitim oder die Ware real war.

Wo es auftaucht

Der Hauptgrund, warum BIP70 noch als Begriff kursiert, ist, dass die Entwicklerreferenz von bitcoin.org das Protokoll im Präsens beschreibt und diese Referenz seit Jahren nicht mit Bitcoin Core Schritt gehalten hat.

Darüber hinaus begegnet Ihnen BIP70 in archiviertem Wallet-Quellcode, in alten Integrationsanleitungen aus der Zeit, als große Zahlungsabwickler es vorantrieben, und gelegentlich in einer .bitcoinpaymentrequest-Datei, die an einer zehn Jahre alten Rechnung hängt. Nichts, was Sie heute kaufen, wird es erfordern. Händler, die eine Bezahlseite wollen, nutzen Software wie BTCPay Server, die BIP21-URIs und Lightning-Rechnungen ausgibt und der Wallet des Kunden nichts Ungewöhnliches abverlangt.

Zahlungsprotokoll (BIP70) vs. PaymentRequest

Das Zahlungsprotokoll ist der gesamte Austausch; PaymentRequest ist eine Nachricht darin. Zwischen Wallet und Händler liefen drei Nachrichten, und PaymentRequest war die erste davon, der signierte Umschlag, den der Händler bereitstellte. Die beiden Namen austauschbar zu verwenden, macht alte Dokumentation schwerer lesbar als nötig. Beachten Sie außerdem, dass PaymentRequest der Name eines unabhängigen Browserstandards für Karten- und Wallet-Bezahlvorgänge ist, ein Entwickler, der das Wort heute verwendet, also wahrscheinlich gar nicht Bitcoin meint.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Wird BIP70 noch irgendwo verwendet?

Nicht in gepflegter Software. Bitcoin Core stufte es in 0.19 als veraltet ein und entfernte es in 0.20.0 im Juni 2020, und keine aktuelle Wallet implementiert es. Alles, was es noch voraussetzt, läuft mit einer Integration, die Mitte der 2010er Jahre gebaut wurde.

Was hat das Zahlungsprotokoll ersetzt?

Nichts, was sein Vertrauensmodell kopiert. On-Chain-Zahlungen nutzen einfache BIP21-URIs, im Lightning-Netzwerk verwendet man BOLT11- und BOLT12-Rechnungen, und wiederverwendbare Ziele nutzen BIP352 Silent Payments. Keines davon hängt von Zertifizierungsstellen ab.

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen