Bitcoin-QR-Codes: Rohadresse oder Bitcoin-URI-Schema

Ich bin der Autor der bitcoinaddress.js- Bibliothek und frage mich, was der beste Inhalt für Bitcoin-QR-Codes ist.

Was Bitcoin-QR-Codes enthalten sollten (für mobile Wallet-Apps und andere Barcode-Scanner):

  • Nur Bitcoin-Adresse (dies ist nur eine, die ich selbst wild gesehen habe)

  • Bitcoin-URI-Schema-Link (BIP 21) mit Zahlungsbetrag, Transaktionsnotiz usw.

Aktuell habe ich nur Address implementiert, da ich nicht weiß, wie weit verbreitet die BIP 21-Unterstützung bei den Handys und Mobile Wallets ist. Wenn mir jemand Antworten und Hinweise zu früheren Recherchen zu diesem Thema geben kann, wäre ich dankbar.

Antworten (4)

Ich arbeite an einem Bitcoin-Projekt und habe Folgendes gesehen:

  • Nur die Bitcoin-Adresse
  • Ein URL-Parameter-ähnliches Schema mit dem Format "bitcoin:{plus the bitcoin address}" (keine Klammern verwendet)
  • Ein ausgefeilterer URL-Parameter, der den Betrag enthält, wie „bitcoin:{bitcoin addr}?amount={der Betrag}

Coinbase verwendet das letzte Schema und es wird von der BlockChain iPhone-App vollständig erkannt, sodass Sie eine bestimmte Menge an Bitcoin anfordern können, die an eine bestimmte Adresse gerichtet ist.

Coinbase verwendet die (veralteten) Google-Chart-APIs und die vollständige Abfragezeichenfolge, die sie zum Erstellen eines QR-Codes verwenden, sieht folgendermaßen aus:

<img width="300" height="300" alt="Chart?cht=qr&amp;chl=bitcoin%3a1k1yfezde2c37pwdevjnin1yc2qbtly6bk%3famount%3d0" src="https://chart.googleapis.com/chart?cht=qr&amp;chl=bitcoin%3A1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk%3Famount%3D0.01&amp;choe=UTF-8&amp;chs=300x300">

Wenn Sie diese src-URL über einen URL-Decoder laufen lassen, werden Sie feststellen, dass er 0,01 BTC an die Adresse 1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk anfordert.

Wenn Sie einen QR-Code erstellen, müssen Sie die Daten nicht per URL codieren. Coinbase tut dies nur, weil sie den QR-Code von Google über ein URL-Adressierungsschema anfordern müssen.

Ich erstelle meine QR-Codes auf meinem eigenen Server und zeige sie als Bilder auf einer Webseite an, und ich verwende nur nicht codierte Daten.

Mein Projekt verwendet intern qrcode.js, das QR-Codes auf der Clientseite erstellen kann und Kompatibilität bis zu IE6 beansprucht. Probieren Sie es aus, ich kann es nur empfehlen.
Auch der aufwändige URL-Parameter heißt „Bitcoin URI Scheme“ und ist unter Proposal BIP 0021 zu finden.
@Mikko, danke für den Hinweis auf BIP21. Ich habe das überprüft, nachdem ich diese Antwort gepostet hatte, und es hat mir geholfen zu verstehen, was ich sah.
BIP0021 gibt an, dass „Zeichen ordnungsgemäß URI-codiert sein müssen“.
„Richtig“ bedeutet gemäß RFC 3986 Abschnitt 2; insbesondere tools.ietf.org/html/rfc3986#section-2.4 . Kodieren Sie Zeichen nicht einfach willkürlich in Prozent. Prozentkodierte Trennzeichen, die als Trennzeichen gedacht sind, sind falsch.

Ich bin der Gründer von CryptoCoinJS und verwende die Bibliothek für meine eigene Software. Dies ist wahrscheinlich offensichtlich, wenn Sie QR-Codes scannen, überprüfen Sie beides. Beim Generieren von QR-Codes würde ich zur Sicherung nur die Adresse eingeben und für Zahlungsanforderungen das URI-Schema verwenden.

Ich habe den Coinpunk- Entwickler letzten Monat bei einem Treffen getroffen und er hat darüber gesprochen, wie schwer es für ihn war, einen vollständig auf HTML5 basierenden Bitcoin-QR-Code-Generator zu erstellen, der auch auf iOS-Geräten funktionieren würde. Offenbar war er erfolgreich.

Ich würde daher vorschlagen, sich sein Open-Source-Projekt anzusehen: https://github.com/kyledrake/coinpunk

qrcode.js, das intern in meinem Projekt verwendet wird, ist Open Source und funktioniert (siehe Github-Seite für den Status der kontinuierlichen Integration). Ich werde Coinpunk auch überprüfen.

Ich füge weitere Informationen zu diesem Thema hinzu.

Dies ist ein Format, das in Kapitel 2 von Bitcoinbook (How Bitcoin Works) vorgeschlagen wird.

bitcoin:1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA?
amount=0.015&
label=Bob%27s%20Cafe&
message=Purchase%20at%20Bob%27s%20Cafe

Components of the URL

A bitcoin address: "1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA"
The payment amount: "0.015"
A label for the recipient address: "Bob's Cafe"
A description for the payment: "Purchase at Bob's Cafe"

Und ich glaube, es ist ziemlich dasselbe wie BIP21 . Danke für den Hinweis.