Wo überprüfe ich den Wert, der von einer Funktion in der Ethereum-Brieftasche zurückgegeben wird (ich verwende v. 0.8.3)?
Ich habe ein Testnetz eingestellt und es funktioniert gut. Nachdem ich also eine Funktion meines bereitgestellten Vertrages aufgerufen habe, baue ich darauf und die Transaktion wird ausgeführt. Ich sehe aus einem Ereignis, dass der zurückgegebene Wert korrekt ist.
ex.:
function getMyvalue() returns (uint256 valueInWeis) {
print(value); // event is printed correctly
return value;
}
Wo kann ich den zurückgegebenen Wert sehen (ohne die Ereignisse überprüfen zu müssen)?
Wenn Ihre Funktion den Vertragsstatus ändert, gibt sie immer Transaktionshash zurück. Es gibt keine andere Alternative, um den Rückgabewert zu erhalten, als events
. Siehe So erhalten Sie Werte, die von nicht konstanten Transaktionsfunktionen zurückgegeben werden?
Wenn Ihre Funktion jedoch den Vertragsstatus nicht ändert (wie in Ihrem Fall), sollten Sie wahrscheinlich constant
Funktionen verwenden.
function getMyvalue() constant returns (uint256 valueInWeis) {
print(value); // event is printed correctly
return value;
}
konstante Funktionen können einige Aktionen ausführen und einen Wert zurückgeben, aber den Status nicht ändern (dies wird vom Compiler noch nicht erzwungen). Mit anderen Worten, eine konstante Funktion kann keine Variablen innerhalb des Vertrags oder der breiteren Blockchain speichern oder aktualisieren. Diese Funktionen werden mit c.someFunction(...) von geth oder einer anderen web3.js-Umgebung aufgerufen.
„nicht konstante“ Funktionen (solche, denen der konstante Bezeichner fehlt) müssen mit c.someMethod.sendTransaction({from:eth.accounts[x], gas: 1000000}) aufgerufen werden; Das heißt, weil sie den Status ändern können, müssen sie eine Gaszahlung mitschicken lassen, um die Arbeit zu erledigen.