de
Zurück zur Liste

Die Zahlung auf den Kopf gestellt: Chipkartenzahlungen mit BTC, BCH und BSV

source-logo  bitcoinblog.de 12 November 2019 14:40, UTC

Gestern wurde ein neues, elegantes System für Offline-Zahlungen mit Bitcoin Cash durch eine Chipkarte vorgestellt. Im Grunde dreht es den Zahlungsprozess mittels eines Smart Contracts um und gibt dem Händler eine Einzugsermächtigung. Auch für Bitcoin SV gibt es ein Projekt, das Zahlungen durch eine Chipkarte ermöglicht – zwar weniger clever, aber dafür flexibler und privater. Für Bitcoin (BTC) stellt sich dagegen vor allem eine Frage: Kann man das auch mit dem Lightning Netzwerk machen?

Ein ganz normaler Einkauf im Supermarkt kann ausreichen, um Zweifel daran zu wecken, dass Bitcoin wirklich das Zahlungsmittel der Zukunft ist. Man legt seine Waren aufs Kassenband, hält seine EC-Karte ans Terminal, und ein bis zwei Sekunden später ist der Einkauf bezahlt. Es ist kaum vorstellbar, dass es bequemer geht. Funktioniert das auch mit Bitcoin?

Gestern hat der Bitcoin-Cash-Entwickler Tobias Ruck eine Methode vorgestellt, um mit einer Chipkarte mit Bitcoin Cash (BCH) zu bezahlen. “Heiliger Satoshi!”, twittert er, “Ich habe es getan! Eine Chipkarte, die eine gültige Bitcoin-Cash-Signatur erzeugt. Wer möchte mit einer Karte bezahlen – an ein Telephon? Es dauert weniger als eine Sekunde. Stellt euch vor, ihr wollt Karten in einem Shop akzeptieren, und dazu müsst ihr nur eine App auf eurem Telefon installieren.”

Gegenüber der Art, wie man heute im Laden mit Bitcoin (oder BCH) bezahlt, wäre das ein gewaltiger Fortschritt: Man braucht eine Smartphone-Wallet, scant einen QR-Code, generiert eine Transaktion, und sobald die App beim Händler die Transaktion sieht, ist die Zahlung durch. Das dauert im allerbesten Fall einige Sekunden, erfordert im schlechteren Fall die Eingabe von PINs und Passwörtern, wodurch zehn Sekunden gleich durch sind, und funktioniert im allerschlechtesten Fall gar nicht, weil man kein oder kein ausreichend gutes Internet hat.

Das Problem mit Bitcoins auf Chipkarten

Was ist der Trick – und warum haben wir nicht schon seit Jahren Bitcoin-Transaktionen per Chipkarte? Tobias Ruck hat seine Chipkarte auf Basis des BeCash-Protokolls gebildet. Das Whitepaper erklärt, was dabei warum passiert. In der Theorie sei es schon lange möglich, offline Transaktionen zu bilden. Dabei erzeugt der Bezahlende die Transaktion auf seiner Wallet oder in seiner Chipkarte, aber sendet sie nicht ans Bitcoin-Netzwerk – das kann er mangels Internet ja nicht – sondern an den Händler, entweder per Bluetooth, Near-Field-Communication oder einen QR-Code. Der Händler leitet die Zahlung schließlich ans Netzwerk weiter, womit sie abgeschlossen wäre. An sich kein gravierendes Problem – aber es gibt einige Nachteile.

Der Kern des Problems ist, dass Bitcoin-Zahlungen “push”-Operationen sind: Sie gehen vollständig vom Sender aus, anstatt dass der Empfänger sie sich abholt (“pull”). Das ist ein großer Vorteil, weil es sicherer ist. Es bürdet dem Sender aber eine erhebliche Arbeit auf und verlangt von ihm ein gewisses Wissen über die Coins, die in seiner Wallet liegen – was ohne Internetverbindung oft schwierig zu erreichen ist.

Falls der Händler es beispielsweise nicht schafft, die Transaktion ans Netzwerk zu senden, wird die Wallet den nicht ausgegebenen Output (UTXO) falsch updaten. Um das zu korrigieren, braucht es wieder eine Internetverbindung, was etwa bei Karten oder anderen Mikro-Geräten oft schwierig ist. Auch das Aufladen einer solchen Mikro-Wallet ist schwierig, weil sie dazu erneut Kontakt zum Bitcoin-Netzwerk braucht oder sonst auf irgendeine Weise die eingehende Transaktion bekommen muss. Ferner ist es eine gar nicht so triviale Operation, eine Transaktion zu signieren und, vor allem, sich mit dem Bitcoin-Netzwerk zu verbinden, um eingehende Transaktionen zu validieren. Das kann für einfache Chipkarten zuviel sein.

Mit diesen Nachteilen kann man zwar umgehen, aber sie machen die Sache deutlich schwieriger und in der Praxis auch unbequemer.

