Solidity Browser – Problem bei jedem Beispiel => Fehler: Typ „Adresse“ wird für Zustandsvariable nicht unterstützt

Ich bin sehr neu in Blockchain und Ethereum. Ich möchte mit einem BaaS-Cloud-Dienst beginnen und einige intelligente Verträge entwickeln / ausführen. Ich habe die Azure-Ethereum-Vorlage ( https://github.com/Azure/azure-quickstart-templates/tree/master/ethereum-consortium-blockchain-network ) erfolgreich eingerichtet und möchte Solidity Browser verwenden, um einen ersten Vertrag zu erstellen. Wie im entsprechenden Beispiel verwende ich MetaMask in Chrome, um Transaktionen zu bestätigen.

Mein Problem: Ich habe mehrere Solidity-Smart-Contract-Beispiele im Solidity-Browser ausprobiert. Alle zeigen einen bestimmten Fehler:

Fehler: Typ „Adresse“ wird für Zustandsvariable nicht unterstützt

Ich denke, das ist der Grund, warum im Solidity Browser nichts passiert, außer "auf den Abbau zu warten". Eigentlich sollte MetaMask erscheinen, um die Transaktion wie im Tutorial zu bestätigen, aber in MetaMask passiert nichts. Zuerst dachte ich, dass es ein Problem mit meinem Blockchain-Cluster oder dem Template ist (deshalb habe ich dieses Problem auch hier gepostet: https://github.com/Azure/azure-quickstart-templates/issues/2797 ), aber nach einigem mehr herumspielen, denke ich, dass das Problem nicht mit Azure zusammenhängt, sondern nur mit Solidity und Solidity Browser.

Ich habe auch verschiedene Compiler-Versionen ausprobiert (z. B. die neuste und die mit der gleichen Version wie der Smart Contract), aber immer die gleiche Fehlermeldung. Beachten Sie, dass alle Smart Contracts KEINE Kompilierfehler im Editor selbst anzeigen. Dieser Fehler wird auf der Registerkarte "Formale Überprüfung" angezeigt.

Wie gesagt, das passiert bei jedem Beispiel - das finde ich so merkwürdig... Nehmen wir mal dieses von https://www.ethereum.org/greeter :

contract mortal {
/* Define variable owner of the type address*/
address owner;

/* this function is executed at initialization and sets the owner of the contract */
function mortal() { owner = msg.sender; }

/* Function to recover the funds on the contract */
function kill() { if (msg.sender == owner) selfdestruct(owner); }
}

contract greeter is mortal {
/* define variable greeting of the type string */
string greeting;

/* this runs when the contract is executed */
function greeter(string _greeting) public {
    greeting = _greeting;
}

/* main function */
function greet() constant returns (string) {
    return greeting;
}
}

Kann mir bitte jemand helfen? Was vermisse ich?

Vielen Dank.

Antworten (2)

Dies scheint ein neuer Fehler zu sein, der kürzlich in Browser-Solidity eingeführt wurde, und Mist ist ebenfalls betroffen:

https://github.com/ethereum/browser-solidity/issues/342#issuecomment-262764137

Nur zum Update: Das Problem ist inzwischen behoben. Auch wenn Sie diesen Validierungsfehler immer noch erhalten, können Sie mit Solidity Browser wieder erfolgreich Verträge erstellen.

Ja, Sie können einen Vertrag erstellen, aber die Vertragsmethoden liefern kein geeignetes Ergebnis.