Ich versuche, einen String-Parameterwert an eine Solidity-Methode zu senden, aber ich kann den Rückgabewert nicht abrufen. Dies ist mein Soliditätscode:
contract Entity{
event Entities(string name);
struct Entity{
string name;
}
uint32 public entityId;
mapping(uint32 => Entity) entities;
function insert(string name) returns (uint32 returnId){
returnId = ++entityId;
entities[returnId] = Entity(name);
Entities(name);
return returnId;
}
}
und so versuche ich, über die JSON RPC-API damit zu interagieren
curl --data '{"jsonrpc":"2.0","method": "eth_call", "params": [{"from": "0xec1466c6fa38de0506e14fe8e5b51e95d3f80b11","to":"0xbd46d45c440ae02a76938043af18cc75ac569e4b","data":"0xb1498e29456e746974792042000000000000000000000000000000000000000000000000"}], "id": 6}'
Ich bekomme 0x als Ergebnis.
Ihre Methode ändert den Status des Vertrags (Blockkette), was bedeutet, dass Sie keine Werte erhalten können, da die Transaktion (Aufruf der Methode) zum Zeitpunkt der Rückgabe des Aufrufs möglicherweise nicht abgebaut wurde (es gibt keine berechnete ID zurückzugeben).
Sie erhalten den Hash der Transaktion und müssen warten, bis der Code ausgeführt (geschürft) wird. Nur dann können Sie die ID abrufen, indem Sie eine Methode aufrufen, die nur einen Lesevorgang für den Vertrag durchführt.
Sie müssen der Transaktion für den Anruf auch Gaskosten zuweisen, da Sie einen Miner bitten, ihn für Sie auszuführen. Verwenden Sie den Geth -IPC, da dies weit weniger umständlich ist, als JSON-Objekte auf den Client zu werfen:
entityContract.insert("my_string", {from:eth.accounts[0],gas:100000000});
wobei entityContract eine Vertragsinstanz ist, die aus ihrer ABI und Adresse erstellt wurde.
Abhishek Ranjan
Sebi
Abhishek Ranjan
Sebi
returnId
vonuint32 returnId
. Nein, Sie führen immer noch Berechnungen in der Blockchain durch, also muss jemand für diese Taktzyklen bezahlen, auch wenn das Ergebnis nicht in der Blockchain gespeichert ist (Sie müssen sowohl für die Speicherung als auch für die ausgeführten Anweisungen bezahlen).Abhishek Ranjan
Abhishek Ranjan
Sebi
Abhishek Ranjan
Abhishek Ranjan