Отправка транзакций через RPC или IPC?

Недавно я пытаюсь связаться с частной цепочкой блоков Ethereum через RPC/IPC, чтобы создать транзакцию, но я вижу, что я не могу сделать это через RPC, потому что: - Мне всегда нужно разблокировать свою учетную запись раньше, и я не могу этого сделать. через 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"}} 
  • я вижу, что есть альтернатива через IPC, поэтому я попробовал:

    echo '{"jsonrpc":"2.0","метод":"eth_accounts","params":[],"id":1}' | nc -U /path/datadir/geth.ipc 3ef {"jsonrpc":"2.0","id":1,"результат":["0xWALLET1","0xWALLET2"]}

Итак, IPC работает нормально, теперь я пытаюсь сделать TX:

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"}}

Я пытался возиться с параметрами и следовать формату JSON
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction .

Но до сих пор я не могу понять, как правильно сделать эту транзакцию.

Ответы (2)

Чтобы использовать personal.unlockAPI через RPC, вам нужно включить его из командной строки --rpcapi. Пример отсюда: Как я могу создать новую учетную запись с помощью JSON-RPC? : geth --rpc --rpcapi "db,eth,net,web3,personal".

Для работы IPC попробуйте использовать "" для значения и gas { from: "0xWALLET1", to: "0xWALLET2", value: "1000000000000000000", data: "0x10", gas: "1000000"}.

Причина, по которой вы получаете эту ошибку, заключается в том, что вам нужно, чтобы все ваши метки и значения параметров были заключены в кавычки (например, from -> "from").

Примеры:

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"