Zum Hauptinhalt springen
OpenQRS
Tools
Aktuelle Sprache: Deutsch
100 % privat

Krypto-Wallet-QR-Code-Generator

100 % privat und lokal — Ihre Daten verlassen niemals Ihren Browser. Diese QR-Codes sind dauerhaft und laufen nie ab.

Einstellungen für Krypto-Wallet

Legt das URI-Schema fest und wie der Betrag geschrieben wird. Eine Adresse, die über das falsche Netzwerk gesendet wird, ist meist unwiederbringlich.

Fügen Sie sie aus dem Empfangsbildschirm Ihrer Wallet ein. Abtippen ist der Weg, auf dem Adressen kaputtgehen.

Paste the Bitcoin receiving address from your wallet's receive screen.

Optional, in ganzen Coins — BTC, ETH, SOL, LTC oder DOGE. Mit Punkt, ohne Tausendertrennzeichen, ohne Kürzel.

Ein kurzer Name für den Empfänger. Wallets, die das unterstützen, zeigen ihn neben der Adresse.

Ein Hinweis an die zahlende Person. Es ist reiner Anzeigetext und wird nicht in die Transaktion geschrieben.

Design

Modulform
Farbvorgaben
Eckrahmen
Logo in der Mitte hinzufügen
Bild auswählen oder hier ablegenPNG, JPEG, WebP oder GIF, bis zu 1000 KB

Das Bild wird auf dieser Seite gelesen und als data:-URL in den Code eingebettet. Es wird nicht hochgeladen und bleibt in der Datei, die Sie herunterladen.

Weitere Design-Optionen

Die dunkle Hälfte des Codes. Halten Sie sie deutlich dunkler als den Hintergrund.

Deckt die Ruhezone ebenso wie die Lücken zwischen den Modulen. Ein transparenter Hintergrund lässt sie aus der Datei heraus, es wird also nichts damit gezeichnet.

Kontrast 11.5:1 zwischen den Modulen und dem Hintergrund.

Farbvorgaben

PNG und WebP behalten einen Alphakanal; die SVG lässt das Hintergrundrechteck einfach weg. Worauf der Code liegt, wird zur hellen Hälfte des Kontrasts.

Verlauf

Ein Verlauf füllt nur die dunklen Module. Sein helleres Ende bestimmt den Kontrast, den ein Scanner tatsächlich bekommt, also müssen beide Enden dunkel bleiben.

Die zweite Farbe, nur bei ausgewähltem Verlauf verwendet. Sie wird gemeinsam mit der ersten auf Kontrast gemessen.

45°

Grad im Uhrzeigersinn, ausgehend von einem Verlauf von links nach rechts. Ein radialer Verlauf breitet sich von der Mitte nach außen aus, der Winkel gilt also nur für einen linearen.

Modulform

Abgerundete Formen decken weniger von jeder Zelle ab. Die Mitte bleibt bedeckt, und genau dort tastet ein Decoder ab, doch ein kleiner Druck eines dichten Codes liest sich mit Quadraten zuverlässiger.

Eckrahmen

Der Ring der drei Suchmuster.

Eckmitte

Das Auge in jedem Suchmuster.

4 Module

Der leere Rand um den Code, gemessen in Modulen. 4 ist das vorgeschriebene Minimum.

Eine höhere Stufe übersteht mehr Schaden und kostet Kapazität, derselbe Inhalt ergibt also ein dichteres Symbol.

Ein Logo sitzt in der Mitte und hält die Stufe auf H. Seine Breitengrenze folgt dem Symbol: 14% beim kleinsten Code, 30% bei einem dichten.

Live-Vorschau & Export

Export

Export

Raster, für Bildschirme

Füllen Sie das Formular aus, um die Downloads freizuschalten.

Exportgröße und kodierter Text
Nutzlast
Noch nichts kodiert
Symbol
Noch nicht gebaut
Korrektur
H

Warten auf Eingabe

Exportgröße

Zwischen 64 und 4096 Pixel. Export mit 1024 px.

Kodierter Text

Bauen Sie einen scannbaren Empfangscode für eines von fünf Netzwerken, wahlweise mit Betrag und Notiz. Die Adresse wird genau so verwendet, wie Sie sie eintippen, und nie irgendwohin gesendet.

Beim Scannen

