Jetzt versuche ich, meine erste Dapp zu entwickeln (mit Metamask-Plugin). alles wird gut, aber eines bekomme ich nicht hin: Ist es möglich, mit Web3 (nicht JS VM!)
Ich habe zum Beispiel einen einfachen Vertrag wie diesen:
pragma solidity ^0.4.0;
contract test {
int32 data = 123;
function getData() returns (int32) {
return data;
}
}
Wenn ich getData()
mit der virtuellen JS-Maschine anrufe, funktioniert es einwandfrei:
Aber mit ausgewählter Inject web3
(Metamask) gibt es Informationen über neue Transaktionen zurück, anstatt123
Ich kann auch keine Daten von der JS-Konsole (Metamask) empfangen:
Für die Frage ist es am einfachsten, getData
konstant zu machen als:
function getData() constant returns (int32)
Eine andere Möglichkeit ist die Verwendung eines Ereignisses: Wie erhält man Rückgabewerte, wenn eine Funktion mit Argument aufgerufen wird?
constant
des Modifikators hat alles gelöst, vielen Dank!Haben Sie versucht, die Anruffunktion asynchron zu verwenden:
contract.getData.call().then(function(result) {
console.log(result);
});
eth
Sergej Potechin
eth