Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

Bitcoin-URI

Auch bekannt als BIP21.

Was ist ein Bitcoin-URI?
Ein Bitcoin-URI bündelt die Angaben einer Zahlung in einer einzigen anklickbaren Zeichenkette, die mit bitcoin: beginnt und eine Adresse, einen Betrag und eine Bezeichnung enthalten kann.

Spezifiziert im BIP-21.

Ein Bitcoin-URI ist ein Link. Ein Klick darauf öffnet Ihre Wallet mit der bereits ausgefüllten Zahlung. BIP21 legte das Format am 29. Januar 2012 fest: das Schema bitcoin:, eine Adresse, danach optionale Parameter nach einem Fragezeichen. Wenn Sie einen URI statt einer bloßen Adresse erhalten, fällt der Betrag aus der Liste der Dinge heraus, die Sie korrekt kopieren müssen.

Wie er funktioniert

Die Grammatik von BIP21 ist bewusst klein gehalten, und das ist der Hauptgrund dafür, dass das Format seit mehr als einem Jahrzehnt unverändert Bestand hat.

Ein vollständiger URI sieht so aus: bitcoin:bc1q...w5mdq?amount=0.00042&label=Coffee%20Shop&message=Order%20118. Alles zwischen dem Doppelpunkt und dem Fragezeichen ist die Zieladresse. Alles danach ist eine Reihe von name=value-Paaren, die durch kaufmännische Und-Zeichen verbunden sind, und BIP21 definiert nur drei davon:

  • amount ist eine Dezimalzahl von Bitcoin, niemals Satoshis, geschrieben mit einem Punkt und ohne Kommas oder Währungssymbol. amount=0.01 bedeutet ein Hundertstel eines Bitcoin, also 1.000.000 Satoshis.
  • label benennt den Zahlungsempfänger, etwa ein Geschäft oder eine Person.
  • message gibt an, wofür die Zahlung bestimmt ist.

Beide Textfelder sind prozentkodiertes UTF-8, ein Leerzeichen wird also zu %20 und ein kaufmännisches Und-Zeichen innerhalb einer Bezeichnung zu %26.

Zwei Regeln halten das Format erweiterbar. Unbekannte Parameter werden ignoriert, sodass eine alte Wallet einen neuen URI lesen kann, ohne daran zu scheitern. Parameter mit dem Präfix req- sind die Ausnahme: Eine Wallet, die einen davon nicht versteht, muss den gesamten URI ablehnen, statt zu raten, was damit bezweckt werden sollte. Diese eine Regel ist der gesamte Mechanismus für Erweiterungen, und sie hat seither jede Erweiterung aufgenommen, ohne ältere Software zu beschädigen.

In diesen Erweiterungen lebt das Format heute tatsächlich:

  • r=, hinzugefügt durch BIP72, verwies auf eine BIP70-Zahlungsanforderung. Dieser Weg ist tot.
  • pj=, aus BIP78, benennt einen PayJoin-Endpunkt, damit Zahler und Empfänger gemeinsam eine kollaborative Transaktion aufbauen können.
  • lightning= trägt eine BOLT11-Rechnung neben der On-Chain-Adresse. Wallets, die das verstehen, zahlen über Lightning, Wallets, die das nicht verstehen, weichen auf die Adresse aus, und Kassen von Händlern drucken das Ergebnis als einen einzigen vereinheitlichten QR-Code.
  • BIP353 veröffentlicht einen vollständigen URI in einem DNSSEC-signierten TXT-Eintrag unter der Bezeichnung _bitcoin-payment, sodass ein für Menschen lesbarer Name zu Zahlungsanweisungen führt.

Die Adresse selbst ist optional. Die Grammatik von BIP21 erlaubt null Adresszeichen, so funktionierte bitcoin:?r=... und so funktioniert heute ein URI, der nur ein Angebot enthält.

Warum das beim Bitcoin-Kauf zählt

Am wichtigsten ist ein Bitcoin-URI bei der Auszahlung, wenn Bitcoin eine Börse verlassen, die Sie nicht kontrollieren, und dort landen, wo Sie sie kontrollieren.

Fast jede Börse, die diese Website behandelt, von Kraken und River bis hin zu Relai und Bitpanda, gibt Ihnen ein reines Textfeld für die Zieladresse. Dieses Feld will die Adresse, nicht den URI. Wenn Sie bitcoin:bc1q... dort einfügen, erhalten Sie meist einen Validierungsfehler, gelegentlich ein stillschweigend abgeschnittenes Feld und eine fehlgeschlagene Auszahlung. Nehmen Sie das, was zwischen dem Doppelpunkt und dem Fragezeichen steht, und fügen Sie nur das ein.

Der Verkehr läuft auch in die andere Richtung. Der Empfangsbildschirm Ihrer eigenen Hardware-Wallet, die Kasse eines Händlers und ein Peer-to-Peer-Handel geben Ihnen URIs statt bloßer Adressen. Ein URI ist in genau einer Hinsicht sicherer: Der Betrag reist mit, Sie können die Summe also nicht vertippen. In der Hinsicht, die am meisten zählt, ist er nicht sicherer. Nichts in einem URI ist signiert. Das Feld label ist freier Text, den gewählt hat, wer die Zeichenkette erstellt hat, eine Phishing-Seite kann also label=Kraken%20Withdrawal schreiben, und Ihre Wallet zeigt diese Worte ohne Kommentar an.