Eine Wallet-App liest den URI, trägt den Empfänger ein und zeigt Betrag und Notiz als bearbeitbare Zahlungsanforderung, wobei nichts signiert oder gesendet wird, bevor die zahlende Person es in ihrer eigenen Wallet bestätigt.

Wie der URI jedes Netzwerks aussieht

Bitcoin, Litecoin und Dogecoin nutzen alle die Form von BIP-21: der Schemaname, ein Doppelpunkt, die Adresse und optionale Abfrageparameter. Der Betrag wird in ganzen Coins als Dezimalzahl geschrieben — amount=0.005 bedeutet fünf Tausendstel Bitcoin — und Bezeichnung sowie Nachricht werden prozentcodiert.

Ethereum nutzt EIP-681, wo der Parameter value in Wei angegeben wird statt in Ether. Die Spezifikation empfiehlt wissenschaftliche Notation, 0,25 ETH wird also als value=2.5e17 geschrieben. In EIP-681 gibt es keine Parameter für Bezeichnung oder Nachricht, weshalb diese beiden Felder verschwinden, sobald Sie Ethereum wählen.

Solana Pay definiert eine eigene Übertragungsanforderung: solana: gefolgt vom Empfängerschlüssel in Base58, mit dem Betrag in SOL und optionaler Bezeichnung und Nachricht. Die Spezifikation begrenzt den Betrag auf neun Nachkommastellen, was der Genauigkeit von SOL entspricht, und verlangt von Wallets, einen URI mit mehr Stellen abzulehnen.

Die Adresse wird genau so kodiert, wie Sie sie eingeben, samt Groß- und Kleinschreibung. Bech32-Bitcoin-Adressen unterscheiden keine Groß- und Kleinschreibung und ließen sich in Großbuchstaben setzen, um in den alphanumerischen Modus von QR zu passen und das Symbol zu verkleinern, aber ältere Base58-Adressen sind schreibungsabhängig, und eine davon in Großbuchstaben zu setzen zerstört sie. Diese Optimierung nur manchmal anzuwenden ist genau jenes bedingte Verhalten, das in dem einen Fall, den niemand getestet hat, einen kaputten Code erzeugt, also wird sie gar nicht angewendet.

  • bitcoin:bc1q…?amount=0.005&label=Buchbinderei%20Nordtor
  • ethereum:0x…?value=2.5e17
  • solana:7xKX…?amount=1.5&label=Buchbinderei%20Nordtor

Der Betrag ist eine Anforderung, keine Zusage

Jedes Schema hier behandelt den Betrag als Vorschlag an die sendende Wallet. Viele Wallets füllen das Feld vor und lassen die zahlende Person es vor dem Signieren ändern. Manche ignorieren den Parameter vollständig und öffnen mit leerem Betrag. Keine ist verpflichtet, ihn einzuhalten, und es gibt in einem QR-Code keinen Mechanismus, der sie dazu zwingen könnte.

BIP-21 definiert zwar ein Präfix req- für Parameter, die eine Wallet verstehen oder zurückweisen muss, aber das regelt, ob die Wallet den URI verarbeitet, nicht ob der Mensch die Summe zahlt. Behandeln Sie einen gedruckten Betrag als Bequemlichkeit, die Tipparbeit spart, und gleichen Sie ab, was tatsächlich angekommen ist, gegen das, was Sie angefordert haben.

Beträge tragen auch keine Rechnungsreferenz. Das Nachrichtenfeld ist Anzeigetext für die zahlende Person; es wird nicht in die Transaktion geschrieben und erreicht Sie nicht mit dem Geld. Eine eingehende Zahlung einer Bestellung zuzuordnen heißt, je Bestellung eine frische Adresse zu nutzen, und genau das kann ein einzelner gedruckter Code nicht.

Prüfen Sie die Adresse, bevor der Code Ihren Bildschirm verlässt

Diese Seite kann eine Adresse nicht überprüfen. Sie prüft nur, ob das Eingegebene zum Zeichenvorrat und zur ungefähren Länge des gewählten Netzwerks passt, was einen offensichtlichen Einfügefehler abfängt und sonst nichts. Sie kann nicht erkennen, ob die Adresse Ihnen gehört, ob die Wallet noch existiert oder ob die Zeichenkette zwischen Ihrer Wallet und diesem Feld ausgetauscht wurde. Es gibt keine Abfrage, die man stellen könnte, denn auf dieser Seite gibt es überhaupt keine Netzwerkanfrage.

