Das Definieren von Konstruktoren als Funktionen mit demselben Namen wie der Vertrag ist veraltet. Verwenden Sie stattdessen "Konstruktor (...) { ... }" [duplizieren]

Die Warnung stammt vom Ausführen des Beispielcodes von Mastering Ethereum , ich erhalte den obigen Fehler und es heißt

Verwenden Sie stattdessen "constructor(...) { ... }". Funktion Migrationen() öffentlich {

Antworten (1)

Dies liegt an einem veralteten Standard. Ersetzen Sie in der Datei Migrations.sol die Zeile:

function Migrations() public {    

mit:

constructor() public {

Die gerade oben gezeigte Codezeile ist ein Konstruktor , der bei der Bereitstellung eines Vertrags ausgeführt wird und (wie in der Datei im Kontext) verwendet wird, um die Adresse des Vertragseigentümers zu speichern ( msg.sender variiert je nachdem, wer mit dem Vertrag interagiert).

Dies ersetzt die vorhandene Implementierung der Verwendung einer Funktion mit demselben Namen wie der Vertrag, um als Konstruktor mit einer separaten Konstruktorfunktion zu fungieren.

Es ist falsch, es ist nicht function constructoraber einfach constructor.