Deshalb ist der Bildschirm der Hardware-Wallet die Kontrolle, auf die es ankommt. Was auch immer ein URI behauptet, ein Signierungsgerät zeigt Ihnen die Adresse, an die es gleich zahlt, auf einem Bildschirm, den Malware für die Zwischenablage nicht umschreiben kann. Vergleichen Sie dort die führenden und die abschließenden Zeichen, auf dem Gerät, nicht im Browser-Tab, der den Link erzeugt hat.

Ein durchgerechnetes Beispiel: die Rechnung eines Kaffeehauses bezahlen

Angenommen, eine Kasse druckt einen QR-Code, und Ihr Smartphone liest bitcoin:bc1q...w5mdq?amount=0.00042&label=Kaffeehaus&message=Table%207.

Ihre Wallet entnimmt dem drei Tatsachen: 0,00042 Bitcoin zahlen, den Betrag an diese Adresse senden und die Worte Kaffeehaus und Table 7 auf dem Bestätigungsbildschirm anzeigen. Danach tut sie mehrere Dinge, um die der URI nie gebeten hat. Sie wählt aus, welche Ihrer nicht ausgegebenen Outputs sie ausgibt, schätzt eine Gebührenrate aus ihrer eigenen Sicht auf den Mempool, fügt einen Wechselgeld-Output hinzu und wartet auf Ihre Freigabe.

Was sie nicht tut, ist, irgendetwas über den Empfänger zu prüfen. Sie hat nicht geprüft, ob das Geschäft die Adresse kontrolliert, ob 0,00042 Bitcoin der vereinbarte Preis ist oder ob die Bezeichnung ehrlich ist. Diese Prüfungen sind Ihre Aufgabe. Bei einem Kaffee ist der Schaden ein verlorener Kaffee. Bei einer Überweisung im fünfstelligen Bereich lohnt es sich, die Adresse vor der Freigabe in Vierergruppen auf dem Signierungsgerät zu lesen.

Bitcoin-URI vs. Adresse

Eine Adresse ist das Ziel für sich, ohne beigefügte Anweisungen. Eine moderne bech32-Adresse umfasst 42 Zeichen für einen SegWit-Output mit einem einzigen Schlüssel und 62 für einen Taproot-Output, und sie sagt nichts darüber, wie viel an wen zu senden ist. Ein URI ist ein Behälter: eine Adresse plus einen optionalen Betrag, eine Bezeichnung und eine Nachricht. Sie können die Adresse immer aus einem URI zurückgewinnen, indem Sie den Text zwischen dem Schema und dem ersten Fragezeichen lesen. Den umgekehrten Weg können Sie nicht gehen, weil eine Adresse von vornherein nie einen Betrag getragen hat.

Bitcoin-URI vs. BOLT11-Rechnung

Eine BOLT11-Rechnung ist das Lightning-Gegenstück, und sie verhält sich in drei Punkten anders, auf die es ankommt. Sie ist zur einmaligen Verwendung bestimmt, sie bindet sich an einen Zahlungs-Hash statt an eine Adresse, und sie läuft ab, standardmäßig nach 3.600 Sekunden, wenn der Händler keinen Wert festlegt. Ein Bitcoin-URI läuft nie ab und kann zweimal bezahlt werden, was auf einer Spenden-Seite ein Vorteil und bei einer Rechnung eine Gefahr ist. Der vereinheitlichte QR-Code vermeidet die Wahl, indem er eine BOLT11-Zeichenkette in den Parameter lightning= eines gewöhnlichen URI setzt und so jede Wallet den Weg nehmen lässt, den sie unterstützt.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Kann ich einen bitcoin:-URI in das Auszahlungsfeld einer Börse einfügen?

In der Regel nicht. Die meisten Auszahlungsformulare erwarten eine reine Adresse und lehnen alles mit dem Präfix bitcoin: ab oder schneiden es ab. Kopieren Sie nur den Text zwischen dem Doppelpunkt und dem ersten Fragezeichen und prüfen Sie ihn dann gegen den Empfangsbildschirm Ihrer Wallet.

Ist der Betrag in einem bitcoin:-URI in Bitcoin oder in Satoshis angegeben?

Bitcoin. Das BIP21 legt eine Dezimalzahl von Bitcoin fest, amount=0.01 ist also ein Hundertstel eines Bitcoin oder 1.000.000 Satoshis. Felder des Zahlungsprotokolls und Lightning-Rechnungen verwenden stattdessen Satoshis und Millisatoshis, was eine häufige Quelle von Einheitenfehlern ist.

Beweist ein bitcoin:-URI, wem ich bezahle?

Nein. Nichts in einem BIP21-URI ist signiert oder verifiziert, und die Bezeichnung ist Freitext, den der Ersteller des Links bereitstellt. Bestätigen Sie die Zieladresse auf dem Bildschirm Ihrer Hardware-Wallet selbst, bevor Sie etwas genehmigen.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen