Bezahlen Sie benutzerdefinierte ERC20-Token mit MetaMask

Wie kann ich meine Kunden dazu bringen, die benutzerdefinierten Token mit MetaMask an meine dapp zu zahlen? Als ich dies anprobierte, konnte ich keine Optionen sehen, ich könnte den benutzerdefinierten ERC20-Token auswählen, sondern nur den Ether. Bitte beraten.

Antworten (2)

Wenn Ihre Benutzer über die Token verfügen, können sie in der Metamaske "Token hinzufügen". In der Metamaske haben Sie 2 Registerkarten, "Senden" und "Token". Klicken Sie auf „Token“ und dann auf „Token hinzufügen“, Sie werden nach der Adresse des Vertrags gefragt, der den Token erstellt hat, und nach der Anzahl der Dezimalstellen. Dann können die Benutzer Token übertragen.

UPDATE: Um mit Ihrem Vertrag zu interagieren, müssen Benutzer das Token nicht zur Metamaske hinzufügen.

Sie können web3 verwenden

Definieren Sie die web3-Variable, damit Sie mit Ihrem Vertrag interagieren können

var web3 = new Web3(new Web3.providers.HttpProvider("your ethereum node")); 

Für den Zugriff auf die Funktionen des Vertrages benötigen Sie die Definitionen der Funktionen (ABI)

ABI = "put here your contract ABI"

Dann können Sie eine Instanz Ihres Vertrags erstellen:

var Contract = web3.eth.contract(ABI);
var contractInstance = Contract.at('address of your contract')

Nun können Sie auf die Funktionen Ihres Vertrages zugreifen, zum Beispiel die Funktion Übertragung, um Token vom Benutzerkonto auf einen anderen Benutzer oder auf Ihren Vertrag zu übertragen:

contractInstance.transfer.("the_adress","the amount of tokens", {from:address},(function(err,result){
if(!err){
console.log(result)
}

})

Dies ist nur ein kurzer Überblick darüber, wie es geht. Ich hoffe, es hilft.

Vielen Dank für die Beantwortung meiner Frage - @Jaime. Aber was ich hier meinte, ist die Interaktion mit Dapp.
Mit Dapp meinen Sie die Interaktion mit Ihrem Smart Contract?
Ja. Das ist richtig. @Jaime
Ich aktualisiere nur die Antwort, um zu zeigen, wie Sie js-Code in Ihre Website einfügen, damit Sie die Funktionen in Ihrem Vertrag aufrufen können. Sie können jede Funktion mit einer Schaltfläche auf Ihrer Website verknüpfen. ich hoffe das hilft. Wenn dies Ihre Frage beantwortet, akzeptieren Sie bitte die Antwort. Lassen Sie mich wissen, wie es geht.
Was ist die "the_adderss" hier, auf die Sie sich beziehen? Ist die ERC20-Token-Adresse oder die Empfängeradresse? Wenn dies nicht die ERC20-Token-Adresse ist, woher weiß die MetaMask, welches Token gesendet und empfangen werden soll? @Jamie
contractInstancebereits die Adresse Ihres Vertrags-Tokens haben, the_addressin meinem Beispiel ein Parameter, der von der transferFunktion der ERC20-Tokens benötigt wird, das ist die Adresse, an die die Tokens gesendet werden. Ich denke, es gibt ein wenig Verwirrung darüber, was Metamask tut. Dadurch können Sie eine Verbindung zum Netzwerk herstellen, indem Sie Ihre Transaktionen offline mit Ihrem Schlüssel signieren und eine Zeilentransaktion senden. Was ich sagen möchte, ist, dass Metamask bei der Interaktion mit Verträgen nicht weiß, worum es bei den Transaktionen geht, es sendet einfach die Transaktion an das Netzwerk, das von web3 vorbereitet wurde.
Darüber hinaus sind Token keine Dinge, also senden Sie nicht wirklich Token, Sie senden einen kryptografisch signierten Befehl, der die Salden in einer Zuordnungsvariablen ändert. Wenn Sie also sagten, dass Sie Token "senden", ändern Sie nur eine Zahl in einem Register. Diese Zahl stellt die Anzahl der Token dar, die Sie haben. In Ihren Anwendungen bedeutet das Senden von Token also das Senden einer Nachricht mit Ihrer Unterschrift, der Vertrag überprüft Ihre Anmeldeinformationen und wenn Sie über ein Guthaben (Zahl) verfügen, können Sie den erforderlichen Betrag zum Register einer anderen Person hinzufügen. Das ist es, was sendign Token wirklich bedeutet.
Vielen Dank für Ihre ausführliche Erklärung hier. Ich probiere es aus und halte euch auf dem Laufenden. @Jaime

Wenn ich Sie richtig verstehe, klingt es so, als ob Sie versuchen, die Gasgebühr (eine Gebühr in der Genesis-Währung der Blockchain, die Sie zahlen müssen, um in die Blockchain zu schreiben) durch Ihren ERC20-Token ersetzen . Du kannst das nicht . Sie können Ihren ERC20-Token zusätzlich zur Gasgebühr hinzufügen, aber Sie können die Gasgebühr nicht ausschließlich durch einen beliebigen ERC20-Token ersetzen.