Schadsoftware, die Adressen austauscht, ist eine reale und alltägliche Bedrohung: Programme, die die Zwischenablage überwachen, warten auf eine kopierte Wallet-Adresse und ersetzen sie durch die der angreifenden Seite. Die untergeschobene Adresse ist wohlgeformt, sie besteht also jede Formatprüfung, und der entstehende Code ist völlig gültig — für jemand anderen. Überweisungen in diesen Netzwerken sind endgültig, es gibt keine Rückbuchung, und kein Support kann das Geld zurückholen.

Die Verteidigung ist kurz und nicht verhandelbar. Scannen Sie den fertigen Code mit dem Telefon, mit dem Sie zahlen würden, und vergleichen Sie die Adresse, die die Wallet zeigt, Zeichen für Zeichen mit dem Empfangsbildschirm Ihrer eigenen Wallet — die ersten und die letzten sechs Zeichen fangen die meisten Vertauschungen ab, die vollständige Zeichenkette fängt den Rest. Senden Sie sich danach einen kleinen Testbetrag, bevor der Code in Menge gedruckt wird. Wiederholen Sie das nach jedem Neudruck aus einer gespeicherten Datei.

Fragen und Antworten

Steckt mein privater Schlüssel oder meine Wiederherstellungsphrase im Code?

Nein, und geben Sie beides niemals auf irgendeiner Webseite ein. Dieses Werkzeug nimmt eine Empfangsadresse, die öffentliche Information ist und geteilt werden soll. Ein privater Schlüssel oder eine Wiederherstellungsphrase gibt die Kontrolle über die Wallet selbst aus der Hand, und kein seriöser Generator, keine Börse und kein Support hat irgendeinen Grund, danach zu fragen.

Kann ein beschädigter oder verschmutzter gedruckter Code Geld an die falsche Adresse senden?

Nein. QR-Codes tragen eine Reed-Solomon-Fehlerkorrektur, und der Dekodierer stellt entweder exakt die ursprüngliche Zeichenkette wieder her oder scheitert ganz — er liefert keine plausible, aber andere Adresse. Schaden jenseits der Wiederherstellungsfähigkeit führt zu einem gescheiterten Scan, und das ist sicher. Das echte Risiko ist eine falsche Adresse, die von Anfang an korrekt kodiert wurde.

Warum blendet die Ethereum-Option die Felder für Bezeichnung und Nachricht aus?

Weil EIP-681 sie nicht definiert. Parameter hinzuzufügen, die eine Spezifikation nicht beschreibt, führt dazu, dass Wallets sie entweder ignorieren oder den URI als fehlerhaft ansehen, und ein fehlerhafter URI ist schlimmer als eine fehlende Bezeichnung. BIP-21 und Solana Pay definieren beide Bezeichnung und Nachricht, für jene vier Netzwerke erscheinen die Felder also.

Funktioniert das auch für einen Token statt für die native Münze?

Von dieser Seite aus nicht. ERC-20-Überweisungen nach EIP-681 brauchen eine Vertragsadresse und einen Funktionsaufruf im URI, und Solana Pay braucht einen spl-token-Parameter mit der Mint-Adresse — beides lässt sich auf subtile Weise falsch machen, und zwar so, dass Geld verloren geht. Nutzen Sie die Anforderungsfunktion Ihrer eigenen Wallet, die die Nachkommastellen und den Vertrag des Tokens kennt.

So funktioniert ein statischer QR-Code

Jeder Code auf dieser Seite ist statisch: Die Nutzlast steht in den schwarzen und weißen Modulen selbst. Beim Lesen wird nichts nachgeschlagen, kein Server von uns ist beteiligt, und kein Abo hält den gedruckten Code am Leben. Dieselbe Eigenschaft ist die Grenze — einmal gedruckt, lässt sich sein Inhalt nicht mehr ändern.

Drei Dinge entscheiden dann, ob ein gedruckter Code gelesen wird: wie viele Bytes die Nutzlast ergeben hat, welche Fehlerkorrekturstufe den Schaden auffängt und wie breit ein einzelnes Modul auf dem Papier wird. Diese Ratgeber gehen jeden Punkt mit Zahlen durch.