Wird es bald möglich sein, mit Token auf Ethereum auch die Transaktionsgebühren zu bezahlen?

Die Token-Wirtschaft auf Ethereum wäre wunderbar – wenn es nicht den kleinen, etwas ungemütlichen Umstand gäbe, dass jede Transaktion mit Token einen kleinen Betrag Ether an Gebühren kostet. Um dies zu ändert, diskutiert die Community derzeit Methoden, wie man mit den Token selbst die Gebühren bezahlen kann. Nun gibt es sogar ein EIP dafür, was ein wichtiger Schritt hin zu einer Umsetzung ist.

Es gibt mittlerweile hunderte von Token auf der Ethereum-Blockchain. Dank des ERC20-Standards ist es leicht, diese Token zu erzeugen und sie durch die üblichen Wallets zu empfangen und zu versenden. Mit den Token kann man auf Ethereum so gut wie jedes beliebige Gut repräsentieren – Aktien, Gold, Silber, Kaffee, Staatsanleihen, Euro, Dollar und so weiter.

Für viele User dieser Token ist es jedoch noch ein Problem, dass man jeder Token-Transaktion eine geringe Menge Ether als Transaktionsgebühr beigeben muss. Denn dies bedeutet, dass der Herausgeber entweder mit seinen sagen wir Kaffee-Token auch ein wenig Ether mitschicken oder dass der Empfänger dieser Token sich noch Ether nachkaufen muss. Ohne die Ether sind die Token quasi eingefroren. Die für alle Beteiligten angenehmste Lösung wäre es wohl, wenn man die Transaktionsgebühren einfach in den Token anstatt in Ether bezahlen könnte.

Dies jedoch kommt mit einigen Problemen daher. Bisher werden die Gebühren für die Miner ausschließlich in Ether berechnet. Man könnte diese Regel natürlich aufweichen, und sagen, die Gebühren können auch in allen ERC20-Token bezahlt werden. In diesem Fall müsste man es aber irgendwie ermöglichen, dass die Preise vergleichbar sind. Ein dezentraler Markt könnte hier eine Lösung sein, doch es ist schwer, einen Weg um die Volatilität der Tokenpreise in Ether herum zu finden. Wenn man das Monopol von Ether auf die Gebührenzahlungen aufweicht, wird es sehr viel komplizierter, die richtige Höhe der Transaktionsgebühren zu treffen – und diese als Miner einzuschätzen.

Daher geht die derzeitige Diskussion einen anderen Weg: Man versucht, die Sender in Token bezahlen zu lassen, aber den Minern Ether zu geben. Anders gesagt: Man baut einen Kanal, über den die Token in Ether gewechselt werden. Ein wenig so wie es BitPay macht, wenn man mit Bitcoin bezahlt, aber der Händler Euro bekommt, nur eben dezentraler und stärker auf Protokollebene. Wie man das genau macht, ist Gegenstand verschiedener Vorschläge, von denen eines vor kurzem den Status eines EIPs, eines Ethereum Improvement Proposals, erreicht hat.

Jim McDonald beschreibt die grundsätzliche Konstruktion in einem Blogpost. Der ERC20-Contract für Token hat eine Approve()-Funktion. Durch diese ist es möglich, einer anderen Adresse zu erlauben, einen bestimmten Betrag an Token zu überweisen. Wenn man nun vorhat, seine Transaktionsgebühren mit Token anstatt Ether zu begleichen, kann man einer dritten Partei gestatten, vom Account eine bestimmte Menge Token auszuzahlen. Damit kann diese dritte Partei die gesamte Transaktion in Ether ausführen und sich noch eine Gebühr abzwacken.

Ein Konzept, wie man die Gebühren mit Token bezahlen kann, hat bereits Status vorgestellt. Status ist ein mobiler Ethereum-Client, der sich durch die Ausgabe von SNT-Token finanziert. “Indem wir eine durch Ethereum signierte Nachricht im Token-Contract platzieren, können SNT-Accounts Nachrichten signieren, in denen sie Transaktionen abbilden und einen Gaspreis [eine Gebühr] in SNT vorschlagen, damit irgendjemand anderes die Transaktion in die Blockchain bringt.” Für die User hätte dies den Vorteil, dass sie Gebühren auch mit den SNT-Token bezahlen können, während sich über die Status-Wallet ein kleines Ökosystem an Wechseldienstleistungen bilden könnte.

Kürzlich hat nun der Ethereum-Entwickler Ludovic Galabru ein EIP, ein Ethereum Improvement Proposal, eingereicht, das einen solchen Kanal in den Ethereum-Client bringen soll. Das EIP mit der Nummer 865 beschreibt”eine Standardfunktion, die ein Token-Contract implementieren kann, um es einemUser zu erlauben, den Transfer von Token an eine dritte Partei zu delegieren. Die dritte Partei bezahlt das Gas [die Gebühr] und erhält dafür eine Gebühr in Token.”

Wie läuft es im Detail ab? Es ist ein wenig kompliziert. Der Sender nimmt eine Nachricht, in der alle Angaben zur Zahlung stehen – wem er wie viele Token sendet, wer der Delegierte ist, der die Transaktion an seiner statt abschickt, wie viele Token er für Gebühren bezahlt – und bildet daraus die drei Werte V, R, S, welche die Outputs einer ECDSA-Signatur sind. Diese sendet er zusammen mit der Nachricht an den Delegierten, der die Werte prüft und die Transaktion dann durch seinen Account ausführt. Die kryptographischen Feinheiten kann ich nicht erklären.

Natürlich gibt es noch offene Fragen. Zumindest für mich. Denn um dieses Konzept umzusetzen, bräuchte man wohl auch einen offchain-Kanal, und eine Methode, damit der Sender den Delegierten findet. Dies ist herausfordernd – kann aber gleichzeitig auch eine Chance sein, um ein Netz solcher Kanäle aufzubauen, durch die man auch Netzwerke von Payment-Channels (Raiden) oder dezentrale Börsen realisieren kann.

About Christoph Bergmann (1236 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden. Sie können Bitcoin oder Bitcoin Cash an die folgende Adresse spenden: 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC Weitere Adressen (bech32, SegWit, Litecoin, Ethereum) finden Sie HIER. Dort erfahren Sie auch, wie Sie das Bitcoinblog anderweitig unterstützen können, etwa durch Affiliate-Links.

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 )

w

Connecting to %s