Ich arbeite an einer Chrome-Erweiterung (Krypto-Wallet), mit der Sie einen unserer benutzerdefinierten ERC20-Token verwenden können, um auf Websites einzukaufen. Die meisten Benutzer der Erweiterung haben kein Ethereum in ihren Konten und können die Transaktionsgebühr nicht bezahlen.
Meine Recherche hat folgende Info ergeben:
Wir können die Transaktionsgebühr im Namen des Absenders im Smart Contract bezahlen. Der Benutzer muss nur eine Transaktion unterzeichnen, und wir können diese Signatur im Smart Contract verwenden, um die Gültigkeit der Transaktion aufrechtzuerhalten, während wir gleichzeitig für das Gas bezahlen.
Mein Problem ist jedoch, dass ich dies nicht innerhalb eines Smart Contracts tun möchte, da ich dadurch zusätzliches Benzin zahlen muss.
Gibt es eine Möglichkeit, diese signierten Transaktionen auf einem Server zu speichern und dann mit meiner Hostsprache (Javascript) und web3 Änderungen an der signierten Transaktion vorzunehmen, sodass Gas von einem meiner Konten kommt? Ist es überhaupt möglich?
Nach derzeitigem Stand muss die Gasgebühr für eine Transaktion immer von tx.origin
- dem Konto bezahlt werden, dessen privater Schlüssel die Transaktion signiert hat. Es gibt Pläne, dies zu ändern, aber es ist unklar, ob und wann dies geschehen wird.
Wenn Sie einen Standard-ERC-20-Token von einem Konto zu einem anderen senden möchten, können Sie dies auf zwei Arten tun:
transfer
. In diesem Fall werden Token vom msg.sender
zum Ziel übertragen.transferFrom
. Dadurch können Token von jedem Konto zu jedem Ziel übertragen werden, vorausgesetzt, der Kontoinhaber hat msg.sender
die Übertragung vorab genehmigt, indem er anruft approve
.Wenn ein Benutzer ein Standardkonto (ohne Vertrag) hat, gibt es keine Möglichkeit, msg.sender
sein Konto abzugleichen, ohne dass er auch tx.origin
, und die Gasgebühr bezahlt. Ich sehe zwei Möglichkeiten, wie Sie dies ändern könnten:
approve
, damit Ihr Konto anrufen kann transferFrom
. Dies erfordert, dass Benutzer mindestens einmal Ether in ihren Konten haben.ecrecover
) und einen Dritten autorisieren, eine Überweisung in ihrem Namen vorzunehmen.Während keine dieser Optionen unbedingt Smart Contracts benötigt, muss das zusätzliche Gas, das von einem Smart Contract verbraucht wird, nicht zu hoch sein, wenn Sie Smart Contracts benötigen. Die Gaskosten für den Aufruf eines Smart Contracts aus einem anderen Vertrag sind nicht so hoch - wenn kein Ether übertragen wird, sind die Kosten geringer als die Kosten für das Speichern eines Datenstücks in einer mapping
. Sie werden in jedem Fall einen Vertragsaufruf tätigen, da ERC-20-Token immer Verträge sind.
James_pic
Talha Masud
Talha Masud