Ich muss Werte wie diese grünen Linien ausdrucken:
1) Versucht zurückzugeben
Wenn ich eine Funktion aufrufe, die eine Zeichenfolge zurückgibt, wird die Hexa-Transaktionsadresse anstelle des Funktionswerts gedruckt.
2) Versuchte js
Unter Bezugnahme auf diesen Link habe ich die folgende js-Datei geladen, in der Hoffnung, Variablenwerte auszudrucken.
var abi = /*abi interface*/
var Insurance= web3.eth.contract(abi);
var insurance = Insurance.at(web3.eth.accounts[0]);
var event = insurance.claimInsurance();
// watch for changes
event.watch(function(error, result){
if (!error)
console.log(result);
});
event.get(function(error, result){
if (!error)
console.log(result);
});
Ich bekomme err: TypeError: 'watch' is not a function
.
Gibt es eine Möglichkeit, Variablenwerte aus der Geth-Konsole auszudrucken?
Um dies zu erreichen, müssen Sie 3 Dinge tun:
definiere ein Ereignis in der Solidität:
event myEvent1(address _sender, string _msg);
Rufen Sie dieses Ereignis innerhalb der Funktion in solidity auf. in Ihrem Fall "listProposal()"
myEvent1(msg.sender,"this event called")
Rufen Sie zuerst die Methode im JS mit dem web3-Objekt auf, das Ihr Ereignis enthält, dh listProposal(). wenn dies in der EVM ausgeführt werden soll, soll sie das Ereignis ausgeben. Sie müssen also eine JS-Funktion erstellen, die auf die Änderung des Ereignisstatus lauscht:
//method call
var abc = insurance.listProposal(42,function(err,res){...});
//now you should here start watching for any event being emitted from the EVM
var eventGenerated = insurance.myEvent1({},function(err,res){
if(!err){
console.log(res.args._sender+"has this message:"+ res.args._msg);// this is the line which you want to show to the console, when your message gets called, which is in green line in the console.
}
else{
console.log(err);
}
});
Ich hoffe das hilft. Ich habe es mit der Callback-Methode gemacht. Dort schreibe ich die gewünschte Nachricht, sobald Ihr Vertrag erfolgreich ausgeführt wurde.
Hoffe das hilft. Vielen Dank.
Alper
abc
Variablen verwendet? @Vixon