Was ist ein Ereignis?

Was ist ein Ereignis ?

Werden sie nur in Solidity verwendet?

Wie werden Ereignisse definiert?

Wie werden Events initiiert?

Gibt es einen Standardbegriff für den Aufruf eines Ereignisses (sagen Sie, ein Ereignis ist „passiert“, „wurde aufgerufen“, „wurde aufgerufen“, „ausgelöst“)?

Wo im Blockheader landet ein Event?

Relevant:

Wie man Ereignisse in Solidität umsetzt

Wo werden Vertragsereignisprotokolle in der Ethereum-Architektur gespeichert?

"emittieren" ist der verwendete Begriff; solidity.readthedocs.io/en/develop/…

Antworten (3)

Die Blockchain ist eine Liste von Blöcken, die im Grunde Listen von Transaktionen sind. Jede Transaktion hat eine beigefügte Quittung, die null oder mehr Protokolleinträge enthält. Protokolleinträge stellen das Ergebnis von Ereignissen dar, die von einem Smart Contract ausgelöst wurden.

Um ein Ereignis im Solidity-Quellcode zu definieren, markieren Sie es auf diese Weise, indem Sie ihm das eventSchlüsselwort voranstellen (ähnlich in der Verwendung wie das functionSchlüsselwort). Anschließend rufen oder feuern Sie das Ereignis im Hauptteil der Funktion ab, die Sie veranlassen möchten, das Ereignis zu generieren. (Ich bezweifle, dass es dafür eine Standardformulierung gibt). Sie können Ereignisse von jeder Funktion mit dem emitSchlüsselwort auslösen.

Jemand kann wahrscheinlich Informationen darüber hinzufügen, wie Sie Ereignisse in Ihrem DAPP „abhören“ können. Es verwendet die Filterfunktionalität von Web 3.0 .

Schauen Sie sich die Ethereum-Ontologie an, die kürzlich von Johannes Pfeffer veröffentlicht wurde, um eine sehr gründliche Erklärung vieler Ethereum-Konzepte zu erhalten.

Ist es eine Art JavaScript-Ereignis, das ausgelöst werden kann, wenn etwas passiert, dh ereignisbasiert?
Ja. Es ist. Füllstoff.
@FahadUddin In seiner einfachsten Form druckt ein Ereignis GENAU ein Protokoll. Daher ist es eine Art Javascript console.log. Das ist es, nicht mehr und nicht weniger. In Solidity hat es keinen anderen Zweck als das Protokollieren des Ereignisses in der Blockchain. Sie können Ereignisse jedoch in Echtzeit von außerhalb des Codes abhören, sodass Sie Ereignisse als eine Art Push-Benachrichtigung verwenden können.
@slebetman ist es möglich, ausgegebene Ereignisse rückgängig zu machen ()?
Wenn die Transaktion zurückgesetzt wird, werden keine Ereignisse generiert. Wenn die Transaktion nicht zurückgesetzt wird, ist das Ereignis unveränderlich Teil der Kette. Du kannst es nicht zurückbekommen.
Entschuldigung, ich bin immer noch etwas verwirrt. Was löst also eine Transaktion aus, die in der Blockchain aufgezeichnet wird? Ist es das Ereignis, das einen Prozess auslöst? oder hat die EVM einen Listener für den Aufruf der Übertragungsfunktion (erforderlich durch das Protokoll)? Ist es notwendig, die Ereignisfunktion aufzurufen?

Ereignisse sind gesendete Signale, die die Smart Contracts auslösen können. DApps oder alles, was mit der Ethereum JSON-RPC-API verbunden ist, kann diese Ereignisse abhören und entsprechend handeln. Ereignis kann indiziert werden, sodass die Ereignishistorie später durchsucht werden kann.

Ein Beispielereignis aus einem Wallet-Vertrag ist:

event Deposit(address from, uint value);

Die Anwendung (dapp, Webanwendung, andere), die an Einzahlungen in einen Wallet-Vertrag interessiert ist, würde auf dieses Ereignis lauschen. Die Anwendung würde sich über JSON-RPC mit dem Ethereum-Knoten verbinden und entweder auf das Eintreten des Ereignisses warten (warten) oder alle vergangenen Ereignisse lesen, um den internen Status der Anwendung mit der Ethereum-Blockchain zu synchronisieren.

Nur eine Randfrage, können ausgegebene Ereignisse zum Protokollieren rückgängig gemacht werden?
Der gesamte Kettenstatus wird bei einer Reorganisation zurückgesetzt oder nichts davon wird zurückgesetzt. Einzelne Ereignisse können nicht rückgängig gemacht werden.
Ich meine, wenn ich revert()es verwende, werden Ereignisse wie Transfer()richtig zurückgesetzt?
Ja, es wird mit allem anderen zurückrollen. Es kann nur eine Wahrheit geben und Transaktionen entweder ganz oder gar nicht – atomar.

Das Yellowpaper (Version 7e819ec - 2019-10-20) Abschnitt 6.1 Substate enthält eine Beschreibung von:

indexierbare „Checkpoints“ in der Ausführung des VM-Codes, die es ermöglichen, dass Vertragsanrufe von Außenstehenden außerhalb der Ethereum-Welt (z. B. dezentrale Anwendungs-Front-Ends) leicht verfolgt werden können.

Das Yellowpaper ging der Ereignisterminologie voraus, aber ein Ereignis ist eine Möglichkeit, mit der DApps Informationen an einem bestimmten Punkt während der Codeausführung von Smart Contracts (EVM) abrufen können. Immer wenn die EVM auf einen LOG-Opcode trifft, geben Ethereum-Knoten ein Ereignis aus, über das DApps und externe Prozesse benachrichtigt werden und auf das sie zugreifen können.

In Solidity wird ein emitvon an eventzu LOG-Opcodes kompiliert.