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

Screenshot aus Videopräsentation der Ka-Ching-BSV-Chipkarten.

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.

Über Christoph Bergmann (1644 Beiträge)
Das Bitcoinblog wird von Bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Christoph hat vor kurzem ein Buch geschrieben: Bitcoin: Die verrückte Geschichte vom Aufstieg eines neuen Geldes. Das Buch stellt Bitcoin in seiner ganzen Pracht dar. Ihr könnt es direkt auf der Webseite Bitcoin-Buch.org bestellen - natürlich auch mit Bitcoin - oder auch per Amazon. Natürlich freuen wir uns auch über Spenden in Bitcoin, Bitcoin Cash oder Bitcoin SV an die folgende Adresse: 1BergmanNpFqZwALMRe8GHJqGhtEFD3xMw. Wer will, kann uns auch Hier mit Lightning spenden. Tipps für Stories sind an christoph.bergmann@mailbox.org immer erwünscht. Wer dies privat machen möchte, sollte meinen PGP-Schlüssel verwenden.

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

  1. 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.

    NFC, Bluetooth oder Lösungen wie Airdrop über WLAN sollten dafür ausreichend sein, der Händler muss ja so oder so eine Internetverbindung haben, um die Transaktion validieren zu können. Ein Smartphone hat man heutzutage ohnehin immer dabei und Wallets könnten ähnlich wie heute bei NFC Kartenzahlungen ein Limit pro Transaktion / pro Tag implementieren, für welches keine Passwörter / Pins notwendig sind. Smartphone rausholen und auf OK klicken dürfte kaum länger dauern als mit Karte per NFC und ist deutlich sicherer, da man auf dem eigenen Gerät den Betrag sieht. Das ginge auch per Display in der Karte, aber dann kommen wir langsam wieder in Richtung Smartphone, eine Stromversorgung wäre dafür dann auch notwendig…

    Lightning ist ohne stabile Internetverbindung obsolet, denn wenn ich für jeden Händler einen eigenen Channel eröffnen muss, dann tut es auch eine simple Multisig Transaktion mit TimeLock, die ich bei jedem Zahlungsvorgang bei diesem Händler update (was Lightning im Grunde auch antreibt). Die vermeintlichen Vorteile des Lightning Netzwerks wie kostenloses (Re)Balancing von Channels durch Routing fremder Zahlungen sind nur mit aktiver Internetverbindung nutzbar und der Channel muss jeweils unbedingt auf neuesten Stand gebracht werden, bevor man eine neue Zahlung durchführt. Ob man eine Route sicher per NFC / Bluetooth / WLAN über die Internetverbindung des Terminals suchen könnte, müsste man genauer sich genauer ansehen, dazu ist aber auf jeden Fall ein Smartphone notwendig, obwohl ich das jetzt nicht als großen Nachteil sehe (s.o.). Das größere Problem ist weiterhin eher die Routenfindung selbst bei zweistelligen Eurobeträgen und die eingehende Liquidität für Händler, die beide wieder zur Zentralisierung auf potente Hubs beitragen.

    Seit Lightning nun auch auf der Blockstream proprietären Liquid Chain läuft, kommt es einem immer mehr so vor, als wolle man Bitcoin selbst so unbenutzbar wie möglich machen und langfristig alle User in Liquid pressen. Hat ja auch tolle Vorteile, Block time 1 Minute statt 10, Standardmäßig Confidential Transactions, die alle Beträge (und ggf. Assets) verstecken und nicht zuletzt die Möglichkeit, Assets auf die Chain zu bringen wie USDT bereits vorhanden und natürlich niedrigere Fees als Bitcoin (was auch keine große Kunst ist). Schön auch, dass die Coins von der Federation gehalten werden, sobald sie auf die Liquid Sidechain kommen… Ob man die überhaupt auditen kann?
    In der Vergleichstabelle nimmt man Bitcoin selbst schon gar nicht mehr unter Betracht: https://blockstream.com/2019/07/31/en-lightning-on-liquid/

    Dazu passend:

  2. Klingt sehr vielversprechend. Ich hoffe mal, dass sich das KaChing Protokoll auch durchsetzt und in der Breite von den Merchants angenommen wird. Ich hätte gern in Zukunft ein paar Taschengeld-Karten für meine Kids.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s