Transaktionen auf den Kopf stellen

Die Lösung, die Tobias Ruck nun entwickelt hat, dreht die Prozedur einer Bitcoin-Zahlung um. So wie bei einer EC-Karte erlaubt der Zahlende dem Empfänger, einen gewissen, im Prozess der Zahlung definierten und signierten Betrag von einem Konto abzubuchen. Es ist also, mehr oder weniger, eine Einzugsermächtigung. Dass dies bei einer Bitcoin-Variante funktioniert, ist aufregend. So etwas gab es bisher einfach noch nicht.

Im Kern der Prozedur ist der neue Op-Code Checkdatasig (CDS) auf, der mit der legendären Hardfork im November 2018 bei Bitcoin Cash eingeführt wurde. CDS erlaubt es, in einer Transaktion andere Daten als die Transaktion selbst zu signieren und zu verifizieren. Durch CDS kann man eine Zahlung nicht durch den privaten Schlüssel, sondern durch andere, signierte Daten auslösen.

Die Details sind recht komplex und verlangen ein gewisses Grundverständnis darüber, wie Bitcoin im Inneren funktioniert. Beginnen wir mit dem, was die Chipkarte macht: Sie generiert ein Geheimnis aus 256 Bits, eine Nonce – das ist ein zufälliger Wert – sowie ein Bitcoin-Schlüsselpaar. Um die Chipkarte aufzuladen, muss man mit einer Online-Wallet einen Smart Contract initiieren, indem sie unter anderem aus dem öffentlichen Schlüssel und der Nonce der Chipkarte eine Adresse bildet. An diese sendet man dann die Coins, die man mit der Chipkarte ausgeben möchte.

Wenn man mit der Chipkarte bezahlt, passiert das folgende: Der Empfänger generiert eine Zahlungsaufforderung, die eine Hash seines öffentlichen Schlüssels sowie den zu zahlenden Betrag enthält. Diese sendet er an die Offline-Wallet, welche sie dann mit ihrem Geheimnis signiert und die Signatur mitsamt ihrem öffentlichen Schlüssel und der Nonce zurückgibt. Diese Informationen sind genug, um eine Transaktion zu bilden, die den entsprechenden Betrag aus dem Smart Contract abzieht. Das dabei entstehende Wechselgeld fließt zwingend an die Adresse der Chipkarte zurück.

Die Lösung ist spannend, weil sie eine neue Methode eröffnet, um mit Bitcoin zu bezahlen. Allerdings eröffnet sie auch neue Sicherheitsprobleme: Was, wenn der Empfänger heimlich einen anderen Betrag angibt, ohne dass der Zahlende es merkt? Solche Fragen werden sicherlich noch auf der Agenda stehen, wenn Tobias Ruck seine Erfindung umsetzt. Bislang existiert nur ein Prototyp, der noch ein ganzes Stückchen vom Markteintritt entfernt ist.

KaChing!

Weiter als BeCash ist bereits KaChing, ein Verfahren, um mit Bitcoin SV per Chipkarte zu bezahlen. Entwickelt wurde es von Bitcoin Norway. Auch es wickelt eine Zahlung ab, ohne dass der Zahlende online ist, und schließt sie in 1,3 Sekunden ab. Bitcoin Norway hat dafür auch bereits Chipkarten und Terminals für die Händler hergestellt, ist aber ebenfalls noch nicht in die Produktion für den Markt gegangen. Alternativ können auch Android-Smartphones als Terminal verwendet werden.

Im Hintergrund von KaChing steht das APDU Transaction Protokoll (Application protocol data unit Protokoll), das für Szenarien geschrieben wurde, in denen Sender und Empfänger am selben Ort sind. Dabei sendet das Terminal eine Zahlungsaufforderung an die Wallet, die danach ein Transaktions-Template generiert. Der Empfänger – sein Terminal – kann diese Transaktion dann noch bearbeiten, etwa indem er weitere In- und Outputs hinzufügt, um die Privatsphäre beider Parteien zu verbessern, eine Rechung mit Signaturen von Sender und Empfänger per Op_return anhängt oder die zu bezahlenden Transaktionsgebühren erhöht. Anschließend signiert die Chipkarte die Transaktion und gibt sie wieder an das Terminal zurück, das sie dann ans Bitcoin-SV-Netzwerk sendet. Dieser gesamte Prozess dauert kaum mehr als eine Sekunde.

Um die KaChing-Karte aufzuladen, benötigt man selbst eine Terminal-App. Während die Karte ihre UTXO (Münzen) eigenständig verwaltet, nimmt sie nur über das Terminal Kontakt zur Blockchain auf. Dies ist notwendig, um neue UTXO aufzunehmen oder die alten zu aktualisieren, falls etwas schief gegangen ist.

