Ich verwende die Mist-Brieftasche nur, um den Inhalt des Vertrags anzuzeigen.
Unten sehen Sie den Code für den Zugriff auf die Vertragsfunktion (submitUnits) und das Ergebnis des LoadScript, wenn ich es in der Konsole ausführe.
call_function.js
In der letzten kommentierten Zeile sehen Sie den Wert, den ich drucken möchte (100).
Es gibt jedoch immer diese Hex-Zahl zurück. Wie kann ich die Gesamteinheiten erhalten, die im Wallet-Screenshot erwähnt werden?
Der Code des Vertrages lautet:
contract UCounter {
mapping (address => uint256) public UnitsFrom;
uint256 public TotalUnits;
function submitUnits(uint256 Units) returns (uint ){
UnitsFrom[msg.sender] = Units;
TotalUnits = Units;
return TotalUnits;
}
}
Hoffe jemand konnte helfen. Danke.
Die Funktion getData gibt Funktionsaufrufparameter zurück, die zusammen mit der Funktionssignatur codiert sind.
Aus dem Snippet deines abi geht hervor, submitUnits
dass es keinen konstanten Eingabeparameter vom Typ hat uint256
. Der Ausgabetyp ist abgeschnitten, aber in diesem Fall submitUnits
ist da eine Transaktion kein Aufruf , und für die Transaktion können wir den Rückgabewert wiederherstellen.
Von der Dokumentation zur Ausführung einer Transaktion müssen wir Folgendes tun:
var txid = MyContractInstance.submitUnits.sendTransaction(parameter, { from: eth.accounts[3] });
console.log(txid);
Und Sie müssen warten, bis die Transaktion in der Blockchain geschürft wird.
Um eine Variable zu lesen oder eine konstante Methode aufzurufen, müssen Sie einen Aufruf tätigen
MyContractInstance.TotalUnits.call(function (value) {
console.log(value);
});
web3.eth.getStorageAt (address, position)
Hier address
ist die Adresse Ihres Smart Contracts und position
die Position der Zustandsvariablen, in Ihrem Fall Position = 1 TotalUnits
, da dies die zweite Variable in Ihrem Vertrag ist und die Variablen beginnend bei Null nummeriert sind.
Jo
SCBürgel
constant
?JC_92