Ich habe einen Vertrag, der eine Funktion hat:
function addRequest(uint256 d) {
...
}
Nach dem Kompilieren und Bereitstellen habe ich den folgenden Befehl eingegeben, um ihn aufzurufen:
curl 192.168.241.128:8545 -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{
"from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
"to": "0x8bed67280f46cc1ffd401cdb3dd5909f254c8f34",
"data": "0x4ca1fad8000000000000000000000000000000000000000000000000000000000000022b"
}, "latest"],"id":1}'
Die ersten 4 Byte der Daten sind das erste 4-Byte-Ergebnis von web3.sha3('addRequest(uint256)'), und dann wird der a uint32-Wert 555 auf 32 Byte aufgefüllt. Ich glaube nicht, dass es falsch ist. Aber es zeigt mir das folgende Ergebnis:
{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"too many arguments, want at most 1"}}
Ich brauche Hilfe, also kann mir jemand helfen, das Rätsel zu lösen? vielen Dank von ganzem Herzen.
Das Problem ist, dass eth_sendTransaction
nur ein Argument akzeptiert wird, Sie aber zwei angeben. Den Wert „latest“ sollten Sie nicht weitergeben, da dieser für diese Funktion ohne Bedeutung ist. Das sollte funktionieren:
curl 192.168.241.128:8545 -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{ "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1", "to": "0x8bed67280f46cc1ffd401cdb3dd5909f254c8f34", "data": "0x4ca1fad8000000000000000000000000000000000000000000000000000000000000022b" }],"id":1}'
David