KaChing ist nicht so innovativ wie BeCash und stellt etwas höhere Anforderungen an die Chipkarte, was sich in einer minimal längeren Transaktionszeit manifestiert. Allerdings erlaubt es auch flexiblere Transaktionen, etwa mit einer verbesserten Privatsphäre durch zusätzliche In- und Outputs oder eine signierte Rechnung. Die Probleme, die Tobias Ruck im BeCash-Paper für Chipkartenzahlungen beschreibt, scheinen im Rahmen eines erträglichen Aufwandes lösbar zu sein – während keine oder zumnindest weniger neuen Sicherheitsprobleme dadurch entstehen, dass die Karte dem Empfänger eine Art Einzugsermächtigung gibt.

Und wie wäre es bei Lightning?

Nachdem wir nun Bitcoin Cash und Bitcoin SV angeschaut haben, stellt sich, natürlich, die Frage, wie es bei Bitcoin (BTC) aussieht. Onchain kann man Chipkarten-Zahlungen vermutlich vergessen, weil die Transaktionsgebühren zu hoch und zu unberechenbar sind. Die Allerweltszahlungen mit Bitcoin werden, das gilt weithin als ausgemacht, künftig ausschließlich über Lightning prozessiert.

Die Frage ist daher, können Chipkarten auch mit Lightning? Ich würde sagen, nein, stoße dabei aber auch an die Grenzen meines Wissens und meiner Phantasie. Eine Lightning-Zahlung läuft etwa so ab: Der Sender holt sich vom Empfänger eine Destination, sucht dann in seinem Abbild des Lightning-Netzwerkes eine Route heraus, und wenn er eine findet, schickt er die Zahlung auf den Weg. Sobald sie dort angekommen ist, gibt der Empfänger ein Geheimnis heraus, das rückwärts zurück zum Sender wandert und es allen Knoten dazwischen erlaubt, das ihnen anvertraute Guthaben auszugeben.

Den Prozess des Sendens auf eine Chipkarte zu packen scheint rundwegs ausgeschlossen. Die notwendige Arbeit, um einen Pfad durchs Netzwerk zu finden, dürfte die Kapazität jeder Chipkarte sprengen. Zudem benötigt eine normal Lightning-Transaktionen einen (gar nicht so schlechten) Internetempfang, und sie findet ihren Weg in der Regel nicht direkt zum Empfänger, sondern über mehrere, für den User kaum prognostizierbare Schritte. Daher variiert die Dauer einer Lightning-Transaktion auch oft; es kann, je nach Betrag, zwischen einer und 20 Sekunden dauern. In manchen Fällen kommt es auch vor, dass eine Lightning-Zahlung scheitert, obwohl die Wallet ein ausreichendes Guthaben hat, weil der Betrag zu groß ist, um durch einen Payment Channel zu passen.

Es gibt also mehrere Gründe, weshalb eine Lightning-Transaktion auf die übliche Weise nicht auf eine Offline-Chipkarte geht, und selbst wenn sie es würde, unter normalen Umständen nicht für die Ladentheke geeignet wäre. Ein wenig besser sähe es aus, wenn der Zahlende einen direkten Channel mit dem Empfänger hat; in dem Fall wäre die Suche nach einem Pfad hinfällig und die Transaktion wäre auch so gut wie sofort da. Auch eine Internetverbindung wäre nicht notwendig, da man die Transaktion direkt an den Channelpartner per NFC oder Bluetooth geben kann.

Um eine solche Lightning-Karte aufzuladen, bräuchte man parallel einen Lightning-Node (oder auch eine Wallet), die dann die privaten Schlüssel sowie die Channel-Daten an die Karte sendet. Vermutlich müsste man also am Anfang mit dem Smartphone antanzen, einen Channel eröffnen, und diesen dann an die Karte überspielen. Etwas komplexer wird es, wenn man nicht nur bei einem Laden bezahlen möchte, sondern bei vielen. Dann bräuchte man mit jedem einen Payment-Channel, was unter Umständen einfache Chipkarten an ihre Belastungsgrenzen bringen könnte.

Ohnehin scheint die Lösung der direkten Channels mit jedem Einzelhändler wenig befriedigend. Man kann ja nur das Geld ausgeben, das man für den einzelnen Händler reserviert hat, und müsste mit jedem ein individuelles Setup aufsetzen; eventuell könnte die Karte es einer Smartphone-App erlauben, die Guthaben jedes Channels zu sehen und diese auch aufzuladen. Aber auch dann bliebe ein System, das im Vergleich zu BeCash, KaChing und der guten alten EC-Karte reichlich unpraktibel – und durch die Onchain-Gebühren für die Channels auch recht teuer – ist.

Die verbleibende Möglichkeit, das gerade zu biegen, wäre wohl die radikale Zentralisierung – dass es einen riesigen Hub gibt, mit dem jede einzelne Karte einen Channel unterhält. Damit wären wir wieder da, dass manche Handlungen genau das Gegenteil von dem erreichen, was sie eigentlich beabsichtigt haben.

bitcoinblog.de