Können wir ERC20-Funktionen ändern?

Ich muss Token mit ERC 20 erstellen und übertragen. Innerhalb der Standardschnittstelle von ERC 20 haben wir die Funktion genehmigen (Adressspender, mit Token), die wiederum Spender genehmigt, einige Token von (msg.sender) zu nehmen. Meine Frage ist, ob wir eine andere Kontoadresse angeben können, von der wir übertragen möchten, anstatt (msg.sender)..?? (dh können wir einen zusätzlichen Parameter für die Funktion genehmigen wie genehmigen (Adresseigentümer, Adressspender, uint-Token) ... übergeben?)

Willkommen beim Ethereum Stack Exchange! Sie müssen vorsichtig sein, wie Sie die Genehmigung ändern möchten, da Sie nicht möchten, dass ein Hacker approve(HariAddress, hackerAddress, 1000)1000 Ihrer Token anrufen und stehlen kann ... Die Standardgenehmigung schützt Sie, weil Hari (msg.sender) dies tun muss fordern approve, dass Haris Token ausgegeben werden.
Wenn Sie die Funktionen nicht genau so implementieren, wie sie entworfen wurden, zeigt mein Explorer Sie als "nicht konformes" Token an. Und wenn Sie den Funktionen zusätzliche Parameter hinzufügen, wird Ihr Vertrag überhaupt nicht als ERC20-Token betrachtet und nicht in der Brieftasche aufgeführt.
Ich habe einen ERC20-Vertrag erstellt und versucht, etwas ETH zu senden. Der Vertrag zeigt die Menge an ETH, die ich gesendet habe, aber ich kann sie nicht auf meiner Brieftasche finden. Warum ist das so?
Wenn Sie eine neue Frage haben, stellen Sie diese bitte, indem Sie auf die Schaltfläche „ Frage stellen“ klicken . Fügen Sie einen Link zu dieser Frage hinzu, wenn dies hilfreich ist, um den Kontext bereitzustellen. - Aus Bewertung

Antworten (2)

Wenn Sie möchten, dass Ihr Token ERC20-konform ist, müssen Sie die erforderlichen Funktionen mit den erforderlichen Signaturen haben. Das ist der springende Punkt des Standards.

Das lässt Ihnen jedoch zwei weitere Optionen:

1) Fügen Sie weitere Funktionen und/oder Vertragsvariablen hinzu. Sie können beliebige Funktionen mit beliebigen Signaturen und Funktionalitäten hinzufügen, solange die erforderlichen ERC20-Signaturen auch im Vertrag vorhanden sind.

2) Machen Sie innerhalb der erforderlichen ERC20-Funktionen, was Sie wollen. ERC20 kann nur als Schnittstelle betrachtet werden - es sagt Ihnen nicht, wie die Funktionen zu implementieren sind, sondern zwingt Sie nur dazu, bestimmte Funktionen im Vertrag zu haben. Sie können beispielsweise einige Daten mit einer benutzerdefinierten Funktion hinzufügen und approvedie Daten in der erforderlichen Funktion auf irgendeine Weise verwenden.

Wenn Sie dies tun, sind Sie kein ERC20-Token mehr.

Ein ERC20-Token muss die definierten Methoden mit genau denselben Signaturen verfügbar machen. Das bedeutet, dass Sie die Parameter oder Namen nicht ändern können.

Sie können Modifikatoren hinzufügen oder den Code innerhalb der Funktion aktualisieren (wie dies bei verschiedenen Implementierungen von pausierbaren Token und anderen erweiterten Token der Fall ist).

Wenn Sie eine zusätzliche Methode definieren möchten, können Sie dies tun, aber Ihre ursprüngliche Methode „approve()“ muss ihre Parameter beibehalten.