Im Depeten Verständnis des Soliditätsereignisses -Events

Quelle: Dengchain Community

In dem heutigen Artikel werden wir uns mit Solidität befassenEreignisEs wird in häufigerer Ethereum und EVM aufgerufenProtokolleWesenWir werden sehen, wie man sie verwendet, ihre Definitionen, die Verwendung des Themas des Ereignisses und die Signatur, um das Protokoll zu filtern, und einige Vorschläge, wann.

Wir werden auch die Inspektion verdecken.Ereignis-Der Interaktionsmodus wird dieses berühmte Modell traditionell auf das Re -Einkommen staatlicher Variablen angewendet. Wir werden jedoch sehen, warum dieses Modell auch angewendet werden sollte, um Ereignisse und potenzielle Risiken und Sicherheitslücken auszulösen.

Wie definiere ich Ereignisse in Solidität?

Verfügbar seinEreignisDas Schlüsselwort definiert das Ereignis in Solidität, wie unten gezeigt.

     interface ilight {< BR/> Ereignis Switchon ();

Sie können den Namen des Vertrags über einen vollständigen begrenzten Zugang verfolgen, gefolgt von folgenDann dannSozug auf das Ereignis von einem anderen Vertrag mit dem Ereignisnamen, wie unten gezeigt:

Event-Kleid-Benutzer)

Die Ereignissignatur ist:

Ereigniskleiderbenutzer)

Das Thema der Veranstaltung lautet:

bytes32 topichash = UccessFoy .Selector;

Bitte beachten Sie, dass der Vorfall erst nach der Solidität v0.8.15 wird.WählerMitglieder können es benutzen.

Wenn Sie ein Blockchain -Protokoll überprüfen, finden Sie den Index des Themas des Protokolls0(Der erste) Der Zweck entspricht dem Thema der Veranstaltung.Da das Thema der Inhalt ist, der durch ein Protokoll durchsucht werden kann, können wirFilter mit dem Thema der Veranstaltung:

  • Suchen Sie nach bestimmten Ereignissen im Smart -Vertrag einer bestimmten Adresse.

  • Suchen Sie nach bestimmten Ereignissen in allen Verträgen auf der Blockchain.

Wir werden es weiter unten sehen,anonymAnonymer Ereignis ist die Ausnahme dieser Regel.anonymSchlüsselwörter lassen sie nicht suchen. Verwenden Sie den Begriff daher„anonym“Wesen

Basierend auf dieser Tatsache können wir auch schließen, dass das einfachste in Solidität definierte Ereignis keine Parameter hat, wie das oben definierte EreignisBulbreplacedoderSwitchon, Wird unten verwendetLog1Der Betriebscode löst das Thema im Protokoll aus, da der Vorfall selbst durchsucht werden kann.

Sie können weitere Themen hinzufügen, andere Themen werden verwendetLog2,,,,Log3,,,,Log4UndLog5Solange diese Parameter als markiert sind alsindiziertWesenSchauen wir uns den Indexparameter im nächsten Abschnitt an.

Ereignisparameter und Indexparameter

Das Ereignis kann jede Art von Parametern akzeptieren, einschließlich Werttyp (WertUintn,,,,Bytesn,,,,bool,,,,Adresse…) ,,Struktur,,,,AufreumUnd den vom Benutzer definierten Werttyp.

Nach meiner Forschung in diesem Artikel ist der einzige Typ, der nicht zulässig ist, der interne Funktionstyp.Der externe Funktionstyp ist zulässig, der interne Funktionstyp ist jedoch nicht zulässig.Beispielsweise wird der folgende Code nicht kompiliert.

// spdx- S Lizenz-Identifizierer: Nicht lizenziert
Pragma Soliday ^0.8.0; >

Wenn die Ereigniserklärung istanonymIm Vertrag ABI ist der Vorfall verfügbar„Anonym“Das Feld wird als markiert alsWAHRWesen

IMG https://github.com/ethereum/Solidity/issues/13086

Ein anonymer Vorteil ist, dass Ihr Vertrag Ihren Vertrag billiger und billiger macht, und Gas ist billiger, wenn Sie ausgelöst werden.

Ein guter Fall einer anonymen Veranstaltung ist ein Vertrag mit nur einem Ereignis.Alle Ereignisse im Verhandlungsvertrag sind aussagekräftig, da nur dieser Vorfall im Ereignisprotokoll angezeigt wird.Abonnieren Sie seinen Namen irrelevant, da nur ein einziges Ereignis definiert ist, um den Vertrag auszugeben.Daher können Sie Ereignisse anonym definieren, alle Ereignisprotokolle aus dem Vertrag abonnieren und bestätigen, dass es sich um die gleichen Ereignisse handelt.

