Lohnen sich Events in Ethereum Tokens?

FRAGE:

Lohnt es sich, Ereignisse in Ihrem Token zu haben? Jede Transaktion enthält normalerweise das Ereignis, was bedeutet, dass mehr Gas für die Benutzer ausgegeben wird (was schlecht ist). Ich habe kein vollständiges Bild von all den guten Ereignissen, die das Bild hervorbringen, daher fällt es mir schwer zu entscheiden, ob ich sie in von mir codierte Token aufnehmen soll.


AUSARBEITUNG:

Nach langem Suchen habe ich verstanden, dass Ereignisse (wie die im ERC-20-Token-Standard) nur Protokolle sind, die Apps eine einfachere Möglichkeit bieten, zu überprüfen, was mit Ihrem Token passiert, aber keine Funktionalität bieten in Bezug darauf, dass der Token funktioniert. Hier ist zum Beispiel eine Teilmenge des Codes aus dem ERC-20-Token-Standard :

function transfer(address _to, uint _value) returns (bool success);
event Transfer(address indexed _from, address indexed _to, uint _value);

Die erste Zeile ist die Deklaration der Übertragungsfunktion , während die zweite die Deklaration des Transfer - Ereignisses ist. In Bezug auf Transaktionen kommt der ERC-20- Token ohne ein Transfer - Ereignis gut aus. Warum also sollten Ereignisse überhaupt einbezogen werden, wenn sie bei jeder Transaktion Gaskosten hinzufügen? Ich weiß nicht, was die guten Seiten von Veranstaltungen sind und ob sie die schlechten Seiten überwiegen, weshalb ich diese Frage stelle.

Antworten (2)

Es ist eine ziemlich gute Standardeinstellung, Ereignisprotokolle zu verwenden, um einen Prüfpfad zu erstellen, sodass der gesamte Zustandsverlauf des Vertrags theoretisch nur mit dem Quellcode und den Ereignisprotokollen rekonstruiert werden könnte.

Ereignisprotokolle sind nützlich für Kunden (aktuelle und zukünftige ) und sie sind sehr billig. Meiner Meinung nach ist es besser, auf Vollständigkeit zu achten und umfassende Ereignisprotokolle einzuschließen, die jede wichtige Zustandsänderung aufzeichnen.

Wenn man einem Standard entsprechen möchte und der Standard Ereignisprotokolle enthält, dann ist die persönliche Vorliebe natürlich irrelevant, und das Ereignisprotokoll ist ein Muss für eine konforme Implementierung.

Ich hoffe es hilft.

Es ist die Norm

Aus funktionaler Sicht gibt es keinen Grund, warum Sie die Übertragungsfunktion aufrufen müssen. Ich meine, das Nettoergebnis ist das gleiche, unabhängig davon, ob Sie es nennen oder nicht. Wenn Sie also nur ein Hauptbuch über die Zuweisungen in Ihrem Vertrag führen möchten, gibt es absolut keinen Grund für Sie, die Ereignisse auszugeben, außer einem sehr wichtigen eins.

Es ist die Norm.

Wenn Sie nicht bei jeder Übertragung ein Ereignis ausgeben, implementieren Sie kein ERC20-Standard-Token.

Was Sie implementieren, könnte als ERC20-Token bezeichnet werden, aber es würde Ihre Fähigkeit beeinträchtigen, als ERC20-Token an einer Börse gelistet zu werden, von Blockchain-Sites als ERC20-Token verfolgt zu werden usw.

Sie sehen, dass diese Seiten erwarten, dass sich Ihr Token auf eine bestimmte Weise verhält. Sie erwarten, dass sie bei Transfer-Events auf globaler Ebene zuhören können, um zu sehen, wann Salden aktualisiert werden müssen usw.

Ohne diese Funktionalität müssten sie Ihren ABI kennen und Ihre Funktionsaufrufe interpretieren, Ihre balanceOfFunktion für jede einzelne mögliche Adresse aufrufen oder Ihren Vertrag interpretieren, um herauszufinden, wie Ihr Vertrag Salden in Variablen verfolgt.

Und sicher, die meisten Verträge halten Salden in a mapping(address=>uint), aber das ist nicht unbedingt der Fall. Vielleicht könnten sie alle Anrufe bei verfolgen transfer(), aber auch dies ist nicht die einzige Möglichkeit, wie Verträge Salden ändern können.

Wenn dies Ihre Frage beantwortet hat, markieren Sie sie bitte als die richtige Antwort. Wenn nicht, lassen Sie es mich wissen, damit ich weiter helfen kann.