Hintergrund zu Veranstaltungen: https://github.com/ethereum/wiki/wiki/Solidity-Features
Ereignisse ermöglichen die bequeme Nutzung der EVM-Protokollierungsfunktionen. Ereignisse sind vererbbare Mitglieder von Verträgen. Wenn sie aufgerufen werden, bewirken sie, dass die Argumente im Protokoll der Transaktion gespeichert werden. Bis zu drei Parameter können das Attribut indexed erhalten, was dazu führt, dass die jeweiligen Argumente als Protokollthemen statt als Daten behandelt werden. Der Hash der Signatur des Ereignisses ist immer eines der Themen. Alle nicht indizierten Argumente werden im Datenteil des Protokolls gespeichert.
Wenn nicht im Smart-Contract-Container, wo befinden sich die Protokolldaten?
Protokolle sind Teil der Transaktionsbelege. Sie werden von den Clients bei der Ausführung von Transaktionen generiert und neben der Blockchain gespeichert, um sie abrufen zu können.
Protokolle sind per se nicht Teil der Blockchain selbst, da sie nicht für den Konsens erforderlich sind (es handelt sich nur um historische Daten), sie werden jedoch von der Blockchain verifiziert, da die Hashes der Transaktionsbelege in den Blöcken gespeichert werden.
Um bei der Antwort von @Peter zu helfen, hilft es zu erkennen, was Ereignisse und Protokolle sind. Ereignisse, Protokolle und Ereignisprotokolle sind normalerweise Ethereum-Begriffe, die austauschbar sind (in einigen Kontexten wird ein bestimmter Begriff bevorzugt, zum Beispiel Ereignisse in Solidity und web3.js und Protokolle wie in EVM und Yellow Paper).
Ereignisse/Protokolle sind das Ergebnis von LOG-Opcodes, die in der EVM ausgeführt werden. Sie sind Teil von "internen Transaktionen" , die durch die Ausführung von Transaktionsdaten durch die EVM abgeleitet werden.
Solange Sie also die Blockchain haben, haben Sie alle Ereignisse/Protokolle. Aus Effizienzgründen werden sie wie von @Peter beschrieben gespeichert, aber konzeptionell müssen sie nicht gespeichert werden, da sie aus der Blockchain (die per Definition aus allen Blöcken und Transaktionsdaten besteht) neu berechnet werden könnten.
Schließlich hat das Pruning keine Auswirkungen auf Ereignisse/Protokolle, da das Pruning auf den Zustand Trie angewendet wird und keine Blöcke verloren gehen.
Aus der offiziellen Dokumentation: https://solidity.readthedocs.io/en/v0.4.24/contracts.html#events
Ereignisse sind vererbbare Mitglieder von Verträgen. Wenn sie aufgerufen werden, bewirken sie, dass die Argumente im Protokoll der Transaktion gespeichert werden – einer speziellen Datenstruktur in der Blockchain. Diese Protokolle sind mit der Adresse des Vertrags verknüpft und werden in die Blockchain aufgenommen und bleiben dort, solange ein Block zugänglich ist (für immer von Frontier und Homestead, aber dies könnte sich mit Serenity ändern). Protokoll- und Ereignisdaten sind nicht innerhalb von Verträgen zugänglich (nicht einmal von dem Vertrag, der sie erstellt hat).
Satoshi Nakanishi
Peter Szilágyi
Satoshi Nakanishi
Peter Szilágyi
Teleportierende Ziege