Überprüfen Sie die Verwendung der anonymen Verwendung in der beliebten Code-Bibliothek, wie z. B. DS-NOTE-Vertrag in DAPPPHUB[7]Mitte.

ImgQuellcode[8]

Wir können im obigen Codefragment sehen, dass dies, da die Ereignisanweisung anonym ist, dies den vierten „indizierten“ Parameter definieren kann.

Bitte beachten Sie, dass das anonyme Ereignis, da das anonyme Ereignis nicht das Thema von Bytes32 hat, nicht unterstützt.WählerMitglied.

Verwenden Sie den Protokollbetriebscode, um Ereignisse in der Montage auszulösen

IMG https://docs.solidyslang.org/en/v0.8.19/yul.html#evm-dialect

Es ist möglich, ein Ereignis in der Baugruppe auszulösen, verwendenLognAnweisung entspricht der Befehl dem Operation Code, der durch die EVM -Anweisung konzentriert ist.

Um ein Ereignis in der Montage auszulösenErinnerungSpezifische Position.

Sobald Sie Daten aus dem Ereignis im Speicher speichern, können Sie die folgenden Parameter in der Anweisung für Protokolle angeben:

  • P = die Speicherposition der Daten davon abrufen.Grundsätzlich ist dies ein Speicherzeiger oder ein „Offset“ oder „Speicherindex“, je nachdem, wie Sie es nennen.

  • S = Sie möchten, dass die Anzahl der Bytes von P im Fall ausgestellt wird.

  • Alle anderen ParameterT1SowieT2SowieT3UndT4Es sind die Ereignisparameter, die Sie indexiert werden möchten.Bitte beachten Sie, dass es hier zwei wichtige Dinge gibt: 1) Diese Parameter sollten mit den in derselben Reihenfolge definierten Parametern wie der Definition Ihrer Ereignisse übereinstimmen. 2) Diese Parameter sollten in den Speicher platziert werden, um Daten zu erhalten.

Das folgende Codefragment zeigt, wie dieser Vorgang in der Montage durchgeführt wird.

& lt; -7px; ) Internet {
Bytes32 Topichash = BeispielEventasM.Selector; /> Log2 (
FreememoryPointer, /// `p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` P` P` p` p` p` p` = Startenversatz in Speicher
64, // `s` = Anzahl der Bytes in Speicher aus“ P „in die Ereignisdaten
Thema zum Filtern der Filterung der Ereignis it self
Tokenid // 1. indizierter Parameter
)
}
}

Gaskosten der Veranstaltung

Alle Datensatzvorgangscode (Log0SowieLog1SowieLog2SowieLog3SowieLog4) Sie müssen Gas konsumieren.Je mehr Parameter (Themen) sie haben, desto mehr konsumiert sie.

Image-20240226195203141

Darüber hinaus können andere Faktoren wie Indizes oder Daten dazu führen, dass das Ereignis mehr Gas verbraucht.

Prüfen

Check-Effective-Interactive-Modus[9]Es ist auch für Vorfälle geeignet.

Eine Methode zum Erkennen dieser Modi ist die Verwendung des Remix Static Analysis Tool.

Dieses Modell kann auch durch Slither erkannt werden.Wenn ein Vertrag einen Vertrag mit einem externen Anruf ausführt, erhalten Sie eine Entdeckung, um das „Re -entreing -Ereignis“ zu veranlassen.

