Erfordert eine Transaktion immer die Ausführung eines Smart Contracts?

Ich hatte eine Diskussion mit jemandem, der erklärte, dass jedes Mal, wenn eine Transaktion (z. B. ICO-Token oder ETH) auf Ethereum auftritt, sie über einen Smart Contract laufen würde oder einen solchen erfordern würde.

Ich würde gerne wissen, was Ihre besten Argumente sind, um ihm das Gegenteil zu beweisen?

Antworten (2)

Ich denke, der beste Weg, dies zu betrachten, besteht darin, die beiden Arten von Konten zu definieren, die auf Ethereum möglich sind:

  1. Konten in externem Besitz (EOA)
  2. Intelligente Verträge

Transaktionen können nur von EOAs stammen, können auf andere EOAs oder Smart Contracts ausgerichtet sein und können sowohl einen Wert (Ether) als auch eine Datennutzlast enthalten.

Von Mastering Ethereum - Transaktionen :

Wenn Sie eine Ethereum-Transaktion erstellen, die einen Wert enthält, entspricht dies einer Zahlung. Solche Transaktionen verhalten sich unterschiedlich, je nachdem, ob es sich bei der Zieladresse um einen Vertrag handelt oder nicht.

Für EOA-Adressen, oder vielmehr für jede Adresse, die nicht als Vertrag in der Blockchain gekennzeichnet ist, zeichnet Ethereum eine Statusänderung auf und addiert den von Ihnen gesendeten Wert zum Saldo der Adresse. Wenn die Adresse zuvor noch nicht gesehen wurde, wird sie der internen Darstellung des Staates des Kunden hinzugefügt und sein Saldo auf den Wert Ihrer Zahlung initialisiert.

In diesem Fall kann es also zu einer Transaktion zwischen zwei Benutzern kommen, die keinen Smart Contract beinhaltet oder erfordert. Es verwendet einfach die von der EVM definierte Zustandsmaschine, um die Salden auf beiden Konten zu aktualisieren.

Ich empfehle Ihnen und Ihrem Freund, sich das oben verlinkte Kapitel durchzulesen.

EDIT: Übrigens, Sie haben ICOs und Token erwähnt. In diesem Fall wird IMMER ein Smart Contract benötigt, da Token in Ethereum als Smart Contracts dargestellt werden. Die oben beschriebene "Smart Contract"-freie Transaktion gilt nur für Ether-Transaktionen.

Nein.

@ Shawns Antwort ist sehr gut. Eine einfache Erklärung ist, dass Transaktionen ein Empfangskonto haben. Alle Konten können Code haben oder nicht. Ein Konto mit Code wird als Smart Contract bezeichnet. Eine Transaktion kann an ein Konto gesendet werden, das keinen Code hat, sodass kein Smart Contract ausgeführt wird.

Die aktuelle Antwort lautet also nein. In Zukunft kann es sich jedoch ändern und alle Konten werden Code haben. Es ist ein komplexes Thema, das mit dem Begriff Kontoabstraktion gesucht werden kann .