sendTransaction "code":-32602,"message":"zu viele Argumente, möchte höchstens 1"

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.

Antworten (1)

Das Problem ist, dass eth_sendTransactionnur 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}'
Relevantes GitHub-Problem, falls es jemandem hilft :)