Senden von Transaktionen über RPC oder IPC?

Kürzlich versuche ich, über RPC/IPC mit einer privaten Ethereum-Blockchain zu kommunizieren, um eine Transaktion zu erstellen, aber was ich sehe, ist, dass ich es nicht über RPC tun kann, weil: - Ich muss mein Konto immer vorher entsperren und kann es nicht über RPC:

curl 127.0.0.1:8545  -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params": ["0xWALLET" ,"",null],"id":1}'
{"jsonrpc":"2.0","id":1,"error":{"code":-32601,"message":"The method personal_unlockAccount does not exist/is not available"}} 
  • Ich sehe, dass es eine Alternative über IPC gibt, also habe ich versucht:

    echo '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' | nc -U /path/datadir/geth.ipc 3ef {"jsonrpc":"2.0","id":1,"result":["0xWALLET1","0xWALLET2"]}

Ok, also IPC funktioniert gut, jetzt versuche ich, einen TX zu machen:

echo '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{ from: "0xWALLET1", to: "0xWALLET2", value: 1000000000000000000, data: "0x10", gas: 1000000}],"id":1}' | nc -U /path/datadir/geth.ipc
{"jsonrpc":"2.0","error":{"code":-32600,"message":"invalid character 'f' looking for beginning of object key string"}}

Ich habe versucht, mit Parametern herumzuspielen und dem JSON-Format
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction zu folgen

Aber ich kann immer noch nicht herausfinden, wie ich diese Transaktion korrekt durchführen soll.

Antworten (2)

Um personal.unlockAPI über RPC zu verwenden, müssen Sie es über die Befehlszeile aktivieren --rpcapi. Ein Beispiel von hier: Wie kann ich ein neues Konto mit JSON-RPC erstellen? : geth --rpc --rpcapi "db,eth,net,web3,personal".

Damit IPC funktioniert, versuchen Sie, "" für den Wert und gas zu verwenden { from: "0xWALLET1", to: "0xWALLET2", value: "1000000000000000000", data: "0x10", gas: "1000000"}.

Der Grund, warum Sie diesen Fehler erhalten, ist, dass Sie alle Ihre Parameterbeschriftungen und -werte in Anführungszeichen setzen müssen (z. B. from -> "from").

Beispiele:

echo '{"jsonrpc":"2.0","method":"personal_unlockAccount","params": ["0xfe009812bcb5d159dd52b5dab638bbe1ca480571" ,"test",0],"id":1}' | nc -U "$COMMUNITY_DATA_PATH/geth.ipc"


echo '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from": "0xfe009812bcb5d159dd52b5dab638bbe1ca480571", "to": "0xdfe5443654725f409ecc47c2beeae1619ad50bf3", "value": "0x1", "data": "0x010203040506070809", "gas": "0x100000"}],"id":1}'  | nc -U "$COMMUNITY_DATA_DIR/geth.ipc"