Senden externe Konten Nachrichten/Transaktionen untereinander? Warum unterzeichnet ein Vertrag seine Botschaft nicht?

Frage 1: Kann ein Kontoinhaber Ether an einen anderen senden, ohne einen Smart Contract zu verwenden?

Frage 2: Gibt es eine Notwendigkeit, dass zwei Konten Nachrichten/Transaktionen direkt aneinander senden?


  • eine Transaktion: signierte Nachricht: gesendet von einem externen Konto.
  • Nachricht wird per Vertrag an einen anderen Vertrag gesendet.

Ein Vertrag kann jedoch andere Vertragsfunktionen aufrufen und den Status des 2. Vertrags ändern. Die Frage ist also:

Frage 3: Warum muss ein Vertrag eine gesendete Nachricht nicht signieren?

1. Ja, Sie können direkt sendTransaction2 verwenden. Ich verstehe das nicht genau, aber 2 Konten können Transaktionen ohne Vertrag senden. 3. Weil Verträge von EoA's geregelt werden. EOAs regeln also, wie ein Vertrag funktioniert,

Antworten (1)

Ein externes Konto sendet etherauf identische Weise entweder an ein anderes externes Konto oder einen Smart Contract – indem es eine Unterzeichnung der Transaktion einleitet. Der Smart Contract erhält die nur ether, wenn die aufgerufene Funktion markiert ist payable.

Bei einem externen Konto, das auf ein anderes externes Konto sendet, ist das ethereinfach zu überweisen (solange der Absender das Geld hat), kein Problem.

Ein Smart Contract kann senden ether, aber dieser Versand muss zunächst von einem externen Konto initiiert worden sein (mit anderen Worten, Smart Contracts können keine Transaktionen initiieren). In der Vergangenheit nannten die Leute diese Art des Sendens ein internal transaction, aber heutzutage heißt es a message call, message, call, usw.

Seien Sie jedoch vorsichtig mit dem Wort „Nachricht“. Ich kann eine externe Transaktion auf ein anderes externes Konto initiieren und eine einfügen, messageindem ich Text in das inputFeld einfüge. Mein Freund kann dann diese "Nachricht" lesen.

Der andere Typ von messageIhnen, von dem Sie hören werden, ist messageein Smart Contract.

Was "warum muss ein Vertrag nicht unterschrieben werden ..." angeht, stellen Sie sich das so vor: Der Smart Contract ist autonomous. Es ist niemand da, der irgendetwas unterschreiben könnte. Außerdem kann der Smart Contract keine Transaktionen initiieren. Wenn ein Smart Contract Transaktionen initiieren und signieren könnte, müsste sein privater Schlüssel außerdem zwangsläufig in der Blockchain gespeichert werden. Jeder könnte es sehen, jeder könnte es stehlen, und es wäre einfach, den Smart Contract zu imitieren, also würde es auf keinen Fall funktionieren.