I want to do a very simple operation: send eth to another address.
Here is what I did:
Method 1 . use personal.send_transaction JSON-RPC interface. ( seems deprecated )
I run:
curl --request POST --data '{
"jsonrpc":"2.0",
"method":"personal_sendTransaction",
"params":[
{
"gas": "0x5208",
"gasPrice": "0x178411b200",
"from": "0x7CCfaF74ADBA37b2eF11B4caa3ce3759xxxxxxxx",
"to": "0x3Ae7a18407B17037B2ECC4901c1b77Dbxxxxxxxx",
"value": "0x4f94ae6af8000"
},
"my_pass_word"
],
"id": 4004
}' --header 'Content-Type: application/json' http://172.16.1.53:8800
response:
{
"jsonrpc":"2.0",
"result":"0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6",
"id":4004
}
however, this tx could NOT be found in etherscan.
and got this log:
2020-12-20 07:45:03 UTC http.worker10 WARN rpc personal_sendTransaction is deprecated and will be removed in future versions: Account management is being phased out see #9997 for alternatives.
2020-12-20 07:45:03 UTC http.worker10 DEBUG own_tx Imported to the pool (hash 0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6)
2020-12-20 07:45:03 UTC http.worker10 DEBUG txqueue [0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6] Added to the pool.
2020-12-20 07:45:03 UTC http.worker10 DEBUG txqueue [0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6] Sender: 0x7ccf…xxxx, nonce: 887, gasPrice: 101000000000, gas: 21000, value: 1400000000000000, dataLen: 0))
2020-12-20 07:45:03 UTC IO Worker #1 DEBUG sync Finished transaction propagation, took 0ms
2020-12-20 07:45:03 UTC http.worker10 DEBUG txqueue Re-computing pending set for block: 11475896
2020-12-20 07:45:03 UTC http.worker10 DEBUG miner Attempting to push 1 transactions.
2020-12-20 07:45:03 UTC http.worker10 DEBUG miner Adding tx 0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6 took 3 ms
2020-12-20 07:45:03 UTC http.worker10 DEBUG miner Pushed 1 transactions in 3 ms
2020-12-20 07:45:03 UTC http.worker10 DEBUG rpc [Some(Num(4004))] Took 42ms
2020-12-20 07:45:03 UTC http.worker10 DEBUG rpc Response: {"jsonrpc":"2.0","result":"0x76af9bc26ac39f6011c76c3adf2914ab8b677ad95a8687ed0b3de058d4866bb6","id":4004}.
method 2. called eth_sendRawTransaction to my local ETH node.
I did this following the steps:
Step 2.1 got the private key ( really correct, I promise, I got this via 2 language API , and they are the same! )
<my_private_key>
Step 2.2 got the signed tx by my code:
const get_raw_tx = function(params){
console.info("== params:")
console.info(params)
const privateKey = Buffer.from(
params.private_key,
'hex',
)
const txParams = {
nonce: params.nonce,
gasPrice: params.gas_price,
gasLimit: params.gas_limit,
to: params.to_address,
value: params.crypto_amount,
data: params.data,
}
const tx = new EthereumTx(txParams, { chain: 'mainnet', hardfork: 'petersburg' })
tx.sign(privateKey)
const serializedTx = tx.serialize()
const rawTx = '0x' + serializedTx.toString('hex');
return rawTx
}
and HTTP GET method:
- crypto_amount: 0.0013 ETH
- gas_limit: 21000, in hex: 0x5208
- gas_price: 121000000000 ( 121 Gwei) , in hex: 0x1c2c297a00
$ curl http://localhost:8000/get_tx?private_key=MY_PRIVATE_KEY&nonce=0x01&gas_price=0x1c2c297a00&gas_limit=0x2710&to_address=0xC6d64494D2042B69aceAd368395f8e4Fxxxxxxxx&crypto_amount=1300000000000000
and got this signed TX string:
0xf86d820d1b851c2c297a00825208943ae7a18407b17037b2ecc4901c1b77db98367cda87049e57d63540008026a07931b78f0f596f49655d2c0418156f742ffab64cb2c545616d1f3843e4f4f778a026d63f88d6166ec32223c1e850fb9245e4b5df6d50237080684fc933e7ac0e4b
Step 2.3 I make a JSON-PRC call like this:
curl --location --request POST 'http://my-server-ip:port' --header 'Content-Type: application/json' --data-raw '{
"jsonrpc":"2.0",
"method":"eth_sendRawTransaction",
"params":["0xf86d820d1b851c2c297a00825208943ae7a18407b17037b2ecc4901c1b77db98367cda87049e57d63540008026a07931b78f0f596f49655d2c0418156f742ffab64cb2c545616d1f3843e4f4f778a026d63f88d6166ec32223c1e850fb9245e4b5df6d50237080684fc933e7ac0e4b"],
"id": 4004
}'
and this is the response:
{
"jsonrpc":"2.0",
"result":"0x06a1958e25ef269346cc79043c4c4343b9df86bf0b135c257b9b7077e7d83bc7",
"id":4004
}
this tx still could not be found on ( http://etherscan.io/tx/0x06a1958e25ef269346cc79043c4c4343b9df86bf0b135c257b9b7077e7d83bc7 )
no error or warning in log.
method 3. called infura API
curl https://mainnet.infura.io/v3/MY-PROJECT-ID
-X POST
-H "Content-Type: application/json"
-d '{
"jsonrpc":"2.0",
"method":"eth_sendRawTransaction",
"params":["0xf86d820d1b851c2c297a00825208943ae7a18407b17037b2ecc4901c1b77db98367cda87049e57d63540008026a07931b78f0f596f49655d2c0418156f742ffab64cb2c545616d1f3843e4f4f778a026d63f88d6166ec32223c1e850fb9245e4b5df6d50237080684fc933e7ac0e4b"],
"id":1
}'
and got response from infura:
{
"jsonrpc":"2.0",
"id":1,
"result":"0x5809db5cdbdab054ca7f5f383e59ba6df74e3f5e87a33b90df1b1c6e7d0ae587"
}
still, this TX could not be found on etherscan.io
so, could someone help me, why all these methods are failed.
thanks a lot!
p.s.
my environment
Ubuntu 18.04 server
client: openethereum ( OpenEthereum/v3.0.1-stable-8ca8089-20200601/x86_64-unknown-linux-gnu/rustc1.43.1 )
command to launch it: nohup ./openethereum &
config file: ( in .local/share/openethereum/config.toml
)
[parity]
mode = "active"
identity = "lueluelue"
[rpc]
apis = ["web3", "eth", "pubsub", "net", "parity", "parity_pubsub", "traces", "rpc", "shh", "shh_pubsub", "personal", "parity_accounts", "secretstore"]
server_threads = 2
port = 8800
interface = "172.my.i.p"
[websockets]
apis = ["web3", "eth", "pubsub", "net", "parity", "parity_pubsub", "traces", "rpc", "shh", "shh_pubsub", "personal"]
[misc]
log_file = "/home/ubuntu/eth.log"
logging = "debug"
[mining]
min_gas_price = 1
and I ran the JSON-RPC calls when the block is not completed synced. ( synced to 1 days ago)
OpenEthereum/v3.0.1-stable-8ca8089-20200601/x86_64-unknown-linux-gnu/rustc1.43.1
), the command line lauching it isohup ./openethereum &
, and I will update my question and put this information on it.signed tx
is incorrect. how to check it? thanks a lot!