Daher ist die Bestellung für DAPP sehr wichtig, damit Sie zuerst den Vorfall als nächstes überprüfen und schließlich ausgestellt haben.Dies ist besonders wichtig, wenn rekursive oder wieder eingerichtete Anrufe eingereicht werden.Wenn das Ereignis nach externen Aufrufen ausgelöst wird und dieser externe Anruf aus einem wiederholten Anruf besteht, dann:

  1. Der erste Vorfall war das zweite Mal, nachdem der Anruf abgeschlossen war.

  2. Das zweite Ereignis wurde nach der ersten Transaktion ausgestellt.

  3. Wenn Sie dies verstehen, können Sie auch eine klare Prüfungsverfolgung unter der Kette überwachen, um Vertragsanrufe zu überwachen.Sie können sehen, welche Funktionen zuerst und schließlich aufgerufen werden, und in der laufenden Reihenfolge jeder Routine während der Ausführung der Transaktion.

    Dokumentation der Detektordokumentation[10]-Stidität und Vyper’s statische Analysatoren.

    Diese potenzielle Sicherheitsanfälligkeit liegt auch auf der Spur von Teilen[11]Gefunden und Bericht bei der Prüfung von intelligenten Verträgen.

    Img

    Img

    Wann sollte der Vorfall ausgelöst werden?

    In Ihrem Vertrag kann es mehrere Fälle geben, die wichtig und nützlich sein können, um Ereignisse auszulösen.

    • Wenn eingeschränkte Benutzer und Adresse bestimmte Vorgänge ausführen (z. B. Eigentümer oder Vertragsadministrator).Dies schließt wie beliebte einEigentümer übertragen (Adresse)Funktion, diese Funktion kann nur vom Eigentümer aufgerufen werden, um den Vertragsinhaber zu ändern.

    Img

    • Ändern Sie einige wichtige Variablen oder arithmetische Parameter, die für die Kernlogik des Vertrags verantwortlich sind.Es ist besonders wichtig im Hintergrund des Defi -Protokolls.

    Img

    Dokumentation der Detektordokumentation[12]Beschreiben Sie weitere Informationen zu diesen Situationen.

    Dies wird auch im Trail Audit -Bericht von LooksRare beschrieben.

    Img

    • Überwachungsverträge, die in der Produktion eingesetzt werden, um Abnormalitäten zu erkennen.

    Img

    Ansicht 0xProtocol[13]Details, um die sicherheitsbezogenen Probleme im Zusammenhang mit dem Vorfall zu verstehen.

    beziehen sich auf

    1. Das fehlende Dokument zum Zweck der Verwendung eines anonymen Ereignisses (wissen Sie warum)[14]

    2. [Vorteile einer anonymen Veranstaltung]

  • Related Posts

    Binance startet Alpha -Punkte, verstehen Sie alle Regeln

    Jessy, Bitchain Vision Die Anforderungen an die Teilnahme an Binance Wallet TGE werden immer höher! Zuvor brachte die Popularität des exklusiven TGE von Binance Wallet eine große Menge an Daten…

    Bankless: Was sind die dezentralen Plattformen für die Erstellung von Inhalten, auf die es wert ist, aufmerksam zu machen?

    Autor: William M. Peaster, Bankless; Zusammengestellt von: Tao Zhu, Bitchain Vision Ich schreibe seit 2017 auf dem Gebiet von Crypto. Seitdem habe ich mich in eine Karriere umgewandelt und die…

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    You Missed

    Jenseits der Motivation: Wie man ein dauerhaftes Defi -Ökosystem baut

    • Von jakiro
    • April 25, 2025
    • 0 views
    Jenseits der Motivation: Wie man ein dauerhaftes Defi -Ökosystem baut

    Binance startet Alpha -Punkte, verstehen Sie alle Regeln

    • Von jakiro
    • April 25, 2025
    • 0 views
    Binance startet Alpha -Punkte, verstehen Sie alle Regeln

    Nutzen Sie Lianchuang: Ethereum kann durch die Ausdehnung mehrerer L2S hohe Durchsatzkette bringen

    • Von jakiro
    • April 25, 2025
    • 0 views
    Nutzen Sie Lianchuang: Ethereum kann durch die Ausdehnung mehrerer L2S hohe Durchsatzkette bringen

    Paradigm Huang Gongyu: Details der frühen Investitionen in Zhang Yiming, Verschlüsselungstechnologietrends

    • Von jakiro
    • April 25, 2025
    • 0 views
    Paradigm Huang Gongyu: Details der frühen Investitionen in Zhang Yiming, Verschlüsselungstechnologietrends

    GlassNode: Hat sich das Gefühl auf dem Kryptomarkt vollständig verändert?Wer macht einen Gewinn?

    • Von jakiro
    • April 25, 2025
    • 4 views
    GlassNode: Hat sich das Gefühl auf dem Kryptomarkt vollständig verändert?Wer macht einen Gewinn?

    Was ist der Grund von Ethereum?Kommt der ETH -Bullenmarkt bald?

    • Von jakiro
    • April 25, 2025
    • 2 views
    Was ist der Grund von Ethereum?Kommt der ETH -Bullenmarkt bald?
    Home
    News
    School
    Search